CnC_Remastered_Collection/REDALERT/DLLInterface.h

942 lines
20 KiB
C
Raw Permalink Normal View History

//
// Copyright 2020 Electronic Arts Inc.
//
// TiberianDawn.DLL and RedAlert.dll and corresponding source code 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 3 of the License, or (at your option) any later version.
// TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
// in the hope that it will be useful, but with permitted additional restrictions
// under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
// distributed with this program. You should have received a copy of the
// GNU General Public License along with permitted additional restrictions
// with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
#pragma once
#ifndef DLL_INTERFACE_H
#define DLL_INTERFACE_H
struct CarryoverObjectStruct;
/*
** DLL Interface version
**
**
**
*/
#include "DLLInterfaceVersion.h"
#define MAX_EXPORT_CELLS (128 * 128)
#ifdef TIBERIAN_DAWN
#define MAP_MAX_CELL_WIDTH 64
#define MAP_MAX_CELL_HEIGHT 64
#else
#define MAP_MAX_CELL_WIDTH 128
#define MAP_MAX_CELL_HEIGHT 128
#endif
/*
** Interface structs require stricter packing
**
**
*/
#pragma pack(push)
#pragma pack(1)
/**************************************************************************************
**
** Game state request types
**
**
*/
enum GameStateRequestEnum {
GAME_STATE_NONE,
GAME_STATE_STATIC_MAP,
GAME_STATE_DYNAMIC_MAP,
GAME_STATE_LAYERS,
GAME_STATE_SIDEBAR,
GAME_STATE_PLACEMENT,
GAME_STATE_SHROUD,
GAME_STATE_OCCUPIER,
GAME_STATE_PLAYER_INFO
};
/**************************************************************************************
**
** Static map data (tiles)
**
**
*/
struct CNCStaticCellStruct {
char TemplateTypeName[32];
int IconNumber;
};
enum CnCTheaterType {
CNC_THEATER_NONE=-1,
CNC_THEATER_DESERT,
CNC_THEATER_JUNGLE,
CNC_THEATER_TEMPERATE,
CNC_THEATER_WINTER,
CNC_THEATER_COUNT,
CNC_THEATER_FIRST=0
};
struct CNCMapDataStruct {
int MapCellX;
int MapCellY;
int MapCellWidth;
int MapCellHeight;
int OriginalMapCellX;
int OriginalMapCellY;
int OriginalMapCellWidth;
int OriginalMapCellHeight;
CnCTheaterType Theater;
char ScenarioName[_MAX_FNAME+_MAX_EXT];
CNCStaticCellStruct StaticCells[MAX_EXPORT_CELLS];
};
/**************************************************************************************
**
** Object type enum
**
**
*/
#define DLL_LAYER_COUNT 4
enum DllObjectTypeEnum {
UNKNOWN,
INFANTRY,
UNIT,
AIRCRAFT,
BUILDING,
TERRAIN,
ANIM,
BULLET,
OVERLAY,
SMUDGE,
OBJECT,
SPECIAL,
INFANTRY_TYPE,
UNIT_TYPE,
AIRCRAFT_TYPE,
BUILDING_TYPE,
VESSEL,
VESSEL_TYPE
};
/**************************************************************************************
**
** Object action types
**
**
*/
enum DllActionTypeEnum : unsigned char {
DAT_NONE,
DAT_MOVE,
DAT_NOMOVE,
DAT_ENTER,
DAT_SELF,
DAT_ATTACK,
DAT_ATTACK_OUT_OF_RANGE,
DAT_GUARD,
DAT_SELECT,
DAT_CAPTURE,
DAT_SABOTAGE,
DAT_HEAL,
DAT_DAMAGE,
DAT_TOGGLE_PRIMARY,
DAT_CANT_DEPLOY,
DAT_REPAIR,
DAT_CANT_REPAIR
};
/**************************************************************************************
**
** Object state data
**
**
*/
#define MAX_OCCUPY_CELLS 36
#define MAX_OBJECT_PIPS 18
#define MAX_OBJECT_LINES 3
#define MAX_HOUSES 32
struct CNCObjectLineStruct {
int X;
int Y;
int X1;
int Y1;
int Frame;
unsigned char Color;
};
#define CNC_OBJECT_ASSET_NAME_LENGTH 16
struct CNCObjectStruct {
void *CNCInternalObjectPointer;
char TypeName[CNC_OBJECT_ASSET_NAME_LENGTH];
char AssetName[CNC_OBJECT_ASSET_NAME_LENGTH]; // CNC uses 8.3 filenames, so it shouldn't need to be bigger than 9
DllObjectTypeEnum Type;
int ID;
int BaseObjectID;
DllObjectTypeEnum BaseObjectType;
int PositionX;
int PositionY;
int Width;
int Height;
int Altitude;
int SortOrder;
int Scale;
int DrawFlags;
short MaxStrength;
short Strength;
unsigned short ShapeIndex;
unsigned short CellX;
unsigned short CellY;
unsigned short CenterCoordX;
unsigned short CenterCoordY;
short SimLeptonX;
short SimLeptonY;
unsigned char DimensionX;
unsigned char DimensionY;
unsigned char Rotation;
unsigned char MaxSpeed;
char Owner;
char RemapColor;
char SubObject;
bool IsSelectable;
unsigned int IsSelectedMask;
bool IsRepairing;
bool IsDumping;
bool IsTheaterSpecific;
unsigned int FlashingFlags;
unsigned char Cloak;
bool CanRepair;
bool CanDemolish;
bool CanDemolishUnit;
short OccupyList[MAX_OCCUPY_CELLS];
int OccupyListLength;
int Pips[MAX_OBJECT_PIPS];
int NumPips;
int MaxPips;
CNCObjectLineStruct Lines[MAX_OBJECT_LINES];
int NumLines;
bool RecentlyCreated;
bool IsALoaner;
bool IsFactory;
bool IsPrimaryFactory;
bool IsDeployable;
bool IsAntiGround;
bool IsAntiAircraft;
bool IsSubSurface;
bool IsNominal;
bool IsDog;
bool IsIronCurtain;
bool IsInFormation;
bool CanMove[MAX_HOUSES];
bool CanFire[MAX_HOUSES];
bool CanDeploy;
bool CanHarvest;
bool CanPlaceBombs;
bool IsFixedWingedAircraft;
bool IsFake;
unsigned char ControlGroup;
unsigned int VisibleFlags;
unsigned int SpiedByFlags;
char ProductionAssetName[CNC_OBJECT_ASSET_NAME_LENGTH];
const char* OverrideDisplayName;
DllActionTypeEnum ActionWithSelected[MAX_HOUSES];
static const unsigned int VISIBLE_FLAGS_ALL = 0xffffffff;
};
struct CNCObjectListStruct {
int Count;
CNCObjectStruct Objects[1]; // Variable length
};
/**************************************************************************************
**
** Placement validity data
**
** Used to pass back info about tructure placement validity
*/
struct CNCPlacementCellInfoStruct {
bool PassesProximityCheck; // If the structure was placed in this cell, does that satisfy the proximity check for the whole structure?
bool GenerallyClear; // Is this cell generally clear of obstructions that would prevent placement?
};
struct CNCPlacementInfoStruct {
int Count;
CNCPlacementCellInfoStruct CellInfo[1]; // Variable length
};
/**************************************************************************************
**
** Sidebar/construction state data
**
**
*/
enum DllSuperweaponTypeEnum {
SW_NONE,
SW_UNKNOWN,
//TD values
SW_NUKE,
SW_AIR_STRIKE,
SW_ION_CANNON,
//RA values
SW_SONAR_PULSE,
SW_CHRONOSPHERE,
SW_PARA_BOMB,
SW_PARA_INFANTRY,
SW_SPY_MISSION,
SW_IRON_CURTAIN,
SW_GPS,
SW_CHRONOSPHERE_DESTINATION
};
struct CNCSidebarEntryStruct {
char AssetName[16]; // CNC uses 8.3 filenames, so it shouldn't need to be bigger than 9
int BuildableType; // This is the original buildable type that should be passed back if we want to start/cancel construction
int BuildableID; // This is the original buildable id that should be passed back if we want to start/cancel construction
DllObjectTypeEnum Type; // Type converted to shared enum
DllSuperweaponTypeEnum SuperWeaponType;
int Cost; // Cost to construct
int PowerProvided; // Power cost to construct
int BuildTime; // Cost to construct
float Progress; // Construction progress (0.0 - 1.0)
short PlacementList[MAX_OCCUPY_CELLS]; // Which cells this structure occupies for placement (if structure)
int PlacementListLength; // How many cells
bool Completed; // Construction has completed
bool Constructing; // Is it currently constructing
bool ConstructionOnHold; // Is the current construction on hold
bool Busy; // Is the associated factory busy
bool BuildableViaCapture; // Is this buildable due to the capture of a structure of a different faction. This will be false for captured structures of the same faction (ActLike)
bool Fake; // Is this a fake structure?
};
struct CNCSidebarStruct {
int EntryCount[2]; // Counts for the left and right columns
int Credits; // Amount of currency available (excluding Tiberium)
int CreditsCounter; // Visible credits to display in the sidebar (includes count up/down logic)
int Tiberium; // Amount of Tiberium in reserve
int MaxTiberium; // Maximum amount of Tiberium storage available
int PowerProduced;
int PowerDrained;
int MissionTimer;
unsigned int UnitsKilled; // Total count of enemy units killed by this player; Includes Infantry, Vehicles, Aircraft
unsigned int BuildingsKilled; // Total count of enemy structures killed by this player
unsigned int UnitsLost; // Total count player-owned units killed/lost
unsigned int BuildingsLost; // Total count player-owned structures killed/lost
unsigned int TotalHarvestedCredits; // Complete total of gained credits over the match (does not include starting credits)
bool RepairBtnEnabled;
bool SellBtnEnabled;
bool RadarMapActive;
CNCSidebarEntryStruct Entries[1]; // Variable length column entries
};
enum SidebarRequestEnum {
SIDEBAR_REQUEST_START_CONSTRUCTION,
SIDEBAR_REQUEST_HOLD_CONSTRUCTION,
SIDEBAR_REQUEST_CANCEL_CONSTRUCTION,
SIDEBAR_REQUEST_START_PLACEMENT,
SIDEBAR_REQUEST_PLACE,
SIDEBAR_CANCEL_PLACE,
SIDEBAR_CLICK_REPAIR,
SIDEBAR_REQUEST_ENABLE_QUEUE,
SIDEBAR_REQUEST_DISABLE_QUEUE,
SIDEBAR_REQUEST_START_CONSTRUCTION_MULTI,
SIDEBAR_REQUEST_CANCEL_CONSTRUCTION_MULTI
};
enum SuperWeaponRequestEnum {
SUPERWEAPON_REQUEST_PLACE_SUPER_WEAPON
};
enum ControlGroupRequestEnum {
CONTROL_GROUP_REQUEST_CREATE,
CONTROL_GROUP_REQUEST_TOGGLE,
CONTROL_GROUP_REQUEST_ADDITIVE_SELECTION,
};
/**************************************************************************************
**
** Input events sent into the DLL
**
**
*/
enum InputRequestEnum {
INPUT_REQUEST_NONE,
INPUT_REQUEST_MOUSE_MOVE,
INPUT_REQUEST_MOUSE_LEFT_CLICK,
INPUT_REQUEST_MOUSE_RIGHT_DOWN,
INPUT_REQUEST_MOUSE_RIGHT_CLICK,
INPUT_REQUEST_MOUSE_AREA,
INPUT_REQUEST_MOUSE_AREA_ADDITIVE,
INPUT_REQUEST_SELL_AT_POSITION,
INPUT_REQUEST_SELECT_AT_POSITION,
INPUT_REQUEST_COMMAND_AT_POSITION,
INPUT_REQUEST_SPECIAL_KEYS,
INPUT_REQUEST_MOD_GAME_COMMAND_1_AT_POSITION,
INPUT_REQUEST_MOD_GAME_COMMAND_2_AT_POSITION,
INPUT_REQUEST_MOD_GAME_COMMAND_3_AT_POSITION,
INPUT_REQUEST_MOD_GAME_COMMAND_4_AT_POSITION,
};
/**************************************************************************************
**
** Structure Requests Repair, Sell
**
**
*/
enum StructureRequestEnum {
INPUT_STRUCTURE_NONE,
INPUT_STRUCTURE_REPAIR_START,
INPUT_STRUCTURE_REPAIR,
INPUT_STRUCTURE_SELL_START,
INPUT_STRUCTURE_SELL,
INPUT_STRUCTURE_CANCEL,
};
/**************************************************************************************
**
** Unit Requests Scatter, Select Next, Select Previous, Guard Mode, Stop
**
**
*/
enum UnitRequestEnum {
INPUT_UNIT_NONE,
INPUT_UNIT_SCATTER,
INPUT_UNIT_SELECT_NEXT,
INPUT_UNIT_SELECT_PREVIOUS,
INPUT_UNIT_GUARD_MODE,
INPUT_UNIT_STOP,
INPUT_UNIT_FORMATION_TOGGLE, // RA Only
INPUT_UNIT_QUEUED_MOVEMENT_ON, // RA Only
INPUT_UNIT_QUEUED_MOVEMENT_OFF, // RA Only
};
/**************************************************************************************
**
** Game Action Requests
**
**
*/
enum GameRequestEnum {
INPUT_GAME_MOVIE_DONE,
INPUT_GAME_LOADING_DONE,
};
/**************************************************************************************
**
** Beacon Requests
**
**
*/
enum BeaconRequestEnum {
INPUT_BEACON_NONE,
INPUT_BEACON_PLACE,
};
/**************************************************************************************
**
** Special Keys
**
**
*/
enum SpecialKeyRequestEnum {
INPUT_SPECIAL_KEY_CTRL = 0b00000001,
INPUT_SPECIAL_KEY_ALT = 0b00000010,
INPUT_SPECIAL_KEY_SHIFT = 0b00000100,
};
/**************************************************************************************
**
** Non-static map data.
**
** Per-cell smudges and overlays. Smudges are used for things like craters and structure bibs that draw under units.
** Overlays are things like walls and tiberium that can't move from the cell but aren't flat like smudges.
**
**
*/
struct CNCDynamicMapEntryStruct {
char AssetName[16];
int PositionX;
int PositionY;
int Width;
int Height;
short Type;
char Owner;
int DrawFlags;
unsigned char CellX;
unsigned char CellY;
unsigned char ShapeIndex;
bool IsSmudge;
bool IsOverlay;
bool IsResource;
bool IsSellable;
bool IsTheaterShape;
bool IsFlag;
};
struct CNCDynamicMapStruct {
bool VortexActive;
int VortexX;
int VortexY;
int VortexWidth;
int VortexHeight;
int Count;
CNCDynamicMapEntryStruct Entries[1]; // Variable length
};
/**************************************************************************************
**
** Event data
**
** Used to call back into the GlyphX engine for one-time events like sound effect triggers
**
**
*/
enum EventCallbackType {
CALLBACK_EVENT_INVALID = -1,
CALLBACK_EVENT_SOUND_EFFECT = 0,
CALLBACK_EVENT_SPEECH,
CALLBACK_EVENT_GAME_OVER,
CALLBACK_EVENT_DEBUG_PRINT,
CALLBACK_EVENT_MOVIE,
CALLBACK_EVENT_MESSAGE,
CALLBACK_EVENT_UPDATE_MAP_CELL,
CALLBACK_EVENT_ACHIEVEMENT,
CALLBACK_EVENT_STORE_CARRYOVER_OBJECTS,
CALLBACK_EVENT_SPECIAL_WEAPON_TARGETTING,
CALLBACK_EVENT_BRIEFING_SCREEN,
CALLBACK_EVENT_CENTER_CAMERA,
CALLBACK_EVENT_PING
};
struct GameOverMultiPlayerStatsStruct
{
GameOverMultiPlayerStatsStruct()
:
GlyphXPlayerID( 0 ),
IsHuman( false ),
WasHuman( false ),
IsWinner( false ),
ResourcesGathered( 0 ),
TotalUnitsKilled( 0 ),
TotalStructuresKilled( 0 ),
Efficiency( 0 ),
Score( 0 )
{
}
__int64 GlyphXPlayerID;
bool IsHuman;
bool WasHuman;
bool IsWinner;
int ResourcesGathered;
int TotalUnitsKilled;
int TotalStructuresKilled;
int Efficiency; // AKA Economy
int Score;
};
#define GAME_OVER_MULTIPLAYER_MAX_PLAYERS_TRACKED 8
enum EventCallbackMessageEnum {
MESSAGE_TYPE_DIRECT = 0,
MESSAGE_TYPE_PLAYER_DEFEATED,
MESSAGE_TYPE_COMPUTER_TAUNT,
MESSAGE_TYPE_PLAYER_DISCONNECTED
};
struct EventCallbackStruct {
EventCallbackStruct::EventCallbackStruct(void) : EventType(CALLBACK_EVENT_INVALID), GlyphXPlayerID(0) { }
EventCallbackType EventType;
__int64 GlyphXPlayerID;
union {
struct SoundEffectEvent {
int SFXIndex;
int Variation;
int PixelX;
int PixelY;
int PlayerID; //TO_FIX
char SoundEffectName[ 16 ];
int SoundEffectPriority;
int SoundEffectContext;
} SoundEffect;
struct SpeechEvent {
int SpeechIndex;
int PlayerID; //TO_FIX
char SpeechName[ 16 ];
} Speech;
struct GameOverEvent {
bool Multiplayer;
//
// Single-player data
//
Command & Conquer Remastered post-launch patch Improvements to harvester resource finding logic. Don't allow the Advanced Comm Center to be capturable in skirmish or multiplayer. Increased failed pathfinding fudge factor. Buildings accept the Guard command if they can attack. Don't allow force capturing of ally structures. Fixes for laser Orcas in S3cr3t M1ss10n. Properly restore them after save. Reset Orcas after loads. Fixed flag animation rendering in CTF. Potentially fix a crash if aircraft are destroyed outside the map bounds. Fixed legacy Obelisk line rendering. Fix out-of-bounds crash in TD; issue was already fixed in RA. Disable capture flag on Commandos. Drop the flag when entering the limbo state. Fixed end game race condition, winning team ID is always sent before individual player win/lose messages. Fixed Chan spawn on SCB10EA. Don't show enter cursor for enemy units on refineries and repair pads. Changing right-click support for first put building on hold, and then subsequenct right-clicks to decrement that queue count for 1x or 5x; Then, 1x or 5x Left click will resume from hold. Don't debug reveal legacy rendering when a player is defeated. Fixed crash when loading saves of custom campaign maps. Reset harvester archived target when given a direct harvest order. Prevent NOD cargo planes from being force attacked. Fixed unit selection on load. Migrated queued repair pad functionality from RA to TD. Randomly animate infantry in area guard mode. Fixed crash accessing inactive objects. Added some walls in SCG08EB to prevent civilians from killing themselves. TD + RA: Audio: Overiding "Our base is under attack" cooldown timing from legacy from 2 minutes to 30 seconds, so it will be heard 4x as often. Fixed adjacent cell out-of-bounds crash issues. Kill player on disconnect Fixed and improved build time calculations to be consistent between TD and RA. Don't show health bars for cloaked Stealth Tanks in the legacy renderer. Fix selection of individual control groups after mixed selection. More adjustments to SCG08EB; switch C7 to C5, and add civilian AI to avoid Tiberium. Extra safety checks for units that have no weapons and aircraft that can't hunt. Fix loading of multiple infantry onto an APC. Additional safety checks for invalid coordinates. Prevent units from being instantly repaired. Fix map passability. Fail Allied mission 5B if the spy re-boards the starting transport (matches 5A and 5C behavior). Fixed multiplayer formation move causing units to move at light speed. Ignore movement destination checks if a unit is part of a mission-driven team. Fix buffer overrun crash. Ignore mines when determining win conditions. Fixed river passability in Blue Lakes.
2020-06-23 04:43:21 +12:00
bool IsHuman;
bool PlayerWins; //This should specify player id
const char* MovieName;
const char* MovieName2;
const char* MovieName3;
const char* MovieName4;
const char* AfterScoreMovieName;
int Score;
int Leadership;
int Efficiency;
int CategoryTotal;
int NODKilled;
int GDIKilled;
int CiviliansKilled;
int NODBuildingsDestroyed;
int GDIBuildingsDestroyed;
int CiviliansBuildingsDestroyed;
int RemainingCredits;
int SabotagedStructureType;
int TimerRemaining;
//
// Multi-player data
//
int MultiPlayerTotalPlayers;
GameOverMultiPlayerStatsStruct MultiPlayerPlayersData[ GAME_OVER_MULTIPLAYER_MAX_PLAYERS_TRACKED ];
} GameOver;
struct DebugPrintEvent {
const char *PrintString;
} DebugPrint;
struct MovieEvent {
const char* MovieName;
int Theme;
bool Immediate;
} Movie;
struct MessageEvent {
const char* Message;
float TimeoutSeconds;
EventCallbackMessageEnum MessageType;
__int64 MessageParam1;
} Message;
struct UpdateMapCellEvent {
int CellX;
int CellY;
char TemplateTypeName[32];
} UpdateMapCell;
struct AchievementEvent {
const char* AchievementType;
const char* AchievementReason;
} Achievement;
struct StoreCarryoverObjectsEvent {
const CarryoverObjectStruct* CarryoverList;
} CarryoverObjects;
struct SpecialWeaponTargettingEvent {
int Type;
int ID;
char Name[16];
DllSuperweaponTypeEnum WeaponType;
} SpecialWeaponTargetting;
struct CenterCameraEvent {
int CoordX;
int CoordY;
} CenterCamera;
struct PingEvent {
int CoordX;
int CoordY;
} Ping;
};
};
/**************************************************************************************
**
** Multiplayer setup data
**
** Used to pass multiplayer setup info into the C&C code from the GlyphX engine
**
**
*/
struct CNCMultiplayerOptionsStruct {
//int MPlayerPrefColor; // preferred color index for this player
//int MPlayerColorIdx; // actual color index of this player
//CnCHousesType MPlayerHouse; // House of this player (GDI/NOD)
//unsigned char MPlayerLocalID; // ID of this player
int MPlayerCount; // # of human players in this game
int MPlayerBases; // 1 = bases are on for this scenario
int MPlayerCredits; // # credits everyone gets
int MPlayerTiberium; // >0 = tiberium enabled for this scenario
int MPlayerGoodies; // 1 = goodies enabled for this scenario
int MPlayerGhosts; // 1 = houses with no players will still play
int MPlayerSolo; // 1 = allows a single-player net game
int MPlayerUnitCount; // # units for non-base multiplayer scenarios
bool IsMCVDeploy; // MCV undeploys instead of selling
bool SpawnVisceroids; // Do visceroids spawn
bool EnableSuperweapons; // Are superweapons available
bool MPlayerShadowRegrow;
bool MPlayerAftermathUnits;
bool CaptureTheFlag;
bool DestroyStructures; // New early win condition via destroying all a player's structures
bool ModernBalance;
};
struct CNCSpiedInfoStruct {
int Power;
int Drain;
int Money;
};
struct CNCPlayerInfoStruct {
char Name[64];
unsigned char House;
int ColorIndex;
unsigned __int64 GlyphxPlayerID;
int Team;
int StartLocationIndex;
unsigned char HomeCellX;
unsigned char HomeCellY;
bool IsAI;
unsigned int AllyFlags;
bool IsDefeated;
unsigned int SpiedPowerFlags;
unsigned int SpiedMoneyFlags;
CNCSpiedInfoStruct SpiedInfo[MAX_HOUSES];
int SelectedID;
DllObjectTypeEnum SelectedType;
DllActionTypeEnum ActionWithSelected[MAX_EXPORT_CELLS];
unsigned int ActionWithSelectedCount;
unsigned int ScreenShake;
bool IsRadarJammed;
};
//
enum GameRequestType {
GAME_REQUEST_MOVIE_DONE,
};
/**************************************************************************************
**
** Rules configuration data
**
**
*/
struct CNCDifficultyDataStruct
{
float FirepowerBias;
float GroundspeedBias;
float AirspeedBias;
float ArmorBias;
float ROFBias;
float CostBias;
float BuildSpeedBias;
float RepairDelay;
float BuildDelay;
bool IsBuildSlowdown;
bool IsWallDestroyer;
bool IsContentScan;
};
struct CNCRulesDataStruct
{
CNCDifficultyDataStruct Difficulties[3];
};
/**************************************************************************************
**
** Debug input interface
**
**
*/
enum DebugRequestEnum {
DEBUG_REQUEST_SPAWN_OBJECT,
DEBUG_REQUEST_END_GAME,
DEBUG_REQUEST_UNSHROUD,
DEBUG_REQUEST_SUPERWEAPON_RECHARGE,
DEBUG_REQUEST_KILL_OBJECT,
DEBUG_REQUEST_END_PRODUCTION,
DEBUG_REQUEST_ADD_RESOURCES,
DEBUG_REQUEST_UNLOCK_BUILDABLES,
DEBUG_REQUEST_FORCE_CRASH,
DEBUG_REQUEST_SET_GLOBAL_FLAG,
};
/**************************************************************************************
**
** Shroud data.
**
** Per-cell shroud info
**
**
*/
struct CNCShroudEntryStruct {
char ShadowIndex;
bool IsVisible;
bool IsMapped;
bool IsJamming;
};
struct CNCShroudStruct {
int Count;
CNCShroudEntryStruct Entries[1]; // Variable length
};
/**************************************************************************************
**
** Occupier data.
**
** Per-cell occupier info
**
**
*/
struct CNCOccupierObjectStruct {
DllObjectTypeEnum Type;
int ID;
};
struct CNCOccupierEntryHeaderStruct {
int Count;
};
struct CNCOccupierHeaderStruct {
int Count;
};
/**************************************************************************************
**
** Carryover object.
**
** Used to store object data that persists between missions
**
**
*/
struct CarryoverObjectStruct
{
CarryoverObjectStruct() : Next(0) {}
CarryoverObjectStruct* Next;
int RTTI;
int Type;
int Cell;
int Strength;
int House;
};
/*
** End of strict structure packing
**
**
*/
#pragma pack(pop)
#endif //DLL_INTERFACE_H