diff --git a/sources/Chat/Events/ChatAPI_OnVoiceMessage_Signal.uc b/sources/Chat/Events/ChatAPI_OnVoiceMessage_Signal.uc new file mode 100644 index 0000000..d754d10 --- /dev/null +++ b/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 . + */ +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' +} \ No newline at end of file diff --git a/sources/Chat/Events/ChatAPI_OnVoiceMessage_Slot.uc b/sources/Chat/Events/ChatAPI_OnVoiceMessage_Slot.uc new file mode 100644 index 0000000..790cec9 --- /dev/null +++ b/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 . + */ +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 { +} \ No newline at end of file diff --git a/sources/Chat/Unflect/Unflect_ChatApi_Controller.uc b/sources/Chat/Unflect/Unflect_ChatApi_Controller.uc new file mode 100644 index 0000000..4051748 --- /dev/null +++ b/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 . + */ +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 { +} \ No newline at end of file