game/includes/ressources.php

155 lines
5.2 KiB
PHP

<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$g = $queryPlanete['galaxie'];
$s = $queryPlanete['ss'];
$p = $queryPlanete['position'];
$mine_m = $queryPlanete['mine_m'];
$coeff_mine_m = $queryPlanete['coeff_mine_m'];
if ($coeff_mine_m < 0) $coeff_mine_m = 0;
if ($coeff_mine_m > 1) $coeff_mine_m = 1;
$mine_c = $queryPlanete['mine_c'];
$coeff_mine_c = $queryPlanete['coeff_mine_c'];
if ($coeff_mine_c < 0) $coeff_mine_c = 0;
if ($coeff_mine_c > 1) $coeff_mine_c = 1;
$mine_h = $queryPlanete['mine_h'];
$coeff_mine_h = $queryPlanete['coeff_mine_h'];
if ($coeff_mine_h < 0) $coeff_mine_h = 0;
if ($coeff_mine_h > 1) $coeff_mine_h = 1;
$centrale_s = $queryPlanete['centrale_s'];
$coeff_centrale_s = $queryPlanete['coeff_centrale_s'];
//$coeff_centrale_s = 1;
if ($coeff_centrale_s < 0) $coeff_centrale_s = 0;
if ($coeff_centrale_s > 1) $coeff_centrale_s = 1;
$centrale_f = $queryPlanete['centrale_f'];
if ($centrale_f <= 0) $coeff_centrale_f = 0;
else $coeff_centrale_f = $queryPlanete['coeff_centrale_f'];
if ($coeff_centrale_f < 0) $coeff_centrale_f = 0;
if ($coeff_centrale_f > 1) $coeff_centrale_f = 1;
//Calcul du temps écoulé depuis la dernière mise à jour de la planète
$temps_actuel = time();
$temps_ancien = $queryPlanete['timestamp'];
$temps_ecoule = $temps_actuel - $temps_ancien;
//Calcul de la capacité de stockage maximale
$cap = (pow(2,$queryPlanete['silo'])*100000);
//Initialisation des variables
$conso_h = 0;
//Production
if ($mine_m > 0) $energie_m = ceil(exp(0.28*$mine_m)*10); else $energie_m= 0;
if ($mine_c > 0) $energie_c = ceil(exp(0.28*$mine_c)*10); else $energie_c= 0;
if ($mine_h > 0) $energie_h = ceil(exp(0.2849*$mine_h)*13); else $energie_h= 0;
if ($centrale_f > 0) $energie_f = ceil(exp(0.297*$centrale_f)*25); else $energie_f = 0;
if ($centrale_s > 0) $energie_s = ceil(exp(0.28*$centrale_s)*22); else $energie_s = 0;
//Calcul de la consomation d'énergie
$nrj = $energie_m * $coeff_mine_m + $energie_c * $coeff_mine_c + $energie_h * $coeff_mine_h;
$nrjmx = $energie_m + $energie_c + $energie_h;
//Calcul de la production d'énergie
$t = $energie_s * $coeff_centrale_s + $energie_f * $coeff_centrale_f;
if ($nrj == 0) $coeff = 0;
else $coeff = $t / $nrj;
//print $coeff.' = '.$t.'/'.$nrj;
if ($coeff < 0) $coeff = 0;
elseif ($coeff > 1) $coeff = 1;
$Ncoeff_mine_m = $coeff * $coeff_mine_m;
$Ncoeff_mine_c = $coeff * $coeff_mine_c;
$Ncoeff_mine_h = $coeff * $coeff_mine_h;
if ($Ncoeff_mine_m > 1) $Ncoeff_mine_m = 1;
if ($Ncoeff_mine_c > 1) $Ncoeff_mine_c = 1;
if ($Ncoeff_mine_h > 1) $Ncoeff_mine_h = 1;
if ($Ncoeff_mine_m < $coeff_mine_m) {
mysql_query("UPDATE planete SET coeff_mine_m='$Ncoeff_mine_m' WHERE id_user='$id_user' AND galaxie='$g' AND ss='$s'AND position='$p'") or die ('mysql');
$coeff_mine_m = $Ncoeff_mine_m;
}
if ($Ncoeff_mine_c < $coeff_mine_c) {
mysql_query("UPDATE planete SET coeff_mine_c='$Ncoeff_mine_c' WHERE id_user='$id_user' AND galaxie='$g' AND ss='$s'AND position='$p'");
$coeff_mine_c = $Ncoeff_mine_c;
}
if ($Ncoeff_mine_h < $coeff_mine_h) {
mysql_query("UPDATE planete SET coeff_mine_h='$Ncoeff_mine_h' WHERE id_user='$id_user' AND galaxie='$g' AND ss='$s'AND position='$p'");
$coeff_mine_h = $Ncoeff_mine_h;
}
$alert_metal = false;
if ($metal >= $cap) {
$prod_met=0;
$metal = $cap;
$alert_metal = true;
}
else {
if ($mine_m <= 0 || $centrale_s <= 0) $prod_met = 0.011*$temps_ecoule;
else $prod_met = ((ceil(pow(1.1,$mine_m)*35*$mine_m)/3600)*$temps_ecoule)*$coeff_mine_m;
}
$alert_cristal = false;
if ($cristal >= $cap) {
$prod_cri=0;
$cristal = $cap;
$alert_cristal = true;
}
else {
if ($mine_c <= 0 || $centrale_s <= 0) $prod_cri = 0.0055*$temps_ecoule;
else $prod_cri = ((ceil(pow(1.1,$mine_c)*23*$mine_c)/3600)*$temps_ecoule)*$coeff_mine_c;
}
$alert_hydrogene = false;
if ($hydrogene >= $cap) {
$prod_hy=0;
$hydrogene = $cap;
$alert_hydrogene = true;
}
else {
if ($mine_h < 0) $prod_hy = 0;
else $prod_hy = (((ceil(pow(1.1,$mine_h)*14*($mine_h+0.7))/3600)*$temps_ecoule) - $conso_h) * $coeff_mine_h;
if ($mine_h == 0) $prod_hy=0;
if ($prod_hy < 0) $prod_hy = 0;
}
if ($centrale_f > 0) $conso_h = ((ceil(pow(1.34,($centrale_f-1))*9)/3600)*$temps_ecoule) * $coeff_centrale_f;
else $conso_h = 0;
$prod_mineh = $prod_hy;
$prod_hysv = $prod_hy;
$prod_hy -= $conso_h;
if ($hydrogene+$prod_hy < 0) {
$prod_hy = $prod_hysv;
$conso_h = 0;
$coeff_energie_f = 0;
}
elseif (ceil(pow(1.34,($centrale_f-1))*9) <= $hydrogene/5 && $coeff_centrale_f == 0) {
$coeff_energie_f = 1;
}
$a = $metal + $prod_met;
$b = $cristal + $prod_cri;
$c = $hydrogene + $prod_hy;
$u = $energie_s * $coeff_centrale_s + $energie_f * $coeff_centrale_f;
$TEMP_energie = separerNombres(intval($nrj)).'/'.separerNombres($u);
if ($nrj >= $u) $alert_energie = true;
else $alert_energie = false;
$diffnrj = $u-$nrj;
//Mise à jour de la base de données
$chapeau->query("UPDATE `planete` SET `timestamp` = '$temps_actuel', `metal` = '$a', `cristal` = '$b', `hydrogene` = '$c', `coeff` = '$coeff', `energie` = '$t', `coeff_centrale_f` = '$coeff_centrale_f' WHERE `id_user` = '$id_user' AND `galaxie` = '$g' AND `ss` = '$s'AND `position` = '$p'");
$template->assign('alertes', array($alert_metal, $alert_cristal, $alert_hydrogene, $TEMP_energie, $alert_energie, separerNombres($diffnrj)));
?>