--- /Users/maxime/Desktop/dossier sans titre/HandleElementBuildingQueue_original.php 2010-05-03 21:54:27.000000000 +0200 +++ /Users/maxime/Desktop/dossier sans titre/HandleElementBuildingQueue_modifie.php 2010-05-02 17:01:00.000000000 +0200 @@ -5,7 +5,7 @@ * @license http://www.gnu.org/licenses/gpl-3.0.txt * @see http://www.xnova-ng.org/ * - * Copyright (c) 2009-2010, XNova Support Team + * Copyright (c) 2009-Present, XNova Support Team * All rights reserved. * * This program is free software: you can redistribute it and/or modify @@ -28,52 +28,55 @@ * */ -/** - * Check the hangar queue. - * - * @global array $resource @see vars.php - * @param array $currentUser Similar as $user - * @param array $currentPlanet Similar as $planetrow - * @param int $productionTime Pass time beetween now and the last update - * @return array Contain the builded element. - */ -function HandleElementBuildingQueue($currentUser, &$currentPlanet, $productionTime) { - global $resource; - - - $buildArray = array(); - if ($currentPlanet['b_hangar_id'] !== 0) { - - $currentPlanet['b_hangar'] += $productionTime; - $buildQueue = explode(';', $currentPlanet['b_hangar_id']); - - $currentPlanet['b_hangar_id'] = ''; - - foreach ($buildQueue as $element) { - - if (empty($element) || !($element = explode(',', $element)) || count($element) != 2) { - continue; - } - - list($item, $count) = $element; - $buildTime = GetBuildingTime($currentUser, $currentPlanet, $item); - - if($currentPlanet['b_hangar'] >= $buildTime && $count > 0) { - $buildedElements = floor($currentPlanet['b_hangar'] / $buildTime); - $buildedElements = ($buildedElements > $count) ? $count : $buildedElements; - if ($buildedElements < $count) { - $currentPlanet['b_hangar_id'] .= "$item,".($count - $buildedElements).";"; - } - $currentPlanet['b_hangar'] -= $buildTime * $buildedElements; - $buildArray[$item] += $buildedElements; - $currentPlanet[$resource[$item]] += $buildedElements; - } else { - $currentPlanet['b_hangar_id'] .= "$item,$count;"; - } - } - } else { - $currentPlanet['b_hangar'] = 0; - } +function HandleElementBuildingQueue ( $CurrentUser, &$CurrentPlanet, $ProductionTime ) { + global $resource, $lang; + // Pendant qu'on y est, si on verifiait ce qui se passe dans la queue de construction du chantier ? + if ($CurrentPlanet['b_hangar_id'] != 0) { + $Builded = array (); + $CurrentPlanet['b_hangar'] += $ProductionTime; + + $BuildQueue = explode(';', $CurrentPlanet['b_hangar_id']); + + foreach ($BuildQueue as $Node => $Array) { + if ($Array != '') { + $Item = explode(',', $Array); + // On stocke sous forme Element, Nombre, Duree de fab + $BuildArray[$Node] = array(intval($Item[0]), intval($Item[1]), GetBuildingTime ($CurrentUser, $CurrentPlanet, intval($Item[0]))); + } + } + + $CurrentPlanet['b_hangar_id'] = ''; + + $UnFinished = false; + foreach ( $BuildArray as $Node => $Item ) { + if (!$UnFinished) { + $Element = intval($Item[0]); + $Count = intval($Item[1]); + $BuildTime = $Item[2]; + while ( $CurrentPlanet['b_hangar'] >= $BuildTime && !$UnFinished ) { + if ( $Count > 0 ) { + $CurrentPlanet['b_hangar'] -= $BuildTime; + $Builded[$Element]++; + $CurrentPlanet[$resource[$Element]]++; + $Count--; + if ($Count == 0) { + break; + } + } else { + $UnFinished = true; + break; + } + } + } + if ( $Count != 0 ) { + $CurrentPlanet['b_hangar_id'] .= $Element.",".$Count.";"; + + } + } + } else { + $Builded = ''; + $CurrentPlanet['b_hangar'] = 0; + } - return $buildArray; + return $Builded; } \ No newline at end of file