public function testGame() { $this->assertInstanceOf('Likedimion\\Game', $this->game); $this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\ContainerBuilder', $this->game->getContainer()); $this->assertInstanceOf('Doctrine\\ORM\\EntityManager', $this->game->get("entity_manager")); $this->assertTrue(is_array($this->game->getConfig())); }
public function onAttack(BattleEvent $event) { if ($event->getLocHelper()->objectExists($event->getToObjectId())) { $event->getLocHelper()->addJournal($event->getSelfObjectId() . "->" . $event->getToObjectId(), Game::init()->getService('player.helper')->getCollection()); $event->getLocHelper()->update(); } }
/** * @param \Likedimion\Tools\Helper\PlayerDataHelper $playerData * @throws \Likedimion\Exception\RegistrationException * @return Player */ public function createPlayer(PlayerDataHelper $playerData) { try { $findPlayer = $this->playerService->getRepository()->findPlayerByName($playerData->name); throw new RegistrationException("player_name_exists"); } catch (EntityNotFoundException $e) { $player = new Player(); $player->setName($playerData->name); $player->setSex($playerData->sex); $player->setClass($playerData->class); $player->setRace($playerData->race); $stats = $player->getStats(); $cfg = Game::getInstance()->getConfig(); $stats->setStrenge($cfg["new_player"][$player->getClass()]["str"]); $stats->setDexterity($cfg["new_player"][$player->getClass()]["dex"]); $stats->setIntelligence($cfg["new_player"][$player->getClass()]["int"]); $stats->setSpirituality($cfg["new_player"][$player->getClass()]["spr"]); $stats->setEndurance($cfg["new_player"][$player->getClass()]["end"]); $player->setStats($stats); $this->playerCalculatingService->calculate($player); $this->playerService->getRepository()->save($player); $account = $this->authService->getAccount(Game::getInstance()->getAuthToken()->getValue()); $player->setAccount($account); $this->accountService->getRepository()->save($account); $this->playerService->getRepository()->save($player); return $player; } }
public function __construct($config) { if (isset($config["doctrine"])) { $dbParams = $config["doctrine"]["db_params"]; $paths = StringCommon::replaceKeyWords($config["doctrine"]["entity_paths"]); $isDevMode = $config["doctrine"]["is_dev_mode"]; $proxyDir = StringCommon::replaceKeyWords($config["doctrine"]["proxy_dir"]); $proxyNamespace = $config["doctrine"]["proxy_namespace"]; $applicationMode = Game::getInstance()->getApplicationMode(); if ($applicationMode == Game::DEVELOPMENT_MODE) { $cache = new \Doctrine\Common\Cache\ArrayCache(); } else { $cache = new \Doctrine\Common\Cache\ApcCache(); } $doctrineConfig = new Configuration(); $doctrineConfig->setMetadataCacheImpl($cache); $driverImpl = $doctrineConfig->newDefaultAnnotationDriver($paths); $doctrineConfig->setMetadataDriverImpl($driverImpl); $doctrineConfig->setQueryCacheImpl($cache); $doctrineConfig->setProxyDir($proxyDir); $doctrineConfig->setProxyNamespace($proxyNamespace); if ($applicationMode == Game::DEVELOPMENT_MODE) { $doctrineConfig->setAutoGenerateProxyClasses(true); } else { $doctrineConfig->setAutoGenerateProxyClasses(false); } $entityManager = EntityManager::create($dbParams, $doctrineConfig); Game::getInstance()->getContainer()->set("entity_manager", $entityManager); } else { throw new \RuntimeException("You need add Doctrine config in your res/config.yml"); } }
/** * @param string $login * @param string $password * @param bool $rememberMe * @return Token */ public function login($login, $password, $rememberMe = true) { try { $account = $this->accountService->getRepository()->findByLogin($login); if ($rememberMe === true) { $config = Game::getInstance()->getConfig(); $rememberDays = $config["app"]["remember_days"]; $endTime = time() + 3600 * 24 * $rememberDays; } else { $endTime = time() + 600; } $endDate = new \DateTime(); $endDate->setTimestamp($endTime); if (is_null($account->getAuthToken())) { $token = $this->tokenService->generateToken($account, $endDate); $account->setAuthToken($token); } elseif (!$this->tokenService->isValid($account->getAuthToken()->getValue())) { $token = $this->tokenService->generateToken($account, $endDate); $account->setAuthToken($token); } $this->accountService->getRepository()->save($account); return $account->getAuthToken(); } catch (EntityNotFoundException $e) { return false; } }
protected function execute(InputInterface $input, OutputInterface $output) { /** @var $helpers LikedimionCommandHelper */ $helpers = $this->getHelperSet()->get("helpers"); /** @var $translations TranslationsHelperInterface */ $translations = $this->getHelper("translations"); $authData = $helpers->authDialog($this, $output, false); /** @var $authService AuthServiceInterface */ $authService = Game::getInstance()->getContainer()->get("auth_service"); $token = $authService->login($authData->getLogin(), $authData->getPassword(), $authData->getRememberMe()); if ($token !== false) { Game::getInstance()->setAuthToken($token); $player = $helpers->createPlayerDialog($this, $output); /** @var $playerRegistrationService PlayerRegistrationServiceInterface */ $playerRegistrationService = Game::getInstance()->getContainer()->get("player_registration_service"); try { $player = $playerRegistrationService->createPlayer($player); $output->writeln(sprintf($translations->getLine("player_create_complete"), $player->getName())); } catch (RegistrationException $e) { $output->writeln($translations->getLine($e->getMessage())); } } else { $output->writeln($translations->getLine("auth_fail")); } }
protected function execute(InputInterface $input, OutputInterface $output) { /** @var $helpers LikedimionCommandHelper */ $helpers = $this->getHelperSet()->get("helpers"); $authData = $helpers->authDialog($this, $output); /** @var $authService AuthServiceInterface */ $authService = Game::getInstance()->getContainer()->get("auth_service"); $token = $authService->login($authData->getLogin(), $authData->getPassword(), $authData->getRememberMe()); $output->writeln($token->getValue()); }
private function replaceCharField($text) { $player = Game::init()->getPlayer(); $field = ""; if ($player) { if (isset($player[$text[1]])) { $field = $player[$text[1]]; } } return $field; }
public function onAddJournalAll(JournalEvent $event) { $criteria = ['$and' => [["loc" => $event->getLocId()], ["_id" => ['$ne' => $event->getPlayer1()]], ["_id" => ['$ne' => $event->getPlayer2()]]]]; $push = ['$push' => ["journal" => ["time" => time(), "msg" => $event->getMsg()]]]; $pid = Game::init()->getPlayer(); if ($pid["_id"] != $event->getPlayer1() and $pid["_id"] != $event->getPlayer2() and $event->getLocId() == $pid["loc"]) { Game::init()->getService("player.helper")->addJournal($event->getMsg()); } //Game::init()->getService("player.helper")->addJournal($event->getMsg()); $event->getPlayers()->update($criteria, $push); }
/** * @param string $name * @param int $sex * @param int $class * @return Player */ public function createPlayer($name, $sex, $class) { $account = $this->authService->getAccount(Game::getInstance()->getAuthToken()->getValue()); $player = new Player(); $statistic = new PlayerStatistic(); $player->setAccount($account); $player->setName($name); $player->setStatistic($statistic); $player->setSex($sex); $player->setClass($class); $this->getRepository()->save($player); }
protected function execute(InputInterface $input, OutputInterface $output) { /** @var $dialog DialogHelper */ $dialog = $this->getHelperSet()->get("dialog"); /** @var $translations TranslationsHelperInterface */ $translations = $this->getHelper("translations"); $login = $dialog->ask($output, $translations->getLine("please_input_login"), false); $password = $dialog->askHiddenResponse($output, $translations->getLine("please_input_password"), "password"); $passwordConfirm = $dialog->askHiddenResponse($output, $translations->getLine("please_confirm_password"), "password"); /** @var $accountService AccountServiceInterface */ $accountService = Game::getInstance()->getContainer()->get("account_service"); try { $accountService->registration($login, $password, $passwordConfirm); $output->writeln(sprintf("<info>%s</info>", $translations->getLine("registration_complete"))); } catch (AccountServiceException $e) { $output->writeln(sprintf("<comment>%s</comment>", $translations->getLine($e->getMessage()))); } }
<?php use Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper; use Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper; use Likedimion\Tools\Helper\LikedimionCommandHelper; use Symfony\Component\Console\Helper\DialogHelper; /** * Created by PhpStorm. * User: maksim * Date: 30.11.13 * Time: 22:40 */ require __DIR__ . "/../index.php"; $cli = new \Symfony\Component\Console\Application('Likedimion CLI', \Likedimion\Game::getInstance()->getVersion()); $entityManager = \Likedimion\Game::getInstance()->getContainer()->get("entity_manager"); $config = \Likedimion\Game::getInstance()->getConfig(); $translationsHelper = new \Likedimion\Tools\Helper\TranslationHelper(); $translationsHelper->setLocale(\Likedimion\Common\StringCommon::replaceKeyWords($config["app"]["locale"])); $translationsHelper->load(); $helperSet = \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($entityManager); $helperSet->set(new DialogHelper(), 'dialog'); $helperSet->set($translationsHelper, 'translations'); $helperSet->set(new LikedimionCommandHelper(), "helpers"); $cli->setHelperSet($helperSet); $cli->addCommands(array(new \Doctrine\DBAL\Migrations\Tools\Console\Command\DiffCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\ExecuteCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\GenerateCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\MigrateCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\StatusCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\VersionCommand(), new \Likedimion\Tools\Command\AccountRegistrationCommand(), new \Likedimion\Tools\Command\AuthorisationCommand(), new \Likedimion\Tools\Command\PlayerCreateCommand(), new \Likedimion\Tools\Command\LoadDefaultDataCommand())); \Doctrine\ORM\Tools\Console\ConsoleRunner::addCommands($cli); $cli->run();
<?php /** * Created by PhpStorm. * User: maksim * Date: 30.11.13 * Time: 21:52 */ require __DIR__ . "/../index.php"; $em = \Likedimion\Game::getInstance()->getContainer()->get("entity_manager"); return \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($em);
$item = []; if ($_GET["from"]) { $player = \Likedimion\Game::init()->getService('player.helper')->getPlayer(); $from = preg_split("/[_\\-#:]/", $_GET["from"]); switch ($from[0]) { case "equip": $item = $player["equip"][$from[1]]; break; case "inventory": if (isset($player["inventory"][$_GET["iId"]])) { $item = $player["inventory"][$_GET["iId"]]; } break; case "loc": /** @var \Likedimion\Helper\LocationHelper $locHelper */ $locHelper = \Likedimion\Game::init()->getService('loc.helper'); $loc = $locHelper->getCollection()->findOne(["lid" => $from[1]]); if ($loc and isset($loc["loc"][$_GET["iId"]])) { $item = $loc["loc"][$_GET["iId"]]; } break; default: $page .= "<div class='alert alert-warning'>Не на что смотреть</div>"; break; } } else { try { $item = $ld->items->findOne(["iid" => $_GET["iId"]]); } catch (MongoException $e) { $page .= "<div class='alert alert-warning'>Не удалось найти предмет, поскольку отсутствует подключение к базе данных<br/>Ошибка: " . $e->getMessage() . "</div>"; }
if (file_exists($fName)) { require $fName; } else { require ROOT . "/404.php"; } } elseif ($player["role"] == \Likedimion\Game::ROLE_ADMIN or $player["role"] == \Likedimion\Game::ROLE_RAZRAB) { $fName = ROOT . "/admin/" . $_GET["admin"] . ".php"; if (file_exists($fName)) { require $fName; } else { require ROOT . "/404.php"; } } else { require ROOT . "/503.php"; } $playerHelper = Game::init()->getService("player.helper"); $playerHelper->calcParams(); $playerHelper->addTimer('last_action', 0)->addTimer("online", $config["online_time"]); if (!$ld->players->update(["_id" => $_SESSION["pid"]], $playerHelper->getPlayer())) { throw new MongoException("Not update"); } } else { $pid = $_SESSION["pid"]; $locationHelper->removePlayer($_SESSION["pid"])->update(); $playerHelper->clearJournal()->update(); $msg = $player["title"] . ($player["sex"] == "m" ? " исчез " : " исчезла "); //$locationHelper->addJournal($msg, $ld->players, $pid); $page = <<<EOT <p class="tabs__link tabs__link_active">Ваш персонаж покинул игру.</p> <div class="hr"></div> <a class="tabs__link" href="/?">повторить</a> вход
public function changeState($questId, $newStateId) { $questHelper = new QuestHelper(Game::init()->getDb()->quests); if (isset($this->_player["quests"][$questId]) and $questHelper->questExists($questId)) { $event = new QuestEvent(); $event->setQuestId($questId); $event->setPlayerHelper($this); $event->setQuestHelper($questHelper); $event->setState($newStateId); Game::init()->getDispatcher()->dispatch('quest.change', $event); } }
$from = preg_split("/[_]/", $_GET["from"]); switch ($from[0]) { case "loc": /** @var \Likedimion\Helper\LocationHelper $locHelper */ $locHelper = \Likedimion\Game::init()->getService('loc.helper'); $loc = $locHelper->getCollection()->findOne(["lid" => $from[1]]); if (isset($loc) and isset($loc["loc"][$_GET["id"]])) { $use = $loc["loc"][$_GET["id"]]; } break; } if ($use) { if (isset($use["ai"]["on_use"])) { switch ($use["ai"]["on_use"]["type"]) { case "event": $iterator = new ArrayIterator(); $iterator->offsetSet("use", $use); $event = new \Likedimion\Events\UseEvent(); $event->setPluginData($iterator)->setLocHelper(\Likedimion\Game::init()->getService('loc.helper'))->setPlayerHelper(\Likedimion\Game::init()->getService('player.helper')); \Likedimion\Game::init()->getDispatcher()->dispatch($use["ai"]["on_use"]["id"], $event); break; } } else { \Likedimion\Game::init()->getService('player.helper')->addJournal('Нельзя использовать')->update(); } } else { \Likedimion\Game::init()->getService('player.helper')->addJournal('Нечего использовать')->update(); } } else { \Likedimion\Game::init()->getService('player.helper')->addJournal('Нечего использовать')->update(); }
public function addListeners() { $container = Game::getInstance()->getContainer(); $this->addListener(EventsStore::LVL_UP, array($container->get("player_listener"), "onLvlUp")); $this->addListener(EventsStore::ADD_EXP, array($container->get("player_listener"), "onAddExp")); }
private function _addListeners($npc) { $events = $npc["ai"]["listeners"]; /** @var EventDispatcher $dispatcher */ $dispatcher = Game::init()->getDispatcher(); $dispatcher->addInject("setNpcHelper", $this->getNpcHelper()); $dispatcher->addInject("setLocHelper", $this->getLocHelper()); foreach ($events as $eventId => $eventListener) { $newId = preg_split("/[\\._:]/", $eventId); $method = "on"; for ($i = 0; $i < count($newId); $i++) { $method .= ucfirst($newId[$i]); } $dispatcher->addEventListener($eventId, $eventListener, $method); } }
/** * @param $data * @return string|\Symfony\Component\Serializer\Encoder\scalar */ protected function serialize($data) { $cfg = Game::getInstance()->getConfig(); return $this->getSerializer()->serialize($data, $cfg["app"]["serialize_format"]); }
<?php /** * Created by PhpStorm. * User: babenoff * Date: 29.12.2015 * Time: 1:22 */ /** * @var \Likedimion\Helper\LocationHelper $locHelper * @var \Likedimion\Helper\PlayerHelper $playerHelper * @var MongoId $pid */ $locHelper = \Likedimion\Game::init()->getService('loc.helper'); $playerHelper = \Likedimion\Game::init()->getService('player.helper'); $player = $playerHelper->getPlayer(); $pid = $player["_id"];
/** * @param $msg * @param bool|\MongoId $noPlayer1 * @param bool|\MongoId$noPlayer2 * @return $this */ public function addJournal($msg, \MongoCollection $players, $noPlayer1 = false, $noPlayer2 = false) { if ($noPlayer1 instanceof \MongoId === false and $noPlayer1 !== false) { $noPlayer1 = new \MongoId(substr($noPlayer1, 7)); } if ($noPlayer2 instanceof \MongoId === false and $noPlayer2 !== false) { $noPlayer2 = new \MongoId(substr($noPlayer2, 7)); } $players->update(["loc" => $this->getLoc()["lid"], "_id" => ['$ne' => [$noPlayer1, $noPlayer2]]], ['$push' => ["journal" => ["time" => time(), "msg" => $msg]]]); $pid = Game::init()->getPlayer()["_id"]; if ($pid != $noPlayer1 and $pid != $noPlayer2 and $this->objectExists("player_" . $pid)) { Game::init()->getService("player.helper")->addJournal($msg); } return $this; }
if ($_GET["go"] and $_GET["go"] != $player["loc"]) { $oldLoc = $ld->locations->findOne(["lid" => $player["loc"]]); $oldLocHelper = new \Likedimion\Helper\LocationHelper($oldLoc); $oldLocHelper->setCollection($ld->locations); $newLoc = $ld->locations->findOne(["lid" => $_GET["go"]]); if ($newLoc) { $newLocHelper = new \Likedimion\Helper\LocationHelper($newLoc); $oldLocHelper->removePlayer($player["_id"]); $newLocHelper->addPlayer($player["_id"]); $newLocHelper->setCollection($ld->locations); $playerHelper->move($_GET["go"]); $playerHelper->update(); if ($oldLoc["terr"] == \Likedimion\Helper\LocationHelper::TERRITORY_GUARD and $newLoc["terr"] == \Likedimion\Helper\LocationHelper::TERRITORY_UNGUARD) { $playerHelper->addJournal("Вы покунули охраняемую территорию."); } elseif ($oldLoc["terr"] == \Likedimion\Helper\LocationHelper::TERRITORY_UNGUARD and $newLoc["terr"] == \Likedimion\Helper\LocationHelper::TERRITORY_GUARD) { $playerHelper->addJournal("Вы на охраняемой территории."); } $outmsg = $player["title"] . ($player["sex"] == "m" ? " ушел " : " ушла ") . $oldLocHelper->getDoorName($_GET["go"]); $inmsg = ($player["sex"] == "m" ? " пришел " : " пришла ") . $player["title"]; $oldLocHelper->addJournal($outmsg, $ld->players, $player["_id"]); $newLocHelper->addJournal($inmsg, $ld->players, $player["_id"]); $oldLocHelper->update(); $newLocHelper->update(); $comeEvent = new \Likedimion\Events\MoveEvent(); $comeEvent->addObject($playerHelper->getPlayerId(), $player); $comeEvent->setLocHelper($newLocHelper); \Likedimion\Game::init()->getDispatcher()->dispatch('come_player', $comeEvent); } else { $playerHelper->addJournal("Некуда идти."); } }
<?php use Symfony\Component\Yaml\Yaml; date_default_timezone_set('Europe/Moscow'); ini_set('display_errors', 'On'); error_reporting(E_ALL | E_STRICT); define("ROOT_DIR", dirname(__FILE__)); define("RES_DIR", dirname(__FILE__) . DIRECTORY_SEPARATOR . "res"); define("SRC_DIR", dirname(__FILE__) . DIRECTORY_SEPARATOR . "src"); $loader = (require ROOT_DIR . "/vendor/autoload.php"); $loader->add("Likedimion\\", SRC_DIR . "/likedimion/lib"); $loader->add("Likedimion\\Proxies", RES_DIR . "/doctrine/proxy"); $loader->add("Likedimion\\Client", SRC_DIR . "/ldc/lib"); $loader->add("Likedimion\\", SRC_DIR . "/data-loader/lib"); $loader->add("Migrations\\", RES_DIR . "/doctrine/migrations"); $game = \Likedimion\Game::getInstance(); $config = Yaml::parse(file_get_contents(RES_DIR . "/config.yml")); define("DATA_DIR", dirname(__FILE__) . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "" . $config["app"]["base_locale"]); $game->setConfig($config); $game->play();