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()));
 }
Ejemplo n.º 2
0
 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());
 }
Ejemplo n.º 8
0
 private function replaceCharField($text)
 {
     $player = Game::init()->getPlayer();
     $field = "";
     if ($player) {
         if (isset($player[$text[1]])) {
             $field = $player[$text[1]];
         }
     }
     return $field;
 }
Ejemplo n.º 9
0
 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())));
     }
 }
Ejemplo n.º 12
0
<?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();
Ejemplo n.º 13
0
<?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);
Ejemplo n.º 14
0
$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>";
    }
Ejemplo n.º 15
0
         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> вход
Ejemplo n.º 16
0
 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);
     }
 }
Ejemplo n.º 17
0
    $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"));
 }
Ejemplo n.º 19
0
 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);
     }
 }
Ejemplo n.º 20
0
 /**
  * @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"]);
 }
Ejemplo n.º 21
0
<?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"];
Ejemplo n.º 22
0
 /**
  * @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;
 }
Ejemplo n.º 23
0
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("Некуда идти.");
    }
}
Ejemplo n.º 24
0
<?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();