Advertisement
Romanovich095

Untitled

Jul 26th, 2016
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.13 KB | None | 0 0
  1. <?php
  2. namespace App;
  3. require_once '../vendor/autoload.php';
  4. use Symfony\Component\VarDumper\VarDumper as dd;
  5.  
  6. define('RESTORE_PER_MINUTE', 5);
  7. define('Pl_file', 'player.json');
  8.  
  9. /**
  10.  * Class Player
  11.  * @property Game
  12.  **/
  13. class Player extends Game
  14. {
  15.  
  16.     /**
  17.      * @var Player
  18.      **/
  19.     protected $_player;
  20.  
  21.     /**
  22.      * Constructing player obj from session
  23.      **/
  24.     public function __construct()
  25.     {
  26.         $this->_player = $this->_checkPlayer();
  27.     }
  28.  
  29.     /**
  30.      * @return Player|mixed|object
  31.      */
  32.     private function _checkPlayer()
  33.     {
  34.  
  35.         if (file_exists(Pl_file)) {
  36.             $this->_player = json_decode(
  37.                 file_get_contents(Pl_file)
  38.             );
  39.             return $this->_player;
  40.         }
  41.  
  42.         $player = (object)[
  43.             'hp' => 100,
  44.             'energy' => 50,
  45.             'max_energy' => 50,
  46.             'mana' => 95,
  47.             'gold' => 350,
  48.             'full_at' => '00.00.0000 00:00:00'
  49.         ];
  50.  
  51.         file_put_contents(Pl_file, json_encode($player));
  52.         $this->_player = $player;
  53.  
  54.         return $player;
  55.  
  56.     }
  57.  
  58.     /**
  59.      * @param $action_id
  60.      * @return mixed
  61.      */
  62.     public function spentEnergy($action_id)
  63.     {
  64.         $actions = [
  65.             1 => 5,
  66.             2 => 7,
  67.             3 => 40
  68.         ];
  69.  
  70.         if ($actions[$action_id]) {
  71.             $energy = $this->_getPlayerKey('energy');
  72.             $max_energy = $this->_getPlayerKey('max_energy');
  73.             if ($energy >= $actions[$action_id]) {
  74.                 $current = $energy - $actions[$action_id];
  75.                 $times = ceil(($max_energy - $current) / RESTORE_PER_MINUTE);
  76.                 return $this->_setPlayerKey(['energy', 'full_at'], [$current, time() + $times * 60]);
  77.             }
  78.         }
  79.         return false;
  80.     }
  81.  
  82.     /**
  83.      * @return Player|mixed|object
  84.      */
  85.     public function player()
  86.     {
  87.         return ($this->_checkPlayer());
  88.     }
  89.  
  90.     /**
  91.      * @param array $keys
  92.      * @param array $values
  93.      * @return int
  94.      */
  95.     private function _setPlayerKey(array $keys, array $values)
  96.     {
  97.         $player = json_decode($_COOKIE['Player']);
  98.  
  99.         foreach ($keys as $i => $key) {
  100.             $player->{$key} = $values[$i];
  101.         }
  102.  
  103.         return file_put_contents(Pl_file, json_encode($player));
  104.     }
  105.  
  106.     /**
  107.      * @param $key
  108.      * @return mixed
  109.      */
  110.     private function _getPlayerKey($key)
  111.     {
  112.         return $this->_player->{$key};
  113.     }
  114. }
  115.  
  116. $player = new Player();
  117.  
  118. dd::dump($player->player());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement