/** * This file is part of XNova:Legacies * * @license http://www.gnu.org/licenses/gpl-3.0.txt * @see http://www.xnova-ng.org/ * * Copyright (c) 2009-2010, XNova Support Team <http://www.xnova-ng.org> * All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * --> NOTICE <-- * This file is part of the core development branch, changing its contents will * make you unable to use the automatic updates manager. Please refer to the * documentation for further information about customizing XNova. * */ function RemoveBuildingFromQueue(&$CurrentPlanet, $CurrentUser, $QueueID) { if ($QueueID > 1) { $CurrentQueue = $CurrentPlanet['b_building_id']; if ($CurrentQueue != 0) { $QueueArray = explode(";", $CurrentQueue); $ActualCount = count($QueueArray); $ListIDArray = explode(",", $QueueArray[$QueueID - 2]); $BuildEndTime = $ListIDArray[3]; $ListIDArray = explode(",", $QueueArray[$QueueID - 1]); $Element = $ListIDArray[0]; for ($ID = $QueueID; $ID < $ActualCount; $ID++) { $ListIDArray = explode(",", $QueueArray[$ID]); if ($Element == $ListIDArray[0]) { $ListIDArray[1] -= 1; $ListIDArray[2] = GetBuildingTimeLevel($CurrentUser, $CurrentPlanet, $ListIDArray[0], $ListIDArray[1]); } $BuildEndTime += $ListIDArray[2]; $ListIDArray[3] = $BuildEndTime; $QueueArray[$ID - 1] = implode(",", $ListIDArray); } unset($QueueArray[$ActualCount - 1]); $NewQueue = implode(";", $QueueArray); } $CurrentPlanet['b_building_id'] = $NewQueue; } return $QueueID; }
/** * Cancel a building from the queue and give the resource to the player * * @param array $currentPlanet @see $planetrow * @param array $currentUser @see $user * @return bool True if the cancel the cancel is correct */ function CancelBuildingFromQueue(&$currentPlanet, &$currentUser) { if ($currentPlanet['b_building_id'] == 0) { return false; } $currentQueue = explode(';', $currentPlanet['b_building_id']); $firstElement = explode(',', $currentQueue[0]); array_shift($currentQueue); $queueSize = count($currentQueue); $forDestroy = $firstElement[4] == 'destroy' ? true : false; $elementPrice = GetBuildingPrice($currentUser, $currentPlanet, $firstElement[0], true, $forDestroy); $currentPlanet['metal'] += $elementPrice['metal']; $currentPlanet['crystal'] += $elementPrice['crystal']; $currentPlanet['deuterium'] += $elementPrice['deuterium']; if ($queueSize > 0) { $buildEndTime = time(); $newQueue = array(); for ($i = 0; $i < $queueSize; $i++) { $elementArray = explode(',', $currentQueue[$i]); if ($firstElement[0] == $elementArray[0]) { $elementArray[1]--; $elementArray[2] = GetBuildingTimeLevel($currentUser, $currentPlanet, $elementArray[0], $elementArray[1]); } $buildEndTime += $elementArray[2]; $elementArray[3] = $buildEndTime; $newQueue[$i] = implode(',', $elementArray); } } $currentPlanet['b_building_id'] = $queueSize > 0 ? implode(';', $newQueue) : 0; $currentPlanet['b_building'] = $queueSize > 0 ? $buildEndTime : 0; return true; }
/** * Tis file is part of XNova:Legacies * * @license http://www.gnu.org/licenses/gpl-3.0.txt * @see http://www.xnova-ng.org/ * * Copyright (c) 2009-Present, XNova Support Team <http://www.xnova-ng.org> * All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * --> NOTICE <-- * This file is part of the core development branch, changing its contents will * make you unable to use the automatic updates manager. Please refer to the * documentation for further information about customizing XNova. * */ function CancelBuildingFromQueue(&$CurrentPlanet, &$CurrentUser) { $CurrentQueue = $CurrentPlanet['b_building_id']; if ($CurrentQueue != 0) { // Creation du tableau de la liste de construction $QueueArray = explode(";", $CurrentQueue); // Comptage du nombre d'elements dans la liste $ActualCount = count($QueueArray); // Stockage de l'element a 'interrompre' $CanceledIDArray = explode(",", $QueueArray[0]); $Element = $CanceledIDArray[0]; $BuildMode = $CanceledIDArray[4]; // pour savoir si on construit ou detruit $nb_item = $Element; if ($ActualCount > 1) { array_shift($QueueArray); $NewCount = count($QueueArray); // Mise a jour de l'heure de fin de construction theorique du batiment $BuildEndTime = time(); for ($ID = 0; $ID < $NewCount; $ID++) { $ListIDArray = explode(",", $QueueArray[$ID]); // Pour diminuer le niveau et le temps de construction // si le bâtiment qui est annulé se trouve plusieurs fois dans la queue // Exemple de queue de construction : // Mine de métal (Niveau 40) | Silo de missile (Niveau 30) | Silo de missiles (Niveau 31) | Mine de métal (Niveau 41) // Si on supprime le premier bâtiment, on aura dans la queue de construction : // Silo de missile (Niveau 30) | Silo de missiles (Niveau 31) | Mine de métal (Niveau 40) if ($nb_item == $ListIDArray[0]) { $ListIDArray[1] -= 1; $ListIDArray[2] = GetBuildingTimeLevel($CurrentUser, $CurrentPlanet, $ListIDArray[0], $ListIDArray[1]); } $BuildEndTime += $ListIDArray[2]; $ListIDArray[3] = $BuildEndTime; $QueueArray[$ID] = implode(",", $ListIDArray); } $NewQueue = implode(";", $QueueArray); $ReturnValue = true; $BuildEndTime = '0'; } else { $NewQueue = '0'; $ReturnValue = false; $BuildEndTime = '0'; } // Ici on va rembourser les ressources engagées ... // Deja le mode (car quand on detruit ca ne coute que la moitié du prix de construction classique if ($BuildMode == 'destroy') { $ForDestroy = true; } else { $ForDestroy = false; } if ($Element != false) { $Needed = GetBuildingPrice($CurrentUser, $CurrentPlanet, $Element, true, $ForDestroy); $CurrentPlanet['metal'] += $Needed['metal']; $CurrentPlanet['crystal'] += $Needed['crystal']; $CurrentPlanet['deuterium'] += $Needed['deuterium']; } } else { $NewQueue = '0'; $BuildEndTime = '0'; $ReturnValue = false; } $CurrentPlanet['b_building_id'] = $NewQueue; $CurrentPlanet['b_building'] = $BuildEndTime; return $ReturnValue; }