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.
Files changed (83) hide show
  1. package/dist/package-lock.json +1356 -0
  2. package/dist/package.json +63 -0
  3. package/dist/public/atlas.webp +0 -0
  4. package/dist/public/favicon/favicon16.webp +0 -0
  5. package/dist/public/favicon/favicon192.webp +0 -0
  6. package/dist/public/favicon/favicon32.webp +0 -0
  7. package/dist/public/favicon/favicon48.webp +0 -0
  8. package/dist/public/favicon/favicon64.webp +0 -0
  9. package/dist/public/index.js +101 -0
  10. package/dist/public/index.js.map +7 -0
  11. package/dist/public/super-patience-v1.2.4+20251227.9c5b3f4.html +114 -0
  12. package/dist/src/assets/manifest.json +41 -0
  13. package/dist/src/assets/void.game.json +540 -0
  14. package/dist/src/ents/board.d.ts +7 -0
  15. package/dist/src/ents/board.d.ts.map +1 -0
  16. package/dist/src/ents/board.js +124 -0
  17. package/dist/src/ents/board.js.map +1 -0
  18. package/dist/src/ents/cam.d.ts +7 -0
  19. package/dist/src/ents/cam.d.ts.map +1 -0
  20. package/dist/src/ents/cam.js +9 -0
  21. package/dist/src/ents/cam.js.map +1 -0
  22. package/dist/src/ents/draw.d.ts +7 -0
  23. package/dist/src/ents/draw.d.ts.map +1 -0
  24. package/dist/src/ents/draw.js +12 -0
  25. package/dist/src/ents/draw.js.map +1 -0
  26. package/dist/src/ents/ent.d.ts +32 -0
  27. package/dist/src/ents/ent.d.ts.map +1 -0
  28. package/dist/src/ents/ent.js +2 -0
  29. package/dist/src/ents/ent.js.map +1 -0
  30. package/dist/src/ents/loader.d.ts +6 -0
  31. package/dist/src/ents/loader.d.ts.map +1 -0
  32. package/dist/src/ents/loader.js +43 -0
  33. package/dist/src/ents/loader.js.map +1 -0
  34. package/dist/src/ents/patience-the-demon.d.ts +7 -0
  35. package/dist/src/ents/patience-the-demon.d.ts.map +1 -0
  36. package/dist/src/ents/patience-the-demon.js +39 -0
  37. package/dist/src/ents/patience-the-demon.js.map +1 -0
  38. package/dist/src/ents/pile-hitbox.d.ts +8 -0
  39. package/dist/src/ents/pile-hitbox.d.ts.map +1 -0
  40. package/dist/src/ents/pile-hitbox.js +29 -0
  41. package/dist/src/ents/pile-hitbox.js.map +1 -0
  42. package/dist/src/ents/tally.d.ts +7 -0
  43. package/dist/src/ents/tally.d.ts.map +1 -0
  44. package/dist/src/ents/tally.js +11 -0
  45. package/dist/src/ents/tally.js.map +1 -0
  46. package/dist/src/ents/vacant-stock.d.ts +7 -0
  47. package/dist/src/ents/vacant-stock.d.ts.map +1 -0
  48. package/dist/src/ents/vacant-stock.js +15 -0
  49. package/dist/src/ents/vacant-stock.js.map +1 -0
  50. package/dist/src/index.d.ts +2 -0
  51. package/dist/src/index.d.ts.map +1 -0
  52. package/dist/src/index.js +26 -0
  53. package/dist/src/index.js.map +1 -0
  54. package/dist/src/level/ent-factory.d.ts +4 -0
  55. package/dist/src/level/ent-factory.d.ts.map +1 -0
  56. package/dist/src/level/ent-factory.js +91 -0
  57. package/dist/src/level/ent-factory.js.map +1 -0
  58. package/dist/src/level/level-file.json +58 -0
  59. package/dist/src/level/level-parser.d.ts +5 -0
  60. package/dist/src/level/level-parser.d.ts.map +1 -0
  61. package/dist/src/level/level-parser.js +24 -0
  62. package/dist/src/level/level-parser.js.map +1 -0
  63. package/dist/src/level/level-schema.d.ts +6 -0
  64. package/dist/src/level/level-schema.d.ts.map +1 -0
  65. package/dist/src/level/level-schema.js +2 -0
  66. package/dist/src/level/level-schema.js.map +1 -0
  67. package/dist/src/level/level.d.ts +11 -0
  68. package/dist/src/level/level.d.ts.map +1 -0
  69. package/dist/src/level/level.js +102 -0
  70. package/dist/src/level/level.js.map +1 -0
  71. package/dist/src/types/decl.d.ts +31 -0
  72. package/dist/src/types/decl.d.ts.map +1 -0
  73. package/dist/src/types/decl.js +2 -0
  74. package/dist/src/types/decl.js.map +1 -0
  75. package/dist/src/types/save.d.ts +5 -0
  76. package/dist/src/types/save.d.ts.map +1 -0
  77. package/dist/src/types/save.js +2 -0
  78. package/dist/src/types/save.js.map +1 -0
  79. package/dist/tsconfig.json +47 -0
  80. package/dist/void.json +13 -0
  81. package/license.text +661 -0
  82. package/package.json +63 -0
  83. package/readme.md +30 -0
