1112 lines
33 KiB
C++
1112 lines
33 KiB
C++
// Copyright (C) 2007 Id Software, Inc.
|
|
//
|
|
|
|
|
|
#ifndef __PLAYERPROPERTIES_H__
|
|
#define __PLAYERPROPERTIES_H__
|
|
|
|
#include "guis/UserInterfaceTypes.h"
|
|
#include "roles/HudModule.h"
|
|
#include "roles/Tasks.h"
|
|
|
|
class sdTransport;
|
|
class sdDeclPlayerClass;
|
|
class sdVehiclePosition;
|
|
class idWeapon;
|
|
|
|
SD_UI_PUSH_CLASS_TAG( sdPlayerProperties )
|
|
SD_UI_CLASS_INFO_TAG(
|
|
/* ============ */
|
|
"Player properties may be accessed with \"player.<propname>\". The properties are used throughout the GUIs for all " \
|
|
"information relating to the local player or depending on the property the local view players information. " \
|
|
"All player properties are read only."
|
|
/* ============ */
|
|
)
|
|
SD_UI_POP_CLASS_TAG
|
|
SD_UI_PROPERTY_TAG(
|
|
alias = "player";
|
|
)
|
|
class sdPlayerProperties : public sdUIPropertyHolder {
|
|
public:
|
|
enum positionMode_t {
|
|
PM_SELF,
|
|
PM_OTHER,
|
|
PM_EMPTY,
|
|
};
|
|
sdPlayerProperties( void );
|
|
~sdPlayerProperties( void );
|
|
|
|
void Update( idPlayer* player );
|
|
void PacifierUpdate( void );
|
|
void UpdateHudModules( void );
|
|
void Init( void );
|
|
void InitGUIs( void );
|
|
void InitGUIStates( void );
|
|
void Shutdown( void );
|
|
void ShutdownGUIs( void );
|
|
|
|
void SetContextEntity( idEntity* entity ) { contextEntity = entity; }
|
|
idEntity* GetContextEntity( void ) { return contextEntity; }
|
|
|
|
void OnActiveViewProxyChanged( idEntity* object );
|
|
|
|
void SetupVehiclePosition( sdUsableInterface* interface, int positionID, sdUserInterfaceLocal* ui );
|
|
void SetupVehiclePosition( sdUsableInterface* interface, int positionID, positionMode_t mode, sdUserInterfaceLocal* ui );
|
|
|
|
void EnteredObject( idPlayer* player, idEntity* object );
|
|
void ExitingObject( idPlayer* player, idEntity* vehicle );
|
|
|
|
void OnNewTask( sdPlayerTask* task );
|
|
void OnTaskSelected( sdPlayerTask* task );
|
|
void ClearTask();
|
|
|
|
bool ShouldShowEndGame() const;
|
|
|
|
bool ManualVoiceChat() const { return endGame != 0.0f; }
|
|
|
|
void SetCriticalClass( const playerTeamTypes_t playerTeam, const playerClassTypes_t criticalClass );
|
|
|
|
virtual sdProperties::sdProperty* GetProperty( const char* name );
|
|
virtual sdProperties::sdProperty* GetProperty( const char* name, sdProperties::ePropertyType type );
|
|
virtual sdProperties::sdPropertyHandler& GetProperties() { return properties; }
|
|
virtual const char* GetName() const { return "playerProperties"; }
|
|
virtual const char* FindPropertyName( sdProperties::sdProperty* property, sdUserInterfaceScope*& scope ) { scope = this; return properties.NameForProperty( property ); }
|
|
|
|
void UpdateTargetingInfo( idPlayer* player );
|
|
void UpdateFireTeam( idPlayer* player );
|
|
void UpdateTeam( sdTeamInfo* team );
|
|
|
|
sdDeployMenu* GetDeployMenu( void ) { return deployMenu.Get(); }
|
|
sdLimboMenu* GetLimboMenu( void ) { return limboMenu.Get(); }
|
|
sdQuickChatMenu* GetQuickChatMenu( void ) { return quickChatMenu.Get(); }
|
|
sdQuickChatMenu* GetContextMenu( void ) { return contextMenu.Get(); }
|
|
sdFireTeamMenu* GetFireTeamMenu( void ) { return fireTeamMenu.Get(); }
|
|
sdChatMenu* GetChatMenu( void ) { return chatMenu.Get(); }
|
|
sdWeaponSelectionMenu* GetWeaponSelectionMenu( void ) { return weaponSelectionMenu.Get(); }
|
|
sdPlayerHud* GetPlayerHud( void ) { return playerHud.Get(); }
|
|
sdPostProcess* GetPostProcess( void ) { return postProcess.Get(); }
|
|
sdTakeViewNoteMenu* GetViewNoteMenu( void ) { return takeViewNoteMenu.Get(); }
|
|
|
|
guiHandle_t GetScoreBoard( void ) { return scoreBoard; }
|
|
|
|
void SetToolTipInfo( const wchar_t* text, int index, const idMaterial* icon );
|
|
|
|
void CloseActiveHudModules( void );
|
|
void ClosePassiveHudModules( void );
|
|
void CloseScriptHudModules( void );
|
|
|
|
sdHudModule* GetActiveHudModule( void ) { return activeHudModules.Next(); }
|
|
sdHudModule* GetPassiveHudModule( void ) { return passiveHudModules.Next(); }
|
|
sdHudModule* GetScriptHudModule( void ) { return scriptHudModules.Next(); }
|
|
sdHudModule* GetDrawHudModule( void ) { return drawHudModules.Next(); }
|
|
|
|
void AddDrawHudModule( sdHudModule& module );
|
|
|
|
void PushPassiveHudModule( sdHudModule& module ) { module.GetNode().AddToEnd( passiveHudModules ); }
|
|
void PushScriptHudModule( sdHudModule& module ) { module.GetNode().AddToEnd( scriptHudModules ); }
|
|
void PushActiveHudModule( sdHudModule& module ) { module.GetNode().AddToEnd( activeHudModules ); }
|
|
void PushActiveHudModuleUrgent( sdHudModule& module ) { module.GetNode().AddToFront( activeHudModules ); }
|
|
|
|
void SetTaskIndex( const wchar_t* text ) { taskIndex = text; }
|
|
|
|
void OnServerInfoChanged() { serverInfoChanged = serverInfoChanged + 1.0f; }
|
|
|
|
idEntity* GetActiveObjectView( void ) const { return activeObjectView; }
|
|
|
|
guiHandle_t AllocHudModule( const char* name, int sort, bool allowInhibit );
|
|
void FreeHudModule( guiHandle_t handle );
|
|
|
|
void SetClipIndex( int index ) { clipIndex = index; }
|
|
bool GetCommandMapExpanding( void ) const { return commandMapExpanding; }
|
|
void ToggleCommandMap( void ) { ForceCommandMap( !commandMapExpanding ); }
|
|
void ForceCommandMap( bool on ) { commandMapExpanding = on; }
|
|
|
|
void OnTeamChanged( sdTeamInfo* oldTeam, sdTeamInfo* newTeam );
|
|
void OnDefaultSpawnChanged( sdTeamInfo* team, idEntity* newSpawn );
|
|
void OnSpawnChanged( void );
|
|
void OnSetActiveSpawn( idEntity* newSpawn );
|
|
void OnEntityDestroyed( idEntity* entity );
|
|
void SetLocalPlayer( idPlayer* player ) { localPlayer = player; }
|
|
void OnTaskExpired( sdPlayerTask* task );
|
|
void OnTaskCompleted( sdPlayerTask* task );
|
|
|
|
void SetActiveCamera( idEntity* camera );
|
|
void SetActiveWeapon( idWeapon* weapon );
|
|
void SetActivePlayer( idPlayer* player );
|
|
void SetActiveTask( sdPlayerTask* task );
|
|
|
|
idPlayer* GetActivePlayer( void );
|
|
|
|
void OnObituary( idPlayer* self, idPlayer* other );
|
|
|
|
void SetHasTask( bool value ) { hasTask = value; }
|
|
|
|
void SetShowFireTeam( bool keyDown ) { showFireTeam = static_cast< float >( keyDown ); }
|
|
bool GetShowFireTeam() const { return showFireTeam != 0.0f; }
|
|
|
|
void SetPaused( bool value ) { isPaused = value; }
|
|
void SetUnpauseKeyString( const wchar_t* key ) { unpauseKeyString = key; }
|
|
|
|
private:
|
|
static void UpdatePlayerUpgradeIcons( sdUIIconNotification* icons );
|
|
static void PlayerUpgradeIcons( sdUIIconNotification* icons );
|
|
static void UpdatePlayerNotifyIcons( sdUIIconNotification* icons );
|
|
|
|
private:
|
|
idList< sdFloatProperty > proficiency;
|
|
idList< sdFloatProperty > proficiencyPercent;
|
|
|
|
ammoType_t stroyentType;
|
|
|
|
sdProperties::sdPropertyHandler properties;
|
|
|
|
sdAutoPtr< sdLimboMenu > limboMenu;
|
|
sdAutoPtr< sdDeployMenu > deployMenu;
|
|
sdAutoPtr< sdQuickChatMenu > quickChatMenu;
|
|
sdAutoPtr< sdQuickChatMenu > contextMenu;
|
|
sdAutoPtr< sdFireTeamMenu > fireTeamMenu;
|
|
sdAutoPtr< sdChatMenu > chatMenu;
|
|
sdAutoPtr< sdWeaponSelectionMenu > weaponSelectionMenu;
|
|
sdAutoPtr< sdPlayerHud > playerHud;
|
|
sdAutoPtr< sdPostProcess > postProcess;
|
|
sdAutoPtr< sdTakeViewNoteMenu > takeViewNoteMenu;
|
|
sdAutoPtr< sdPassiveHudModule > proxyOverlay;
|
|
|
|
idLinkList< sdHudModule > activeHudModules;
|
|
idLinkList< sdHudModule > passiveHudModules;
|
|
idLinkList< sdHudModule > scriptHudModules;
|
|
idLinkList< sdHudModule > drawHudModules;
|
|
|
|
idList< sdHudModule* > allocedHudModules;
|
|
|
|
guiHandle_t scoreBoard;
|
|
|
|
int clipIndex;
|
|
bool commandMapExpanding;
|
|
|
|
int activateEndGame;
|
|
|
|
const sdDeclLocStr* killedPlayerMessage;
|
|
const sdDeclLocStr* killedByPlayerMessage;
|
|
const sdDeclLocStr* killedPlayerTeamMessage;
|
|
const sdDeclLocStr* killedByPlayerTeamMessage;
|
|
const sdDeclLocStr* currentMission;
|
|
|
|
idEntityPtr< idEntity > currentSpawnPoint;
|
|
idEntityPtr< idEntity > activeObjectView;
|
|
idEntityPtr< idEntity > activeCameraEntity;
|
|
idEntityPtr< idWeapon > activeWeaponEntity;
|
|
idEntityPtr< idPlayer > activePlayerEntity;
|
|
taskHandle_t activeTask;
|
|
|
|
idPlayer* localPlayer;
|
|
idEntityPtr< idEntity > contextEntity;
|
|
|
|
idStaticList< int, MAX_ASYNC_CLIENTS > voipChatTimes;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Health";
|
|
desc = "Local view player health.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty health;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/MaxHealth";
|
|
desc = "Local view player max health.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty maxHealth;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Speed";
|
|
desc = "Local view player or vehicle velocity.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty speed;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Yaw";
|
|
desc = "View player yaw.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty yaw;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehicleYaw";
|
|
desc = "Vehicle yaw.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty vehicleYaw;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Pitch";
|
|
desc = "View player pitch.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty pitch;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Role";
|
|
desc = "View player class name or \"spec\" if spectating.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty role;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/RoleTitle";
|
|
desc = "View player class title or spectator title if spectating.";
|
|
datatype = "int";
|
|
)
|
|
sdIntProperty roleTitle;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TaskInfo";
|
|
desc = "TODO: not used.";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty taskInfo;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Location";
|
|
desc = "Location name for view players current location.";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty location;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/GdfCriticalClass";
|
|
desc = "Class name for the class that can complete the current objective.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty gdfCriticalClass;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/StroggCriticalClass";
|
|
desc = "Class name for the class that can complete the current objective.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty stroggCriticalClass;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Xp";
|
|
desc = "Local View player XP.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty xp;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Rank";
|
|
desc = "View player's rank or invalid handle if there's no rank.";
|
|
datatype = "int";
|
|
)
|
|
sdIntProperty rank;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/RankMaterial";
|
|
desc = "View player's rank material name.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty rankMaterial;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/IsReady";
|
|
desc = "Player is ready.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty isReady;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/NeedsReady";
|
|
desc = "Server is in warmup mode waiting for players to ready up.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty needsReady;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/SpreadFraction";
|
|
desc = "View player weapon spread.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty spreadFraction;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/IsDead";
|
|
desc = "Player is unconcious waiting for revive or respawn.";
|
|
datatype = "float";
|
|
alias = "dead";
|
|
)
|
|
sdFloatProperty isDead;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/IsViewDead";
|
|
desc = "Player is unconcious waiting for revive or respawn.";
|
|
datatype = "float";
|
|
alias = "viewDead";
|
|
)
|
|
sdFloatProperty isViewDead;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/IsInLimbo";
|
|
desc = "Player is in the limbo menu and might be waiting for respawn.";
|
|
datatype = "float";
|
|
alias = "limbo";
|
|
)
|
|
sdFloatProperty isInLimbo;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/IsSpawning";
|
|
desc = "Player waiting to spawn.";
|
|
datatype = "float";
|
|
alias = "spawning";
|
|
)
|
|
sdFloatProperty isSpawning;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/CommandMapState";
|
|
desc = "True if expanding.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty commandMapState;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/MapLoadPercent";
|
|
desc = "Map loading percent.";
|
|
datatype = "float";
|
|
)
|
|
// sdFloatProperty mapLoadPercent;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Position";
|
|
desc = "View player latitude/longitude/altitude.";
|
|
datatype = "vec3";
|
|
)
|
|
sdVec3Property position;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/InProxy";
|
|
desc = "View player in proxy (vehicle or mountable weapon).";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty inProxy;
|
|
|
|
SD_UI_PUSH_GROUP_TAG( "Vehicle Properties" )
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehicleValid";
|
|
desc = "View player is in vehicle.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty vehicleValid;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehicleHealth";
|
|
desc = "View player vehicle health.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty vehicleHealth;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehiclePosition";
|
|
desc = "View players vehicle position.";
|
|
datatype = "int";
|
|
)
|
|
sdIntProperty vehiclePosition;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehicleDestructionTime";
|
|
desc = "MCP destruction time if MCP moves outside the valid path.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty vehicleDestructTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehicleWrongDirection";
|
|
desc = "True if MCP is driving in the wrong direction.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty vehicleWrongDirection;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehicleKickDistance";
|
|
desc = "Distance before being kicked while driving the MCP.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty vehicleKickDistance;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehicleEMPed";
|
|
desc = "Time the vehicle is EMPed.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty vehicleEMPed;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehicleWeaponEMPed";
|
|
desc = "Time the vehicle weapon is EMPed.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty vehicleWeaponEMPed;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehicleSiegeMode";
|
|
desc = "True if vehicle is in siege mode.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty vehicleSiegeMode;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VehicleThirdPerson";
|
|
desc = "Players vehicle camera mode is third person.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty vehicleThirdPerson;
|
|
|
|
SD_UI_POP_GROUP_TAG
|
|
SD_UI_PUSH_GROUP_TAG( "Weapon/Damage Properties" )
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WeaponName";
|
|
desc = "View players weapon title handle.";
|
|
datatype = "int";
|
|
)
|
|
sdIntProperty weaponName;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WeaponLookupName";
|
|
desc = "Lookup name for view players weapon.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty weaponLookupName;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WeaponClip";
|
|
desc = "Ammo in clip.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty weaponClip;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WeaponTotalClip";
|
|
desc = "Total ammo in weapon.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty weaponTotalClip;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WeaponNeedsAmmo";
|
|
desc = "Weapon needs ammo to shoot.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty weaponNeedsAmmo;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WeaponShotsPerClip";
|
|
desc = "Total shots per clip.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty weaponShotsPerClip;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WeaponShotsAvailable";
|
|
desc = "Shots left.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty weaponShotsAvailable;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WeaponSlot";
|
|
desc = "Slot for item.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty weaponSlot;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/LastDamageTime";
|
|
desc = "Last time damage was dealt to view player.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty lastDamageTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/LastDamageIntensity";
|
|
desc = "Last damage amount dealt to the view player.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty lastDamageIntensity;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/HitFeedback";
|
|
desc = "True if view player dealt damage to another player.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty hitFeedback;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/LastHitFeedbackType";
|
|
desc = "Team allegiance for the player the view player dealt damage to.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty lastHitFeedbackType;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/LastKillMessage";
|
|
desc = "Last kill message (you killed X/you were killed by X messages).";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty lastKillMessage;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/LastKillMessageTime";
|
|
desc = "Last time the kill message was changed.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty lastKillMessageTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TargetingCenter";
|
|
desc = "Targeting position on HUD for target lock rectangle.";
|
|
datatype = "vec2";
|
|
)
|
|
sdVec2Property targetingCenter;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TargetingColor";
|
|
desc = "Color of target lock materials to be drawn by the GUI.";
|
|
datatype = "vec4";
|
|
)
|
|
sdVec4Property targetingColor;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TargetingPercent";
|
|
desc = "Fraction if locking on. 0 If not locking on.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty targetingPercent;
|
|
|
|
SD_UI_POP_GROUP_TAG
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/ShowCrosshair";
|
|
desc = "Show crosshair, used to hide crosshair in vehicles/mounts.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty showCrosshair;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/ShowTargetingInfo";
|
|
desc = "Show targeting info, used in vehicle weapon GUIs.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty showTargetingInfo;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/HideDecoyInfo";
|
|
desc = "TODO: unused.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty hideDecoyInfo;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/CrosshairDistance";
|
|
desc = "Distance form view player to point crosshair is pointing in meters. Used for range indicators in weapons.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty crosshairDistance;
|
|
|
|
SD_UI_PUSH_GROUP_TAG( "Misson System Properties" )
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/FireTeamName";
|
|
desc = "Fire team name.";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty fireTeamName;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/FireTeamActive";
|
|
desc = "View player is in a fire team.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty fireTeamActive;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/FireTeamLeader";
|
|
desc = "True if view player is fireteam leader.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty fireTeamLeader;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/FireTeamShow";
|
|
desc = "Show fireteam list.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty fireTeamShow;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TaskStatus";
|
|
desc = "New mission available to the player.";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty taskStatus;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TaskAddedTime";
|
|
desc = "Time the new mission became available to the player.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty taskAddedTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TaskSelectedTime";
|
|
desc = "Last time the player selected a new mission.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty taskSelectedTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TaskCompletedTime";
|
|
desc = "Task a mission was completed.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty taskCompletedTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TaskExpiredTime";
|
|
desc = "Time a task expired.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty taskExpiredTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TaskIndex";
|
|
desc = "TODO: unused.";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty taskIndex;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/HasTask";
|
|
desc = "True if player finished cycling tasks.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty hasTask;
|
|
|
|
SD_UI_POP_GROUP_TAG
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/LagOMeter";
|
|
desc = "True if lagOMeter should be visible.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty lagOMeter;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Name";
|
|
desc = "Players name (including color codes).";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty name;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Spectating";
|
|
desc = "Player is spectating (true if in the limbo menu, waiting to respawn or at the end of the game).";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty spectating;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Spectator";
|
|
desc = "True if a spectator (not on any teams).";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty spectator;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/LocalView";
|
|
desc = "False if spectating others.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty localView;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/SpectateClient";
|
|
desc = "View players name (including color codes).";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty spectateClient;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VoiceSending";
|
|
desc = "True if player sent a voice message within the last 0.5 seconds.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty voiceSending;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VoiceReceiving";
|
|
desc = "True if player received a voice message within the last 0.5 seconds..";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty voiceReceiving;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/IsChatting";
|
|
desc = "TODO: unused.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty isChatting;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/IsLagged";
|
|
desc = "True if player is lagged.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty isLagged;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/SpawnSelected";
|
|
desc = "TODO: unused in the GUIS. True if the view player has selected a spawn point.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty spawnSelected;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/ToolTipText";
|
|
desc = "Tooltip text to display.";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty toolTipText;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/ToolTipIsPriority";
|
|
desc = "Tooltip is an important tooltip.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty toolTipIsPriority;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/ToolTipMaterial";
|
|
desc = "Icon name appropriate for the tooltip.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty toolTipMaterial;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/ToolTipLocation";
|
|
desc = "TODO: unused in the GUIs. Tooltip location title handle.";
|
|
datatype = "int";
|
|
)
|
|
sdIntProperty toolTipLocation;
|
|
|
|
SD_UI_PUSH_GROUP_TAG( "Match/Team Properties" )
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TeamName";
|
|
desc = "Team lookup name or \"spectating\" if player is spectator.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty teamName;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/TeamNameView";
|
|
desc = "Team lookup name for view player or equal to teamName if local player isn't spectating.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty teamNameView;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/NextVoteTime";
|
|
desc = "Next time the local player can call a vote. 0 if allowed immediately.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty nextVoteTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WinningTeam";
|
|
desc = "Used during the end game. Lookup name for the winning team or \"\" if there is no winner.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty winningTeam;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WinningMusic";
|
|
desc = "Sound shader for musing to play during end game.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty winningMusic;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WinningTeamTitle";
|
|
desc = "Title handle for winning team.";
|
|
datatype = "int";
|
|
)
|
|
sdIntProperty winningTeamTitle;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/WinningTeamString";
|
|
desc = "Win text handle to display, different depending on the winning team.";
|
|
datatype = "int";
|
|
)
|
|
sdIntProperty winningTeamString;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/winningTeamReason";
|
|
desc = "Win text handle to display, gives the reason for the team winning (if a tiebreak situation).";
|
|
datatype = "int";
|
|
)
|
|
sdIntProperty winningTeamReason;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/EndGameCamera";
|
|
desc = "TODO: redundant. True if at the end game.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty endGameCamera;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/EndGame";
|
|
desc = "True if at the end game.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty endGame;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/NextGameStateTime";
|
|
desc = "Time when changing game state (endgame -> next map load for example).";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty nextGameStateTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/MathTime";
|
|
desc = "Match time in milliseconds. Counts down.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty matchTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/Warmup";
|
|
desc = "Players are in warmup.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty warmup;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/MatchStatus";
|
|
desc = "Match status string for warmup and scoreboard.";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty matchStatus;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/MatchType";
|
|
desc = "One of the three match types.";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty matchType;
|
|
|
|
SD_UI_POP_GROUP_TAG
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/ScoreboardActive";
|
|
desc = "True if the view player is viewing the scoreboard.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty scoreboardActive;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/LastHitTime";
|
|
desc = "TODO: unused.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty lastHitTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/DeploymentActive";
|
|
desc = "True if view player is requesting a deployment.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty deploymentActive;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/DeployRotation";
|
|
desc = "Deployment yaw. Rotation of the last deplyable placed is saved for next time.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty deployRotation;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/DeployPosition";
|
|
desc = "Current deploy position.";
|
|
datatype = "vec3";
|
|
)
|
|
sdVec3Property deployPosition;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/DeployIsRotating";
|
|
desc = "View player is in the rotation mode.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty deployIsRotating;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VotingAllowed";
|
|
desc = "False if voting has been disabled by the server.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty votingAllowed;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VoteActive";
|
|
desc = "True if a vote is in progress.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty voteActive;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VoteText";
|
|
desc = "The vote text if a vote is in progress.";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty voteText;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VoteYesCount";
|
|
desc = "Yes votes for current vote.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty voteYesCount;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VoteNoCount";
|
|
desc = "No votes for current vote.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty voteNoCount;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/ServerInfoChanged";
|
|
desc = "Incremented when serverinfo has changed.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty serverInfoChanged;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/LastVoiceSender";
|
|
desc = "Name of the last voice sender.";
|
|
datatype = "string";
|
|
)
|
|
sdStringProperty lastVoiceSender;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/VoiceSendMode";
|
|
desc = "Channel that the local player is sending voice to.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty voiceSendMode;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/GameTime";
|
|
desc = "Real game time elapsed, does not include any time the game was paused for.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty gameTime;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/ShowFireTeam";
|
|
desc = "Local player wants to see the fireteam list on the HUD.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty showFireTeam;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/IsPaused";
|
|
desc = "Game is paused.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty isPaused;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/SinglePlayerGame";
|
|
desc = "Is a single player game.";
|
|
datatype = "float";
|
|
alias = "isSinglePlayer"
|
|
)
|
|
sdFloatProperty singlePlayerGame;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/UnpauseKeyString";
|
|
desc = "Optional weapon key to unpause tooltip.";
|
|
datatype = "wstring";
|
|
)
|
|
sdWStringProperty unpauseKeyString;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/ServerIsRepeater";
|
|
desc = "Is the server you are connected to a TV server.";
|
|
datatype = "float";
|
|
alias = "serverIsRepeater"
|
|
)
|
|
sdFloatProperty serverIsRepeater;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/IsServer";
|
|
desc = "True if the server.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty isServer;
|
|
|
|
SD_UI_PROPERTY_TAG(
|
|
title = "PlayerProperties/InLetterBox";
|
|
desc = "Local view player letterbox state.";
|
|
datatype = "float";
|
|
)
|
|
sdFloatProperty inLetterBox;
|
|
};
|
|
|
|
class sdGlobalPropertiesNameSpace : public sdUIWritablePropertyHolder {
|
|
public:
|
|
~sdGlobalPropertiesNameSpace( void );
|
|
|
|
void Init( const idDict& dict );
|
|
void Shutdown( void );
|
|
|
|
virtual sdProperties::sdProperty* GetProperty( const char* name );
|
|
virtual sdProperties::sdProperty* GetProperty( const char* name, sdProperties::ePropertyType type );
|
|
virtual sdProperties::sdPropertyHandler& GetProperties() { return properties; }
|
|
virtual const sdProperties::sdPropertyHandler& GetProperties() const { return properties; }
|
|
virtual const char* GetName() const { return ""; }
|
|
virtual const char* FindPropertyName( sdProperties::sdProperty* property, sdUserInterfaceScope*& scope ) { scope = this; return properties.NameForProperty( property ); }
|
|
|
|
virtual sdUserInterfaceScope* GetSubScope( const char* name );
|
|
|
|
virtual int NumSubScopes() const { return namespaces.Num(); }
|
|
virtual const char* GetSubScopeNameForIndex( int index ) { return namespaces.GetKey( index ).c_str(); }
|
|
virtual sdUserInterfaceScope* GetSubScopeForIndex( int index ) { return *namespaces.GetIndex( index ); }
|
|
|
|
int GetNumNamespaces() const;
|
|
int GetNumProperties() const;
|
|
|
|
private:
|
|
sdProperties::sdPropertyHandler properties;
|
|
|
|
idHashMap< sdGlobalPropertiesNameSpace* > namespaces;
|
|
|
|
idList< sdProperties::sdPropertyValueBase* > propertyValues;
|
|
};
|
|
|
|
class sdGlobalProperties : public sdGlobalPropertiesNameSpace {
|
|
public:
|
|
sdGlobalProperties( void );
|
|
virtual ~sdGlobalProperties( void );
|
|
|
|
void Init( void );
|
|
void Shutdown( void );
|
|
|
|
private:
|
|
};
|
|
|
|
#endif // __PLAYERPROPERTIES_H__
|