Version 1.13a

This commit is contained in:
nemunaire 2020-11-15 16:12:30 +01:00
commit ba8f323879
1634 changed files with 10080 additions and 213021 deletions

View file

@ -1,12 +1,13 @@
<?php
//Gestion des dépendances, on importe les classes nécessaires à la classe en cours
include_once("game/Class/class.exceptionHB.php");
include_once("game/Class/class.donnee.php");
/***************************************************************************
* class.file.php
* ----------------
* begin : Samedi 11 octobre 2008
* update : Jeudi 26 février 2009
* update : Vendredi 1e mai 2009
* email : nemunaire@gmail.com
*
*
@ -27,7 +28,9 @@ class File
function reajusteVacances($timeVac)
{
if (isset($this->file[0]))
$this->file[0] += time() - $timeVac;
$this->time += time() - $timeVac;
return serialize($this);
}
function refreshTime()
@ -69,6 +72,27 @@ class File
}
}
}
elseif ($this->type == "alli_batiments")
{
$batiments = $planete->batiments;
foreach ($this->file as $key => $element)
{
if ($element[1]) //Cas d'une démolition
{
$temps = Donnee::tempsAlli_Batiments($element[0], $batiments[$element[0]]--, $planete) * 0.6;
if (count($out) == 0)
$temps -= time() - $this->time;
$out[$key] = array($element[0], $element[1], ceil($temps));
}
else //Cas d'une construction
{
$temps = Donnee::tempsAlli_Batiments($element[0], ++$batiments[$element[0]], $planete);
if (count($out) == 0)
$temps -= time() - $this->time;
$out[$key] = array($element[0], $element[1], ceil($temps));
}
}
}
elseif ($this->type == "technologies")
{
foreach ($this->file as $key => $element)
@ -181,6 +205,14 @@ class File
return false;
}
function hasObject()
{
if (empty($this->file[0]))
return false;
else
return true;
}
function objectInFile($objet)
{
if ($this->file)
@ -194,18 +226,27 @@ class File
return false;
}
function batiment_addObjet($objet, Planete $planete)
function batiment_addObjet($objet, Surface $planete)
{
//On vérifie que l'on ne dépasse pas la taille maximale de la file
if (Donnee::tailleFile($planete) <= count($this->file))
throw new ExceptionHB(1, 1);
//Validation des conditions de construction
if (!Donnee::neededBatiments($objet, $planete))
throw new ExceptionHB(1, 2);
if (is_a($planete, "Asteroide"))
{
if (!Donnee::neededAlli_Batiments($objet, $planete))
throw new ExceptionHB(1, 2);
}
else
{
if (!Donnee::neededBatiments($objet, $planete))
throw new ExceptionHB(1, 2);
}
//On vérifie qu'il reste suffisamment de place sur la planète
if ($planete->casesRest < count($this->file))
if (!is_a($planete, "Asteroide") && $planete->casesRest < count($this->file))
{
foreach($this->file as $argh)
throw new ExceptionHB(1, 0);
@ -219,12 +260,12 @@ class File
//Calcul du prochain niveau du batiment
if (in_array(array($objet, false), $this->file)) //Si le batiment est déjà en file d'attente, on recherche le prochain niveau à construire
{
$nbOccurence = 0;
$nbOccurence = 1;
foreach($this->file as $obj)
{
if ($obj[0] == $objet) $nbOccurence++;
}
$nextLvl = $planete->batiments[$objet] + 1 + $nbOccurence;
$nextLvl = $planete->batiments[$objet] + $nbOccurence;
}
else
$nextLvl = $planete->batiments[$objet] + 1;
@ -233,7 +274,7 @@ class File
$this->refreshTime();
//On vérifie qu'il y ait assez de ressources sur la planète
if ($planete->checkAndRetireRessources(Donnee::metalBatiments($objet, $nextLvl, $planete), Donnee::cristalBatiments($objet, $nextLvl, $planete), Donnee::hydrogeneBatiments($objet, $nextLvl, $planete), 0))
if ((!is_a($planete, "Asteroide") && $planete->checkAndRetireRessources(Donnee::metalBatiments($objet, $nextLvl, $planete), Donnee::cristalBatiments($objet, $nextLvl, $planete), Donnee::hydrogeneBatiments($objet, $nextLvl, $planete), 0)) || (is_a($planete, "Asteroide") && $planete->checkAndRetireRessources(0, 0, 0, Donnee::creditsAlli_Batiments($objet, $nextLvl, $planete))))
{
$this->file[] = array($objet, false);
$planete->addModif("file_bat");
@ -243,7 +284,7 @@ class File
throw new ExceptionHB(1, 4);
}
function batiment_addDemolition($objet, Planete $planete)
function batiment_addDemolition($objet, Surface $planete)
{
//On vérifie que l'on ne dépasse pas la taille maximale de la file
if (Donnee::tailleFile($planete) <= count($this->file))
@ -267,7 +308,7 @@ class File
return true;
}
function batiment_delObjet($id, Planete $planete)
function batiment_delObjet($id, Surface $planete)
{
//Vérification de l'existance de l'objet en file d'attente
if (empty($this->file[$id]))
@ -292,7 +333,7 @@ class File
$id = $key;
}
}
$lvlAnnule = $planete->batiments[$objet] + 1 + $occurence;
$lvlAnnule = $planete->batiments[$objet] + $occurence;
}
//On met à jour le temps si on vient d'annuler le premier batiment en lice
@ -301,8 +342,10 @@ class File
$planete->addModif("file_bat");
if (is_a($planete, "Asteroide") && !$this->file[$id][1])
$planete->addRessources(0, 0, 0, Donnee::creditsAlli_Batiments($objet, $lvlAnnule, $planete));
//On redonne 60% des ressources au joueur si c'est la première construction dans la file d'attente
if ($id == 0 && !$this->file[$id][1])
elseif ($id == 0 && !$this->file[$id][1])
$planete->addRessources(Donnee::metalBatiments($objet, $lvlAnnule, $planete)*0.6, Donnee::cristalBatiments($objet, $lvlAnnule, $planete)*0.6, Donnee::hydrogeneBatiments(abs($objet), $lvlAnnule, $planete)*0.6);
elseif (!$this->file[$id][1])
$planete->addRessources(Donnee::metalBatiments($objet, $lvlAnnule, $planete), Donnee::cristalBatiments($objet, $lvlAnnule, $planete), Donnee::hydrogeneBatiments($objet, $lvlAnnule, $planete));
@ -313,7 +356,7 @@ class File
return true;
}
function batiment_ready(Planete $planete)
function batiment_ready(Surface $planete)
{
//On vérifie qu'il existe un bâtiment en construction
if (count($this->file) < 1)
@ -332,13 +375,19 @@ class File
$lvl = $planete->batiments[$element[0]];
//Récupération de 60% du temps nécessaire
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete) * 0.6;
if (is_a($planete, "Asteroide"))
$temps = Donnee::tempsAlli_Batiments($element[0], $lvl, $planete) * 0.6;
else
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete) * 0.6;
//Si le temps écoulé est suffisant
if ($tempsEcoule >= $temps)
{
//On redonne 70% des ressources du batiment au joueur
$planete->addRessources(Donnee::metalBatiments($element[0], $lvl, $planete)*0.7, Donnee::cristalBatiments($element[0], $lvl, $planete)*0.7, Donnee::hydrogeneBatiments($element[0], $lvl, $planete)*0.7);
if (is_a($planete, "Asteroide"))
$planete->addRessources(Donnee::metalAlli_Batiments($element[0], $lvl, $planete)*0.7, Donnee::cristalAlli_Batiments($element[0], $lvl, $planete)*0.7, Donnee::hydrogeneAlli_Batiments($element[0], $lvl, $planete)*0.7, Donnee::creditsAlli_Batiments($element[0], $lvl, $planete)*0.7);
else
$planete->addRessources(Donnee::metalBatiments($element[0], $lvl, $planete)*0.7, Donnee::cristalBatiments($element[0], $lvl, $planete)*0.7, Donnee::hydrogeneBatiments($element[0], $lvl, $planete)*0.7);
//On retire un niveau au batiment
$planete->batiments[$element[0]]--;
@ -361,7 +410,10 @@ class File
$lvl = $planete->batiments[$element[0]] + 1;
//Récupération du temps nécessaire
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete);
if (is_a($planete, "Asteroide"))
$temps = Donnee::tempsAlli_Batiments($element[0], $lvl, $planete);
else
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete);
//Si le temps écoulé est suffisant
if ($tempsEcoule >= $temps)
@ -659,6 +711,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("casernes");
$planete->addModif("file_cas");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour cette unité, on annule toutes les suivantes
else
@ -689,6 +744,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("casernes");
$planete->addModif("file_cas");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour ce batiment, on annule tous les suivants
else
@ -879,6 +937,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("terrestres");
$planete->addModif("file_ter");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour cette unité, on annule toutes les suivantes
else
@ -909,6 +970,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("terrestres");
$planete->addModif("file_ter");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour ce batiment, on annule tous les suivants
else
@ -918,7 +982,7 @@ class File
}
function vaisseaux_addObjet($objet, $nombre, Planete $planete)
function vaisseaux_addObjet($objet, $nombre, Surface $planete)
{
//Vérification du nombre passé en entrée
if (!is_numeric($nombre) || $nombre < 0 || $nombre > 99999)
@ -979,7 +1043,7 @@ class File
throw new ExceptionHB(3, 4);
}
function vaisseaux_addDemolition($objet, $nombre, Planete $planete)
function vaisseaux_addDemolition($objet, $nombre, Surface $planete)
{
//On vérifie que l'on ne dépasse pas la taille maximale de la file
if (Donnee::tailleFile($planete) <= count($this->file))
@ -1018,7 +1082,7 @@ class File
return true;
}
function vaisseaux_delObjet($id, $nombre, Planete $planete)
function vaisseaux_delObjet($id, $nombre, Surface $planete)
{
//Vérification de l'existance de l'objet en file d'attente
if (empty($this->file[$id]))
@ -1036,10 +1100,10 @@ class File
if ($id == 0 && $nombreMax == $nombre)
$this->time = time();
$planete->addModif("file_ter");
$planete->addModif("file_vais");
if (!$this->file[$id][2])
$planete->addRessources(Donnee::metalVaisseaux($objet, $planete, $nombre), Donnee::cristalVaisseaux($objet, $planete, $nombre), Donnee::hydrogeneVaisseaux($objet, $planete, $nombre));
$planete->addRessources(Donnee::metalVaisseaux($objet, $planete, $nombre), Donnee::cristalVaisseaux($objet, $planete, $nombre), Donnee::hydrogeneVaisseaux($objet, $planete, $nombre), 0);
//Effacement de la file
if ($nombre >= $nombreMax)
@ -1051,7 +1115,7 @@ class File
return true;
}
function vaisseaux_ready(Planete $planete)
function vaisseaux_ready(Surface $planete)
{
//On vérifie qu'il existe une unité en construction
if (count($this->file) < 1)
@ -1084,7 +1148,7 @@ class File
if ($nbUnitee > 0)
{
//On redonne 70% des ressources de l'unité au joueur
$planete->addRessources(Donnee::metalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::cristalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::hydrogeneVaisseaux($element[0], $planete, $nbUnitee)*0.7);
$planete->addRessources(Donnee::metalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::cristalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::hydrogeneVaisseaux($element[0], $planete, $nbUnitee)*0.7, 0);
//On retire les unités
$planete->vaisseaux[$element[0]] -= $nbUnitee;
@ -1099,6 +1163,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("vaisseaux");
$planete->addModif("file_vais");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour cette unité, on annule toutes les suivantes
else
@ -1129,6 +1196,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("vaisseaux");
$planete->addModif("file_vais");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour ce batiment, on annule tous les suivants
else