diff --git a/application/core/ManiaExchange/ManiaExchangeInfoSearcher.php b/application/core/ManiaExchange/ManiaExchangeInfoSearcher.php index c2fc32cf..7e05de59 100644 --- a/application/core/ManiaExchange/ManiaExchangeInfoSearcher.php +++ b/application/core/ManiaExchange/ManiaExchangeInfoSearcher.php @@ -35,6 +35,7 @@ class ManiaExchangeInfoSearcher { //TODO rename to ManiaExchangeManager * Private Propertieswc */ private $maniaControl = null; + private $mxIdUidVector = array(); /** * Construct map manager @@ -69,7 +70,15 @@ class ManiaExchangeInfoSearcher { //TODO rename to ManiaExchangeManager if($saveMapStatement->error) { trigger_error($saveMapStatement->error); } - $map = $this->maniaControl->mapManager->getMapByUid($mxMapInfo->uid); + + //Take the uid out of the vektor + if(isset($this->mxIdUidVector[$mxMapInfo->id])) { + $uid = $this->mxIdUidVector[$mxMapInfo->id]; + } else { + $uid = $mxMapInfo->uid; + } + $map = $this->maniaControl->mapManager->getMapByUid($uid); + /** @var Map $map */ $map->mx = $mxMapInfo; } @@ -110,11 +119,13 @@ class ManiaExchangeInfoSearcher { //TODO rename to ManiaExchangeManager //Set changed time into the map object $map->lastUpdate = strtotime($changed); - //if($mxId != null) { //TODO not working due a fail on mx - // $mapIdString .= $mxId . ','; - //} else { - $mapIdString .= $map->uid . ','; - //} + if($mxId != 0) { + $mapIdString .= $mxId . ','; + //Set the mx id to the mxidmapvektor + $this->mxIdUidVector[$mxId] = $map->uid; + } else { + $mapIdString .= $map->uid . ','; + } $id++; diff --git a/application/core/Maps/MapManager.php b/application/core/Maps/MapManager.php index 6816c7fc..af340d11 100644 --- a/application/core/Maps/MapManager.php +++ b/application/core/Maps/MapManager.php @@ -260,7 +260,7 @@ class MapManager implements CallbackListener { * Returns map By UID * * @param $uid - * @return mixed + * @return Map array */ public function getMapByUid($uid) { if(!isset($this->maps[$uid])) { diff --git a/application/plugins/CustomVotes.php b/application/plugins/CustomVotes.php index 0bfe947c..d93a4b3c 100644 --- a/application/plugins/CustomVotes.php +++ b/application/plugins/CustomVotes.php @@ -34,6 +34,15 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP const PLUGIN_NAME = 'CustomVotesPlugin'; const PLUGIN_AUTHOR = 'kremsy and steeffeen'; + const SETTING_WIDGET_POSX = 'Widget-Position: X'; + const SETTING_WIDGET_POSY = 'Widget-Position: Y'; + const SETTING_WIDGET_WIDTH = 'Widget-Size: Width'; + const SETTING_WIDGET_HEIGHT = 'Widget-Size: Height'; + const SETTING_VOTE_TIME = 'Voting Time'; + const SETTING_DEFAULT_RATIO = 'Default Success Ratio'; + const SETTING_SPECTATOR_ALLOW_VOTE = 'Allow Specators to vote'; + const SETTING_SPECTATOR_ALLOW_START_VOTE = 'Allow Specators to start a vote'; + const MLID_WIDGET = 'CustomVotesPlugin.WidgetId'; const VOTE_FOR_ACTION = '1'; @@ -56,6 +65,8 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP private $currentVoteExpireTime = 0; private $playersVoted = array(); private $playersVotedPositiv = 0; + /** @var Player $voter */ + private $voter = null; /** * Load the plugin @@ -72,6 +83,19 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_1_SECOND, $this, 'handle1Second'); $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_POSITIVE_VOTE, $this, 'handlePositiveVote'); $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_NEGATIVE_VOTE, $this, 'handleNegativeVote'); + + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, 'handleManialinkPageAnswer'); + + + $this->maniaControl->settingManager->initSetting($this, self::SETTING_WIDGET_POSX, 160 - 42 - 15); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_WIDGET_POSY, 90 - 2 - 15); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_WIDGET_WIDTH, 30); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_WIDGET_HEIGHT, 25); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_DEFAULT_RATIO, 0.65); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_SPECTATOR_ALLOW_VOTE, false); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_SPECTATOR_ALLOW_START_VOTE, false); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_VOTE_TIME, 60); + return true; } @@ -98,6 +122,9 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP } + public function handleManialinkPageAnswer(array $callback){ + var_dump($callback); + } /** * Defines a Vote * @@ -110,40 +137,67 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP /** * Starts a vote * - * @param $player - * @param $voteName + * @param \ManiaControl\Players\Player $player + * @param $voteName */ - public function startVote($player, $voteName) { + public function startVote(Player $player, $voteName) { if($this->maniaControl->playerManager->playerActions->isPlayerMuted($player)) { return; } + + if($player->isSpectator && !$this->maniaControl->settingManager->getSetting($this, self::SETTING_SPECTATOR_ALLOW_START_VOTE)) { + return; + } + $this->maniaControl->chat->sendChat("Vote started"); $this->currentVote = $voteName; $this->currentVoteExpireTime = time() + 60; //TODO as setting $this->playersVoted[$player->login] = self::VOTE_FOR_ACTION; $this->playersVotedPositiv++; + + $this->voter = $player; } + /** + * Handles a Positive Vote + * + * @param array $callback + * @param Player $player + */ public function handlePositiveVote(array $callback, Player $player) { - if(isset($this->playersVoted[$player->login])){ - if($this->playersVoted[$player->login] == self::VOTE_AGAINST_ACTION){ + if($player->isSpectator && !$this->maniaControl->settingManager->getSetting($this, self::SETTING_SPECTATOR_ALLOW_VOTE)) { + return; + } + + if(isset($this->playersVoted[$player->login])) { + if($this->playersVoted[$player->login] == self::VOTE_AGAINST_ACTION) { $this->playersVoted[$player->login] = self::VOTE_FOR_ACTION; $this->playersVotedPositiv++; } - }else{ + } else { $this->playersVoted[$player->login] = self::VOTE_FOR_ACTION; $this->playersVotedPositiv++; } } + /** + * Handles a negative Vote + * + * @param array $callback + * @param Player $player + */ public function handleNegativeVote(array $callback, Player $player) { - if(isset($this->playersVoted[$player->login])){ - if($this->playersVoted[$player->login] == self::VOTE_FOR_ACTION){ + if($player->isSpectator && !$this->maniaControl->settingManager->getSetting($this, self::SETTING_SPECTATOR_ALLOW_VOTE)) { + return; + } + + if(isset($this->playersVoted[$player->login])) { + if($this->playersVoted[$player->login] == self::VOTE_FOR_ACTION) { $this->playersVoted[$player->login] = self::VOTE_AGAINST_ACTION; $this->playersVotedPositiv--; } - }else{ + } else { $this->playersVoted[$player->login] = self::VOTE_AGAINST_ACTION; } } @@ -170,24 +224,23 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP $emptyManialink = new ManiaLink(self::MLID_WIDGET); $manialinkText = $emptyManialink->render()->saveXML(); $this->maniaControl->manialinkManager->sendManialink($manialinkText); + + $voter = null; } } private function showVoteWidget($timeUntilExpire, $votePercentage) { - //$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); - $pos_x = 160 - 42 - 15; - $pos_y = 90 - 2 - 15; - $width = 30; - $height = 25; + $pos_x = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_POSX); + $pos_y = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_POSY); + $width = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_WIDTH); + $height = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_HEIGHT); $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadStyle(); $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadSubstyle(); $labelStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultLabelStyle(); $maniaLink = new ManiaLink(self::MLID_WIDGET); + //$script = new Script(); //$maniaLink->setScript($script); @@ -203,37 +256,45 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP $backgroundQuad->setSize($width, $height); $backgroundQuad->setStyles($quadStyle, $quadSubstyle); + /*$keyQuad = new Quad(); + $frame->add($keyQuad); + $keyQuad->setPosition(500,500); + $keyQuad->setAction(382009003);*/ + + $label = new Label_Text(); $frame->add($label); $label->setY($height / 2 - 4); $label->setAlign(Control::CENTER, Control::CENTER); $label->setSize($width - 5, $height); - $label->setTextSize(1.6); - $label->setText('Vote'); - $label->setTextColor("900"); + $label->setTextSize(1.3); + $label->setText('Vote for ' . $this->currentVote); + //$label->setTextColor("900"); - $label = new Label_Text(); + /*$label = new Label_Text(); $frame->add($label); $label->setY($height / 2 - 7); $label->setAlign(Control::CENTER, Control::CENTER); $label->setSize($width - 5, $height); $label->setTextSize(1.3); $label->setText($this->currentVote); - $label->setTextColor("F00"); + $label->setTextColor("F00");*/ + //Started by nick $label = new Label_Text(); $frame->add($label); - $label->setY($height / 2 - 10); + $label->setY($height / 2 - 7); $label->setAlign(Control::CENTER, Control::CENTER); - $label->setSize($width - 5, $height); - $label->setTextSize(1.3); - $label->setText("Time left: " . $timeUntilExpire . "s"); - $label->setTextColor("FFF"); + $label->setSize($width - 5, 2); + $label->setTextSize(1); + $label->setTextColor("F80"); + $label->setText("Started by " . $this->voter->nickname); //Time Gaunge $timeGauge = new Gauge(); $frame->add($timeGauge); + $timeGauge->setY(0); $timeGauge->setSize($width * 0.95, 6); $timeGauge->setDrawBg(false); $maxTime = 60; //TODO set maxtime @@ -242,6 +303,16 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP $gaugeColor = ColorUtil::floatToStatusColor($timeGaugeRatio); $timeGauge->setColor($gaugeColor . '9'); + //Time Left + $label = new Label_Text(); + $frame->add($label); + $label->setY(-2); + $label->setAlign(Control::CENTER, Control::CENTER); + $label->setSize($width - 5, $height); + $label->setTextSize(1.3); + $label->setText("Time left: " . $timeUntilExpire . "s"); + $label->setTextColor("FFF"); + //Vote Gauge $voteGauge = new Gauge(); $frame->add($voteGauge); @@ -278,7 +349,7 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP $label->setY($y); $label->setStyle($labelStyle); $label->setTextSize(1); - $label->setSize(3,3); + $label->setSize(3, 3); $label->setTextColor("F00"); $label->setText("F1");