Example #1
0
 public function CancelUnits(array $resources, array $amounts, array $positions, $type)
 {
     $c = $this->User()->CurrentColony();
     $buildGroup = BuildGroup::FromList($resources, $amounts, $c, $positions);
     switch ($type) {
         case "SHIP":
             $rb = ResourceBuilder::GetShipListOfColony($c);
             break;
         case "DEFENSE":
             $rb = ResourceBuilder::GetDefenseListOfColony($c);
             break;
         case "MISSILE":
             $rb = ResourceBuilder::GetMissileListOfColony($c);
             break;
         case "BUILDING":
             return $this->CancelBuildings($resources, $positions);
             break;
     }
     foreach ($buildGroup->Members() as $item) {
         if (!$rb->BuildList()->ContainsBuildItem($item)) {
             throw new Exception("This item has already been deleted!");
         }
     }
     // Reimburse costs
     $reimbursedCosts = $buildGroup->ReimbursedCosts();
     $c->CurrentResources()->AddCost($reimbursedCosts);
     $c->UpdateResources();
     // Deduct the units
     $rb->BuildList()->DeductUnits($buildGroup);
     // Update Build times
     $rb->BuildList()->UpdateBuildTimes();
     // Update the database
     $rb->UpdateDatabase();
 }