summaryrefslogtreecommitdiff
path: root/src/uqm/sis.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/uqm/sis.h')
-rw-r--r--src/uqm/sis.h241
1 files changed, 241 insertions, 0 deletions
diff --git a/src/uqm/sis.h b/src/uqm/sis.h
new file mode 100644
index 0000000..ee07a81
--- /dev/null
+++ b/src/uqm/sis.h
@@ -0,0 +1,241 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef SIS_H_INCL__
+#define SIS_H_INCL__
+
+#include "libs/compiler.h"
+#include "libs/gfxlib.h"
+#include "planets/elemdata.h"
+ // for NUM_ELEMENT_CATEGORIES
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#define CLEAR_SIS_RADAR (1 << 2)
+#define DRAW_SIS_DISPLAY (1 << 3)
+
+#define UNDEFINED_DELTA 0x7FFF
+
+#define NUM_DRIVE_SLOTS 11
+#define NUM_JET_SLOTS 8
+#define NUM_MODULE_SLOTS 16
+
+#define CREW_POD_CAPACITY 50
+#define STORAGE_BAY_CAPACITY 500 /* km cubed */
+#define FUEL_TANK_SCALE 100
+#define FUEL_TANK_CAPACITY (50 * FUEL_TANK_SCALE)
+#define HEFUEL_TANK_CAPACITY (100 * FUEL_TANK_SCALE)
+#define MODULE_COST_SCALE 50
+
+#define CREW_EXPENSE_THRESHOLD 1000
+
+#define CREW_PER_ROW 5
+#define SBAY_MASS_PER_ROW 50
+
+#define MAX_FUEL_BARS 10
+#define FUEL_VOLUME_PER_ROW (HEFUEL_TANK_CAPACITY / MAX_FUEL_BARS)
+#define FUEL_RESERVE FUEL_VOLUME_PER_ROW
+
+#define IP_SHIP_THRUST_INCREMENT 8
+#define IP_SHIP_TURN_WAIT 17
+#define IP_SHIP_TURN_DECREMENT 2
+
+#define BIO_CREDIT_VALUE 2
+
+enum
+{
+ PLANET_LANDER = 0,
+ /* thruster types */
+ FUSION_THRUSTER,
+ /* jet types */
+ TURNING_JETS,
+ /* module types */
+ CREW_POD,
+ STORAGE_BAY,
+ FUEL_TANK,
+ HIGHEFF_FUELSYS,
+ DYNAMO_UNIT,
+ SHIVA_FURNACE,
+ GUN_WEAPON,
+ BLASTER_WEAPON,
+ CANNON_WEAPON,
+ TRACKING_SYSTEM,
+ ANTIMISSILE_DEFENSE,
+
+ NUM_PURCHASE_MODULES,
+
+ BOMB_MODULE_0 = NUM_PURCHASE_MODULES,
+ BOMB_MODULE_1,
+ BOMB_MODULE_2,
+ BOMB_MODULE_3,
+ BOMB_MODULE_4,
+ BOMB_MODULE_5,
+
+ NUM_MODULES /* must be last entry */
+};
+
+#define EMPTY_SLOT NUM_MODULES
+#define NUM_BOMB_MODULES 10
+
+#define DRIVE_SIDE_X 31
+#define DRIVE_SIDE_Y 56
+#define DRIVE_TOP_X 33
+#define DRIVE_TOP_Y (65 + 21)
+
+#define JET_SIDE_X 71
+#define JET_SIDE_Y 48
+#define JET_TOP_X 70
+#define JET_TOP_Y (73 + 21)
+
+#define MODULE_SIDE_X 17
+#define MODULE_SIDE_Y 14
+#define MODULE_TOP_X 17
+#define MODULE_TOP_Y (96 + 21)
+
+#define SHIP_PIECE_OFFSET 12
+
+#define MAX_BUILT_SHIPS 12
+ /* Maximum number of ships escorting the SIS */
+#define MAX_LANDERS 10
+
+#define SUPPORT_SHIP_PTS \
+ {3 + 0, 30 + (2 * 16)}, \
+ {3 + 42, 30 + (2 * 16)}, \
+ {3 + 0, 30 + (3 * 16)}, \
+ {3 + 42, 30 + (3 * 16)}, \
+ {3 + 0, 30 + (1 * 16)}, \
+ {3 + 42, 30 + (1 * 16)}, \
+ {3 + 0, 30 + (4 * 16)}, \
+ {3 + 42, 30 + (4 * 16)}, \
+ {3 + 0, 30 + (0 * 16)}, \
+ {3 + 42, 30 + (0 * 16)}, \
+ {3 + 0, 30 + (5 * 16)}, \
+ {3 + 42, 30 + (5 * 16)},
+
+#define SIS_NAME_SIZE 16
+
+typedef struct
+{
+ SDWORD log_x, log_y;
+
+ DWORD ResUnits;
+
+ DWORD FuelOnBoard;
+ COUNT CrewEnlisted;
+ // Number of crew on board, not counting the captain.
+ // Set to (COUNT) ~0 to indicate game over.
+ COUNT TotalElementMass, TotalBioMass;
+
+ BYTE ModuleSlots[NUM_MODULE_SLOTS];
+ BYTE DriveSlots[NUM_DRIVE_SLOTS];
+ BYTE JetSlots[NUM_JET_SLOTS];
+
+ BYTE NumLanders;
+
+ COUNT ElementAmounts[NUM_ELEMENT_CATEGORIES];
+
+ UNICODE ShipName[SIS_NAME_SIZE];
+ UNICODE CommanderName[SIS_NAME_SIZE];
+ UNICODE PlanetName[SIS_NAME_SIZE];
+} SIS_STATE;
+
+#define OVERRIDE_LANDER_FLAGS (1 << 7)
+#define AFTER_BOMB_INSTALLED (1 << 7)
+
+extern void RepairSISBorder (void);
+extern void InitSISContexts (void);
+extern void DrawSISFrame (void);
+extern void ClearSISRect (BYTE ClearFlags);
+extern void SetFlashRect (const RECT *pRect);
+extern void PreUpdateFlashRect (void);
+extern void PostUpdateFlashRect (void);
+extern void PauseFlash (void);
+extern void ContinueFlash (void);
+
+#define SFR_MENU_3DO ((RECT*)~0L)
+#define SFR_MENU_ANY ((RECT*)~1L)
+extern void DrawHyperCoords (POINT puniverse);
+extern void DrawSISTitle (UNICODE *pStr);
+
+// Flags for DrawSISMessageEx (may be OR'ed):
+#define DSME_NONE 0
+#define DSME_SETFR (1 << 0)
+ // Set the flash rectangle to the message area.
+#define DSME_CLEARFR (1 << 1)
+ // Disable the flash rectangle.
+#define DSME_BLOCKCUR (1 << 2)
+ // Use a block cursor instead of an insertion point cursor,
+ // when editing in the message field.
+#define DSME_MYCOLOR (1 << 3)
+ // Use the current foreground color, instead of the default.
+extern BOOLEAN DrawSISMessageEx (const UNICODE *pStr, SIZE CurPos,
+ SIZE ExPos, COUNT flags);
+
+extern void DrawSISMessage (const UNICODE *pStr);
+extern void DateToString (char *buf, size_t bufLen,
+ BYTE month_index, BYTE day_index, COUNT year_index);
+
+// Returned RECT is relative to the StatusContext
+extern void GetStatusMessageRect (RECT *r);
+extern void DrawStatusMessage (const UNICODE *pStr);
+typedef enum
+{
+ SMM_UNDEFINED = 0,
+ SMM_DATE,
+ SMM_RES_UNITS,
+ SMM_CREDITS,
+
+ SMM_DEFAULT = SMM_DATE,
+} StatMsgMode;
+// Sets the new mode and return the previous
+extern StatMsgMode SetStatusMessageMode (StatMsgMode);
+
+extern void DrawLanders (void);
+extern void DrawStorageBays (BOOLEAN Refresh);
+extern void GetGaugeRect (RECT *pRect, BOOLEAN IsCrewRect);
+extern void DrawFlagshipStats (void);
+void DrawAutoPilotMessage (BOOLEAN Reset);
+
+extern void DeltaSISGauges (SIZE crew_delta, SIZE fuel_delta, int
+ resunit_delta);
+
+extern COUNT GetCrewCount (void);
+extern COUNT GetModuleCrewCapacity (BYTE moduleType);
+
+extern COUNT GetCrewPodCapacity (void);
+extern COUNT GetCPodCapacity (POINT *ppt);
+
+extern COUNT GetModuleStorageCapacity (BYTE moduleType);
+extern COUNT GetStorageBayCapacity (void);
+extern COUNT GetSBayCapacity (POINT *ppt);
+
+extern DWORD GetModuleFuelCapacity (BYTE moduleType);
+extern DWORD GetFuelTankCapacity (void);
+extern DWORD GetFTankCapacity (POINT *ppt);
+
+extern COUNT CountSISPieces (BYTE piece_type);
+
+extern void DrawFlagshipName (BOOLEAN InStatusArea);
+extern void DrawCaptainsName (void);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* SIS_H_INCL__ */
+