Browse Source

Add `OnVoiceMessage()` signal function to `ChatApi`

pull/14/head
Anton Tarasenko 2 years ago
parent
commit
87570a4906
  1. 39
      sources/Chat/Events/ChatAPI_OnVoiceMessage_Signal.uc
  2. 41
      sources/Chat/Events/ChatAPI_OnVoiceMessage_Slot.uc
  3. 59
      sources/Chat/Unflect/Unflect_ChatApi_Controller.uc

39
sources/Chat/Events/ChatAPI_OnVoiceMessage_Signal.uc

@ -0,0 +1,39 @@
/**
* Author: dkanus
* Home repo: https://www.insultplayers.ru/git/AcediaFramework/AcediaCore
* License: GPL
* Copyright 2023 Anton Tarasenko
*------------------------------------------------------------------------------
* This file is part of Acedia.
*
* Acedia is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License, or
* (at your option) any later version.
*
* Acedia is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Acedia. If not, see <https://www.gnu.org/licenses/>.
*/
class ChatAPI_OnVoiceMessage_Signal extends Signal
dependsOn(ChatApi);
public final function Emit(EPlayer sender, ChatApi.BuiltInVoiceMessage message) {
local Slot nextSlot;
StartIterating();
nextSlot = GetNextSlot();
while (nextSlot != none) {
ChatAPI_OnVoiceMessage_Slot(nextSlot).connect(sender, message);
nextSlot = GetNextSlot();
}
CleanEmptySlots();
}
defaultproperties {
relatedSlotClass = class'ChatAPI_OnVoiceMessage_Slot'
}

41
sources/Chat/Events/ChatAPI_OnVoiceMessage_Slot.uc

@ -0,0 +1,41 @@
/**
* Author: dkanus
* Home repo: https://www.insultplayers.ru/git/AcediaFramework/AcediaCore
* License: GPL
* Copyright 2023 Anton Tarasenko
*------------------------------------------------------------------------------
* This file is part of Acedia.
*
* Acedia is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License, or
* (at your option) any later version.
*
* Acedia is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Acedia. If not, see <https://www.gnu.org/licenses/>.
*/
class ChatAPI_OnVoiceMessage_Slot extends Slot;
delegate connect(
EPlayer sender,
ChatApi.BuiltInVoiceMessage message
) {
DummyCall();
}
protected function Constructor() {
connect = none;
}
protected function Finalizer() {
super.Finalizer();
connect = none;
}
defaultproperties {
}

59
sources/Chat/Unflect/Unflect_ChatApi_Controller.uc

@ -0,0 +1,59 @@
/**
* Author: dkanus
* Home repo: https://www.insultplayers.ru/git/AcediaFramework/AcediaCore
* License: GPL
* Copyright 2023 Anton Tarasenko
*------------------------------------------------------------------------------
* This file is part of Acedia.
*
* Acedia is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License, or
* (at your option) any later version.
*
* Acedia is distributed in the hope that it will be useful,,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Acedia. If not, see <https://www.gnu.org/licenses/>.
*/
class Unflect_ChatApi_Controller extends KFPlayerController
dependsOn(ChatAPI);
function SendVoiceMessage(
PlayerReplicationInfo sender,
PlayerReplicationInfo statedRecipient,
name messageType,
byte messageID,
name broadcastType,
optional Pawn soundSender,
optional vector senderLocation
) {
local Controller recepient;
local KFPlayerController kfPlayerRecepient;
// Don't allow dead people to talk
if (pawn == none) return;
if (!AllowVoiceMessage(messageType)) return;
class'Global'.static.GetInstance().chat._EmitOnVoiceMessage(self, messageType, messageID);
recepient = level.controllerList;
while (recepient != none) {
kfPlayerRecepient = KFPlayerController(recepient);
if (kfPlayerRecepient != none) {
kfPlayerRecepient.ClientLocationalVoiceMessage(
sender,
statedRecipient,
messagetype,
messageID,
soundSender,
senderLocation);
}
recepient = recepient.nextController;
}
}
defaultproperties {
}
Loading…
Cancel
Save