slifer 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 Mohammed Salim
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Mohammed Salim
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,66 +1,66 @@
1
- # Slifer : Native Typescript Game Framework
2
-
3
- <p align="center">
4
- <img width="80%" src="./logo-alpha.png">
5
- </p>
6
-
7
- > [!CAUTION]
8
- > Slifer is currently in alpha. Use at your own risk.
9
-
10
- > [!NOTE]
11
- > Not all basic features have been implemented. Many are missing such as
12
- > window customization. As such, I recommend waiting for a beta release of
13
- > Slifer before using it for a long term project.
14
-
15
- Slifer is a game framework made to allow users to code games in typescript. The
16
- framework uses bun and SDL2 under the hood to allow your game to render and
17
- build natively to desktop.
18
-
19
- ## Contents
20
-
21
- - [Goals](#goals)
22
- - [Current Features](#current-features)
23
- - [Future Features](#future-features)
24
- - [Example](#example)
25
-
26
- ## Goals
27
-
28
- - Contain all basic game framework implementations. Such as drawing images,
29
- drawing text and making animations from a sprite sheet.
30
- - Provide an easy transition from web development to game development.
31
- - Create an easy to use framework. Slifer should handle the bulk of the work
32
- - Keep updates consistent.
33
-
34
- ## Current Features
35
-
36
- - Create a native desktop window with custom title and size.
37
- - Handle both keyboard and mouse inputs
38
- - Load and draw images onto the window
39
-
40
- ## Future Features
41
-
42
- - Audio Implementation
43
- - Animation library
44
- - Save file library
45
-
46
- ## Example
47
-
48
- ```ts
49
- import Slifer from "slifer";
50
-
51
- Slifer.createWindow("Example Window", 640, 480);
52
-
53
- const bg = Slifer.Graphics.makeColor(36, 36, 36, 255);
54
-
55
- while (!Slifer.shouldClose()) {
56
- Slifer.Graphics.setBackground(bg);
57
-
58
- if (Slifer.Keyboard.isPressed("escape")) {
59
- Slifer.isRunning = false;
60
- }
61
-
62
- Slifer.Graphics.render();
63
- }
64
-
65
- Slifer.quit();
66
- ```
1
+ # Slifer : Native Typescript Game Framework
2
+
3
+ <p align="center">
4
+ <img width="80%" src="./logo-alpha.png">
5
+ </p>
6
+
7
+ > [!CAUTION]
8
+ > Slifer is currently in alpha. Use at your own risk.
9
+
10
+ > [!NOTE]
11
+ > Not all basic features have been implemented. Many are missing such as
12
+ > window customization. As such, I recommend waiting for a beta release of
13
+ > Slifer before using it for a long term project.
14
+
15
+ Slifer is a game framework made to allow users to code games in typescript. The
16
+ framework uses bun and SDL2 under the hood to allow your game to render and
17
+ build natively to desktop.
18
+
19
+ ## Contents
20
+
21
+ - [Goals](#goals)
22
+ - [Current Features](#current-features)
23
+ - [Future Features](#future-features)
24
+ - [Example](#example)
25
+
26
+ ## Goals
27
+
28
+ - Contain all basic game framework implementations. Such as drawing images,
29
+ drawing text and making animations from a sprite sheet.
30
+ - Provide an easy transition from web development to game development.
31
+ - Create an easy to use framework. Slifer should handle the bulk of the work
32
+ - Keep updates consistent.
33
+
34
+ ## Current Features
35
+
36
+ - Create a native desktop window with custom title and size.
37
+ - Handle both keyboard and mouse inputs
38
+ - Load and draw images onto the window
39
+
40
+ ## Future Features
41
+
42
+ - Audio Implementation
43
+ - Animation library
44
+ - Save file library
45
+
46
+ ## Example
47
+
48
+ ```ts
49
+ import Slifer from "slifer";
50
+
51
+ Slifer.createWindow("Example Window", 640, 480);
52
+
53
+ const bg = Slifer.Graphics.makeColor(36, 36, 36, 255);
54
+
55
+ while (!Slifer.shouldClose()) {
56
+ Slifer.Graphics.setBackground(bg);
57
+
58
+ if (Slifer.Keyboard.isPressed("escape")) {
59
+ Slifer.isRunning = false;
60
+ }
61
+
62
+ Slifer.Graphics.render();
63
+ }
64
+
65
+ Slifer.quit();
66
+ ```
package/bun.lockb ADDED
Binary file
package/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { SliferClass } from "./src/slifer";
2
-
3
- const Slifer = new SliferClass();
1
+ import { SliferClass } from "./src/slifer";
2
+
3
+ const Slifer = new SliferClass();
4
4
  export default Slifer;
package/libs/libSDL2.so CHANGED
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
- {
2
- "name": "slifer",
3
- "version": "0.1.9",
4
- "description": "A game framework made for bun and typescript",
5
- "module": "index.ts",
6
- "devDependencies": {
7
- "@types/bun": "latest",
8
- "typedoc": "^0.26.7"
9
- },
10
- "peerDependencies": {
11
- "typescript": "^5.0.0"
12
- },
13
- "type": "module"
14
- }
1
+ {
2
+ "name": "slifer",
3
+ "version": "0.2.0",
4
+ "description": "A game framework made for bun and typescript",
5
+ "module": "index.ts",
6
+ "devDependencies": {
7
+ "@types/bun": "latest",
8
+ "typedoc": "^0.26.7"
9
+ },
10
+ "peerDependencies": {
11
+ "typescript": "^5.0.0"
12
+ },
13
+ "type": "module"
14
+ }
package/src/color.ts ADDED
@@ -0,0 +1,15 @@
1
+ class Color {
2
+ readonly r;
3
+ readonly g;
4
+ readonly b;
5
+ readonly a;
6
+
7
+ constructor(r: number, g: number, b: number, a: number) {
8
+ this.r = r;
9
+ this.g = g;
10
+ this.b = b;
11
+ this.a = a;
12
+ }
13
+ }
14
+
15
+ export default Color;
@@ -0,0 +1,25 @@
1
+ import { ptr } from "bun:ffi";
2
+ import Vector2 from "./vector";
3
+
4
+ class Rectangle {
5
+ private readonly pointer;
6
+ public position: Vector2;
7
+ public size: Vector2;
8
+
9
+ constructor(position: Vector2, size: Vector2) {
10
+ const arr = new Uint32Array(4);
11
+ arr[0] = position.x;
12
+ arr[1] = position.y;
13
+ arr[2] = size.x;
14
+ arr[3] = size.y;
15
+ this.pointer = ptr(arr);
16
+ this.position = position;
17
+ this.size = size;
18
+ }
19
+
20
+ static empty() {
21
+ return new Rectangle(new Vector2(0, 0), new Vector2(0, 0));
22
+ }
23
+ }
24
+
25
+ export default Rectangle;
@@ -0,0 +1,49 @@
1
+ class Vector2 {
2
+ public x;
3
+ public y;
4
+
5
+ constructor(x: number, y: number) {
6
+ this.x = x;
7
+ this.y = y;
8
+ }
9
+
10
+ /**
11
+ * Creates a Vector2 with the components 1,1
12
+ */
13
+ static one() {
14
+ return new Vector2(1, 1);
15
+ }
16
+
17
+ /**
18
+ * Creates a Vector2 with the components 1,0
19
+ */
20
+ static unitX() {
21
+ return new Vector2(1, 0);
22
+ }
23
+
24
+ /**
25
+ * Creates a Vector2 with the components 0,1
26
+ */
27
+ static unitY() {
28
+ return new Vector2(0, 1);
29
+ }
30
+
31
+ /**
32
+ * Creates a vector2 with component 0,0
33
+ */
34
+ static zero() {
35
+ return new Vector2(0, 0);
36
+ }
37
+
38
+ /**
39
+ * Adds two vectors together
40
+ *
41
+ * @param vec1 Vector2 object
42
+ * @param vec2 Vector2 object
43
+ */
44
+ static add(vec1: Vector2, vec2: Vector2) {
45
+ return new Vector2(vec1.x + vec2.x, vec1.y + vec2.y);
46
+ }
47
+ }
48
+
49
+ export default Vector2;
package/src/engine.ts ADDED
@@ -0,0 +1,24 @@
1
+ import { libsdl, libimage, libttf } from "./ffi";
2
+ import Global from "./global";
3
+
4
+ //@ts-expect-error
5
+ const fontFile = await import("./Jost-Bold.ttf");
6
+
7
+ export function initLibraries(): void {
8
+ const baseInit = libsdl.symbols.SDL_Init(0x00000020);
9
+ if (baseInit != 0) throw `SDL failed to initialize`;
10
+
11
+ const imageInit = libimage.symbols.IMG_Init(3);
12
+ if (imageInit != 3) throw `SDL Image failed to initialize`;
13
+
14
+ const ttfInit = libttf.symbols.TTF_Init();
15
+ if (ttfInit != 0) throw `SDL TTF failed to initialize`;
16
+
17
+ const tempFont = libttf.symbols.TTF_OpenFont(
18
+ Buffer.from(fontFile.default),
19
+ 24
20
+ );
21
+
22
+ if (tempFont == null) throw `Default font loading failed`;
23
+ Global.ptrFont = tempFont;
24
+ }