Commit Graph
36 Commits
Author SHA1 Message Date
Misty De Meo 6af5e86a77 DIRECTOR: openMainArchive may be opening an EXE
This fixes Fukuoka-Go-Round, which ends up passing the main EXE as a movie
to (re)open at runtime instead of a movie. Without this, clicking back to
the main menu crashes the disc.
2023-01-15 23:32:06 +01:00
Scott Percival 7c975eff43 DIRECTOR: LINGO: Adjust freezing/thawing behaviour 2022-12-09 01:10:57 +01:00
Scott Percival 3ea7f10467 DIRECTOR: Freeze LingoState instead of using callstack
Previously, the Lingo state would be frozen by persisting the frames on
the bottom of the callstack with a special flag. This required extra
logic to determine whether or not the callstack was intended to be empty
after execution finished, with some complex edge cases.

The new approach is to swap out the LingoState object on the window,
meaning that an empty callstack always signifies execution has completed.
It remains to be seen if we'll need to track more than one frozen
context; for now it seems to be okay.

Fixes driving to locations in DEVO Presents: Adventures of the Smart Patrol.
2022-12-09 01:10:57 +01:00
Scott Percival 873095c87e DIRECTOR: Move current Lingo state into Window-owned struct
The previous arrangement was to copy the bits of Lingo state back and forth from
the Window object to the Lingo instance, and query the window for the
callstack. This refactor consolidates the current Lingo state into a single
struct, owned by the Window object and accessible via a pointer on the
Lingo object.
2022-12-09 01:10:57 +01:00
Vladimir Serbinenko 0670d1a16a DIRECTOR: Switch to openFileOrDataFork 2022-12-04 20:16:21 +01:00
Roland van Laar 891fa08f15 DIRECTOR: Refactor loading next Movie
The loading of the next movie and corresponding shared cast
is now handled in seperate functions.
There checks when to load a new shared cast and when to delete
the previous one could be simplified by returning early when the
previous and new shared casts are the same.

At the same time it fixes a Dereference after null check from Coverity.
sharedCast->getArchive() could return a null pointer and wasn't checked
in all places.

Fixes COVERITY: 1498090
2022-10-07 17:00:31 +02:00
Scott Percival 671d3116ea DIRECTOR: Add palette shifting code for transitions
Fixes transitions in Lost Mind of Dr. Brain demo.
2022-09-12 15:52:18 +02:00
Roland van Laar c342819a60 DIRECTOR: LINGO: Implement the rect of the stage
The rect of stage returns the values of the stage rect.
2022-04-03 12:05:30 +02:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Orgad Shaneh ee57380de7 ENGINES: JANITORIAL: Remove 'virtual' when override is specified 2021-11-14 14:32:04 +02:00
Scott Percival 8963cf211a DIRECTOR: Move methods from Window to DirectorPlotData 2021-10-12 01:08:34 +08:00
djsrv 35342fb01d DIRECTOR: Remove _hasFrozenLingo 2021-08-15 17:05:37 -04:00
djsrv 1e7e9707a8 DIRECTOR: Load XCOD from non-projector MacBinaries
Meet MediaBand's Main/Shared.dir contains XCOD resources.
2021-08-04 19:30:52 -04:00
djsrv 88f77b53c1 DIRECTOR: Modify _vm->processEvents to handle transition events
processTransitionEvent skipped passing events to the window manager
and sent them directly to the current window, which is no good since the
event may need to go to another window. It also broke stopping
transitions on click.
2021-08-02 10:12:15 -04:00
ysj1173886760 ba990c2653 DIRECTOR: processEvent while playing transition 2021-08-02 19:34:47 +08:00
djsrv 8a9b1cd09c DIRECTOR: Give each window its own sound manager
This Should prevent conflicts between the sound channels of movies
running in parallel.
2021-07-27 22:42:09 -04:00
djsrv 7f0ae2b827 DIRECTOR: LINGO: Improve switching between windows
This saves/loads more Lingo state to the window so that running Lingo in
multiple windows is safer.
2021-07-26 12:59:06 -04:00
djsrv 44ad31a043 DIRECTOR: LINGO: Only freeze one context at a time 2021-07-21 20:41:36 -04:00
djsrv 5a7c191ac4 DIRECTOR: LINGO: Create one call stack per window
Since there may be frames left on the call stack after Lingo::execute()
is called now, it isn't safe to share one call stack between several
movies executing in parallel.
2021-07-21 20:35:40 -04:00
djsrv 0592520ddf DIRECTOR: Test multiple possible paths for shared cast 2021-07-16 16:22:06 -04:00
djsrv 789e8b1a4d DIRECTOR: Load FPlay in warlock-mac with --start-movie 2021-07-11 16:18:22 -04:00
ysj1173886760 5d4b11c198 DIRECTOR: introduce partial invertion to resolve render invert channel problem 2021-07-08 02:25:11 +02:00
Eugene Sandulenko b438f6fb07 DIRECTOR: Fix warnings 2020-08-23 01:23:28 +02:00
Eugene Sandulenko e27d5ac7fc DIRECTOR: JANITORIAL: Code formatting and unified the namespace end comments 2020-08-21 00:36:19 +02:00
Roland van Laar 062bf46ee5 DIRECTOR: Integer comparison fixes 2020-08-16 21:51:36 +02:00
Eugene Sandulenko 7d7e482ce8 DIRECTOR: More 32bpp work, images start to appear 2020-08-16 00:59:05 +02:00
Eugene Sandulenko 3bfb15bde4 DIRECTOR: Added override keywords 2020-08-14 09:38:15 +02:00
djsrv 07889d9f10 DIRECTOR: LINGO: Add AbstractObject::hasField 2020-08-13 22:33:17 -04:00
djsrv dec5bcce04 DIRECTOR: Mark overriden obj functions as override 2020-08-13 22:33:17 -04:00
Nathanael Gentry 07166de33f GRAPHICS: MACGUI: Add dirty rect handling to MacWindow
The Director engine, which relied on this functionality in its Window class, is
also updated.
2020-08-12 02:34:24 -04:00
Nathanael Gentry 2a90acd0eb DIRECTOR: Offload transition handling to WM 2020-08-10 11:17:16 -04:00
djsrv 8bc5e73d0a DIRECTOR: LINGO: Properly implement titleVisible 2020-08-07 13:40:52 -04:00
djsrv 4ec37c07cf DIRECTOR: LINGO: Implement kTheWindowType 2020-08-06 14:50:59 -04:00
djsrv efaf69a617 DIRECTOR: Add _isStage to Window 2020-08-06 13:50:09 -04:00
Nathanael Gentry 05a18f74be DIRECTOR: Reset current window on movie change 2020-08-06 12:50:24 -04:00
djsrv 9c537a8744 DIRECTOR: Rename Stage to more general Window
The stage and windows are the same type of thing, but the stage only
refers to one particular window.
2020-08-04 23:54:09 -04:00