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