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

View File

@ -36,7 +36,7 @@ class Level{
$this->tileEntities = $tileEntities;
$this->startTime = $this->time = (int) $this->level->getData("time");
$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->name = $name;
}
@ -55,7 +55,7 @@ class Level{
}
public function save(){
$this->level->setData("time", $this->time);
$this->level->setData("time", (int) $this->time);
$this->level->doSaveRound();
$this->level->saveData();
}
@ -138,7 +138,7 @@ class Level{
}
public function getTime(){
return ($this->time);
return (int) ($this->time);
}
public function getName(){