本文整理汇总了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;
}
示例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;
}