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/src/slifer.ts CHANGED
@@ -1,65 +1,27 @@
1
- import { libimage, libsdl, libttf } from "./ffi";
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 = new Graphics();
58
- Keyboard = new Keyboard();
59
- Mouse = new 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, width: number, height: number): Window {
74
- // Creating cstring buffer from string
75
- const _title = Buffer.from(title + "\x00");
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
- // Creating renderer pointer
90
- const vsyncHint = 0x00000004;
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
- this.firstFrame = Number(libsdl.symbols.SDL_GetPerformanceCounter());
43
+ // Start delta time calculations
44
+ Time.instance.init();
100
45
 
101
- return new Window(title, width, height);
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
- libsdl.symbols.SDL_RenderClear(Global.ptrRenderer);
55
+ Renderer.clear();
110
56
 
111
- // Setup deltatime
112
- this.lastFrame = this.firstFrame;
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
- const _dscancode = eventArray[8];
132
- const _dkey =
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
- const _uscancode = eventArray[8];
140
- const _ukey =
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
- libttf.symbols.TTF_CloseFont(Global.ptrFont);
166
- libsdl.symbols.SDL_DestroyRenderer(Global.ptrRenderer);
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