Ejemplo n.º 1
0
 private static function GetBuildListBy($colony, $IDrangeFrom, $IDrangeTo, $readyToBeBuilt = false, $table = "production")
 {
     // Get building list
     $colonyID = $colony->ID();
     $query = "SELECT * FROM {$table} WHERE colonyID = {$colonyID} AND resource_type_being_built BETWEEN {$IDrangeFrom} AND {$IDrangeTo}";
     if ($readyToBeBuilt) {
         $time = time();
         $query .= " AND {$time} > scheduled_time";
     }
     $query .= " ORDER BY build_list_position ASC;";
     $buildData = Database::Instance()->ExecuteQuery($query, "SELECT");
     // BuildGroup always expects an array of arrays, so if we get NULL or a single array, we need to make an array of arrays
     if ($buildData === NULL) {
         $buildData = array();
     }
     if (isset($buildData["colonyID"])) {
         $buildData = array($buildData);
     }
     if ($table === "production_building") {
         $buildGroup = BuildingBuildGroup::FromDatabase($buildData, $colony);
     } else {
         $buildGroup = BuildGroup::FromDatabase($buildData, $colony);
     }
     return new ResourceBuilder($buildGroup);
 }
Ejemplo n.º 2
0
 public function CancelBuildings(array $resources, array $positions, $firstItem)
 {
     $c = $this->User()->CurrentColony();
     $bg = BuildingBuildGroup::FromList($resources, $c, $positions, true);
     $rb = ResourceBuilder::GetBuildingListOfColony($c);
     foreach ($bg->Members() as $item) {
         if (!$rb->BuildList()->ContainsBuildItem($item)) {
             throw new Exception("This item has already been deleted!");
         }
     }
     // Reimburse costs
     $reimbursedCosts = $bg->TotalCost();
     $c->CurrentResources()->AddCost($reimbursedCosts);
     $c->UpdateResources();
     // Deduct the units
     $rb->BuildList()->DeductUnits($bg);
     // Update Build times
     $rb->BuildList()->UpdateLevels();
     $rb->BuildList()->UpdateBuildTimes();
     if ($firstItem) {
         // Update Commissioned time
         $rb->BuildList()->UpdateCommissionedTime();
     }
     // Update the database
     $rb->BuildList()->UpdateDatabase();
 }
 public static function FromDatabase(array $buildData, Colony $colony, $updateBuildTimes = true)
 {
     $members = array();
     // Build a list of BuildItems
     foreach ($buildData as $row) {
         $itemName = ResourceParser::Instance()->GetItemNameByID($row['resource_type_being_built']);
         $itemObject = clone ResourceParser::Instance()->GetItemByName($itemName);
         $itemObject->Amount(1);
         $positionInList = $row['build_list_position'];
         $level = $row['level'];
         $members[$positionInList] =& BuildingBuildItem::FromIDResource($itemObject, $positionInList, $positionInList, 0, $level, NULL);
     }
     $bg = new BuildingBuildGroup($members, $colony);
     if ($updateBuildTimes) {
         $bg->UpdateBuildTimes();
     }
     return $bg;
 }
Ejemplo n.º 4
0
include "root.inc";
require_once "{$ROOT}/common.php";
$_SESSION['NewNovaID'] = 1;
$user = User::GetCurrentUser();
if ($user == NULL) {
    return;
}
if ($_GET) {
    if (isset($_GET['command'])) {
        switch ($_GET['command']) {
            case "insert":
                $id = $_GET['building'];
                $itemName = ResourceParser::Instance()->GetItemNameByID($id);
                $action = new UserAction($user);
                // Check if this is the first item to be inserted
                $count = BuildingBuildGroup::GetListCount($user->CurrentColony());
                $firstItem = false;
                if ($count == 0) {
                    $firstItem = true;
                }
                // Only calculate commissioned time on first insertion
                $action->PurchaseBuildings(array($itemName), $firstItem);
                break;
            case "cancel":
                $id = $_GET['building'];
                $itemName = ResourceParser::Instance()->GetItemNameByID($id);
                $pos = $_GET['build_position'];
                $action = new UserAction($user);
                // Check if we want to delete the first item
                $firstItem = false;
                $visualPos = $_GET['viewposition'];