sliver-engine 0.0.1-alpha.0
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/README.md +99 -0
- package/dist/Assets/Shapes/Arrow.d.ts +12 -0
- package/dist/Assets/Shapes/Arrow.d.ts.map +1 -0
- package/dist/Assets/Shapes/Arrow.js +32 -0
- package/dist/Assets/Shapes/Arrow.js.map +1 -0
- package/dist/Assets/Shapes/index.d.ts +4 -0
- package/dist/Assets/Shapes/index.d.ts.map +1 -0
- package/dist/Assets/Shapes/index.js +2 -0
- package/dist/Assets/Shapes/index.js.map +1 -0
- package/dist/CanvasController/SpriteLibrary.d.ts +27 -0
- package/dist/CanvasController/SpriteLibrary.d.ts.map +1 -0
- package/dist/CanvasController/SpriteLibrary.js +113 -0
- package/dist/CanvasController/SpriteLibrary.js.map +1 -0
- package/dist/CanvasController/Transformations.d.ts +5 -0
- package/dist/CanvasController/Transformations.d.ts.map +1 -0
- package/dist/CanvasController/Transformations.js +19 -0
- package/dist/CanvasController/Transformations.js.map +1 -0
- package/dist/CanvasController/index.d.ts +214 -0
- package/dist/CanvasController/index.d.ts.map +1 -0
- package/dist/CanvasController/index.js +347 -0
- package/dist/CanvasController/index.js.map +1 -0
- package/dist/Context/index.d.ts +53 -0
- package/dist/Context/index.d.ts.map +1 -0
- package/dist/Context/index.js +103 -0
- package/dist/Context/index.js.map +1 -0
- package/dist/Events/decorators.d.ts +61 -0
- package/dist/Events/decorators.d.ts.map +1 -0
- package/dist/Events/decorators.js +368 -0
- package/dist/Events/decorators.js.map +1 -0
- package/dist/Events/index.d.ts +50 -0
- package/dist/Events/index.d.ts.map +1 -0
- package/dist/Events/index.js +73 -0
- package/dist/Events/index.js.map +1 -0
- package/dist/Events/keyAccumulator.d.ts +9 -0
- package/dist/Events/keyAccumulator.d.ts.map +1 -0
- package/dist/Events/keyAccumulator.js +17 -0
- package/dist/Events/keyAccumulator.js.map +1 -0
- package/dist/Game/Saves/index.d.ts +39 -0
- package/dist/Game/Saves/index.d.ts.map +1 -0
- package/dist/Game/Saves/index.js +213 -0
- package/dist/Game/Saves/index.js.map +1 -0
- package/dist/Game/index.d.ts +45 -0
- package/dist/Game/index.d.ts.map +1 -0
- package/dist/Game/index.js +101 -0
- package/dist/Game/index.js.map +1 -0
- package/dist/GameObject/Decorators/index.d.ts +8 -0
- package/dist/GameObject/Decorators/index.d.ts.map +1 -0
- package/dist/GameObject/Decorators/index.js +65 -0
- package/dist/GameObject/Decorators/index.js.map +1 -0
- package/dist/GameObject/Hitboxes/ColisionHandler.d.ts +23 -0
- package/dist/GameObject/Hitboxes/ColisionHandler.d.ts.map +1 -0
- package/dist/GameObject/Hitboxes/ColisionHandler.js +458 -0
- package/dist/GameObject/Hitboxes/ColisionHandler.js.map +1 -0
- package/dist/GameObject/Hitboxes/index.d.ts +50 -0
- package/dist/GameObject/Hitboxes/index.d.ts.map +1 -0
- package/dist/GameObject/Hitboxes/index.js +306 -0
- package/dist/GameObject/Hitboxes/index.js.map +1 -0
- package/dist/GameObject/Library/Button.d.ts +15 -0
- package/dist/GameObject/Library/Button.d.ts.map +1 -0
- package/dist/GameObject/Library/Button.js +45 -0
- package/dist/GameObject/Library/Button.js.map +1 -0
- package/dist/GameObject/Library/Clickableshape.d.ts +14 -0
- package/dist/GameObject/Library/Clickableshape.d.ts.map +1 -0
- package/dist/GameObject/Library/Clickableshape.js +36 -0
- package/dist/GameObject/Library/Clickableshape.js.map +1 -0
- package/dist/GameObject/Library/FloatingView.d.ts +20 -0
- package/dist/GameObject/Library/FloatingView.d.ts.map +1 -0
- package/dist/GameObject/Library/FloatingView.js +39 -0
- package/dist/GameObject/Library/FloatingView.js.map +1 -0
- package/dist/GameObject/Library/Group.d.ts +8 -0
- package/dist/GameObject/Library/Group.d.ts.map +1 -0
- package/dist/GameObject/Library/Group.js +26 -0
- package/dist/GameObject/Library/Group.js.map +1 -0
- package/dist/GameObject/Library/HoverableShape.d.ts +15 -0
- package/dist/GameObject/Library/HoverableShape.d.ts.map +1 -0
- package/dist/GameObject/Library/HoverableShape.js +41 -0
- package/dist/GameObject/Library/HoverableShape.js.map +1 -0
- package/dist/GameObject/Library/SceneTranslator.d.ts +14 -0
- package/dist/GameObject/Library/SceneTranslator.d.ts.map +1 -0
- package/dist/GameObject/Library/SceneTranslator.js +104 -0
- package/dist/GameObject/Library/SceneTranslator.js.map +1 -0
- package/dist/GameObject/Library/ScrollView.d.ts +41 -0
- package/dist/GameObject/Library/ScrollView.d.ts.map +1 -0
- package/dist/GameObject/Library/ScrollView.js +112 -0
- package/dist/GameObject/Library/ScrollView.js.map +1 -0
- package/dist/GameObject/Library/ShowOnHover.d.ts +13 -0
- package/dist/GameObject/Library/ShowOnHover.d.ts.map +1 -0
- package/dist/GameObject/Library/ShowOnHover.js +33 -0
- package/dist/GameObject/Library/ShowOnHover.js.map +1 -0
- package/dist/GameObject/Library/Text.d.ts +25 -0
- package/dist/GameObject/Library/Text.d.ts.map +1 -0
- package/dist/GameObject/Library/Text.js +35 -0
- package/dist/GameObject/Library/Text.js.map +1 -0
- package/dist/GameObject/Library/TextBox.d.ts +86 -0
- package/dist/GameObject/Library/TextBox.d.ts.map +1 -0
- package/dist/GameObject/Library/TextBox.js +344 -0
- package/dist/GameObject/Library/TextBox.js.map +1 -0
- package/dist/GameObject/Library/index.d.ts +11 -0
- package/dist/GameObject/Library/index.d.ts.map +1 -0
- package/dist/GameObject/Library/index.js +11 -0
- package/dist/GameObject/Library/index.js.map +1 -0
- package/dist/GameObject/Walker.d.ts +66 -0
- package/dist/GameObject/Walker.d.ts.map +1 -0
- package/dist/GameObject/Walker.js +461 -0
- package/dist/GameObject/Walker.js.map +1 -0
- package/dist/GameObject/index.d.ts +97 -0
- package/dist/GameObject/index.d.ts.map +1 -0
- package/dist/GameObject/index.js +368 -0
- package/dist/GameObject/index.js.map +1 -0
- package/dist/Lib/Math.d.ts +2 -0
- package/dist/Lib/Math.d.ts.map +1 -0
- package/dist/Lib/Math.js +4 -0
- package/dist/Lib/Math.js.map +1 -0
- package/dist/Lib/MinHeap/index.d.ts +12 -0
- package/dist/Lib/MinHeap/index.d.ts.map +1 -0
- package/dist/Lib/MinHeap/index.js +64 -0
- package/dist/Lib/MinHeap/index.js.map +1 -0
- package/dist/Lib/PathfindingProxy/index.d.ts +16 -0
- package/dist/Lib/PathfindingProxy/index.d.ts.map +1 -0
- package/dist/Lib/PathfindingProxy/index.js +48 -0
- package/dist/Lib/PathfindingProxy/index.js.map +1 -0
- package/dist/Lib/Vector/index.d.ts +24 -0
- package/dist/Lib/Vector/index.d.ts.map +1 -0
- package/dist/Lib/Vector/index.js +94 -0
- package/dist/Lib/Vector/index.js.map +1 -0
- package/dist/Lib/index.d.ts +5 -0
- package/dist/Lib/index.d.ts.map +1 -0
- package/dist/Lib/index.js +5 -0
- package/dist/Lib/index.js.map +1 -0
- package/dist/Scenes/SceneManager/Transitions.d.ts +37 -0
- package/dist/Scenes/SceneManager/Transitions.d.ts.map +1 -0
- package/dist/Scenes/SceneManager/Transitions.js +165 -0
- package/dist/Scenes/SceneManager/Transitions.js.map +1 -0
- package/dist/Scenes/SceneManager/index.d.ts +24 -0
- package/dist/Scenes/SceneManager/index.d.ts.map +1 -0
- package/dist/Scenes/SceneManager/index.js +136 -0
- package/dist/Scenes/SceneManager/index.js.map +1 -0
- package/dist/Scenes/index.d.ts +36 -0
- package/dist/Scenes/index.d.ts.map +1 -0
- package/dist/Scenes/index.js +196 -0
- package/dist/Scenes/index.js.map +1 -0
- package/dist/ScriptedEvents/Combinators.d.ts +17 -0
- package/dist/ScriptedEvents/Combinators.d.ts.map +1 -0
- package/dist/ScriptedEvents/Combinators.js +127 -0
- package/dist/ScriptedEvents/Combinators.js.map +1 -0
- package/dist/ScriptedEvents/Library/TextBoxSequence.d.ts +13 -0
- package/dist/ScriptedEvents/Library/TextBoxSequence.d.ts.map +1 -0
- package/dist/ScriptedEvents/Library/TextBoxSequence.js +41 -0
- package/dist/ScriptedEvents/Library/TextBoxSequence.js.map +1 -0
- package/dist/ScriptedEvents/Library/WalkCharacter.d.ts +4 -0
- package/dist/ScriptedEvents/Library/WalkCharacter.d.ts.map +1 -0
- package/dist/ScriptedEvents/Library/WalkCharacter.js +14 -0
- package/dist/ScriptedEvents/Library/WalkCharacter.js.map +1 -0
- package/dist/ScriptedEvents/index.d.ts +38 -0
- package/dist/ScriptedEvents/index.d.ts.map +1 -0
- package/dist/ScriptedEvents/index.js +58 -0
- package/dist/ScriptedEvents/index.js.map +1 -0
- package/dist/SoundManager/index.d.ts +69 -0
- package/dist/SoundManager/index.d.ts.map +1 -0
- package/dist/SoundManager/index.js +208 -0
- package/dist/SoundManager/index.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
const getLocalStorage = () => {
|
|
2
|
+
if (typeof window === "undefined") {
|
|
3
|
+
return null;
|
|
4
|
+
}
|
|
5
|
+
try {
|
|
6
|
+
return window.localStorage ?? null;
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
const encodeUtf8ToBase64 = (value) => {
|
|
13
|
+
// Prefer Node/Bun (tests, tooling) if available.
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
|
+
const maybeBuffer = globalThis.Buffer;
|
|
16
|
+
if (maybeBuffer) {
|
|
17
|
+
return maybeBuffer.from(value, "utf-8").toString("base64");
|
|
18
|
+
}
|
|
19
|
+
if (typeof TextEncoder !== "undefined" && typeof btoa !== "undefined") {
|
|
20
|
+
const bytes = new TextEncoder().encode(value);
|
|
21
|
+
let binary = "";
|
|
22
|
+
const chunkSize = 0x8000;
|
|
23
|
+
for (let i = 0; i < bytes.length; i += chunkSize) {
|
|
24
|
+
const chunk = bytes.subarray(i, i + chunkSize);
|
|
25
|
+
binary += String.fromCharCode(...chunk);
|
|
26
|
+
}
|
|
27
|
+
return btoa(binary);
|
|
28
|
+
}
|
|
29
|
+
if (typeof btoa !== "undefined") {
|
|
30
|
+
return btoa(unescape(encodeURIComponent(value)));
|
|
31
|
+
}
|
|
32
|
+
throw new Error("Base64 encoding is not available in this environment.");
|
|
33
|
+
};
|
|
34
|
+
const decodeBase64ToUtf8 = (base64) => {
|
|
35
|
+
// Prefer Node/Bun (tests, tooling) if available.
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
const maybeBuffer = globalThis.Buffer;
|
|
38
|
+
if (maybeBuffer) {
|
|
39
|
+
return maybeBuffer.from(base64, "base64").toString("utf-8");
|
|
40
|
+
}
|
|
41
|
+
if (typeof atob !== "undefined") {
|
|
42
|
+
const binary = atob(base64);
|
|
43
|
+
if (typeof TextDecoder !== "undefined") {
|
|
44
|
+
const bytes = new Uint8Array(binary.length);
|
|
45
|
+
for (let i = 0; i < binary.length; i++) {
|
|
46
|
+
bytes[i] = binary.charCodeAt(i);
|
|
47
|
+
}
|
|
48
|
+
return new TextDecoder().decode(bytes);
|
|
49
|
+
}
|
|
50
|
+
return decodeURIComponent(escape(binary));
|
|
51
|
+
}
|
|
52
|
+
throw new Error("Base64 decoding is not available in this environment.");
|
|
53
|
+
};
|
|
54
|
+
const encodeJsonToBase64 = (data) => {
|
|
55
|
+
return encodeUtf8ToBase64(JSON.stringify(data));
|
|
56
|
+
};
|
|
57
|
+
const decodeBase64ToJson = (base64) => {
|
|
58
|
+
return JSON.parse(decodeBase64ToUtf8(base64));
|
|
59
|
+
};
|
|
60
|
+
const generateSaveId = () => {
|
|
61
|
+
if (typeof crypto !== "undefined" && "randomUUID" in crypto) {
|
|
62
|
+
return crypto.randomUUID();
|
|
63
|
+
}
|
|
64
|
+
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
|
|
65
|
+
};
|
|
66
|
+
class GameSaves {
|
|
67
|
+
namespace;
|
|
68
|
+
onLoadSaveFileCallback = null;
|
|
69
|
+
constructor(options) {
|
|
70
|
+
this.namespace = options?.namespace ?? "sliver-engine";
|
|
71
|
+
}
|
|
72
|
+
onLoadSaveFile(callback) {
|
|
73
|
+
this.onLoadSaveFileCallback = callback;
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
create(data, options) {
|
|
77
|
+
const id = options?.id ?? generateSaveId();
|
|
78
|
+
this.write(id, data, { label: options?.label, createIfMissing: true });
|
|
79
|
+
return id;
|
|
80
|
+
}
|
|
81
|
+
write(id, data, options) {
|
|
82
|
+
const storage = getLocalStorage();
|
|
83
|
+
if (!storage) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const now = Date.now();
|
|
87
|
+
const index = this.readIndex(storage);
|
|
88
|
+
const existing = index.find((s) => s.id === id);
|
|
89
|
+
if (!existing && options?.createIfMissing === false) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const createdAt = existing?.createdAt ?? now;
|
|
93
|
+
const entry = {
|
|
94
|
+
id,
|
|
95
|
+
createdAt,
|
|
96
|
+
updatedAt: now,
|
|
97
|
+
label: options?.label ?? existing?.label,
|
|
98
|
+
};
|
|
99
|
+
const payload = encodeJsonToBase64(data);
|
|
100
|
+
storage.setItem(this.saveKey(id), payload);
|
|
101
|
+
const nextIndex = [
|
|
102
|
+
...index.filter((s) => s.id !== id),
|
|
103
|
+
entry,
|
|
104
|
+
].sort((a, b) => b.updatedAt - a.updatedAt);
|
|
105
|
+
this.writeIndex(storage, nextIndex);
|
|
106
|
+
}
|
|
107
|
+
read(id) {
|
|
108
|
+
const storage = getLocalStorage();
|
|
109
|
+
if (!storage) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const index = this.readIndex(storage);
|
|
113
|
+
const entry = index.find((s) => s.id === id);
|
|
114
|
+
if (!entry) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const encoded = storage.getItem(this.saveKey(id));
|
|
118
|
+
if (!encoded) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
const data = decodeBase64ToJson(encoded);
|
|
123
|
+
return { ...entry, data };
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
list() {
|
|
130
|
+
const storage = getLocalStorage();
|
|
131
|
+
if (!storage) {
|
|
132
|
+
return [];
|
|
133
|
+
}
|
|
134
|
+
return this.readIndex(storage);
|
|
135
|
+
}
|
|
136
|
+
loadAll() {
|
|
137
|
+
const storage = getLocalStorage();
|
|
138
|
+
if (!storage) {
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
const index = this.readIndex(storage);
|
|
142
|
+
const loaded = [];
|
|
143
|
+
for (const entry of index) {
|
|
144
|
+
const encoded = storage.getItem(this.saveKey(entry.id));
|
|
145
|
+
if (!encoded)
|
|
146
|
+
continue;
|
|
147
|
+
try {
|
|
148
|
+
const data = decodeBase64ToJson(encoded);
|
|
149
|
+
const save = { ...entry, data };
|
|
150
|
+
loaded.push(save);
|
|
151
|
+
this.onLoadSaveFileCallback?.(save);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return loaded;
|
|
158
|
+
}
|
|
159
|
+
delete(id) {
|
|
160
|
+
const storage = getLocalStorage();
|
|
161
|
+
if (!storage) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
storage.removeItem(this.saveKey(id));
|
|
165
|
+
const index = this.readIndex(storage).filter((s) => s.id !== id);
|
|
166
|
+
this.writeIndex(storage, index);
|
|
167
|
+
}
|
|
168
|
+
clear() {
|
|
169
|
+
const storage = getLocalStorage();
|
|
170
|
+
if (!storage) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const index = this.readIndex(storage);
|
|
174
|
+
for (const entry of index) {
|
|
175
|
+
storage.removeItem(this.saveKey(entry.id));
|
|
176
|
+
}
|
|
177
|
+
storage.removeItem(this.indexKey());
|
|
178
|
+
}
|
|
179
|
+
indexKey() {
|
|
180
|
+
return `${this.namespace}:saves:index`;
|
|
181
|
+
}
|
|
182
|
+
saveKey(id) {
|
|
183
|
+
return `${this.namespace}:saves:${id}`;
|
|
184
|
+
}
|
|
185
|
+
readIndex(storage) {
|
|
186
|
+
const raw = storage.getItem(this.indexKey());
|
|
187
|
+
if (!raw) {
|
|
188
|
+
return [];
|
|
189
|
+
}
|
|
190
|
+
try {
|
|
191
|
+
const parsed = JSON.parse(raw);
|
|
192
|
+
if (!Array.isArray(parsed)) {
|
|
193
|
+
return [];
|
|
194
|
+
}
|
|
195
|
+
return parsed
|
|
196
|
+
.filter((s) => {
|
|
197
|
+
return (!!s &&
|
|
198
|
+
typeof s.id === "string" &&
|
|
199
|
+
typeof s.createdAt === "number" &&
|
|
200
|
+
typeof s.updatedAt === "number");
|
|
201
|
+
})
|
|
202
|
+
.sort((a, b) => b.updatedAt - a.updatedAt);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
writeIndex(storage, index) {
|
|
209
|
+
storage.setItem(this.indexKey(), JSON.stringify(index));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
export { GameSaves };
|
|
213
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Game/Saves/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { CanvasController } from "../CanvasController";
|
|
2
|
+
import type { GameEvent } from "../Events";
|
|
3
|
+
import type { SceneManager } from "../Scenes/SceneManager";
|
|
4
|
+
import { GameContext } from "../Context";
|
|
5
|
+
import { KeyAccumulator } from "../Events";
|
|
6
|
+
import { SoundManager } from "../SoundManager";
|
|
7
|
+
import { GameSaves, type SaveFile } from "./Saves";
|
|
8
|
+
type GameOptions = {
|
|
9
|
+
canvas: CanvasController;
|
|
10
|
+
scenes: SceneManager;
|
|
11
|
+
soundManager: SoundManager;
|
|
12
|
+
ticksPerSecond?: number;
|
|
13
|
+
saveNamespace?: string;
|
|
14
|
+
};
|
|
15
|
+
declare class Game {
|
|
16
|
+
canvas: CanvasController;
|
|
17
|
+
private scenes;
|
|
18
|
+
private ticksPerSecond;
|
|
19
|
+
private lastTickTime;
|
|
20
|
+
private didSetup;
|
|
21
|
+
context: GameContext;
|
|
22
|
+
private keyAccumulator;
|
|
23
|
+
private eventsDispatcher;
|
|
24
|
+
saves: GameSaves;
|
|
25
|
+
constructor({ canvas, scenes, ticksPerSecond, soundManager, saveNamespace, }: GameOptions);
|
|
26
|
+
setup(): void;
|
|
27
|
+
onLoadSaveFile(callback: ((save: SaveFile) => void) | null): this;
|
|
28
|
+
saveGame<T = unknown>(data: T, options?: {
|
|
29
|
+
label?: string;
|
|
30
|
+
id?: string;
|
|
31
|
+
}): string;
|
|
32
|
+
protected onSetup(): void;
|
|
33
|
+
start(): void;
|
|
34
|
+
render(): void;
|
|
35
|
+
protected onTick(): void;
|
|
36
|
+
handleEvent(event: GameEvent): void;
|
|
37
|
+
getContext(): GameContext;
|
|
38
|
+
getTickRate(): number;
|
|
39
|
+
getKeyAccumulator(): KeyAccumulator;
|
|
40
|
+
}
|
|
41
|
+
export { Game };
|
|
42
|
+
export type { GameOptions };
|
|
43
|
+
export { GameSaves };
|
|
44
|
+
export type { SaveFile };
|
|
45
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Game/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAwB,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnD,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,cAAM,IAAI;IACD,MAAM,EAAE,gBAAgB,CAAC;IAChC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAkB;IAC3B,OAAO,EAAE,WAAW,CAAC;IAC5B,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,gBAAgB,CAAuB;IACxC,KAAK,EAAE,SAAS,CAAC;gBAEZ,EACV,MAAM,EACN,MAAM,EACN,cAAc,EACd,YAAY,EACZ,aAAa,GACd,EAAE,WAAW;IAgBd,KAAK;IAWL,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAKjE,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAOjF,SAAS,CAAC,OAAO,IAAI,IAAI;IAEzB,KAAK;IAyBL,MAAM;IASN,SAAS,CAAC,MAAM,IAAI,IAAI;IAExB,WAAW,CAAC,KAAK,EAAE,SAAS;IAS5B,UAAU,IAAI,WAAW;IAIzB,WAAW,IAAI,MAAM;IAIrB,iBAAiB,IAAI,cAAc;CAGpC;AAED,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,YAAY,EAAE,WAAW,EAAE,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { GameContext } from "../Context";
|
|
2
|
+
import { GameEventsdispatcher, KeyAccumulator } from "../Events";
|
|
3
|
+
import { SoundManager } from "../SoundManager";
|
|
4
|
+
import { GameSaves } from "./Saves";
|
|
5
|
+
class Game {
|
|
6
|
+
canvas;
|
|
7
|
+
scenes;
|
|
8
|
+
ticksPerSecond = 60;
|
|
9
|
+
lastTickTime = 0;
|
|
10
|
+
didSetup = false;
|
|
11
|
+
context;
|
|
12
|
+
keyAccumulator = new KeyAccumulator();
|
|
13
|
+
eventsDispatcher;
|
|
14
|
+
saves;
|
|
15
|
+
constructor({ canvas, scenes, ticksPerSecond, soundManager, saveNamespace, }) {
|
|
16
|
+
this.canvas = canvas;
|
|
17
|
+
this.scenes = scenes;
|
|
18
|
+
this.ticksPerSecond = ticksPerSecond || this.ticksPerSecond;
|
|
19
|
+
this.context = new GameContext({
|
|
20
|
+
game: this,
|
|
21
|
+
canvas,
|
|
22
|
+
sceneManager: scenes,
|
|
23
|
+
keyAccumulator: this.keyAccumulator,
|
|
24
|
+
soundManager: soundManager,
|
|
25
|
+
});
|
|
26
|
+
this.scenes.bindContext(this.context);
|
|
27
|
+
this.eventsDispatcher = new GameEventsdispatcher(this, this.keyAccumulator);
|
|
28
|
+
this.saves = new GameSaves({ namespace: saveNamespace });
|
|
29
|
+
}
|
|
30
|
+
setup() {
|
|
31
|
+
if (this.didSetup) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this.didSetup = true;
|
|
35
|
+
this.saves.loadAll();
|
|
36
|
+
this.onSetup();
|
|
37
|
+
console.log("Game setup complete.");
|
|
38
|
+
}
|
|
39
|
+
onLoadSaveFile(callback) {
|
|
40
|
+
this.saves.onLoadSaveFile(callback);
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
saveGame(data, options) {
|
|
44
|
+
return this.saves.create(data, options);
|
|
45
|
+
}
|
|
46
|
+
// Meant to be overridden by game-specific implementations to inject logic
|
|
47
|
+
// that should run once during game setup (after save files are loaded).
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
49
|
+
onSetup() { }
|
|
50
|
+
start() {
|
|
51
|
+
this.setup();
|
|
52
|
+
console.log("Game started.");
|
|
53
|
+
// Tick interval
|
|
54
|
+
setInterval(() => {
|
|
55
|
+
const now = performance.now();
|
|
56
|
+
const tickInterval = 1000 / this.ticksPerSecond;
|
|
57
|
+
const lastTickTime = this.lastTickTime || 0;
|
|
58
|
+
if (now - lastTickTime >= tickInterval) {
|
|
59
|
+
this.onTick();
|
|
60
|
+
this.scenes.tick();
|
|
61
|
+
this.lastTickTime = now;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
// Render loop
|
|
65
|
+
const renderLoop = () => {
|
|
66
|
+
this.canvas.clearCanvas();
|
|
67
|
+
this.render();
|
|
68
|
+
requestAnimationFrame(renderLoop);
|
|
69
|
+
};
|
|
70
|
+
requestAnimationFrame(renderLoop);
|
|
71
|
+
}
|
|
72
|
+
render() {
|
|
73
|
+
this.scenes.getActiveScenes().forEach((scene) => {
|
|
74
|
+
scene.render(this.canvas);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
// Meant to be overridden by game-specific implementations to inject logic
|
|
78
|
+
// that should run once per tick, before the scenes tick.
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
80
|
+
onTick() { }
|
|
81
|
+
handleEvent(event) {
|
|
82
|
+
this.scenes
|
|
83
|
+
.getActiveScenes()
|
|
84
|
+
.toReversed()
|
|
85
|
+
.forEach((scene) => {
|
|
86
|
+
scene.handleEvent(event);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
getContext() {
|
|
90
|
+
return this.context;
|
|
91
|
+
}
|
|
92
|
+
getTickRate() {
|
|
93
|
+
return this.ticksPerSecond;
|
|
94
|
+
}
|
|
95
|
+
getKeyAccumulator() {
|
|
96
|
+
return this.keyAccumulator;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export { Game };
|
|
100
|
+
export { GameSaves };
|
|
101
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Game/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { GameObject } from "..";
|
|
2
|
+
import type { Vector } from "../../Lib/Vector";
|
|
3
|
+
type MirroringMode = "horizontal" | "vertical" | "both" | null;
|
|
4
|
+
export declare const onColision: <TObj extends GameObject = GameObject>(predicate: (self: TObj, other: GameObject) => boolean, handler: (self: TObj, other: GameObject) => void) => (_target: Object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<(this: TObj, other: GameObject, penetration: Vector) => unknown>) => TypedPropertyDescriptor<(this: TObj, other: GameObject, penetration: Vector) => unknown>;
|
|
5
|
+
export declare const renderSprite: <TObj extends GameObject = GameObject>(when: (obj: TObj) => boolean, spriteSheetName: string, index: number | ((obj: TObj) => number), scale?: number | ((obj: TObj) => number), _mirroring?: MirroringMode | ((obj: TObj) => MirroringMode), overridePosition?: (obj: TObj) => Vector) => (_target: Object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any>;
|
|
6
|
+
export declare const renderSpriteAnimation: <TObj extends GameObject = GameObject>(when: (obj: TObj) => boolean, spriteSheetName: string, indexes: number[] | ((obj: TObj) => number[]), _ticksPerFrame: number | ((obj: TObj) => number), scale?: number | ((obj: TObj) => number), _mirroring?: MirroringMode | ((obj: TObj) => MirroringMode), overridePosition?: (obj: TObj) => Vector) => (_target: Object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/GameObject/Decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAGrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,KAAK,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;AAE/D,eAAO,MAAM,UAAU,GAAI,IAAI,SAAS,UAAU,GAAG,UAAU,EAC7D,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,EACrD,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,MAG9C,SAAS,MAAM,EACf,cAAc,MAAM,GAAG,MAAM,EAC7B,YAAY,uBAAuB,CACjC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAChE,oCADQ,IAAI,SAAS,UAAU,eAAe,MAAM,KAAK,OAAO,CAoBpE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,IAAI,SAAS,UAAU,GAAG,UAAU,EAC/D,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,EAC5B,iBAAiB,MAAM,EACvB,OAAO,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,EACvC,QAAO,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAK,EAC3C,aAAY,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,aAAa,CAAQ,EACjE,mBAAmB,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,MAGtC,SAAS,MAAM,EACf,cAAc,MAAM,GAAG,MAAM,EAC7B,YAAY,uBAAuB,CAAC,GAAG,CAAC,iCAoC3C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,IAAI,SAAS,UAAU,GAAG,UAAU,EACxE,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,EAC5B,iBAAiB,MAAM,EACvB,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC,EAC7C,gBAAgB,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,EAChD,QAAO,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAK,EAC3C,aAAY,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,aAAa,CAAQ,EACjE,mBAAmB,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,MAGtC,SAAS,MAAM,EACf,cAAc,MAAM,GAAG,MAAM,EAC7B,YAAY,uBAAuB,CAAC,GAAG,CAAC,iCA+C3C,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export const onColision = (predicate, handler) => {
|
|
2
|
+
return function (_target, _propertyKey, descriptor) {
|
|
3
|
+
const original = descriptor.value;
|
|
4
|
+
if (!original)
|
|
5
|
+
return descriptor;
|
|
6
|
+
descriptor.value = function (other, penetration) {
|
|
7
|
+
if (predicate(this, other)) {
|
|
8
|
+
handler(this, other);
|
|
9
|
+
}
|
|
10
|
+
return original.call(this, other, penetration);
|
|
11
|
+
};
|
|
12
|
+
return descriptor;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export const renderSprite = (when, spriteSheetName, index, scale = 1, _mirroring = null, overridePosition) => {
|
|
16
|
+
return function (_target, _propertyKey, descriptor) {
|
|
17
|
+
const original = descriptor.value;
|
|
18
|
+
if (!original)
|
|
19
|
+
return descriptor;
|
|
20
|
+
descriptor.value = function (canvas, scene) {
|
|
21
|
+
if (!when(this)) {
|
|
22
|
+
return original.call(this, canvas, scene);
|
|
23
|
+
}
|
|
24
|
+
const spriteLib = canvas.getSpriteLibrary();
|
|
25
|
+
const context = canvas.getContext();
|
|
26
|
+
const mirroring = typeof _mirroring === "function" ? _mirroring(this) : _mirroring;
|
|
27
|
+
const position = overridePosition
|
|
28
|
+
? overridePosition(this)
|
|
29
|
+
: this.getPosition();
|
|
30
|
+
spriteLib.drawSpriteFrame(context, spriteSheetName, typeof index === "function" ? index(this) : index, position, typeof scale === "function" ? scale(this) : scale, mirroring === "horizontal" || mirroring === "both", mirroring === "vertical" || mirroring === "both");
|
|
31
|
+
return original.call(this, canvas, scene);
|
|
32
|
+
};
|
|
33
|
+
return descriptor;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export const renderSpriteAnimation = (when, spriteSheetName, indexes, _ticksPerFrame, scale = 1, _mirroring = null, overridePosition) => {
|
|
37
|
+
return function (_target, _propertyKey, descriptor) {
|
|
38
|
+
const original = descriptor.value;
|
|
39
|
+
if (!original)
|
|
40
|
+
return descriptor;
|
|
41
|
+
descriptor.value = function (canvas, scene) {
|
|
42
|
+
if (!when(this)) {
|
|
43
|
+
return original.call(this, canvas, scene);
|
|
44
|
+
}
|
|
45
|
+
const spriteLib = canvas.getSpriteLibrary();
|
|
46
|
+
const context = canvas.getContext();
|
|
47
|
+
const gameContext = this.getContext();
|
|
48
|
+
const mirroring = typeof _mirroring === "function" ? _mirroring(this) : _mirroring;
|
|
49
|
+
const ticksPerFrame = typeof _ticksPerFrame === "number"
|
|
50
|
+
? _ticksPerFrame
|
|
51
|
+
: _ticksPerFrame(this);
|
|
52
|
+
const position = overridePosition
|
|
53
|
+
? overridePosition(this)
|
|
54
|
+
: this.getPosition();
|
|
55
|
+
const frameIndex = Math.floor(gameContext.getTickCount() / ticksPerFrame) % indexes.length;
|
|
56
|
+
const spriteIndex = typeof indexes === "function"
|
|
57
|
+
? indexes(this)[frameIndex]
|
|
58
|
+
: indexes[frameIndex];
|
|
59
|
+
spriteLib.drawSpriteFrame(context, spriteSheetName, spriteIndex, position, typeof scale === "function" ? scale(this) : scale, mirroring === "horizontal" || mirroring === "both", mirroring === "vertical" || mirroring === "both");
|
|
60
|
+
return original.call(this, canvas, scene);
|
|
61
|
+
};
|
|
62
|
+
return descriptor;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GameObject/Decorators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Hitbox } from ".";
|
|
2
|
+
import { Vector } from "../../Lib/Vector";
|
|
3
|
+
type CollisionResolution = {
|
|
4
|
+
penetration: Vector;
|
|
5
|
+
normal: Vector;
|
|
6
|
+
deltaA: Vector;
|
|
7
|
+
deltaB: Vector;
|
|
8
|
+
velocityA: Vector;
|
|
9
|
+
velocityB: Vector;
|
|
10
|
+
angularVelocityA: number;
|
|
11
|
+
angularVelocityB: number;
|
|
12
|
+
appliedImpulse: boolean;
|
|
13
|
+
};
|
|
14
|
+
declare class ColisionHandler {
|
|
15
|
+
static resolveCollision(hitboxA: Hitbox, hitboxB: Hitbox): CollisionResolution | null;
|
|
16
|
+
static getPenetrationVector(hitboxA: Hitbox, hitboxB: Hitbox): Vector;
|
|
17
|
+
private static mtvRectRect;
|
|
18
|
+
private static mtvCircleCircle;
|
|
19
|
+
private static mtvSquareCircle;
|
|
20
|
+
private static mtvCircleSquare;
|
|
21
|
+
}
|
|
22
|
+
export { ColisionHandler };
|
|
23
|
+
//# sourceMappingURL=ColisionHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColisionHandler.d.ts","sourceRoot":"","sources":["../../../src/GameObject/Hitboxes/ColisionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,MAAM,EAAE,MAAM,GAAG,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAyUF,cAAM,eAAe;IACnB,MAAM,CAAC,gBAAgB,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,mBAAmB,GAAG,IAAI;IAoM7B,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAgBrE,OAAO,CAAC,MAAM,CAAC,WAAW;IA2D1B,OAAO,CAAC,MAAM,CAAC,eAAe;IAkB9B,OAAO,CAAC,MAAM,CAAC,eAAe;IA0C9B,OAAO,CAAC,MAAM,CAAC,eAAe;CAM/B;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|