/** * @return boolean */ public function start() { $settings = new Settings(); $settings->setBoardSize((int) $this->board_size); $settings->setMoveTime((int) $this->move_time); $settings->setRaceChange((bool) $this->race_change); $settings->setRaceMultipleTimes((bool) $this->race_multiple_times); $player = new Player(); $player->setId(Yii::$app->user->id); $player->setName(Yii::$app->user->identity->username); $imperium = new Imperium(); $imperium->setCreator(Yii::$app->user->id); $imperium->setSettings($settings); $imperium->setStage(Imperium::STAGE_START); $imperium->addPlayer($player); $imperium->setStage(Imperium::STAGE_RACE); $imperium->setCurrentPlayer($player); return (new Game())->save($imperium); }
/** * Checks if new playter can enter the game. * @return boolean */ public function takeSeat() { if ($this->getHero() === null) { if ($this->getPlayers()->count() >= $this->getSettings()->getBoardSize()) { return false; } $player = new Player(); $player->setId(Yii::$app->user->id); $player->setName(Yii::$app->user->identity->username); $this->addPlayer($player); } return true; }