Esempio n. 1
0
 public static function FromIDResource(IDResource $resource, $position, $oldPosition, $scheduledTime, BuildGroup $bg = NULL)
 {
     $buildItem = new BuildItem();
     $buildItem->Name($resource->Name());
     $buildItem->Cost($resource->Cost());
     $buildItem->NextCostModifier($resource->NextCostModifier());
     $buildItem->Prerequisite($resource->Prerequisite());
     $buildItem->ID($resource->ID());
     $buildItem->Amount($resource->Amount(), false);
     $buildItem->PositionInList($position, false);
     $buildItem->OldPositionInList($oldPosition, false);
     $buildItem->FirstBuildTime($scheduledTime);
     $buildItem->HasChanged(false);
     $buildItem->BuildGroup($bg);
     return $buildItem;
 }
Esempio n. 2
0
 public function AddUnit(BuildItem $unit)
 {
     $amount = 1;
     $name = $unit->Name();
     if ($unit->IsBuilding()) {
         $origAmount = $this->Buildings()->GetMemberByName($name)->Amount();
         $this->Buildings()->GetMemberByName($name)->Amount($origAmount + $amount);
     }
     if ($unit->IsShip()) {
         $origAmount = $this->Fleet()->GetMemberByName($name)->Amount();
         $this->Fleet()->GetMemberByName($name)->Amount($origAmount + $amount);
     }
     if ($unit->IsDefense()) {
         $origAmount = $this->Defenses()->GetMemberByName($name)->Amount();
         $this->Defenses()->GetMemberByName($name)->Amount($origAmount + $amount);
     }
     // TODO: add missiles here
 }
Esempio n. 3
0
 protected function CalculateNextBuildLevel(BuildItem $item, $alreadyBuiltLevels)
 {
     $scheduledLevelTotal = 0;
     // First, look through the database list.
     // If it's empty, it means the current BuildGroup IS the database list! We look through that list below.
     if ($item->BuildGroup()->ItemsInDatabase() != NULL) {
         foreach ($item->BuildGroup()->ItemsInDatabase() as $buildItem) {
             // We're only interested in items scheduled before us, not in the future!
             if ($buildItem->PositionInList() < $item->PositionInList()) {
                 if ($buildItem->Name() === $this->Name()) {
                     $scheduledLevelTotal += $buildItem->Amount();
                 }
             }
         }
     }
     // Next, look through the current BuildGroup, we may have requested units like these before (but they're not in the database yet)
     foreach ($item->BuildGroup()->Members() as $buildItem) {
         // We're only interested in items scheduled before us, not in the future!
         if ($buildItem->PositionInList() < $item->PositionInList()) {
             if ($buildItem->Name() === $this->Name()) {
                 $scheduledLevelTotal += $buildItem->Amount();
             }
         }
     }
     echo "<pre>the next buildLevel return of " . $item->Name() . " is " . ($alreadyBuiltLevels + $scheduledLevelTotal + 1) . ".</pre>";
     return $alreadyBuiltLevels + $scheduledLevelTotal + 1;
 }