Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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);
 }