311 lines
7.5 KiB
Ucode
311 lines
7.5 KiB
Ucode
//=============================================================================
|
|
// KFGFxMenu_DoshVault
|
|
//=============================================================================
|
|
// Class Description
|
|
//=============================================================================
|
|
// Killing Floor 2
|
|
// Copyright (C) 2015 Tripwire Interactive LLC
|
|
// - Zane Gholson 6/27/2017
|
|
//=============================================================================
|
|
|
|
class KFGFxMenu_DoshVault extends KFGFxObject_Menu;
|
|
|
|
var name PopUpCrateEventName;
|
|
var name PileDisappearEventName;
|
|
|
|
var name DoshVaultSoundThemeName;
|
|
|
|
var localized string YourDoshString;
|
|
var localized string NextRewardString;
|
|
var localized string DoshVaultString;
|
|
var localized string YourCratesString;
|
|
var localized string OpenCratesString;
|
|
var localized string CrateUnlockedString;
|
|
var localized string DelayedCrateString;
|
|
|
|
var bool bSeenAllDoshAnimation;
|
|
|
|
var int ItemID;
|
|
|
|
var OnlineSubsystem OnlineSub;
|
|
var ItemProperties RewardItemDetailsHolder;
|
|
|
|
var KFPlayerController KFPC;
|
|
|
|
var bool bPausedForCrate;
|
|
|
|
function InitializeMenu( KFGfxMoviePlayer_Manager InManager )
|
|
{
|
|
super.InitializeMenu(InManager);
|
|
|
|
OnlineSub = class'GameEngine'.static.GetOnlineSubsystem();
|
|
|
|
InitialRewardItem();
|
|
LocalizeContainer();
|
|
|
|
UpdatePlayerCrateCount();
|
|
|
|
KFPC = KFPlayerController(GetPC());
|
|
InitStart();
|
|
}
|
|
|
|
function InitStart()
|
|
{
|
|
local KFGameInfo_Entry KFEntry;
|
|
if(class'WorldInfo'.static.IsMenuLevel())
|
|
{
|
|
KFEntry = KFGameInfo_Entry(GetPC().WorldInfo.Game);
|
|
KFEntry.InitVault();
|
|
if(KFPC.GetLastSeenDoshCount() == KFPC.GetTotalDoshCount())
|
|
{
|
|
DelayedInit();
|
|
}
|
|
else
|
|
{
|
|
SetVisible(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
//menu will not open correctly due to animation timeline if this is done on init
|
|
function DelayedInit()
|
|
{
|
|
UpdatePlayerDoshMeter();
|
|
SetVisible(true);
|
|
//UpdatePlayerCrateCount();
|
|
}
|
|
|
|
|
|
function OnOpen()
|
|
{
|
|
super.OnOpen();
|
|
bPausedForCrate = false;
|
|
bSeenAllDoshAnimation = false;
|
|
if ( class'WorldInfo'.static.IsMenuLevel() )
|
|
{
|
|
Manager.ManagerObject.SetBool("backgroundVisible", false);
|
|
}
|
|
|
|
KFPC.CheckHasViewedDoshVault();
|
|
if(KFPC.GetTotalDoshCount() == KFPC.GetLastSeenDoshCount())
|
|
{
|
|
KFPC.TriggerGlobalEventClass(class'KFSeqEvent_DoshVault', KFPC, DVE_IdleNoDosh);
|
|
}
|
|
else
|
|
{
|
|
KFPC.TriggerGlobalEventClass(class'KFSeqEvent_DoshVault', KFPC, DVE_Idle);
|
|
}
|
|
|
|
KFPC.VerifyDoshVaultCrates();
|
|
|
|
if(!bSeenAllDoshAnimation)
|
|
{
|
|
InitializeMenu(Manager);
|
|
}
|
|
}
|
|
|
|
function OnClose()
|
|
{
|
|
if (class'WorldInfo'.static.IsMenuLevel())
|
|
{
|
|
Manager.ManagerObject.SetBool("backgroundVisible", true);
|
|
}
|
|
|
|
AbortSquence();
|
|
}
|
|
|
|
function AbortSquence()
|
|
{
|
|
KFPC.TriggerGlobalEventClass(class'KFSeqEvent_DoshVault', KFPC, DVE_ABORT);
|
|
KFPC.ResetCustomizationCamera();
|
|
KFPC.ClearTimer(nameof(DelayedInit));
|
|
bPausedForCrate = false; //sanity
|
|
}
|
|
|
|
function LocalizeContainer()
|
|
{
|
|
local GFxObject LocalizedObject;
|
|
|
|
LocalizedObject = CreateObject("Object");
|
|
|
|
LocalizedObject.SetString("yourDosh", YourDoshString);
|
|
LocalizedObject.SetString("nextReward", NextRewardString);
|
|
LocalizedObject.SetString("nextUnlock", GetNextUnlockName());
|
|
LocalizedObject.SetString("titleString", DoshVaultString);
|
|
LocalizedObject.SetString("yourCrates", YourCratesString);
|
|
LocalizedObject.SetString("openCrate", OpenCratesString);
|
|
LocalizedObject.SetString("crateUnlocked", CrateUnlockedString);
|
|
LocalizedObject.SetString("iconLocation", "img://"$GetCrateIcon());
|
|
LocalizedObject.SetString("crateDelayed", DelayedCrateString);
|
|
|
|
|
|
SetObject("localizedText", LocalizedObject);
|
|
}
|
|
|
|
function InitialRewardItem()
|
|
{
|
|
local int ItemIndex;
|
|
|
|
ItemIndex = OnlineSub.ItemPropertiesList.Find('Definition', ItemID);
|
|
|
|
if( ItemIndex != INDEX_NONE )
|
|
{
|
|
RewardItemDetailsHolder = OnlineSub.ItemPropertiesList[ItemIndex];
|
|
}
|
|
}
|
|
|
|
function UpdatePlayerDoshMeter()
|
|
{
|
|
local int CurrentTier;
|
|
|
|
CurrentTier = int(KFPC.GetLastSeenDoshCount() / KFPC.GetDoshVaultTierValue());
|
|
//Last seen dosh, total dosh starting tier, amount in tier, crate number
|
|
SendDoshInfo(KFPC.GetLastSeenDoshCount(), KFPC.GetTotalDoshCount(), KFPC.GetDoshVaultTierValue() * CurrentTier, KFPC.GetDoshVaultTierValue(), GetCrateCount());
|
|
}
|
|
|
|
|
|
function int GetCrateCount()
|
|
{
|
|
local int CrateCount;
|
|
local int i;
|
|
if(OnlineSub == none)
|
|
{
|
|
return INDEX_NONE;
|
|
}
|
|
for (i = 0; i < OnlineSub.CurrentInventory.length; i++)
|
|
{
|
|
if(OnlineSub.CurrentInventory[i].Definition == ItemID )
|
|
{
|
|
CrateCount++;
|
|
}
|
|
}
|
|
|
|
return CrateCount;
|
|
}
|
|
|
|
function UpdatePlayerCrateCount()
|
|
{
|
|
SetInt("storedCratesValue", GetCrateCount());
|
|
}
|
|
|
|
function string GetCrateIcon()
|
|
{
|
|
//"img://"$TempItemDetailsHolder.IconURL);
|
|
return RewardItemDetailsHolder.IconURL;
|
|
}
|
|
|
|
function string GetNextUnlockName()
|
|
{
|
|
//return crate name
|
|
return RewardItemDetailsHolder.Name;
|
|
}
|
|
|
|
function SendDoshInfo(int OldDosh, int NewDosh, int TierBase, int TierLength, int CrateNum)
|
|
{
|
|
local GFxObject DataObject;
|
|
|
|
if (OldDosh == INDEX_NONE || NewDosh == INDEX_NONE)
|
|
{
|
|
Manager.DelayedOpenPopup(ENotification, EDPPID_Misc, class'KFCommon_LocalizedStrings'.default.NoticeString, class'KFCommon_LocalizedStrings'.default.FailedToReachInventoryServerString, class'KFCommon_LocalizedStrings'.default.OKString);
|
|
`log("something isn't right. Connection issue may be present. To prevent angry Reddit mobs, just don't animate");
|
|
bSeenAllDoshAnimation = true;
|
|
return;
|
|
}
|
|
|
|
if (NewDosh < OldDosh)
|
|
{
|
|
NewDosh = OldDosh;
|
|
//Out of sync saves. Players still get their crates.
|
|
}
|
|
|
|
//start particles if not the same
|
|
if(OldDosh == NewDosh)
|
|
{
|
|
`log("no new Vosh!");
|
|
bSeenAllDoshAnimation = true;
|
|
}
|
|
|
|
DataObject = CreateObject("Object");
|
|
|
|
DataObject.SetInt("oldDosh", OldDosh);
|
|
DataObject.SetInt("newDosh", NewDosh);
|
|
DataObject.SetInt("tierBase", TierBase);
|
|
DataObject.SetInt("tierLength", TierLength);
|
|
DataObject.SetInt("crateNum", CrateNum);
|
|
|
|
SetObject("doshData", DataObject);
|
|
}
|
|
|
|
function bool CanCloseVaultMenu()
|
|
{
|
|
return bSeenAllDoshAnimation;
|
|
}
|
|
|
|
function Callback_UpdateDosh(int NewValue)
|
|
{
|
|
local KFGameInfo_Entry KFGIE;
|
|
|
|
KFGIE = KFGameInfo_Entry(GetPC().WorldInfo.Game);
|
|
|
|
if (KFGIE != none)
|
|
{
|
|
KFGIE.UpdateDoshPiles(NewValue);
|
|
if(bPausedForCrate)
|
|
{
|
|
KFPC.TriggerGlobalEventClass(class'KFSeqEvent_DoshVault', KFPC, DVE_ResumeFill);
|
|
bPausedForCrate = false;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
function Callback_FinalAnimationComplete()
|
|
{
|
|
local KFGameInfo_Entry KFGIE;
|
|
|
|
KFGIE = KFGameInfo_Entry(GetPC().WorldInfo.Game);
|
|
|
|
if (KFGIE != none)
|
|
{
|
|
KFGIE.FinalAnimationPlayed(KFPC);
|
|
}
|
|
|
|
KFPC.TriggerGlobalEventClass(class'KFSeqEvent_DoshVault', KFPC, DVE_FillComplete);
|
|
|
|
if(KFPC != none)
|
|
{
|
|
KFPC.MarkDoshVaultSeen();
|
|
}
|
|
|
|
//save last seen amount
|
|
bSeenAllDoshAnimation = true;
|
|
}
|
|
|
|
function Callback_DoshAnimationComplete()
|
|
{
|
|
//unlocked crate
|
|
Manager.PlaySoundFromTheme(PopUpCrateEventName, DoshVaultSoundThemeName);
|
|
KFPC.CheckUnlockDoshVaultReward();
|
|
KFPC.TriggerGlobalEventClass(class'KFSeqEvent_DoshVault', KFPC, DVE_PauseFill);
|
|
bPausedForCrate = true;
|
|
}
|
|
|
|
function Callback_AnimationBegin()
|
|
{
|
|
|
|
}
|
|
|
|
function Callback_OpenCrateClicked()
|
|
{
|
|
Manager.SelectIDOnOpen = ItemID;
|
|
Manager.OpenMenu(UI_Inventory);
|
|
}
|
|
|
|
|
|
DefaultProperties
|
|
{
|
|
DoshVaultSoundThemeName=SoundTheme_DoshVault
|
|
PopUpCrateEventName=PopUpCrate
|
|
PileDisappearEventName=DoshPileOut
|
|
ItemID=5313 //hozine supply crate 12
|
|
} |