1
0
KF2-Dev-Scripts/KFGame/Classes/KFLocalMessage_Interaction.uc
2020-12-13 18:01:13 +03:00

262 lines
7.7 KiB
Ucode

//=============================================================================
// 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"
}