2016-08-20 05:15:03 +00:00
|
|
|
<?php
|
|
|
|
namespace Ad5001\UHC;
|
|
|
|
# _ _ _ _ _____
|
|
|
|
# | | | | | | |/ ____|
|
|
|
|
# | | | | |__| | |
|
|
|
|
# | | | | __ | |
|
|
|
|
# | |__| | | | | |____
|
|
|
|
# \____/|_| |_|\_____|
|
|
|
|
# The most customisable UHC plugin for Minecraft PE !
|
|
|
|
|
|
|
|
use pocketmine\Server;
|
|
|
|
use pocketmine\Player;
|
|
|
|
use pocketmine\level\Level;
|
|
|
|
|
|
|
|
|
2016-08-20 15:22:44 +00:00
|
|
|
use Ad5001\UHC\task\StartGameTask;
|
|
|
|
|
|
|
|
|
2016-08-20 05:15:03 +00:00
|
|
|
|
|
|
|
class UHCManager {
|
|
|
|
|
|
|
|
|
|
|
|
protected $main;
|
|
|
|
protected $server;
|
|
|
|
protected $games;
|
|
|
|
protected $levels;
|
|
|
|
protected $startedgames;
|
|
|
|
|
|
|
|
|
|
|
|
public function __construct(Main $main) {
|
|
|
|
$this->main = $main;
|
|
|
|
$this->server = $main->getServer();
|
|
|
|
$this->games = [];
|
|
|
|
$this->levels = [];
|
|
|
|
$this->startedgames = [];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function startUHC(Level $level) {
|
|
|
|
if(isset($this->levels[$level->getName()]) and !isset($this->startedgames[$level->getName()])) {
|
2016-08-20 15:22:44 +00:00
|
|
|
$ft = $this->main->getServer()->getScheduler()->scheduleRepeatingTask($t = new StartGameTask($this->main, $this->levels[$level->getName()]), 20);
|
2016-08-20 05:59:12 +00:00
|
|
|
$t->setHandler($ft);
|
2016-08-20 05:15:03 +00:00
|
|
|
$this->startedgames[$level->getName()] = true;
|
2016-08-21 07:40:41 +00:00
|
|
|
foreach($this->levels[$level->getName()]->scenarioManager->getUsedScenarios() as $sc) {
|
2016-08-20 15:22:44 +00:00
|
|
|
$sc->onStart();
|
|
|
|
}
|
2016-08-20 05:15:03 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function stopUHC(Level $level) {
|
|
|
|
if(isset($this->startedgames[$level->getName()])) {
|
|
|
|
unset($this->startedgames[$level->getName()]);
|
2016-08-21 07:40:41 +00:00
|
|
|
foreach($this->levels[$level->getName()]->scenarioManager->getUsedScenarios() as $sc) {
|
2016-08-20 15:22:44 +00:00
|
|
|
$sc->onQuit();
|
|
|
|
}
|
2016-08-20 05:15:03 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function registerLevel(Level $level) {
|
|
|
|
if(!array_key_exists($level->getName(), $this->levels)) {
|
2016-08-20 12:44:28 +00:00
|
|
|
$this->levels[$level->getName()] = new UHCWorld($this->main,$level,$this->main->getConfig()->get("worlds")[$level->getName()]["maxplayers"],$this->main->getConfig()->get("worlds")[$level->getName()]["radius"]);
|
2016-08-20 05:15:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function getLevels() {
|
|
|
|
return $this->levels;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function getStartedUHCs() {
|
|
|
|
return $this->startedgames;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-08-21 07:40:41 +00:00
|
|
|
public function addStartedUHC(string $name, UHCGame $game) {
|
|
|
|
$this->startedgames[$name] = $game;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-08-20 05:15:03 +00:00
|
|
|
}
|