//======== (C) Copyright 2001 Charles G. Cleveland All rights reserved. ========= // // The copyright to the contents herein is the property of Charles G. Cleveland. // The contents may be used and/or copied only with the written permission of // Charles G. Cleveland, or in accordance with the terms and conditions stipulated in // the agreement/contract under which the contents have been supplied. // // Purpose: Main NS HUD, also interface to client network messages // // $Workfile: AvHHud.h $ // $Date: 2002/10/24 21:29:49 $ // //------------------------------------------------------------------------------- // $Log: AvHHud.h,v $ // Revision 1.60 2002/10/24 21:29:49 Flayra // - Moved help client-side // - Fixed particle/changelevel crash // - Reworked marine upgrade drawing // - Added lots of utility functions for help system (mirrors functions on server) // - Removed gamma message unless it failed or if maxplayers is 1 // - Fixed alien hive sight crash // - Show players under reticle while in ready room and spectating // - Removed ugly/too-prevalent user3 icons // // Revision 1.59 2002/10/03 20:24:39 Flayra // - Changes for "more resources required" // // Revision 1.58 2002/10/03 18:54:31 Flayra // - Allow right-click to cancel building placement // - Fixed help icons // - Added a couple utility functions // - Reworked order notification // - Reworked blip network messages to avoid hard-coded limit // - Sent max resources down with current resources // - Countdown sound no longer prevents other hud sounds // - Alien trigger sounds // - New order sounds // - No longer disable nodes out of our cost range // // Revision 1.57 2002/09/25 20:47:22 Flayra // - Don't draw elements on HUD when dead // - UI refactoring // - Split reticle help into help text and reticle text // - Removed use order // - Added separate select sound for alien // - Multiple move sounds // - Only draw entity build/health status when under reticle (no more scanning around you) // - Added 3 new sayings // // Revision 1.56 2002/09/23 22:18:25 Flayra // - Added alien build circles // - Game status changes so particles aren't sent every time // - Demo playback changes (save restore basic data that HUD already has) // - New alert sounds // - Skin support // // Revision 1.55 2002/09/09 19:55:24 Flayra // - Added hive info indicator // - Fixed bug where reticle tooltip help text wasn't being set until a weapon was selected // - Fixed release mode bug where tooltips weren't expiring // - Fixed bug where marine upgrades blinked // - "No commander" indicator now blinks // // Revision 1.54 2002/08/31 18:01:01 Flayra // - Work at VALVe // // Revision 1.53 2002/08/16 02:37:49 Flayra // - HUD sounds no longer cut each other off (they won't play instead of cutting off another sound) // - Tooltip sounds // - Selection issues // - Draw rings around buildings that need to be built // - Removed old overwatch code // // Revision 1.52 2002/08/09 01:02:51 Flayra // - Added hooks for demo playback, removed prediction selection // // Revision 1.51 2002/08/02 22:51:28 Flayra // - Fixed memory overwrite...eek! // // Revision 1.50 2002/08/02 21:59:12 Flayra // - Added reticle help, new tooltip system and much nicer order drawing! Refactored view model drawing a bit, hoping to make texture blending work for it. // // Revision 1.49 2002/07/26 23:05:01 Flayra // - Generate numerical feedback for damage events // - Refactoring for more info when looking at something (instead of bad-looking player names only) // // Revision 1.48 2002/07/23 17:07:37 Flayra // - Added visually-smooth energy level, added versatile location code, new hive sight info, refactored to remove extra sprites (128 HUD sprites bug), commander tech help fixes // // Revision 1.47 2002/07/08 17:07:56 Flayra // - Started to add display of marine upgrade sprite, fixed bug where building indicators aren't displayed after a map change, info_location drawing changes, primal scream color tweak, removed old hive drawing code // // Revision 1.46 2002/07/01 21:35:05 Flayra // - Removed lots of outdated sprites and sprite code, added building ranges, fixed ghost building problem (bug #82) // // Revision 1.45 2002/06/25 18:03:09 Flayra // - Added info_locations, removed old weapon help system, added smooth resource swelling, lots of alien UI usability changes, fixed problem with ghost building // // Revision 1.44 2002/06/10 19:55:36 Flayra // - New commander UI (bindable via hotkeys, added REMOVE_SELECTION for when clicking menu options when no players selected) // // Revision 1.43 2002/06/03 16:48:45 Flayra // - Help sprites moved into one animated sprite, select sound volume reduced (now that sound is normalized) // // Revision 1.42 2002/05/28 17:48:14 Flayra // - Minimap refactoring, reinforcement refactoring, new hive sight fixes, recycling support // // Revision 1.41 2002/05/23 02:33:42 Flayra // - Post-crash checkin. Restored @Backup from around 4/16. Contains changes for last four weeks of development. // //=============================================================================== #ifndef AVHHUD_H #define AVHHUD_H #include "ui/UIHud.h" #include "mod/AvHSharedTypes.h" #include "mod/AvHConstants.h" #include "mod/AvHParticleSystem.h" #include "common/entity_state.h" #include "VGUI_ProgressBar.h" #include "mod/AvHEntityHierarchy.h" #include "ui/MarqueeComponent.h" #include "mod/AvHOrder.h" #include "mod/AvHMessage.h" #include "mod/AvHAmbientSound.h" #include "mod/AvHTechNodes.h" #include "mod/AvHVisibleBlipList.h" #include "mod/AvHMapExtents.h" #include "mod/AvHSpecials.h" #include "util/GammaTable.h" #include "mod/AvHBaseInfoLocation.h" #include "mod/AvHTooltip.h" #include "mod/AvHTechSlotManager.h" #include "mod/AvHBalance.h" #include "mod/AvHHudConstants.h" #include "mod/AvHOverviewMap.h" class AvHTeamHierarchy; class PieMenu; class FadingImageLabel; using vgui::Cursor; struct AnimatedSprite { float mCurrentFrame; int mData; }; class SelectionEffect { public: SelectionEffect() : mEntIndex(-1), mAngleOffset(0) {} int mEntIndex; int mAngleOffset; }; typedef enum { MAIN_MODE, EDITPS_MODE, SCOREBOARD_MODE } UIMode; typedef vector SelectionListType; class NumericalInfoEffect { public: NumericalInfoEffect(float inPosition[3], float inNumber, int inEventType, float inTimeCreated); void GetPosition(float* outPosition) const; float GetNumber() const; int GetEventType() const; float GetTimeCreated() const; void SetPosition(float inPosition[3]); private: float mPosition[3]; float mNumber; int mEventType; float mTimeCreated; }; const int kNumUpgradeLines = 5; class AvHHud : public UIHud { public: AvHHud(const string& inFilename, UIFactory* inFactory); virtual ~AvHHud(void); void OnActivateSteamUI(); void OnDeactivateSteamUI(); void OnLostFocus(); bool OnKeyEvent(int virtualKey, int scanCode, bool pressed); void AddMiniMapAlert(float x, float y); void AddNumericalInfoMessage(float inOrigin[3], float inNumber, int inEventType); void AddTooltip(const char* inMessageText, bool inIsToolTip = true, float inTooltipWidth = kToolTipMaxWidth); bool AddTooltipOnce(const char* inMessageText, bool inIsToolTip = true); void Cancel(); void ClearSelection(); void ClientProcessEntity(struct entity_state_s* inEntity); void ComponentJustPainted(Panel* inPanel); bool GetAndClearAlienAbility(AvHMessageID& outMessageID); bool GetAndClearGroupEvent(AvHMessageID& outMessageID); bool GetAndClearTechEvent(AvHMessageID& outMessageID); bool GetLastHotkeySelectionEvent(AvHMessageID& outMessageID); void SetLastHotkeySelectionEvent(AvHMessageID inMessageID); // Returns true if particles should be rendered in the HUD. bool GetParticlesVisible() const; bool GetSafeForSpriteDrawing() const; void ClearTrackingEntity(); int GetTrackingEntity() const; bool GetIsRegionBlockedByUI(float inNormX, float inNormY); //int GetArmorLevel(void) const; int GetCommanderIndex() const; bool GetHasJetpack() const; int GetHelpIconFrameFromUser3(AvHUser3 inUser3); HSPRITE GetHelpSprite() const; bool GetHasAlienUpgradesAvailable() const; bool GetIsAlien() const; bool GetIsBeingDigested() const; bool GetIsEnsnared() const; bool GetIsDigesting() const; bool GetIsStunned() const; bool GetIsNotInControl() const; bool GetIsInTopDownMode() const; bool GetIsMarine() const; bool GetIsRelevant() const; bool GetIsShowingMap() const; AvHPlayMode GetPlayMode(void) const; bool GetAlienHelpForMessage(int inMessageID, string& outHelpText, int& outPointCost) const; bool GetDoesPlayerHaveOrder() const; bool GetHelpForMessage(int inMessageID, string& outHelpText) const; bool GetInTopDownMode() const; bool GetIsSelecting() const; OrderListType GetOrderList() const; AvHOrderType GetOrderMode() const; bool GetCenterPositionForGroup(int inGroupNumber, vec3_t& outCenterPosition) const; bool GetMouseOneDown() const; bool GetMouseTwoDown() const; bool GetAndClearTopDownScrollAmount(int& outX, int& outY, int& outZ); bool GetAndClearSelectionEvent(vec3_t& outSelectionXY, AvHMessageID& outMessageID); EntityListType GetSelected() const; const AvHTechSlotManager& GetTechSlotManager() const; bool GetTranslatedUser3Name(AvHUser3 inUser3, string& outString) const; bool GetTranslatedUser3Description(AvHUser3 inUser3, bool inFriendly, string& outString) const; vec3_t GetVisualOrigin() const; AvHMessageID HotKeyHit(char inChar); virtual void Init(void); virtual void PostUIInit(void); virtual void VidInit(void); bool GetGameStarted() const; int GetGameTime() const; int GetGameTimeLimit() const; int GetCombatAttackingTeamNumber() const; static bool GetShowingMap(); static void PlayStream(); static void StopStream(); bool GetIsAlive(bool inIncludeSpectating = true) const; void GhostBuildingCallback( struct tempent_s *ent, float frametime, float currenttime); void CancelBuilding(); void PlayHUDSound(const char *szSound, float vol, float inSoundLength = 0.0f); void PlayHUDSound(int iSound, float vol, float inSoundLength = 0.0f); void PlayHUDSound(AvHHUDSound inSound); float GetHUDExperience() const; int GetHUDExperienceLevel() const; float GetHUDHandicap() const; AvHUser3 GetHUDUser3() const; AvHPlayMode GetHUDPlayMode() const; AvHTeamNumber GetHUDTeam() const; int GetHUDUpgrades() const; int GetHUDMaxArmor() const; int GetHUDMaxHealth() const; void GetPrimaryHudColor(int& outR, int& outG, int& outB, bool inIgnoreUpgrades = false, bool gammaCorrect = true) const; float GetTimeOfLastUpdate() const; int GetMenuTechSlots() const; //void GetVisibleBlips(VisibleBlipListType& outBlipList); virtual int Redraw( float flTime, int intermission ); virtual void ResetComponentsForUser3(); void SetSelectingWeaponID(int inWeaponID, int inR = -1, int inG = -1, int inB = -1); void SetTechHelpText(const string& inTechHelpText); void DrawSelectionCircleOnGroundAtPoint(vec3_t inOrigin, int inRadius); void DrawBuildHealthEffectsForEntity(int inEntIndex); void DrawSelectionAndBuildEffects(); void DrawHUDNumber(int inX, int inY, int inFlags, int inNumber); int InitializeDemoPlayback(int inSize, unsigned char* inBuffer); int InitializeDemoPlayback2(int inSize, unsigned char* inBuffer); int InitializeWeaponInfoPlayback(int inSize, unsigned char* inBuffer); virtual bool Update(float inCurrentTime, string& outErrorString); virtual void UpdateMusic(float inCurrentTime); bool SlotInput(int inSlot); const AvHMapExtents& GetMapExtents(); float GetGammaSlope() const; string GetMapName(bool inLocalOnly = false) const; int GetMaxAlienResources() const; int GetNumActiveHives() const; void HideProgressStatus(); void SetProgressStatus(float inPercentage); AvHVisibleBlipList& GetEnemyBlipList(); AvHVisibleBlipList& GetFriendlyBlipList(); AvHEntityHierarchy& GetEntityHierarchy(); int GetLocalUpgrades() const; string GetNameOfLocation(vec3_t inLocation) const; const AvHTechNodes& GetTechNodes() const; UIMode GetUIMode() const; bool SwitchUIMode(UIMode inNewMode); bool GetIsCombatMode() const; bool GetIsNSMode() const; void HideResearchProgressStatus(); void SetResearchProgressStatus(float inPercentage); AvHMessageID GetGhostBuilding() const; void SetGhostBuildingMode(AvHMessageID inGhostBuilding); void SetAlienAbility(AvHMessageID inAlienAbility); void SetRenderingSelectionView(bool inState); void SetClientDebugCSP(weapon_data_t* inWeaponData, float inNextPlayerAttack); void SetCurrentWeaponData(int inCurrentWeaponID, bool inEnabled); int GetCurrentWeaponID(void); void DrawTopDownBG(); void DrawTranslatedString(int inX, int inY, const char* inStringToTranslate, bool inCentered = false, bool inIgnoreUpgrades = false, bool inTrimExtraInfo = false); void HandleFog(); void PostModelRender(char* inModelName); void PreRenderFrame(); void PostRenderFrame(); void RenderNoZBuffering(); void Render(); void RenderCommonUI(); void RenderMarineUI(); void RenderCommanderUI(); void RenderAlienUI(); void RenderMiniMap(int inX, int inY, int inWidth, int inHeight); void RenderStructureRanges(); void RenderStructureRange(vec3_t inOrigin, int inRadius, HSPRITE inSprite, int inRenderMode = kRenderNormal, int inFrame = 0, float inR = 0, float inG = 0.5, float inB = 0, float inAlpha = 1.0f); void DrawWarpedOverlaySprite(int spriteHandle, int numXFrames, int numYFrames, float inWarpXAmount = 0.0f, float inWarpYAmount = 0.0f, float inWarpXSpeed = 0.0f, float inWarpYSpeed = 0.0f); void DrawActionButtons(); void DrawHotgroups(); void DrawPendingRequests(); void SetCurrentUseableEnergyLevel(float inEnergyLevel); // Network messages int AlienInfo(const char* pszName, int iSize, void* pbuf); int BlipList(const char* pszName, int iSize, void* pbuf); //int ChangeNode(const char* pszName, int iSize, void* pbuf); int ClScript(const char *pszName, int iSize, void *pbuf); int Countdown(const char* pszName, int iSize, void* pbuf); int DebugCSP(const char* pszName, int iSize, void* pbuf); int EditPS(const char* pszName, int iSize, void* pbuf); int EntHier(const char *pszName, int iSize, void *pbuf); int Fog(const char* pszName, int iSize, void* pbuf); int ListPS(const char* pszName, int iSize, void* pbuf); int Reinfor(const char* pszName, int iSize, void* pbuf); int Particles(const char *pszName, int iSize, void *pbuf); int SoundNames(const char *pszName, int iSize, void *pbuf); int PlayHUDNot(const char* pszName, int iSize, void* pbuf); //int Research(const char* pszName, int iSize, void* pbuf); #ifdef AVH_PLAYTEST_BUILD int BalanceVar(const char* pszName, int iSize, void* pbuf); #endif int ServerVar(const char* pszName, int iSize, void* pbuf); int GameStatus(const char* pszName, int iSize, void* pbuf); int MiniMap(const char* pszName, int iSize, void* pbuf); //int NetSS(const char* pszName, int iSize, void* pbuf); int Progress(const char* pszName, int iSize, void* pbuf); int SetGmma(const char* pszName, int iSize, void* pbuf); int SetSelect(const char* pszName, int iSize, void* pbuf); int SetOrder(const char* pszName, int iSize, void* pbuf); //int CplteOrder(const char* pszName, int iSize, void* pbuf); int SetupMap(const char* pszName, int iSize, void* pbuf); int SetTopDown(const char* pszName, int iSize, void* pbuf); int SetTech(const char* pszName, int iSize, void* pbuf); int TechSlots(const char* pszName, int iSize, void* pbuf); void GetSpriteForUser3(AvHUser3 inUser3, int& outSprite, int& outFrame, int& outRenderMode); #ifdef AVH_PLAYTEST_BUILD const BalanceIntListType& GetBalanceInts() const; const BalanceFloatListType& GetBalanceFloats() const; #endif int GetCurrentSquad() const; AvHOverviewMap& GetOverviewMap(); void ShowCrosshair(); void HideCrosshair(); // This function should be used instead of the global SetCrosshair. void SetCurrentCrosshair(HSPRITE hspr, wrect_t rc, int r, int g, int b); static void ResetGammaAtExit(); static int ResetGammaAtExitForOnExit(); static void ResetGammaAtExit(int inSig); void SetViewport(const int inViewport[4]); void GetViewport(int outViewport[4]) const; const AvHFont& GetSmallFont() const; cl_entity_s* GetVisiblePlayer() const; float GetServerVariableFloat(const char* inName) const; private: bool GetCommanderLabelText(std::string& outCommanderName) const; void AddCommands(); void ClearData(); void DisplayCombatUpgradeMenu(bool inVisible); void DrawMouseCursor(int inBaseX, int inBaseY); void DrawOrders(); void DrawHelpIcons(); void DrawHUDStructureNotification(); void DrawInfoLocationText(); void DrawPlayerNames(); void DrawReticleInfo(); void DrawToolTips(); void DrawWorldSprite(int inSpriteHandle, int inRenderMode, vec3_t inWorldPosition, int inFrame, float inWorldSize); void DrawOrderIcon(const AvHOrder& inOrder); void DrawOrderText(const AvHOrder& inOrder); int GetFrameForOrderType(AvHOrderType inOrderType) const; void GetReticleTextDrawingInfo(float& outNormX, float& outNormY, bool& outCentered) const; void DrawTechTreeSprite(AvHMessageID inMessageID, int inPosX, int inPosY, int inWidth, int inHeight, int inFrame); int GetTechTreeSprite(AvHMessageID inMessageID); void GetTooltipDrawingInfo(float& outNormX, float& outNormY) const; string GetRankTitle(bool inShowUnspentLevels = false) const; bool GetShouldDisplayUser3(AvHUser3 inUser3) const; void InitCommanderMode(); void InitializeDemoRecording(); void InitMenu(const string& inMenuName); void ChangeUpgradeCosts(int inOldMessageID, int inNewMessageID, const char* inText); void ChangeUpgradeCostsForMenu(PieMenu* inMenu, int inOldMessageID, int inNewMessageID, const char* inText); void DisplayMessage(const char* inMessage); bool GetAmbientSoundNameFromIndex(string& outSoundName, int inSoundIndex) const; EntityListType GetDrawPlayerOrders() const; bool GetEntityInfoString(int inEntityID, string& outEntityInfoString, bool& outIsEnemy); void ModifyAmbientSoundEntryIfChanged(bool inSoundOn, int inSoundIndex, int inEntIndex, float inTimeStarted, int inVolume, int inFadeDistance, int inFlags, Vector inOrigin); void ResetTopDownUI(); bool SetGamma(float inSlope); void SetReinforcements(int inReinforcements); void SetHelpMessage(const string& inHelpText, bool inForce = false, float inNormX = -1, float inNormY = -1); void SetActionButtonHelpMessage(const string& inHelpText); void SetReticleMessage(const string& inHelpText); void OrderNotification(const AvHOrder& inOrder); virtual void ResetGame(bool inMapChanged = false); bool SetCursor(AvHOrderType inOrderType); void GetCursor(HSPRITE& outSprite, int& outFrame); void SetSelectionEffects(EntityListType& inUnitList); //void UpdateSelectionEffects(float inTimePassed); void TraceEntityID(int& outEntityID); bool GetIsMouseInRegion(int inX, int inY, int inWidth, int inHeight); void GetMousePos(int& outX, int& outY) const; // Help system void InternalHelpTextThink(); bool ProcessAlien(); bool ProcessAlienHelp(); bool ProcessEntityHelp(); bool ProcessGeneralHelp(); bool ProcessOrderHelp(); bool ProcessWeaponsHelp(); //void ResetUpgradeCosts(); //void ResetUpgradeCostsForMenu(PieMenu* inMenu); void UpdateAlienUI(float inCurrentTime); void UpdateCommonUI(); void UpdateDataFromVuser4(float inCurrentTime); void UpdateExploitPrevention(); void UpdateMarineUI(float inCurrentTime); void UpdateUpgradeCosts(); void UpdateEnableState(PieMenu* inMenu); void UpdateCountdown(float inCurrentTime); void UpdateHierarchy(); void UpdateInfoLocation(); void UpdatePieMenuControl(); void UpdateEntityID(float inCurrentTime); void UpdateTooltips(float inCurrentTime); void UpdateStructureNotification(float inCurrentTime); void UpdateProgressBar(); void UpdateDemoRecordPlayback(); void UpdateBuildingPlacement(); void UpdateResources(float inTimePassed); void UpdateSelection(); void UpdateSpectating(); void UpdateBuildResearchText(); void UpdateHelpText(); void UpdateTechNodes(); void UpdateAmbientSounds(); void UpdateFromEntities(float inCurrentTime); void UpdateViewModelEffects(); int mResources; int mUser2OfLastResourceMessage; int mMaxResources; int mVisualResources; float mExperience; int mExperienceLevel; int mExperienceLevelLastDrawn; int mExperienceLevelSpent; float mTimeOfLastLevelUp; AvHMessageID mMenuImpulses[kNumUpgradeLines]; float mCountDownClock; int mLastTickPlayed; int mNumTicksToPlay; float mTimeOfLastUpdate; float mTimeOfNextHudSound; AvHHUDSound mLastHUDSoundPlayed; float mTimeOfCurrentUpdate; AvHOverviewMap mOverviewMap; AvHTeamHierarchy* mHierarchy; AvHTeamHierarchy* mShowMapHierarchy; AvHEntityHierarchy mEntityHierarchy; EntityListType mSelected; EntityListType mGroups[kNumHotkeyGroups]; EntityListType mSelectAllGroup; AvHUser3 mGroupTypes[kNumHotkeyGroups]; AvHAlertType mGroupAlerts[kNumHotkeyGroups]; typedef map PendingRequestListType; PendingRequestListType mPendingRequests; AvHUser3 mLastUser3; AvHTeamNumber mLastTeamNumber; AvHPlayMode mLastPlayMode; bool mSelectionJustChanged; bool mMouseOneDown; bool mMouseTwoDown; int mMouseOneStartX; int mMouseOneStartY; bool mLeftMouseStarted; bool mLeftMouseEnded; bool mPlacingBuilding; int mMouseTwoStartX; int mMouseTwoStartY; bool mRightMouseStarted; bool mRightMouseEnded; vec3_t mMouseWorldPosition; vec3_t mLeftMouseWorldStart; vec3_t mLeftMouseWorldEnd; vec3_t mRightMouseWorldStart; vec3_t mRightMouseWorldEnd; MarqueeComponent* mSelectionBox; int mMouseCursorX; int mMouseCursorY; string mPieMenuControl; OrderListType mOrders; //AvHOrderType mOrderMode; AvHMessageID mTechEvent; AvHMessageID mAlienAbility; AvHMessageID mGroupEvent; AvHMessageID mLastHotkeySelectionEvent; int mTrackingEntity; AvHAlienUpgradeListType mUpgrades; AvHAlienUpgradeCategory mCurrentUpgradeCategory[ALIEN_UPGRADE_CATEGORY_MAX_PLUS_ONE]; int mNumUpgradesAvailable; Label* mCommanderResourceLabel; Label* mOverwatchRangeLabel; ProgressBar* mGenericProgressBar; ProgressBar* mResearchProgressBar; ProgressBar* mAlienProgressBar; Label* mResearchLabel; string mPreviousHelpText; float mTimeLastHelpTextChanged; int mSelectedNodeResourceCost; float mCurrentUseableEnergyLevel; float mVisualEnergyLevel; int mUser2OfLastEnergyLevel; static void PlayRandomSongHook(); static void ShowMap(); static void HideMap(); float mTimeLastOverwatchPulse; bool mInTopDownMode; int mNumLocalSelectEvents; AvHMapMode mMapMode; static GammaTable sPregameGammaTable; static GammaTable sGameGammaTable; float mDesiredGammaSlope; typedef vector AmbientSoundListType; AmbientSoundListType mAmbientSounds; AvHTechNodes mTechNodes; string mMapName; AvHMapExtents mMapExtents; // If this isn't MESSAGE_NULL, it means we are trying to build a building of this tech AvHMessageID mGhostBuilding; AvHMessageID mValidatedBuilding; bool mCreatedGhost; bool mCancelBuilding; bool mCurrentGhostIsValid; vec3_t mNormBuildLocation; vec3_t mGhostWorldLocation; // Added by mmcguire. int mSelectionBoxX1; int mSelectionBoxY1; int mSelectionBoxX2; int mSelectionBoxY2; bool mSelectionBoxVisible; Vector mCommanderPAS; StringList mSoundNameList; AvHVisibleBlipList mEnemyBlips; AvHVisibleBlipList mFriendlyBlips; bool mMarineUIDrawUI; HSPRITE mMarineUIJetpackSprite; HSPRITE mAlienUIEnergySprite; HSPRITE mMembraneSprite; HSPRITE mDigestingSprite; HSPRITE mBackgroundSprite; HSPRITE mTopDownTopSprite; HSPRITE mTopDownBottomSprite; HSPRITE mMarineTopSprite; HSPRITE mLogoutSprite; HSPRITE mCommandButtonSprite; HSPRITE mCommandStatusSprite; HSPRITE mSelectAllSprite; HSPRITE mMarineOrderIndicator; HSPRITE mMarineUpgradesSprite; typedef map SpriteListType; SpriteListType mActionButtonSprites; //SpriteListType mHelpSprites; int mHelpSprite; typedef vector< pair > HelpIconListType; HelpIconListType mHelpIcons; EntityListType mHelpEnts; EntityListType mBuildingEffectsEntityList; float mTimeOfLastEntityUpdate; HSPRITE mAlienUIUpgrades; HSPRITE mAlienUIUpgradeCategories; HSPRITE mAlienBuildSprite; HSPRITE mMarineBuildSprite; HSPRITE mAlienHealthSprite; HSPRITE mMarineHealthSprite; HSPRITE mHealthEffectsSprite; HSPRITE mBuildCircleSprite; //HSPRITE mSiegeTurretSprite; SelectionListType mSelectionEffects; //#ifdef AVH_MAPPER_BUILD //HSPRITE mMappingTechSprite; //#endif HSPRITE mHiveInfoSprite; HSPRITE mHiveHealthSprite; HSPRITE mOrderSprite; HSPRITE mCursorSprite; HSPRITE mMarineCursor; HSPRITE mAlienCursor; HSPRITE mAlienLifeformsCursor; int mCurrentCursorFrame; int mProgressBarEntityIndex; int mProgressBarParam; bool mFogActive; vec3_t mFogColor; float mFogStart; float mFogEnd; AvHBaseInfoLocationListType mInfoLocationList; string mLocationText; string mReticleInfoText; //int mReticleInfoColorR; //int mReticleInfoColorG; //int mReticleInfoColorB; //float mReticleInfoColorA; //int mReticleInfoScreenX; //int mReticleInfoScreenY; int mSelectingWeaponID; string mTechHelpText; AvHMessageID mSelectingNodeID; struct tempent_s* mLastGhostBuilding; typedef vector NumericalInfoEffectListType; NumericalInfoEffectListType mNumericalInfoEffects; AvHTooltip mHelpMessage; AvHTooltip mReticleMessage; AvHTooltip mTopDownPlayerNameMessage; AvHTooltip mTopDownActionButtonHelp; AvHTooltip mCombatUpgradeMenu; bool mDrawCombatUpgradeMenu; typedef vector AvHTooltipListType; AvHTooltipListType mTooltips; HiveInfoListType mHiveInfoList; bool mRecordingLastFrame; float mTimeOfLastHelpText; StringList mDisplayedToolTipList; int mCurrentWeaponID; bool mCurrentWeaponEnabled; AvHTechSlotManager mTechSlotManager; UIMode mCurrentUIMode; int mMenuTechSlots; int mCurrentSquad; int mBlinkingAlertType; float mGameTime; int mTimeLimit; int mCombatAttackingTeamNumber; bool mGameStarted; bool mGameEnded; AvHTeamNumber mLastTeamSpectated; typedef struct { AvHMessageID mStructureID; float mTime; int mPlayerIndex; Vector mLocation; } HUDNotificationType; typedef vector< HUDNotificationType > StructureHUDNotificationListType; StructureHUDNotificationListType mStructureNotificationList; #ifdef AVH_PLAYTEST_BUILD BalanceIntListType mBalanceInts; BalanceFloatListType mBalanceFloats; #endif int mCrosshairShowCount; HSPRITE mCrosshairSprite; wrect_t mCrosshairRect; int mCrosshairR; int mCrosshairG; int mCrosshairB; int mViewport[4]; // the viewport coordinates x ,y , width, height int mSpecialViewport[4]; // the viewport coordinates x ,y , width, height bool mSteamUIActive; typedef std::map ServerVariableMapType; ServerVariableMapType mServerVariableMap; static bool sShowMap; }; AvHHud& getHUD(); #define gHUD (getHUD()) #endif