/** * Update the level up data * @param Dragon $dragon * @param int $level * @param mixed[] $requestData */ protected function updateLevelUpData($dragon, $level, $requestData) { $levelUpData = $dragon->levelUp->data->where('level', $level)->first(); if (!$levelUpData) { $levelUpData = new LevelUpData(['level' => $level]); $dragon->levelUp->data()->save($levelUpData); } $levelUpData->fish = isset($requestData['level_up_fish_divided']) && $requestData['level_up_fish_divided'] ? $requestData['level_up_fish_divided'] * $requestData['fish_multiplier'] : null; foreach (['time', 'wood', 'iron'] as $field) { $levelUpData->{$field} = isset($requestData['level_up_' . $field]) && $requestData['level_up_' . $field] ? $requestData['level_up_' . $field] : null; } $levelUpData->touch(); $fishMultiplier = FishMultiplier::findOrNew($level); // Because level is the primary key, we need to set it... if (!$fishMultiplier->exists) { $fishMultiplier->level = $level; } $fishMultiplier->multiplier = isset($requestData['fish_multiplier']) && $requestData['fish_multiplier'] ? $requestData['fish_multiplier'] : null; $fishMultiplier->touch(); }
public function level($level) { $levelDetails = (object) $this->defaultLevel; $cTime = $this->collectTime->data->where('level', $level)->first(); if ($cTime) { $levelDetails->collect_time = $cTime->time; } if ($this->wood_start_level <= $level) { $woodC = $this->collectRateWood->data->where('level', $level)->first(); if ($woodC) { $levelDetails->wood_collect = $woodC->rate; } } if ($this->fish_start_level <= $level) { $fishC = $this->collectRateFish->data->where('level', $level)->first(); if ($fishC) { $levelDetails->fish_collect = $fishC->rate; } } $multiplier = FishMultiplier::findOrNew($level); $levelDetails->fish_multiplier = $multiplier->multiplier; $levelUpData = $this->levelUp->data->where('level', $level)->first(); if ($levelUpData) { $levelDetails->level_up_fish = $levelUpData->fish; $levelDetails->level_up_wood = $levelUpData->wood; $levelDetails->level_up_iron = $levelUpData->iron; $levelDetails->level_up_time = $levelUpData->time; if ($multiplier->multiplier) { $levelDetails->level_up_fish_divided = $levelUpData->fish / $multiplier->multiplier; } } if ($this->iron_start_level <= $level) { $collectIronData = $this->collectIronData->where('level', $level)->first(); if ($collectIronData) { $levelDetails->iron_collect_time = $collectIronData->time; $levelDetails->iron_collect_rate = $collectIronData->rate; $levelDetails->iron_collect_wood = $collectIronData->wood; $levelDetails->iron_collect_fish = $collectIronData->fish; } } return $levelDetails; }