super-patience 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package-lock.json +1356 -0
- package/dist/package.json +63 -0
- package/dist/public/atlas.webp +0 -0
- package/dist/public/favicon/favicon16.webp +0 -0
- package/dist/public/favicon/favicon192.webp +0 -0
- package/dist/public/favicon/favicon32.webp +0 -0
- package/dist/public/favicon/favicon48.webp +0 -0
- package/dist/public/favicon/favicon64.webp +0 -0
- package/dist/public/index.js +101 -0
- package/dist/public/index.js.map +7 -0
- package/dist/public/super-patience-v1.2.4+20251227.9c5b3f4.html +114 -0
- package/dist/src/assets/manifest.json +41 -0
- package/dist/src/assets/void.game.json +540 -0
- package/dist/src/ents/board.d.ts +7 -0
- package/dist/src/ents/board.d.ts.map +1 -0
- package/dist/src/ents/board.js +124 -0
- package/dist/src/ents/board.js.map +1 -0
- package/dist/src/ents/cam.d.ts +7 -0
- package/dist/src/ents/cam.d.ts.map +1 -0
- package/dist/src/ents/cam.js +9 -0
- package/dist/src/ents/cam.js.map +1 -0
- package/dist/src/ents/draw.d.ts +7 -0
- package/dist/src/ents/draw.d.ts.map +1 -0
- package/dist/src/ents/draw.js +12 -0
- package/dist/src/ents/draw.js.map +1 -0
- package/dist/src/ents/ent.d.ts +32 -0
- package/dist/src/ents/ent.d.ts.map +1 -0
- package/dist/src/ents/ent.js +2 -0
- package/dist/src/ents/ent.js.map +1 -0
- package/dist/src/ents/loader.d.ts +6 -0
- package/dist/src/ents/loader.d.ts.map +1 -0
- package/dist/src/ents/loader.js +43 -0
- package/dist/src/ents/loader.js.map +1 -0
- package/dist/src/ents/patience-the-demon.d.ts +7 -0
- package/dist/src/ents/patience-the-demon.d.ts.map +1 -0
- package/dist/src/ents/patience-the-demon.js +39 -0
- package/dist/src/ents/patience-the-demon.js.map +1 -0
- package/dist/src/ents/pile-hitbox.d.ts +8 -0
- package/dist/src/ents/pile-hitbox.d.ts.map +1 -0
- package/dist/src/ents/pile-hitbox.js +29 -0
- package/dist/src/ents/pile-hitbox.js.map +1 -0
- package/dist/src/ents/tally.d.ts +7 -0
- package/dist/src/ents/tally.d.ts.map +1 -0
- package/dist/src/ents/tally.js +11 -0
- package/dist/src/ents/tally.js.map +1 -0
- package/dist/src/ents/vacant-stock.d.ts +7 -0
- package/dist/src/ents/vacant-stock.d.ts.map +1 -0
- package/dist/src/ents/vacant-stock.js +15 -0
- package/dist/src/ents/vacant-stock.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +26 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/level/ent-factory.d.ts +4 -0
- package/dist/src/level/ent-factory.d.ts.map +1 -0
- package/dist/src/level/ent-factory.js +91 -0
- package/dist/src/level/ent-factory.js.map +1 -0
- package/dist/src/level/level-file.json +58 -0
- package/dist/src/level/level-parser.d.ts +5 -0
- package/dist/src/level/level-parser.d.ts.map +1 -0
- package/dist/src/level/level-parser.js +24 -0
- package/dist/src/level/level-parser.js.map +1 -0
- package/dist/src/level/level-schema.d.ts +6 -0
- package/dist/src/level/level-schema.d.ts.map +1 -0
- package/dist/src/level/level-schema.js +2 -0
- package/dist/src/level/level-schema.js.map +1 -0
- package/dist/src/level/level.d.ts +11 -0
- package/dist/src/level/level.d.ts.map +1 -0
- package/dist/src/level/level.js +102 -0
- package/dist/src/level/level.js.map +1 -0
- package/dist/src/types/decl.d.ts +31 -0
- package/dist/src/types/decl.d.ts.map +1 -0
- package/dist/src/types/decl.js +2 -0
- package/dist/src/types/decl.js.map +1 -0
- package/dist/src/types/save.d.ts +5 -0
- package/dist/src/types/save.d.ts.map +1 -0
- package/dist/src/types/save.js +2 -0
- package/dist/src/types/save.js.map +1 -0
- package/dist/tsconfig.json +47 -0
- package/dist/void.json +13 -0
- package/license.text +661 -0
- package/package.json +63 -0
- package/readme.md +30 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../../src/ents/board.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cam.d.ts","sourceRoot":"","sources":["../../../src/ents/cam.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAEtC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAErC,qBAAa,MAAO,YAAW,CAAC,CAAC,GAAG;IAClC,QAAQ,CAAC,KAAK,SAAQ;IAEtB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI;CAKtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cam.js","sourceRoot":"","sources":["../../../src/ents/cam.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,MAAM;IACR,KAAK,GAAG,KAAK,CAAA;IAEtB,MAAM,CAAC,IAAY,EAAE,CAAS;QAC5B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5D,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../../../src/ents/draw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAEtC,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAEvC,qBAAa,OAAQ,YAAW,CAAC,CAAC,GAAG;IACnC,QAAQ,CAAC,KAAK,UAAS;IAEvB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI;CAOvC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class DrawSys {
|
|
2
|
+
query = 'draw';
|
|
3
|
+
update(_ent, v) {
|
|
4
|
+
if (!v.invalid)
|
|
5
|
+
return;
|
|
6
|
+
v.renderer.clear(v.backgroundRGBA);
|
|
7
|
+
v.renderer.predraw(v.cam);
|
|
8
|
+
v.renderer.setDepth(true);
|
|
9
|
+
v.renderer.draw(v.pool.default);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=draw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draw.js","sourceRoot":"","sources":["../../../src/ents/draw.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,OAAO;IACT,KAAK,GAAG,MAAM,CAAA;IAEvB,MAAM,CAAC,IAAa,EAAE,CAAS;QAC7B,IAAI,CAAC,CAAC,CAAC,OAAO;YAAE,OAAM;QACtB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;QAClC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as V from '@oidoid/void';
|
|
2
|
+
import type { Suit } from 'klondike-solitaire';
|
|
3
|
+
import type { VacantStockEnt } from './vacant-stock.ts';
|
|
4
|
+
export type Board = {
|
|
5
|
+
cards: CardEnt[] | undefined;
|
|
6
|
+
selected: PickState;
|
|
7
|
+
piles: PileEnt[] | undefined;
|
|
8
|
+
vacantStock: VacantStockEnt | undefined;
|
|
9
|
+
};
|
|
10
|
+
export type CardEnt = V.QueryEnt<'card & sprite'>;
|
|
11
|
+
export type PatienceTheDemon = object;
|
|
12
|
+
export type PickState = {
|
|
13
|
+
sprite: V.Sprite;
|
|
14
|
+
/** the adjustment to offset future pick inputs by. */
|
|
15
|
+
offset: Readonly<V.XY>;
|
|
16
|
+
}[];
|
|
17
|
+
export type Pile = {
|
|
18
|
+
type: 'Foundation';
|
|
19
|
+
suit: Suit;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'Tableau';
|
|
22
|
+
x: number;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'Waste';
|
|
25
|
+
};
|
|
26
|
+
export type PileEnt = V.QueryEnt<'pile & sprite'>;
|
|
27
|
+
export type PileType = 'Foundation' | 'Tableau' | 'Waste';
|
|
28
|
+
export type Tally = {
|
|
29
|
+
tens: number;
|
|
30
|
+
};
|
|
31
|
+
export type VacantStock = object;
|
|
32
|
+
//# sourceMappingURL=ent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ent.d.ts","sourceRoot":"","sources":["../../../src/ents/ent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAA;AAErD,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IAC5B,WAAW,EAAE,cAAc,GAAG,SAAS,CAAA;CACxC,CAAA;AACD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;AACjD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAA;AACrC,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAA;IAChB,sDAAsD;IACtD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;CACvB,EAAE,CAAA;AACH,MAAM,MAAM,IAAI,GACZ;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,GAChC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,GAC5B;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,CAAA;AACnB,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;AAEjD,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,CAAA;AACzD,MAAM,MAAM,KAAK,GAAG;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAA;AAClC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ent.js","sourceRoot":"","sources":["../../../src/ents/ent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/ents/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAYtC,qBAAa,SAAU,YAAW,CAAC,CAAC,GAAG;IACrC,QAAQ,CAAC,KAAK,YAAW;IAEzB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI;CAY1C"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import levelJSON from '../assets/init.level.jsonc' with { type: 'json' };
|
|
2
|
+
import { newLevelComponents } from "../level/ent-factory.js";
|
|
3
|
+
import { parseLevel } from "../level/level-parser.js";
|
|
4
|
+
import { CamSys } from "./cam.js";
|
|
5
|
+
import { BoardSystem } from "./board.js";
|
|
6
|
+
import { DrawSys } from "./draw.js";
|
|
7
|
+
import { PatienceTheDemonSystem } from "./patience-the-demon.js";
|
|
8
|
+
import { PileHitboxSystem } from "./pile-hitbox.js";
|
|
9
|
+
import { TallySystem } from "./tally.js";
|
|
10
|
+
import { VacantStockSystem } from "./vacant-stock.js";
|
|
11
|
+
export class LoaderSys {
|
|
12
|
+
query = 'loader';
|
|
13
|
+
update(ent, v) {
|
|
14
|
+
switch (ent.loader.level) {
|
|
15
|
+
case undefined: {
|
|
16
|
+
init(ent, v);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
case 'Init':
|
|
20
|
+
return;
|
|
21
|
+
default:
|
|
22
|
+
ent.loader.level;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function init(ent, v) {
|
|
27
|
+
v.zoo.addDefaultSystems();
|
|
28
|
+
const level = parseLevel(levelJSON, v.pool, v.preload);
|
|
29
|
+
v.zoo.add(...level.ents, ...newLevelComponents(v), { draw: {} }); // to-do: support ent ordering. can't put this in level file right now.
|
|
30
|
+
v.spriteByCard = new Map([...v.zoo.query('card & sprite')].map(ent => [ent.card, ent.sprite]));
|
|
31
|
+
v.zoo.addSystem({
|
|
32
|
+
board: new BoardSystem(),
|
|
33
|
+
cam: new CamSys(),
|
|
34
|
+
draw: new DrawSys(),
|
|
35
|
+
patienceTheDemon: new PatienceTheDemonSystem(),
|
|
36
|
+
pile: new PileHitboxSystem(),
|
|
37
|
+
tally: new TallySystem(),
|
|
38
|
+
vacantStock: new VacantStockSystem()
|
|
39
|
+
});
|
|
40
|
+
// to-do: validate all ents on a system add.
|
|
41
|
+
ent.loader.level = 'Init';
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/ents/loader.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,4BAA4B,CAAC,OAAM,IAAI,EAAE,MAAM,EAAC,CAAA;AACtE,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAA;AACtC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,sBAAsB,EAAC,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAA;AACtC,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAA;AAEnD,MAAM,OAAO,SAAS;IACX,KAAK,GAAG,QAAQ,CAAA;IAEzB,MAAM,CAAC,GAAgB,EAAE,CAAS;QAChC,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACzB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;gBACZ,OAAM;YACR,CAAC;YACD,KAAK,MAAM;gBACT,OAAM;YACR;gBACE,GAAG,CAAC,MAAM,CAAC,KAAqB,CAAA;QACpC,CAAC;IACH,CAAC;CACF;AAED,SAAS,IAAI,CAAC,GAAgB,EAAE,CAAS;IACvC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;IACzB,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAC,IAAI,EAAE,EAAE,EAAC,CAAC,CAAA,CAAC,uEAAuE;IACtI,CAAC,CAAC,YAAY,GAAG,IAAI,GAAG,CACtB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CACrE,CAAA;IACD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QACd,KAAK,EAAE,IAAI,WAAW,EAAE;QACxB,GAAG,EAAE,IAAI,MAAM,EAAE;QACjB,IAAI,EAAE,IAAI,OAAO,EAAE;QACnB,gBAAgB,EAAE,IAAI,sBAAsB,EAAE;QAC9C,IAAI,EAAE,IAAI,gBAAgB,EAAE;QAC5B,KAAK,EAAE,IAAI,WAAW,EAAE;QACxB,WAAW,EAAE,IAAI,iBAAiB,EAAE;KACrC,CAAC,CAAA;IACF,4CAA4C;IAC5C,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAA;AAC3B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as V from '@oidoid/void';
|
|
2
|
+
export type PatienceTheDemonEnt = V.SysEnt<PatienceTheDemonSystem>;
|
|
3
|
+
export declare class PatienceTheDemonSystem implements V.Sys {
|
|
4
|
+
readonly query = "patienceTheDemon & sprite";
|
|
5
|
+
update(ent: PatienceTheDemonEnt, v: V.Void): void;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=patience-the-demon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patience-the-demon.d.ts","sourceRoot":"","sources":["../../../src/ents/patience-the-demon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAKjC,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAElE,qBAAa,sBAAuB,YAAW,CAAC,CAAC,GAAG;IAClD,QAAQ,CAAC,KAAK,+BAA8B;IAC5C,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI;CA6BlD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as V from '@oidoid/void';
|
|
2
|
+
import { solitaireReset } from 'klondike-solitaire';
|
|
3
|
+
import { saveKey } from '../types/save.js';
|
|
4
|
+
import { invalidateSolitaireSprites } from '../level/level.js';
|
|
5
|
+
export class PatienceTheDemonSystem {
|
|
6
|
+
query = 'patienceTheDemon & sprite';
|
|
7
|
+
update(ent, v) {
|
|
8
|
+
const millis = Date.now() % 60000;
|
|
9
|
+
const blink = millis < 59700 ? '' : 'Blink';
|
|
10
|
+
const good = ent.sprite.tag.includes('Good');
|
|
11
|
+
const align = v.input.isOffStart('A')
|
|
12
|
+
? good
|
|
13
|
+
? 'Evil'
|
|
14
|
+
: 'Good'
|
|
15
|
+
: good
|
|
16
|
+
? 'Good'
|
|
17
|
+
: 'Evil';
|
|
18
|
+
const tag = `patience-the-demon--${align}${blink}`;
|
|
19
|
+
if (ent.sprite.tag !== tag) {
|
|
20
|
+
ent.sprite.tag = tag;
|
|
21
|
+
ent.invalid = true;
|
|
22
|
+
}
|
|
23
|
+
if (!v.input.isOffStart('A'))
|
|
24
|
+
return;
|
|
25
|
+
if (v.zoo.cursor?.sprite.hitsZ(ent.sprite, v.cam)) {
|
|
26
|
+
// tail.
|
|
27
|
+
v.input.handled = true;
|
|
28
|
+
ent.invalid = true;
|
|
29
|
+
}
|
|
30
|
+
else if (v.zoo.cursor && ent.sprite.hitsZ(v.zoo.cursor.sprite, v.cam)) {
|
|
31
|
+
// anywhere else.
|
|
32
|
+
v.input.handled = true;
|
|
33
|
+
solitaireReset(v.solitaire);
|
|
34
|
+
V.saveJSON(saveKey, { wins: v.solitaire.wins });
|
|
35
|
+
invalidateSolitaireSprites(v);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=patience-the-demon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patience-the-demon.js","sourceRoot":"","sources":["../../../src/ents/patience-the-demon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAY,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAC,0BAA0B,EAAC,MAAM,mBAAmB,CAAA;AAI5D,MAAM,OAAO,sBAAsB;IACxB,KAAK,GAAG,2BAA2B,CAAA;IAC5C,MAAM,CAAC,GAAwB,EAAE,CAAS;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;QACjC,MAAM,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YACnC,CAAC,CAAC,IAAI;gBACJ,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM;YACV,CAAC,CAAC,IAAI;gBACJ,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM,CAAA;QACZ,MAAM,GAAG,GAAG,uBAAuB,KAAK,GAAG,KAAK,EAAW,CAAA;QAC3D,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;YACpB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;QACpB,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAM;QACpC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,QAAQ;YACR,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;YACtB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;QACpB,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACxE,iBAAiB;YACjB,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;YACtB,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;YAC3B,CAAC,CAAC,QAAQ,CAAO,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAC,CAAC,CAAA;YACnD,0BAA0B,CAAC,CAAC,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as V from '@oidoid/void';
|
|
2
|
+
export type PileHitboxEnt = V.SysEnt<PileHitboxSystem>;
|
|
3
|
+
/** size the pile's hitbox. */
|
|
4
|
+
export declare class PileHitboxSystem implements V.Sys {
|
|
5
|
+
readonly query = "pile & sprite";
|
|
6
|
+
update(ent: PileHitboxEnt, v: V.Void): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=pile-hitbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pile-hitbox.d.ts","sourceRoot":"","sources":["../../../src/ents/pile-hitbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAQtC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAEtD,8BAA8B;AAC9B,qBAAa,gBAAiB,YAAW,CAAC,CAAC,GAAG;IAC5C,QAAQ,CAAC,KAAK,mBAAkB;IAChC,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI;CAwB5C"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { cardWH, getFoundationCardXY, getTableauCardXY, mod } from "../level/level.js";
|
|
2
|
+
/** size the pile's hitbox. */
|
|
3
|
+
export class PileHitboxSystem {
|
|
4
|
+
query = 'pile & sprite';
|
|
5
|
+
update(ent, v) {
|
|
6
|
+
// to-do: why isn't this in the invalidateSolitaireSprites() fn? Seems like it
|
|
7
|
+
// only applies to those sprite queries. Or vice-versa. Why can't those be
|
|
8
|
+
// systems.
|
|
9
|
+
const { pile, sprite } = ent;
|
|
10
|
+
const xy = pile.type === 'Waste'
|
|
11
|
+
? { x: sprite.x + mod - 1, y: sprite.y + mod - 1 }
|
|
12
|
+
: pile.type === 'Tableau'
|
|
13
|
+
? getTableauCardXY(v.preload, pile.x, 0)
|
|
14
|
+
: getFoundationCardXY(v.preload, pile.suit);
|
|
15
|
+
sprite.x = xy.x - mod + 1;
|
|
16
|
+
sprite.y = xy.y - mod + 1;
|
|
17
|
+
sprite.w = cardWH.w + mod * 2 - 1;
|
|
18
|
+
sprite.h =
|
|
19
|
+
cardWH.h +
|
|
20
|
+
(pile.type === 'Waste'
|
|
21
|
+
? (v.solitaire.waste.length > 0 ? v.solitaire.drawSize - 1 : 0) * mod
|
|
22
|
+
: pile.type === 'Tableau'
|
|
23
|
+
? ((v.solitaire.tableau[pile.x]?.length ?? 1) - 1) * mod
|
|
24
|
+
: 0) +
|
|
25
|
+
mod * 2 -
|
|
26
|
+
1;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=pile-hitbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pile-hitbox.js","sourceRoot":"","sources":["../../../src/ents/pile-hitbox.ts"],"names":[],"mappings":"AACA,OAAO,EACL,MAAM,EACN,mBAAmB,EACnB,gBAAgB,EAChB,GAAG,EACJ,MAAM,mBAAmB,CAAA;AAI1B,8BAA8B;AAC9B,MAAM,OAAO,gBAAgB;IAClB,KAAK,GAAG,eAAe,CAAA;IAChC,MAAM,CAAC,GAAkB,EAAE,CAAS;QAClC,8EAA8E;QAC9E,0EAA0E;QAC1E,WAAW;QACX,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,GAAG,CAAA;QAC1B,MAAM,EAAE,GACN,IAAI,CAAC,IAAI,KAAK,OAAO;YACnB,CAAC,CAAC,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAC;YAChD,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;gBACvB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACjD,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;QACzB,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;QACzB,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACjC,MAAM,CAAC,CAAC;YACN,MAAM,CAAC,CAAC;gBACR,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;oBACpB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;oBACrE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;wBACvB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;wBACxD,CAAC,CAAC,CAAC,CAAC;gBACR,GAAG,GAAG,CAAC;gBACP,CAAC,CAAA;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tally.d.ts","sourceRoot":"","sources":["../../../src/ents/tally.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAOtC,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;AAE5C,qBAAa,WAAY,YAAW,CAAC,CAAC,GAAG;IACvC,QAAQ,CAAC,KAAK,oBAAmB;IACjC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI;CAYvC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { maxTallies } from "../level/ent-factory.js";
|
|
2
|
+
export class TallySystem {
|
|
3
|
+
query = 'sprite & tally';
|
|
4
|
+
update(ent, v) {
|
|
5
|
+
const max = maxTallies * 10;
|
|
6
|
+
const wins = (Math.min(10, Math.max(0, v.solitaire.wins - ent.tally.tens * 10)) +
|
|
7
|
+
Math.min(10, Math.max(0, v.solitaire.wins - max - ent.tally.tens * 10)));
|
|
8
|
+
ent.sprite.tag = `tally--${wins}`;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=tally.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tally.js","sourceRoot":"","sources":["../../../src/ents/tally.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAA;AAQlD,MAAM,OAAO,WAAW;IACb,KAAK,GAAG,gBAAgB,CAAA;IACjC,MAAM,CAAC,GAAa,EAAE,CAAS;QAC7B,MAAM,GAAG,GAAG,UAAU,GAAG,EAAE,CAAA;QAC3B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CACpB,EAAE,EACF,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CACpD;YACC,IAAI,CAAC,GAAG,CACN,EAAE,EACF,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAC1D,CAAiB,CAAA;QACpB,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE,CAAA;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type * as V from '@oidoid/void';
|
|
2
|
+
export type VacantStockEnt = V.SysEnt<VacantStockSystem>;
|
|
3
|
+
export declare class VacantStockSystem implements V.Sys {
|
|
4
|
+
readonly query = "sprite & vacantStock";
|
|
5
|
+
update(ent: VacantStockEnt, v: V.Void): void;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=vacant-stock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vacant-stock.d.ts","sourceRoot":"","sources":["../../../src/ents/vacant-stock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAItC,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAExD,qBAAa,iBAAkB,YAAW,CAAC,CAAC,GAAG;IAC7C,QAAQ,CAAC,KAAK,0BAAyB;IACvC,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI;CAO7C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { solitaireDeal } from 'klondike-solitaire';
|
|
2
|
+
import { invalidateSolitaireSprites } from "../level/level.js";
|
|
3
|
+
export class VacantStockSystem {
|
|
4
|
+
query = 'sprite & vacantStock';
|
|
5
|
+
update(ent, v) {
|
|
6
|
+
if (!v.input.isOffStart('A'))
|
|
7
|
+
return;
|
|
8
|
+
if (!v.zoo.cursor?.sprite.hitsZ(ent.sprite, v.cam))
|
|
9
|
+
return;
|
|
10
|
+
v.input.handled = true;
|
|
11
|
+
solitaireDeal(v.solitaire);
|
|
12
|
+
invalidateSolitaireSprites(v);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=vacant-stock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vacant-stock.js","sourceRoot":"","sources":["../../../src/ents/vacant-stock.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAC,0BAA0B,EAAC,MAAM,mBAAmB,CAAA;AAI5D,MAAM,OAAO,iBAAiB;IACnB,KAAK,GAAG,sBAAsB,CAAA;IACvC,MAAM,CAAC,GAAmB,EAAE,CAAS;QACnC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAM;QACpC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC;YAAE,OAAM;QAC1D,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;QACtB,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAC1B,0BAA0B,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as V from '@oidoid/void';
|
|
2
|
+
import { Solitaire } from 'klondike-solitaire';
|
|
3
|
+
import { description } from './assets/manifest.json'; // non-standard import to treeshake.
|
|
4
|
+
import config from './assets/void.game.json' with { type: 'json' };
|
|
5
|
+
import { LoaderSys } from "./ents/loader.js";
|
|
6
|
+
import { saveKey } from "./types/save.js";
|
|
7
|
+
console.debug(`Super Patience v${V.bundle.version}+${V.bundle.published}.${V.bundle.hash} ───oidoid>°──`);
|
|
8
|
+
const v = new V.Void({
|
|
9
|
+
config: config,
|
|
10
|
+
description,
|
|
11
|
+
preloadAtlas: document.querySelector('#atlas'),
|
|
12
|
+
loader: { loader: { level: undefined } },
|
|
13
|
+
loaderSys: new LoaderSys()
|
|
14
|
+
});
|
|
15
|
+
v.setPoller(60_000, () => V.millisUntilNext(new Date(), 'Min'));
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
v.requestFrame('Force');
|
|
18
|
+
setInterval(() => v.requestFrame('Force'), 60_000);
|
|
19
|
+
}, V.mod(V.millisUntilNext(new Date(), 'Min') + 59700, 60_000));
|
|
20
|
+
// h = 2 (border) + 71 (offset) + 8 * 7 (initial stack with a king on top) + 11 * 7 (Q-2) + (A) 32 - (dont care) 24 = 214
|
|
21
|
+
const save = V.loadJSON(saveKey) ?? { wins: 0 };
|
|
22
|
+
v.solitaire = Solitaire(() => v.random.num, save.wins);
|
|
23
|
+
await v.register('add');
|
|
24
|
+
if (V.debug)
|
|
25
|
+
globalThis.v = v;
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA,CAAC,oCAAoC;AACvF,OAAO,MAAM,MAAM,yBAAyB,CAAC,OAAM,IAAI,EAAE,MAAM,EAAC,CAAA;AAChE,OAAO,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAC,MAAM,iBAAiB,CAAA;AAElD,OAAO,CAAC,KAAK,CACX,mBAAmB,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAC3F,CAAA;AAED,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;IACnB,MAAM,EAAE,MAAsB;IAC9B,WAAW;IACX,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAmB,QAAQ,CAAC;IAChE,MAAM,EAAE,EAAC,MAAM,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,EAAC;IACpC,SAAS,EAAE,IAAI,SAAS,EAAE;CAC3B,CAAC,CAAA;AACF,CAAC,CAAC,SAAS,CAAC,MAAkB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;AAC3E,UAAU,CACR,GAAG,EAAE;IACH,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IACvB,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAA;AACpD,CAAC,EACD,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAC5D,CAAA;AACD,yHAAyH;AACzH,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAO,OAAO,CAAC,IAAI,EAAC,IAAI,EAAE,CAAC,EAAC,CAAA;AACnD,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AACtD,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACvB,IAAI,CAAC,CAAC,KAAK;IAAG,UAA2B,CAAC,CAAC,GAAG,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ent-factory.d.ts","sourceRoot":"","sources":["../../../src/level/ent-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAcjC,eAAO,MAAM,UAAU,EAAE,MAAW,CAAA;AAMpC,wBAAiB,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAMtE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import * as V from '@oidoid/void';
|
|
2
|
+
import { SuitSet } from 'klondike-solitaire';
|
|
3
|
+
import { getCardTag, getFoundationCardXY, getStockXY, getTableauCardXY, getWasteXY, mod } from "./level.js";
|
|
4
|
+
export const maxTallies = 26;
|
|
5
|
+
// these are dynamic ents based on the solitaire and tally models. it'd be neat
|
|
6
|
+
// to explore extending the parser and generating `EntSchema` below but it'd
|
|
7
|
+
// need to sync references to the `v.solitaire` model.
|
|
8
|
+
export function* newLevelComponents(v) {
|
|
9
|
+
yield* newTallies(v);
|
|
10
|
+
yield* newFoundation(v);
|
|
11
|
+
yield* newStock(v);
|
|
12
|
+
yield* newTableau(v);
|
|
13
|
+
yield* newWaste(v);
|
|
14
|
+
}
|
|
15
|
+
function CardEnt(v, card, xy) {
|
|
16
|
+
const sprite = v.pool.default.alloc();
|
|
17
|
+
sprite.tag = getCardTag(card);
|
|
18
|
+
sprite.x = xy.x;
|
|
19
|
+
sprite.y = xy.y;
|
|
20
|
+
sprite.z = card.direction === 'Up' ? V.Layer.F : V.Layer.E;
|
|
21
|
+
return { sprite, card };
|
|
22
|
+
}
|
|
23
|
+
function* newFoundation(v) {
|
|
24
|
+
for (const suit of SuitSet) {
|
|
25
|
+
const vacant = v.pool.default.alloc();
|
|
26
|
+
vacant.tag = `card--Vacant${suit}`;
|
|
27
|
+
const xy = getFoundationCardXY(v.preload, suit);
|
|
28
|
+
vacant.x = xy.x;
|
|
29
|
+
vacant.y = xy.y;
|
|
30
|
+
vacant.z = V.Layer.D;
|
|
31
|
+
yield { sprite: vacant };
|
|
32
|
+
const palette = v.pool.default.alloc();
|
|
33
|
+
palette.tag = 'palette--Light';
|
|
34
|
+
palette.x = xy.x;
|
|
35
|
+
palette.y = xy.y;
|
|
36
|
+
palette.z = V.Layer.C;
|
|
37
|
+
yield { sprite: palette, pile: { type: 'Foundation', suit } };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function* newStock(v) {
|
|
41
|
+
const vacant = v.pool.default.alloc();
|
|
42
|
+
vacant.tag = 'card--VacantStock';
|
|
43
|
+
vacant.z = V.Layer.C;
|
|
44
|
+
const xy = getStockXY(v.solitaire, v.solitaire.stock.length - 1);
|
|
45
|
+
vacant.x = xy.x;
|
|
46
|
+
vacant.y = xy.y;
|
|
47
|
+
yield { id: 'VacantStock', sprite: vacant, vacantStock: {} };
|
|
48
|
+
for (const [i, card] of v.solitaire.stock.entries())
|
|
49
|
+
yield CardEnt(v, card, getStockXY(v.solitaire, i));
|
|
50
|
+
}
|
|
51
|
+
function* newTableau(v) {
|
|
52
|
+
for (const [iX, pile] of v.solitaire.tableau.entries()) {
|
|
53
|
+
const x = iX;
|
|
54
|
+
const palette = v.pool.default.alloc();
|
|
55
|
+
palette.tag = 'palette--Light';
|
|
56
|
+
palette.z = V.Layer.C;
|
|
57
|
+
const xy = getTableauCardXY(v.preload, x, 0);
|
|
58
|
+
palette.x = xy.x;
|
|
59
|
+
palette.y = xy.y;
|
|
60
|
+
yield { sprite: palette, pile: { type: 'Tableau', x } };
|
|
61
|
+
const vacant = v.pool.default.alloc();
|
|
62
|
+
vacant.tag = 'card--VacantPile';
|
|
63
|
+
vacant.z = V.Layer.D;
|
|
64
|
+
vacant.x = xy.x;
|
|
65
|
+
vacant.y = xy.y;
|
|
66
|
+
yield { sprite: vacant };
|
|
67
|
+
for (const [iY, card] of pile.entries())
|
|
68
|
+
yield CardEnt(v, card, getTableauCardXY(v.preload, x, iY));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function* newTallies(v) {
|
|
72
|
+
for (let i = 0; i < maxTallies; i++) {
|
|
73
|
+
const sprite = v.pool.default.alloc();
|
|
74
|
+
sprite.tag = 'tally--0';
|
|
75
|
+
sprite.z = V.Layer.D;
|
|
76
|
+
yield {
|
|
77
|
+
sprite,
|
|
78
|
+
tally: { tens: i },
|
|
79
|
+
hud: {
|
|
80
|
+
modulo: { x: mod, y: mod },
|
|
81
|
+
origin: 'NE',
|
|
82
|
+
margin: { n: 8 + i * 8, s: 8 + i * 8, w: 0, e: 0 }
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function* newWaste(v) {
|
|
88
|
+
for (const [i, card] of v.solitaire.waste.entries())
|
|
89
|
+
yield CardEnt(v, card, getWasteXY(v.solitaire, i));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=ent-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ent-factory.js","sourceRoot":"","sources":["../../../src/level/ent-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/oidoid/super-patience/refs/heads/main/src/level/level-file.json",
|
|
4
|
+
"allOf": [{ "$ref": "https://oidoid.github.io/void/level-file.v0.json" }],
|
|
5
|
+
"$defs": {
|
|
6
|
+
"Board": { "type": "object", "description": "board config." },
|
|
7
|
+
"Ent": {
|
|
8
|
+
"allOf": [
|
|
9
|
+
{ "$ref": "https://oidoid.github.io/void/level-file.v0.json#/$defs/Ent" },
|
|
10
|
+
{
|
|
11
|
+
"type": "object",
|
|
12
|
+
"properties": {
|
|
13
|
+
"board": { "$ref": "#/$defs/Board", "unevaluatedProperties": false },
|
|
14
|
+
"patienceTheDemon": {
|
|
15
|
+
"$ref": "#/$defs/PatienceTheDemon",
|
|
16
|
+
"unevaluatedProperties": false
|
|
17
|
+
},
|
|
18
|
+
"pile": { "$ref": "#/$defs/Pile", "unevaluatedProperties": false },
|
|
19
|
+
"tally": { "$ref": "#/$defs/Tally", "unevaluatedProperties": false }
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"$comment": "to-do: `\"$dynamicAnchor\": \"Ent\"`."
|
|
24
|
+
},
|
|
25
|
+
"Pile": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"description": "pile config.",
|
|
28
|
+
"properties": {
|
|
29
|
+
"type": { "description": "pile type.", "enum": ["Waste"] }
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"PatienceTheDemon": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"description": "Patience the Demon config."
|
|
35
|
+
},
|
|
36
|
+
"Tag": {
|
|
37
|
+
"$ref": "https://oidoid.github.io/void/level-file.v0.json#/$defs/Tag",
|
|
38
|
+
"$comment": "to-do: `\"$dynamicAnchor\": \"Tag\"` and populate tags from tools/void.ts."
|
|
39
|
+
},
|
|
40
|
+
"Tally": { "type": "object", "description": "tally config." }
|
|
41
|
+
},
|
|
42
|
+
"unevaluatedProperties": false,
|
|
43
|
+
"properties": {
|
|
44
|
+
"ents": {
|
|
45
|
+
"allOf": [
|
|
46
|
+
{
|
|
47
|
+
"$ref": "https://oidoid.github.io/void/level-file.v0.json#/properties/ents"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"items": {
|
|
51
|
+
"$dynamicRef": "#Ent",
|
|
52
|
+
"$ref": "#/$defs/Ent",
|
|
53
|
+
"$comment": "to-do: delete root properties once dynamic refs are supported.",
|
|
54
|
+
"unevaluatedProperties": false
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as V from '@oidoid/void';
|
|
2
|
+
export declare function parseLevel(json: Readonly<V.LevelSchema>, pools: Readonly<V.PoolMap>, atlas: Readonly<V.Atlas>): V.Level;
|
|
3
|
+
/** @internal */
|
|
4
|
+
export declare const parseComponent: V.ComponentHook;
|
|
5
|
+
//# sourceMappingURL=level-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level-parser.d.ts","sourceRoot":"","sources":["../../../src/level/level-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAEjC,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,EAC7B,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAC1B,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GACvB,CAAC,CAAC,KAAK,CAET;AAED,gBAAgB;AAChB,eAAO,MAAM,cAAc,EAAE,CAAC,CAAC,aAiB9B,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as V from '@oidoid/void';
|
|
2
|
+
export function parseLevel(json, pools, atlas) {
|
|
3
|
+
return V.parseLevel(json, pools, parseComponent, atlas);
|
|
4
|
+
}
|
|
5
|
+
/** @internal */
|
|
6
|
+
export const parseComponent = (_ent, json, k) => {
|
|
7
|
+
if (json[k] == null)
|
|
8
|
+
throw Error('no component val');
|
|
9
|
+
switch (k) {
|
|
10
|
+
case 'cam':
|
|
11
|
+
case 'draw':
|
|
12
|
+
case 'patienceTheDemon':
|
|
13
|
+
case 'pile':
|
|
14
|
+
return json[k];
|
|
15
|
+
case 'board':
|
|
16
|
+
return {
|
|
17
|
+
cards: undefined,
|
|
18
|
+
piles: undefined,
|
|
19
|
+
selected: [],
|
|
20
|
+
vacantStock: undefined
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=level-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level-parser.js","sourceRoot":"","sources":["../../../src/level/level-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAEjC,MAAM,UAAU,UAAU,CACxB,IAA6B,EAC7B,KAA0B,EAC1B,KAAwB;IAExB,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;IAC/D,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI;QAAE,MAAM,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACpD,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,kBAAkB,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,CAAC,CAA2B,CAAA;QAE1C,KAAK,OAAO;YACV,OAAO;gBACL,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,SAAS;aACG,CAAA;IAC/B,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level-schema.d.ts","sourceRoot":"","sources":["../../../src/level/level-schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAChC,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAA;AAC3C,MAAM,MAAM,UAAU,GAAG;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level-schema.js","sourceRoot":"","sources":["../../../src/level/level-schema.ts"],"names":[],"mappings":""}
|