| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- //
- // 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/SCENARIO.H 1 3/03/97 10:25a Joe_bostic $ */
- /***********************************************************************************************
- *** 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 : SCENARIO.H *
- * *
- * Programmer : Joe L. Bostic *
- * *
- * Start Date : 02/26/96 *
- * *
- * Last Update : February 26, 1996 [JLB] *
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #ifndef SCENARIO_H
- #define SCENARIO_H
- /*
- ** This class holds the information about the current game being played. This information is
- ** global to the scenario and is generally of a similar nature to the information that was held
- ** in the controlling scenario INI file. It is safe to write this structure out as a whole since
- ** it doesn't contain any embedded pointers.
- */
- class ScenarioClass {
- public:
- // Constructor.
- ScenarioClass(void);
- void Set_Scenario_Name(int scenario, ScenarioPlayerType player, ScenarioDirType dir = SCEN_DIR_NONE, ScenarioVarType var = SCEN_VAR_NONE);
- void Set_Scenario_Name(char const * name);
- bool Set_Global_To(int global, bool value);
- void Do_BW_Fade(void);
- void Do_Fade_AI(void);
- /*
- ** This is the source of the random numbers used in the game. This controls
- ** the game logic and thus must be in sync with any networked machines.
- */
- RandomClass RandomNumber;
- /*
- ** This is the difficulty setting of the game.
- */
- DiffType Difficulty; // For human player.
- DiffType CDifficulty; // For computer players.
- /*
- ** This is the main mission timer. This is the timer that is reset at the
- ** start of the mission. It, effectively, holds the elapsed time of the
- ** mission.
- */
- TTimerClass<FrameTimerClass> Timer;
- /*
- ** This is an array of waypoints; each waypoint corresponds to a letter of
- ** the alphabet, and points to a cell number. -1 means unassigned.
- ** The CellClass has a bit that tells if that cell has a waypoint attached to
- ** it; the only way to find which waypoint it is, is to scan this array. This
- ** shouldn't be needed often; usually, you know the waypoint & you want the CELL.
- */
- CELL Waypoint[WAYPT_COUNT];
- /*
- ** This holds the system wide mission countdown timer. Time based missions
- ** are governed by this timer. Various trigger events can modify and examine
- ** this timer. The current value of this timer will display on the game
- ** screen.
- */
- CDTimerClass<FrameTimerClass> MissionTimer;
- /*
- ** The shroud regrowth (if enabled) is regulated by this timer. When the
- ** timer expires, the shroud will regrow one step.
- */
- CDTimerClass<FrameTimerClass> ShroudTimer;
- /*
- ** The scenario number.
- */
- int Scenario;
- /*
- ** The theater of the current scenario.
- */
- TheaterType Theater;
- /*
- ** The full name of the scenario (as it exists on disk).
- */
- char ScenarioName[_MAX_FNAME+_MAX_EXT];
- /*
- ** Description of the scenario.
- */
- char Description[DESCRIP_MAX];
- /*
- ** The filename of the introduction movie.
- */
- VQType IntroMovie;
- /*
- ** The filename of the briefing movie.
- */
- VQType BriefMovie;
- /*
- ** The filename of the movie to play if the scenario is won.
- */
- VQType WinMovie;
- /*
- ** The filename of the movie to play if the scenario is won.
- */
- VQType WinMovie2;
- /*
- ** The filename of the movie to play if the scenario is won.
- */
- VQType WinMovie3;
- /*
- ** The filename of the movie to play if the scenario is won.
- */
- VQType WinMovie4;
- /*
- ** The filename of the movie to play if the scenario is lost.
- */
- VQType LoseMovie;
- /*
- ** The filename of the movie to play right after the briefing and
- ** just before the game.
- */
- VQType ActionMovie;
- /*
- ** This is the full text of the briefing. This text will be
- ** displayed when the player commands the "restate mission
- ** objectives" operation.
- */
- char BriefingText[1024];
- /*
- ** This is the theme to start playing at the beginning of the action
- ** movie. A score started in this fashion will continue to play as
- ** the game progresses.
- */
- ThemeType TransitTheme;
- /*
- ** The house that the player is to be (obsolete).
- */
- HousesType PlayerHouse;
- /*
- ** The percentage of money that is allowed to be carried over into the
- ** following scenario.
- */
- fixed CarryOverPercent;
- /*
- ** This is the amount of money that was left over in the previous
- ** scenario.
- */
- int CarryOverMoney;
- /*
- ** This specifies the maximum amount of money that is allowed to be
- ** carried over from the previous scenario. This limits the amount
- ** regardless of what the carry over percentage is set to.
- */
- int CarryOverCap;
- /*
- ** This is the percent that the computer controlled base is to be
- ** built up to at the scenario start.
- */
- int Percent;
- /*
- ** Global flags that are used in the trigger system and are persistent
- ** over the course of the game.
- */
- bool GlobalFlags[30];
- /*
- ** This records the bookmark view locations the player has recorded.
- */
- CELL Views[4];
- /*
- ** This is the number of active passable bridges in the current game.
- */
- int BridgeCount;
- /*
- ** This records the carry over timer value that is used when the mission
- ** starts (presuming the appropriate flag is set) and also used when the
- ** scenario restarts.
- */
- int CarryOverTimer;
- /*
- ** If a bridge has been destroyed, then this flag will be set to true.
- ** If there is a trigger that depends on this, it might be triggered.
- */
- unsigned IsBridgeChanged:1;
- /*
- ** If a global has changed and global change trigger events must be
- ** processed, then this flag will be set to true.
- */
- unsigned IsGlobalChanged:1;
- /*
- ** Are the buildings and units in this scenario to carry over into
- ** some (unspecified) later scenario and thus have to be recorded
- ** at the end?
- */
- unsigned IsToCarryOver:1;
- /*
- ** Is this scenario to begin by taking the previously recorded
- ** carryover objects and creating them onto the map?
- */
- unsigned IsToInherit:1;
- /*
- ** If Tanya or a civilian is to be automatically evacuated when they enter
- ** a transport vehicle, then this flag will be true.
- */
- unsigned IsTanyaEvac:1;
- /*
- ** These variables are assigned to the chronosphere effect, and control
- ** whether the palette should be fading towards b&w or towards color.
- */
- unsigned IsFadingBW:1;
- unsigned IsFadingColor:1;
- /*
- ** If this scenario is to be the last mission of the game (for this side), then
- ** this flag will be true.
- */
- unsigned IsEndOfGame:1;
- /*
- ** If the mission countdown timer is to be inherited from the previous
- ** scenario, then this flag will be set to true.
- */
- unsigned IsInheritTimer:1;
- /*
- ** If the spy plane is to be disabled in this scenario even though circumstances
- ** might otherwise indicate that it should appear, then this flag will be true.
- */
- unsigned IsNoSpyPlane:1;
- /*
- ** If the score screen (and "mission accomplished" voice) is to be skipped when
- ** this scenario is finished, then this flag will be true.
- */
- unsigned IsSkipScore:1;
- /*
- ** If this is to be a one time only mission such that when it is completed, the game
- ** will return to the main menu, then this flag will be set to true.
- */
- unsigned IsOneTimeOnly:1;
- /*
- ** If the map selection is to be skipped then this flag will be true. If this
- ** ins't a one time only scenario, then the next scenario will have the same
- ** name as the current one but will be for variation "B".
- */
- unsigned IsNoMapSel:1;
- /*
- ** If trucks are supposed to drop wood crates when they explode, then this flag
- ** will be set to true.
- */
- unsigned IsTruckCrate:1;
- /*
- ** If the initial money is to be assigned as ore in available silos, then
- ** this flag will be set to true.
- */
- unsigned IsMoneyTiberium:1;
- /*
- ** This is the fading countdown timer. As this timer counts down, the
- ** fading to b&w or color will progress. This timer represents a
- ** percentage of the Options.Get_Saturation() to fade towards.
- */
- CDTimerClass<FrameTimerClass> FadeTimer;
- #ifdef FIXIT_VERSION_3 // For endgame auto-sonar pulse.
- // Timer to set the period for checking if an auto-sonar pulse should be performed.
- // This will take place if a player has nothing but subs left in the game.
- CDTimerClass<FrameTimerClass> AutoSonarTimer;
- #endif
- #ifdef FIXIT_VERSION_3 // Stalemate games.
- bool bLocalProposesDraw; // True if the local player in a 2-player game has a draw offer extended.
- bool bOtherProposesDraw; // True if the other player in a 2-player game has a draw offer extended.
- #endif
- };
- #endif
|