//============================================================================= // KFGFxMissionObjectivesContainer //============================================================================= // This container has the collapsed and expanded holders for the objectives. // The expanded will contain the weekly and special event containers. // instead of using a subwidget bind, we are going to use get child here. //============================================================================= // Killing Floor 2 // Copyright (C) 2015 Tripwire Interactive LLC // - Zane Gholson 3/28/2017 //============================================================================= class KFGFxMissionObjectivesContainer extends KFGFxObject_Container; var KFGFxCollapsedObjectivesContainer CollapsedObjectiveContainer; var KFGFxExpandedObjectivesContainer ExpandedObjectiveContainer; var bool bInitialAutoExpandCheckComplete; var bool bLastShowSpecialEvent; var bool bLastShowWeekly; var KFPlayerController KFPC; function Initialize( KFGFxObject_Menu NewParentMenu ) { super.Initialize( NewParentMenu ); KFPC = KFPlayerController(GetPC()); //expanded on delay to ensure all widget are initialized KFPC.SetTimer( 0.25f, true, nameof(UpdateMissionObjectiveState), self ); } function UpdateMissionObjectiveState() { local bool bShouldShow; local bool bShouldExpand; local int TargetPage; local bool bShowWeekly; local bool bShowSpecialEvent; bShouldExpand = false; TargetPage = 0; bShouldShow = true; bShowWeekly = KFPC != none && KFPC.isA('KFPlayerController_WeeklySurvival') || class'WorldInfo'.static.IsMenuLevel(); bShowSpecialEvent = ShowShouldSpecialEvent(); if(!bInitialAutoExpandCheckComplete || bShowWeekly != bLastShowWeekly) { if(bShowWeekly) { //auto expand to weekly1 bShouldExpand = true; TargetPage = 1; SetBool("expanded", true); } else //shows by default. { UpdateWeeklyUIActive(false); } bLastShowWeekly = bShowWeekly; } if(bShowSpecialEvent != bLastShowSpecialEvent || !bInitialAutoExpandCheckComplete )//on seasonal map and seasonal active { if(bShowSpecialEvent) { bShouldExpand = true; TargetPage = 2; } bLastShowSpecialEvent = bShowSpecialEvent; UpdateSpecialEventActive(); } if(class'WorldInfo'.static.IsMenuLevel()) //main menu { bShouldExpand = false; TargetPage = 0; } if(!bInitialAutoExpandCheckComplete) { ExpandedObjectiveContainer.SetInt("pageIndex", TargetPage); SetVisible(bShouldShow); SetBool("expanded", bShouldExpand); SetString("buttonPromptString", class'KFMission_LocalizedStrings'.default.ObjectivesString); } bInitialAutoExpandCheckComplete = true; Refresh(); } function UpdateWeeklyUIActive(bool bShow) { SetBool("weeklyEventActive", bShow); } function UpdateSpecialEventActive() { setbool("seasonalEventActive" , ShowShouldSpecialEvent()); } function bool ShowShouldSpecialEvent() { return class'KFGameEngine'.static.GetSeasonalEventId() != SEI_None && class'KFGameEngine'.static.GetSeasonalEventId() != INDEX_NONE && class'KFGfxMenu_StartGame'.static.GetSpecialEventClass(class'KFGameEngine'.static.GetSeasonalEventId()) != class'KFGFxSpecialEventObjectivesContainer' && ( KFPC.SeasonalEventIsValid() || class'WorldInfo'.static.IsMenuLevel() ); } function Refresh(optional bool bForceRefresh) { if(KFPC.MyGFxManager.bMenusOpen) { if(ExpandedObjectiveContainer.Refresh(bForceRefresh)) { CollapsedObjectiveContainer.PopulateData(); } } } function FullRefresh() { ExpandedObjectiveContainer.FullRefresh(); CollapsedObjectiveContainer.PopulateData(); } /*function LocalizeMenu() { local GFxObject TextObject; TextObject = CreateObject("Object"); // Localize static text TextObject.SetString("home",StartMenu.FindGameString); TextObject.SetString("multiplayer",MultiplayerString); TextObject.SetString("serverBrowser",StartMenu.ServerBrowserString); TextObject.SetString("solo",SoloString); TextObject.SetString("tutorial",TutorialString); SetObject("localizedText", TextObject); }*/ DefaultProperties { }