@@ -0,0 +1,540 @@
1
+ {
2
+ "atlas": {
3
+ "anim": {
4
+ "background--Grid": { "cels": 1, "h": 8, "id": 0, "w": 8 },
5
+ "background--Corner": { "cels": 1, "h": 8, "id": 1, "w": 8 },
6
+ "background--Checkerboard": { "cels": 1, "h": 8, "id": 2, "w": 8 },
7
+ "card--CA": {
8
+ "cels": 1,
9
+ "h": 32,
10
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
11
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
12
+ "id": 3,
13
+ "w": 24
14
+ },
15
+ "card--C2": {
16
+ "cels": 1,
17
+ "h": 32,
18
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
19
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
20
+ "id": 4,
21
+ "w": 24
22
+ },
23
+ "card--C3": {
24
+ "cels": 1,
25
+ "h": 32,
26
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
27
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
28
+ "id": 5,
29
+ "w": 24
30
+ },
31
+ "card--C4": {
32
+ "cels": 1,
33
+ "h": 32,
34
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
35
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
36
+ "id": 6,
37
+ "w": 24
38
+ },
39
+ "card--C5": {
40
+ "cels": 1,
41
+ "h": 32,
42
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
43
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
44
+ "id": 7,
45
+ "w": 24
46
+ },
47
+ "card--C6": {
48
+ "cels": 1,
49
+ "h": 32,
50
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
51
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
52
+ "id": 8,
53
+ "w": 24
54
+ },
55
+ "card--C7": {
56
+ "cels": 1,
57
+ "h": 32,
58
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
59
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
60
+ "id": 9,
61
+ "w": 24
62
+ },
63
+ "card--C8": {
64
+ "cels": 1,
65
+ "h": 32,
66
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
67
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
68
+ "id": 10,
69
+ "w": 24
70
+ },
71
+ "card--C9": {
72
+ "cels": 1,
73
+ "h": 32,
74
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
75
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
76
+ "id": 11,
77
+ "w": 24
78
+ },
79
+ "card--C10": {
80
+ "cels": 1,
81
+ "h": 32,
82
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
83
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
84
+ "id": 12,
85
+ "w": 24
86
+ },
87
+ "card--CJ": {
88
+ "cels": 1,
89
+ "h": 32,
90
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
91
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
92
+ "id": 13,
93
+ "w": 24
94
+ },
95
+ "card--CQ": {
96
+ "cels": 1,
97
+ "h": 32,
98
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
99
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
100
+ "id": 14,
101
+ "w": 24
102
+ },
103
+ "card--CK": {
104
+ "cels": 1,
105
+ "h": 32,
106
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
107
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
108
+ "id": 15,
109
+ "w": 24
110
+ },
111
+ "card--DA": {
112
+ "cels": 1,
113
+ "h": 32,
114
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
115
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
116
+ "id": 16,
117
+ "w": 24
118
+ },
119
+ "card--D2": {
120
+ "cels": 1,
121
+ "h": 32,
122
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
123
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
124
+ "id": 17,
125
+ "w": 24
126
+ },
127
+ "card--D3": {
128
+ "cels": 1,
129
+ "h": 32,
130
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
131
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
132
+ "id": 18,
133
+ "w": 24
134
+ },
135
+ "card--D4": {
136
+ "cels": 1,
137
+ "h": 32,
138
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
139
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
140
+ "id": 19,
141
+ "w": 24
142
+ },
143
+ "card--D5": {
144
+ "cels": 1,
145
+ "h": 32,
146
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
147
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
148
+ "id": 20,
149
+ "w": 24
150
+ },
151
+ "card--D6": {
152
+ "cels": 1,
153
+ "h": 32,
154
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
155
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
156
+ "id": 21,
157
+ "w": 24
158
+ },
159
+ "card--D7": {
160
+ "cels": 1,
161
+ "h": 32,
162
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
163
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
164
+ "id": 22,
165
+ "w": 24
166
+ },
167
+ "card--D8": {
168
+ "cels": 1,
169
+ "h": 32,
170
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
171
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
172
+ "id": 23,
173
+ "w": 24
174
+ },
175
+ "card--D9": {
176
+ "cels": 1,
177
+ "h": 32,
178
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
179
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
180
+ "id": 24,
181
+ "w": 24
182
+ },
183
+ "card--D10": {
184
+ "cels": 1,
185
+ "h": 32,
186
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
187
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
188
+ "id": 25,
189
+ "w": 24
190
+ },
191
+ "card--DJ": {
192
+ "cels": 1,
193
+ "h": 32,
194
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
195
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
196
+ "id": 26,
197
+ "w": 24
198
+ },
199
+ "card--DQ": {
200
+ "cels": 1,
201
+ "h": 32,
202
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
203
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
204
+ "id": 27,
205
+ "w": 24
206
+ },
207
+ "card--DK": {
208
+ "cels": 1,
209
+ "h": 32,
210
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
211
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
212
+ "id": 28,
213
+ "w": 24
214
+ },
215
+ "card--HA": {
216
+ "cels": 1,
217
+ "h": 32,
218
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
219
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
220
+ "id": 29,
221
+ "w": 24
222
+ },
223
+ "card--H2": {
224
+ "cels": 1,
225
+ "h": 32,
226
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
227
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
228
+ "id": 30,
229
+ "w": 24
230
+ },
231
+ "card--H3": {
232
+ "cels": 1,
233
+ "h": 32,
234
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
235
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
236
+ "id": 31,
237
+ "w": 24
238
+ },
239
+ "card--H4": {
240
+ "cels": 1,
241
+ "h": 32,
242
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
243
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
244
+ "id": 32,
245
+ "w": 24
246
+ },
247
+ "card--H5": {
248
+ "cels": 1,
249
+ "h": 32,
250
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
251
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
252
+ "id": 33,
253
+ "w": 24
254
+ },
255
+ "card--H6": {
256
+ "cels": 1,
257
+ "h": 32,
258
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
259
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
260
+ "id": 34,
261
+ "w": 24
262
+ },
263
+ "card--H7": {
264
+ "cels": 1,
265
+ "h": 32,
266
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
267
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
268
+ "id": 35,
269
+ "w": 24
270
+ },
271
+ "card--H8": {
272
+ "cels": 1,
273
+ "h": 32,
274
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
275
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
276
+ "id": 36,
277
+ "w": 24
278
+ },
279
+ "card--H9": {
280
+ "cels": 1,
281
+ "h": 32,
282
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
283
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
284
+ "id": 37,
285
+ "w": 24
286
+ },
287
+ "card--H10": {
288
+ "cels": 1,
289
+ "h": 32,
290
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
291
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
292
+ "id": 38,
293
+ "w": 24
294
+ },
295
+ "card--HJ": {
296
+ "cels": 1,
297
+ "h": 32,
298
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
299
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
300
+ "id": 39,
301
+ "w": 24
302
+ },
303
+ "card--HQ": {
304
+ "cels": 1,
305
+ "h": 32,
306
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
307
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
308
+ "id": 40,
309
+ "w": 24
310
+ },
311
+ "card--HK": {
312
+ "cels": 1,
313
+ "h": 32,
314
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
315
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
316
+ "id": 41,
317
+ "w": 24
318
+ },
319
+ "card--SA": {
320
+ "cels": 1,
321
+ "h": 32,
322
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
323
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
324
+ "id": 42,
325
+ "w": 24
326
+ },
327
+ "card--S2": {
328
+ "cels": 1,
329
+ "h": 32,
330
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
331
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
332
+ "id": 43,
333
+ "w": 24
334
+ },
335
+ "card--S3": {
336
+ "cels": 1,
337
+ "h": 32,
338
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
339
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
340
+ "id": 44,
341
+ "w": 24
342
+ },
343
+ "card--S4": {
344
+ "cels": 1,
345
+ "h": 32,
346
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
347
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
348
+ "id": 45,
349
+ "w": 24
350
+ },
351
+ "card--S5": {
352
+ "cels": 1,
353
+ "h": 32,
354
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
355
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
356
+ "id": 46,
357
+ "w": 24
358
+ },
359
+ "card--S6": {
360
+ "cels": 1,
361
+ "h": 32,
362
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
363
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
364
+ "id": 47,
365
+ "w": 24
366
+ },
367
+ "card--S7": {
368
+ "cels": 1,
369
+ "h": 32,
370
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
371
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
372
+ "id": 48,
373
+ "w": 24
374
+ },
375
+ "card--S8": {
376
+ "cels": 1,
377
+ "h": 32,
378
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
379
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
380
+ "id": 49,
381
+ "w": 24
382
+ },
383
+ "card--S9": {
384
+ "cels": 1,
385
+ "h": 32,
386
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
387
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
388
+ "id": 50,
389
+ "w": 24
390
+ },
391
+ "card--S10": {
392
+ "cels": 1,
393
+ "h": 32,
394
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
395
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
396
+ "id": 51,
397
+ "w": 24
398
+ },
399
+ "card--SJ": {
400
+ "cels": 1,
401
+ "h": 32,
402
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
403
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
404
+ "id": 52,
405
+ "w": 24
406
+ },
407
+ "card--SQ": {
408
+ "cels": 1,
409
+ "h": 32,
410
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
411
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
412
+ "id": 53,
413
+ "w": 24
414
+ },
415
+ "card--SK": {
416
+ "cels": 1,
417
+ "h": 32,
418
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
419
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
420
+ "id": 54,
421
+ "w": 24
422
+ },
423
+ "card--Down": {
424
+ "cels": 1,
425
+ "h": 32,
426
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
427
+ "hurtbox": { "x": 0, "y": 0, "w": 24, "h": 32 },
428
+ "id": 55,
429
+ "w": 24
430
+ },
431
+ "card--VacantPile": { "cels": 1, "h": 32, "id": 56, "w": 24 },
432
+ "card--VacantStock": {
433
+ "cels": 1,
434
+ "h": 32,
435
+ "hitbox": { "x": 4, "y": 7, "w": 16, "h": 16 },
436
+ "hurtbox": { "x": 4, "y": 7, "w": 16, "h": 16 },
437
+ "id": 57,
438
+ "w": 24
439
+ },
440
+ "card--VacantClubs": { "cels": 1, "h": 32, "id": 58, "w": 24 },
441
+ "card--VacantDiamonds": { "cels": 1, "h": 32, "id": 59, "w": 24 },
442
+ "card--VacantHearts": { "cels": 1, "h": 32, "id": 60, "w": 24 },
443
+ "card--VacantSpades": { "cels": 1, "h": 32, "id": 61, "w": 24 },
444
+ "card--OutlineFocus": { "cels": 1, "h": 32, "id": 62, "w": 24 },
445
+ "card--OutlineChecked": { "cels": 1, "h": 32, "id": 63, "w": 24 },
446
+ "cursor--Point": {
447
+ "cels": 1,
448
+ "h": 16,
449
+ "hitbox": { "x": 0, "y": 0, "w": 3, "h": 3 },
450
+ "hurtbox": { "x": 0, "y": 0, "w": 3, "h": 3 },
451
+ "id": 64,
452
+ "w": 16
453
+ },
454
+ "cursor--Pick": {
455
+ "cels": 1,
456
+ "h": 16,
457
+ "hitbox": { "x": 0, "y": 0, "w": 3, "h": 3 },
458
+ "hurtbox": { "x": 0, "y": 0, "w": 3, "h": 3 },
459
+ "id": 65,
460
+ "w": 16
461
+ },
462
+ "palette--Alpha": { "cels": 1, "h": 8, "id": 66, "w": 8 },
463
+ "palette--Dark": { "cels": 1, "h": 8, "id": 67, "w": 8 },
464
+ "palette--Mid": { "cels": 1, "h": 8, "id": 68, "w": 8 },
465
+ "palette--Light": { "cels": 1, "h": 8, "id": 69, "w": 8 },
466
+ "patience-the-demon--Good": {
467
+ "cels": 1,
468
+ "h": 24,
469
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 24 },
470
+ "hurtbox": { "x": 0, "y": 0, "w": 7, "h": 10 },
471
+ "id": 70,
472
+ "w": 24
473
+ },
474
+ "patience-the-demon--GoodBlink": {
475
+ "cels": 1,
476
+ "h": 24,
477
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 24 },
478
+ "id": 71,
479
+ "w": 24
480
+ },
481
+ "patience-the-demon--Evil": {
482
+ "cels": 1,
483
+ "h": 24,
484
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 24 },
485
+ "hurtbox": { "x": 0, "y": 0, "w": 7, "h": 10 },
486
+ "id": 72,
487
+ "w": 24
488
+ },
489
+ "patience-the-demon--EvilBlink": {
490
+ "cels": 1,
491
+ "h": 24,
492
+ "hitbox": { "x": 0, "y": 0, "w": 24, "h": 24 },
493
+ "id": 73,
494
+ "w": 24
495
+ },
496
+ "tally--0": { "cels": 1, "h": 8, "id": 74, "w": 16 },
497
+ "tally--1": { "cels": 1, "h": 8, "id": 75, "w": 16 },
498
+ "tally--2": { "cels": 1, "h": 8, "id": 76, "w": 16 },
499
+ "tally--3": { "cels": 1, "h": 8, "id": 77, "w": 16 },
500
+ "tally--4": { "cels": 1, "h": 8, "id": 78, "w": 16 },
501
+ "tally--5": { "cels": 1, "h": 8, "id": 79, "w": 16 },
502
+ "tally--6": { "cels": 1, "h": 8, "id": 80, "w": 16 },
503
+ "tally--7": { "cels": 1, "h": 8, "id": 81, "w": 16 },
504
+ "tally--8": { "cels": 1, "h": 8, "id": 82, "w": 16 },
505
+ "tally--9": { "cels": 1, "h": 8, "id": 83, "w": 16 },
506
+ "tally--10": { "cels": 1, "h": 8, "id": 84, "w": 16 },
507
+ "tally--11": { "cels": 1, "h": 8, "id": 85, "w": 16 },
508
+ "tally--12": { "cels": 1, "h": 8, "id": 86, "w": 16 },
509
+ "tally--13": { "cels": 1, "h": 8, "id": 87, "w": 16 },
510
+ "tally--14": { "cels": 1, "h": 8, "id": 88, "w": 16 },
511
+ "tally--15": { "cels": 1, "h": 8, "id": 89, "w": 16 },
512
+ "tally--16": { "cels": 1, "h": 8, "id": 90, "w": 16 },
513
+ "tally--17": { "cels": 1, "h": 8, "id": 91, "w": 16 },
514
+ "tally--18": { "cels": 1, "h": 8, "id": 92, "w": 16 },
515
+ "tally--19": { "cels": 1, "h": 8, "id": 93, "w": 16 },
516
+ "tally--20": { "cels": 1, "h": 8, "id": 94, "w": 16 }
517
+ },
518
+ "celXY": [
519
+ 112, 240, 104, 240, 96, 240, 168, 96, 192, 96, 0, 128, 24, 128, 48, 128,
520
+ 72, 128, 96, 128, 120, 128, 144, 128, 168, 128, 192, 128, 0, 160, 24, 160,
521
+ 48, 160, 72, 160, 96, 160, 120, 160, 144, 160, 168, 160, 192, 160, 0, 192,
522
+ 24, 192, 48, 192, 72, 192, 96, 192, 120, 192, 144, 192, 120, 96, 168, 32,
523
+ 24, 0, 48, 0, 72, 0, 96, 0, 120, 0, 144, 0, 168, 0, 192, 0, 0, 32, 24, 32,
524
+ 48, 32, 72, 32, 96, 32, 120, 32, 144, 32, 0, 0, 192, 32, 0, 64, 24, 64,
525
+ 48, 64, 72, 64, 96, 64, 120, 64, 144, 64, 168, 64, 192, 64, 0, 96, 24, 96,
526
+ 48, 96, 72, 96, 96, 96, 144, 96, 16, 224, 0, 224, 88, 240, 80, 240, 160,
527
+ 232, 160, 224, 168, 192, 168, 216, 192, 216, 192, 192, 64, 240, 48, 240,
528
+ 32, 240, 16, 240, 0, 240, 144, 232, 128, 232, 128, 224, 96, 224, 32, 224,
529
+ 48, 224, 64, 224, 80, 224, 144, 224, 32, 232, 48, 232, 64, 232, 80, 232,
530
+ 96, 232, 112, 232, 112, 224
531
+ ]
532
+ },
533
+ "init": {
534
+ "input": "Default",
535
+ "minWH": { "w": 256, "h": 214 },
536
+ "minScale": 1,
537
+ "mode": "Int",
538
+ "zoomOut": 0
539
+ }
540
+ }
@@ -0,0 +1,7 @@
1
+ import * as V from '@oidoid/void';
2
+ export type BoardEnt = V.SysEnt<BoardSystem>;
3
+ export declare class BoardSystem implements V.Sys {
4
+ readonly query = "board";
5
+ update(ent: BoardEnt, v: V.Void): void;
6
+ }
7
+ //# sourceMappingURL=board.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../../src/ents/board.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAYjC,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;AAE5C,qBAAa,WAAY,YAAW,CAAC,CAAC,GAAG;IACvC,QAAQ,CAAC,KAAK,WAAU;IAGxB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI;CAuDvC"}
@@ -0,0 +1,124 @@
1
+ import * as V from '@oidoid/void';
2
+ import { solitaireBuild, solitaireDeselect, solitaireIsBuildable, solitairePoint } from 'klondike-solitaire';
3
+ import { invalidateSolitaireSprites } from '../level/level.js';
4
+ export class BoardSystem {
5
+ query = 'board';
6
+ // to-do: assumes will be called every _frame_ to _invalidate_.
7
+ update(ent, v) {
8
+ if (v.input.handled)
9
+ return;
10
+ ent.board.cards ??= [...v.zoo.query('card & sprite')];
11
+ ent.board.piles ??= [...v.zoo.query('pile & sprite')];
12
+ if (!ent.board.vacantStock)
13
+ ent.board.vacantStock = v.zoo.findById('VacantStock');
14
+ const picked = pick(ent, v);
15
+ const isStockPick = picked?.sprite.hitsZ(ent.board.vacantStock.sprite, v.cam);
16
+ if (picked != null &&
17
+ !ent.board.selected.length &&
18
+ ((!isStockPick && v.input.isOnStart('A')) ||
19
+ (isStockPick && v.input.isOffStart('A')))) {
20
+ v.input.handled = true;
21
+ setSelected(ent, v, picked.card);
22
+ }
23
+ if (v.input.isOn('A') && ent.board.selected.length > 0) {
24
+ v.input.handled = true; // dragging.
25
+ moveEntsToCursor(v, ent.board.selected);
26
+ }
27
+ else
28
+ // only rerender if pick operation is done otherwise cards snap too fast
29
+ // in the reserve.
30
+ invalidateSolitaireSprites(v);
31
+ if (v.solitaire.selected != null && v.input.isOffStart('A')) {
32
+ // drag finished.
33
+ v.input.handled = true;
34
+ if (ent.board.selected.length) {
35
+ const dropped = drop(ent, v);
36
+ if (dropped != null &&
37
+ v.solitaire.selected != null &&
38
+ dropped.pile.type !== 'Waste')
39
+ solitaireBuild(v.solitaire, dropped.pile);
40
+ solitaireDeselect(v.solitaire);
41
+ ent.board.selected.length = 0;
42
+ }
43
+ else {
44
+ const picked = pick(ent, v);
45
+ if (picked == null)
46
+ solitaireDeselect(v.solitaire);
47
+ else
48
+ solitairePoint(v.solitaire, picked.card);
49
+ }
50
+ invalidateSolitaireSprites(v);
51
+ }
52
+ }
53
+ }
54
+ function drop(boardEnt, v) {
55
+ const pick = boardEnt.board.selected[0];
56
+ if (pick == null)
57
+ return;
58
+ let drop;
59
+ for (const ent of boardEnt.board.piles) {
60
+ const overlap = intersection(pick.sprite, ent.sprite); // .hitbox
61
+ if (overlap.w <= 0 ||
62
+ overlap.h <= 0 ||
63
+ ent.pile.type === 'Waste' ||
64
+ !solitaireIsBuildable(v.solitaire, ent.pile))
65
+ continue;
66
+ const area = overlap.w * overlap.h;
67
+ if (drop == null || area > drop.area)
68
+ drop = { area, ent };
69
+ }
70
+ return drop?.ent;
71
+ }
72
+ function intersection(lhs, rhs) {
73
+ const x = Math.max(lhs.x, rhs.x);
74
+ const y = Math.max(lhs.y, rhs.y);
75
+ return {
76
+ x,
77
+ y,
78
+ w: Math.min(lhs.x + lhs.w, rhs.x + rhs.w) - x,
79
+ h: Math.min(lhs.y + lhs.h, rhs.y + rhs.h) - y
80
+ };
81
+ }
82
+ function pick(boardEnt, v) {
83
+ let picked;
84
+ for (const ent of boardEnt.board.cards) {
85
+ if (!v.zoo.cursor?.sprite.hitsZ(ent.sprite, v.cam))
86
+ continue;
87
+ if (picked == null || ent.sprite.above(picked.sprite))
88
+ picked = ent;
89
+ }
90
+ return picked;
91
+ }
92
+ function moveEntsToCursor(v, selected) {
93
+ if (!v.zoo.cursor)
94
+ return;
95
+ for (const pick of selected) {
96
+ pick.sprite.x = Math.trunc(v.zoo.cursor.sprite.x) - pick.offset.x;
97
+ pick.sprite.y = Math.trunc(v.zoo.cursor.sprite.y) - pick.offset.y;
98
+ }
99
+ }
100
+ function setSelected(ent, v, card) {
101
+ const selection = solitairePoint(v.solitaire, card);
102
+ if (selection == null)
103
+ return;
104
+ const selected = selection.cards.map(card => {
105
+ const sprite = v.spriteByCard.get(card);
106
+ if (!sprite)
107
+ throw Error('no sprite');
108
+ if (!v.zoo.cursor)
109
+ throw Error('no cursor');
110
+ return {
111
+ sprite,
112
+ offset: {
113
+ x: Math.trunc(v.zoo.cursor.sprite.x) - sprite.x,
114
+ y: Math.trunc(v.zoo.cursor.sprite.y) - sprite.y
115
+ }
116
+ };
117
+ });
118
+ // elevate the selection to the pick layer.
119
+ for (const select of selected)
120
+ select.sprite.z = V.Layer.G;
121
+ ent.board.selected.length = 0;
122
+ ent.board.selected.push(...selected);
123
+ }
124
+ //# sourceMappingURL=board.js.map