From f5f4deb02c7cd1ca4e6ea367ce0973219066703d Mon Sep 17 00:00:00 2001 From: kremsy Date: Mon, 27 Jan 2014 21:33:46 +0100 Subject: [PATCH] slotmachine plugin, only temporary on git (paragon only plugin) --- application/plugins/SlotMachine.php | 817 ++++++++++++++++++++++++++++ 1 file changed, 817 insertions(+) create mode 100644 application/plugins/SlotMachine.php diff --git a/application/plugins/SlotMachine.php b/application/plugins/SlotMachine.php new file mode 100644 index 00000000..890aaf89 --- /dev/null +++ b/application/plugins/SlotMachine.php @@ -0,0 +1,817 @@ +manialinkManager->iconManager->addIcon(self::ICON_CHERRY, self::ICON_LINK); + $maniaControl->manialinkManager->iconManager->addIcon(self::ICON_MELONE, self::ICON_LINK); + $maniaControl->manialinkManager->iconManager->addIcon(self::ICON_ORANGE, self::ICON_LINK); + $maniaControl->manialinkManager->iconManager->addIcon(self::ICON_PLUM, self::ICON_LINK); + $maniaControl->manialinkManager->iconManager->addIcon(self::ICON_LEMON, self::ICON_LINK); + $maniaControl->manialinkManager->iconManager->addIcon(self::ICON_BAR, self::ICON_LINK); + $maniaControl->manialinkManager->iconManager->addIcon(self::ICON_BLANK, self::ICON_LINK); + $maniaControl->manialinkManager->iconManager->addIcon(self::ICON_BUTTON_BLUE_50, self::ICON_LINK); + $maniaControl->manialinkManager->iconManager->addIcon(self::ICON_BUTTON_BLUE_51, self::ICON_LINK); + $maniaControl->manialinkManager->iconManager->addIcon(self::ICON_BUTTON_BLUE_52, self::ICON_LINK); + $maniaControl->manialinkManager->iconManager->addIcon(self::ICON_BUTTON_TITLE, self::ICON_LINK); + } + + /** + * Load the plugin + * + * @param \ManiaControl\ManiaControl $maniaControl + * @return bool + */ + public function load(ManiaControl $maniaControl) { + $this->maniaControl = $maniaControl; + + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_BILLUPDATED, $this, 'handleBillUpdated'); + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_1_SECOND, $this, 'onEverySecond'); + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_1_MINUTE, $this, 'updateDatabaseEveryMinute'); + $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERJOINED, $this, 'handlePlayerConnect'); + $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERDISCONNECTED, $this, 'handlePlayerDisconnect'); + + $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_PLAY, $this, 'actionPlay'); + $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_DEPOSIT, $this, 'actionDeposit'); + $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_CASHOUT, $this, 'actionCashout'); + $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_TOGGLE, $this, 'actionToggle'); + + // Define player stats + $this->maniaControl->statisticManager->defineStatMetaData(self::STAT_SLOT_PLAY); + $this->maniaControl->statisticManager->defineStatMetaData(self::STAT_SLOT_WON); + + $this->initializeArray(); + + $this->checkDatabase(); + $this->displayIcon(); + + foreach($this->maniaControl->playerManager->getPlayers() as $player) { + $this->playerSettings[$player->index] = array("Balance" => $this->getBalance($player->index), "Won" => 0, "Spent" => 0, "Plays" => 0, "ClicksLastSecond" => 0, "Visible" => 0); + } + } + + public function actionToggle(array $chatCallback, Player $player) { + $pic1 = $this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_BAR); + $pic2 = $this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_MELONE); + $pic3 = $this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_PLUM); + + if (isset($this->playerSettings[$player->index]) && $this->playerSettings[$player->index]['Visible'] == 1) { + $this->playerSettings[$player->index]["Visible"] = 0; + $this->maniaControl->manialinkManager->closeWidget($player, self::SLOT_MAIN_ML); + } else { + if (!isset($this->playerSettings[$player->index])) { + $this->playerSettings[$player->index] = array("Balance" => $this->getBalance($player->index), "Won" => 0, "Spent" => 0, "Plays" => 0, "ClicksLastSecond" => 0, "Visible" => 1); + } else { + $this->playerSettings[$player->index]["Visible"] = 1; + } + $this->insertPlayerIntoDatabase($player->index); + $this->showSlotMachine($player, $pic1, $pic2, $pic3); + } + } + + /** + *Handle on Every Second + */ + public function onEverySecond() { + if (isset($this->playerSettings)) { + foreach($this->playerSettings as $key => $player) { + $this->playerSettings[$key]["ClicksLastSecond"] = 0; //Set Klick count to 0 on every player + } + } + } + + /** + * Handle Player connect + * + * @param array $callback + */ + public function handlePlayerConnect(array $callback) { + $player = $callback[1]; + /** @var Player $player */ + $this->displayIcon($player->login); + //Initialize Player + $this->playerSettings[$player->index] = array("Balance" => $this->getBalance($player->index), "Won" => 0, "Spent" => 0, "Plays" => 0, "ClicksLastSecond" => 0, "Visible" => 0); + } + + /** + * Handle Player disconnect + * + * @param array $chatCallback + * @param Player $player + */ + public function handlePlayerDisconnect(array $callback) { + $this->updateDatabaseEveryMinute(); + $player = $callback[1]; + unset($this->playerSettings[$player->index]); + } + + + public function actionPlay(array $chatCallback, Player $player) { + if ($this->playerSettings[$player->index]["Balance"] >= self::COST_OF_PLAY) { + if ($this->playerSettings[$player->index]["ClicksLastSecond"] > self::MAX_CLICKS_PER_SEC) { + return; + } + + $randA = rand(0, 63); + $randB = rand(0, 63); + $randC = rand(0, 63); + + $symbolA = $this->getSymbolNumber(1, $randA); + $symbolB = $this->getSymbolNumber(2, $randB); + $symbolC = $this->getSymbolNumber(3, $randC); + + $picA = $this->getIconLink($symbolA); + $picB = $this->getIconLink($symbolB); + $picC = $this->getIconLink($symbolC); + + $won = $this->checkWin($symbolA, $symbolB, $symbolC); + + $this->playerSettings[$player->index]["Balance"] += $won - self::COST_OF_PLAY; + $this->playerSettings[$player->index]["Won"] += $won; + $this->playerSettings[$player->index]["Spent"] += self::COST_OF_PLAY; + $this->playerSettings[$player->index]["Plays"]++; + $this->playerSettings[$player->index]["ClicksLastSecond"]++; + + $this->showSlotMachine($player, $picA, $picB, $picC, $won); + + if ($won >= self::COST_OF_PLAY * 20) { + $mysqli = $this->maniaControl->database->mysqli; + $query = 'INSERT INTO ' . self::TABLE_SLOTMACHINEWINS . ' + (PlayerIndex,Won) VALUES(' . $player->index . ',' . $won . ')'; + $mysqli->query($query); + + $message = '$FF0Player $FFF$<' . $player->nickname . '$> $FF0just won $FFF' . $won . ' $FF0Planets in the slotmachine!'; + $this->maniaControl->chat->sendChat($message); + } + } else { + $arr = array(); + $this->actionDeposit($arr, $player); + } + + $this->updateDatabaseEveryMinute(); + } + + /** + * Play the slotmachine + * + * @param Player $player + * @param $pic1 + * @param $pic2 + * @param $pic3 + * @param int $lastWin + */ + private function showSlotMachine(Player $player, $pic1, $pic2, $pic3, $lastWin = 0, $showSelf = true) { + + /*$pos_x = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_POSX); + $pos_y = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_POSY); + $width = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_WIDTH); + $height = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_HEIGHT);*/ + $posX = 160 - 16; + $posY = 3.6; + $width = 32; + $height = 50; + + $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowStyle(); + $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowSubStyle(); + + + //$script = new Script(); + //$maniaLink->setScript($script); + + // mainframe + $frame = new Frame(); + + $frame->setSize($width, $height); + $frame->setPosition($posX, $posY); + + if ($showSelf) { + $maniaLink = new ManiaLink(self::SLOT_MAIN_ML); + $maniaLink->add($frame); + } + + // Background Quad + $backgroundQuad = new Quad(); + $frame->add($backgroundQuad); + $backgroundQuad->setSize($width, $height); + $backgroundQuad->setStyles($quadStyle, $quadSubstyle); + + $headBgQuad = new Quad(); + $headBgQuad->setY($height / 2 - 2); + $frame->add($headBgQuad); + $headBgQuad->setSize($width, 4); + $headBgQuad->setStyles($quadStyle, $quadSubstyle); + + $headQuad = new Quad(); + $headQuad->setY($height / 2 - 2); + $headQuad->setZ(-0.3); + $frame->add($headQuad); + $headQuad->setImage($this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_BUTTON_TITLE)); + $headQuad->setSize($width, 4); + + //Balance Label + $balance = $this->playerSettings[$player->index]["Balance"]; + $label = new Label_Text(); + $frame->add($label); + $label->setText("Balance: " . $balance); + $label->setTextColor("FFF"); + $label->setX(-$width / 2 + 3); + $label->setY($height / 2 - 7); + $label->setHAlign(Control::LEFT); + $label->setTextSize(1.1); + + //Icons + $quad = new Quad(); + $frame->add($quad); + $quad->setPosition(-$width / 2 + 6, $height / 2 - 15, 2); + $quad->setSize(12, 10); + $quad->setImage($pic1); + + $quad = clone $quad; + $frame->add($quad); + $quad->setX(0); + $quad->setImage($pic2); + + $quad = clone $quad; + $frame->add($quad); + $quad->setX($width / 2 - 6); + $quad->setImage($pic3); + + //Won Label + if ($lastWin > 0) { + $label = new Label_Text(); + $frame->add($label); + $label->setSize(20, 3); + $label->setTextSize(1); + $label->setPosition(-$width / 2 + 3, $height / 2 - 22, 2); + $label->setText("Won Planets: " . $lastWin); + $label->setTextColor("FFF"); + $label->setHAlign(Control::LEFT); + } + + //Buttons + $quad = new Quad(); + $frame->add($quad); + $quad->setY($height / 2 - 28); + $quad->setZ(-0.3); + $quad->setImage($this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_BUTTON_BLUE_50)); + $quad->setSize($width - 5, 7); + $quad->setAction(self::ACTION_PLAY); + + $quad = clone $quad; + $frame->add($quad); + $quad->setY($height / 2 - 36); + $quad->setImage($this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_BUTTON_BLUE_51)); + $quad->setAction(self::ACTION_DEPOSIT); + + $quad = clone $quad; + $frame->add($quad); + $quad->setY($height / 2 - 44); + $quad->setImage($this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_BUTTON_BLUE_52)); + $quad->setAction(self::ACTION_CASHOUT); + + $label = new Label_Button(); + $frame->add($label); + $label->setStyle("TextButtonBig"); + $label->setText("$0f9Play"); + $label->setY($height / 2 - 29); + $label->setZ(-0.3); + $label->setSize($width - 5, 7); + $label->setAction(self::ACTION_PLAY); + $label->setTextSize(1); + + $label = clone $label; + $frame->add($label); + $label->setY($height / 2 - 37); + $label->setText("$0f9Deposit"); + $label->setAction(self::ACTION_DEPOSIT); + + $label = clone $label; + $frame->add($label); + $label->setY($height / 2 - 44.4); + $label->setText("$0F9Cash Out"); + $label->setAction(self::ACTION_CASHOUT); + + // Send manialink + if ($showSelf) { + $manialinkText = $maniaLink->render()->saveXML(); + $this->maniaControl->manialinkManager->sendManialink($manialinkText, $player->login); + } else { + return $frame; + } + } + + /** + * Displays the Icon + * + * @param bool $login + */ + public function displayIcon($login = false) { + $posX = $this->maniaControl->settingManager->getSetting($this->maniaControl->actionsMenu, ActionsMenu::SETTING_MENU_POSX); + $posY = $this->maniaControl->settingManager->getSetting($this->maniaControl->actionsMenu, ActionsMenu::SETTING_MENU_POSY); + $width = $this->maniaControl->settingManager->getSetting($this->maniaControl->actionsMenu, ActionsMenu::SETTING_MENU_ITEMSIZE); + $height = $this->maniaControl->settingManager->getSetting($this->maniaControl->actionsMenu, ActionsMenu::SETTING_MENU_ITEMSIZE); + $shootManiaOffset = $this->maniaControl->manialinkManager->styleManager->getDefaultIconOffsetSM(); + $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadStyle(); + $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadSubstyle(); + $itemMarginFactorX = 1.3; + $itemMarginFactorY = 1.2; + $posY += $width * $itemMarginFactorY; + + // Get Title Id + $titleId = $this->maniaControl->server->titleId; + $titlePrefix = strtoupper(substr($titleId, 0, 2)); + + //If game is shootmania lower the icons position by 20 + if ($titlePrefix == 'SM') { + $posY -= $shootManiaOffset; + } + + $itemSize = $width; + + $maniaLink = new ManiaLink(self::SLOT_ICON_ML); + + // Donate Menu Icon Frame + $frame = new Frame(); + $maniaLink->add($frame); + $frame->setPosition($posX, $posY); + + $backgroundQuad = new Quad(); + $frame->add($backgroundQuad); + $backgroundQuad->setSize($width * $itemMarginFactorX, $height * $itemMarginFactorY); + $backgroundQuad->setStyles($quadStyle, $quadSubstyle); + + $iconFrame = new Frame(); + $frame->add($iconFrame); + + $iconFrame->setSize($itemSize, $itemSize); + $itemQuad = new Quad(); + $itemQuad->setImage($this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_CHERRY)); + $itemQuad->setSize($itemSize, $itemSize); + $iconFrame->add($itemQuad); + + $itemQuad->setAction(self::ACTION_TOGGLE); + + + // Send manialink + $manialinkText = $maniaLink->render()->saveXML(); + $this->maniaControl->manialinkManager->sendManialink($manialinkText, $login); + } + + /** + * Handles a deposit + * + * @param array $chatCallback + * @param Player $player + */ + public function actionDeposit(array $chatCallback, Player $player) { + $this->playerSettings[$player->index]["ClicksLastSecond"]++; + if ($this->playerSettings[$player->index]["ClicksLastSecond"] > 1) { + return; + } + + $planets = self::DEPOSIT_AMOUNT; + $message = '$F0FDeposit $FFF' . $planets . ' Planets $F0Fin the slot-machine.'; + + $billId = $this->maniaControl->client->sendBill($player->login, (int)$planets, $message, ''); + + $this->bills[$billId] = array($player, $planets); + } + + /** + * Handles a deposit + * + * @param array $chatCallback + * @param Player $player + */ + public function actionCashout(array $chatCallback, Player $player) { + $this->playerSettings[$player->index]["ClicksLastSecond"]++; + if ($this->playerSettings[$player->index]["ClicksLastSecond"] > 1) { + return; + } + + $balance = $this->playerSettings[$player->index]["Balance"]; + + if ($balance == 0) { + return; + } + + $message = '$09c' . $balance . '$zPlanets have been re-credited to your ManiaPlanet account! Thank you for playing Slots! Your $i$s$08fparagon$n$000$m.$fffTeam'; + + try { + $billId = $this->maniaControl->client->pay($player->login, (int)$balance, $message); + } catch(Exception $e) { + return; + } + + + $this->bills[$billId] = array($player, -$balance); + } + + + /** + * Update the database player values every minute + * + * @return bool + */ + public function updateDatabaseEveryMinute() { + $mysqli = $this->maniaControl->database->mysqli; + + // Save map dataS + $query = "UPDATE `" . self::TABLE_SLOTMACHINE . "` + SET `Balance` = ?, `Spent` = `Spent` + ?, `Won` = `Won` + ?, `Plays` = `Plays` + ? + WHERE `PlayerIndex` = ?;"; + $statement = $mysqli->prepare($query); + if ($mysqli->error) { + trigger_error($mysqli->error); + return false; + } + + foreach($this->playerSettings as $index => $player) { + $statement->bind_param('ssssi', $player["Balance"], $player["Spent"], $player["Won"], $player["Plays"], $index); + $statement->execute(); + if ($statement->error) { + trigger_error($statement->error); + } + + $slotPlayer = $this->maniaControl->playerManager->getPlayerByIndex($index); + $this->maniaControl->statisticManager->insertStat(self::STAT_SLOT_PLAY, $slotPlayer, $this->maniaControl->server->index, $player["Plays"]); + $this->maniaControl->statisticManager->insertStat(self::STAT_SLOT_WON, $slotPlayer, $this->maniaControl->server->index, $player["Won"]); + + $this->playerSettings[$index]["Spent"] = 0; + $this->playerSettings[$index]["Won"] = 0; + $this->playerSettings[$index]["Plays"] = 0; + } + + + $statement->close(); + + return true; + } + + /** + * Handle The bills + * + * @param $billCallback + */ + public function handleBillUpdated($billCallback) { + $bill = $billCallback[1]; + $billid = $bill[0]; + + + // check for known bill ID + if (array_key_exists($billid, $this->bills)) { + // get bill info + $player = $this->bills[$billid][0]; + $planets = $this->bills[$billid][1]; + + $picA = $this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_BAR); + $picB = $this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_MELONE); + $picC = $this->maniaControl->manialinkManager->iconManager->getIcon(self::ICON_PLUM); + + // check bill state + switch($bill[1]) { + case 4: // Payed (Paid) + if ($planets > 0) { //Deposit pos Planets Value + /* DEPOSIT BALANCE */ + + $this->playerSettings[$player->index]["Balance"] += $planets; + + $message = '$FF0You successfully deposited $FFF' . $planets . ' $FF0planets in your slots account! Have fun!'; + $this->maniaControl->chat->sendChat($message, $player->login); + + $this->showSlotMachine($player, $picA, $picB, $picC); + $this->updateDatabaseEveryMinute(); + } else { //Withdrawl neg Planets Value + + $this->playerSettings[$player->index]["Balance"] = 0; + + $message = '$FFF' . abs($planets) . ' $FF0Planets have been re-credited to your Maniaplanet account!'; + $this->maniaControl->chat->sendChat($message, $player->login); + + $this->updateDatabaseEveryMinute(); + + $this->showSlotMachine($player, $picA, $picB, $picC); + } + unset($this->bills[$billid]); + break; + case 5: // Refused + $message = '$FF0> $f00$iTransaction refused!'; + $this->maniaControl->chat->sendChat($message, $player->login); + unset($this->bills[$billid]); + break; + case 6: // Error + $message = '$FF0> $f00$iTransaction failed: $FFF$i ' . $bill[2]; + $this->maniaControl->chat->sendChat($message, $player->login); + unset($this->bills[$billid]); + break; + default: // CreatingTransaction/Issued/ValidatingPay(e)ment + break; + } + + } + } + + + /** + * Gets the Current Slotmachine Balance of a player + * + * @param $playerIndex + * @return int + */ + private function getBalance($playerIndex) { + $mysqli = $this->maniaControl->database->mysqli; + + /* Get Player Balance */ + $query = 'SELECT Balance FROM ' . self::TABLE_SLOTMACHINE . ' WHERE PlayerIndex=' . $playerIndex; + $res = $mysqli->query($query); + + if ($mysqli->affected_rows > 0) { + $row = $res->fetch_object(); + $balance = $row->Balance; + } else { + return 0; + } + $res->free_result(); + + return $balance; + } + + /** + * Inserts a Player into the database if he is not existing + * + * @param $playerIndex + */ + private function insertPlayerIntoDatabase($playerIndex) { + $mysqli = $this->maniaControl->database->mysqli; + $query = 'INSERT INTO ' . self::TABLE_SLOTMACHINE . ' (PlayerIndex) VALUES (' . $playerIndex . ')'; + $mysqli->query($query); + } + + /** + * Creates the Database tables + */ + private function checkDatabase() { + $mysqli = $this->maniaControl->database->mysqli; + + $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_SLOTMACHINE . "` ( + `PlayerIndex` MEDIUMINT(9) NOT NULL DEFAULT 0, + `Balance` MEDIUMINT(9) NOT NULL DEFAULT 0, + `Spent` MEDIUMINT(9) NOT NULL DEFAULT 0, + `Won` MEDIUMINT(9) NOT NULL DEFAULT 0, + `Plays` MEDIUMINT(9) NOT NULL DEFAULT 0, + UNIQUE KEY `PlayerIndex` (`PlayerIndex`) + ) ENGINE=MyISAM"; + $mysqli->query($query); + + $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_SLOTMACHINEWINS . "` ( + `PlayerIndex` mediumint(9) NOT NULL default 0, + `Won` mediumint(9) NOT NULL default 0, + `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , + KEY `PlayerIndex` (`PlayerIndex`) + ) ENGINE=MyISAM"; + $mysqli->query($query); + } + + /** + * Gets the SymbolNumber + * + * @param $arr + * @param $rand + * @return null + */ + private function getSymbolNumber($arr, $rand) { + switch($arr) { + case 1: + return $this->symbolArrayA[$rand]; + case 2: + return $this->symbolArrayB[$rand]; + case 3: + return $this->symbolArrayC[$rand]; + default: + return null; + } + } + + /** + * Initializes the Symbol Arrays + */ + private function initializeArray() { + $this->symbolArrayA = array(0, 0, 0, 0, //4 + 1, 1, 1, 1, 1, //5 + 2, 2, 2, 2, 2, 2, //6 + 3, 3, 3, 3, 3, 3, //6 + 4, 4, 4, 4, 4, 4, 4, //7 + 5, 5, 5, 5, 5, 5, 5, 5, //8 + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 //28 + ); + $this->symbolArrayB = array( //0, 0, 0, //3 + 0, 0, 1, 1, 1, 1, //4 + 2, 2, 2, 2, //4 + 3, 3, 3, 3, 3, //5 + 4, 4, 4, 4, 4, //5 + 5, 5, 5, 5, 5, 5, //6 + //6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 //37 + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6); + $this->symbolArrayC = array(0, //1 + 1, 1, //2 + 2, 2, 2, //3 + 3, 3, 3, 3, //4 + 4, 4, 4, 4, 4, 4, //6 + 5, 5, 5, 5, 5, 5, //6 + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 //42 + ); + } + + /** + * Gets the Icon link + * + * @param $symbolNumber + * @return string + */ + private function getIconLink($symbolNumber) { + switch($symbolNumber) { + case 0: + $iconName = self::ICON_BAR; + break; + case 1: + $iconName = self::ICON_CHERRY; + break; + case 2: + $iconName = self::ICON_PLUM; + break; + case 3: + $iconName = self::ICON_MELONE; + break; + case 4: + $iconName = self::ICON_ORANGE; + break; + case 5: + $iconName = self::ICON_LEMON; + break; + default: + $iconName = self::ICON_BLANK; + } + return $this->maniaControl->manialinkManager->iconManager->getIcon($iconName); + } + + /** + * Checks for a win + * + * @param $symbol1 + * @param $symbol2 + * @param $symbol3 + * @param int $buyin + * @return int + */ + private function checkWin($symbol1, $symbol2, $symbol3, $buyin = 3) { + $prize = 0; + + if ($symbol1 == 5 && $symbol2 == 5 && $symbol3 == 5) { + $prize = $buyin * 25; + } else if ($symbol1 == 4 && $symbol2 == 4 && $symbol3 == 4) { + $prize = $buyin * 50; + } else if ($symbol1 == 3 && $symbol2 == 3 && $symbol3 == 3) { + $prize = $buyin * 100; + } else if ($symbol1 == 2 && $symbol2 == 2 && $symbol3 == 2) { + $prize = $buyin * 200; + } else if ($symbol1 == 1 && $symbol2 == 1 && $symbol3 == 1) { + $prize = $buyin * 1000; + } else if ($symbol1 == 0 && $symbol2 == 0 && $symbol3 == 0) { + $prize = $buyin * 5000; + } else if ($symbol1 == 1 && $symbol2 == 1 || $symbol1 == 1 && $symbol3 == 1 || $symbol2 == 1 && $symbol3 == 1) { + $prize = $buyin * 10; + } else if ($symbol1 == 1 || $symbol2 == 1 || $symbol3 == 1) { + $prize = $buyin * 2; + } + return $prize; + } + + /** + * Unload the plugin and its resources + */ + public function unload() { + $emptyManialink = new ManiaLink(self::SLOT_MAIN_ML); + $manialinkText = $emptyManialink->render()->saveXML(); + $this->maniaControl->manialinkManager->sendManialink($manialinkText); + + $emptyManialink = new ManiaLink(self::SLOT_ICON_ML); + $manialinkText = $emptyManialink->render()->saveXML(); + $this->maniaControl->manialinkManager->sendManialink($manialinkText); + + $this->maniaControl->callbackManager->unregisterCallbackListener($this); + $this->maniaControl->manialinkManager->unregisterManialinkPageAnswerListener($this); + unset($this->maniaControl); + } + + /** + * Get plugin id + * + * @return int + */ + public static function getId() { + return self::PLUGIN_ID; + } + + /** + * Get Plugin Name + * + * @return string + */ + public static function getName() { + return self::PLUGIN_NAME; + } + + /** + * Get Plugin Version + * + * @return float,, + */ + public static function getVersion() { + return self::PLUGIN_VERSION; + } + + /** + * Get Plugin Author + * + * @return string + */ + public static function getAuthor() { + return self::PLUGIN_AUTHOR; + } + + /** + * Get Plugin Description + * + * @return string + */ + public static function getDescription() { + return null; + } +} \ No newline at end of file