feat: player runtime for the Phone library and That New Teacher
Named stores (PyNamespace: dotted access, functions that see their own store first, restored after a
save is loaded), real generators run step by step (next, send, yield as an expression), len/bool through
__len__/__bool__, os/calendar/itertools/pygame_sdl2 helpers, Skip and ToggleLocalVariable actions,
text tags {glitch} and {wave} and plain display of explode/gradient/ruby, SnowBlossom and anim.Blink,
RoundedCorners as a transform, transforms listed in `at`, ATL choice weights that are flags, and
renpy.image_size from the converter's picture sizes.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
83cc7fdd5c
commit
11f87df712
15 files changed
+457
-24
No files matched your search
@@ -294,3 +294,25 @@ test("a redraw keeps the playing video, and one held down button is not rebuilt
|
||||
window.dispatchEvent(new window.Event("pointerup"));
|
||||
await wait(30);
|
||||
});
|
||||
|
||||
test("a redraw queued before pointerdown preserves the Return button until click", async () => {
|
||||
const { manager } = setup();
|
||||
const returned = [];
|
||||
try {
|
||||
manager.show("shop", ["skipped"], {}, { call: true, onReturn: (value) => returned.push(value) });
|
||||
const button = buttons(manager.layer).find((element) => element.textContent === "Cancel");
|
||||
manager.refresh(); // MIST's movie timer (or hover) queues the next frame.
|
||||
window.dispatchEvent(new window.Event("pointerdown"));
|
||||
await settle();
|
||||
assert.equal(button.isConnected, true, "a queued redraw must also respect a held pointer");
|
||||
window.dispatchEvent(new window.Event("pointerup"));
|
||||
click(button);
|
||||
assert.deepEqual(returned, [null]);
|
||||
await settle();
|
||||
assert.notEqual(buttons(manager.layer).find((element) => element.textContent === "Cancel"), button,
|
||||
"the deferred redraw runs after the click");
|
||||
} finally {
|
||||
window.dispatchEvent(new window.Event("pointercancel"));
|
||||
manager.destroy();
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user