public static function applyPriceEffectUnits($building, $units) { switch ($building->Name) { case "Barracks": CityEffectApplier::applyBarracks($units); break; case "Archery Range": CityEffectApplier::applyArcheryRange($units); break; } }
public function getAvailableUnits($id) { $file = file_get_contents("units.txt"); $units = json_decode($file, true); $position = Position::find($id); $x = $position->x; $y = $position->y; $position = Position::where('y', $y)->where('x', $x)->get()->lists('id'); $city = City::whereIn('position_id', $position)->get(); if (count($city) == 0) { return $city; } else { switch ($city[0]->tier) { case 1: $txt = 'tier1'; break; case 2: $txt = 'tier2'; break; } $units = Unit::whereIn('Id', $units[$txt])->with('resource')->get(); return \App\CityEffectApplier::modifyUnitPricesByCity($units, $city[0]); } }
/** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update($id, Request $request) { $city = City::find($id); $buildingIds = $this->getIdArray($request->input('buildings')); $result = $this->arrayDiffNotUnique($buildingIds, $this->getIdArray($city->buildings)); $city->buildings()->attach($result); $city->save(); $building = Building::find($result); CityEffectApplier::applyBuildEffect($building[0], $city); $resource = $building[0]->resource; $cityResource = $city->resource; $cityResource->substractResource($resource); $cityResource->save(); $return = City::find($id); $return->buildings; $return->resource; $return->income; return $return; }
public static function getPricesForBuildings($buildings, $city) { $basePrices = array(); foreach ($buildings as $building) { array_push($basePrices, $building->resource_id); } $basePrices = \App\Resource::whereIn('Id', $basePrices)->get(); return \App\CityEffectApplier::modifyBuildingPricesByCity($basePrices, $city); }