Correctifs sur la page de préparation d'envoie des flotte

This commit is contained in:
Nigel Sheldon 2021-01-03 18:43:43 +01:00
commit a3ac838a19
8 changed files with 125 additions and 58 deletions

View file

@ -734,7 +734,7 @@ class dSpatial implements Donnees
}
public static function tailleCales($id)
public static function tailleCales($id, surface $planete)
{
if ($planete->race == "humain") {
switch ($id) {
@ -781,7 +781,7 @@ class dSpatial implements Donnees
$vitesse = 15000;
break;
default:
trigger_error("Vaisseau ".$id." introuvable dans les données", E_USER_ERROR);
$vitesse = 0;
}
} else {
switch ($id) {
@ -837,7 +837,7 @@ class dSpatial implements Donnees
$vitesse = 20000000;
break;
default:
trigger_error("Vaisseau ".$id." introuvable dans les données", E_USER_ERROR);
$vitesse = 0;
}
}
@ -846,7 +846,7 @@ class dSpatial implements Donnees
}
public static function vitesseP($id)
public static function vitesseP($id, surface $planete)
{
if ($planete->race == "humain") {
switch ($id) {
@ -957,7 +957,7 @@ class dSpatial implements Donnees
return $vitesse;
}
public static function vitesseS($id)
public static function vitesseS($id, surface $planete)
{
if ($planete->race == "humain") {
switch ($id) {
@ -1068,7 +1068,7 @@ class dSpatial implements Donnees
return $vitesse;
}
public static function vitesseG($id)
public static function vitesseG($id, surface $planete)
{
if ($planete->race == "humain") {
switch ($id) {

View file

@ -88,12 +88,13 @@ class Flotte
public function calculer()
{
global $planete;
$this->nb_vais = 0;
//Calcul de la capacité maximale d'embarquement de la flotte
foreach ($this->vaisseaux as $key => $vais) {
$this->nb_vais += $vais;
$this->contenuMax += dSpatial::tailleCales($key) * $vais;
$this->contenuMax += dSpatial::tailleCales($key, $planete) * $vais;
}
}
@ -265,20 +266,20 @@ class Flotte
//Calcul du temps de déplacement entre planètes
if ($start_planete->ss == $end_systeme && $start_planete->galaxie == $end_galaxie) {
$temps[0][$key] = (1000/dSpatial::vitesseP($key)) * (1 + 0.1 * $diff_position);
$temps[0][$key] = (1000/dSpatial::vitesseP($key, $start_planete)) * (1 + 0.1 * $diff_position);
$temps[1][$key] = $temps[2][$key] = 0;
}
//Calcul du temps de déplacement entre système
elseif ($start_planete->galaxie == $end_galaxie) {
$temps[0][$key] = (1000/dSpatial::vitesseP($key)) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
$temps[1][$key] = (2000/dSpatial::vitesseS($key)) * (2 + 1 * $diff_systeme);
$temps[0][$key] = (1000/dSpatial::vitesseP($key, $start_planete)) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
$temps[1][$key] = (2000/dSpatial::vitesseS($key, $start_planete)) * (2 + 1 * $diff_systeme);
$temps[2][$key] = 0;
}
//Calcul du temps de déplacement entre galaxies
else {
$temps[0][$key] = (1000/dSpatial::vitesseP($key)) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
$temps[1][$key] = (2000/dSpatial::vitesseS($key)) * (2 + 1 * ($diff_centre_systeme_start + $diff_centre_systeme_end));
$temps[2][$key] = (5000/dSpatial::vitesseG($key)) * (2 + 1.5 * $diff_galaxie);
$temps[0][$key] = (1000/dSpatial::vitesseP($key, $start_planete)) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
$temps[1][$key] = (2000/dSpatial::vitesseS($key, $start_planete)) * (2 + 1 * ($diff_centre_systeme_start + $diff_centre_systeme_end));
$temps[2][$key] = (5000/dSpatial::vitesseG($key, $start_planete)) * (2 + 1.5 * $diff_galaxie);
}
//Calcul du bonus pour le réacteur à combustion
@ -332,7 +333,7 @@ class Flotte
}
//Si les chasseurs peuvent rentrer dans les cales des vaisseaux, on les enlèves
if ($contenuDispo - ceil($conso[0]+$conso[1]+$conso[2]) - ($vaisseaux[4] * dSpatial::tailleCales(4) + $vaisseaux[5] * dSpatial::tailleCales(5)) >= ($vaisseaux[4] + $vaisseaux[5]) * 200) {
if ($contenuDispo - ceil($conso[0]+$conso[1]+$conso[2]) - ($vaisseaux[4] * dSpatial::tailleCales(4, $start_planete) + $vaisseaux[5] * dSpatial::tailleCales(5, $start_planete)) >= ($vaisseaux[4] + $vaisseaux[5]) * 200) {
$temps[2][4] = $temps[2][5] = $temps[1][4] = $temps[1][5] = $temps[0][4] = $temps[0][5] = 0;
}
@ -347,6 +348,21 @@ class Flotte
}
public function calcStockage($vaisseaux, surface $planete)
{
global $LANG;
$contenuMax = 0;
foreach ($vaisseaux as $key => $vais) {
if (!isset($LANG[$planete->race]["vaisseaux"]["noms_sing"][$key])) {
continue;
}
$contenuMax += dSpatial::tailleCales($key, $planete) * $vais;
}
return $contenuMax;
}
public function check_mission()
{
//On vérifie qu'un calcul ne soit pas déjà en cours

View file

@ -5,7 +5,29 @@ if (!defined('INDEX')) {
}
$bdd->reconnexion();
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE (id_user = ".$planete->id_user." OR end_planete = ".$planete->id." OR id_alliance = ".$planete->id_alliance." OR end_planete = ".$planete->id_alliance.") AND (start_time + end_time) <= ".time()." AND last < ".(time()-10).";");
$sql = "";
if ($planete->id_user != null) {
$sql = "id_user = " . $planete->id_user . " ";
}
if ($planete->id != null) {
if ($sql != "") {
$sql .= " OR ";
}
$sql .= "end_planete = " . $planete->id . " ";
}
if ($planete->id_alliance != null) {
if ($sql != "") {
$sql .= " OR ";
}
$sql .= "id_alliance = " . $planete->id_alliance . " ";
}
if ($planete->id_alliance != null) {
if ($sql != "") {
$sql .= " OR ";
}
$sql .= "end_planete = " . $planete->id_alliance . " ";
}
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE (" . $sql . ") AND (start_time + end_time) <= ".time()." AND last < ".(time()-10).";");
$bdd->deconnexion();
if (!empty($flottes)) {

View file

@ -7,6 +7,10 @@ if (!defined('INDEX')) {
//Génération d'un ID unique pour identifier la flotte durant sa création
$idPrep = random();
//Supression des précédentes flottes, sinon il y a un risque de remplir le champs de BDD qui sauvegarde les flottes
$SESS->values["prepFlottes"] = null;
$SESS->values["prepFlottes"] = array();
//Création du tableau de session
$SESS->values["prepFlottes"][$idPrep] = array();
@ -41,6 +45,7 @@ $SESS->values["prepFlottes"][$idPrep]['nbVaisseaux'] = $nombreVaisseau;
$SESS->values['forceFlotte'] = false;
$SESS->values["prepFlottes"][$idPrep]['time'] = time();
$SESS->values["prepFlottes"][$idPrep]['statut'] = 1;
$SESS->values["prepFlottes"][$idPrep]['vitesse'] = 100; // vitesse par défaut: 100%
$SESS->put();
unset($nombreVaisseau, $key, $vaisseau, $v);

View file

@ -45,8 +45,8 @@ if ($onglet == "rapports") {
}
$bdd->reconnexion();
$data = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = ".$planete->id_user." AND expediteur = false AND vu != 's' ORDER BY id DESC;");
$bdd->query("UPDATE $table_mail SET vu = 0 WHERE destinataire = ".$planete->id_user." AND expediteur = false AND vu != 's';");
$data = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = ".$planete->id_user." AND expediteur IS NULL AND vu != 's' ORDER BY id DESC;");
$bdd->query("UPDATE $table_mail SET vu = 0 WHERE destinataire = ".$planete->id_user." AND expediteur IS NULL AND vu != 's';");
$bdd->deconnexion();
$template->assign('messages', $data);

View file

@ -23,10 +23,10 @@
</fieldset>
<h2>Envoyer</h2>
<noscript><span style="color: #FF0000; font-weight: bolder;">Le JavaScript est nécessaire pour envoyer une flotte.</span><br /></noscript>
<input type="submit" value="GO" class="submit" /><input type="hidden" name="cds" value="{$idPrep}" /><br />
<input type="hidden" name="cds" value="{$idPrep}" /><br />
Temps de déplacement : <span id="temps">-</span><br />
Consomation : <span id="conso">-</span><br />
<span id="deblok"><b>Compl&egrave;tez les champs ci-dessus</b></span>
<br /><span id="vp"></span>
</form>
{include file='game/footer.tpl'}
{include file='game/footer.tpl'}