forked from halo-battle/game
156 lines
5.8 KiB
PHP
156 lines
5.8 KiB
PHP
<?php
|
|
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
|
$page = 'batiments';
|
|
$titre = 'Batiments';
|
|
|
|
$TEMP_batiments = array();
|
|
|
|
//Lancement d'une nouvelle construction
|
|
if (isset($_GET['c'])) {
|
|
//Vérification que la planète ne soit pas pleine
|
|
if ($planete->casesRest - count($planete->file_bat) + 1 <= 0) erreur('Vous n\'avez plus de place sur votre planète.', "red", "?p=batiments", 3500);
|
|
//On vérifie qu'il n'y ait pas de technologie en cours de recherche si l'on veut améliorer le centre de recherche
|
|
if($_GET['c'] == 6 && !empty($planete->file_tech[1])) erreur('Une technologie est en cours de recherche dans votre laboratoire, vous ne pouvez pas faire de travaux !');
|
|
|
|
//Récupération des erreurs de la mise en file d'attente pour traitement
|
|
$construction = $planete->file_addObjet("batiments", intval(gpc('c')));
|
|
|
|
switch($construction){
|
|
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour construire ce bâtiment.'); break;
|
|
case 2: erreur('Ce bâtiment est déjà en file d\'attente !'); break;
|
|
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour construire ce bâtiment !'); break;
|
|
case 4: erreur('File d\'attente pleine !'); break;
|
|
case 5: erreur('Le nombre d\'objets est négatif !'); break;
|
|
default: header('Location: ?p=batiments'); exit;
|
|
}
|
|
}
|
|
//Lancement d'une déconstruction
|
|
if (isset($_GET['d'])) {
|
|
//Si l'on ne possède pas de batiment, erreur
|
|
if ($planete->batiments[intval(gpc('d'))] <= 0) erreur('Vous ne pouvez pas démolir un batiment que vous ne possédez pas !');
|
|
|
|
//Récupération des erreurs de la mise en file d'attente pour traitement
|
|
$construction = $planete->file_addObjet("batiments", intval(gpc('d')), -1);
|
|
|
|
switch($construction){
|
|
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour construire ce bâtiment.'); break;
|
|
case 2: erreur('Ce bâtiment est déjà en file d\'attente !'); break;
|
|
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour construire ce bâtiment !'); break;
|
|
case 4: erreur('File d\'attente pleine !'); break;
|
|
case 5: erreur('Le nombre d\'objets est négatif !'); break;
|
|
default: header('Location: ?p=batiments'); exit;
|
|
}
|
|
}
|
|
//Annulation d'une nouvelle construction
|
|
if (isset($_GET['a']) && isset($batiment[$_GET['a']])) {
|
|
$i = intval(gpc('a'));
|
|
//Vérification de la présence du batiment dans la file d'attente
|
|
if($planete->file_exist($i, 'file_bat')) {
|
|
$planete->file_delObjet("batiments", $i);
|
|
header('Location: ?p=batiments');
|
|
exit;
|
|
}
|
|
}
|
|
//Règler la production à la châine
|
|
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
|
|
if($_GET['r']) $file->chaine = false;
|
|
else $file->chaine = true;
|
|
$export = mysql_real_escape_string(serialize($file));
|
|
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
|
|
header('Location: ?p=batiments');
|
|
exit;
|
|
}*/
|
|
|
|
//Calcul du bonus de construction des mines en fonction des technologies
|
|
if ($planete->technologies[0] &262144)
|
|
{
|
|
$bonusMine_a = 0.85;
|
|
$bonusMine_b = 0.85;
|
|
$bonusMine_c = 0.85;
|
|
}
|
|
elseif ($planete->technologies[0] &131072)
|
|
{
|
|
$bonusMine_a = 0.9;
|
|
$bonusMine_b = 0.9;
|
|
$bonusMine_c = 0.9;
|
|
}
|
|
elseif ($planete->technologies[0] &65536)
|
|
{
|
|
$bonusMine_a = 0.95;
|
|
$bonusMine_b = 0.95;
|
|
$bonusMine_c = 0.95;
|
|
}
|
|
else
|
|
{
|
|
$bonusMine_a = 1;
|
|
$bonusMine_b = 1;
|
|
$bonusMine_c = 1;
|
|
}
|
|
|
|
foreach($planete->batiments as $i => $PLbatiment) {
|
|
//Si l'on est pas sur la planète mère, on désactive le laboratoire
|
|
if ($i == 6 && $queryPlanetes[0]['id'] != $planete->id) continue;
|
|
|
|
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false;
|
|
if ($PLbatiment > 0) $niveau = $PLbatiment; else $niveau = 0;
|
|
$n = $PLbatiment + 1;
|
|
eval($batimentCALC[$i][0]); eval($batimentCALC[$i][1]); eval($batimentCALC[$i][2]); eval($batimentCALC[$i][3]);
|
|
if ($planete->file_exist($i, 'file_bat')) $enFile = true; else $enFile = false;
|
|
|
|
if ($i < 4)
|
|
{
|
|
$a *= $bonusMine_a;
|
|
$b *= $bonusMine_b;
|
|
$c *= $bonusMine_c;
|
|
}
|
|
|
|
//On applique le bonus de temps des ingénieurs et des centrales informatiques
|
|
if ($i != 11) $sec /= pow(1.23,$planete->batiments[11]) + 0.0025*$planete->casernes[7];
|
|
|
|
//On applique les bonus de test
|
|
$sec /= VITESSE;
|
|
|
|
if (!empty($batiment[$i]) && requestDeblok($batimentTECH[$i], $planete)) $TEMP_batiments[] =
|
|
array(
|
|
'image' => $batimeni[$i],
|
|
'nom' => $batiment[$i],
|
|
'niveau' => $niveau,
|
|
'description' => $batimede[$i],
|
|
'descriptione' => addslashes($batimede[$i]),
|
|
'nec_metal' => $a,
|
|
'nec_cristal' => $b,
|
|
'nec_hydrogene' => $c,
|
|
'nec_metalS' => separerNombres($a),
|
|
'nec_cristalS' => separerNombres($b),
|
|
'nec_hydrogeneS' => separerNombres($c),
|
|
'temps' => sec($sec),
|
|
'num' => $i,
|
|
'enfile' => $enFile,
|
|
'maq_metal' => ceil($a - $planete->metal),
|
|
'maq_cristal' => ceil($b - $planete->cristal),
|
|
'maq_hydrogene' => ceil($c - $planete->hydrogene)
|
|
);
|
|
}
|
|
$template->assign('batiments', $TEMP_batiments);
|
|
$template->assign('chaine', $planete->batiments);
|
|
$nbfile = count($planete->file_bat) - 1;
|
|
|
|
if ($nbfile == 1) $template->assign('Pchaine', true);
|
|
else $template->assign('Pchaine', false);
|
|
if ($nbfile == 0) $template->assign('Vchaine', true);
|
|
else $template->assign('Vchaine', false);
|
|
|
|
$file = array();
|
|
foreach ($planete->file_bat as $key => $bout){
|
|
if ($key == 0) continue;
|
|
|
|
$n = $planete->batiments[$bout[0]] + 1;
|
|
eval($batimentCALC[$bout[0]][3]);
|
|
if ($bout[0] != 11) $sec /= pow(1.23,$planete->batiments[11]) + 0.0025*$planete->casernes[7];
|
|
if ($bout[1] < 0) $sec *= 0.6;
|
|
if ($key == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_bat[0])), $batiment[$bout[0]]);
|
|
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE), $batiment[$bout[0]]);
|
|
}
|
|
|
|
$template->assign('file', $file);
|
|
?>
|