slifer 0.2.0 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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 +74 -127
- 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
|