rott/kf_sources/KFGui/Classes/KFSpeechBinder.uc
2026-07-14 20:27:09 +07:00

132 lines
4.6 KiB
Ucode

class KFSpeechBinder extends KeyBindMenu;
var string VoiceType;
var class<TeamVoicePack> VoiceClass;
var UT2K4Tab_PlayerSettings tp_Player;
var transient bool bNoMatureLanguage;
function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
local int i;
local UT2K4SettingsPage Setting;
Super.InitComponent(MyController, MyOwner);
bNoMatureLanguage = MyController.ViewportOwner.Actor.bNoMatureLanguage;
if ( ParentPage != None && UT2K4SettingsPage(ParentPage) != None )
{
Setting = UT2K4SettingsPage(ParentPage);
for ( i = 0; i < Setting.c_Tabs.TabStack.Length; i++ )
if ( Setting.c_Tabs.TabStack[i] != None && Setting.c_Tabs.TabStack[i].MyPanel != None && UT2K4Tab_PlayerSettings(Setting.c_Tabs.TabStack[i].MyPanel) != None )
{
tp_Player = UT2K4Tab_PlayerSettings(Setting.c_Tabs.TabStack[i].MyPanel);
tp_Player.VoiceTypeChanged = VoiceChanged;
break;
}
}
}
function LoadCommands()
{
local int i;
local array<string> VoiceCommands;
Super.LoadCommands();
ResetVoiceClass();
if ( VoiceClass == None )
return;
//////////////////////////////// ACKNOWLEDGEMENTS /////////////////////////////////////////////
CreateAliasMapping("", class'ExtendedConsole'.default.SMStateName[2], True );
VoiceClass.static.GetAllAcks( VoiceCommands );
for ( i = 0; i < VoiceCommands.Length; i++ )
CreateAliasMapping( "speech ACK" @ i, VoiceCommands[i], False );
//////////////////////////////// FRIENDLY FIRE /////////////////////////////////////////////
CreateAliasMapping( "", class'ExtendedConsole'.default.SMStateName[3], True);
VoiceClass.static.GetAllFFire( VoiceCommands );
for ( i = 0; i < VoiceCommands.Length; i++ )
CreateAliasMapping( "speech FRIENDLYFIRE" @ i, VoiceCommands[i], False );
//////////////////////////////// ORDERS /////////////////////////////////////////////
CreateAliasMapping( "", class'ExtendedConsole'.default.SMStateName[4], True);
VoiceClass.static.GetAllOrder( VoiceCommands );
for ( i = 0; i < VoiceCommands.Length; i++ )
CreateAliasMapping( "speech ORDER" @ i, VoiceCommands[i], False );
//////////////////////////////// OTHER /////////////////////////////////////////////
CreateAliasMapping( "", class'ExtendedConsole'.default.SMStateName[5], True);
VoiceClass.static.GetAllOther( VoiceCommands );
for ( i = 0; i < VoiceCommands.Length; i++ )
CreateAliasMapping( "speech OTHER" @ i, VoiceCommands[i], False );
//////////////////////////////// LOAD TAUNTS /////////////////////////////////////////////
CreateAliasMapping( "", class'ExtendedConsole'.default.SMStateName[6], True );
VoiceClass.static.GetAllTaunt( VoiceCommands, bNoMatureLanguage );
for ( i = 0; i < VoiceCommands.Length; i++ )
CreateAliasMapping( "speech TAUNT" @ i, VoiceCommands[i], False );
}
function ResetVoiceClass()
{
local PlayerController PC;
local string CharString;
local xUtil.PlayerRecord Rec;
PC = PlayerOwner();
VoiceClass = None;
if ( VoiceType != "" )
VoiceClass = class<TeamVoicePack>(DynamicLoadObject(VoiceType,class'Class',true));
if ( VoiceClass == None && PC.PlayerReplicationInfo != None )
{
if ( PC.PlayerReplicationInfo.VoiceType != None && class<TeamVoicePack>(PC.PlayerReplicationInfo.VoiceType) != None )
VoiceClass = class<TeamVoicePack>(PC.PlayerReplicationInfo.VoiceType);
else if ( PC.PlayerReplicationInfo.VoiceTypeName != "" )
VoiceClass = class<TeamVoicePack>(DynamicLoadObject(PC.PlayerReplicationInfo.VoiceTypeName,class'Class'));
}
if ( VoiceClass == None )
{
VoiceType = PC.GetURLOption("Voice");
if ( VoiceType == "" )
{
CharString = PC.GetURLOption("Character");
if ( CharString != "" )
{
Rec = class'xUtil'.static.FindPlayerRecord(CharString);
if ( Rec.VoiceClassName != "" )
VoiceType = Rec.VoiceClassName;
else if ( Rec.Species != None )
VoiceType = Rec.Species.static.GetVoiceType(Rec.Sex ~= "Female", PC.Level);
}
}
if ( VoiceType != "" )
VoiceClass = class<TeamVoicePack>(DynamicLoadObject(VoiceType, class'Class'));
}
VoiceType = "";
}
function VoiceChanged(string NewVoiceType)
{
VoiceType = NewVoiceType;
}
defaultproperties
{
PageCaption="Speech Binder"
Headings(0)="Phrase"
}