Moving forward...
This commit is contained in:
parent
3e400f65c4
commit
794bea7fd2
3 changed files with 66 additions and 2 deletions
3
config.yml
Normal file
3
config.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
# This is the default config generated with ImagicalPlugCreator. (C) ImagicalPlugCreator - Ad5001 2016
|
||||||
|
...
|
|
@ -22,6 +22,7 @@ abstract class Game {
|
||||||
$this->level = $level;
|
$this->level = $level;
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
$this->main = $this->server->getPlugin("GameManager");
|
$this->main = $this->server->getPlugin("GameManager");
|
||||||
|
$this->main->backup($level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,7 +44,13 @@ abstract class Game {
|
||||||
public function onGameStart();
|
public function onGameStart();
|
||||||
|
|
||||||
|
|
||||||
public function stopGame();
|
public function onGameStop();
|
||||||
|
|
||||||
|
|
||||||
|
public function stopGame() {
|
||||||
|
$this->main->getGameManager()->reloadLevel($this->level);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function onJoin(Player $player) {}
|
public function onJoin(Player $player) {}
|
||||||
|
@ -81,5 +88,9 @@ abstract class Game {
|
||||||
public function useEvent(\pocketmine\event\Event $event) : bool;
|
public function useEvent(\pocketmine\event\Event $event) : bool;
|
||||||
|
|
||||||
|
|
||||||
|
public function getDataFolder() {
|
||||||
|
return $this->main->getDataFolder() . "games/$this->name";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -43,8 +43,58 @@ class GameManager {
|
||||||
public function registerLevel(Level $level, string $game) {
|
public function registerLevel(Level $level, string $game) {
|
||||||
if(!array_key_exists($level->getName(), $this->levels)) {
|
if(!array_key_exists($level->getName(), $this->levels)) {
|
||||||
if(isset($this->games[$game])) {
|
if(isset($this->games[$game])) {
|
||||||
$this->levels[$level->getName()] = new $this->games[$game]($level)
|
$this->levels[$level->getName()] = new $this->games[$game]($level);
|
||||||
|
} else {
|
||||||
|
$this->main->getLogger()->warn("No game found with name $game");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function reloadLevel(Level $level) {
|
||||||
|
$this->backup($level);
|
||||||
|
rrmdir($this->main->getFilePath() . "worlds/{$level->getName()}");
|
||||||
|
$this->restore($level);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function rrmdir($dir) { // This is from PHP.NET
|
||||||
|
if (is_dir($dir)) {
|
||||||
|
$objects = scandir($dir);
|
||||||
|
foreach ($objects as $object) {
|
||||||
|
if ($object != "." && $object != "..") {
|
||||||
|
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
reset($objects);
|
||||||
|
rmdir($dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function copydir( $source, $target ) {
|
||||||
|
if ( is_dir( $source ) ) {
|
||||||
|
@mkdir( $target );
|
||||||
|
$d = dir( $source );
|
||||||
|
while ( FALSE !== ( $entry = $d->read() ) ) {
|
||||||
|
if ( $entry == '.' || $entry == '..' ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$Entry = $source . '/' . $entry;
|
||||||
|
if ( is_dir( $Entry ) ) {
|
||||||
|
full_copy( $Entry, $target . '/' . $entry );
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
copy( $Entry, $target . '/' . $entry );
|
||||||
|
}
|
||||||
|
|
||||||
|
$d->close();
|
||||||
|
} else {
|
||||||
|
copy( $source, $target );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in a new issue