204 lines
5.4 KiB
Ucode
204 lines
5.4 KiB
Ucode
//=============================================================================
|
|
// KFGFxWidget_KickVote
|
|
//=============================================================================
|
|
// HUD Widget that displays when a kick vote has started
|
|
//=============================================================================
|
|
// Killing Floor 2
|
|
// Copyright (C) 2015 Tripwire Interactive LLC
|
|
// - Zane Gholson 07/07/2014
|
|
//=============================================================================
|
|
|
|
class KFGFxWidget_KickVote extends GFxObject;
|
|
|
|
var localized string VoteKickString;
|
|
var localized string VoteSkipTraderString;
|
|
var localized string VoteSkipTraderDetailString;
|
|
var localized string VotePauseGameString;
|
|
var localized string VotePauseGameDetailString;
|
|
var localized string VoteResumeGameString;
|
|
var localized string VoteResumeGameDetailString;
|
|
var bool bIsVoteActive;
|
|
var bool bShowChoicesOnTimerUpdate;
|
|
|
|
var const string GBA_VoteYes;
|
|
var const string GBA_VoteNo;
|
|
|
|
var GFxObject KickVoteData;
|
|
|
|
enum EVoteType
|
|
{
|
|
VT_NONE,
|
|
VT_KICK,
|
|
VT_SKIP_TRADER,
|
|
VT_PAUSE_GAME,
|
|
VT_RESUME_GAME
|
|
};
|
|
|
|
var EVoteType CurrentActiveVote;
|
|
|
|
function InitializeHUD()
|
|
{
|
|
//LocalizeText();
|
|
}
|
|
|
|
function LocalizeText(EVoteType Type)
|
|
{
|
|
local GFxObject TempObject;
|
|
local KFPlayerInput KFInput;
|
|
local KeyBind TempKeyBind;
|
|
|
|
TempObject = CreateObject("Object");
|
|
|
|
KFInput = KFPlayerInput(GetPC().PlayerInput);
|
|
|
|
KFInput.GetKeyBindFromCommand(TempKeyBind, GBA_VoteYes);
|
|
TempObject.SetString("yesKey", String(TempKeyBind.Name));
|
|
|
|
KFInput.GetKeyBindFromCommand(TempKeyBind, GBA_VoteNo);
|
|
TempObject.SetString("noKey", String(TempKeyBind.Name));
|
|
|
|
TempObject.SetString("yes", Class'KFCommon_LocalizedStrings'.default.YesString);
|
|
TempObject.SetString("no", Class'KFCommon_LocalizedStrings'.default.NoString);
|
|
|
|
TempObject.SetString("voteKick", GetVoteString(Type));
|
|
|
|
SetObject("localizedText", TempObject);
|
|
}
|
|
|
|
function ResetVote()
|
|
{
|
|
bShowChoicesOnTimerUpdate = false;
|
|
ActionScriptVoid("onYesReleased");
|
|
ActionScriptVoid("onNoReleased");
|
|
}
|
|
|
|
function ShowVote(PlayerReplicationInfo PRI, byte VoteDuration, bool bShowChoices, EVoteType Type)
|
|
{
|
|
if(PRI != none)
|
|
{
|
|
LocalizeText(Type); //Added this here if the user changes their keybind, it will update
|
|
bIsVoteActive = true;
|
|
|
|
CurrentActiveVote = Type;
|
|
SendVoteToAS3(PRI.PlayerName, VoteDuration, bShowChoices);
|
|
}
|
|
else
|
|
{
|
|
bIsVoteActive = false;
|
|
CurrentActiveVote = VT_NONE;
|
|
}
|
|
}
|
|
|
|
function SendVoteToAS3(string PlayerName, byte VoteDuration, bool bShowChoices)
|
|
{
|
|
if(KickVoteData == None)
|
|
{
|
|
KickVoteData = CreateObject("Object");
|
|
}
|
|
|
|
KickVoteData.SetString("playerName", GetVotePlayerDataString(PlayerName, CurrentActiveVote));
|
|
KickVoteData.SetInt("voteDuration", VoteDuration);
|
|
KickVoteData.SetBool("bShowChoices", bShowChoices);
|
|
bShowChoicesOnTimerUpdate = bShowChoices;
|
|
|
|
SetObject("kickVoteData", kickVoteData);
|
|
UpdateUsingGamepad(GetPC().PlayerInput.bUsingGamepad); // Moved call to here as the initialize seemed to be too early to show controller controls in some cases (orbis mainly) - HSL
|
|
}
|
|
|
|
function UpdateVoteDuration(byte VoteDuration)
|
|
{
|
|
if(kickVoteData != None)
|
|
{
|
|
KickVoteData.SetInt("voteDuration", VoteDuration);
|
|
KickVoteData.SetBool("bShowChoices", bShowChoicesOnTimerUpdate);
|
|
SetObject("kickVoteData", kickVoteData);
|
|
UpdateUsingGamepad(GetPC().PlayerInput.bUsingGamepad);
|
|
}
|
|
}
|
|
|
|
function UpdateUsingGamepad(bool bIsUsingGamepad)
|
|
{
|
|
SetBool("bUsingGamepad", bIsUsingGamepad);
|
|
if(!bIsUsingGamepad)
|
|
{
|
|
//the gamepad text will show on the input so we need to change it back to keyboard, it is simpler to just relocalize
|
|
LocalizeText(CurrentActiveVote);
|
|
}
|
|
}
|
|
|
|
function UpdateVoteCount(byte YesVotes, byte NoVotes)
|
|
{
|
|
ActionScriptVoid("updateKickVoteCount");
|
|
}
|
|
|
|
function VoteClosed()
|
|
{
|
|
bIsVoteActive = false;
|
|
SetVisible(false);
|
|
}
|
|
|
|
function OnYesPressed()
|
|
{
|
|
if(bIsVoteActive)
|
|
{
|
|
ActionScriptVoid("onYesPressed");
|
|
}
|
|
}
|
|
|
|
function OnYesReleased()
|
|
{
|
|
if(bIsVoteActive)
|
|
{
|
|
ActionScriptVoid("onYesReleased");
|
|
}
|
|
}
|
|
|
|
function OnNoPressed()
|
|
{
|
|
if(bIsVoteActive)
|
|
{
|
|
ActionScriptVoid("onNoPressed");
|
|
}
|
|
}
|
|
|
|
function OnNoReleased()
|
|
{
|
|
if(bIsVoteActive)
|
|
{
|
|
ActionScriptVoid("onNoReleased");
|
|
}
|
|
}
|
|
|
|
function string GetVoteString(EVoteType Type)
|
|
{
|
|
switch(Type)
|
|
{
|
|
case VT_KICK: return VoteKickString;
|
|
case VT_SKIP_TRADER: return VoteSkipTraderString;
|
|
case VT_PAUSE_GAME: return VotePauseGameString;
|
|
case VT_RESUME_GAME: return VoteResumeGameString;
|
|
case VT_NONE: `Log("None vote type"); return VoteKickString;
|
|
default: `Log("Unkown vote type"); return VoteKickString;
|
|
}
|
|
}
|
|
|
|
function string GetVotePlayerDataString(string PlayerName, EVoteType Type)
|
|
{
|
|
switch(Type)
|
|
{
|
|
case VT_SKIP_TRADER: return PlayerName@VoteSkipTraderDetailString;
|
|
case VT_PAUSE_GAME: return PlayerName@VotePauseGameDetailString;
|
|
case VT_RESUME_GAME: return PlayerName@VoteResumeGameDetailString;
|
|
case VT_KICK: return PlayerName;
|
|
case VT_NONE: `Log("None vote type"); return PlayerName;
|
|
default: `Log("Unkown vote type"); return PlayerName;
|
|
}
|
|
}
|
|
|
|
DefaultProperties
|
|
{
|
|
//defaults
|
|
GBA_VoteYes="GBA_VoteYes"
|
|
GBA_VoteNo="GBA_VoteNo"
|
|
CurrentActiveVote=VT_NONE
|
|
} |