public function getData(Request $request) { TaskController::checkTasks(); $user = Auth::user(); $x1 = $request->input('x1') - 1; $y1 = $request->input('y1') - 1; $x2 = $request->input('x2') + 1; $y2 = $request->input('y2') + 1; $cities = Grid::join('users', 'grid.owner', '=', 'users.id')->join('cities', 'grid.city_id', '=', 'cities.id')->whereBetween('x', [$x1, $x2])->whereBetween('y', [$y1, $y2])->where('city_id', '>', 0)->select('grid.x', 'grid.y', 'users.id as user_id', 'users.name as user_name', 'users.nation', 'cities.name as city_name', 'cities.capital', 'cities.id')->get(); foreach ($cities as $city) { if ($city->user_id == $user->id) { $city->owned = true; } else { $city->owned = false; } } $armies = Grid::leftJoin('users', 'grid.owner', '=', 'users.id')->whereBetween('x', [$x1, $x2])->whereBetween('y', [$y1, $y2])->where('army_id', '>', 0)->select('grid.*', 'users.name as user_name', 'users.nation')->get()->toArray(); foreach ($armies as &$hex) { $army = Army::where('id', $hex['army_id'])->first(); if ($army['user_id'] == $user->id) { $hex['army'] = $army->toArray(); $hex['army']['path'] = Path::join('grid', 'paths.hex_id', '=', 'grid.id')->where('path_id', $army['path_id'])->select('paths.finished_at', 'grid.x', 'grid.y')->get()->toArray(); } $hex['army']['user_name'] = $army->user->name; $hex['army']['nation'] = $army->user->nation; } return ['cities' => $cities, 'armies' => $armies]; }
/** * @param Path $second * @param Army $attacking */ public static function processFriendlyArmiesMeeting(Path $second, Army $attacking) { $path = $second->path; $previous = $second; if ($second->id !== $path->min('id')) { $previous_id = $second->id - 1; $previous = Path::where('id', '=', $previous_id)->first(); } $previous->hex->army_id = $attacking->id; $previous->deletePath(); $attacking->task->delete(); $attacking->current_hex_id = $previous->hex->id; $attacking->task_id = 0; $attacking->path_id = 0; $attacking->currentHex->update(['army_id' => 0]); $attacking->save(); }
public function run() { DB::table('paths')->delete(); Path::create(['id' => 1, 'floor_level' => 1, 'svg_json' => '']); }