forked from halo-battle/game
337 lines
10 KiB
PHP
337 lines
10 KiB
PHP
<?php
|
|
include_once("game/Class/class.surface.php");
|
|
/***************************************************************************
|
|
* class.asteroide.php
|
|
* ---------------------
|
|
* begin : Jeudi 25 décembre 2008
|
|
* update : Dimanche 4 janvier 2008
|
|
* email : nemunaire@gmail.com
|
|
*
|
|
*
|
|
***************************************************************************/
|
|
class Asteroide extends Surface
|
|
{
|
|
var $fondateur,
|
|
$sante,
|
|
$nom_alliance,
|
|
$tag,
|
|
$wing,
|
|
$nom_asteroide,
|
|
$image_asteroide,
|
|
$position = 5,
|
|
$cap = 123456789,
|
|
$credits_alliance,
|
|
$url_chat,
|
|
$url_forum,
|
|
$details = array();
|
|
|
|
/**
|
|
* Constructeur
|
|
* @param int $id id de la planète à importer
|
|
*
|
|
* @return void
|
|
* @access public
|
|
*/
|
|
function Asteroide($id = 0)
|
|
{
|
|
if (!empty($id)) {
|
|
global $table_alliances, $SESS;
|
|
global $alli_batimentVAR, $nomvaisnVAR;
|
|
$bdd = new bdd();
|
|
|
|
//On traite le cas où l'on envoie les coordonnées
|
|
if (is_numeric($id))
|
|
{
|
|
$plan = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
|
|
$bdd->deconnexion();
|
|
}
|
|
elseif (preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):?[Aa]?\]?$#', $id, $position))
|
|
{
|
|
$plan = $bdd->unique_query("SELECT * FROM $table_alliances WHERE galaxie = ".$position[1]." AND ss = ".$position[2].";");
|
|
$bdd->deconnexion();
|
|
}
|
|
else
|
|
die('Erreur #04 : Format de recherche d\'asteroide incorrect !');
|
|
|
|
if (!empty($plan))
|
|
{
|
|
$this->id = $plan["id"];
|
|
parent::User($SESS->values['id']); //On utilise le numéro d'utilisateur enregistré en session
|
|
$this->galaxie = $plan["galaxie"];
|
|
$this->ss = $plan["ss"];
|
|
$this->nom_asteroide = $plan["nom_asteroide"];
|
|
$this->image = $this->image_asteroide = $plan["image_asteroide"];
|
|
$this->debris_met = $plan["debris_met"];
|
|
$this->debris_cri = $plan["debris_cri"];
|
|
$this->metal = $plan["metal"];
|
|
$this->cristal = $plan["cristal"];
|
|
$this->hydrogene = $plan["hydrogene"];
|
|
$this->credits_alliance = $plan["credits_alliance"];
|
|
$this->fondateur = $plan["fondateur"];
|
|
$this->nom_alliance = $plan["nom_alliance"];
|
|
$this->wing = $plan["wing"];
|
|
$this->tag = $plan["tag"];
|
|
$this->url_forum = $plan["url_forum"];
|
|
$this->url_chat = $plan["url_chat"];
|
|
|
|
foreach($alli_batimentVAR as $bat)
|
|
$this->batiments[] = $plan[$bat];
|
|
if (!empty($plan["file_bat"]))
|
|
$this->file_bat = unserialize($plan["file_bat"]);
|
|
else
|
|
$this->file_bat = new File('alli_batiments');
|
|
|
|
foreach($nomvaisnVAR as $vais)
|
|
$this->vaisseaux[] = $plan[$vais];
|
|
if (!empty($plan["file_vais"]))
|
|
$this->file_vais = unserialize($plan["file_vais"]);
|
|
else
|
|
$this->file_vais = new File('vaisseaux');
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
function loadDetails()
|
|
{
|
|
global $table_alliances;
|
|
$bdd = new bdd();
|
|
$this->details = $bdd->unique_query("SELECT presentation, message_inscription, texte_interne, port_chat, chan_chat, image, etat_inscription, defcon, defcon_txt FROM $table_alliances WHERE id = ".$this->id.";");
|
|
$bdd->deconnexion();
|
|
}
|
|
|
|
function actualiser($actuFile = true, $first = false)
|
|
{
|
|
//Actualisation des files d'attentes
|
|
if ($actuFile)
|
|
{
|
|
$this->file_bat->batiment_ready($this);
|
|
$this->file_vais->vaisseaux_ready($this);
|
|
}
|
|
}
|
|
|
|
function checkAndRetireRessources($metal, $cristal, $hydrogene, $credits)
|
|
{
|
|
if ($this->metal >= $metal && $this->cristal >= $cristal && $this->hydrogene >= $hydrogene && $this->credits_alliance >= $credits)
|
|
{
|
|
$this->metal -= $metal;
|
|
$this->cristal -= $cristal;
|
|
$this->hydrogene -= $hydrogene;
|
|
$this->credits -= $credits;
|
|
|
|
$this->addModif("force");
|
|
$this->addModif("credits_alliance");
|
|
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}
|
|
|
|
function addRessources($metal, $cristal, $hydrogene, $credits)
|
|
{
|
|
$perte = 0;
|
|
|
|
$this->metal += $metal;
|
|
if ($this->metal > $this->cap)
|
|
{
|
|
$perte += $this->metal - $this->cap;
|
|
$this->metal = $this->cap;
|
|
}
|
|
|
|
$this->cristal += $cristal;
|
|
if ($this->cristal > $this->cap)
|
|
{
|
|
$perte += $this->cristal - $this->cap;
|
|
$this->cristal = $this->cap;
|
|
}
|
|
|
|
$this->hydrogene += $hydrogene;
|
|
if ($this->hydrogene > $this->cap)
|
|
{
|
|
$perte += $this->hydrogene - $this->cap;
|
|
$this->hydrogene = $this->cap;
|
|
}
|
|
|
|
$this->hydrogecredits_alliancene += $credits;
|
|
|
|
$this->addModif("force");
|
|
$this->addModif("credits_alliance");
|
|
|
|
return $perte;
|
|
}
|
|
|
|
function addCreditsAlliance($credits)
|
|
{
|
|
$this->credits_alliance += $credits;
|
|
$this->addModif("credits_alliance");
|
|
|
|
return 0;
|
|
}
|
|
|
|
function creer($fondateur, $mere = false)
|
|
{
|
|
global $VAR, $table_alliances_creation;
|
|
|
|
$bdd = new BDD();
|
|
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE fondateur = ".$fondateur->id_user." LIMIT 1;");
|
|
$bdd->deconnexion();
|
|
|
|
//On vérifie que l'alliance n'a pas déjà été créée
|
|
if (empty($alliance))
|
|
return 1;
|
|
|
|
//Définition des paramètres de l'utilisateur pour l'astéroide
|
|
$this->fondateur = $alliance["fondateur"];
|
|
$this->race = $fondateur->race;
|
|
|
|
//Génération du nombre de case et de l'image en fonction de la position dans le système
|
|
$this->sante = 1;
|
|
$this->nom_alliance = $alliance["nom_alliance"];
|
|
$this->tag = $alliance["tag"];
|
|
$this->nom_asteroide = $alliance["nom_alliance"];
|
|
$this->image_asteroide = mt_rand(1,3);
|
|
|
|
$this->modif = array("fondateur", "race", "nom_alliance", "galaxie", "ss", "tag", "nom_asteroide", "image_asteroide");
|
|
}
|
|
|
|
/**
|
|
* Destructeur
|
|
*
|
|
* @return void
|
|
* @access public
|
|
*/
|
|
function __destruct()
|
|
{
|
|
if (empty($this->ss) || empty($this->fondateur))
|
|
return;
|
|
|
|
global $table_alliances;
|
|
if (empty($this->id))
|
|
{
|
|
$out1 = array(); $out2 = array();
|
|
$bdd = new bdd();
|
|
foreach($this->modif as $modif)
|
|
{
|
|
if ($modif == "force")
|
|
continue;
|
|
elseif (!is_array($this->{$modif}))
|
|
{
|
|
$bdd->escape($this->{$modif});
|
|
$out1[] = $modif;
|
|
if (is_int($this->{$modif}) || is_float($this->{$modif}))
|
|
$out2[] = $this->{$modif};
|
|
else
|
|
$out2[] = "'".$this->{$modif}."'";
|
|
}
|
|
else
|
|
{
|
|
if (is_array($this->{$modif}) && $modif != "coeff_bat" && $modif != "vaisseaux" && $modif != "terrestres" && $modif != "casernes" && $modif != "technologies" && $modif != "batiments")
|
|
{
|
|
$prep = serialize($this->{$modif});
|
|
$bdd->escape($prep);
|
|
$out1[] = $modif;
|
|
$out2[] = "'$prep'";
|
|
}
|
|
else
|
|
{
|
|
if ($modif == "batiments")
|
|
$calc = "batiment";
|
|
elseif ($modif == "technologies")
|
|
$calc = "technolo";
|
|
elseif ($modif == "casernes")
|
|
$calc = "casernen";
|
|
elseif ($modif == "terrestres")
|
|
$calc = "nomterrn";
|
|
elseif ($modif == "vaisseaux")
|
|
$calc = "nomvaisn";
|
|
elseif ($modif == "coeff_bat")
|
|
$calc = "coeff";
|
|
|
|
if (!isset(${$calc.'VAR'}))
|
|
global ${$calc.'VAR'};
|
|
|
|
foreach($this->{$modif} as $j => $value)
|
|
{
|
|
$out1[] = ${$calc.'VAR'}[$j];
|
|
$out2[] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$bdd->query("INSERT INTO $table_alliances (".implode(', ', $out1).") VALUES (".implode(', ', $out2).")");
|
|
$bdd->deconnexion();
|
|
}
|
|
else
|
|
{
|
|
$nb = count($this->modif);
|
|
$out = array();
|
|
$bdd = new bdd();
|
|
for($i = 0; $i < $nb; $i++)
|
|
{
|
|
if ($this->modif[$i] == "force")
|
|
$out[] = "metal = ".$this->metal.", cristal = ".$this->cristal.", hydrogene = ".$this->hydrogene;
|
|
elseif ($this->modif[$i] == 'technologies')
|
|
$this->modifUser[] = $this->modif[$i];
|
|
elseif (is_object($this->{$this->modif[$i]}))
|
|
{
|
|
$export = serialize($this->{$this->modif[$i]});
|
|
$bdd->escape($export);
|
|
$out[] = $this->modif[$i]." = '".$export."'";
|
|
}
|
|
elseif (!is_array($this->{$this->modif[$i]}))
|
|
{
|
|
$bdd->escape($this->{$this->modif[$i]});
|
|
if (is_int($this->{$this->modif[$i]}) || is_float($this->{$this->modif[$i]}))
|
|
$out[] = $this->modif[$i]." = ".$this->{$this->modif[$i]};
|
|
else
|
|
$out[] = $this->modif[$i]." = '".$this->{$this->modif[$i]}."'";
|
|
}
|
|
else
|
|
{
|
|
if (is_array($this->{$this->modif[$i]}) && $this->modif[$i] != "coeff_bat" && $this->modif[$i] != "vaisseaux" && $this->modif[$i] != "terrestres" && $this->modif[$i] != "casernes" && $this->modif[$i] != "technologies" && $this->modif[$i] != "batiments")
|
|
{
|
|
$prep = serialize($this->{$this->modif[$i]});
|
|
$bdd->escape($prep);
|
|
$out[] = $this->modif[$i]." = '$prep'";
|
|
}
|
|
else
|
|
{
|
|
if ($this->modif[$i] == "batiments")
|
|
$calc = "alli_batiment";
|
|
elseif ($this->modif[$i] == "technologies")
|
|
$calc = "technolo";
|
|
elseif ($this->modif[$i] == "casernes")
|
|
$calc = "casernen";
|
|
elseif ($this->modif[$i] == "terrestres")
|
|
$calc = "nomterrn";
|
|
elseif ($this->modif[$i] == "vaisseaux")
|
|
$calc = "nomvaisn";
|
|
elseif ($this->modif[$i] == "coeff_bat")
|
|
$calc = "coeff";
|
|
|
|
if (!isset(${$calc.'VAR'}))
|
|
global ${$calc.'VAR'};
|
|
|
|
$nombr = count(${$calc.'VAR'});
|
|
for($j = 0; $j < $nombr; $j++)
|
|
{
|
|
$bdd->escape($this->{$this->modif[$i]}[$j]);
|
|
$out[] = ${$calc.'VAR'}[$j]." = ".$this->{$this->modif[$i]}[$j]."";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!empty($out))
|
|
{
|
|
$sql = "UPDATE $table_alliances SET ".implode(', ', $out)." WHERE id = ".$this->id.";";
|
|
if (DEBUG) echo '<br /><br />'.$sql;
|
|
$bdd->query($sql);
|
|
}
|
|
|
|
$bdd->deconnexion();
|
|
parent::__destruct();
|
|
}
|
|
}
|
|
}
|
|
?>
|