Index: includes/functions/FleetBuildingPage.php =================================================================== --- includes/functions/FleetBuildingPage.php (révision 315) +++ includes/functions/FleetBuildingPage.php (copie de travail) @@ -33,62 +33,71 @@ if (isset($_POST['fmenge'])) { // On vient de Cliquer ' Construire ' - // Et y a une liste de dol�ances - $AddedInQueue = false; + // Ici, on sait precisement ce qu'on aimerait bien construire ... + foreach($_POST['fmenge'] as $Element => $Count) { // Construction d'Element recuper�s sur la page de Flotte ... // ATTENTION ! La file d'attente Flotte est Commune a celle des Defenses // Dans fmenge, on devrait trouver un tableau des elements constructibles et du nombre d'elements souhait�s + + $Element = (int) $Element; + $Count = (int) $Count; + + $Count = ($Count > MAX_FLEET_OR_DEFS_PER_ROW) ? MAX_FLEET_OR_DEFS_PER_ROW : $Count; - $Element = intval($Element); - $Count = ereg_replace("[^0-9]",'',$Count); - if ($Count > MAX_FLEET_OR_DEFS_PER_ROW) { - $Count = MAX_FLEET_OR_DEFS_PER_ROW; - } - - if ($Count != 0) { + if ($Count !== 0) { // On verifie si on a les technologies necessaires a la construction de l'element if ( IsTechnologieAccessible ($CurrentUser, $CurrentPlanet, $Element) ) { - // On verifie combien on sait faire de cet element au max + + // On verifie combien on sait faire de cet element au max $MaxElements = GetMaxConstructibleElements ( $Element, $CurrentPlanet ); + // Si pas assez de ressources, on ajuste le nombre d'elements - if ($Count > $MaxElements) { - $Count = $MaxElements; - } - $Ressource = GetElementRessources ( $Element, $Count ); - $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); - if ($Count >= 1) { + $Count = ($Count > $MaxElements) ? $MaxElements : $Count; + if ($Count >= 1) { + + $Ressource = GetElementRessources ( $Element, $Count ); + $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); + if ($BuildTime > 0) { - $CurrentPlanet['metal'] -= $Ressource['metal']; - $CurrentPlanet['crystal'] -= $Ressource['crystal']; - $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; - if ($Element == 214 && $CurrentUser['rpg_destructeur'] == 1) { - $Count = $Count * 2; //On multiplie les EDLM par 2 - } + + $CurrentPlanet['metal'] -= $Ressource['metal']; + $CurrentPlanet['crystal'] -= $Ressource['crystal']; + $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; + + if ($Element == 214 && $CurrentUser['rpg_destructeur'] == 1) { + $Count = $Count * 2; //On multiplie les EDLM par 2 + } + $CurrentPlanet['b_hangar_id'] .= "". $Element .",". $Count .";"; - } else { - $res=doquery("SELECT ".$resource[$Element]." FROM {{table}} WHERE id = '". $CurrentPlanet['id'] ."' ;",'planets'); - $NombreVaisseauxActuel=mysql_result($res,0,$resource[$Element]); - $CurrentPlanet['metal'] -= $Ressource['metal']; - $CurrentPlanet['crystal'] -= $Ressource['crystal']; - $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; - $NewFleetNumber = $CurrentPlanet[$resource[$Element]] + $Count; - if ($Element == 214 && $CurrentUser['rpg_destructeur'] == 1) { - $Count = $Count * 2; //On multiplie les EDLM par 2 - } - $QryUpdatefleet = "UPDATE {{table}} SET "; - $QryUpdatefleet .= "`$resource[$Element]` = '".$NombreVaisseauxActuel."' + '".$Count."' "; - $QryUpdatefleet .= "WHERE "; - $QryUpdatefleet .= "`id` = '". $CurrentPlanet['id'] ."'"; - doquery ( $QryUpdatefleet, 'planets'); + } else { + $res=doquery("SELECT ".$resource[$Element]." FROM {{table}} WHERE id = '". $CurrentPlanet['id'] ."' ;",'planets'); + $NombreVaisseauxActuel=mysql_result($res,0,$resource[$Element]); + + $CurrentPlanet['metal'] -= $Ressource['metal']; + $CurrentPlanet['crystal'] -= $Ressource['crystal']; + $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; + $NewFleetNumber = $CurrentPlanet[$resource[$Element]] + $Count; + + if ($Element == 214 && $CurrentUser['rpg_destructeur'] == 1) { + $Count = $Count * 2; //On multiplie les EDLM par 2 + } + + $QryUpdatefleet = "UPDATE {{table}} SET "; + $QryUpdatefleet .= "`$resource[$Element]` = '".$NombreVaisseauxActuel."' + '".$Count."' "; + $QryUpdatefleet .= "WHERE "; + $QryUpdatefleet .= "`id` = '". $CurrentPlanet['id'] ."'"; + doquery ( $QryUpdatefleet, 'planets'); } - } + } } - } - } - } + } + } + + } + // ------------------------------------------------------------------------------------------------------- // S'il n'y a pas de Chantier ... if ($CurrentPlanet[$resource[21]] == 0) { @@ -145,11 +154,8 @@ if($MaxElements>MAX_FLEET_OR_DEFS_PER_ROW) $MaxElements=MAX_FLEET_OR_DEFS_PER_ROW; - if ($BuildOneElementTime > 0) { - $MaxElements=1; } - if ($CanBuildOne) - $PageTable.='

Nombre max ('.intval($MaxElements).')'; + $PageTable.='

Nombre max ('.intval($MaxElements).')'; // Fin de ligne (les 3 cases sont construites !! Index: includes/functions/HandleElementBuildingQueue.php =================================================================== --- includes/functions/HandleElementBuildingQueue.php (révision 315) +++ includes/functions/HandleElementBuildingQueue.php (copie de travail) @@ -32,25 +32,38 @@ global $resource; // Pendant qu'on y est, si on verifiait ce qui se passe dans la queue de construction du chantier ? if ($currentPlanet['b_hangar_id']) { - $buildArray = array(); + + $buildArray = array(); $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) { - $currentPlanet['b_hangar'] -= $buildTime * $count; - $buildArray[$element] += $count; - $currentPlanet[$resource[$element]] += $count; - $currentPlanet['b_hangar_id'] .= "$element,$Count;"; + $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 { // Cas : pas assez de temps pour construire quelquechose + $currentPlanet['b_hangar_id'] .= "$item,$count;"; } } } else {