22 #ifndef NANCY_ACTION_SECONDARYMOVIE_H 23 #define NANCY_ACTION_SECONDARYMOVIE_H 25 #include "common/ptr.h" 27 #include "engines/nancy/action/actionrecord.h" 28 #include "engines/nancy/action/interactivevideo.h" 29 #include "engines/nancy/movieplayer.h" 34 class InteractiveVideo;
49 static const byte kMovieSceneChange = 5;
50 static const byte kMovieNoSceneChange = 6;
52 static const byte kPlayerCursorAllowed = 1;
53 static const byte kNoPlayerCursorAllowed = 2;
55 static const byte kPlayMovieForward = 1;
56 static const byte kPlayMovieReverse = 2;
72 kNextIfChannel13Playing,
73 kNextIfChannel12Playing,
82 NextCondition condition = kNextWeighted;
89 uint16 startFrame = 0;
96 uint16 stayWeight = 0;
99 bool equalChanceNext =
false;
105 kSecondaryMovieTerse,
109 kMovieWithRandomPosition
115 void init()
override;
116 void onPause(
bool pause)
override;
117 void registerGraphics()
override;
118 void updateGraphics()
override;
121 void execute()
override;
123 bool getIsFinished()
const {
return _isFinished; }
135 byte _videoPlaytype = kVideoPlaytypeAuto;
137 uint16 _videoFormat = kLargeVideoFormat;
138 uint16 _videoSceneChange = kMovieNoSceneChange;
139 byte _playerCursorAllowed = kPlayerCursorAllowed;
140 byte _playDirection = kPlayMovieForward;
141 uint16 _firstFrame = 0;
142 uint16 _lastFrame = 0;
144 uint16 _hideOnFinish = 0;
147 uint16 _playStyle = 1;
151 uint16 _numLoops = 1;
152 uint16 _playCount = 0;
157 byte _movieVolume = 100;
160 enum RandomPosition : byte {
162 kRandomPositionOnce = 1,
163 kRandomPositionPerLoop = 2
166 byte _randomPosition = kFixedPosition;
196 MovieType _movieType;
198 bool isRandom()
const {
return _movieType == kRandomMovie; }
209 uint16 _randomPlayerCursorAllowed = kPlayerCursorAllowed;
222 bool isViewportRelative()
const override {
return true; }
230 uint16 _talkSceneID = kNoScene;
233 int16 _talkCursorType = -1;
238 enum RandomChainState { kRandomPlaying, kRandomPaused };
242 enum RandomPauseMode { kPauseTimed, kPauseUntilHovered, kPauseUntilNotHovered };
243 int _activeSequenceIndex = -1;
245 RandomChainState _randomChainState = kRandomPlaying;
246 RandomPauseMode _randomPauseMode = kPauseTimed;
247 uint32 _randomPauseEndTime = 0;
248 int16 _randomPauseFlag = -1;
249 bool _randomStopRequested =
false;
250 bool _randomPaused =
false;
251 bool _isHiddenByDependencies =
false;
256 bool _isHovered =
false;
257 bool _playingSecondary =
false;
264 bool _secondaryRewinding =
false;
265 int _rewindFrame = 0;
266 uint32 _rewindLastFrameTime = 0;
267 uint32 _rewindFrameDelay = 66;
273 void stopRandom() { _randomStopRequested =
true; }
274 void stopRandomNow();
275 void pauseRandom(
bool pause);
278 void playRandomSequence();
280 bool isViewportRelative()
const override {
return true; }
282 bool survivesSceneChange(
bool nextSceneIsNoArt)
const override;
288 CursorManager::CursorType getHoverCursor()
const override;
289 bool cursorSetFromScript()
const override {
return isRandom() && _talkSceneID != kNoScene && _talkCursorType >= 0; }
297 return isRandom() ?
"PlayRandomMovie" :
"PlaySecondaryMovie";
313 void applyStartingRandomSequence();
325 void resolveInteractiveSets();
332 void handleInteractiveInput(
NancyInput &input);
336 bool activateRandomSequence(
int index);
339 bool activateSecondaryMovie();
342 void beginSecondaryRewind();
349 bool isTalkable()
const {
return isRandom() && _talkSceneID != kNoScene && !_secondaryMovie.name.
empty(); }
354 int rollNextSequence();
359 int pickNextSequence();
367 bool randomPauseElapsed()
const;
374 void resolveSentinelFrames();
378 void updateMask(
int viewportFrame);
382 void updateViewportFrame();
386 void applyVideoDesc(
int descID);
388 void pickRandomPosition();
393 int _curViewportFrame = -1;
394 bool _isFinished =
false;
407 void execute()
override;
409 enum RandomMovieControlMode : byte {
418 Common::String getRecordTypeName()
const override {
return "PlayRandomMovieControl"; }
420 byte _mode = kStopNow;
424 bool _hasSceneChange =
true;
427 bool _isRandomMovie =
true;
433 #endif // NANCY_ACTION_SECONDARYMOVIE_H Definition: managed_surface.h:51
Definition: commontypes.h:235
static String format(MSVC_PRINTF const char *fmt,...) GCC_PRINTF(1
Definition: interactivevideo.h:50
Definition: commontypes.h:186
Definition: movieplayer.h:56
Definition: secondarymovie.h:47
Definition: serializer.h:80
Definition: commontypes.h:206
Definition: actionrecord.h:169
Definition: renderobject.h:36
bool empty() const
Definition: path.h:353
Definition: secondarymovie.h:58
Definition: secondarymovie.h:79
Definition: actionrecord.h:107
Definition: secondarymovie.h:86
Definition: secondarymovie.h:176
Definition: commontypes.h:306
Definition: secondarymovie.h:219
Definition: secondarymovie.h:402
Definition: commontypes.h:201
Definition: actionmanager.h:32