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,11 @@
|
|
|
1
|
+
import * as V from '@oidoid/void';
|
|
2
|
+
import { type Card, type Solitaire, type Suit } from 'klondike-solitaire';
|
|
3
|
+
export declare const mod: number;
|
|
4
|
+
export declare const cardWH: V.WH;
|
|
5
|
+
export declare function invalidateSolitaireSprites(v: V.Void): void;
|
|
6
|
+
export declare function getStockXY(solitaire: Readonly<Solitaire>, iY: number): V.XY;
|
|
7
|
+
export declare function getWasteXY(solitaire: Readonly<Solitaire>, i: number): V.XY;
|
|
8
|
+
export declare function getFoundationCardXY(atlas: V.Atlas, suit: Suit): V.XY;
|
|
9
|
+
export declare function getTableauCardXY(atlas: V.Atlas, iX: number, iY: number): V.XY;
|
|
10
|
+
export declare function getCardTag(card: Card): V.Tag;
|
|
11
|
+
//# sourceMappingURL=level.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../../src/level/level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EACL,KAAK,IAAI,EAET,KAAK,SAAS,EACd,KAAK,IAAI,EACV,MAAM,oBAAoB,CAAA;AAE3B,eAAO,MAAM,GAAG,EAAE,MAAU,CAAA;AAC5B,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC,EAAmB,CAAA;AAS1C,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CA6D1D;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAQ3E;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAW1E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,CAIpE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAG7E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAE5C"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as V from '@oidoid/void';
|
|
2
|
+
import { cardToASCII } from 'klondike-solitaire';
|
|
3
|
+
export const mod = 8;
|
|
4
|
+
export const cardWH = { w: 24, h: 32 };
|
|
5
|
+
const tableauY = 72;
|
|
6
|
+
const boardX = 2 * mod;
|
|
7
|
+
const boardY = 16;
|
|
8
|
+
const hiddenY = -1024;
|
|
9
|
+
// to-do: can this be a system or systems? It seems like it's a "board" system
|
|
10
|
+
// but has some overlap with `BoardSys` which calls these functions.
|
|
11
|
+
export function invalidateSolitaireSprites(v) {
|
|
12
|
+
for (const [iX, col] of v.solitaire.tableau.entries()) {
|
|
13
|
+
for (const [iY, card] of col.entries()) {
|
|
14
|
+
const sprite = v.spriteByCard.get(card);
|
|
15
|
+
if (!sprite)
|
|
16
|
+
throw Error('no sprite');
|
|
17
|
+
const xy = getTableauCardXY(v.preload, iX, iY);
|
|
18
|
+
sprite.x = xy.x;
|
|
19
|
+
sprite.y = xy.y;
|
|
20
|
+
sprite.z = card.direction === 'Up' ? V.Layer.F : V.Layer.E;
|
|
21
|
+
sprite.tag = getCardTag(card);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
for (const pillar of v.solitaire.foundation) {
|
|
25
|
+
for (const [i, card] of pillar.entries()) {
|
|
26
|
+
const sprite = v.spriteByCard.get(card);
|
|
27
|
+
if (!sprite)
|
|
28
|
+
throw Error('no sprite');
|
|
29
|
+
const xy = getFoundationCardXY(v.preload, card.suit);
|
|
30
|
+
sprite.x = xy.x;
|
|
31
|
+
sprite.y = xy.y;
|
|
32
|
+
// Force all cards except the top to downward since they're in the exact
|
|
33
|
+
// same position and are not layered correctly for rendering.
|
|
34
|
+
const tag = i === pillar.length - 1 ? getCardTag(card) : 'card--Down';
|
|
35
|
+
sprite.z = tag === 'card--Down' ? V.Layer.E : V.Layer.F;
|
|
36
|
+
sprite.tag = tag;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
for (const [i, card] of v.solitaire.stock.entries()) {
|
|
40
|
+
const sprite = v.spriteByCard.get(card);
|
|
41
|
+
if (!sprite)
|
|
42
|
+
throw Error('no sprite');
|
|
43
|
+
const xy = getStockXY(v.solitaire, i);
|
|
44
|
+
sprite.x = xy.x;
|
|
45
|
+
sprite.y = xy.y;
|
|
46
|
+
sprite.z = card.direction === 'Up' ? V.Layer.F : V.Layer.E;
|
|
47
|
+
sprite.tag = getCardTag(card);
|
|
48
|
+
}
|
|
49
|
+
for (const [i, card] of v.solitaire.waste.entries()) {
|
|
50
|
+
const sprite = v.spriteByCard.get(card);
|
|
51
|
+
if (!sprite)
|
|
52
|
+
throw Error('no sprite');
|
|
53
|
+
const xy = getWasteXY(v.solitaire, i);
|
|
54
|
+
sprite.x = xy.x;
|
|
55
|
+
sprite.y = xy.y;
|
|
56
|
+
let tag;
|
|
57
|
+
const selected = v.solitaire.selected?.pile === 'Waste'
|
|
58
|
+
? (v.solitaire.selected?.cards.length ?? 0)
|
|
59
|
+
: 0;
|
|
60
|
+
const top = Math.max(v.solitaire.waste.length + selected - v.solitaire.drawSize, 0);
|
|
61
|
+
if (i >= top)
|
|
62
|
+
tag = getCardTag(card);
|
|
63
|
+
else
|
|
64
|
+
tag = 'card--Down';
|
|
65
|
+
// hide waste under the draw reserve. I can't draw them in the correct
|
|
66
|
+
// order since they have identical XYs.
|
|
67
|
+
sprite.z = tag === 'card--Down' ? V.Layer.E : V.Layer.F;
|
|
68
|
+
sprite.tag = tag;
|
|
69
|
+
}
|
|
70
|
+
// to-do: don't invalidate every frame.
|
|
71
|
+
v.invalid = true; // to-do: move somewhere else.
|
|
72
|
+
}
|
|
73
|
+
export function getStockXY(solitaire, iY) {
|
|
74
|
+
return {
|
|
75
|
+
x: boardX + 160,
|
|
76
|
+
// All cards in the stock are at the same point and on the same layer. Only
|
|
77
|
+
// the top card should be pickable though so hide the rest off-cam since
|
|
78
|
+
// they're not drawn in the correct order.
|
|
79
|
+
y: boardY + (solitaire.stock.length - 1 === iY ? 0 : hiddenY)
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export function getWasteXY(solitaire, i) {
|
|
83
|
+
const selected = solitaire.selected?.pile === 'Waste'
|
|
84
|
+
? (solitaire.selected?.cards.length ?? 0)
|
|
85
|
+
: 0;
|
|
86
|
+
const top = Math.max(solitaire.waste.length + selected - solitaire.drawSize, 0);
|
|
87
|
+
const mul = Math.max(i - top, 0);
|
|
88
|
+
return { x: 208, y: boardY + mul * mod };
|
|
89
|
+
}
|
|
90
|
+
export function getFoundationCardXY(atlas, suit) {
|
|
91
|
+
const anim = atlas.anim[`card--Vacant${suit}`];
|
|
92
|
+
const mul = { Clubs: 0, Diamonds: 1, Hearts: 2, Spades: 3 }[suit];
|
|
93
|
+
return { x: boardX + mod * 4 + mul * (anim.w + mod), y: boardY };
|
|
94
|
+
}
|
|
95
|
+
export function getTableauCardXY(atlas, iX, iY) {
|
|
96
|
+
const anim = atlas.anim['card--VacantPile'];
|
|
97
|
+
return { x: boardX + iX * (anim.w + mod), y: tableauY + iY * mod };
|
|
98
|
+
}
|
|
99
|
+
export function getCardTag(card) {
|
|
100
|
+
return card.direction === 'Up' ? `card--${cardToASCII(card)}` : 'card--Down';
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=level.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level.js","sourceRoot":"","sources":["../../../src/level/level.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Card, Solitaire } from 'klondike-solitaire';
|
|
2
|
+
import type { Board, PatienceTheDemon, Pile, Tally, VacantStock } from '../ents/ent.ts';
|
|
3
|
+
import type { BoardSchema, PatienceTheDemonSchema, PileSchema } from '../level/level-schema.ts';
|
|
4
|
+
import type * as V from '@oidoid/void';
|
|
5
|
+
import type gameJSON from '../assets/void.game.json';
|
|
6
|
+
declare module '@oidoid/void' {
|
|
7
|
+
interface Ent {
|
|
8
|
+
board?: Board;
|
|
9
|
+
card?: Card;
|
|
10
|
+
patienceTheDemon?: PatienceTheDemon;
|
|
11
|
+
pile?: Pile;
|
|
12
|
+
tally?: Tally;
|
|
13
|
+
vacantStock?: VacantStock;
|
|
14
|
+
}
|
|
15
|
+
interface EntSchema {
|
|
16
|
+
board?: BoardSchema;
|
|
17
|
+
patienceTheDemon?: PatienceTheDemonSchema;
|
|
18
|
+
pile?: PileSchema;
|
|
19
|
+
}
|
|
20
|
+
interface Loader {
|
|
21
|
+
level: undefined | 'Init';
|
|
22
|
+
}
|
|
23
|
+
interface ReturnTag {
|
|
24
|
+
(): keyof typeof gameJSON.atlas.anim;
|
|
25
|
+
}
|
|
26
|
+
interface Void {
|
|
27
|
+
solitaire: Solitaire;
|
|
28
|
+
spriteByCard: Map<Card, V.Sprite>;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=decl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decl.d.ts","sourceRoot":"","sources":["../../../src/types/decl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,IAAI,EACJ,KAAK,EACL,WAAW,EACZ,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,UAAU,EACX,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AAEpD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,GAAG;QACX,KAAK,CAAC,EAAE,KAAK,CAAA;QACb,IAAI,CAAC,EAAE,IAAI,CAAA;QACX,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;QACnC,IAAI,CAAC,EAAE,IAAI,CAAA;QACX,KAAK,CAAC,EAAE,KAAK,CAAA;QACb,WAAW,CAAC,EAAE,WAAW,CAAA;KAC1B;IAED,UAAU,SAAS;QACjB,KAAK,CAAC,EAAE,WAAW,CAAA;QACnB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,IAAI,CAAC,EAAE,UAAU,CAAA;KAClB;IAED,UAAU,MAAM;QACd,KAAK,EAAE,SAAS,GAAG,MAAM,CAAA;KAC1B;IAED,UAAU,SAAS;QAEjB,IAAI,MAAM,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAA;KACrC;IAED,UAAU,IAAI;QACZ,SAAS,EAAE,SAAS,CAAA;QACpB,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;KAClC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decl.js","sourceRoot":"","sources":["../../../src/types/decl.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../src/types/save.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAA;AACjC,eAAO,MAAM,OAAO,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../../src/types/save.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
// enable incremental builds.
|
|
4
|
+
"composite": true,
|
|
5
|
+
// enable type-stripping.
|
|
6
|
+
"allowImportingTsExtensions": true,
|
|
7
|
+
// only allow type-strippable syntax.
|
|
8
|
+
"erasableSyntaxOnly": true,
|
|
9
|
+
// maximize type checking.
|
|
10
|
+
"allowUnreachableCode": false,
|
|
11
|
+
"allowUnusedLabels": false,
|
|
12
|
+
"exactOptionalPropertyTypes": true,
|
|
13
|
+
"forceConsistentCasingInFileNames": true,
|
|
14
|
+
"noImplicitOverride": true,
|
|
15
|
+
"noUncheckedIndexedAccess": true,
|
|
16
|
+
"noUncheckedSideEffectImports": true,
|
|
17
|
+
"noUnusedLocals": true,
|
|
18
|
+
"resolveJsonModule": true,
|
|
19
|
+
"strict": true,
|
|
20
|
+
// projects add types needed.
|
|
21
|
+
"lib": ["DOM", "ES2024", "ESNext.disposable"],
|
|
22
|
+
"types": [],
|
|
23
|
+
"isolatedDeclarations": true, // require explicit types.
|
|
24
|
+
// improve compatibility with compilers that aren't type system aware.
|
|
25
|
+
"isolatedModules": true,
|
|
26
|
+
"esModuleInterop": true, // use ESM.
|
|
27
|
+
// allow JSON type-checking and imports.
|
|
28
|
+
"module": "ESNext",
|
|
29
|
+
"moduleResolution": "Bundler",
|
|
30
|
+
"rewriteRelativeImportExtensions": true, // rewrite .ts imports to .js.
|
|
31
|
+
"outDir": "dist",
|
|
32
|
+
// assume library types are checked and compatible.
|
|
33
|
+
"skipLibCheck": true,
|
|
34
|
+
"skipDefaultLibCheck": true,
|
|
35
|
+
"sourceMap": true,
|
|
36
|
+
"declarationMap": true, // map back to original sources, not .d.ts.
|
|
37
|
+
"target": "ES2024",
|
|
38
|
+
"tsBuildInfoFile": "dist/tsconfig.tsbuildinfo",
|
|
39
|
+
// don't transform type-only imports.
|
|
40
|
+
"verbatimModuleSyntax": true,
|
|
41
|
+
"paths": {
|
|
42
|
+
"@oidoid/void": ["../void"]
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"include": ["./", "**/*.json"],
|
|
46
|
+
"exclude": ["dist/", "node_modules/"]
|
|
47
|
+
}
|
package/dist/void.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://oidoid.github.io/void/config-file.v0.json",
|
|
3
|
+
"out": {
|
|
4
|
+
"name": "super-patience",
|
|
5
|
+
"dir": "dist/public/",
|
|
6
|
+
"game": "src/assets/void.game.json"
|
|
7
|
+
},
|
|
8
|
+
"preloadAtlas": {
|
|
9
|
+
"dir": "src/assets/atlas/",
|
|
10
|
+
"image": "dist/public/atlas.webp"
|
|
11
|
+
},
|
|
12
|
+
"init": { "minWH": { "w": 256, "h": 214 } }
|
|
13
|
+
}
|