508 lines
17 KiB
C
508 lines
17 KiB
C
//
|
|
// 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
|
|
|
|
/* $Header: /counterstrike/EXTERNS.H 2 3/10/97 6:23p Steve_tall $ */
|
|
/***********************************************************************************************
|
|
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
|
|
***********************************************************************************************
|
|
* *
|
|
* Project Name : Command & Conquer *
|
|
* *
|
|
* File Name : EXTERNS.H *
|
|
* *
|
|
* Programmer : Joe L. Bostic *
|
|
* *
|
|
* Start Date : May 27, 1994 *
|
|
* *
|
|
* Last Update : May 27, 1994 [JLB] *
|
|
* *
|
|
*---------------------------------------------------------------------------------------------*
|
|
* Functions: *
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
|
|
|
#ifndef EXTERNS_H
|
|
#define EXTERNS_H
|
|
|
|
#include "cell.h"
|
|
|
|
#ifdef SCENARIO_EDITOR
|
|
#include "mapedit.h"
|
|
#endif
|
|
#include "techno.h"
|
|
#include "type.h"
|
|
#include "building.h"
|
|
#include "unit.h"
|
|
#include "credits.h"
|
|
#include "goptions.h"
|
|
#include "options.h"
|
|
#include "infantry.H"
|
|
#include "DSOUND.H"
|
|
|
|
extern char _staging_buffer[32000];
|
|
extern "C" {
|
|
void _PRO(void);
|
|
}
|
|
|
|
/*
|
|
** Convenient alias for MixFileClass<CDFileClass> object. This allows
|
|
** easier entry into the code and less clutter.
|
|
*/
|
|
typedef MixFileClass<CCFileClass> MFCD;
|
|
|
|
extern bool IsVQ640;
|
|
extern unsigned long GameVersion;
|
|
extern bool Debug_MotionCapture;
|
|
extern bool Debug_Rotate;
|
|
extern bool Debug_Quiet;
|
|
extern bool Debug_Cheat;
|
|
extern bool Debug_Remap;
|
|
extern bool Debug_Flag;
|
|
extern bool Debug_Lose;
|
|
extern bool Debug_Map;
|
|
extern bool Debug_Win;
|
|
extern bool Debug_Icon;
|
|
extern bool Debug_Passable;
|
|
extern bool Debug_Unshroud;
|
|
extern bool Debug_Threat;
|
|
extern bool Debug_Find_Path;
|
|
extern bool Debug_Check_Map;
|
|
extern bool Debug_Playtest;
|
|
|
|
extern bool Debug_Heap_Dump;
|
|
extern bool Debug_Smart_Print;
|
|
extern bool Debug_Trap_Check_Heap;
|
|
extern bool Debug_Modem_Dump;
|
|
extern bool Debug_Print_Events;
|
|
extern bool Debug_Force_Crash;
|
|
|
|
extern void const *LightningShapes;
|
|
|
|
extern int NewINIFormat;
|
|
|
|
|
|
#ifdef FIXIT_ANTS
|
|
extern bool AntsEnabled;
|
|
#endif
|
|
|
|
#ifdef FIXIT_CSII // checked - ajw 9/28/98
|
|
extern bool NewUnitsEnabled;
|
|
extern bool SecretUnitsEnabled;
|
|
extern int MTankDistance;
|
|
extern bool OverrideNewUnitsEnabled; // ST - 12/13/2019 12:19PM
|
|
#ifdef FIXIT_CARRIER // checked - ajw 9/28/98
|
|
extern int CarrierLaunchDelay;
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef FIXIT_NAME_OVERRIDE
|
|
extern char const * NameOverride[25];
|
|
extern int NameIDOverride[25];
|
|
#endif
|
|
|
|
#ifdef WIN32
|
|
extern bool GameInFocus;
|
|
extern unsigned char *InterpolatedPalettes[100];
|
|
extern BOOL PalettesRead;
|
|
extern unsigned PaletteCounter;
|
|
extern int AllDone;
|
|
extern HANDLE hInstance;
|
|
extern bool InMovie;
|
|
extern WinTimerClass * WindowsTimer;
|
|
extern WWMouseClass * WWMouse;
|
|
extern GraphicBufferClass HiddenPage;
|
|
#define SeenPage SeenBuff
|
|
extern GraphicBufferClass VisiblePage;
|
|
extern GraphicViewPortClass SeenBuff;
|
|
extern GraphicBufferClass SysMemPage;
|
|
extern LPDIRECTSOUND SoundObject;
|
|
extern LPDIRECTSOUNDBUFFER PrimaryBufferPtr;
|
|
extern int ScreenWidth;
|
|
extern int ScreenHeight;
|
|
extern GraphicBufferClass ModeXBuff;
|
|
|
|
#else
|
|
|
|
extern VideoBufferClass SeenPage;
|
|
extern GraphicBufferClass SeenBuff;
|
|
extern GraphicBufferClass & VisiblePage;
|
|
#endif
|
|
|
|
|
|
/*
|
|
** Dynamic global variables (these change or are initialized at run time).
|
|
*/
|
|
extern MissionControlClass MissionControl[MISSION_COUNT];
|
|
extern char const * TutorialText[225];
|
|
extern Buffer * TheaterBuffer;
|
|
extern GetCDClass CDList;
|
|
extern CCINIClass RuleINI;
|
|
#ifdef FIXIT_CSII // checked - ajw 9/28/98
|
|
extern CCINIClass AftermathINI;
|
|
#endif
|
|
//extern Benchmark * Benches;
|
|
extern int MapTriggerID;
|
|
extern int LogicTriggerID;
|
|
extern PKey FastKey;
|
|
extern PKey SlowKey;
|
|
extern RulesClass Rule;
|
|
extern KeyboardClass * Keyboard;
|
|
extern RandomStraw CryptRandom;
|
|
extern RandomClass NonCriticalRandomNumber;
|
|
extern CarryoverClass * Carryover;
|
|
extern ScenarioClass Scen;
|
|
extern RemapControlType ColorRemaps[PCOLOR_COUNT];
|
|
extern RemapControlType MetalScheme;
|
|
extern RemapControlType GreyScheme;
|
|
extern VersionClass VerNum;
|
|
extern bool SlowPalette;
|
|
extern bool ScoresPresent;
|
|
extern bool AllowVoice;
|
|
extern NewConfigType NewConfig;
|
|
extern VoxType SpeakQueue;
|
|
extern bool PlayerWins;
|
|
extern bool PlayerLoses;
|
|
extern bool PlayerRestarts;
|
|
extern long Frame;
|
|
extern VoxType SpeechRecord[2];
|
|
extern void * SpeechBuffer[2];
|
|
extern int PreserveVQAScreen;
|
|
extern bool BreakoutAllowed;
|
|
extern bool Brokeout;
|
|
|
|
extern GameOptionsClass Options;
|
|
|
|
extern LogicClass Logic;
|
|
#ifdef SCENARIO_EDITOR
|
|
extern MapEditClass Map;
|
|
#else
|
|
extern MouseClass Map;
|
|
#endif
|
|
extern ScoreClass Score;
|
|
extern MonoClass MonoArray[DMONO_COUNT];
|
|
extern MFCD * TheaterData;
|
|
extern MFCD * MoviesMix;
|
|
extern MFCD * GeneralMix;
|
|
extern MFCD * ScoreMix;
|
|
extern MFCD * MainMix;
|
|
extern MFCD * ConquerMix;
|
|
extern ThemeClass Theme;
|
|
extern SpecialClass Special;
|
|
|
|
/*
|
|
** Game object allocation and tracking classes.
|
|
*/
|
|
extern TFixedIHeapClass<AircraftClass> Aircraft;
|
|
extern TFixedIHeapClass<AnimClass> Anims;
|
|
extern TFixedIHeapClass<BuildingClass> Buildings;
|
|
extern TFixedIHeapClass<BulletClass> Bullets;
|
|
extern TFixedIHeapClass<FactoryClass> Factories;
|
|
extern TFixedIHeapClass<HouseClass> Houses;
|
|
extern TFixedIHeapClass<InfantryClass> Infantry;
|
|
extern TFixedIHeapClass<OverlayClass> Overlays;
|
|
extern TFixedIHeapClass<SmudgeClass> Smudges;
|
|
extern TFixedIHeapClass<TeamClass> Teams;
|
|
extern TFixedIHeapClass<TeamTypeClass> TeamTypes;
|
|
extern TFixedIHeapClass<TemplateClass> Templates;
|
|
extern TFixedIHeapClass<TerrainClass> Terrains;
|
|
extern TFixedIHeapClass<TriggerClass> Triggers;
|
|
extern TFixedIHeapClass<UnitClass> Units;
|
|
extern TFixedIHeapClass<VesselClass> Vessels;
|
|
extern TFixedIHeapClass<TriggerTypeClass> TriggerTypes;
|
|
|
|
extern TFixedIHeapClass<HouseTypeClass> HouseTypes;
|
|
extern TFixedIHeapClass<BuildingTypeClass> BuildingTypes;
|
|
extern TFixedIHeapClass<AircraftTypeClass> AircraftTypes;
|
|
extern TFixedIHeapClass<InfantryTypeClass> InfantryTypes;
|
|
extern TFixedIHeapClass<BulletTypeClass> BulletTypes;
|
|
extern TFixedIHeapClass<AnimTypeClass> AnimTypes;
|
|
extern TFixedIHeapClass<UnitTypeClass> UnitTypes;
|
|
extern TFixedIHeapClass<VesselTypeClass> VesselTypes;
|
|
extern TFixedIHeapClass<TemplateTypeClass> TemplateTypes;
|
|
extern TFixedIHeapClass<TerrainTypeClass> TerrainTypes;
|
|
extern TFixedIHeapClass<OverlayTypeClass> OverlayTypes;
|
|
extern TFixedIHeapClass<SmudgeTypeClass> SmudgeTypes;
|
|
|
|
extern FixedIHeapClass * HeapPointers[RTTI_COUNT];
|
|
|
|
extern TFixedIHeapClass<WeaponTypeClass> Weapons;
|
|
extern TFixedIHeapClass<WarheadTypeClass> Warheads;
|
|
|
|
extern QueueClass<EventClass, MAX_EVENTS> OutList;
|
|
extern QueueClass<EventClass, (MAX_EVENTS * 64)> DoList;
|
|
|
|
#ifdef MIRROR_QUEUE
|
|
extern QueueClass<EventClass, (MAX_EVENTS * 64)> MirrorList;
|
|
#endif
|
|
|
|
typedef DynamicVectorArrayClass<ObjectClass *, HOUSE_COUNT, HOUSE_FIRST> SelectedObjectsType;
|
|
extern SelectedObjectsType CurrentObject;
|
|
extern DynamicVectorClass<TriggerClass *> LogicTriggers;
|
|
extern DynamicVectorClass<TriggerClass *> MapTriggers;
|
|
extern DynamicVectorClass<TriggerClass *> HouseTriggers[HOUSE_COUNT];
|
|
|
|
extern BaseClass Base;
|
|
|
|
/* These variables are used to keep track of the slowest speed of a team */
|
|
extern TeamFormDataStruct TeamFormData[HOUSE_COUNT];
|
|
extern bool FormMove;
|
|
extern SpeedType FormSpeed;
|
|
extern MPHType FormMaxSpeed;
|
|
|
|
extern bool IsTanyaDead;
|
|
extern bool SaveTanya;
|
|
|
|
extern bool TimeQuake;
|
|
|
|
#ifdef FIXIT_CSII // checked - ajw 9/28/98
|
|
extern bool PendingTimeQuake;
|
|
extern TARGET TimeQuakeCenter;
|
|
extern fixed QuakeUnitDamage;
|
|
extern fixed QuakeBuildingDamage;
|
|
extern int QuakeInfantryDamage;
|
|
extern int QuakeDelay;
|
|
extern fixed ChronoTankDuration; // chrono override for chrono tanks
|
|
#ifdef FIXIT_ENGINEER // checked - ajw 9/28/98
|
|
extern fixed EngineerDamage; // Amount of damage an engineer does
|
|
extern fixed EngineerCaptureLevel; // Building damage level before engineer can capture
|
|
#endif
|
|
#endif
|
|
|
|
/*
|
|
** Loaded data file pointers.
|
|
*/
|
|
extern void const * Metal12FontPtr;
|
|
extern void const * MapFontPtr;
|
|
extern void const * VCRFontPtr;
|
|
extern void const * TypeFontPtr;
|
|
extern void const * Font3Ptr;
|
|
extern void const * Font6Ptr;
|
|
extern void const * EditorFont;
|
|
extern void const * Font8Ptr;
|
|
extern void const * FontLEDPtr;
|
|
extern void const * ScoreFontPtr;
|
|
extern void const * GradFont6Ptr;
|
|
extern char const * SystemStrings;
|
|
extern char const * DebugStrings;
|
|
|
|
/*
|
|
** Miscellaneous globals.
|
|
*/
|
|
extern ChronalVortexClass ChronalVortex;
|
|
extern TTimerClass<SystemTimerClass> TickCount;
|
|
extern bool PassedProximity; // used in display.cpp
|
|
extern HousesType Whom;
|
|
//extern _VQAConfig AnimControl;
|
|
extern long SpareTicks;
|
|
extern long PathCount;
|
|
extern long CellCount;
|
|
extern long TargetScan;
|
|
extern long SidebarRedraws;
|
|
extern DMonoType MonoPage;
|
|
extern bool GameActive;
|
|
extern bool SpecialFlag;
|
|
extern int ScenarioInit;
|
|
extern HouseClass * PlayerPtr;
|
|
extern PaletteClass CCPalette;
|
|
extern PaletteClass BlackPalette;
|
|
extern PaletteClass WhitePalette;
|
|
extern PaletteClass GamePalette;
|
|
//extern PaletteClass InGamePalette;
|
|
#define InGamePalette GamePalette
|
|
extern PaletteClass OriginalPalette;
|
|
extern PaletteClass ScorePalette;
|
|
extern int BuildLevel;
|
|
extern unsigned long ScenarioCRC;
|
|
|
|
#ifdef FIXIT_VERSION_3
|
|
extern bool bAftermathMultiplayer; // Is multiplayer game being played with Aftermath rules?
|
|
#else
|
|
extern unsigned long PlayingAgainstVersion; // Negotiated version number
|
|
extern bool Version107InMix; // Is there a v1.07 in the game
|
|
#endif
|
|
|
|
#ifdef FIXIT_VERSION_3 // For endgame auto-sonar pulse.
|
|
extern bool bAutoSonarPulse;
|
|
#endif
|
|
|
|
#ifdef SCENARIO_EDITOR
|
|
extern CELL CurrentCell;
|
|
#endif
|
|
|
|
extern SessionClass Session;
|
|
//extern NullModemClass NullModem;
|
|
extern IPXManagerClass Ipx;
|
|
|
|
#if(TEN)
|
|
extern TenConnManClass *Ten;
|
|
#endif
|
|
|
|
#if(MPATH)
|
|
extern MPlayerManClass *MPath;
|
|
#endif
|
|
|
|
#if(TIMING_FIX)
|
|
extern int NewMaxAheadFrame1;
|
|
extern int NewMaxAheadFrame2;
|
|
#endif
|
|
|
|
extern int Seed;
|
|
extern int CustomSeed;
|
|
extern GroundType Ground[LAND_COUNT];
|
|
|
|
/*
|
|
** Constant externs (data is not modified during game play).
|
|
*/
|
|
extern char const * Missions[MISSION_COUNT];
|
|
extern char const Keys[];
|
|
extern char const * const VQName[VQ_COUNT];
|
|
extern int CrateData[CRATE_COUNT];
|
|
extern char const * const CrateNames[CRATE_COUNT];
|
|
extern int CrateShares[CRATE_COUNT];
|
|
extern AnimType CrateAnims[CRATE_COUNT];
|
|
extern char const * const SpecialWeaponName[SPC_COUNT];
|
|
extern int const SpecialWeaponHelp[SPC_COUNT];
|
|
extern char const * const SpecialWeaponFile[SPC_COUNT];
|
|
extern char const * const ArmorName[ARMOR_COUNT];
|
|
extern char const * const QuarryName[QUARRY_COUNT];
|
|
extern char const * const FormationName[FORMATION_COUNT];
|
|
extern unsigned long const PlayCodes[];
|
|
extern unsigned long const CheatCodes[];
|
|
//extern char const * const ProjectileNames[];
|
|
extern unsigned long const EditorCodes[];
|
|
extern char const * const SourceName[SOURCE_COUNT];
|
|
extern int const GroundColor[LAND_COUNT];
|
|
extern int const SnowColor[LAND_COUNT];
|
|
extern TheaterDataType const Theaters[THEATER_COUNT];
|
|
extern unsigned char const Facing32[256];
|
|
extern unsigned char const Facing16[256];
|
|
extern signed char const Rotation16[256];
|
|
extern unsigned char const Facing8[256];
|
|
extern unsigned char const Pixel2Lepton[24];
|
|
extern COORDINATE const StoppingCoordAbs[5];
|
|
extern CELL const AdjacentCell[FACING_COUNT];
|
|
extern COORDINATE const AdjacentCoord[FACING_COUNT];
|
|
extern unsigned char const RemapCiv2[];
|
|
extern unsigned char const RemapCiv4[];
|
|
extern unsigned char const RemapCiv5[];
|
|
extern unsigned char const RemapCiv6[];
|
|
extern unsigned char const RemapCiv7[];
|
|
extern unsigned char const RemapCiv8[];
|
|
extern unsigned char const RemapCiv9[];
|
|
extern unsigned char const RemapCiv10[];
|
|
extern unsigned char const RemapEmber[];
|
|
|
|
extern int SoundOn;
|
|
|
|
#ifdef WIN32
|
|
extern GraphicViewPortClass HidPage;
|
|
#else
|
|
extern GraphicBufferClass HidPage;
|
|
#endif
|
|
extern int MenuList[][8];
|
|
extern CDTimerClass<SystemTimerClass> FrameTimer;
|
|
extern CDTimerClass<SystemTimerClass> CountDownTimer;
|
|
|
|
extern SpecialDialogType SpecialDialog;
|
|
|
|
extern int RequiredCD;
|
|
extern int CurrentCD;
|
|
extern int MouseInstalled;
|
|
|
|
|
|
extern int LogLevel;
|
|
extern unsigned long LogLevelTime[ MAX_LOG_LEVEL ];
|
|
extern unsigned long LogLastTime;
|
|
|
|
extern class DynamicVectorClass<EventChoiceClass> test2;
|
|
extern class DynamicVectorClass<ActionChoiceClass> test3;
|
|
|
|
extern bool LogDump_Print;
|
|
|
|
extern "C"{
|
|
extern bool IsTheaterShape;
|
|
}
|
|
|
|
extern void Reset_Theater_Shapes(void);
|
|
extern TheaterType LastTheater;
|
|
void Coordinate_Remap ( GraphicViewPortClass *inbuffer, int x, int y, int width, int height, unsigned char *remap_table);
|
|
void Do_Vortex (int x, int y, int frame);
|
|
|
|
|
|
/************************************************************
|
|
** Win32 specific externs
|
|
*/
|
|
#ifdef WIN32
|
|
extern int ReadyToQuit; //Are we about to exit cleanly
|
|
extern bool InDebugger; //Are we being run from a debugger
|
|
void Memory_Error_Handler(void); //Memory error handler function
|
|
void WWDebugString (char *string);
|
|
#else
|
|
extern bool IsTheaterShape;
|
|
#endif //WIN32
|
|
|
|
|
|
/*************************************************************
|
|
** Internet specific externs
|
|
*/
|
|
#ifdef WIN32
|
|
|
|
extern char PlanetWestwoodHandle[]; //Planet WW user name
|
|
extern char PlanetWestwoodPassword[]; //Planet WW password
|
|
extern char PlanetWestwoodIPAddress[]; //IP of server or other player
|
|
extern long PlanetWestwoodPortNumber; //Port number to send to
|
|
extern bool PlanetWestwoodIsHost; //Flag true if player has control of game options
|
|
extern unsigned long PlanetWestwoodGameID; //Game ID
|
|
extern HWND WChatHWND; //Handle to Wchat window.
|
|
extern bool GameStatisticsPacketSent;
|
|
extern bool ConnectionLost;
|
|
extern void *PacketLater;
|
|
extern bool SpawnedFromWChat;
|
|
extern int ShowCommand;
|
|
void Register_Game_Start_Time(void);
|
|
void Register_Game_End_Time(void);
|
|
void Send_Statistics_Packet(void);
|
|
void Check_From_WChat(char *wchat_name);
|
|
bool Do_The_Internet_Menu_Thang (void);
|
|
bool Server_Remote_Connect(void);
|
|
bool Client_Remote_Connect(void);
|
|
extern int UnitBuildPenalty;
|
|
|
|
|
|
#endif //WIN32
|
|
|
|
/*
|
|
** From SENDFILE.CPP - externs for scenario file transfers
|
|
*/
|
|
bool Receive_Remote_File ( char *file_name, unsigned int file_length, unsigned int crc, int gametype);
|
|
bool Send_Remote_File ( char *file_name, int gametype );
|
|
bool Get_Scenario_File_From_Host(char *return_name, int gametype);
|
|
bool Find_Local_Scenario (char *description, char *filename, unsigned int length, char *digest, bool official);
|
|
|
|
#ifdef MPEGMOVIE // Denzil 6/15/98
|
|
#ifdef MCIMPEG
|
|
#include "mcimovie.h"
|
|
extern MCIMovie* MciMovie;
|
|
#endif
|
|
|
|
#include "mpgset.h"
|
|
extern MPGSettings* MpgSettings;
|
|
#endif
|
|
|
|
extern "C" bool MMXAvailable;
|
|
|
|
extern bool ShareAllyVisibility;
|
|
|
|
#endif
|