slifer 0.2.1 → 0.2.2
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 +8 -6
- package/Sir-BC_stop.png +0 -0
- package/libs/libSDL2.so +0 -0
- package/libs/libSDL2_image.so +0 -0
- package/libs/libSDL2_mixer.dylib +0 -0
- package/libs/libSDL2_mixer.so +0 -0
- package/package.json +1 -1
- package/sample.wav +0 -0
- package/src/engine/renderer.ts +40 -0
- package/src/engine/time.ts +34 -0
- package/src/engine/window.ts +79 -0
- package/src/engine.ts +20 -13
- package/src/ffi.ts +257 -220
- package/src/modules/audio.ts +41 -0
- package/src/modules/graphics.ts +47 -123
- package/src/modules/keyboard.ts +80 -21
- package/src/modules/mouse.ts +22 -14
- package/src/slifer.test.ts +38 -3
- package/src/slifer.ts +32 -99
- package/bun.lockb +0 -0
package/src/slifer.ts
CHANGED
@@ -1,65 +1,27 @@
|
|
1
|
-
import {
|
2
|
-
import { initLibraries } from "./engine";
|
3
|
-
import Global from "./global";
|
4
|
-
import { ptr } from "bun:ffi";
|
1
|
+
import { libsdl } from "./ffi";
|
5
2
|
import Graphics from "./modules/graphics";
|
6
3
|
import Keyboard from "./modules/keyboard";
|
7
4
|
import Mouse from "./modules/mouse";
|
5
|
+
import Audio from "./modules/audio";
|
6
|
+
import Window from "./engine/window";
|
7
|
+
import Renderer from "./engine/renderer";
|
8
|
+
import Vector2 from "./engine/vector";
|
9
|
+
import Time from "./engine/time";
|
10
|
+
import { ptr } from "bun:ffi";
|
11
|
+
import { initLibraries } from "./engine";
|
8
12
|
import { version } from "../package.json";
|
9
13
|
|
10
|
-
/** @internal */
|
11
|
-
class Window {
|
12
|
-
public width: number;
|
13
|
-
public height: number;
|
14
|
-
public title: string;
|
15
|
-
|
16
|
-
constructor(title: string, width: number, height: number) {
|
17
|
-
this.width = width;
|
18
|
-
this.height = height;
|
19
|
-
this.title = title;
|
20
|
-
}
|
21
|
-
|
22
|
-
setSize(width: number, height: number): void {
|
23
|
-
libsdl.symbols.SDL_SetWindowSize(Global.ptrWindow, width, height);
|
24
|
-
}
|
25
|
-
|
26
|
-
setTitle(title: string): void {
|
27
|
-
libsdl.symbols.SDL_SetWindowTitle(
|
28
|
-
Global.ptrWindow,
|
29
|
-
Buffer.from(title + "\x00")
|
30
|
-
);
|
31
|
-
}
|
32
|
-
|
33
|
-
setFullscreen(flag: boolean): void {
|
34
|
-
libsdl.symbols.SDL_SetWindowFullscreen(Global.ptrWindow, Number(flag));
|
35
|
-
}
|
36
|
-
|
37
|
-
centerWindow(): void {
|
38
|
-
libsdl.symbols.SDL_SetWindowPosition(
|
39
|
-
Global.ptrWindow,
|
40
|
-
0x2fff0000,
|
41
|
-
0x2fff0000
|
42
|
-
);
|
43
|
-
}
|
44
|
-
|
45
|
-
setPosition(x: number, y: number): void {
|
46
|
-
libsdl.symbols.SDL_SetWindowPosition(Global.ptrWindow, x, y);
|
47
|
-
}
|
48
|
-
}
|
49
|
-
|
50
14
|
/** @interal */
|
51
15
|
export class SliferClass {
|
52
|
-
private isRunning: boolean = true;
|
53
|
-
private lastFrame: number = 0;
|
54
|
-
private firstFrame: number = 0;
|
55
|
-
|
56
16
|
// Modules
|
57
|
-
Graphics =
|
58
|
-
Keyboard =
|
59
|
-
Mouse =
|
17
|
+
Graphics = Graphics.instance;
|
18
|
+
Keyboard = Keyboard.instance;
|
19
|
+
Mouse = Mouse.instance;
|
20
|
+
Audio = Audio.instance;
|
60
21
|
|
61
22
|
// Public Variables
|
62
23
|
public dt: number = 0;
|
24
|
+
public isRunning: boolean = true;
|
63
25
|
|
64
26
|
constructor() {
|
65
27
|
initLibraries();
|
@@ -70,35 +32,19 @@ export class SliferClass {
|
|
70
32
|
* @param width Width of window
|
71
33
|
* @param height Height of window
|
72
34
|
*/
|
73
|
-
createWindow(title: string,
|
74
|
-
//
|
75
|
-
const
|
76
|
-
|
77
|
-
// Creating window pointer
|
78
|
-
const _win = libsdl.symbols.SDL_CreateWindow(
|
79
|
-
_title,
|
80
|
-
0x2fff0000,
|
81
|
-
0x2fff0000,
|
82
|
-
width,
|
83
|
-
height,
|
84
|
-
0
|
85
|
-
);
|
86
|
-
if (_win == null) throw `Window creation failed`;
|
87
|
-
Global.ptrWindow = _win;
|
35
|
+
createWindow(title: string, size: Vector2): Window {
|
36
|
+
// Create the window
|
37
|
+
const window = Window.instance;
|
38
|
+
Window.createWindow(title, size);
|
88
39
|
|
89
|
-
//
|
90
|
-
|
91
|
-
const _ren = libsdl.symbols.SDL_CreateRenderer(
|
92
|
-
Global.ptrWindow,
|
93
|
-
-1,
|
94
|
-
vsyncHint
|
95
|
-
);
|
96
|
-
if (_ren == null) throw `Renderer Creation failed`;
|
97
|
-
Global.ptrRenderer = _ren;
|
40
|
+
// Create the renderer
|
41
|
+
Renderer.createRenderer();
|
98
42
|
|
99
|
-
|
43
|
+
// Start delta time calculations
|
44
|
+
Time.instance.init();
|
100
45
|
|
101
|
-
|
46
|
+
// Return the window object
|
47
|
+
return window;
|
102
48
|
}
|
103
49
|
|
104
50
|
/**
|
@@ -106,15 +52,10 @@ export class SliferClass {
|
|
106
52
|
*/
|
107
53
|
shouldClose(): boolean {
|
108
54
|
// Clear the renderer
|
109
|
-
|
55
|
+
Renderer.clear();
|
110
56
|
|
111
|
-
//
|
112
|
-
this.
|
113
|
-
this.firstFrame = Number(libsdl.symbols.SDL_GetPerformanceCounter());
|
114
|
-
|
115
|
-
this.dt =
|
116
|
-
((this.firstFrame - this.lastFrame) * 1000) /
|
117
|
-
Number(libsdl.symbols.SDL_GetPerformanceFrequency());
|
57
|
+
// Calculate delta time
|
58
|
+
this.dt = Time.instance.calcDelta();
|
118
59
|
|
119
60
|
// Poll Events
|
120
61
|
const eventArray = new Uint16Array(32);
|
@@ -128,19 +69,13 @@ export class SliferClass {
|
|
128
69
|
break;
|
129
70
|
// Keydown event
|
130
71
|
case 768:
|
131
|
-
|
132
|
-
|
133
|
-
libsdl.symbols.SDL_GetKeyFromScancode(_dscancode);
|
134
|
-
const _dname = libsdl.symbols.SDL_GetKeyName(_dkey);
|
135
|
-
Keyboard.setKeyDown(_dname.toString().toLowerCase());
|
72
|
+
var scancode = eventArray[8];
|
73
|
+
Keyboard.setKeyDown(scancode);
|
136
74
|
break;
|
137
75
|
// Keyup event
|
138
76
|
case 769:
|
139
|
-
|
140
|
-
|
141
|
-
libsdl.symbols.SDL_GetKeyFromScancode(_uscancode);
|
142
|
-
const _uname = libsdl.symbols.SDL_GetKeyName(_ukey);
|
143
|
-
Keyboard.setKeyUp(_uname.toString().toLowerCase());
|
77
|
+
var scancode = eventArray[8];
|
78
|
+
Keyboard.setKeyUp(scancode);
|
144
79
|
break;
|
145
80
|
// Mouse down event
|
146
81
|
case 1025:
|
@@ -162,9 +97,8 @@ export class SliferClass {
|
|
162
97
|
* Slifers quit method
|
163
98
|
*/
|
164
99
|
quit() {
|
165
|
-
|
166
|
-
libsdl.symbols.
|
167
|
-
libsdl.symbols.SDL_DestroyWindow(Global.ptrWindow);
|
100
|
+
libsdl.symbols.SDL_DestroyRenderer(Renderer.pointer);
|
101
|
+
libsdl.symbols.SDL_DestroyWindow(Window.pointer);
|
168
102
|
libsdl.symbols.SDL_Quit();
|
169
103
|
}
|
170
104
|
|
@@ -172,4 +106,3 @@ export class SliferClass {
|
|
172
106
|
return version;
|
173
107
|
}
|
174
108
|
}
|
175
|
-
|
package/bun.lockb
DELETED
Binary file
|