class KFSpeechBinder extends KeyBindMenu; var string VoiceType; var class 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 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(DynamicLoadObject(VoiceType,class'Class',true)); if ( VoiceClass == None && PC.PlayerReplicationInfo != None ) { if ( PC.PlayerReplicationInfo.VoiceType != None && class(PC.PlayerReplicationInfo.VoiceType) != None ) VoiceClass = class(PC.PlayerReplicationInfo.VoiceType); else if ( PC.PlayerReplicationInfo.VoiceTypeName != "" ) VoiceClass = class(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(DynamicLoadObject(VoiceType, class'Class')); } VoiceType = ""; } function VoiceChanged(string NewVoiceType) { VoiceType = NewVoiceType; } defaultproperties { PageCaption="Speech Binder" Headings(0)="Phrase" }