102 lines
2.9 KiB
Ucode
102 lines
2.9 KiB
Ucode
|
/**
|
||
|
* 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;
|
||
|
}
|