forked from halo-battle/game
1455 lines
46 KiB
PHP
1455 lines
46 KiB
PHP
<?php
|
|
/***************************************************************************
|
|
* class.var.php
|
|
* ---------------
|
|
* begin : Jeudi 29 janvier 2009
|
|
* update : Vendredi 27 février 2009
|
|
* email : nemunaire@gmail.com
|
|
*
|
|
*
|
|
***************************************************************************/
|
|
class Donnee
|
|
{
|
|
static function tailleFile(Planete $planete)
|
|
{
|
|
//On calcul la taille maximale de la file d'attente
|
|
if (!empty($planete->technologies[1]))
|
|
{
|
|
if (($planete->technologies[1] &131072) == 131072) return 5;
|
|
elseif (($planete->technologies[1] &65536) == 65536) return 4;
|
|
elseif (($planete->technologies[1] &32768) == 32768) return 3;
|
|
else return 2;
|
|
}
|
|
else return 3; //Au cas où il n'y ait pas de technologie sur le lieu, on fixe la taille de la file d'attente
|
|
}
|
|
|
|
|
|
static function neededCheck($tableau, Planete $planete)
|
|
{
|
|
if (!is_array($tableau)) return true;
|
|
else
|
|
{
|
|
foreach ($tableau as $need)
|
|
{
|
|
switch($need[0])
|
|
{
|
|
case 'batiments':
|
|
if ($planete->batiments[$need[1]] < $need[2])
|
|
return false;
|
|
break;
|
|
case 'technologies':
|
|
if (((int)$planete->technologies[$need[1]]& $need[3]) != $need[3])
|
|
return false;
|
|
break;
|
|
case 'casernes':
|
|
if ($planete->casernes[$need[1]] < $need[2])
|
|
return false;
|
|
break;
|
|
case 'terrestres':
|
|
if ($planete->terrestres[$need[1]] < $need[2])
|
|
return false;
|
|
break;
|
|
case 'vaisseaux':
|
|
if ($planete->vaisseaux[$need[1]] < $need[2])
|
|
return false;
|
|
break;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
|
|
static function print_neededCheck($tableau, Planete $planete, $race)
|
|
{
|
|
global $LANG;
|
|
if (!is_array($tableau)) return 'Débloqué';
|
|
else
|
|
{
|
|
$return = '';
|
|
foreach ($tableau as $need)
|
|
{
|
|
switch($need[0])
|
|
{
|
|
case 'batiments':
|
|
if ($planete->batiments[$need[1]] < $need[2])
|
|
$return .= '<span class="lack">'.ucfirst($LANG[$race]["batiments"]["noms_sing"][$need[1]]).' niveau '.$need[2].' (batiment)</span><br />';
|
|
else
|
|
$return .= ucfirst($LANG[$race]["batiments"]["noms_sing"][$need[1]]).' niveau '.$need[2].' (batiment)<br />';
|
|
break;
|
|
case 'technologies':
|
|
if (((int)$planete->technologies[$need[1]]& $need[3]) != $need[3])
|
|
$return .= '<span class="lack">'.$LANG[$race]["technologies"]["noms_sing"][$need[1]][$need[2]].' (technologie)</span><br />';
|
|
else
|
|
$return .= $LANG[$race]["technologies"]["noms_sing"][$need[1]][$need[2]].' (technologie)<br />';
|
|
break;
|
|
case 'casernes':
|
|
if ($planete->casernes[$need[1]] < $need[2])
|
|
$return .= '<span class="lack">'.$need[2].' '.$LANG[$race]["caserne"]["noms_pluriel"][$need[1]].' (unité de la caserne)</span><br />';
|
|
else
|
|
$return .= $need[2].' '.$LANG[$race]["caserne"]["noms_pluriel"][$need[1]].' (unité de la caserne)<br />';
|
|
break;
|
|
case 'terrestres':
|
|
if ($planete->terrestres[$need[1]] < $need[2])
|
|
$return .= '<span class="lack">'.$need[2].' '.$LANG[$race]["terrestre"]["noms_pluriel"][$need[1]].' (unité du chantier terrestre)</span><br />';
|
|
else
|
|
$return .= $need[2].' '.$LANG[$race]["terrestre"]["noms_pluriel"][$need[1]].' (unité du chantier terrestre)<br />';
|
|
break;
|
|
case 'vaisseaux':
|
|
if ($planete->vaisseaux[$need[1]] < $need[2])
|
|
$return .= '<span class="lack">'.$need[2].' '.$LANG[$race]["vaisseaux"]["noms_pluriel"][$need[1]].' (unité du chantier spatial)</span><br />';
|
|
else
|
|
$return .= $need[2].' '.$LANG[$race]["vaisseaux"]["noms_pluriel"][$need[1]].' (unité du chantier spatial)<br />';
|
|
break;
|
|
}
|
|
}
|
|
return $return;
|
|
}
|
|
}
|
|
|
|
|
|
static function metalBatiments($batiment, $niveau, Planete $planete)
|
|
{
|
|
switch($batiment)
|
|
{
|
|
case 0:
|
|
$metal = ceil(pow(1.5, $niveau)*68);
|
|
break;
|
|
case 1:
|
|
$metal = ceil(pow(1.6, $niveau)*53);
|
|
break;
|
|
case 2:
|
|
$metal = ceil(pow(1.5, $niveau)*242);
|
|
break;
|
|
case 3:
|
|
$metal = ceil(pow(1.5, $niveau)*92);
|
|
break;
|
|
case 4:
|
|
$metal = ceil(pow(1.73, $niveau)*800);
|
|
break;
|
|
case 5:
|
|
$metal = ceil(pow(2, $niveau)*750);
|
|
break;
|
|
case 6:
|
|
$metal = ceil(pow(2, $niveau)*200);
|
|
break;
|
|
case 7:
|
|
$metal = ceil(pow(2, $niveau)*520);
|
|
break;
|
|
case 8:
|
|
$metal = ceil(pow(2, $niveau)*600);
|
|
break;
|
|
case 9:
|
|
$metal = ceil(pow(2, $niveau)*200);
|
|
break;
|
|
case 10:
|
|
$metal = ceil(pow(2, $niveau)*400);
|
|
break;
|
|
case 11:
|
|
$metal = ceil(pow(1.7, $niveau)*600);
|
|
break;
|
|
|
|
case 12:
|
|
$metal = ceil(pow($niveau, 2.075)*1000+1500);
|
|
break;
|
|
case 13:
|
|
$metal = ceil(pow($niveau,2.8)*1000+299000);
|
|
break;
|
|
case 14:
|
|
$metal = ceil(pow($niveau, 2)*1200+140000);
|
|
break;
|
|
case 15:
|
|
$metal = ceil(pow($niveau, 2)*1000+80000);
|
|
break;
|
|
case 16:
|
|
$metal = ceil(pow($niveau, 2)*850+60000);
|
|
break;
|
|
case 17:
|
|
$metal = ceil(pow($niveau, 2.5)*500 -300);
|
|
break;
|
|
default:
|
|
trigger_error("Batiment ".$batiment." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
//Bonus technologique pour les mines
|
|
if ($batiment <= 3)
|
|
{
|
|
if ($planete->technologies[0] &262144)
|
|
{
|
|
$metal *= 0.85;
|
|
}
|
|
elseif ($planete->technologies[0] &131072)
|
|
{
|
|
$metal *= 0.9;
|
|
}
|
|
elseif ($planete->technologies[0] &65536)
|
|
{
|
|
$metal *= 0.95;
|
|
}
|
|
}
|
|
|
|
return $metal;
|
|
}
|
|
|
|
static function cristalBatiments($batiment, $niveau, Planete $planete)
|
|
{
|
|
switch($batiment)
|
|
{
|
|
case 0:
|
|
$cristal = ceil(pow(1.5, $niveau)*17);
|
|
break;
|
|
case 1:
|
|
$cristal = ceil(pow(1.6, $niveau)*27);
|
|
break;
|
|
case 2:
|
|
$cristal = ceil(pow(1.5, $niveau)*72);
|
|
break;
|
|
case 3:
|
|
$cristal = ceil(pow(1.5, $niveau)*37);
|
|
break;
|
|
case 4:
|
|
$cristal = ceil(pow(1.73, $niveau)*420);
|
|
break;
|
|
case 5:
|
|
$cristal = ceil(pow(2, $niveau)*500);
|
|
break;
|
|
case 6:
|
|
$cristal = ceil(pow(2, $niveau)*150);
|
|
break;
|
|
case 7:
|
|
$cristal = ceil(pow(2, $niveau)*380);
|
|
break;
|
|
case 8:
|
|
$cristal = ceil(pow(2, $niveau)*450);
|
|
break;
|
|
case 9:
|
|
$cristal = ceil(pow(2, $niveau)*100);
|
|
break;
|
|
case 10:
|
|
$cristal = ceil(pow(2, $niveau)*260);
|
|
break;
|
|
case 11:
|
|
$cristal = ceil(pow(1.7, $niveau)*420);
|
|
break;
|
|
|
|
case 12:
|
|
$cristal = ceil(pow($niveau, 1.8)*1000+1000);
|
|
break;
|
|
case 13:
|
|
$cristal = ceil(pow($niveau,2.5)*1000+149000);
|
|
break;
|
|
case 14:
|
|
$cristal = ceil(pow($niveau, 2)*900+99000);
|
|
break;
|
|
case 15:
|
|
$cristal = ceil(pow($niveau, 2)*750+65000);
|
|
break;
|
|
case 16:
|
|
$cristal = ceil(pow($niveau, 2)*650+50000);
|
|
break;
|
|
case 17:
|
|
$cristal = ceil(pow($niveau, 2.4)*400-250);
|
|
break;
|
|
default:
|
|
trigger_error("Batiment ".$batiment." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
//Bonus technologique pour les mines
|
|
if ($batiment <= 3)
|
|
{
|
|
if ($planete->technologies[0] &262144)
|
|
{
|
|
$cristal *= 0.85;
|
|
}
|
|
elseif ($planete->technologies[0] &131072)
|
|
{
|
|
$cristal *= 0.9;
|
|
}
|
|
elseif ($planete->technologies[0] &65536)
|
|
{
|
|
$cristal *= 0.95;
|
|
}
|
|
}
|
|
|
|
return $cristal;
|
|
}
|
|
|
|
|
|
static function hydrogeneBatiments($batiment, $niveau, Planete $planete)
|
|
{
|
|
switch($batiment)
|
|
{
|
|
case 0:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 1:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 2:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 3:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 4:
|
|
$hydrogene = ceil(pow(1.68, $niveau)*285);
|
|
break;
|
|
case 5:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 6:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 7:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 8:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 9:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 10:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 11:
|
|
$hydrogene = ceil(pow(1.7, $niveau)*100);
|
|
break;
|
|
|
|
case 12:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 13:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 14:
|
|
$hydrogene = ceil(pow($niveau, 2)*500+30000);
|
|
break;
|
|
case 15:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 16:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 17:
|
|
$hydrogene = 0;
|
|
break;
|
|
default:
|
|
trigger_error("Batiment ".$batiment." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
//Bonus technologique pour les mines
|
|
if ($batiment <= 3)
|
|
{
|
|
if ($planete->technologies[0] &262144)
|
|
{
|
|
$hydrogene *= 0.85;
|
|
}
|
|
elseif ($planete->technologies[0] &131072)
|
|
{
|
|
$hydrogene *= 0.9;
|
|
}
|
|
elseif ($planete->technologies[0] &65536)
|
|
{
|
|
$hydrogene *= 0.95;
|
|
}
|
|
}
|
|
|
|
return $hydrogene;
|
|
}
|
|
|
|
static function tempsBatiments($batiment, $niveau, Planete $planete)
|
|
{
|
|
switch($batiment)
|
|
{
|
|
case 0:
|
|
$sec = pow(1.5, $niveau)*6;
|
|
break;
|
|
case 1:
|
|
$sec = pow(1.55, $niveau)*6;
|
|
break;
|
|
case 2:
|
|
$sec = pow(1.624, $niveau)*6;
|
|
break;
|
|
case 3:
|
|
$sec = pow(1.597, $niveau)*6;
|
|
break;
|
|
case 4:
|
|
$sec = pow(1.7, $niveau)*6;
|
|
break;
|
|
case 5:
|
|
$sec = ceil(pow(2, $niveau)*720);
|
|
break;
|
|
case 6:
|
|
$sec = ceil(pow(2, $niveau)*720);
|
|
break;
|
|
case 7:
|
|
$sec = ceil(pow(2, $niveau)*420);
|
|
break;
|
|
case 8:
|
|
$sec = ceil(pow(2, $niveau)*600);
|
|
break;
|
|
case 9:
|
|
$sec = ceil(pow(2, $niveau)*300);
|
|
break;
|
|
case 10:
|
|
$sec = ceil(pow(2, $niveau)*1200);
|
|
break;
|
|
case 11:
|
|
$sec = ceil((pow(1.9, $niveau)*800));
|
|
break;
|
|
|
|
case 12:
|
|
$sec = ceil(pow($niveau, 2.5)*60+4)*60;
|
|
break;
|
|
case 13:
|
|
$sec = ceil(pow($niveau, 1.6)*60+60)*60;
|
|
break;
|
|
case 14:
|
|
$sec = ceil(pow($niveau, 2)*5+3)*60;
|
|
break;
|
|
case 15:
|
|
$sec = pow($niveau, 2)*240;
|
|
break;
|
|
case 16:
|
|
$sec = pow($niveau, 2)*180;
|
|
break;
|
|
case 17:
|
|
$sec = pow($niveau, 1.65)*3600;
|
|
break;
|
|
default:
|
|
trigger_error("Batiment ".$batiment." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On applique le bonus de temps des ingénieurs et des centrales informatiques
|
|
if ($batiment == 11 && $planete->casernes[7])
|
|
$sec /= 0.0025 * $planete->casernes[7];
|
|
elseif ($planete->casernes[7])
|
|
$sec /= pow(1.23, $planete->batiments[11]) + 0.0025 * $planete->casernes[7];
|
|
|
|
//Accélération du temps de construction
|
|
$sec /= VITESSE;
|
|
|
|
return $sec;
|
|
}
|
|
|
|
|
|
static function neededBatiments($batiment, Planete $planete)
|
|
{
|
|
global $neededBatiments;
|
|
return Donnee::neededCheck($neededBatiments[$batiment], $planete);
|
|
}
|
|
|
|
static function print_neededBatiments($batiment, Planete $planete, $race)
|
|
{
|
|
global $neededBatiments;
|
|
return Donnee::print_neededCheck($neededBatiments[$batiment], $planete, $race);
|
|
}
|
|
|
|
|
|
static function donneeTechnologie($branche, $idTechnologie, $retour, Planete $planete)
|
|
{
|
|
//TODO : Faire un switch pour ne renvoyer le tableau que de la branche plutôt que ce tableau avec l'intégralité des branches.
|
|
$technologies_donnees = array(
|
|
//Industrie
|
|
array(
|
|
array(1, 0, 1000, 54000),
|
|
array(2, 1, 2000, 90000),
|
|
array(4, 3, 4000, 126000),
|
|
array(8, 1, 4000, 126000),
|
|
array(16, 1, 2000, 72000),
|
|
array(32, 17, 4000, 108000),
|
|
array(64, 49, 8000, 144000),
|
|
array(128, 1, 2000, 72000),
|
|
array(256, 129, 4000, 108000),
|
|
array(512, 385, 8000, 144000),
|
|
array(1024, 1, 2000, 72000),
|
|
array(2048, 1025, 4000, 108000),
|
|
array(4096, 3073, 8000, 144000),
|
|
array(8192, 9, 3000, 126000),
|
|
array(16384, 8201, 6000, 162000),
|
|
array(32768, 24585, 12000, 198000),
|
|
array(65536, 1169, 3000, 126000),
|
|
array(131072, 66705, 6000, 162000),
|
|
array(262144, 197777, 12000, 198000)
|
|
),
|
|
//Ingénieurie
|
|
array(
|
|
array(1, 0, 1000, 54000),
|
|
array(2, 1, 2000, 90000),
|
|
array(4, 3, 4000, 126000),
|
|
array(8, 1, 2000, 90000),
|
|
array(16, 9, 4000, 126000),
|
|
array(32, 25, 8000, 162000),
|
|
array(64, 9, 3000, 126000),
|
|
array(128, 73, 6000, 162000),
|
|
array(256, 201, 12000, 198000),
|
|
array(512, 73, 4000, 162000),
|
|
array(1024, 585, 8000, 198000),
|
|
array(2048, 1609, 16000, 234000),
|
|
array(4096, 0, 1000, 54000),
|
|
array(8192, 4096, 2000, 90000),
|
|
array(16384, 12288, 4000, 126000),
|
|
array(32768, 4096, 2000, 54000),
|
|
array(65536, 36864, 4000, 90000),
|
|
array(131072, 102400, 8000, 126000),
|
|
array(262144, 12288, 2000, 72000),
|
|
array(524288, 274432, 4000, 108000),
|
|
array(1048576, 798720, 8000, 144000),
|
|
array(2097152, 274432, 2000, 54000),
|
|
array(4194304, 2371584, 4000, 90000),
|
|
array(8388608, 6565888, 8000, 126000),
|
|
array(16777216, 28672, 2000, 54000),
|
|
array(33554432, 16805888, 4000, 90000),
|
|
array(67108864, 50360320, 8000, 126000),
|
|
array(134217728, 28672, 3000, 90000),
|
|
array(268435456, 134246400, 6000, 126000),
|
|
array(536870912, 402681856, 12000, 162000)
|
|
),
|
|
//Ingénieurie 2
|
|
array(
|
|
array(1, 0, 1000, 36000),
|
|
array(2, 1, 2000, 72000),
|
|
array(4, 3, 4000, 108000),
|
|
array(8, 1, 4000, 126000),
|
|
array(16, 1, 4000, 126000),
|
|
array(32, 25, 4000, 126000),
|
|
array(64, 57, 8000, 162000),
|
|
array(128, 121, 16000, 198000)
|
|
),
|
|
//Politique
|
|
array(
|
|
array(1, 0, 1000, 36000),
|
|
array(2, 1, 2000, 72000),
|
|
array(4, 3, 4000, 108000),
|
|
array(8, 1, 2000, 72000),
|
|
array(16, 9, 4000, 108000),
|
|
array(32, 25, 8000, 144000),
|
|
array(64, 9, 4000, 126000),
|
|
array(128, 8, 6000, 162000),
|
|
array(256, 9, 6000, 162000),
|
|
array(512, 0, 1000, 90000),
|
|
array(1024, 512, 2000, 90000),
|
|
array(2048, 1536, 4000, 90000),
|
|
array(4096, 512, 2000, 72000),
|
|
array(8192, 4608, 4000, 108000),
|
|
array(16384, 12800, 8000, 144000)
|
|
),
|
|
|
|
//Armement
|
|
array(
|
|
array(1, 0, 1000, 36000),
|
|
array(2, 1, 2000, 72000),
|
|
array(4, 3, 4000, 108000),
|
|
array(8, 1, 1000, 54000),
|
|
array(16, 9, 2000, 90000),
|
|
array(32, 25, 4000, 126000),
|
|
array(64, 9, 2000, 72000),
|
|
array(128, 73, 4000, 108000),
|
|
array(256, 201, 8000, 144000),
|
|
array(512, 73, 2000, 90000),
|
|
array(1024, 585, 4000, 126000),
|
|
array(2048, 1609, 8000, 162000),
|
|
array(4096, 1, 3000, 108000),
|
|
array(8192, 4097, 6000, 144000),
|
|
array(16384, 12289, 12000, 180000),
|
|
array(32768, 4097, 3000, 126000),
|
|
array(65536, 36865, 6000, 162000),
|
|
array(131072, 102401, 12000, 198000)
|
|
),
|
|
//Défense
|
|
array(
|
|
array(1, 0, 1000, 36000),
|
|
array(2, 1, 2000, 72000),
|
|
array(4, 3, 4000, 108000),
|
|
array(8, 1, 2000, 72000),
|
|
array(16, 9, 4000, 108000),
|
|
array(32, 25, 8000, 144000),
|
|
array(64, 9, 3000, 108000),
|
|
array(128, 73, 6000, 144000),
|
|
array(256, 201, 12000, 180000),
|
|
array(512, 0, 1000, 36000),
|
|
array(1024, 512, 2000, 72000),
|
|
array(2048, 1536, 4000, 108000),
|
|
array(4096, 512, 2000, 72000),
|
|
array(8192, 4608, 4000, 108000),
|
|
array(16384, 12800, 8000, 144000),
|
|
array(32768, 4608, 3000, 108000),
|
|
array(65536, 37376, 6000, 144000),
|
|
array(131072, 102912, 12000, 180000),
|
|
array(262144, 512, 1000, 54000),
|
|
array(524288, 262656, 2000, 90000),
|
|
array(1048576, 786944, 4000, 126000),
|
|
array(2097152, 262656, 2000, 90000),
|
|
array(4194304, 2359808, 4000, 126000),
|
|
array(8388608, 6554112, 8000, 162000),
|
|
array(16777216, 2359808, 3000, 126000),
|
|
array(33554432, 19137024, 6000, 162000),
|
|
array(67108864, 52691456, 12000, 198000)
|
|
),
|
|
//Défense 2
|
|
array(
|
|
array(1, 0, 2000, 72000),
|
|
array(2, 1, 4000, 144000),
|
|
array(4, 3, 6000, 216000),
|
|
array(8, 0, 2000, 72000),
|
|
array(16, 8, 4000, 144000),
|
|
array(32, 24, 6000, 216000),
|
|
array(64, 27, 8000, 288000)
|
|
),
|
|
//Projets expérimentaux
|
|
array(
|
|
array(1, 0, 2000, 36000),
|
|
array(2, 1, 4000, 72000),
|
|
array(4, 2, 4000, 108000),
|
|
array(8, 4, 6000, 144000),
|
|
array(16, 8, 6000, 144000),
|
|
array(32, 8, 8000, 180000),
|
|
array(64, 32, 10000, 216000),
|
|
array(128, 64, 10000, 234000),
|
|
array(256, 128, 12000, 288000),
|
|
array(512, 256, 14000, 324000),
|
|
array(1024, 64, 14000, 342000),
|
|
array(2048, 256, 16000, 360000),
|
|
array(4096, 576, 18000, 396000),
|
|
array(8192, 4096, 20000, 432000),
|
|
array(16384, 8192, 22000, 504000)
|
|
),
|
|
//Technologie expansion
|
|
array(
|
|
array(1, 0, 4000, 54000),
|
|
array(2, 1, 6000, 72000),
|
|
array(4, 3, 8000, 90000),
|
|
array(8, 7, 10000, 108000),
|
|
array(16, 15, 12000, 126000),
|
|
array(32, 31, 14000, 144000),
|
|
array(64, 63, 16000, 162000),
|
|
array(128, 127, 18000, 180000),
|
|
array(256, 255, 20000, 198000),
|
|
array(512, 511, 22000, 216000),
|
|
array(1024, 1023, 24000, 234000),
|
|
array(2048, 2047, 26000, 252000),
|
|
array(4096, 4095, 28000, 270000),
|
|
array(8192, 8191, 30000, 288000),
|
|
array(16384, 16383, 32000, 306000),
|
|
array(32768, 32767, 34000, 324000),
|
|
array(65536, 65535, 36000, 342000),
|
|
array(131072, 131071, 38000, 360000)
|
|
)
|
|
);
|
|
|
|
if ($retour == "metal") return 0;
|
|
elseif ($retour == "cristal") return 0;
|
|
elseif ($retour == "hydrogene") return 0;
|
|
elseif ($retour == "credits") return $technologies_donnees[$branche][$idTechnologie][2];
|
|
elseif ($retour == "temps") return $technologies_donnees[$branche][$idTechnologie][3]/VITESSE;
|
|
elseif ($retour == "needed") return $technologies_donnees[$branche][$idTechnologie][1];
|
|
elseif ($retour == "id") return $technologies_donnees[$branche][$idTechnologie][0];
|
|
elseif ($retour == "array") return array(0, 0, 0, $technologies_donnees[$branche][$idTechnologie][2], $technologies_donnees[$branche][$idTechnologie][3]/VITESSE);
|
|
}
|
|
|
|
static function metalTechnologie($branche, $idTechnologie, Planete $planete)
|
|
{
|
|
return Donnee::donneeTechnologie($branche, $idTechnologie, "metal", $planete);
|
|
}
|
|
|
|
static function cristalTechnologie($branche, $idTechnologie, Planete $planete)
|
|
{
|
|
return Donnee::donneeTechnologie($branche, $idTechnologie, "cristal", $planete);
|
|
}
|
|
|
|
static function hydrogeneTechnologie($branche, $idTechnologie, Planete $planete)
|
|
{
|
|
return Donnee::donneeTechnologie($branche, $idTechnologie, "hydrogene", $planete);
|
|
}
|
|
|
|
static function creditsTechnologie($branche, $idTechnologie, Planete $planete)
|
|
{
|
|
return Donnee::donneeTechnologie($branche, $idTechnologie, "credits", $planete);
|
|
}
|
|
|
|
static function tempsTechnologie($branche, $idTechnologie, Planete $planete)
|
|
{
|
|
return Donnee::donneeTechnologie($branche, $idTechnologie, "temps", $planete);
|
|
}
|
|
|
|
static function idTechnologie($branche, $idTechnologie, Planete $planete)
|
|
{
|
|
return Donnee::donneeTechnologie($branche, $idTechnologie, "id", $planete);
|
|
}
|
|
|
|
static function neededTechnologie($branche, $idTechnologie, Planete $planete)
|
|
{
|
|
$neededTechnologies = Donnee::donneeTechnologie($branche, $idTechnologie, "needed", $planete);
|
|
if (empty($neededTechnologies)) return true;
|
|
if (is_array($neededTechnologies))
|
|
{
|
|
//TODO prévoir le besoin de plus d'une technologie pour la validation, dans une autre branche, batiment (?) ...
|
|
die('TODO '.__LINE__.' in '.__FILE__);
|
|
}
|
|
else
|
|
{
|
|
if (((int)$planete->technologies[$branche]& $neededTechnologies) == $neededTechnologies)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
}
|
|
|
|
static function metalCaserne($unite, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($unite)
|
|
{
|
|
case 0:
|
|
$metal = 80;
|
|
break;
|
|
case 1:
|
|
$metal = 110;
|
|
break;
|
|
case 2:
|
|
$metal = 150;
|
|
break;
|
|
case 3:
|
|
$metal = 220;
|
|
break;
|
|
case 4:
|
|
$metal = 180;
|
|
break;
|
|
case 5:
|
|
$metal = 25000;
|
|
break;
|
|
case 6:
|
|
$metal = 100;
|
|
break;
|
|
case 7:
|
|
$metal = 90;
|
|
break;
|
|
case 8:
|
|
$metal = 300;
|
|
break;
|
|
default:
|
|
trigger_error("Unité ".$unite." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
if (isset($planete->politique) && $planete->politique == 1)
|
|
$metal *= 0.9;
|
|
|
|
return $metal * $nombre;
|
|
}
|
|
|
|
static function cristalCaserne($unite, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($unite)
|
|
{
|
|
case 0:
|
|
$cristal = 45;
|
|
break;
|
|
case 1:
|
|
$cristal = 90;
|
|
break;
|
|
case 2:
|
|
$cristal = 105;
|
|
break;
|
|
case 3:
|
|
$cristal = 150;
|
|
break;
|
|
case 4:
|
|
$cristal = 100;
|
|
break;
|
|
case 5:
|
|
$cristal = 10000;
|
|
break;
|
|
case 6:
|
|
$cristal = 100;
|
|
break;
|
|
case 7:
|
|
$cristal = 105;
|
|
break;
|
|
case 8:
|
|
$cristal = 250;
|
|
break;
|
|
default:
|
|
trigger_error("Unité ".$unite." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
if (isset($planete->politique) && $planete->politique == 1)
|
|
$cristal *= 0.9;
|
|
|
|
return $cristal * $nombre;
|
|
}
|
|
|
|
static function hydrogeneCaserne($unite, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($unite)
|
|
{
|
|
case 0:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 1:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 2:
|
|
$hydrogene = 20;
|
|
break;
|
|
case 3:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 4:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 5:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 6:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 7:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 8:
|
|
$hydrogene = 0;
|
|
break;
|
|
default:
|
|
trigger_error("Unité ".$unite." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
if (isset($planete->politique) && $planete->politique == 1)
|
|
$hydrogene *= 0.9;
|
|
|
|
return $hydrogene * $nombre;
|
|
}
|
|
|
|
static function tempsCaserne($unite, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($unite)
|
|
{
|
|
case 0:
|
|
$temps = 60;
|
|
$moins = 1;
|
|
break;
|
|
case 1:
|
|
$temps = 240;
|
|
$moins = 2;
|
|
break;
|
|
case 2:
|
|
$temps = 240;
|
|
$moins = 3;
|
|
break;
|
|
case 3:
|
|
$temps = 720;
|
|
$moins = 5;
|
|
break;
|
|
case 4:
|
|
$temps = 300;
|
|
$moins = 3;
|
|
break;
|
|
case 5:
|
|
$temps = 29700;
|
|
$moins = 10;
|
|
break;
|
|
case 6:
|
|
$temps = 90;
|
|
$moins = 2;
|
|
break;
|
|
case 7:
|
|
$temps = 90;
|
|
$moins = 2;
|
|
break;
|
|
case 8:
|
|
$temps = 900;
|
|
$moins = 5;
|
|
break;
|
|
default:
|
|
trigger_error("Unité ".$unite." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte de la vitesse
|
|
$temps /= VITESSE;
|
|
|
|
//On tient compte des bonus
|
|
return ceil($temps/pow(1.25, ($planete->batiments[9] - $moins))) * $nombre;
|
|
}
|
|
|
|
static function neededCaserne($unite, Planete $planete)
|
|
{
|
|
global $neededCaserne;
|
|
return Donnee::neededCheck($neededCaserne[$unite], $planete);
|
|
}
|
|
|
|
static function print_neededCaserne($unite, Planete $planete, $race)
|
|
{
|
|
global $neededCaserne;
|
|
return Donnee::print_neededCheck($neededCaserne[$unite], $planete, $race);
|
|
}
|
|
|
|
|
|
static function metalTerrestre($unite, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($unite)
|
|
{
|
|
case 0:
|
|
$metal = 500;
|
|
break;
|
|
case 1:
|
|
$metal = 680;
|
|
break;
|
|
case 2:
|
|
$metal = 1000;
|
|
break;
|
|
case 3:
|
|
$metal = 1400;
|
|
break;
|
|
case 4:
|
|
$metal = 400;
|
|
break;
|
|
case 5:
|
|
$metal = 480;
|
|
break;
|
|
case 6:
|
|
$metal = 600;
|
|
break;
|
|
case 7:
|
|
$metal = 1000;
|
|
break;
|
|
case 8:
|
|
$metal = 430;
|
|
break;
|
|
case 9:
|
|
$metal = 1250;
|
|
break;
|
|
case 10:
|
|
$metal = 2500;
|
|
break;
|
|
case 11:
|
|
$metal = 6000;
|
|
break;
|
|
case 12:
|
|
$metal = 15000;
|
|
break;
|
|
case 13:
|
|
$metal = 15000;
|
|
break;
|
|
case 14:
|
|
$metal = 15000;
|
|
break;
|
|
case 15:
|
|
$metal = 15000;
|
|
break;
|
|
default:
|
|
trigger_error("Unité ".$unite." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
if (isset($planete->politique) && $planete->politique == 1)
|
|
$metal *= 0.9;
|
|
|
|
return $metal * $nombre;
|
|
}
|
|
|
|
static function cristalTerrestre($unite, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($unite)
|
|
{
|
|
case 0:
|
|
$cristal = 300;
|
|
break;
|
|
case 1:
|
|
$cristal = 420;
|
|
break;
|
|
case 2:
|
|
$cristal = 600;
|
|
break;
|
|
case 3:
|
|
$cristal = 950;
|
|
break;
|
|
case 4:
|
|
$cristal = 240;
|
|
break;
|
|
case 5:
|
|
$cristal = 260;
|
|
break;
|
|
case 6:
|
|
$cristal = 420;
|
|
break;
|
|
case 7:
|
|
$cristal = 500;
|
|
break;
|
|
case 8:
|
|
$cristal = 230;
|
|
break;
|
|
case 9:
|
|
$cristal = 650;
|
|
break;
|
|
case 10:
|
|
$cristal = 1750;
|
|
break;
|
|
case 11:
|
|
$cristal = 3750;
|
|
break;
|
|
case 12:
|
|
$cristal = 9500;
|
|
break;
|
|
case 13:
|
|
$cristal = 9500;
|
|
break;
|
|
case 14:
|
|
$cristal = 9500;
|
|
break;
|
|
case 15:
|
|
$cristal = 9500;
|
|
break;
|
|
default:
|
|
trigger_error("Unité ".$unite." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
if (isset($planete->politique) && $planete->politique == 1)
|
|
$cristal *= 0.9;
|
|
|
|
return $cristal * $nombre;
|
|
}
|
|
|
|
static function hydrogeneTerrestre($unite, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($unite)
|
|
{
|
|
case 0:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 1:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 2:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 3:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 4:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 5:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 6:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 7:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 8:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 9:
|
|
$hydrogene = 80;
|
|
break;
|
|
case 10:
|
|
$hydrogene = 100;
|
|
break;
|
|
case 11:
|
|
$hydrogene = 120;
|
|
break;
|
|
case 12:
|
|
$hydrogene = 1500;
|
|
break;
|
|
case 13:
|
|
$hydrogene = 1500;
|
|
break;
|
|
case 14:
|
|
$hydrogene = 1500;
|
|
break;
|
|
case 15:
|
|
$hydrogene = 1500;
|
|
break;
|
|
default:
|
|
trigger_error("Unité ".$unite." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
if (isset($planete->politique) && $planete->politique == 1)
|
|
$hydrogene *= 0.9;
|
|
|
|
return $hydrogene * $nombre;
|
|
}
|
|
|
|
static function tempsTerrestre($unite, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($unite)
|
|
{
|
|
case 0:
|
|
$temps = 720;
|
|
$moins = 1;
|
|
break;
|
|
case 1:
|
|
$temps = 2040;
|
|
$moins = 3;
|
|
break;
|
|
case 2:
|
|
$temps = 7200;
|
|
$moins = 4;
|
|
break;
|
|
case 3:
|
|
$temps = 3960;
|
|
$moins = 6;
|
|
break;
|
|
case 4:
|
|
$temps = 600;
|
|
$moins = 1;
|
|
break;
|
|
case 5:
|
|
$temps = 1080;
|
|
$moins = 2;
|
|
break;
|
|
case 6:
|
|
$temps = 2160;
|
|
$moins = 3;
|
|
break;
|
|
case 7:
|
|
$temps = 4680;
|
|
$moins = 5;
|
|
break;
|
|
case 8:
|
|
$temps = 1080;
|
|
$moins = 1;
|
|
break;
|
|
case 9:
|
|
$temps = 2040;
|
|
$moins = 3;
|
|
break;
|
|
case 10:
|
|
$temps = 7200;
|
|
$moins = 4;
|
|
break;
|
|
case 11:
|
|
$temps = 3960;
|
|
$moins = 7;
|
|
break;
|
|
case 12:
|
|
$temps = 3960;
|
|
$moins = 9;
|
|
break;
|
|
case 13:
|
|
$temps = 3960;
|
|
$moins = 9;
|
|
break;
|
|
case 14:
|
|
$temps = 3960;
|
|
$moins = 9;
|
|
break;
|
|
case 15:
|
|
$temps = 3960;
|
|
$moins = 9;
|
|
break;
|
|
default:
|
|
trigger_error("Unité ".$unite." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte de la vitesse
|
|
$temps /= VITESSE;
|
|
|
|
//On tient compte des bonus
|
|
return ceil($temps/pow(1.25, ($planete->batiments[7] - $moins))) * $nombre;
|
|
}
|
|
|
|
static function typeTerrestre($unite)
|
|
{
|
|
switch($unite)
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
return true;
|
|
case 8:
|
|
case 9:
|
|
case 10:
|
|
case 11:
|
|
case 12:
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
return false;
|
|
default:
|
|
trigger_error("Unité ".$unite." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
}
|
|
|
|
static function neededTerrestre($unite, Planete $planete)
|
|
{
|
|
global $neededTerrestre;
|
|
return Donnee::neededCheck($neededTerrestre[$unite], $planete);
|
|
}
|
|
|
|
static function print_neededTerrestre($unite, Planete $planete, $race)
|
|
{
|
|
global $neededTerrestre;
|
|
return Donnee::print_neededCheck($neededTerrestre[$unite], $planete, $race);
|
|
}
|
|
|
|
|
|
static function metalVaisseaux($vaisseau, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($vaisseau)
|
|
{
|
|
case 0:
|
|
$metal = 1000;
|
|
break;
|
|
case 1:
|
|
$metal = 4000;
|
|
break;
|
|
case 2:
|
|
$metal = 4000;
|
|
break;
|
|
case 3:
|
|
$metal = 9000;
|
|
break;
|
|
case 4:
|
|
$metal = 9000;
|
|
break;
|
|
case 5:
|
|
$metal = 1000;
|
|
break;
|
|
case 6:
|
|
$metal = 15000;
|
|
break;
|
|
case 7:
|
|
$metal = 1800;
|
|
break;
|
|
case 8:
|
|
$metal = 2550;
|
|
break;
|
|
case 9:
|
|
$metal = 12950;
|
|
break;
|
|
case 10:
|
|
$metal = 26000;
|
|
break;
|
|
case 11:
|
|
$metal = 60000;
|
|
break;
|
|
case 12:
|
|
$metal = 500000;
|
|
break;
|
|
case 13:
|
|
$metal = 500000;
|
|
break;
|
|
default:
|
|
trigger_error("Vaisseau ".$vaisseau." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
if (isset($planete->politique) && $planete->politique == 1)
|
|
$metal *= 0.9;
|
|
|
|
return $metal * $nombre;
|
|
}
|
|
|
|
static function cristalVaisseaux($vaisseau, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($vaisseau)
|
|
{
|
|
case 0:
|
|
$cristal = 800;
|
|
break;
|
|
case 1:
|
|
$cristal = 3000;
|
|
break;
|
|
case 2:
|
|
$cristal = 3000;
|
|
break;
|
|
case 3:
|
|
$cristal = 9000;
|
|
break;
|
|
case 4:
|
|
$cristal = 9000;
|
|
break;
|
|
case 5:
|
|
$cristal = 1200;
|
|
break;
|
|
case 6:
|
|
$cristal = 9000;
|
|
break;
|
|
case 7:
|
|
$cristal = 1000;
|
|
break;
|
|
case 8:
|
|
$cristal = 1350;
|
|
break;
|
|
case 9:
|
|
$cristal = 16400;
|
|
break;
|
|
case 10:
|
|
$cristal = 6900;
|
|
break;
|
|
case 11:
|
|
$cristal = 40000;
|
|
break;
|
|
case 12:
|
|
$cristal = 400000;
|
|
break;
|
|
case 13:
|
|
$cristal = 400000;
|
|
break;
|
|
default:
|
|
trigger_error("Vaisseau ".$vaisseau." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
if (isset($planete->politique) && $planete->politique == 1)
|
|
$cristal *= 0.9;
|
|
|
|
return $cristal * $nombre;
|
|
}
|
|
|
|
static function hydrogeneVaisseaux($vaisseau, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($vaisseau)
|
|
{
|
|
case 0:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 1:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 2:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 3:
|
|
$hydrogene = 1000;
|
|
break;
|
|
case 4:
|
|
$hydrogene = 1000;
|
|
break;
|
|
case 5:
|
|
$hydrogene = 100;
|
|
break;
|
|
case 6:
|
|
$hydrogene = 1000;
|
|
break;
|
|
case 7:
|
|
$hydrogene = 0;
|
|
break;
|
|
case 8:
|
|
$hydrogene = 65;
|
|
break;
|
|
case 9:
|
|
$hydrogene = 100;
|
|
break;
|
|
case 10:
|
|
$hydrogene = 1600;
|
|
break;
|
|
case 11:
|
|
$hydrogene = 3000;
|
|
break;
|
|
case 12:
|
|
$hydrogene = 250000;
|
|
break;
|
|
case 13:
|
|
$hydrogene = 250000;
|
|
break;
|
|
default:
|
|
trigger_error("Vaisseau ".$vaisseau." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte des bonus
|
|
if (isset($planete->politique) && $planete->politique == 1)
|
|
$hydrogene *= 0.9;
|
|
|
|
return $hydrogene * $nombre;
|
|
}
|
|
|
|
static function tempsVaisseaux($vaisseau, Planete $planete, $nombre = 1)
|
|
{
|
|
switch($vaisseau)
|
|
{
|
|
case 0:
|
|
$temps = 1080;
|
|
$moins = 1;
|
|
break;
|
|
case 1:
|
|
$temps = 6300;
|
|
$moins = 5;
|
|
break;
|
|
case 2:
|
|
$temps = 6300;
|
|
$moins = 5;
|
|
break;
|
|
case 3:
|
|
$temps = 8280;
|
|
$moins = 5;
|
|
break;
|
|
case 4:
|
|
$temps = 8280;
|
|
$moins = 5;
|
|
break;
|
|
case 5:
|
|
$temps = 1440;
|
|
$moins = 3;
|
|
break;
|
|
case 6:
|
|
$temps = 7380;
|
|
$moins = 5;
|
|
break;
|
|
case 7:
|
|
$temps = 1200;
|
|
$moins = 1;
|
|
break;
|
|
case 8:
|
|
$temps = 4680;
|
|
$moins = 3;
|
|
break;
|
|
case 9:
|
|
$temps = 16800;
|
|
$moins = 6;
|
|
break;
|
|
case 10:
|
|
$temps = 16800;
|
|
$moins = 6;
|
|
break;
|
|
case 11:
|
|
$temps = 32400;
|
|
$moins = 8;
|
|
break;
|
|
case 12:
|
|
$temps = 117000;
|
|
$moins = 12;
|
|
break;
|
|
case 13:
|
|
$temps = 117000;
|
|
$moins = 12;
|
|
break;
|
|
default:
|
|
trigger_error("Vaisseau ".$unite." introuvable dans les données", E_USER_ERROR);
|
|
}
|
|
|
|
//On tient compte de la vitesse
|
|
$temps /= VITESSE;
|
|
|
|
//On tient compte des bonus
|
|
return ceil($temps/pow(1.25, ($planete->batiments[8] - $moins))) * $nombre;
|
|
}
|
|
|
|
static function neededVaisseaux($vaisseau, Planete $planete)
|
|
{
|
|
global $neededVaisseaux;
|
|
return Donnee::neededCheck($neededVaisseaux[$vaisseau], $planete);
|
|
}
|
|
|
|
static function print_neededVaisseaux($vaisseau, Planete $planete, $race)
|
|
{
|
|
global $neededVaisseaux;
|
|
return Donnee::print_neededCheck($neededVaisseaux[$vaisseau], $planete, $race);
|
|
}
|
|
}
|
|
?>
|