Files
TravianZ/GameEngine/Generator.php
T
uroskn 234bd692e4 Page load time is independent on passing second.
Previously page loading time was calculated by taking miliseconds
of current wall clock time. In cases where wall clock went into another
second page loading time was calcualted as negative giving incorrect result.

This patch fixes this by using microtime of wall-clock time in float.
2016-07-03 00:01:15 +02:00

160 lines
3.6 KiB
PHP
Executable File

<?php
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Filename Generator.php ##
## License: TravianX Project ##
## Copyright: TravianX (c) 2010-2011. All rights reserved. ##
## ##
#################################################################################
class MyGenerator {
public function generateRandID(){
return md5($this->generateRandStr(16));
}
public function generateRandStr($length){
$randstr = "";
for($i=0; $i<$length; $i++){
$randnum = mt_rand(0,61);
if($randnum < 10){
$randstr .= chr($randnum+48);
}else if($randnum < 36){
$randstr .= chr($randnum+55);
}else{
$randstr .= chr($randnum+61);
}
}
return $randstr;
}
public function encodeStr($str,$length) {
$encode = md5($str);
return substr($encode,0,$length);
}
public function procDistanceTime($coor,$thiscoor,$ref,$mode) {
global $bid28,$bid14,$building;
$xdistance = ABS($thiscoor['x'] - $coor['x']);
if($xdistance > WORLD_MAX) {
$xdistance = (2 * WORLD_MAX + 1) - $xdistance;
}
$ydistance = ABS($thiscoor['y'] - $coor['y']);
if($ydistance > WORLD_MAX) {
$ydistance = (2 * WORLD_MAX + 1) - $ydistance;
}
$distance = SQRT(POW($xdistance,2)+POW($ydistance,2));
if(!$mode) {
if($ref == 1) {
$speed = 16;
}
else if($ref == 2) {
$speed = 12;
}
else if($ref == 3) {
$speed = 24;
}
else if($ref == 300) {
$speed = 5;
}
else {
$speed = 1;
}
}
else {
$speed = $ref;
if($building->getTypeLevel(14) != 0 && $distance >= TS_THRESHOLD) {
$speed = $speed * ($bid14[$building->gettypeLevel(14)]['attri']/100) ;
}
}
if($speed!=0){
return round(($distance/$speed) * 3600 / INCREASE_SPEED);
}else{
return round($distance * 3600 / INCREASE_SPEED);
}
}
public function getTimeFormat($time) {
$min = 0;
$hr = 0;
$days = 0;
while($time >= 60) :
$time -= 60;
$min += 1;
endwhile;
while ($min >= 60) :
$min -= 60;
$hr += 1;
endwhile;
if ($min < 10) {
$min = "0".$min;
}
if($time < 10) {
$time = "0".$time;
}
return $hr.":".$min.":".$time;
}
public function procMtime($time, $pref = 3) {
/*
$timezone = 7;
switch($timezone) {
case 7:
$time -= 3600;
break;
}
*/
- $time += 3600*0; //Edit this yourself
+ $time += 0; //Edit this yourself
$today = date('d',time())-1;
if (date('Ymd',time()) == date('Ymd',$time)) {
$day = "today";
}elseif($today == date('d',$time)){
$day = "yesterday";
}
else {
switch($pref) {
case 1:
$day = date("m/j/y",$time);
break;
case 2:
$day = date("j/m/y",$time);
break;
case 3:
$day = date("j.m.y",$time);
break;
default:
$day = date("y/m/j",$time);
break;
}
}
$new = date("H:i:s",$time);
if ($pref=="9"||$pref==9)
return $new;
else
return array($day,$new);
}
public function getBaseID($x,$y) {
return ((WORLD_MAX-$y) * (WORLD_MAX*2+1)) + (WORLD_MAX +$x + 1);
}
public function getMapCheck($wref) {
return substr(md5($wref),5,2);
}
public function pageLoadTimeStart() {
return microtime(true);
}
public function pageLoadTimeEnd() {
return microtime(true);
}
};
$generator = new MyGenerator;