Version 1.10c

This commit is contained in:
nemunaire 2008-11-19 12:00:00 +01:00
commit 2a066a7498
148 changed files with 2174 additions and 134960 deletions

View file

@ -1,6 +1,7 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Flottes';
include_once(_FCORE."../game/Class/class.flotte.php");
if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']) && !empty($_POST['ss']) && !empty($_POST['pos']) && !empty($_POST['vitesse']) && isset($_POST['mission']) && isset($_POST['metal']) && isset($_POST['cristal']) && isset($_POST['hydrogene'])) {
$end_galaxie = floor(gpc('amas', 'post'));
@ -47,7 +48,7 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
//On vérifie la mission, si elle est de recycler, il faut qu'il y ait des reclycleurs
elseif ($mission == 4 && $sess->values['vais'][3] <= 0) erreur('Vous ne pouvez pas recycler sans recycleur !', "red", '?p=flotte');
//On vérifie que l'on possède assez de ressources
elseif ((!empty($EBmetal) && !$EBmetal > $queryPlanete['metal']) || (!empty($EBcristal) && !$EBcristal > $queryPlanete['cristal']) || (!empty($EBhydrogene) && !$EBhydrogene > $queryPlanete['hydrogene'])) erreur('Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.', "red", '?p=flotte');
elseif ((!empty($EBmetal) && !$EBmetal > $planete->metal) || (!empty($EBcristal) && !$EBcristal > $planete->cristal) || (!empty($EBhydrogene) && !$EBhydrogene > $planete->hydrogene)) erreur('Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.', "red", '?p=flotte');
//On vérifie que l'on n'envoie pas des ressources négatives
elseif ((!empty($EBmetal) && $EBmetal < 0) || (!empty($EBcristal) && $EBcristal < 0) || (!empty($EBhydrogene) && $EBhydrogene < 0)) erreur('Vous avez spécifié des valeurs de ressources à embarquer incorrectes !', "red", '?p=flotte', 4000);
//On vérifie la vitesse du vaisseau
@ -86,33 +87,33 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
erreur('Il n\'y a rien à recycler sur la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'].<br />Vous pouvez forcer le lancement de la flotte en rechargeant cette page.', "orange");
}
//Création de la flotte
$req = array();
$reqPlan = array();
$nbVais = 0;
foreach ($sess->values['vais'] as $key => $vaisseau){
if ($vaisseau > 0) {
if ($vaisseau > $planete->vaisseaux[$key]) erreur('Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.', "red", '?p=flotte');
else {
$req[] = $nomvaisnVAR[$key].' = '.$vaisseau;
$reqPlan[] = $nomvaisnVAR[$key].' = '.$nomvaisnVAR[$key].' - '.$vaisseau;
$nbVais += $vaisseau;
}
}
}
if ($nbVais <= 0) erreur('Vous devez envoyer au moins un vaisseau pour former une flotte !', "red", '?p=flotte');
elseif ($sess->values['flnbvais'] != $nbVais) erreur('Une erreur est survenue lors de la création de la flotte :<br /><br /><i>Calcul du nombre de vaisseaux incorrect !</i><br /><br />Si le problème perciste, <a href="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.', "red", '?p=flotte', 4500);
if (!isset($sess->values['vais']) || !is_array($sess->values['vais'])) erreur('Erreur lors de la création de la flotte, absence de données des vaisseaux', "red", '?p=flotte');
else {
//Envoie de la flotte
$flotte = new flotte();
$sauv = $planete->vaisseaux; //Sauvegarde du contenu de la flotte avant lancement
$nbVais = 0;
foreach ($sess->values['vais'] as $key => $vaisseau){
if ($vaisseau > 0) {
if ($vaisseau > $planete->vaisseaux[$key]) erreur('Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.', "red", '?p=flotte');
else $nbVais += $vaisseau;
}
elseif ($vaisseau < 0) $vaisseau = 0;
$flotte->vaisseaux[$key] = $vaisseau;
$sauv[$key] -= $vaisseau;
}
if ($nbVais <= 0) erreur('Vous devez envoyer au moins un vaisseau pour former une flotte !', "red", '?p=flotte');
elseif (!isset($sess->values['flnbvais']) || $sess->values['flnbvais'] != $nbVais) erreur('Une erreur est survenue lors de la création de la flotte :<br /><br /><i>Calcul du nombre de vaisseaux incorrect !</i><br /><br />Si le problème perciste, <a href="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.', "red", '?p=flotte', 4500);
$flotte->nom = gpc('nomflotte', 'post');
$flotte->mission = $mission;
$flotte->start_planete = $planete;
$flotte->start_time = time();
$flotte->end_planete = $resultat['id'];
$calc = $flotte->calc_deplacement($planete->galaxie, $planete->ss, $planete->position, $end_galaxie, $end_ss, $end_pos, $vitesse);
$calc = $flotte->calc_deplacement($planete->galaxie, $planete->ss, $planete->position, $end_galaxie, $end_ss, $end_pos, $vitesse, false, true);
$flotte->end_time = $calc[0];
$conso = $calc[1];
@ -121,11 +122,19 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie ainsi que de ressources sur la planète
$flotte->calculer();
if ($flotte->contenuMax < ceil(gpc('metal', 'post')) + ceil(gpc('cristal', 'post')) + ceil(gpc('hydrogene', 'post')) + $conso) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent.', "red", '?p=flotte', 3500);
if ($flotte->contenuMax < ceil(gpc('metal', 'post')) + ceil(gpc('cristal', 'post')) + ceil(gpc('hydrogene', 'post')) + $conso) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent. '.$flotte->contenuMax, "red", '?p=flotte', 3500);
elseif ($planete->metal < ceil(gpc('metal', 'post')) || $planete->cristal < ceil(gpc('cristal', 'post')) || $planete->hydrogene < ceil(gpc('hydrogene', 'post')) + $conso) erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
else {
if ($mission == 1) $flotte->tactique = gpc('tactique', 'post');
$flotte->contenu = array(ceil(gpc('metal', 'post')), ceil(gpc('cristal', 'post')), ceil(gpc('hydrogene', 'post')));
$flotte->contenu = array(floor(gpc('metal', 'post')), floor(gpc('cristal', 'post')), floor(gpc('hydrogene', 'post')));
$flotte->modifFlotte = "INSERT";
//On actualise la planète
$planete->metal -= floor(gpc('metal', 'post'));
$planete->cristal -= floor(gpc('cristal', 'post'));
$planete->hydrogene -= floor(gpc('hydrogene', 'post') + $conso);
$planete->vaisseaux = $sauv;
if (!in_array('vaisseaux', $planete->modif)) $planete->modif[] = 'vaisseaux';
unset($sess->values['vais']);
$sess->put();
@ -143,6 +152,7 @@ elseif (!empty($_POST['v0']) || !empty($_POST['v1']) || !empty($_POST['v2']) ||
else $v = (int)abs($v);
if ($vaisseau < $v) {
$planete->vaisseaux = $sauv;
erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte');
}
@ -175,6 +185,37 @@ elseif (!empty($_POST['v0']) || !empty($_POST['v1']) || !empty($_POST['v2']) ||
//TODO Ajouter les destinations favorites + Colonies
}
//Affichage du détail d'une flotte
elseif (!empty($_GET['n'])) {
$idN = ceil(gpc('n'));
$flotteN = new Flotte($idN);
$flotteN->load_planete();
if ($flotteN->id_flotte == 0 || $flotteN->start_planete->id_user != $planete->id_user) erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500);
else {
//Annulation de la mission
if (isset($_GET['a']) && isset($sess->values['ret_fleet']) && $_GET['a'] == $sess->values['ret_fleet']) {
//Calcul du temps passé depuis le lancement de la flotte
$tpsDD = time() - $flotteN->start_time;
if ($flotteN->mission == '6') erreur('Votre flotte est déjà en train de revenir !', 'red', '?p=flotte&n='.$idN, 1500);
elseif ($flotteN->end_time > $tpsDD) {
$bdd->query("UPDATE $table_flottes SET mission = '6', effectue = '1', end_time = '$tpsDD', end_galaxie = start_galaxie, end_ss = start_ss, end_position = start_position WHERE id_user = '$id_user' AND id = '$idN';");
header('Location: ?p=flotte&n='.$idN);
exit;
}
else erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500);
}
$sess->values['ret_fleet'] = sha1('HB.fleet_'.rand().'☺ß☻');
$sess->put();
$template->assign('ret_fleet', $sess->values['ret_fleet']);
$template->assign('flotte', $flotteN);
$template->assign('nomvais', $nomvaisa);
$page = 'flotten';
}
}
//Affichage de la page générale
else {
//Mise à jour des tactiques par défaut
@ -218,7 +259,10 @@ else {
$retour = '-';
$Hretour = '-';
}
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $flotte['end_galaxie'].':'.$flotte['end_ss'].':'.$flotte['end_position'], date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
$end_planete = new Planete($flotte['end_planete']);
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $end_planete->nom_planete.' ['.$end_planete->galaxie.':'.$end_planete->ss.':'.$end_planete->position.']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
}
}
$template->assign('flottesEC', $TEMP_flottesEC);