diff --git a/sources/Chat/ChatAPI.uc b/sources/Chat/ChatAPI.uc
index b8601bc..4a885c8 100644
--- a/sources/Chat/ChatAPI.uc
+++ b/sources/Chat/ChatAPI.uc
@@ -1,6 +1,8 @@
/**
- * API that provides functions for working with chat.
- * Copyright 2022 Anton Tarasenko
+ * Author: dkanus
+ * Home repo: https://www.insultplayers.ru/git/AcediaFramework/AcediaCore
+ * License: GPL
+ * Copyright 2022-2023 Anton Tarasenko
*------------------------------------------------------------------------------
* This file is part of Acedia.
*
@@ -17,34 +19,30 @@
* You should have received a copy of the GNU General Public License
* along with Acedia. If not, see .
*/
-class ChatAPI extends AcediaObject;
+class ChatApi extends AcediaObject;
var protected bool connectedToBroadcastAPI;
-var protected ChatAPI_OnMessage_Signal onMessageSignal;
-var protected ChatAPI_OnMessageFor_Signal onMessageForSignal;
+var protected ChatAPI_OnMessage_Signal onMessageSignal;
+var protected ChatAPI_OnMessageFor_Signal onMessageForSignal;
-protected function Constructor()
-{
- onMessageSignal = ChatAPI_OnMessage_Signal(
- _.memory.Allocate(class'ChatAPI_OnMessage_Signal'));
- onMessageForSignal = ChatAPI_OnMessageFor_Signal(
- _.memory.Allocate(class'ChatAPI_OnMessageFor_Signal'));
+protected function Constructor() {
+ onMessageSignal = ChatAPI_OnMessage_Signal(_.memory.Allocate(class'ChatAPI_OnMessage_Signal'));
+ onMessageForSignal =
+ ChatAPI_OnMessageFor_Signal(_.memory.Allocate(class'ChatAPI_OnMessageFor_Signal'));
}
-protected function Finalizer()
-{
+protected function Finalizer() {
_.memory.Free(onMessageSignal);
_.memory.Free(onMessageForSignal);
- onMessageSignal = none;
- onMessageForSignal = none;
+ onMessageSignal = none;
+ onMessageForSignal = none;
_server.unreal.broadcasts.OnHandleText(self).Disconnect();
_server.unreal.broadcasts.OnHandleTextFor(self).Disconnect();
connectedToBroadcastAPI = false;
}
-private final function TryConnectingBroadcastSignals()
-{
+private final function TryConnectingBroadcastSignals() {
if (connectedToBroadcastAPI) {
return;
}
@@ -53,76 +51,73 @@ private final function TryConnectingBroadcastSignals()
_server.unreal.broadcasts.OnHandleTextFor(self).connect = HandleTextFor;
}
-/**
- * Signal that will be emitted when a player sends a message into the chat.
- * Allows to modify message before sending it, as well as prevent it from
- * being sent at all.
- *
- * Return `false` to prevent message from being sent.
- * If `false` is returned, signal propagation to the remaining handlers will
- * also be interrupted.
- *
- * [Signature]
- * bool (EPlayer sender, MutableText message, bool teamMessage)
- *
- * @param sender `EPlayer` that has sent the message.
- * @param message Message that `sender` has sent. This is a mutable
- * variable and can be modified from message will be sent.
- * @param teamMessage Is this a team message
- * (to be sent only to players on the same team)?
- * @return Return `false` to prevent this message from being sent at all
- * and `true` otherwise. Message will be sent only if all handlers will
- * return `true`.
- */
-/* SIGNAL */
-public function ChatAPI_OnMessage_Slot OnMessage(
- AcediaObject receiver)
-{
+/// Signal that will be emitted when a player sends a message into the chat.
+///
+/// Allows to modify message before sending it, as well as prevent it from being sent at all.
+///
+/// Return `false` to prevent message from being sent.
+/// If `false` is returned, signal propagation to the remaining handlers will also be interrupted.
+///
+/// # Slot description
+///
+/// bool (EPlayer sender, MutableText message, bool teamMessage)
+///
+/// ## Parameters
+///
+/// * [`sender`]: `EPlayer` that has sent the message.
+/// * [`message`]: Message that `sender` has sent.
+/// This is a mutable variable and can be modified from message will be sent.
+/// * [`teamMessage`]: Is this a team message (to be sent only to players on the same team)?
+///
+/// ## Returns
+///
+/// Return `false` to prevent this message from being sent at all and `true` otherwise.
+/// Message will be sent only if all handlers will return `true`.
+public /*signal*/ function ChatAPI_OnMessage_Slot OnMessage(AcediaObject receiver) {
TryConnectingBroadcastSignals();
return ChatAPI_OnMessage_Slot(onMessageSignal.NewSlot(receiver));
}
-/**
- * Signal that will be emitted when a player sends a message into the chat.
- * Allows to modify message before sending it, as well as prevent it from
- * being sent at all.
- *
- * Return `false` to prevent message from being sent to a specific player.
- * If `false` is returned, signal propagation to the remaining handlers will
- * also be interrupted.
- *
- * [Signature]
- * bool (EPlayer receiver, EPlayer sender, BaseText message)
- *
- * @param receiver `EPlayer` that will receive the message.
- * @param sender `EPlayer` that has sent the message.
- * @param message Message that `sender` has sent. This is an immutable
- * variable and cannot be changed at this point. Use `OnMessage()`
- * signal function for that.
- * @return Return `false` to prevent this message from being sent to
- * a particular player and `true` otherwise. Message will be sent only if
- * all handlers will return `true`.
- * However decision whether to send message or not is made for
- * every player separately.
- */
-/* SIGNAL */
-public function ChatAPI_OnMessageFor_Slot OnMessageFor(
- AcediaObject receiver)
-{
+/// Signal that will be emitted when a player sends a message into the chat.
+///
+/// Allows to modify message before sending it, as well as prevent it from being sent at all.
+///
+/// Return `false` to prevent message from being sent to a specific player.
+/// If `false` is returned, signal propagation to the remaining handlers will also be interrupted.
+///
+/// # Slot description
+///
+/// bool (EPlayer receiver, EPlayer sender, BaseText message)
+///
+/// ## Parameters
+///
+/// * [`receiver`]: `EPlayer` that will receive the message.
+/// * [`sender`]: `EPlayer` that has sent the message.
+/// * [`message`]: Message that `sender` has sent. This is an immutable variable and cannot
+/// be changed at this point. Use `OnMessage()` signal function for that.
+///
+/// ## Returns
+///
+/// Return `false` to prevent this message from being sent to a particular player and
+/// `true` otherwise.
+/// Message will be sent only if all handlers will return `true`.
+/// However decision whether to send message or not is made for every player separately.
+public /*signal*/ function ChatAPI_OnMessageFor_Slot OnMessageFor(AcediaObject receiver) {
TryConnectingBroadcastSignals();
return ChatAPI_OnMessageFor_Slot(onMessageForSignal.NewSlot(receiver));
}
private function bool HandleText(
- Actor sender,
- out string message,
- name messageType,
- bool teamMessage)
-{
- local bool result;
- local MutableText messageAsText;
- local EPlayer senderPlayer;
- // We only want to catch chat messages from a player
+ Actor sender,
+ out string message,
+ name messageType,
+ bool teamMessage
+) {
+ local bool result;
+ local MutableText messageAsText;
+ local EPlayer senderPlayer;
+
+ // We only want to catch chat messages from a player
if (messageType != 'Say' && messageType != 'TeamSay') return true;
senderPlayer = _.players.FromController(PlayerController(sender));
if (senderPlayer == none) return true;
@@ -145,34 +140,32 @@ private function bool HandleText(
}
private function bool HandleTextFor(
- PlayerController receiver,
- Actor sender,
- out string message,
- name messageType)
-{
- local bool result;
- local Text messageAsText;
- local EPlayer senderPlayer, receiverPlayer;
- // We only want to catch chat messages from another player
+ PlayerController receiver,
+ Actor sender,
+ out string message,
+ name messageType
+) {
+ local bool result;
+ local Text messageAsText;
+ local EPlayer senderPlayer, receiverPlayer;
+
+ // We only want to catch chat messages from another player
if (messageType != 'Say' && messageType != 'TeamSay') return true;
senderPlayer = _.players.FromController(PlayerController(sender));
if (senderPlayer == none) return true;
receiverPlayer = _.players.FromController(receiver);
- if (receiverPlayer == none)
- {
+ if (receiverPlayer == none) {
_.memory.Free(senderPlayer);
return true;
}
messageAsText = __().text.FromColoredString(message);
- result = onMessageForSignal.Emit( receiverPlayer, senderPlayer,
- messageAsText);
+ result = onMessageForSignal.Emit(receiverPlayer, senderPlayer, messageAsText);
_.memory.Free(messageAsText);
_.memory.Free(senderPlayer);
_.memory.Free(receiverPlayer);
return result;
}
-defaultproperties
-{
+defaultproperties {
}
\ No newline at end of file