コード例 #1
0
 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];
 }
コード例 #2
0
 /**
  * @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();
 }
コード例 #3
0
 public function run()
 {
     DB::table('paths')->delete();
     Path::create(['id' => 1, 'floor_level' => 1, 'svg_json' => '']);
 }