CnC_Remastered_Collection

Command and Conquer: Red Alert
Log | Files | Refs | README | LICENSE

EXTERNS.H (17198B)


      1 //
      2 // Copyright 2020 Electronic Arts Inc.
      3 //
      4 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is free 
      5 // software: you can redistribute it and/or modify it under the terms of 
      6 // the GNU General Public License as published by the Free Software Foundation, 
      7 // either version 3 of the License, or (at your option) any later version.
      8 
      9 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed 
     10 // in the hope that it will be useful, but with permitted additional restrictions 
     11 // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT 
     12 // distributed with this program. You should have received a copy of the 
     13 // GNU General Public License along with permitted additional restrictions 
     14 // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
     15 
     16 /* $Header: /counterstrike/EXTERNS.H 2     3/10/97 6:23p Steve_tall $ */
     17 /***********************************************************************************************
     18  ***              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               ***
     19  ***********************************************************************************************
     20  *                                                                                             *
     21  *                 Project Name : Command & Conquer                                            *
     22  *                                                                                             *
     23  *                    File Name : EXTERNS.H                                                    *
     24  *                                                                                             *
     25  *                   Programmer : Joe L. Bostic                                                *
     26  *                                                                                             *
     27  *                   Start Date : May 27, 1994                                                 *
     28  *                                                                                             *
     29  *                  Last Update : May 27, 1994   [JLB]                                         *
     30  *                                                                                             *
     31  *---------------------------------------------------------------------------------------------*
     32  * Functions:                                                                                  *
     33  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
     34 
     35 #ifndef EXTERNS_H
     36 #define EXTERNS_H
     37 
     38 #include	"cell.h"
     39 
     40 #ifdef SCENARIO_EDITOR
     41 #include	"mapedit.h"
     42 #endif
     43 #include	"techno.h"
     44 #include	"type.h"
     45 #include	"building.h"
     46 #include	"unit.h"
     47 #include	"credits.h"
     48 #include	"goptions.h"
     49 #include	"options.h"
     50 #include	"infantry.H"
     51 #include "DSOUND.H"
     52 
     53 extern char _staging_buffer[32000];
     54 extern "C" {
     55 void _PRO(void);
     56 }
     57 
     58 /*
     59 **	Convenient alias for MixFileClass<CDFileClass> object. This allows
     60 **	easier entry into the code and less clutter.
     61 */
     62 typedef MixFileClass<CCFileClass>	MFCD;
     63 
     64 extern bool IsVQ640;
     65 extern unsigned long GameVersion;
     66 extern bool Debug_MotionCapture;
     67 extern bool Debug_Rotate;
     68 extern bool Debug_Quiet;
     69 extern bool Debug_Cheat;
     70 extern bool Debug_Remap;
     71 extern bool Debug_Flag;
     72 extern bool Debug_Lose;
     73 extern bool Debug_Map;
     74 extern bool Debug_Win;
     75 extern bool Debug_Icon;
     76 extern bool Debug_Passable;
     77 extern bool Debug_Unshroud;
     78 extern bool Debug_Threat;
     79 extern bool Debug_Find_Path;
     80 extern bool Debug_Check_Map;
     81 extern bool Debug_Playtest;
     82 
     83 extern bool Debug_Heap_Dump;
     84 extern bool Debug_Smart_Print;
     85 extern bool Debug_Trap_Check_Heap;
     86 extern bool Debug_Modem_Dump;
     87 extern bool Debug_Print_Events;
     88 extern bool Debug_Force_Crash;
     89 
     90 extern void const *LightningShapes;
     91 
     92 extern int NewINIFormat;
     93 
     94 
     95 #ifdef FIXIT_ANTS
     96 extern bool AntsEnabled;
     97 #endif
     98 
     99 #ifdef FIXIT_CSII	//	checked - ajw 9/28/98
    100 extern bool NewUnitsEnabled;
    101 extern bool SecretUnitsEnabled;
    102 extern int MTankDistance;
    103 extern bool OverrideNewUnitsEnabled;	 // ST - 12/13/2019 12:19PM	
    104 #ifdef FIXIT_CARRIER	//	checked - ajw 9/28/98
    105 extern int CarrierLaunchDelay;
    106 #endif
    107 #endif
    108 
    109 #ifdef FIXIT_NAME_OVERRIDE
    110 extern char const * NameOverride[25];
    111 extern int NameIDOverride[25];
    112 #endif
    113 
    114 #ifdef WIN32
    115 extern bool					GameInFocus;
    116 extern unsigned char 	*InterpolatedPalettes[100];
    117 extern BOOL					PalettesRead;
    118 extern unsigned			PaletteCounter;
    119 extern int 					AllDone;
    120 extern HANDLE 				hInstance;
    121 extern bool 				InMovie;
    122 extern WinTimerClass	*		WindowsTimer;
    123 extern WWMouseClass *		WWMouse;
    124 extern GraphicBufferClass	HiddenPage;
    125 #define	SeenPage		SeenBuff
    126 extern GraphicBufferClass		VisiblePage;
    127 extern GraphicViewPortClass	SeenBuff;
    128 extern GraphicBufferClass		SysMemPage;
    129 extern LPDIRECTSOUND				SoundObject;
    130 extern LPDIRECTSOUNDBUFFER		PrimaryBufferPtr;
    131 extern int							ScreenWidth;
    132 extern int							ScreenHeight;
    133 extern GraphicBufferClass		ModeXBuff;
    134 
    135 #else
    136 
    137 extern VideoBufferClass		SeenPage;
    138 extern GraphicBufferClass	SeenBuff;
    139 extern GraphicBufferClass &	VisiblePage;
    140 #endif
    141 
    142 
    143 /*
    144 **	Dynamic global variables (these change or are initialized at run time).
    145 */
    146 extern MissionControlClass		MissionControl[MISSION_COUNT];
    147 extern char const *				TutorialText[225];
    148 extern Buffer *					TheaterBuffer;
    149 extern GetCDClass					CDList;
    150 extern CCINIClass					RuleINI;
    151 #ifdef FIXIT_CSII	//	checked - ajw 9/28/98
    152 extern CCINIClass					AftermathINI;
    153 #endif
    154 //extern Benchmark *				Benches;
    155 extern int							MapTriggerID;
    156 extern int							LogicTriggerID;
    157 extern PKey							FastKey;
    158 extern PKey							SlowKey;
    159 extern RulesClass					Rule;
    160 extern KeyboardClass *			Keyboard;
    161 extern RandomStraw				CryptRandom;
    162 extern RandomClass				NonCriticalRandomNumber;
    163 extern CarryoverClass *			Carryover;
    164 extern ScenarioClass				Scen;
    165 extern RemapControlType			ColorRemaps[PCOLOR_COUNT];
    166 extern RemapControlType			MetalScheme;
    167 extern RemapControlType			GreyScheme;
    168 extern VersionClass				VerNum;
    169 extern bool							SlowPalette;
    170 extern bool							ScoresPresent;
    171 extern bool							AllowVoice;
    172 extern NewConfigType				NewConfig;
    173 extern VoxType						SpeakQueue;
    174 extern bool							PlayerWins;
    175 extern bool							PlayerLoses;
    176 extern bool							PlayerRestarts;
    177 extern long							Frame;
    178 extern VoxType						SpeechRecord[2];
    179 extern void *						SpeechBuffer[2];
    180 extern int							PreserveVQAScreen;
    181 extern bool							BreakoutAllowed;
    182 extern bool							Brokeout;
    183 
    184 extern GameOptionsClass 		Options;
    185 
    186 extern LogicClass 				Logic;
    187 #ifdef SCENARIO_EDITOR
    188 extern MapEditClass 				Map;
    189 #else
    190 extern MouseClass 				Map;
    191 #endif
    192 extern ScoreClass 				Score;
    193 extern MonoClass 					MonoArray[DMONO_COUNT];
    194 extern MFCD *						TheaterData;
    195 extern MFCD *						MoviesMix;
    196 extern MFCD *						GeneralMix;
    197 extern MFCD *						ScoreMix;
    198 extern MFCD *						MainMix;
    199 extern MFCD *						ConquerMix;
    200 extern ThemeClass 				Theme;
    201 extern SpecialClass 				Special;
    202 
    203 /*
    204 **	Game object allocation and tracking classes.
    205 */
    206 extern TFixedIHeapClass<AircraftClass>						Aircraft;
    207 extern TFixedIHeapClass<AnimClass>							Anims;
    208 extern TFixedIHeapClass<BuildingClass>						Buildings;
    209 extern TFixedIHeapClass<BulletClass>						Bullets;
    210 extern TFixedIHeapClass<FactoryClass>						Factories;
    211 extern TFixedIHeapClass<HouseClass>							Houses;
    212 extern TFixedIHeapClass<InfantryClass>						Infantry;
    213 extern TFixedIHeapClass<OverlayClass>						Overlays;
    214 extern TFixedIHeapClass<SmudgeClass>						Smudges;
    215 extern TFixedIHeapClass<TeamClass>							Teams;
    216 extern TFixedIHeapClass<TeamTypeClass>						TeamTypes;
    217 extern TFixedIHeapClass<TemplateClass>						Templates;
    218 extern TFixedIHeapClass<TerrainClass>						Terrains;
    219 extern TFixedIHeapClass<TriggerClass>						Triggers;
    220 extern TFixedIHeapClass<UnitClass>							Units;
    221 extern TFixedIHeapClass<VesselClass>						Vessels;
    222 extern TFixedIHeapClass<TriggerTypeClass>					TriggerTypes;
    223 
    224 extern TFixedIHeapClass<HouseTypeClass>					HouseTypes;
    225 extern TFixedIHeapClass<BuildingTypeClass>				BuildingTypes;
    226 extern TFixedIHeapClass<AircraftTypeClass>				AircraftTypes;
    227 extern TFixedIHeapClass<InfantryTypeClass>				InfantryTypes;
    228 extern TFixedIHeapClass<BulletTypeClass>					BulletTypes;
    229 extern TFixedIHeapClass<AnimTypeClass>						AnimTypes;
    230 extern TFixedIHeapClass<UnitTypeClass>						UnitTypes;
    231 extern TFixedIHeapClass<VesselTypeClass>					VesselTypes;
    232 extern TFixedIHeapClass<TemplateTypeClass>				TemplateTypes;
    233 extern TFixedIHeapClass<TerrainTypeClass>					TerrainTypes;
    234 extern TFixedIHeapClass<OverlayTypeClass>					OverlayTypes;
    235 extern TFixedIHeapClass<SmudgeTypeClass>					SmudgeTypes;
    236 
    237 extern FixedIHeapClass *										HeapPointers[RTTI_COUNT];
    238 
    239 extern TFixedIHeapClass<WeaponTypeClass>					Weapons;
    240 extern TFixedIHeapClass<WarheadTypeClass>					Warheads;
    241 
    242 extern QueueClass<EventClass, MAX_EVENTS>					OutList;
    243 extern QueueClass<EventClass, (MAX_EVENTS * 64)>		DoList;
    244 
    245 #ifdef MIRROR_QUEUE
    246 extern QueueClass<EventClass, (MAX_EVENTS * 64)>		MirrorList;
    247 #endif
    248 
    249 typedef DynamicVectorArrayClass<ObjectClass *, HOUSE_COUNT, HOUSE_FIRST> SelectedObjectsType;
    250 extern SelectedObjectsType									CurrentObject;
    251 extern DynamicVectorClass<TriggerClass *>					LogicTriggers;
    252 extern DynamicVectorClass<TriggerClass *>					MapTriggers;
    253 extern DynamicVectorClass<TriggerClass *> 				HouseTriggers[HOUSE_COUNT];
    254 
    255 extern BaseClass													Base;
    256 
    257 /* These variables are used to keep track of the slowest speed of a team */
    258 extern TeamFormDataStruct TeamFormData[HOUSE_COUNT];
    259 extern bool FormMove;
    260 extern SpeedType FormSpeed;
    261 extern MPHType FormMaxSpeed;
    262 
    263 extern bool IsTanyaDead;
    264 extern bool SaveTanya;
    265 
    266 extern bool TimeQuake;
    267 
    268 #ifdef FIXIT_CSII	//	checked - ajw 9/28/98
    269 extern bool PendingTimeQuake;
    270 extern TARGET TimeQuakeCenter;
    271 extern fixed QuakeUnitDamage;
    272 extern fixed QuakeBuildingDamage;
    273 extern int QuakeInfantryDamage;
    274 extern int QuakeDelay;
    275 extern fixed ChronoTankDuration;		// chrono override for chrono tanks
    276 #ifdef FIXIT_ENGINEER	//	checked - ajw 9/28/98
    277 extern fixed EngineerDamage;			// Amount of damage an engineer does
    278 extern fixed EngineerCaptureLevel;	// Building damage level before engineer can capture
    279 #endif
    280 #endif
    281 
    282 /*
    283 **	Loaded data file pointers.
    284 */
    285 extern void const *		Metal12FontPtr;
    286 extern void const *		MapFontPtr;
    287 extern void const *		VCRFontPtr;
    288 extern void const *		TypeFontPtr;
    289 extern void const *		Font3Ptr;
    290 extern void const *		Font6Ptr;
    291 extern void const *		EditorFont;
    292 extern void const *		Font8Ptr;
    293 extern void const *		FontLEDPtr;
    294 extern void const *		ScoreFontPtr;
    295 extern void const *		GradFont6Ptr;
    296 extern char const *		SystemStrings;
    297 extern char const *		DebugStrings;
    298 
    299 /*
    300 **	Miscellaneous globals.
    301 */
    302 extern ChronalVortexClass		ChronalVortex;
    303 extern TTimerClass<SystemTimerClass> TickCount;
    304 extern bool							PassedProximity;	// used in display.cpp
    305 extern HousesType					Whom;
    306 //extern _VQAConfig					AnimControl;
    307 extern long							SpareTicks;
    308 extern long							PathCount;
    309 extern long							CellCount;
    310 extern long							TargetScan;
    311 extern long							SidebarRedraws;
    312 extern DMonoType					MonoPage;
    313 extern bool							GameActive;
    314 extern bool							SpecialFlag;
    315 extern int							ScenarioInit;
    316 extern HouseClass *				PlayerPtr;
    317 extern PaletteClass 				CCPalette;
    318 extern PaletteClass 				BlackPalette;
    319 extern PaletteClass 				WhitePalette;
    320 extern PaletteClass 				GamePalette;
    321 //extern PaletteClass 				InGamePalette;
    322 #define InGamePalette GamePalette
    323 extern PaletteClass 				OriginalPalette;
    324 extern PaletteClass				ScorePalette;
    325 extern int							BuildLevel;
    326 extern unsigned long				ScenarioCRC;
    327 
    328 #ifdef FIXIT_VERSION_3
    329 extern bool							bAftermathMultiplayer;		//	Is multiplayer game being played with Aftermath rules?
    330 #else
    331 extern unsigned long 				PlayingAgainstVersion;		// Negotiated version number
    332 extern bool							Version107InMix;				// Is there a v1.07 in the game
    333 #endif
    334 
    335 #ifdef FIXIT_VERSION_3			//	For endgame auto-sonar pulse.
    336 extern bool							bAutoSonarPulse;
    337 #endif
    338 
    339 #ifdef SCENARIO_EDITOR
    340 extern CELL 						CurrentCell;
    341 #endif
    342 
    343 extern SessionClass				Session;
    344 //extern NullModemClass 			NullModem;
    345 extern IPXManagerClass 	 		Ipx;
    346 
    347 #if(TEN)
    348 extern TenConnManClass			*Ten;
    349 #endif
    350 
    351 #if(MPATH)
    352 extern MPlayerManClass			*MPath;
    353 #endif
    354 
    355 #if(TIMING_FIX)
    356 extern int										NewMaxAheadFrame1;
    357 extern int										NewMaxAheadFrame2;
    358 #endif
    359 
    360 extern int							Seed;
    361 extern int							CustomSeed;
    362 extern GroundType  				Ground[LAND_COUNT];
    363 
    364 /*
    365 **	Constant externs (data is not modified during game play).
    366 */
    367 extern char const *							Missions[MISSION_COUNT];
    368 extern char const								Keys[];
    369 extern char const * const					VQName[VQ_COUNT];
    370 extern int										CrateData[CRATE_COUNT];
    371 extern char const * const					CrateNames[CRATE_COUNT];
    372 extern int										CrateShares[CRATE_COUNT];
    373 extern AnimType								CrateAnims[CRATE_COUNT];
    374 extern char const * const					SpecialWeaponName[SPC_COUNT];
    375 extern int const								SpecialWeaponHelp[SPC_COUNT];
    376 extern char const * const					SpecialWeaponFile[SPC_COUNT];
    377 extern char const * const					ArmorName[ARMOR_COUNT];
    378 extern char const * const					QuarryName[QUARRY_COUNT];
    379 extern char const * const					FormationName[FORMATION_COUNT];
    380 extern unsigned long const					PlayCodes[];
    381 extern unsigned long const					CheatCodes[];
    382 //extern char const * const					ProjectileNames[];
    383 extern unsigned long const					EditorCodes[];
    384 extern char const * const					SourceName[SOURCE_COUNT];
    385 extern int const								GroundColor[LAND_COUNT];
    386 extern int const								SnowColor[LAND_COUNT];
    387 extern TheaterDataType const 				Theaters[THEATER_COUNT];
    388 extern unsigned char const 				Facing32[256];
    389 extern unsigned char const					Facing16[256];
    390 extern signed char const					Rotation16[256];
    391 extern unsigned char const 				Facing8[256];
    392 extern unsigned char const					Pixel2Lepton[24];
    393 extern COORDINATE const 					StoppingCoordAbs[5];
    394 extern CELL const 							AdjacentCell[FACING_COUNT];
    395 extern COORDINATE const 					AdjacentCoord[FACING_COUNT];
    396 extern unsigned char const					RemapCiv2[];
    397 extern unsigned char const					RemapCiv4[];
    398 extern unsigned char const					RemapCiv5[];
    399 extern unsigned char const					RemapCiv6[];
    400 extern unsigned char const					RemapCiv7[];
    401 extern unsigned char const					RemapCiv8[];
    402 extern unsigned char const					RemapCiv9[];
    403 extern unsigned char const					RemapCiv10[];
    404 extern unsigned char const					RemapEmber[];
    405 
    406 extern int SoundOn;
    407 
    408 #ifdef WIN32
    409 extern GraphicViewPortClass	HidPage;
    410 #else
    411 extern GraphicBufferClass	HidPage;
    412 #endif
    413 extern int 						MenuList[][8];
    414 extern CDTimerClass<SystemTimerClass> FrameTimer;
    415 extern CDTimerClass<SystemTimerClass> CountDownTimer;
    416 
    417 extern SpecialDialogType	SpecialDialog;
    418 
    419 extern int RequiredCD;
    420 extern int CurrentCD;
    421 extern int MouseInstalled;
    422 
    423 
    424 extern int LogLevel;
    425 extern unsigned long LogLevelTime[ MAX_LOG_LEVEL ];
    426 extern unsigned long LogLastTime;
    427 
    428 extern class DynamicVectorClass<EventChoiceClass> test2;
    429 extern class DynamicVectorClass<ActionChoiceClass> test3;
    430 
    431 extern bool LogDump_Print;
    432 
    433 extern "C"{
    434 	extern bool IsTheaterShape;
    435 }
    436 
    437 extern void Reset_Theater_Shapes(void);
    438 extern TheaterType LastTheater;
    439 void Coordinate_Remap ( GraphicViewPortClass *inbuffer, int x, int y, int width, int height, unsigned char *remap_table);
    440 void Do_Vortex (int x, int y, int frame);
    441 
    442 
    443 /************************************************************
    444 ** Win32 specific externs
    445 */
    446 #ifdef WIN32
    447 extern int ReadyToQuit;							//Are we about to exit cleanly
    448 extern bool InDebugger;							//Are we being run from a debugger
    449 void Memory_Error_Handler(void);				//Memory error handler function
    450 void WWDebugString (char *string);
    451 #else
    452 extern bool IsTheaterShape;
    453 #endif	//WIN32
    454 
    455 
    456 /*************************************************************
    457 ** Internet specific externs
    458 */
    459 #ifdef WIN32
    460 
    461 extern char PlanetWestwoodHandle[];			//Planet WW user name
    462 extern char PlanetWestwoodPassword[];		//Planet WW password
    463 extern char PlanetWestwoodIPAddress[];		//IP of server or other player
    464 extern long PlanetWestwoodPortNumber;		//Port number to send to
    465 extern bool PlanetWestwoodIsHost;				//Flag true if player has control of game options
    466 extern unsigned long PlanetWestwoodGameID;	//Game ID
    467 extern HWND	WChatHWND;							//Handle to Wchat window.
    468 extern bool	GameStatisticsPacketSent;
    469 extern bool	ConnectionLost;
    470 extern void *PacketLater;
    471 extern bool SpawnedFromWChat;
    472 extern int ShowCommand;
    473 void	Register_Game_Start_Time(void);
    474 void	Register_Game_End_Time(void);
    475 void	Send_Statistics_Packet(void);
    476 void 	Check_From_WChat(char *wchat_name);
    477 bool 	Do_The_Internet_Menu_Thang (void);
    478 bool 	Server_Remote_Connect(void);
    479 bool 	Client_Remote_Connect(void);
    480 extern	int UnitBuildPenalty;
    481 
    482 
    483 #endif	 //WIN32
    484 
    485 /*
    486 ** From SENDFILE.CPP - externs for scenario file transfers
    487 */
    488 bool Receive_Remote_File ( char *file_name, unsigned int file_length, unsigned int crc, int gametype);
    489 bool Send_Remote_File ( char *file_name, int gametype );
    490 bool Get_Scenario_File_From_Host(char *return_name, int gametype);
    491 bool Find_Local_Scenario (char *description, char *filename, unsigned int length, char *digest, bool official);
    492 
    493 #ifdef MPEGMOVIE // Denzil 6/15/98
    494 #ifdef MCIMPEG
    495 #include "mcimovie.h"
    496 extern MCIMovie* MciMovie;
    497 #endif
    498 
    499 #include "mpgset.h"
    500 extern MPGSettings* MpgSettings;
    501 #endif
    502 
    503 extern "C" bool MMXAvailable;
    504 
    505 extern bool ShareAllyVisibility;
    506 
    507 #endif