Added formatMessage to Chat, and used it in LocalRecordsPlugin first
This commit is contained in:
parent
1071c46b5b
commit
cb84df401a
@ -10,7 +10,9 @@ use ManiaControl\Communication\CommunicationListener;
|
|||||||
use ManiaControl\Communication\CommunicationMethods;
|
use ManiaControl\Communication\CommunicationMethods;
|
||||||
use ManiaControl\General\UsageInformationAble;
|
use ManiaControl\General\UsageInformationAble;
|
||||||
use ManiaControl\General\UsageInformationTrait;
|
use ManiaControl\General\UsageInformationTrait;
|
||||||
|
use ManiaControl\Maps\Map;
|
||||||
use ManiaControl\Players\Player;
|
use ManiaControl\Players\Player;
|
||||||
|
use ManiaControl\Utils\Formatter;
|
||||||
use Maniaplanet\DedicatedServer\Xmlrpc\UnknownPlayerException;
|
use Maniaplanet\DedicatedServer\Xmlrpc\UnknownPlayerException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,8 +32,11 @@ class Chat implements CallbackListener, CommunicationListener, UsageInformationA
|
|||||||
const SETTING_FORMAT_INFORMATION = 'Information Format';
|
const SETTING_FORMAT_INFORMATION = 'Information Format';
|
||||||
const SETTING_FORMAT_SUCCESS = 'Success Format';
|
const SETTING_FORMAT_SUCCESS = 'Success Format';
|
||||||
const SETTING_FORMAT_USAGEINFO = 'UsageInfo Format';
|
const SETTING_FORMAT_USAGEINFO = 'UsageInfo Format';
|
||||||
|
const SETTING_FORMAT_MESSAGE_INPUT_COLOR = 'Format Message Input Color';
|
||||||
|
const SETTING_FORMAT_MESSAGE_MAP_AUTHOR = 'Format Message Add Map Author';
|
||||||
|
const SETTING_FORMAT_MESSAGE_PLAYER_LOGIN = 'Format Message Add Player Login';
|
||||||
const SETTING_PUBLIC_PREFIX = 'Public Messages Prefix';
|
const SETTING_PUBLIC_PREFIX = 'Public Messages Prefix';
|
||||||
const SETTING_PRIVATE_PREFIX = 'Privat Messages Prefix';
|
const SETTING_PRIVATE_PREFIX = 'Private Messages Prefix';
|
||||||
const CHAT_BUFFER_SIZE = 200;
|
const CHAT_BUFFER_SIZE = 200;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -54,6 +59,9 @@ class Chat implements CallbackListener, CommunicationListener, UsageInformationA
|
|||||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_FORMAT_INFORMATION, '$fff');
|
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_FORMAT_INFORMATION, '$fff');
|
||||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_FORMAT_SUCCESS, '$0f0');
|
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_FORMAT_SUCCESS, '$0f0');
|
||||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_FORMAT_USAGEINFO, '$f80');
|
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_FORMAT_USAGEINFO, '$f80');
|
||||||
|
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_FORMAT_MESSAGE_INPUT_COLOR, '$fff');
|
||||||
|
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_FORMAT_MESSAGE_MAP_AUTHOR, false);
|
||||||
|
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_FORMAT_MESSAGE_PLAYER_LOGIN, false);
|
||||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PUBLIC_PREFIX, '» ');
|
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PUBLIC_PREFIX, '» ');
|
||||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PRIVATE_PREFIX, '»» ');
|
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PRIVATE_PREFIX, '»» ');
|
||||||
|
|
||||||
@ -156,6 +164,43 @@ class Chat implements CallbackListener, CommunicationListener, UsageInformationA
|
|||||||
return new CommunicationAnswer();
|
return new CommunicationAnswer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format the given message with the given inputs and colors the inputs.
|
||||||
|
* @param string $message
|
||||||
|
* @param mixed ...$inputs
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function formatMessage($message, ...$inputs) {
|
||||||
|
$addMapAuthor = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_FORMAT_MESSAGE_MAP_AUTHOR);
|
||||||
|
$addPlayerLogin = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_FORMAT_MESSAGE_PLAYER_LOGIN);
|
||||||
|
$formatInputColor = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_FORMAT_MESSAGE_INPUT_COLOR);
|
||||||
|
|
||||||
|
$formattedInputs = array($message);
|
||||||
|
foreach ($inputs as $input) {
|
||||||
|
$strInput = null;
|
||||||
|
|
||||||
|
if (is_bool($input)) {
|
||||||
|
$strInput = $input ? 'true' : 'false';
|
||||||
|
} elseif ($input instanceof Map) {
|
||||||
|
$strInput = $input->getEscapedName();
|
||||||
|
if ($addMapAuthor) {
|
||||||
|
$strInput .= " (by {$input->authorLogin})";
|
||||||
|
}
|
||||||
|
} elseif ($input instanceof Player) {
|
||||||
|
$strInput = $input->getEscapedNickname();
|
||||||
|
if ($addPlayerLogin) {
|
||||||
|
$strInput .= " ({$input->login})";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$strInput = strval($input);
|
||||||
|
}
|
||||||
|
|
||||||
|
array_push($formattedInputs, Formatter::escapeText($formatInputColor . $strInput));
|
||||||
|
}
|
||||||
|
|
||||||
|
return call_user_func_array('sprintf', $formattedInputs);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores the ChatMessage in the Buffer
|
* Stores the ChatMessage in the Buffer
|
||||||
*
|
*
|
||||||
|
@ -43,7 +43,7 @@ class LocalRecordsPlugin implements CallbackListener, CallQueueListener, Command
|
|||||||
* Constants
|
* Constants
|
||||||
*/
|
*/
|
||||||
const ID = 7;
|
const ID = 7;
|
||||||
const VERSION = 0.81;
|
const VERSION = 0.82;
|
||||||
const NAME = 'Local Records Plugin';
|
const NAME = 'Local Records Plugin';
|
||||||
const AUTHOR = 'MCTeam';
|
const AUTHOR = 'MCTeam';
|
||||||
const MLID_RECORDS = 'ml_local_records';
|
const MLID_RECORDS = 'ml_local_records';
|
||||||
@ -516,7 +516,7 @@ class LocalRecordsPlugin implements CallbackListener, CallQueueListener, Command
|
|||||||
$checkpointsString = $this->getCheckpoints($player->login);
|
$checkpointsString = $this->getCheckpoints($player->login);
|
||||||
$this->checkpoints[$player->login] = array();
|
$this->checkpoints[$player->login] = array();
|
||||||
|
|
||||||
$message = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_NOTIFICATION_MESSAGE_PREFIX);
|
$messagePrefix = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_NOTIFICATION_MESSAGE_PREFIX);
|
||||||
$notifyPrivatelyAt = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_NOTIFY_BEST_RECORDS_PRIVATE);
|
$notifyPrivatelyAt = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_NOTIFY_BEST_RECORDS_PRIVATE);
|
||||||
$notifyPubliclyAt = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_NOTIFY_BEST_RECORDS_PUBLIC);
|
$notifyPubliclyAt = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_NOTIFY_BEST_RECORDS_PUBLIC);
|
||||||
|
|
||||||
@ -528,13 +528,13 @@ class LocalRecordsPlugin implements CallbackListener, CallQueueListener, Command
|
|||||||
return;
|
return;
|
||||||
} else if ($oldRecord->time == $time) {
|
} else if ($oldRecord->time == $time) {
|
||||||
// Same time
|
// Same time
|
||||||
if ($notifyPubliclyAt < $oldRecord->rank && $oldRecord->rank <= $notifyPrivatelyAt) {
|
$isPM = ($notifyPubliclyAt < $oldRecord->rank && $oldRecord->rank <= $notifyPrivatelyAt);
|
||||||
$message .= 'You';
|
$message = $this->maniaControl->getChat()->formatMessage(
|
||||||
} else {
|
$messagePrefix . '%s equalized the %s Local Record: %s!',
|
||||||
$message .= '$<$fff' . $player->nickname . '$>';
|
($isPM ? 'You' : $player),
|
||||||
}
|
'$ff0' . $oldRecord->rank . '.',
|
||||||
$message .= ' equalized the $<$ff0' . $oldRecord->rank . '.$> Local Record:';
|
Formatter::formatTime($oldRecord->time)
|
||||||
$message .= ' $<$fff' . Formatter::formatTime($oldRecord->time) . '$>!';
|
);
|
||||||
|
|
||||||
if ($oldRecord->rank <= $notifyPubliclyAt) {
|
if ($oldRecord->rank <= $notifyPubliclyAt) {
|
||||||
$this->maniaControl->getCallQueueManager()->registerListening(
|
$this->maniaControl->getCallQueueManager()->registerListening(
|
||||||
@ -581,21 +581,20 @@ class LocalRecordsPlugin implements CallbackListener, CallQueueListener, Command
|
|||||||
$newRecord = $this->getLocalRecord($map, $player);
|
$newRecord = $this->getLocalRecord($map, $player);
|
||||||
$improvedRank = ($oldRecord && $newRecord->rank >= $oldRecord->rank);
|
$improvedRank = ($oldRecord && $newRecord->rank >= $oldRecord->rank);
|
||||||
|
|
||||||
if ($notifyPubliclyAt < $newRecord->rank && $newRecord->rank <= $notifyPrivatelyAt) {
|
$isPM = ($notifyPubliclyAt < $newRecord->rank && $newRecord->rank <= $notifyPrivatelyAt);
|
||||||
$message .= 'You';
|
$message = $this->maniaControl->getChat()->formatMessage(
|
||||||
} else {
|
$messagePrefix . '%s ' . ($improvedRank ? 'improved' : 'gained') . ' the %s Local Record: %s!',
|
||||||
$message .= '$<$fff' . $player->nickname . '$>';
|
($isPM ? 'You' : $player),
|
||||||
}
|
'$ff0' . $newRecord->rank . '.',
|
||||||
$message .= ' ' . ($improvedRank ? 'improved' : 'gained') . ' the';
|
Formatter::formatTime($newRecord->time)
|
||||||
$message .= ' $<$ff0' . $newRecord->rank . '.$> Local Record:';
|
);
|
||||||
$message .= ' $<$fff' . Formatter::formatTime($newRecord->time) . '$>!';
|
|
||||||
if ($oldRecord) {
|
if ($oldRecord) {
|
||||||
$message .= ' (';
|
|
||||||
if ($improvedRank) {
|
|
||||||
$message .= '$<$ff0' . $oldRecord->rank . '.$> ';
|
|
||||||
}
|
|
||||||
$timeDiff = $oldRecord->time - $newRecord->time;
|
$timeDiff = $oldRecord->time - $newRecord->time;
|
||||||
$message .= '$<$fff-' . Formatter::formatTime($timeDiff) . '$>)';
|
$message .= $this->maniaControl->getChat()->formatMessage(
|
||||||
|
' (%s%s)',
|
||||||
|
($improvedRank ? '$ff0'.$oldRecord->rank.'. ' : ''),
|
||||||
|
'-'.Formatter::formatTime($timeDiff)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($newRecord->rank <= $notifyPubliclyAt) {
|
if ($newRecord->rank <= $notifyPubliclyAt) {
|
||||||
@ -710,7 +709,11 @@ class LocalRecordsPlugin implements CallbackListener, CallQueueListener, Command
|
|||||||
|
|
||||||
$commandParts = explode(' ', $chat[1][2]);
|
$commandParts = explode(' ', $chat[1][2]);
|
||||||
if (count($commandParts) < 2 || strlen($commandParts[1]) == 0) {
|
if (count($commandParts) < 2 || strlen($commandParts[1]) == 0) {
|
||||||
$this->maniaControl->getChat()->sendUsageInfo('Missing CSV-Filename ID! (Example: //exportrecs locals.csv)', $player);
|
$message = $this->maniaControl->getChat()->formatMessage(
|
||||||
|
'Missing CSV-Filename! (Example %s)',
|
||||||
|
'//exportrecs locals.csv'
|
||||||
|
);
|
||||||
|
$this->maniaControl->getChat()->sendUsageInfo($message, $player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -758,7 +761,12 @@ class LocalRecordsPlugin implements CallbackListener, CallQueueListener, Command
|
|||||||
$this->maniaControl->getChat()->sendException($e, $player);
|
$this->maniaControl->getChat()->sendException($e, $player);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->maniaControl->getChat()->sendSuccess('Successfully exported Local Records of map ' . $map->getEscapedName() . ' to $<$fff' . $filename . '$>!');
|
$message = $this->maniaControl->getChat()->formatMessage(
|
||||||
|
'Exported Local Records of %s to %s!',
|
||||||
|
$map,
|
||||||
|
$filename
|
||||||
|
);
|
||||||
|
$this->maniaControl->getChat()->sendSuccess($message, $player);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -872,7 +880,11 @@ class LocalRecordsPlugin implements CallbackListener, CallQueueListener, Command
|
|||||||
|
|
||||||
$commandParts = explode(' ', $chat[1][2]);
|
$commandParts = explode(' ', $chat[1][2]);
|
||||||
if (count($commandParts) < 2 || strlen($commandParts[1]) == 0) {
|
if (count($commandParts) < 2 || strlen($commandParts[1]) == 0) {
|
||||||
$this->maniaControl->getChat()->sendUsageInfo('Missing Record ID! (Example: //delrec 3)', $player);
|
$message = $this->maniaControl->getChat()->formatMessage(
|
||||||
|
'Missing Record ID! (Example: %s)',
|
||||||
|
'//delrec 3'
|
||||||
|
);
|
||||||
|
$this->maniaControl->getChat()->sendUsageInfo($message, $player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -880,13 +892,26 @@ class LocalRecordsPlugin implements CallbackListener, CallQueueListener, Command
|
|||||||
$currentMap = $this->maniaControl->getMapManager()->getCurrentMap();
|
$currentMap = $this->maniaControl->getMapManager()->getCurrentMap();
|
||||||
$records = $this->getLocalRecords($currentMap);
|
$records = $this->getLocalRecords($currentMap);
|
||||||
if ($recordRank <= 0 || count($records) < $recordRank) {
|
if ($recordRank <= 0 || count($records) < $recordRank) {
|
||||||
$this->maniaControl->getChat()->sendError('Cannot remove record $<$fff' . $recordRank . '$>!', $player);
|
$message = $this->maniaControl->getChat()->formatMessage(
|
||||||
|
'Cannot remove record no. %s, does not exist!',
|
||||||
|
$recordRank
|
||||||
|
);
|
||||||
|
$this->maniaControl->getChat()->sendError($message, $player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert($recordRank == $records[$recordRank-1]->rank);
|
assert($recordRank == $records[$recordRank-1]->rank);
|
||||||
$playerIndex = $records[$recordRank-1]->playerIndex;
|
$playerIndex = $records[$recordRank-1]->playerIndex;
|
||||||
$playerNick = $records[$recordRank-1]->nickname;
|
$recordPlayer = $this->maniaControl->getPlayerManager()->getPlayerByIndex($playerIndex);
|
||||||
|
if (!$recordPlayer) {
|
||||||
|
// should never happen, but you never know
|
||||||
|
$message = $this->maniaControl->getChat()->formatMessage(
|
||||||
|
'Cannot remove record no. %s, player does not exist!',
|
||||||
|
$recordRank
|
||||||
|
);
|
||||||
|
$this->maniaControl->getChat()->sendError($message, $player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$mysqli = $this->maniaControl->getDatabase()->getMysqli();
|
$mysqli = $this->maniaControl->getDatabase()->getMysqli();
|
||||||
$query = "DELETE FROM `" . self::TABLE_RECORDS . "`
|
$query = "DELETE FROM `" . self::TABLE_RECORDS . "`
|
||||||
@ -899,7 +924,12 @@ class LocalRecordsPlugin implements CallbackListener, CallQueueListener, Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->maniaControl->getCallbackManager()->triggerCallback(self::CB_LOCALRECORDS_CHANGED, null);
|
$this->maniaControl->getCallbackManager()->triggerCallback(self::CB_LOCALRECORDS_CHANGED, null);
|
||||||
$this->maniaControl->getChat()->sendSuccess('Record no. $<$fff' . $recordRank . '$> by $<$fff' . $playerNick . '$> has been removed!');
|
$message = $this->maniaControl->getChat()->formatMessage(
|
||||||
|
'Record no. %s by %s has been removed!',
|
||||||
|
$recordRank,
|
||||||
|
$recordPlayer
|
||||||
|
);
|
||||||
|
$this->maniaControl->getChat()->sendSuccess($message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -941,7 +971,11 @@ class LocalRecordsPlugin implements CallbackListener, CallQueueListener, Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->maniaControl->getCallbackManager()->triggerCallback(self::CB_LOCALRECORDS_CHANGED, null);
|
$this->maniaControl->getCallbackManager()->triggerCallback(self::CB_LOCALRECORDS_CHANGED, null);
|
||||||
$this->maniaControl->getChat()->sendSuccess('$<$fff'.$player->getEscapedNickname().'$> removed his personal record!');
|
$message = $this->maniaControl->getChat()->formatMessage(
|
||||||
|
'%s removed his personal record!',
|
||||||
|
$player
|
||||||
|
);
|
||||||
|
$this->maniaControl->getChat()->sendSuccess($message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user