<?php
namespace App\Entity;
use App\Repository\GameRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=GameRepository::class)
*/
class Game
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity=Player::class, mappedBy="game", orphanRemoval=true, cascade={"persist", "remove"})
*/
private $players;
/**
* @ORM\OneToOne(targetEntity=Board::class, inversedBy="game", cascade={"persist", "remove"})
*/
private $board;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $turnStartTime;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $gameStartTime;
/**
* @ORM\Column(type="dateinterval", nullable=true)
*/
private $maxTurnTime;
/**
* @ORM\Column(type="dateinterval", nullable=true)
*/
private $maxPlayerTime;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isTournamentMatch;
/**
* @ORM\ManyToOne(targetEntity=Player::class)
*/
private $turn;
/**
* @ORM\Column(type="boolean")
*/
private $hasEnded = false;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $turnCount;
/**
* @ORM\Column(type="array", nullable=true)
*/
private $history = [];
public function __construct()
{
$this->players = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
/**
* @return Collection|Player[]
*/
public function getPlayers(): Collection
{
return $this->players;
}
public function addPlayer(Player $player): self
{
if (!$this->players->contains($player)) {
$this->players[] = $player;
$player->setGame($this);
}
return $this;
}
public function removePlayer(Player $player): self
{
if ($this->players->removeElement($player)) {
// set the owning side to null (unless already changed)
if ($player->getGame() === $this) {
$player->setGame(null);
}
}
return $this;
}
public function getBoard(): ?Board
{
return $this->board;
}
public function setBoard(?Board $board): self
{
$this->board = $board;
return $this;
}
public function getTurnStartTime(): ?\DateTimeInterface
{
return $this->turnStartTime;
}
public function setTurnStartTime(?\DateTimeInterface $turnStartTime): self
{
$this->turnStartTime = $turnStartTime;
return $this;
}
public function getGameStartTime(): ?\DateTimeInterface
{
return $this->gameStartTime;
}
public function setGameStartTime(?\DateTimeInterface $gameStartTime): self
{
$this->gameStartTime = $gameStartTime;
return $this;
}
public function getMaxTurnTime(): ?\DateInterval
{
return $this->maxTurnTime;
}
public function setMaxTurnTime(?\DateInterval $maxTurnTime): self
{
$this->maxTurnTime = $maxTurnTime;
return $this;
}
public function getMaxPlayerTime(): ?\DateInterval
{
return $this->maxPlayerTime;
}
public function setMaxPlayerTime(?\DateInterval $maxPlayerTime): self
{
$this->maxPlayerTime = $maxPlayerTime;
return $this;
}
public function getIsTournamentMatch(): ?bool
{
return $this->isTournamentMatch;
}
public function setIsTournamentMatch(?bool $isTournamentMatch): self
{
$this->isTournamentMatch = $isTournamentMatch;
return $this;
}
public function getTurn(): ?Player
{
return $this->turn;
}
public function setTurn(?Player $turn): self
{
$this->turn = $turn;
return $this;
}
public function getHasEnded(): ?bool
{
return $this->hasEnded;
}
public function setHasEnded(bool $hasEnded): self
{
$this->hasEnded = $hasEnded;
return $this;
}
public function getTurnCount(): ?int
{
return $this->turnCount;
}
public function setTurnCount(?int $turnCount): self
{
$this->turnCount = $turnCount;
return $this;
}
public function getHistory(): ?array
{
return $this->history;
}
public function setHistory(?array $history): self
{
$this->history = $history;
return $this;
}
}