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()])) { $ft = $this->main->getServer()->getScheduler()->scheduleRepeatingTask($t = new StartGameTask($this->main, $this->levels[$level->getName()]), 20); $t->setHandler($ft); $this->startedgames[$level->getName()] = true; foreach($this->levels[$level->getName()]->scenarioManager->getUsedScenarios() as $sc) { $sc->onStart(); } return true; } return false; } public function stopUHC(Level $level) { if(isset($this->getStartedUHCs()[$level->getName()])) { foreach($this->levels[$level->getName()]->scenarioManager->getUsedScenarios() as $sc) { $sc->onStop(); } unset($this->startedgames[$level->getName()]); return true; } return false; } public function registerLevel(Level $level) { if(!array_key_exists($level->getName(), $this->levels)) { $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"]); } } public function getLevels() { return $this->levels; } public function getStartedUHCs() { return $this->startedgames; } public function addStartedUHC(string $name, UHCGame $game) { $this->startedgames[$name] = $game; return true; } }