1 #ifndef __MAPSCREEN_H 2 #define __MAPSCREEN_H 3 4 #include "Button_System.h" 5 #include "MessageBoxScreen.h" 6 #include "ScreenIDs.h" 7 #include "Types.h" 8 #include <string_theory/string> 9 10 struct OBJECTTYPE; 11 struct PathSt; 12 struct SOLDIERTYPE; 13 14 15 // Sector name identifiers 16 enum Towns 17 { 18 BLANK_SECTOR=0, 19 OMERTA, 20 DRASSEN, 21 ALMA, 22 GRUMM, 23 TIXA, 24 CAMBRIA, 25 SAN_MONA, 26 ESTONI, 27 ORTA, 28 BALIME, 29 MEDUNA, 30 CHITZENA, 31 NUM_TOWNS 32 }; 33 34 #define FIRST_TOWN OMERTA 35 36 37 extern BOOLEAN fCharacterInfoPanelDirty; 38 extern BOOLEAN fTeamPanelDirty; 39 extern BOOLEAN fMapPanelDirty; 40 41 extern BOOLEAN fMapInventoryItem; 42 extern BOOLEAN gfInConfirmMapMoveMode; 43 extern BOOLEAN gfInChangeArrivalSectorMode; 44 45 extern BOOLEAN gfSkyriderEmptyHelpGiven; 46 47 48 void SetInfoChar(SOLDIERTYPE const*); 49 void EndMapScreen( BOOLEAN fDuringFade ); 50 void ReBuildCharactersList( void ); 51 52 53 void HandlePreloadOfMapGraphics(void); 54 void HandleRemovalOfPreLoadedMapGraphics( void ); 55 56 void ChangeSelectedMapSector( INT16 sMapX, INT16 sMapY, INT8 bMapZ ); 57 58 BOOLEAN CanExtendContractForSoldier(const SOLDIERTYPE* s); 59 60 void TellPlayerWhyHeCantCompressTime( void ); 61 62 // the info character 63 extern INT8 bSelectedInfoChar; 64 65 SOLDIERTYPE* GetSelectedInfoChar(void); 66 void ChangeSelectedInfoChar( INT8 bCharNumber, BOOLEAN fResetSelectedList ); 67 68 void MAPEndItemPointer(void); 69 70 void CopyPathToAllSelectedCharacters(PathSt* pPath); 71 void CancelPathsOfAllSelectedCharacters(void); 72 73 INT32 GetPathTravelTimeDuringPlotting(PathSt* pPath); 74 75 void AbortMovementPlottingMode( void ); 76 77 BOOLEAN CanChangeSleepStatusForSoldier(const SOLDIERTYPE* s); 78 79 bool MapCharacterHasAccessibleInventory(SOLDIERTYPE const&); 80 81 ST::string GetMapscreenMercAssignmentString(SOLDIERTYPE const& s); 82 ST::string GetMapscreenMercLocationString(SOLDIERTYPE const& s); 83 ST::string GetMapscreenMercDestinationString(SOLDIERTYPE const& s); 84 ST::string GetMapscreenMercDepartureString(SOLDIERTYPE const& s, UINT8* text_colour); 85 86 // mapscreen wrapper to init the item description box 87 void MAPInternalInitItemDescriptionBox(OBJECTTYPE* pObject, UINT8 ubStatusIndex, SOLDIERTYPE* pSoldier); 88 89 // rebuild contract box this character 90 void RebuildContractBoxForMerc(const SOLDIERTYPE* s); 91 92 void InternalMAPBeginItemPointer(SOLDIERTYPE* pSoldier); 93 BOOLEAN ContinueDialogue(SOLDIERTYPE* pSoldier, BOOLEAN fDone); 94 BOOLEAN GetMouseMapXY(INT16* psMapWorldX, INT16* psMapWorldY); 95 void EndConfirmMapMoveMode(void); 96 BOOLEAN CanDrawSectorCursor(void); 97 void RememberPreviousPathForAllSelectedChars(void); 98 void MapScreenDefaultOkBoxCallback(MessageBoxReturnValue); 99 void SetUpCursorForStrategicMap(void); 100 void DrawFace(void); 101 void DrawStringRight(const ST::string& str, UINT16 x, UINT16 y, UINT16 w, UINT16 h, SGPFont font); 102 103 extern GUIButtonRef giMapInvDoneButton; 104 extern BOOLEAN fInMapMode; 105 extern BOOLEAN fReDrawFace; 106 extern BOOLEAN fShowInventoryFlag; 107 extern BOOLEAN fShowDescriptionFlag; 108 extern GUIButtonRef giMapContractButton; 109 extern GUIButtonRef giCharInfoButton[2]; 110 extern BOOLEAN fDrawCharacterList; 111 112 // create/destroy inventory button as needed 113 void CreateDestroyMapInvButton(void); 114 115 void MapScreenInit(void); 116 ScreenID MapScreenHandle(void); 117 void MapScreenShutdown(void); 118 119 void LockMapScreenInterface(bool lock); 120 void MakeDialogueEventEnterMapScreen(); 121 122 void SetMapCursorItem(); 123 124 #define NAME_X (STD_SCREEN_X + 11) 125 #define NAME_WIDTH (STD_SCREEN_X + 62 - NAME_X) 126 #define ASSIGN_X (STD_SCREEN_X + 67) 127 #define ASSIGN_WIDTH (STD_SCREEN_X + 118 - ASSIGN_X) 128 #define SLEEP_X (STD_SCREEN_X + 123) 129 #define SLEEP_WIDTH (STD_SCREEN_X + 142 - SLEEP_X) 130 #define LOC_X (STD_SCREEN_X + 147) 131 #define LOC_WIDTH (STD_SCREEN_X + 179 - LOC_X) 132 #define DEST_ETA_X (STD_SCREEN_X + 184) 133 #define DEST_ETA_WIDTH (STD_SCREEN_X + 217 - DEST_ETA_X) 134 #define TIME_REMAINING_X (STD_SCREEN_X + 222) 135 #define TIME_REMAINING_WIDTH (STD_SCREEN_X + 250 - TIME_REMAINING_X) 136 #define CLOCK_Y_START (STD_SCREEN_Y + 298) 137 #define CLOCK_ETA_X (STD_SCREEN_X + 463 - 15 + 6 + 30) 138 #define CLOCK_HOUR_X_START (STD_SCREEN_X + 463 + 25 + 30) 139 #define CLOCK_MIN_X_START (STD_SCREEN_X + 463 + 45 + 30) 140 141 // contract 142 #define CONTRACT_X (STD_SCREEN_X + 185) 143 #define CONTRACT_Y (STD_SCREEN_Y + 50) 144 145 // trash can 146 #define TRASH_CAN_X (STD_SCREEN_X + 176) 147 #define TRASH_CAN_Y (211 + PLAYER_INFO_Y) 148 #define TRASH_CAN_WIDTH 193 - 165 149 #define TRASH_CAN_HEIGHT 239 - 217 150 151 #endif 152