| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
- //
- // 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
|