Commit Graph
74 Commits
Author SHA1 Message Date
Nathanael Gentry d7ec21cbeb DIRECTOR: Properly discover sprite cursors
We canot just use getSpriteIDFromPos, as Director gets the cursor from the
topmost sprite that has a non-empty cursor.
2020-08-19 10:41:55 -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
djsrv 8656c91e9d DIRECTOR: Remove leftover old event code 2020-08-04 18:25:29 -04:00
djsrv f4c652e76f DIRECTOR: Return true on handled key event 2020-08-04 15:16:18 -04:00
djsrv a7ca8a0b2c DIRECTOR: Get rid of busy wait for click loop 2020-08-04 15:14:05 -04:00
djsrv 054b8ddeb0 DIRECTOR: Improve mouse event handling 2020-07-27 16:42:42 -04:00
djsrv 33d07334eb DIRECTOR: Replace isFocusable with respondsToEvent 2020-07-27 12:51:51 -04:00
Eugene Sandulenko 300bea13c8 DIRECTOR: Remove unused variable 2020-07-27 00:39:40 +02:00
Scott Percival 4bfffc43a7 DIRECTOR: Move widgets from cast members to channels (#2372)
This change is required to support copies of the same cast member running in different channels.

* DIRECTOR: Move widget ownership from cast member to channel

* DIRECTOR: Cache cast dimensions from createWidget

* DIRECTOR: Add null checks for createWidget

* GRAPHICS: MACGUI: Clear active/hover WM references if the widget is destroyed

* DIRECTOR: LINGO: Re-add null check for kTheEditableText

* DIRECTOR: Avoid destroying widgets if the channel isn't dirty

* DIRECTOR: Fix dirty test

* DIRECTOR: Fix text field writeback

* DIRECTOR: Fix null cast check

* DIRECTOR: Add bbox as argument to createWidget

* DIRECTOR: Add setCast method to Channel

* DIRECTOR: Fix use-after-free in Channel::getMask

* DIRECTOR: Fix bounding box for Button sprites

* DIRECTOR: Cache widget dimensions in cast member

* DIRECTOR: Remove widget from channel if nextSprite is empty

* GRAPHICS: MACGUI: Fix MacText::splitString for empty string case

* DIRECTOR: Add null checks for movie and score in processEvents
2020-07-26 04:32:29 +00:00
djsrv 177283249e DIRECTOR: Fix event segfaults 2020-07-24 14:10:13 -04:00
djsrv 6493e0d763 DIRECTOR: Don't switch movie in processEvent 2020-07-24 11:03:35 -04:00
djsrv f23ef93766 DIRECTOR: Move event handling to movie 2020-07-23 20:05:49 -04:00
Nathanael Gentry ae1af9c06a DIRECTOR: Fix matte intersection check
Actually, it's not applied indiscriminately. It only take effect when there is
already a matte ink on the given sprite.
2020-07-21 23:12:54 -04:00
djsrv a67e4bee50 DIRECTOR: Update screen in DirectorEngine::draw 2020-07-21 17:34:22 -04:00
Nathanael Gentry 6b404187fc DIRECTOR: Move mouse position check to channel
This permits, for instance, only changing the cursor when we are inside a
bitmapped sprite.
2020-07-21 15:11:34 -04:00
Nathanael Gentry 5fb984e99f DIRECTOR: Mostly implement cursor of sprite 2020-07-18 00:37:57 -04:00
Nathanael Gentry 3cb709f135 DIRECTOR: Track dragged sprite by channel 2020-07-16 09:59:05 -04:00
Eugene Sandulenko 0ea87e19c6 DIRECTOR: LINGO: Implement command/shift/alt/optonDown 2020-07-11 11:01:47 +02:00
Eugene Sandulenko 6b3cc7498c DIRECTOR: LINGO: Implement 'the clickLoc' 2020-07-11 10:36:51 +02:00
djsrv 04f457c46b DIRECTOR: Add _playState to Score 2020-07-09 12:20:39 -04:00
djsrv a56f400e32 DIRECTOR: Add main stage 2020-07-08 15:19:04 -04:00
Nathanael Gentry 8a85754f25 DIRECTOR: Move Channel to its own file 2020-07-08 13:44:02 -04:00
Nathanael Gentry bf785fc8f4 DIRECTOR: Selectively invert sprites on click 2020-07-06 11:37:35 -04:00
djsrv 509871448d DIRECTOR: Add desktop debug flag 2020-07-03 11:03:21 -04:00
djsrv fb39572fd5 DIRECTOR: Move _sharedCast to Movie 2020-07-01 13:24:37 -04:00
Eugene Sandulenko 1aa1fe2802 DIRECTOR: Furhter decrease of header dependency 2020-07-01 17:49:48 +02:00
djsrv 5ae6c34074 DIRECTOR: Separate Movie and Cast from Score 2020-07-01 10:50:31 -04:00
djsrv 3303ab985e DIRECTOR: Rename cast.cpp -> castmember.cpp 2020-07-01 10:50:31 -04:00
djsrv dfc06bbe21 DIRECTOR: LINGO: Add version checks for more events 2020-06-29 12:50:37 -04:00
djsrv c8cf06b2a3 DIRECTOR: LINGO: Fix the clickOn
It should reset to 0 when a non-sprite is clicked.
2020-06-26 13:52:11 -04:00
djsrv 612104336f DIRECTOR: LINGO: Rework event handling
Setup for proper event delegation. It probably needs adjustments but
it should be mostly correct for D4.
2020-06-17 20:38:49 -04:00
Nathanael Gentry fad94268a9 DIRECTOR: Send mouse events to actionable sprites first 2020-06-17 14:28:08 -04:00
Nathanael Gentry 75210d8186 DIRECTOR: Render sprites from channel structs
Among other rendering issues, this fixes the annoying jittery sprites issue when
a sprite is simultaneously animated and moveable.
2020-06-17 09:07:35 -04:00
djsrv 31399a675b DIRECTOR: Add Mac key code mappings 2020-06-16 22:43:12 -04:00
Nathanael Gentry 5711e4399a DIRECTOR: Use WM button activation styles 2020-06-10 15:42:49 +02:00
Nathanael Gentry f112b2b564 DIRECTOR: Implement kTheHilite 2020-06-10 15:42:49 +02:00
Nathanael Gentry a2e230803d DIRECTOR: Render texts and buttons with widgets 2020-06-10 15:42:49 +02:00
Scott Percival fd02d0a9f5 DIRECTOR: Fix idle event from preventing exit 2020-06-04 00:56:10 +08:00
Scott Percival 5c337d4536 DIRECTOR: LINGO: Implement kTheClickOn 2020-05-23 22:12:33 +08:00
Scott Percival d3c7c3cbc8 DIRECTOR: Simplify dirty sprite check 2020-05-23 21:33:51 +08:00
Nathanael Gentry 5babbb30db DIRECTOR: Move to channel-based rendering 2020-05-17 23:21:33 +02:00
Nathanael Gentry 3fa90b4ade DIRECTOR: Move from drawRects to bboxes 2020-05-17 23:21:33 +02:00
Scott Percival c7eba6419d DIRECTOR: LINGO: Buffer events during script execution
During execution of a Lingo script, there are certain actions which will
repaint the screen, delay, and trigger an event poll (such as calling
b_updateStage, or updating certain cast members). As part of this, Lingo
will record events (such as clicking on a cast member), but will not
process them until after the current script returns control to the engine.
2020-05-17 00:14:53 +08:00
Eugene Sandulenko 17e5b91410 DIRECTOR: Fix code formatting 2020-04-16 00:22:08 +02:00
Nathanael Gentry f1822511d5 DIRECTOR: LINGO: Implement moveableSprite of sprite 2020-04-16 00:21:05 +02:00
Nathanael Gentry 1ce36183bd DIRECTOR: JANITORIAL: Change spaces to tabs 2020-04-12 17:49:01 +02:00
Nathanael Gentry 9909097285 DIRECTOR: LINGO: Implement kTheLastRoll function 2020-04-12 17:49:01 +02:00
Nathanael Gentry 070b4266ed DIRECTOR: LINGO: Implement kTheLastEvent function 2020-04-12 17:49:01 +02:00
Nathanael Gentry 0e15e2f080 DIRECTOR: LINGO: Implement kTheLastClick function 2020-04-12 17:49:01 +02:00
Nathanael Gentry c5651d67a6 DIRECTOR: LINGO: Implement kTheLastKey function 2020-04-12 17:49:01 +02:00