forked from halo-battle/game
Version 1.13a
This commit is contained in:
parent
de31cd3e9a
commit
ba8f323879
1634 changed files with 10080 additions and 213021 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue