feat: improve RenPy conversion and support MIST runtime
This commit is contained in:
1 parent
f7f7f5b1b3
commit
f9eb5c1212
44 files changed
+2822
-174
No files matched your search
@@ -69,6 +69,52 @@ test("a screen renders its widgets, conditions, loops and interpolated text", ()
|
||||
assert.equal(root.querySelector(".pg-sbtn").style.background, "#123", "style hud_button applies");
|
||||
});
|
||||
|
||||
test("ui.interact receives repeated Returns without hiding an existing screen", () => {
|
||||
const { manager, py } = setup();
|
||||
manager.show("hud");
|
||||
const before = manager.snapshot();
|
||||
const values = [];
|
||||
const builtins = manager.builtins();
|
||||
const cancel = manager.interact((value) => values.push(value));
|
||||
manager.run(builtins.Return("tick"), null);
|
||||
cancel();
|
||||
assert.deepEqual(values, ["tick"]);
|
||||
assert.deepEqual(manager.snapshot(), before);
|
||||
manager.interact((value) => values.push(value));
|
||||
manager.run(builtins.Return(0), null);
|
||||
assert.deepEqual(values, ["tick", 0]);
|
||||
const cancelled = manager.interact((value) => values.push(value));
|
||||
cancelled();
|
||||
manager.run(builtins.Return("stale"), null);
|
||||
assert.deepEqual(values, ["tick", 0]);
|
||||
manager.destroy();
|
||||
});
|
||||
|
||||
test("gallery buttons honor unlock conditions and close back to the same screen", () => {
|
||||
const { manager, py } = setup();
|
||||
const builtins = manager.builtins();
|
||||
const gallery = py.instantiate(builtins.Gallery, []);
|
||||
const invoke = (name, ...args) => builtins.Gallery.find(name).value(gallery, ...args);
|
||||
invoke("button", "art");
|
||||
invoke("image", "art.png");
|
||||
invoke("condition", "money > 10");
|
||||
const value = invoke("make_button", "art", "thumb.png", "locked.png");
|
||||
assert.equal(value.kw.sensitive, true);
|
||||
manager.show("hud");
|
||||
manager.run(value.kw.action, null);
|
||||
assert.ok(manager.layer.querySelector(".pg-gallery img[src='/f/art.png']"));
|
||||
const close = [...manager.layer.querySelectorAll(".pg-gallery button")].find((b) => b.textContent === "Закрыть");
|
||||
click(close);
|
||||
assert.equal(manager.layer.querySelector(".pg-gallery"), null);
|
||||
assert.equal(manager.snapshot()[0].name, "hud");
|
||||
py.scope.set("money", 0);
|
||||
assert.equal(invoke("Action", "art"), null);
|
||||
const locked = invoke("make_button", "art", "thumb.png", "locked.png");
|
||||
assert.equal(locked.kw.sensitive, false);
|
||||
assert.equal(locked.kw.idle, "locked.png");
|
||||
manager.destroy();
|
||||
});
|
||||
|
||||
test("conditions follow the game state when the screen refreshes", async () => {
|
||||
const { manager, store } = setup();
|
||||
manager.show("hud");
|
||||
|
||||
Reference in new issue
Block a user