示例#1
0
 function CheckLabSettingsInQueue()
 {
     global $RESEARCH;
     $this->setGlobal();
     return BuildFunctions::CheckLabSettingsInQueue();
 }
示例#2
0
 public static function addResearchToQueue($Element, $AddMode = true)
 {
     global $PLANET, $USER, $resource, $CONF, $reslist, $pricelist;
     $PLANET[$resource[31] . '_inter'] = ResourceUpdate::getNetworkLevel($USER, $PLANET);
     if (!in_array($Element, $reslist['tech']) || !BuildFunctions::isTechnologieAccessible($USER, $PLANET, $Element) || !BuildFunctions::CheckLabSettingsInQueue($PLANET)) {
         return;
     }
     $CurrentQueue = unserialize($USER['b_tech_queue']);
     if (!empty($CurrentQueue)) {
         $ActualCount = count($CurrentQueue);
     } else {
         $CurrentQueue = array();
         $ActualCount = 0;
     }
     if (Config::get('max_elements_tech') != 0 && Config::get('max_elements_tech') <= $ActualCount) {
         return false;
     }
     $BuildLevel = $USER[$resource[$Element]] + 1;
     if ($ActualCount == 0) {
         if ($pricelist[$Element]['max'] < $BuildLevel) {
             return;
         }
         $costRessources = BuildFunctions::getElementPrice($USER, $PLANET, $Element, !$AddMode);
         if (!BuildFunctions::isElementBuyable($USER, $PLANET, $Element, $costRessources)) {
             return;
         }
         if (isset($costRessources[901])) {
             $PLANET[$resource[901]] -= $costRessources[901];
         }
         if (isset($costRessources[902])) {
             $PLANET[$resource[902]] -= $costRessources[902];
         }
         if (isset($costRessources[903])) {
             $PLANET[$resource[903]] -= $costRessources[903];
         }
         if (isset($costRessources[921])) {
             $USER[$resource[921]] -= $costRessources[921];
         }
         $elementTime = BuildFunctions::getBuildingTime($USER, $PLANET, $Element, $costRessources);
         $BuildEndTime = TIMESTAMP + $elementTime;
         $USER['b_tech_queue'] = serialize(array(array($Element, $BuildLevel, $elementTime, $BuildEndTime, $PLANET['id'])));
         $USER['b_tech'] = $BuildEndTime;
         $USER['b_tech_id'] = $Element;
         $USER['b_tech_planet'] = $PLANET['id'];
     } else {
         $addLevel = 0;
         foreach ($CurrentQueue as $QueueSubArray) {
             if ($QueueSubArray[0] != $Element) {
                 continue;
             }
             $addLevel++;
         }
         $BuildLevel += $addLevel;
         if ($pricelist[$Element]['max'] < $BuildLevel) {
             return;
         }
         $elementTime = BuildFunctions::getBuildingTime($USER, $PLANET, $Element, NULL, !$AddMode, $BuildLevel);
         $BuildEndTime = $CurrentQueue[$ActualCount - 1][3] + $elementTime;
         $CurrentQueue[] = array($Element, $BuildLevel, $elementTime, $BuildEndTime, $PLANET['id']);
         $USER['b_tech_queue'] = serialize($CurrentQueue);
     }
 }