slifer 0.1.5 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,93 @@
1
+ Copyright 2023 The Soft Type Project Authors (https://github.com/scfried/soft-type-jacquard)
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ https://openfontlicense.org
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slifer",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "A game framework made for bun and typescript",
5
5
  "module": "index.ts",
6
6
  "devDependencies": {
@@ -2,6 +2,7 @@ import { libimage, libsdl, libttf } from "../ffi";
2
2
  import Global from "../global";
3
3
  import { type Pointer, ptr } from 'bun:ffi';
4
4
  import path from 'path';
5
+ import type { Rectangle, Vector2 } from "../slifer";
5
6
 
6
7
  /** @internal */
7
8
  class Graphics {
@@ -65,19 +66,33 @@ class Graphics {
65
66
  * @param ys (optional) scale of y axis
66
67
  * @param flip (optional) horizontal flip
67
68
  */
68
- draw(image: Image, x: number, y: number, rotation?: number, xs?: number, ys?: number, flip?: true) {
69
+ draw(image: Image, position: Vector2, clipRectangle?: Rectangle, rotation?: number, xs?: number, ys?: number, flip?: true) {
69
70
  const _dest = new Uint32Array(4);
70
71
  const wArr = new Uint32Array(1);
71
72
  const hArr = new Uint32Array(1);
72
- libsdl.symbols.SDL_QueryTexture((image as any).pointer, null, null, ptr(wArr), ptr(hArr));
73
- _dest[0] = x;
74
- _dest[1] = y;
73
+ let srcRect: null | Uint32Array = null;
74
+
75
+ if (clipRectangle == undefined) {
76
+ libsdl.symbols.SDL_QueryTexture((image as any).pointer, null, null, ptr(wArr), ptr(hArr));
77
+ } else {
78
+ srcRect = new Uint32Array(4);
79
+ srcRect[0] = clipRectangle.x;
80
+ srcRect[1] = clipRectangle.y;
81
+ srcRect[2] = clipRectangle.width;
82
+ srcRect[3] = clipRectangle.height;
83
+ wArr[0] = clipRectangle.width;
84
+ hArr[0] = clipRectangle.height;
85
+ }
86
+
87
+
88
+ _dest[0] = position.x;
89
+ _dest[1] = position.y;
75
90
  _dest[2] = wArr[0] * (xs ? xs : 1);
76
91
  _dest[3] = hArr[0] * (ys ? ys : 1);
77
92
  const _center = new Uint32Array(2);
78
93
  _center[0] = _dest[2] / 2;
79
94
  _center[1] = _dest[3] / 2;
80
- libsdl.symbols.SDL_RenderCopyEx(Global.ptrRenderer, (image as any).pointer, null, ptr(_dest), rotation ? rotation : 0, ptr(_center), flip ? Number(flip) : 0);
95
+ libsdl.symbols.SDL_RenderCopyEx(Global.ptrRenderer, (image as any).pointer, srcRect, ptr(_dest), rotation ? rotation : 0, ptr(_center), flip ? Number(flip) : 0);
81
96
  }
82
97
 
83
98
  /**
package/src/slifer.ts CHANGED
@@ -6,6 +6,9 @@ import Keyboard from "./modules/keyboard";
6
6
  import Mouse from "./modules/mouse";
7
7
  import { version } from '../package.json';
8
8
 
9
+ //@ts-expect-error
10
+ const fontFile = await import("../Jacquard_12/Jacquard12-Regular.ttf");
11
+
9
12
  /** @internal */
10
13
  class Window {
11
14
  public width: number;
@@ -26,9 +29,17 @@ class Window {
26
29
  libsdl.symbols.SDL_SetWindowTitle(Global.ptrWindow, Buffer.from(title+'\x00'));
27
30
  }
28
31
 
29
- setFullscreen(flag: boolean) {
32
+ setFullscreen(flag: boolean) : void {
30
33
  libsdl.symbols.SDL_SetWindowFullscreen(Global.ptrWindow, Number(flag));
31
34
  }
35
+
36
+ centerWindow() : void {
37
+ libsdl.symbols.SDL_SetWindowPosition(Global.ptrWindow, 0x2FFF0000, 0x2FFF0000);
38
+ }
39
+
40
+ setPosition(x: number, y: number) : void {
41
+ libsdl.symbols.SDL_SetWindowPosition(Global.ptrWindow, x, y);
42
+ }
32
43
  }
33
44
 
34
45
  /** @interal */
@@ -50,6 +61,7 @@ export class SliferClass {
50
61
  const ttfInit = libttf.symbols.TTF_Init();
51
62
  if (ttfInit != 0) throw `SDL TTF failed to initialize`;
52
63
 
64
+ /*
53
65
  if (process.platform == "darwin") {
54
66
  const tempFont = libttf.symbols.TTF_OpenFont(
55
67
  Buffer.from("/System/Library/Fonts/SFNSMono.ttf"),
@@ -65,6 +77,14 @@ export class SliferClass {
65
77
  if (tempFont == null) throw `Default font loading failed`;
66
78
  Global.ptrFont = tempFont;
67
79
  }
80
+ */
81
+
82
+
83
+
84
+ const tempFont = libttf.symbols.TTF_OpenFont(
85
+ Buffer.from(fontFile.default), 24);
86
+ if (tempFont == null) throw `Default font loading failed`;
87
+ Global.ptrFont = tempFont;
68
88
  }
69
89
 
70
90
  /**
@@ -157,3 +177,35 @@ export class SliferClass {
157
177
  return version;
158
178
  }
159
179
  }
180
+
181
+ export class Vector2 {
182
+ x;
183
+ y;
184
+
185
+ constructor(x: number, y: number) {
186
+ this.x = x;
187
+ this.y = y;
188
+ }
189
+ }
190
+
191
+ export class Rectangle {
192
+
193
+ private readonly pointer;
194
+ readonly x;
195
+ readonly y;
196
+ readonly width;
197
+ readonly height;
198
+
199
+ constructor(x: number, y: number, width: number, height: number) {
200
+ const arr = new Uint32Array(4);
201
+ arr[0] = x;
202
+ arr[1] = y;
203
+ arr[2] = width;
204
+ arr[3] = height;
205
+ this.pointer = ptr(arr);
206
+ this.x = x;
207
+ this.y = y;
208
+ this.width = width;
209
+ this.height = height;
210
+ }
211
+ }