maniaControl = $maniaControl; $this->addDefaultIcons(); // Register for callbacks $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_AFTERINIT, $this, 'handleAfterInit'); $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERCONNECT, $this, 'handlePlayerConnect'); } /** * Add the Set of default Icons */ private function addDefaultIcons() { $this->addIcon(self::MX_ICON); $this->addIcon(self::MX_ICON_MOVER); $this->addIcon(self::MX_ICON_GREEN); $this->addIcon(self::MX_ICON_GREEN_MOVER); } /** * Add an Icon * * @param string $iconName * @param string $iconLink */ public function addIcon($iconName, $iconLink = self::DEFAULT_IMG_URL) { $this->icons[$iconName] = $iconLink . '/' . $iconName; } /** * Get an Icon by its name * * @param $iconName * @return string */ public function getIcon($iconName) { if (!isset($this->icons[$iconName])) { return null; } return $this->icons[$iconName]; } /** * Handle OnInit Callback */ public function handleAfterInit() { $this->preloadIcons(); } /** * Handle PlayerConnect Callback * * @param Player $player */ public function handlePlayerConnect(Player $player) { $this->preloadIcons($player); } /** * Preload Icons * * @param Player $player */ public function preloadIcons($player = null) { $maniaLink = new ManiaLink(self::PRELOAD_MLID); $frame = new Frame(); $maniaLink->add($frame); $frame->setPosition(500, 500); foreach($this->icons as $iconUrl) { $iconQuad = new Quad(); $iconQuad->setImage($iconUrl); $iconQuad->setSize(1, 1); $frame->add($iconQuad); } // Send manialink $this->maniaControl->manialinkManager->sendManialink($maniaLink, $player); } }