1 #ifndef _INTERFACE_H 2 #define _INTERFACE_H 3 4 #include "Handle_UI.h" 5 #include "MouseSystem.h" 6 7 #include <string_theory/string> 8 9 10 #define MAX_UICOMPOSITES 4 11 12 #define INTERFACE_START_X 0 13 14 // FLASH PORTRAIT CODES 15 #define FLASH_PORTRAIT_STOP 0 16 #define FLASH_PORTRAIT_START 1 17 #define FLASH_PORTRAIT_WAITING 2 18 #define FLASH_PORTRAIT_DELAY 150 19 20 // FLASH PORTRAIT PALETTE IDS 21 #define FLASH_PORTRAIT_NOSHADE 0 22 #define FLASH_PORTRAIT_STARTSHADE 1 23 #define FLASH_PORTRAIT_ENDSHADE 2 24 #define FLASH_PORTRAIT_DARKSHADE 3 25 #define FLASH_PORTRAIT_GRAYSHADE 4 26 #define FLASH_PORTRAIT_LITESHADE 5 27 28 29 // GLOBAL DEFINES FOR SOME UI FLAGS 30 #define ARROWS_HIDE_UP 0x00000002 31 #define ARROWS_HIDE_DOWN 0x00000004 32 #define ARROWS_SHOW_UP_BESIDE 0x00000008 33 #define ARROWS_SHOW_DOWN_BESIDE 0x00000020 34 #define ARROWS_SHOW_UP_ABOVE_Y 0x00000040 35 #define ARROWS_SHOW_DOWN_BELOW_Y 0x00000080 36 #define ARROWS_SHOW_DOWN_BELOW_G 0x00000200 37 #define ARROWS_SHOW_DOWN_BELOW_YG 0x00000400 38 #define ARROWS_SHOW_DOWN_BELOW_GG 0x00000800 39 #define ARROWS_SHOW_UP_ABOVE_G 0x00002000 40 #define ARROWS_SHOW_UP_ABOVE_YG 0x00004000 41 #define ARROWS_SHOW_UP_ABOVE_GG 0x00008000 42 #define ARROWS_SHOW_UP_ABOVE_YY 0x00020000 43 #define ARROWS_SHOW_DOWN_BELOW_YY 0x00040000 44 #define ARROWS_SHOW_UP_ABOVE_CLIMB 0x00080000 45 #define ARROWS_SHOW_UP_ABOVE_CLIMB2 0x00400000 46 #define ARROWS_SHOW_UP_ABOVE_CLIMB3 0x00800000 47 #define ARROWS_SHOW_DOWN_CLIMB 0x02000000 48 49 #define ROOF_LEVEL_HEIGHT 50 50 51 #define SCROLL_LEFT_PADDING -30 52 #define SCROLL_RIGHT_PADDING 10 53 #define SCROLL_TOP_PADDING -50 54 #define SCROLL_BOTTOM_PADDING -20 55 56 57 // Interface level enums 58 enum 59 { 60 I_GROUND_LEVEL, 61 I_ROOF_LEVEL, 62 I_NUMLEVELS 63 }; 64 65 66 enum InterfacePanelKind 67 { 68 SM_PANEL, 69 TEAM_PANEL, 70 NUM_UI_PANELS 71 }; 72 73 74 extern BOOLEAN gfUIStanceDifferent; 75 extern InterfacePanelKind gsCurInterfacePanel; 76 77 78 extern SGPVObject* guiDEAD; 79 extern SGPVObject* guiHATCH; 80 extern SGPVObject* guiRADIO; 81 82 83 extern MOUSE_REGION gViewportRegion; 84 extern MOUSE_REGION gRadarRegion; 85 86 #define MOVEMENT_MENU_LOOK 1 87 #define MOVEMENT_MENU_ACTIONC 2 88 #define MOVEMENT_MENU_HAND 3 89 #define MOVEMENT_MENU_TALK 4 90 #define MOVEMENT_MENU_RUN 5 91 #define MOVEMENT_MENU_WALK 6 92 #define MOVEMENT_MENU_SWAT 7 93 #define MOVEMENT_MENU_PRONE 8 94 95 96 enum DirtyLevel 97 { 98 DIRTYLEVEL0 = 0, 99 DIRTYLEVEL1 = 1, 100 DIRTYLEVEL2 = 2 101 }; 102 103 104 void InitializeTacticalInterface(void); 105 extern DirtyLevel fInterfacePanelDirty; 106 extern BOOLEAN gfPausedTacticalRenderFlags; 107 extern DirtyLevel gfPausedTacticalRenderInterfaceFlags; 108 extern INT16 gsInterfaceLevel; 109 extern BOOLEAN gfInMovementMenu; 110 111 112 void PopupMovementMenu( UI_EVENT *pUIEvent ); 113 void PopDownMovementMenu(void); 114 void RenderMovementMenu(void); 115 void CancelMovementMenu(void); 116 117 118 void PopDownOpenDoorMenu(void); 119 void RenderOpenDoorMenu(void); 120 void InitDoorOpenMenu(SOLDIERTYPE* pSoldier, BOOLEAN fClosingDoor); 121 BOOLEAN HandleOpenDoorMenu(void); 122 void CancelOpenDoorMenu(void); 123 124 void HandleInterfaceBackgrounds(void); 125 126 127 void DrawSelectedUIAboveGuy(SOLDIERTYPE&); 128 129 void CreateCurrentTacticalPanelButtons(void); 130 void RemoveCurrentTacticalPanelButtons(void); 131 void SetCurrentTacticalPanelCurrentMerc(SOLDIERTYPE* s); 132 void SetCurrentInterfacePanel(InterfacePanelKind); 133 BOOLEAN IsMercPortraitVisible(const SOLDIERTYPE* s); 134 135 void InitializeCurrentPanel(void); 136 void ShutdownCurrentPanel(void); 137 138 void ClearInterface(void); 139 void RestoreInterface(void); 140 141 void RenderArrows(void); 142 void EraseRenderArrows(void); 143 void DirtyMercPanelInterface(SOLDIERTYPE const*, DirtyLevel); 144 145 146 void EndUIMessage(void); 147 void BeginUIMessage(BOOLEAN fUseSkullIcon, const ST::string& text); 148 149 150 // map screen version, for centering over the map area 151 void BeginMapUIMessage(INT16 delta_y, const ST::string& text); 152 153 154 extern VIDEO_OVERLAY* g_ui_message_overlay; 155 extern UINT32 guiUIMessageTime; 156 157 enum MESSAGE_TYPES 158 { 159 NO_MESSAGE, 160 COMPUTER_TURN_MESSAGE, 161 COMPUTER_INTERRUPT_MESSAGE, 162 PLAYER_INTERRUPT_MESSAGE, 163 MILITIA_INTERRUPT_MESSAGE, 164 AIR_RAID_TURN_MESSAGE, 165 PLAYER_TURN_MESSAGE 166 }; 167 168 void HandleTopMessages(void); 169 void AddTopMessage(MESSAGE_TYPES ubType); 170 void EndTopMessage(void); 171 172 void InitEnemyUIBar( UINT8 ubNumEnemies, UINT8 ubDoneEnemies ); 173 174 ST::string GetSoldierHealthString(const SOLDIERTYPE* s); 175 176 177 void ResetPhysicsTrajectoryUI(void); 178 void SetupPhysicsTrajectoryUI(void); 179 void EndPhysicsTrajectoryUI(void); 180 void BeginPhysicsTrajectoryUI( INT16 sGridNo, INT8 bLevel, BOOLEAN fBadCTGT ); 181 182 void InitPlayerUIBar( BOOLEAN fInterrupt ); 183 184 void ToggleTacticalPanels(void); 185 186 void DirtyTopMessage(void); 187 188 void BeginMultiPurposeLocator(INT16 sGridNo, INT8 bLevel); 189 void HandleMultiPurposeLocator(void); 190 void RenderTopmostMultiPurposeLocator(void); 191 192 void GetSoldierAboveGuyPositions(const SOLDIERTYPE* s, INT16* psX, INT16* psY, BOOLEAN fRadio); 193 194 void UpdateEnemyUIBar(void); 195 196 extern BOOLEAN gfInOpenDoorMenu; 197 extern UINT32 guiUIMessageTimeDelay; 198 extern BOOLEAN gfTopMessageDirty; 199 200 #endif 201