当前位置: 首页>>代码示例>>PHP>>正文


PHP Location::howMuchTime方法代码示例

本文整理汇总了PHP中app\models\Location::howMuchTime方法的典型用法代码示例。如果您正苦于以下问题:PHP Location::howMuchTime方法的具体用法?PHP Location::howMuchTime怎么用?PHP Location::howMuchTime使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在app\models\Location的用法示例。


在下文中一共展示了Location::howMuchTime方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: comeback

 /**
  * Вернуться обратно в свой замок если это возможно.
  *
  * @throws GameException
  */
 public function comeback()
 {
     $this->continueOrException();
     $goal = $this->goal;
     $castle = $this->army->castle;
     // Поход уже закончился или еще не начался...
     if (isset($this->crusade_end_at) || !(isset($this->crusade_at) && isset($this->battle_at))) {
         throw new GameException('Отряд уже закончил поход или похода не существует.');
     }
     // Рассчитать время возвращения домой отряда...
     $minutes = Location::howMuchTime($castle, $goal);
     $minutes = intval($minutes * 1.15);
     // С учетом усталости отряда...
     $end = $this->crusade_end_at = $this->battle_at->addMinutes($minutes);
     // дата возвращения отряда.
     $this->save();
     $now = Carbon::now();
     Log::info('---------------------------------------------------------------------------------------------------');
     Log::info("({$now}) Отряд id={$this->id} '{$this->name}' вернется в замок {$this->crusade_end_at}.");
     return $end;
 }
开发者ID:nvchernov,项目名称:tsargrad,代码行数:26,代码来源:Squad.php

示例2: crusade

 /**
  * Совершить поход на вражеский замок.
  *
  * @param {string} $name имя отряда
  * @param {int} $count количество в отряде
  * @param Castle $goal замок
  * @return Squad
  * @throws GameException
  * @throws \Exception
  */
 public function crusade($name, $count, Castle $goal)
 {
     if ($goal->id === $this->id) {
         throw new GameException('Нельзя отправить отряд на собственный замок.');
     }
     // Есть ли возможность создать отряд?
     $diff = $this->size - $count;
     if ($count <= 0 || $diff < 0) {
         throw new GameException('Нельзя создать отряд для похода. Не хватает храбрых воинов.');
     }
     $squad = new Squad(['name' => $name, 'size' => $count]);
     $squad->crusade_at = Carbon::now();
     // Начало похода
     // Время на поход...
     $minutes = Location::howMuchTime($this->castle, $goal);
     $squad->battle_at = Carbon::now()->addMinutes($minutes);
     // Конец похода
     DB::beginTransaction();
     try {
         $this->update(['size' => $diff]);
         $squad->goal()->associate($goal);
         // Вражеский замок
         // Сохранить отряд...
         $this->squads()->save($squad);
         // Так как отряд сохранен, внедряем сюда шпионов
         // Получаем их всех
         $enemySpies = $this->castle()->first()->enemySpies()->getResults();
         foreach ($enemySpies as $oneSpy) {
             $spyHistory = new SpyHistory();
             $spyHistory->spy_id = $oneSpy->id;
             $spyHistory->squads_id = $squad->id;
             // Пытаемся обнаружить атаку
             $spyHistory->detect = $oneSpy->canDetectedAttack($this->level, $squad->size) ? true : false;
             $spyHistory->save();
         }
         //
         $now = Carbon::now();
         Log::info('---------------------------------------------------------------------------------------------------');
         Log::info("({$now}) Создан новый отряд - id={$squad->id} '{$squad->name}' ({$squad->size} в)...");
         Log::info("Поход на вражеский замок - id={$goal->id} '{$goal->name}");
         Log::info("Начало похода {$squad->crusade_at}, сражение состоится {$squad->battle_at}");
     } catch (\Exception $ex) {
         DB::rollBack();
         throw $ex;
         // next...
     }
     DB::commit();
     return $squad;
 }
开发者ID:nvchernov,项目名称:tsargrad,代码行数:59,代码来源:Army.php


注:本文中的app\models\Location::howMuchTime方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。