1
0
KF2-Dev-Scripts/Engine/Classes/UIManager.uc

102 lines
2.9 KiB
Ucode
Raw Permalink Normal View History

2020-12-13 15:01:13 +00:00
/**
* Class that manages the UI for the game
* Replaces UISceneClient
*
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
class UIManager extends Object
within UIInteraction
native;
cpptext
{
/**
* Returns the game's UI Manager.
*
* @return a pointer to the UUIManager instance currently managing the scenes for the UI System.
*/
static class UUIManager* GetUIManager();
}
/**
* Returns the game's UI Manager.
*
* @return a pointer to the UUIManager instance currently managing the scenes for the UI System.
*/
native static final noexport function UIManager GetUIManager();
/**
* Callback which allows the UI to prevent unpausing if scenes which require pausing are still active.
* @see PlayerController.SetPause
*/
native final function bool CanUnpauseInternalUI();
/**
* Wrapper for pausing the game.
*
* @param bDesiredPauseState TRUE indicates that the game should be paused.
* @param PlayerIndex the index [into Engine GamePlayers array] for the player that should be used for pausing the game; can
* affect whether the game is actually paused or not (i.e. if the player is an admin in a multi-player match,
* for example).
*/
event PauseGame( bool bDesiredPauseState, optional int PlayerIndex=0 )
{
local PlayerController PlayerOwner;
local Engine Eng;
Eng = class'Engine'.static.GetEngine();
if ( Eng.GamePlayers.Length > 0 )
{
PlayerIndex = Clamp(PlayerIndex, 0, Eng.GamePlayers.Length - 1);
PlayerOwner = Eng.GamePlayers[PlayerIndex].Actor;
if ( PlayerOwner != None )
{
PlayerOwner.SetPause(bDesiredPauseState, CanUnpauseInternalUI);
}
}
}
/**
* Called when a new player has been added to the list of active players (i.e. split-screen join)
*
* @param PlayerIndex the index [into the GamePlayers array] where the player was inserted
* @param AddedPlayer the player that was added
*/
function NotifyPlayerAdded( int PlayerIndex, LocalPlayer AddedPlayer )
{
}
/**
* Called when a player has been removed from the list of active players (i.e. split-screen players)
*
* @param PlayerIndex the index [into the GamePlayers array] where the player was located
* @param RemovedPlayer the player that was removed
*/
function NotifyPlayerRemoved( int PlayerIndex, LocalPlayer RemovedPlayer )
{
}
/**
* Helper function to deduce the PlayerIndex of a Player
*
* @param P - The LocalPlayer for whom you wish to deduce their PlayerIndex
*
* @return Returns the index into the GamePlayers array that references this Player. If it cannot find the player, it returns 0.
*/
function int FindLocalPlayerIndex(Player P)
{
local Engine Engine;
local int i;
Engine = class'Engine'.static.GetEngine();
for (i = 0; i < Engine.GamePlayers.length; i++)
{
if (Engine.GamePlayers[i] == P)
{
return i;
}
}
return 0;
}