public static function FromDatabase(array $row, User $user = NULL) { $colony = new Colony(); // Colony details $colony->Name($row["name"]); $colony->Coordinates(new Coordinates($row["galaxy_position"], $row["system_position"], $row["planet_position"])); $colony->ID($row["ID"]); if ($user == NULL) { $colony->Owner(User::GetOwnerOfColonyID($row["ID"], $colony)); } else { $colony->Owner($user); } $colony->HomeColony($row["is_home_colony"]); // Resources $rowResources = Database::Instance()->ExecuteQuery("SELECT * FROM colony_resources WHERE colonyID = " . $row['ID'] . ";", "SELECT"); $colony->CurrentResources(new Cost($rowResources["metal_available"], $rowResources["crystal_available"], $rowResources["deuterium_available"], 0)); // TODO: Add energy later // Storage $colony->MetalStorage($rowResources['metal_storage_limit']); $colony->CrystalStorage($rowResources['crystal_storage_limit']); $colony->DeuteriumStorage($rowResources['deuterium_storage_limit']); // Get planet surface properties $rowProperties = Database::Instance()->ExecuteQuery("SELECT * FROM colony_properties WHERE colonyID = " . $row['ID'] . ";", "SELECT"); $colony->MaxFields($rowProperties['max_build_fields']); $colony->UsedFields($rowProperties['used_build_fields']); $colony->Diameter($rowProperties['diameter']); $colony->PlanetType(PlanetType::FromDatabase($rowProperties)); $planetData = $colony->PlanetType()->Variations(); $colony->PlanetData($planetData[0]); // "Last updated" variable $colony->LastUpdated($row['last_updated']); // Is this colony a moon? $colony->IsMoon($row['is_moon']); // Get buildings $buildings = BuildingGroup::FromDatabaseByColony($colony); $colony->ProductionUnits($buildings[0]); $colony->BuildingUnits($buildings[1]); // Get combat units $colony->Defenses(CombatGroup::GetDefensesOfColony($colony)); $colony->Fleet(ShipFleet::GetShipsOfColony($colony)); return $colony; }
public function ConstructUnitsOf(Colony $c) { if ($this->_overridden) { $user = $this->_user; } else { $user = User::GetOwnerOfColonyID($c->ID(), $c); } $c->Owner($user); $this->ConstructBuildingsOf($c); $this->ConstructShipsOf($c); $this->ConstructDefensesOf($c); $this->ConstructMissilesOf($c); }