22 #ifndef TWINE_SCENE_SCENE_H 23 #define TWINE_SCENE_SCENE_H 25 #include "common/scummsys.h" 26 #include "common/util.h" 27 #include "twine/scene/actor.h" 28 #include "twine/shared.h" 32 #define NUM_SCENES_FLAGS 80 34 #define NUM_MAX_ACTORS 100 35 #define NUM_MAX_ZONES 100 36 #define NUM_MAX_TRACKS 200 38 enum class ScenePositionType {
47 #define ZONE_INIT_ON 1 50 #define ZONE_OBLIGATOIRE 8 58 ZoneType type = ZoneType::kCube;
122 void setActorStaticFlags(
ActorStruct *act, uint32 staticFlags);
123 void setBonusParameterFlags(
ActorStruct *act, uint16 bonusFlags);
124 bool loadSceneLBA1();
125 bool loadSceneLBA2();
128 bool initScene(int32 index);
134 int32 _currentSceneSize = 0;
135 bool _isOutsideScene =
false;
138 int32 _sampleAmbienceTime = 0;
139 int16 _sampleAmbiance[4]{0};
140 int16 _sampleRepeat[4]{0};
141 int16 _sampleRound[4]{0};
142 int16 _sampleFrequency[4]{0};
143 int16 _sampleVolume[4]{0};
144 int16 _sampleMinDelay = 0;
145 int16 _sampleMinDelayRnd = 0;
147 int16 _samplePlayed = 0;
149 int16 _sceneMusic = 0;
154 int32 _currentGameOverScene = 0;
156 uint8 *_currentScene =
nullptr;
157 void dumpSceneScripts()
const;
158 void dumpSceneScript(
const char *type,
int actorIdx,
const uint8* script,
int size)
const;
163 int32 _needChangeScene = LBA1SceneId::Citadel_Island_Prison;
164 int32 _currentSceneIdx = LBA1SceneId::Citadel_Island_Prison;
165 int32 _previousSceneIdx = LBA1SceneId::Citadel_Island_Prison;
169 int32 _holomapTrajectory = -1;
171 TextBankId _sceneTextBank = TextBankId::None;
172 int32 _alphaLight = 0;
173 int32 _betaLight = 0;
178 int16 _startYFalling = 0;
181 ScenePositionType _heroPositionType = ScenePositionType::kNoPosition;
188 int16 _mecaPenguinIdx = 0;
191 int16 _currentlyFollowedActor = OWN_ACTOR_SCENE_INDEX;
193 bool _flagClimbing =
false;
194 bool _enableEnhancements =
false;
196 int16 _currentScriptValue = 0;
198 int16 _talkingActor = 0;
201 int32 _sceneNumTracks = 0;
202 IVec3 _sceneTracks[NUM_MAX_TRACKS];
204 bool _enableGridTileRendering =
true;
206 uint8 _listFlagCube[NUM_SCENES_FLAGS]{0};
208 int32 _sceneNumZones = 0;
213 void playSceneMusic();
215 void reloadCurrentScene();
221 void processEnvironmentSound();
222 void initSceneVars();
224 bool isGameRunning()
const;
225 void stopRunningGame();
231 void checkZoneSce(int32 actorIdx);
234 inline bool Scene::isGameRunning()
const {
235 return _currentScene !=
nullptr;
int32 used
Definition: scene.h:81
Definition: achievements_tables.h:27
int32 textColor
Definition: scene.h:73