//============================================================================= // KFLocalMessage_Interaction //============================================================================= // Message class for world interaction messages //============================================================================= // Killing Floor 2 // Copyright (C) 2015 Tripwire Interactive LLC // - Christian "schneidzekk" Schneider //============================================================================= class KFLocalMessage_Interaction extends KFLocalMessage; enum EInteractionMessageType { IMT_None, // usables messaging (should always be lowest "priority") IMT_AcceptObjective, IMT_ReceiveAmmo, IMT_ReceiveGrenades, IMT_UseTrader, IMT_UseDoor, IMT_UseDoorWelded, IMT_RepairDoor, IMT_UseMinigame, IMT_UseMinigameGenerator, IMT_DoshActivate, IMT_UsePowerUp, // conditional messaging IMT_GamepadWeaponSelectHint, IMT_HealSelfWarning, IMT_ClotGrabWarning, IMT_PlayerClotGrabWarning, IMT_EMPGrabWarning, }; var localized string UseTraderMessage; var localized string UseDoorMessage; var localized string EquipWelderMessage; var localized string RepairDoorMessage; var localized string AcceptObjectiveMessage; var localized string ReceiveAmmoMessage; var localized string ReceiveGrenadesMessage; var localized string HealSelfWarning; var localized string HealSelfGamepadWarning; var localized string PressToBashWarning; var localized string GamepadWeaponSelectHint; var localized string ZedUseDoorMessage; var localized string ZedUseDoorWeldedMessage; var localized string PlayerClotGrabWarningMessage; var localized string UseMinigameMessage; var localized string UseMinigameGeneratorMessage; var localized string DoshActivateMessage; var localized string UsePowerUpMessage; var localized string EMPGrabWarningMessage; var const string USE_COMMAND; var const string HEAL_COMMAND; var const string HEAL_COMMAND_CONTROLLER; var const string BASH_COMMAND; var const string WEAPON_SELECT_CONTROLLER; static function ClientReceive( PlayerController P, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { local string MessageString; local KFGFxMoviePlayer_HUD GFxHud; if ( KFGFxHudWrapper(P.myHUD) != none ) { GFxHud = KFGFxHudWrapper(P.myHUD).HudMovie; if ( GFxHud != None ) { MessageString = static.GetString( Switch, (RelatedPRI_1 == P.PlayerReplicationInfo), RelatedPRI_1, RelatedPRI_2, OptionalObject ); GFxHud.DisplayInteractionMessage( MessageString, Switch, GetKeyBind(P, Switch), GetMessageDuration(Switch)); } } } static function float GetMessageDuration(int Switch) { switch ( Switch ) { case IMT_GamepadWeaponSelectHint: return 2.f; } return 0.f; } static function string GetKeyBind( PlayerController P, optional int Switch ) { local KFPlayerInput KFInput; local KeyBind BoundKey; local string KeyString; KFInput = KFPlayerInput(P.PlayerInput); if( KFInput == none ) { return ""; } switch ( Switch ) { // Use binding case IMT_EMPGrabWarning: KeyString = ""; break; case IMT_UseDoorWelded: if(class'WorldInfo'.static.GetWorldInfo().GetALocalPlayerController().PlayerReplicationInfo.GetTeamNum() == 255) { KeyString = ""; break; } case IMT_UseTrader: case IMT_UseDoor: case IMT_RepairDoor: case IMT_AcceptObjective: case IMT_ReceiveAmmo: case IMT_ReceiveGrenades: case IMT_UseMinigame: case IMT_UseMinigameGenerator: case IMT_DoshActivate: case IMT_UsePowerUp: KFInput.GetKeyBindFromCommand(BoundKey, default.USE_COMMAND, false); KeyString = KFInput.GetBindDisplayName(BoundKey); break; case IMT_HealSelfWarning: if ( KFInput.bUsingGamepad ) { KFInput.GetKeyBindFromCommand(BoundKey, default.HEAL_COMMAND_CONTROLLER, false); } else { KFInput.GetKeyBindFromCommand(BoundKey, default.HEAL_COMMAND, false); } KeyString = KFInput.GetBindDisplayName(BoundKey); break; case IMT_ClotGrabWarning: KFInput.GetKeyBindFromCommand(BoundKey, default.BASH_COMMAND, false); KeyString = KFInput.GetBindDisplayName(BoundKey); break; case IMT_GamepadWeaponSelectHint: KFInput.GetKeyBindFromCommand(BoundKey, default.WEAPON_SELECT_CONTROLLER, false); KeyString = KFInput.GetBindDisplayName(BoundKey); break; } return KeyString; } static function string GetString( optional int Switch, optional bool bPRI1HUD, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { local PlayerInput Input; local KFGameReplicationInfo KFGRI; local KFPlayerController KFPC; local KFTrigger_DoshActivated DoshTrigger; KFPC = KFPlayerController(class'WorldInfo'.static.GetWorldInfo().GetALocalPlayerController()); switch ( Switch ) { case IMT_DoshActivate: DoshTrigger = KFTrigger_DoshActivated(OptionalObject); if (DoshTrigger != none) { return default.DoshActivateMessage $":" @DoshTrigger.ActivationCost; } else { return default.UseMinigameMessage; //place holder } case IMT_UseTrader: KFGRI = KFGameReplicationInfo(class'WorldInfo'.static.GetWorldInfo().GRI); if(KFGRI != none && KFGRI.GameClass.Name == 'KFGameInfo_Tutorial' || (KFPC != none && KFPC.bDisableAutoUpgrade) ) { return Left( default.UseTraderMessage, InStr(default.UseTraderMessage, "<%HOLD%>")); } return default.UseTraderMessage; case IMT_UseDoor: if(class'WorldInfo'.static.GetWorldInfo().GetALocalPlayerController().PlayerReplicationInfo.GetTeamNum() == 255) { return default.ZedUseDoorMessage; } return default.UseDoorMessage; case IMT_UseDoorWelded: if(class'WorldInfo'.static.GetWorldInfo().GetALocalPlayerController().PlayerReplicationInfo.GetTeamNum() == 255) { return default.ZedUseDoorWeldedMessage; } return default.EquipWelderMessage; case IMT_RepairDoor: return default.RepairDoorMessage; case IMT_AcceptObjective: return default.AcceptObjectiveMessage; case IMT_ReceiveAmmo: return default.ReceiveAmmoMessage; case IMT_ReceiveGrenades: return default.ReceiveGrenadesMessage; case IMT_HealSelfWarning: Input = class'WorldInfo'.static.GetWorldInfo().GetALocalPlayerController().PlayerInput; return (Input != None && Input.bUsingGamepad) ? default.HealSelfGamepadWarning : default.HealSelfWarning; case IMT_ClotGrabWarning: return default.PressToBashWarning; case IMT_PlayerClotGrabWarning: return default.PlayerClotGrabWarningMessage; case IMT_GamepadWeaponSelectHint: return default.GamepadWeaponSelectHint; case IMT_UseMinigame: return default.UseMinigameMessage; case IMT_UseMinigameGenerator: return default.UseMinigameGeneratorMessage; case IMT_UsePowerUp: return default.UsePowerUpMessage; case IMT_EMPGrabWarning: return default.EMPGrabWarningMessage; default: return ""; } } static function float GetPos( int Switch, HUD myHUD ) { return 0.8; } // Returns a hex color code for the supplied message type static function string GetHexColor(int Switch) { return default.InteractionColor; } DefaultProperties { Lifetime=5 bIsConsoleMessage=false bIsUnique=true bIsSpecial=true bBeep=true USE_COMMAND="GBA_Use" HEAL_COMMAND="GBA_QuickHeal" HEAL_COMMAND_CONTROLLER="GBA_Reload_Gamepad" BASH_COMMAND="GBA_TertiaryFire" WEAPON_SELECT_CONTROLLER="GBA_WeaponSelect_Gamepad" }