maniaControl = $maniaControl; // Register for callbacks $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_ONINIT, $this, 'handleOnInit'); $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERJOINED, $this, 'handlePlayerConnect'); } /** * Adds an Icon * * @param string $iconName * @param string $iconLink */ public function addIcon($iconName, $iconLink = self::DEFAULT_IMG_URL) { $this->icons[$iconName] = $iconLink . "/" . $iconName; } /** * Gets an Icon by its name * * @param $iconName * @return string */ public function getIcon($iconName) { return $this->icons[$iconName]; } /** * @param array $callback */ public function handleOnInit(array $callback) { $this->preloadIcons(); } /** * @param array $callback */ public function handlePlayerConnect(array $callback) { $this->preloadIcons($callback[1]); } /** * Preload Icons */ private function preloadIcons($login = false) { $maniaLink = new ManiaLink(self::PRELOAD_ML_ID); $frame = new Frame(); $maniaLink->add($frame); $frame->setPosition(500, 500); foreach ($this->icons as $iconUrl) { $iconQuad = new Quad(); $iconQuad->setImage($iconUrl); $iconQuad->setSize(10, 10); $frame->add($iconQuad); } // Send manialink $manialinkText = $maniaLink->render()->saveXML(); $this->maniaControl->manialinkManager->sendManialink($manialinkText, $login); } }