Time API working with changes

This commit is contained in:
Shoghi Cervantes Pueyo 2013-05-15 21:20:24 +02:00
parent 5ee2cda4a6
commit 6f59e2eaad
2 changed files with 32 additions and 19 deletions

View File

@ -45,22 +45,26 @@ class TimeAPI{
$output = ""; $output = "";
switch($cmd){ switch($cmd){
case "time": case "time":
$level = false;
if($issuer instanceof Player){
$level = $issuer->level;
}
$p = strtolower(array_shift($params)); $p = strtolower(array_shift($params));
switch($p){ switch($p){
case "check": case "check":
$output .= "Time: ".$this->getDate().", ".$this->getPhase()." (".$this->get(true).")\n"; $output .= "Time: ".$this->getDate($level).", ".$this->getPhase($level)." (".$this->get(true, $level).")\n";
break; break;
case "add": case "add":
$output .= "Set the time to ".$this->add(array_shift($params))."\n"; $output .= "Set the time to ".$this->add(array_shift($params), $level)."\n";
break; break;
case "set": case "set":
$output .= "Set the time to ".$this->set(array_shift($params))."\n"; $output .= "Set the time to ".$this->set(array_shift($params), $level)."\n";
break; break;
case "sunrise": case "sunrise":
case "day": case "day":
case "sunset": case "sunset":
case "night": case "night":
$output .= "Set the time to ".$this->set($p)."\n"; $output .= "Set the time to ".$this->set($p, $level)."\n";
break; break;
default: default:
$output .= "Usage: /time <check|set|add> [time]\n"; $output .= "Usage: /time <check|set|add> [time]\n";
@ -84,22 +88,28 @@ class TimeAPI{
return $this->set("sunset"); return $this->set("sunset");
} }
public function get($raw = false){ public function get($raw = false, $level = false){
return $raw === true ? $this->server->time:abs($this->server->time) % 19200; if(!($level instanceof Level)){
$level = $this->server->api->level->getDefault();
}
return $raw === true ? $level->getTime():abs($level->getTime()) % 19200;
} }
public function add($time){ public function add($time, $level = false){
$this->server->time += (int) $time; if(!($level instanceof Level)){
$level = $this->server->api->level->getDefault();
}
$level->setTime($level->getTime() + (int) $time);
return $this->server->time; return $this->server->time;
} }
public function getDate($time = false){ public function getDate($time = false){
$time = $time === false ? $this->get():$time; $time = !is_integer($time) ? $this->get(false, $time):$time;
return str_pad(strval((floor($time /800) + 6) % 24), 2, "0", STR_PAD_LEFT).":".str_pad(strval(floor(($time % 800) / 13.33)), 2, "0", STR_PAD_LEFT); return str_pad(strval((floor($time /800) + 6) % 24), 2, "0", STR_PAD_LEFT).":".str_pad(strval(floor(($time % 800) / 13.33)), 2, "0", STR_PAD_LEFT);
} }
public function getPhase($time = false){ public function getPhase($time = false){
$time = $time === false ? $this->get():$time; $time = !is_integer($time) ? $this->get(false, $time):$time;
if($time < $this->phase["sunset"]){ if($time < $this->phase["sunset"]){
$time = "day"; $time = "day";
}elseif($time < $this->phase["night"]){ }elseif($time < $this->phase["night"]){
@ -112,13 +122,16 @@ class TimeAPI{
return $time; return $time;
} }
public function set($time){ public function set($time, $level = false){
if(($level instanceof Level)){
$level = $this->server->api->level->getDefault();
}
if(is_string($time) and isset($this->phases[$time])){ if(is_string($time) and isset($this->phases[$time])){
$this->server->time = $this->phases[$time]; $level->setTime($this->phases[$time]);
}else{ }else{
$this->server->time = (int) $time; $level->setTime((int) $time);
} }
return $this->server->time; return $level->getTime();
} }

View File

@ -36,7 +36,7 @@ class Level{
$this->tileEntities = $tileEntities; $this->tileEntities = $tileEntities;
$this->startTime = $this->time = (int) $this->level->getData("time"); $this->startTime = $this->time = (int) $this->level->getData("time");
$this->startCheck = microtime(true); $this->startCheck = microtime(true);
$this->server->schedule(15, array($this, "checkThings")); $this->server->schedule(15, array($this, "checkThings"), array(), true);
$this->server->event("server.close", array($this, "save")); $this->server->event("server.close", array($this, "save"));
$this->name = $name; $this->name = $name;
} }
@ -55,7 +55,7 @@ class Level{
} }
public function save(){ public function save(){
$this->level->setData("time", $this->time); $this->level->setData("time", (int) $this->time);
$this->level->doSaveRound(); $this->level->doSaveRound();
$this->level->saveData(); $this->level->saveData();
} }
@ -138,7 +138,7 @@ class Level{
} }
public function getTime(){ public function getTime(){
return ($this->time); return (int) ($this->time);
} }
public function getName(){ public function getName(){