Index: includes/functions/DefensesBuildingPage.php =================================================================== --- includes/functions/DefensesBuildingPage.php (revision 381) +++ includes/functions/DefensesBuildingPage.php (working copy) @@ -1,6 +1,6 @@ "; - // Si ... Et Seulement si je peux construire je mets la p'tite zone de saisie if ($CanBuildOne) { $InQueue = strpos ( $CurrentPlanet['b_hangar_id'], $Element.","); $IsBuild = ($CurrentPlanet[$resource[407]] >= 1) ? true : false; $BuildIt = true; if ($Element == 407 || $Element == 408) { - $BuildIt = false; + $BuildIt = false; if ( $InQueue === false && !$IsBuild) { $BuildIt = true; } Index: includes/functions/ElementBuildListBox.php =================================================================== --- includes/functions/ElementBuildListBox.php (revision 381) +++ includes/functions/ElementBuildListBox.php (working copy) @@ -1,6 +1,6 @@ $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; - if ($Count !== 0) { + $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) { // 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 - $Count = ($Count > $MaxElements) ? $MaxElements : $Count; - if ($Count >= 1) { - - $Ressource = GetElementRessources ( $Element, $Count ); - $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); - + if ($Count > $MaxElements) { + $Count = $MaxElements; + } + $Ressource = GetElementRessources ( $Element, $Count ); + $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); + if ($Count >= 1) { 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['b_hangar_id'] .= "". $Element .",". $Count .";"; + $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 + } + + // 1° Vaisseau à rajouter dans la queue + if ($CurrentPlanet['b_hangar'] == 0) + { + // On prends la valeur du temps actuel + $TimeStart = time(); + + // On calcule quand çà sera terminé en rajoutant + // le temps de construction d'un vaisseau + // multiplié par le nombre + $TimeFinish = $TimeStart + $BuildTime * $Count; + + // On garde en mémoire l'heure de fin + $CurrentPlanet['b_hangar'] = $TimeFinish; + } + else + { + // Plus d'un type de vaisseau à construire + + // On prends comme référence pour l'heure du début, + // l'heure de fin du précédent type de vaisseau + $TimeStart = $CurrentPlanet['b_hangar']; + + // On calcule l'heure de fin pour ce type de + // vaisseau + $TimeFinish = $TimeStart + $BuildTime * $Count; + + // On stocke en mémoire l'heure de fin pour le + // prochain type de vaisseau + $CurrentPlanet['b_hangar'] = $TimeFinish; + } - } else { - $res=doquery("SELECT ".$resource[$Element]." FROM {{table}} WHERE id = '". $CurrentPlanet['id'] ."' ;",'planets'); - $NombreVaisseauxActuel=mysql_result($res,0,$resource[$Element]); + $CurrentPlanet['b_hangar_id'] .= "". $Element .",". $Count .",". $TimeStart .",". $TimeFinish .";"; + } 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'); + $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) { @@ -108,6 +131,7 @@ // ------------------------------------------------------------------------------------------------------- // Construction de la page du Chantier (car si j'arrive ici ... c'est que j'ai tout ce qu'il faut pour ... $TabIndex = 0; + foreach($lang['tech'] as $Element => $ElementName) { if ($Element > 201 && $Element <= 399) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { @@ -143,13 +167,11 @@ // Case nombre d'elements a construire $PageTable .= ""; - // Si ... Et Seulement si je peux construire je mets la p'tite zone de saisie - if ($CanBuildOne) - { + if ($CanBuildOne) { $TabIndex++; $PageTable .= ""; - + $MaxElements = GetMaxConstructibleElements ( $Element, $CurrentPlanet ); if($MaxElements>MAX_FLEET_OR_DEFS_PER_ROW) @@ -162,15 +184,7 @@ $PageTable .= $lang['no_enought_res'] . ''; } - $MaxElements = GetMaxConstructibleElements ( $Element, $CurrentPlanet ); - if($MaxElements>MAX_FLEET_OR_DEFS_PER_ROW) - $MaxElements=MAX_FLEET_OR_DEFS_PER_ROW; - - if ($CanBuildOne) - $PageTable.='

Nombre max ('.intval($MaxElements).')'; - - // Fin de ligne (les 3 cases sont construites !! $PageTable .= ""; } Index: includes/functions/HandleElementBuildingQueue.php =================================================================== --- includes/functions/HandleElementBuildingQueue.php (revision 381) +++ includes/functions/HandleElementBuildingQueue.php (working copy) @@ -30,41 +30,53 @@ function HandleElementBuildingQueue($currentUser, &$currentPlanet, $productionTime) { global $resource; + + $Time = time(); + // 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(); + //$currentPlanet['b_hangar'] += $productionTime; - $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) { + if (empty($element) || !($element = explode(',', $element)) || count($element) != 4) { continue; } - - list($item, $count) = $element; - + list($item, $count, $StartTime, $FinishTime) = $element; $buildTime = GetBuildingTime($currentUser, $currentPlanet, $item); + + if ($Time >= $StartTime) + { + if($Time >= $FinishTime) { + if ($count > 0) + { + $buildArray[$item] += $count; + $currentPlanet[$resource[$item]] += $count; + } + } + else + { + $NbBuilded = floor( ($Time - $StartTime) / $buildTime); + $buildArray[$item] += $NbBuilded; + $currentPlanet[$resource[$item]] += $NbBuilded; + $count -= $NbBuilded; + $StartTime += $NbBuilded * $buildTime; - if($currentPlanet['b_hangar'] >= $buildTime && $count > 0) { + $currentPlanet['b_hangar_id'] .= "$item,$count,$StartTime,$FinishTime;"; + + $continue = false; + } + } + else + { + $currentPlanet['b_hangar_id'] .= "$item,$count,$StartTime,$FinishTime;"; + } + echo $currentPlanet['b_hangar_id']. '

'; - $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 { $buildArray = array();