@hi-ashleyj/llama 0.9.0 → 0.10.1

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.
Files changed (81) hide show
  1. package/README.md +29 -0
  2. package/dist/Game.svelte +123 -0
  3. package/{components → dist}/Game.svelte.d.ts +4 -4
  4. package/dist/GameObject.svelte +38 -0
  5. package/{components → dist}/GameObject.svelte.d.ts +2 -2
  6. package/dist/Layer.svelte +58 -0
  7. package/{components → dist}/Layer.svelte.d.ts +3 -2
  8. package/dist/controllers/MouseClickable.svelte +50 -0
  9. package/{components/mouse → dist/controllers}/MouseClickable.svelte.d.ts +2 -2
  10. package/dist/controllers/MouseEventArea.svelte +58 -0
  11. package/{components/mouse → dist/controllers}/MouseEventArea.svelte.d.ts +7 -3
  12. package/{components/controller.d.ts → dist/controllers/keyboard.d.ts} +6 -6
  13. package/{components/controller.js → dist/controllers/keyboard.js} +9 -9
  14. package/{components → dist/controllers}/mouse.d.ts +5 -1
  15. package/{components → dist/controllers}/mouse.js +24 -6
  16. package/dist/core-contexts.d.ts +48 -0
  17. package/{setup.js → dist/core-contexts.js} +7 -19
  18. package/dist/drawable.d.ts +14 -0
  19. package/dist/drawable.js +13 -0
  20. package/dist/drawables/Arc.svelte +31 -0
  21. package/{components → dist}/drawables/Arc.svelte.d.ts +2 -2
  22. package/dist/drawables/Circle.svelte +25 -0
  23. package/{components → dist}/drawables/Circle.svelte.d.ts +2 -2
  24. package/dist/drawables/DisplayImage.svelte +17 -0
  25. package/{components → dist}/drawables/DisplayImage.svelte.d.ts +2 -2
  26. package/dist/drawables/MultiLineText.svelte +43 -0
  27. package/{components → dist}/drawables/MultiLineText.svelte.d.ts +4 -4
  28. package/dist/drawables/Rectangle.svelte +22 -0
  29. package/{components → dist}/drawables/Rectangle.svelte.d.ts +2 -2
  30. package/dist/drawables/RoundedRectangle.svelte +24 -0
  31. package/{components → dist}/drawables/RoundedRectangle.svelte.d.ts +2 -2
  32. package/dist/drawables/Text.svelte +37 -0
  33. package/{components → dist}/drawables/Text.svelte.d.ts +4 -4
  34. package/dist/extras/Empty.svelte +0 -0
  35. package/dist/extras/Empty.svelte.d.ts +18 -0
  36. package/dist/extras/LayerPortal.svelte +24 -0
  37. package/dist/extras/LayerPortal.svelte.d.ts +18 -0
  38. package/dist/extras/Rotate.svelte +25 -0
  39. package/dist/extras/Rotate.svelte.d.ts +22 -0
  40. package/dist/extras/SceneSwitcher.svelte +20 -0
  41. package/dist/extras/SceneSwitcher.svelte.d.ts +16 -0
  42. package/dist/extras/SceneTransition.svelte +40 -0
  43. package/dist/extras/SceneTransition.svelte.d.ts +21 -0
  44. package/dist/extras/SensibleDefaultStyles.svelte +22 -0
  45. package/dist/extras/SensibleDefaultStyles.svelte.d.ts +20 -0
  46. package/dist/extras/Tweened.svelte +9 -0
  47. package/dist/extras/Tweened.svelte.d.ts +21 -0
  48. package/dist/extras/scenes.d.ts +6 -0
  49. package/dist/extras/scenes.js +22 -0
  50. package/dist/index.d.ts +21 -0
  51. package/dist/index.js +24 -0
  52. package/package.json +26 -29
  53. package/components/Game.svelte +0 -116
  54. package/components/GameObject.svelte +0 -40
  55. package/components/Layer.svelte +0 -47
  56. package/components/drawables/Arc.svelte +0 -29
  57. package/components/drawables/Circle.svelte +0 -25
  58. package/components/drawables/DisplayImage.svelte +0 -17
  59. package/components/drawables/MultiLineText.svelte +0 -45
  60. package/components/drawables/Rectangle.svelte +0 -22
  61. package/components/drawables/RoundedRectangle.svelte +0 -24
  62. package/components/drawables/Text.svelte +0 -36
  63. package/components/mouse/MouseClickable.svelte +0 -49
  64. package/components/mouse/MouseEventArea.svelte +0 -55
  65. package/components/mouse/MouseLeftClick.svelte +0 -33
  66. package/components/mouse/MouseLeftClick.svelte.d.ts +0 -16
  67. package/drawables.d.ts +0 -1
  68. package/drawables.js +0 -1
  69. package/index.d.ts +0 -12
  70. package/index.js +0 -11
  71. package/resources.d.ts +0 -1
  72. package/resources.js +0 -1
  73. package/setup.d.ts +0 -12
  74. package/types/contexts.d.ts +0 -35
  75. package/types/index.d.ts +0 -1
  76. /package/{components → dist/controllers}/motions.d.ts +0 -0
  77. /package/{components → dist/controllers}/motions.js +0 -0
  78. /package/{components → dist}/drawables/index.d.ts +0 -0
  79. /package/{components → dist}/drawables/index.js +0 -0
  80. /package/{components → dist}/resources/images.d.ts +0 -0
  81. /package/{components → dist}/resources/images.js +0 -0
@@ -0,0 +1,9 @@
1
+ <script>import { tweened } from "svelte/motion";
2
+ export let duration = 200;
3
+ export let value = 0;
4
+ const tweening = tweened(null, { duration });
5
+ $:
6
+ tweening.set(value, { duration });
7
+ </script>
8
+
9
+ <slot smooth={$tweening} />
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ duration?: number | undefined;
5
+ value?: number | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {
11
+ default: {
12
+ smooth: number;
13
+ };
14
+ };
15
+ };
16
+ export type TweenedProps = typeof __propDef.props;
17
+ export type TweenedEvents = typeof __propDef.events;
18
+ export type TweenedSlots = typeof __propDef.slots;
19
+ export default class Tweened extends SvelteComponent<TweenedProps, TweenedEvents, TweenedSlots> {
20
+ }
21
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { Writable } from "svelte/store";
2
+ export declare const currentScene: Writable<string>;
3
+ export declare const jumpSignal: Writable<boolean>;
4
+ export declare const effectiveScene: Writable<string>;
5
+ export declare const sceneAnimating: Writable<boolean>;
6
+ export declare const changeScene: (scene: string) => void;
@@ -0,0 +1,22 @@
1
+ import { writable, get } from "svelte/store";
2
+ export const currentScene = writable("default");
3
+ export const jumpSignal = writable(false);
4
+ export const effectiveScene = writable("default");
5
+ export const sceneAnimating = writable(false);
6
+ let wasAnimating = false;
7
+ sceneAnimating.subscribe((animating) => {
8
+ wasAnimating = animating;
9
+ if (animating)
10
+ return;
11
+ let currentSceneValue = get(currentScene);
12
+ if (currentSceneValue !== get(effectiveScene)) {
13
+ changeScene(currentSceneValue);
14
+ }
15
+ });
16
+ export const changeScene = function (scene) {
17
+ currentScene.set(scene);
18
+ if (wasAnimating)
19
+ return;
20
+ sceneAnimating.set(true);
21
+ effectiveScene.set(scene);
22
+ };
@@ -0,0 +1,21 @@
1
+ export { default as Game } from "./Game.svelte";
2
+ export { default as Layer } from "./Layer.svelte";
3
+ export { default as GameObject } from "./GameObject.svelte";
4
+ export { getGame, getLayer, getTriggerLayerRender } from "./core-contexts.js";
5
+ export type { GameContext, LayerContext, LayerDrawable } from "./core-contexts.d.ts";
6
+ export { default as MouseClickable } from "./controllers/MouseClickable.svelte";
7
+ export { default as MouseEventArea } from "./controllers/MouseEventArea.svelte";
8
+ export { MOUSE_ACTION } from "./controllers/mouse.js";
9
+ export { KEYBOARD_ACTION } from "./controllers/keyboard.js";
10
+ export { setupDrawable } from "./drawable.js";
11
+ export type { DrawableContext, DrawableObject, DrawFunction } from "./drawable.d.ts";
12
+ export * as Drawables from "./drawables/index.js";
13
+ export { resolve as resolveImage } from "./resources/images.js";
14
+ export { default as SensibleDefaultStyles } from "./extras/SensibleDefaultStyles.svelte";
15
+ export { default as Empty } from "./extras/Empty.svelte";
16
+ export { default as LayerPortal } from "./extras/LayerPortal.svelte";
17
+ export { changeScene } from "./extras/scenes.js";
18
+ export { default as SceneSwitcher } from "./extras/SceneSwitcher.svelte";
19
+ export { default as SceneTransition } from "./extras/SceneTransition.svelte";
20
+ export { default as Rotate } from "./extras/Rotate.svelte";
21
+ export { default as Tweened } from "./extras/Tweened.svelte";
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ // CORE
2
+ export { default as Game } from "./Game.svelte";
3
+ export { default as Layer } from "./Layer.svelte";
4
+ export { default as GameObject } from "./GameObject.svelte";
5
+ export { getGame, getLayer, getTriggerLayerRender } from "./core-contexts.js";
6
+ // CONTROLLERS
7
+ export { default as MouseClickable } from "./controllers/MouseClickable.svelte";
8
+ export { default as MouseEventArea } from "./controllers/MouseEventArea.svelte";
9
+ export { MOUSE_ACTION } from "./controllers/mouse.js";
10
+ export { KEYBOARD_ACTION } from "./controllers/keyboard.js";
11
+ // DRAWABLES
12
+ export { setupDrawable } from "./drawable.js";
13
+ export * as Drawables from "./drawables/index.js";
14
+ // RESOURCES
15
+ export { resolve as resolveImage } from "./resources/images.js";
16
+ // EXTRAS
17
+ export { default as SensibleDefaultStyles } from "./extras/SensibleDefaultStyles.svelte";
18
+ export { default as Empty } from "./extras/Empty.svelte";
19
+ export { default as LayerPortal } from "./extras/LayerPortal.svelte";
20
+ export { changeScene } from "./extras/scenes.js";
21
+ export { default as SceneSwitcher } from "./extras/SceneSwitcher.svelte";
22
+ export { default as SceneTransition } from "./extras/SceneTransition.svelte";
23
+ export { default as Rotate } from "./extras/Rotate.svelte";
24
+ export { default as Tweened } from "./extras/Tweened.svelte";
package/package.json CHANGED
@@ -1,8 +1,16 @@
1
1
  {
2
2
  "name": "@hi-ashleyj/llama",
3
3
  "description": "A (Very Incomplete) 2D Canvas Game Engine powered by Svelte",
4
- "version": "0.9.0",
4
+ "version": "0.10.1",
5
5
  "type": "module",
6
+ "scripts": {
7
+ "dev": "vite dev",
8
+ "build": "vite build",
9
+ "package": "svelte-package",
10
+ "preview": "vite preview",
11
+ "sync": "svelte-kit sync",
12
+ "check": "svelte-check"
13
+ },
6
14
  "repository": {
7
15
  "type": "git",
8
16
  "url": "git+https://github.com/hi-ashleyj/llama-game-engine.git"
@@ -19,35 +27,24 @@
19
27
  "@sveltejs/package": "latest",
20
28
  "sass": "^1.58.0",
21
29
  "svelte": "^3.44.0",
22
- "svelte-preprocess": "^4.10.7",
23
- "svelte2tsx": "^0.5.12",
30
+ "svelte-check": "^3.4.6",
24
31
  "typescript": "^4.7.4",
25
32
  "vite": "^4.0.0"
26
33
  },
27
- "exports": {
28
- "./package.json": "./package.json",
29
- "./components/Game.svelte": "./components/Game.svelte",
30
- "./components/GameObject.svelte": "./components/GameObject.svelte",
31
- "./components/Layer.svelte": "./components/Layer.svelte",
32
- "./components/controller": "./components/controller.js",
33
- "./components/drawables/Arc.svelte": "./components/drawables/Arc.svelte",
34
- "./components/drawables/Circle.svelte": "./components/drawables/Circle.svelte",
35
- "./components/drawables/DisplayImage.svelte": "./components/drawables/DisplayImage.svelte",
36
- "./components/drawables/MultiLineText.svelte": "./components/drawables/MultiLineText.svelte",
37
- "./components/drawables/Rectangle.svelte": "./components/drawables/Rectangle.svelte",
38
- "./components/drawables/RoundedRectangle.svelte": "./components/drawables/RoundedRectangle.svelte",
39
- "./components/drawables/Text.svelte": "./components/drawables/Text.svelte",
40
- "./components/drawables": "./components/drawables/index.js",
41
- "./components/motions": "./components/motions.js",
42
- "./components/mouse/MouseClickable.svelte": "./components/mouse/MouseClickable.svelte",
43
- "./components/mouse/MouseEventArea.svelte": "./components/mouse/MouseEventArea.svelte",
44
- "./components/mouse/MouseLeftClick.svelte": "./components/mouse/MouseLeftClick.svelte",
45
- "./components/mouse": "./components/mouse.js",
46
- "./components/resources/images": "./components/resources/images.js",
47
- "./drawables": "./drawables.js",
48
- ".": "./index.js",
49
- "./resources": "./resources.js",
50
- "./setup": "./setup.js"
34
+ "peerDependencies": {
35
+ "svelte": "^4.0.0"
51
36
  },
52
- "svelte": "./index.js"
53
- }
37
+ "files": [
38
+ "dist"
39
+ ],
40
+ "exports": {
41
+ ".": {
42
+ "types": "./dist/index.d.ts",
43
+ "svelte": "./dist/index.js"
44
+ },
45
+ "./drawables": {
46
+ "types": "./dist/drawables/index.d.ts",
47
+ "svelte": "./dist/drawables/index.js"
48
+ }
49
+ }
50
+ }
@@ -1,116 +0,0 @@
1
- <script>import { writable } from "svelte/store";
2
- import { onMount } from "svelte";
3
- import { setupGame } from "../setup";
4
- import { Timing } from "./motions";
5
- import { Controller } from "./controller";
6
- import { Mouse } from "./mouse";
7
- export let width = 1920;
8
- export let height = 1080;
9
- export let background = "#000000";
10
- // noinspection JSUnusedAssignment
11
- const widthStore = writable(1920);
12
- // noinspection JSUnusedAssignment
13
- const heightStore = writable(1080);
14
- // noinspection JSUnusedAssignment
15
- const backgroundStore = writable("#000000");
16
- $: {
17
- $widthStore = width;
18
- }
19
- $: {
20
- $heightStore = height;
21
- }
22
- $: {
23
- $backgroundStore = background;
24
- }
25
- const layers = new Set();
26
- const draw = function (delta, time) {
27
- for (let layer of layers) {
28
- if (layer.isStatic())
29
- continue;
30
- layer.draw(delta, time);
31
- }
32
- };
33
- const assign = function (ctx) {
34
- layers.add(ctx);
35
- return () => layers.delete(ctx);
36
- };
37
- const timing = new Timing();
38
- const controller = new Controller();
39
- const mouse = new Mouse();
40
- const frameEvents = new Set();
41
- const frameBeforeEvents = new Set();
42
- const frameAfterEvents = new Set();
43
- // noinspection JSUnusedGlobalSymbols
44
- export const context = {
45
- width: widthStore,
46
- height: heightStore,
47
- background: backgroundStore,
48
- assign,
49
- createTimer: timing.createTimer.bind(timing),
50
- createBurst: timing.createBurst.bind(timing),
51
- onKeyboardEvent: controller.on.bind(controller),
52
- isKeyboardPressed: controller.isPressed.bind(controller),
53
- getKeyboardStore: controller.getStore.bind(controller),
54
- onMouseEvent: mouse.on.bind(mouse),
55
- isMousePressed: mouse.isPressed.bind(mouse),
56
- getMousePosition: mouse.getPosition.bind(mouse),
57
- getMouseStore: mouse.getStore.bind(mouse),
58
- onFrame: (callback) => {
59
- frameEvents.add(callback);
60
- return () => frameEvents.delete(callback);
61
- },
62
- onBeforeFrame: (callback) => {
63
- frameBeforeEvents.add(callback);
64
- return () => frameBeforeEvents.delete(callback);
65
- },
66
- onAfterFrame: (callback) => {
67
- frameAfterEvents.add(callback);
68
- return () => frameAfterEvents.delete(callback);
69
- },
70
- };
71
- setupGame(context);
72
- let last = -1;
73
- const loop = function (time) {
74
- if (last < 0)
75
- last = time;
76
- let delta = (time - last);
77
- if (delta > 1000) {
78
- requestAnimationFrame(loop);
79
- return last = time;
80
- }
81
- // TODO: NEW TIMEOUT LOGIC
82
- frameBeforeEvents.forEach((callback) => callback({ delta, time }));
83
- timing.update(delta);
84
- frameEvents.forEach((callback) => callback({ delta, time }));
85
- draw(delta, time);
86
- frameAfterEvents.forEach((callback) => callback({ delta, time }));
87
- requestAnimationFrame(loop);
88
- last = time;
89
- };
90
- onMount(() => {
91
- requestAnimationFrame(loop);
92
- controller.start();
93
- mouse.start();
94
- });
95
- let wiw = 0;
96
- let wih = 0;
97
- $: {
98
- mouse.changeWindowDimensions(wiw, wih);
99
- }
100
- </script>
101
-
102
- <div class="game" style:background-color={background}>
103
- <slot />
104
- </div>
105
-
106
- <svelte:window bind:innerHeight={wih} bind:innerWidth={wiw}></svelte:window>
107
-
108
- <style>
109
- .game {
110
- position: relative;
111
- width: 100%;
112
- height: 100%;
113
- padding: 0;
114
- margin: 0;
115
- }
116
- </style>
@@ -1,40 +0,0 @@
1
- <script>import { setupDrawable } from "../setup";
2
- import { onMount } from "svelte";
3
- export let x = 0;
4
- export let y = 0;
5
- export let w = 0;
6
- export let h = 0;
7
- /**
8
- * FALSE = ANCHOR TOP LEFT
9
- * TRUE = ANCHOR CENTER
10
- */
11
- export let centered = false;
12
- export let opacity = 1;
13
- $: ax = (centered) ? x - (w / 2) : x;
14
- $: ay = (centered) ? y - (h / 2) : y;
15
- const targets = new Set();
16
- const draw = function ({ width, height, ctx }) {
17
- if (opacity <= 0)
18
- return;
19
- if (opacity < 1) {
20
- ctx.globalAlpha = opacity;
21
- }
22
- targets.forEach(f => f.draw({ width, height, ctx }, { x: ax, y: ay, w, h }));
23
- if (opacity < 1) {
24
- ctx.globalAlpha = 1;
25
- }
26
- };
27
- let register = setupDrawable({
28
- assign: (ctx) => {
29
- targets.add(ctx);
30
- return () => {
31
- targets.delete(ctx);
32
- };
33
- },
34
- });
35
- onMount(() => {
36
- return register({ draw });
37
- });
38
- </script>
39
-
40
- <slot/>
@@ -1,47 +0,0 @@
1
- <script>import { setupLayer, getGame } from "../setup";
2
- import { onMount } from "svelte";
3
- export let zIndex = 0;
4
- export let staticMode = false;
5
- let shouldRenderNextFrame = true;
6
- let canvas;
7
- $: ctx = (typeof canvas !== "undefined") ? canvas.getContext("2d") : null;
8
- let targets = new Set();
9
- const draw = () => {
10
- if (ctx === null)
11
- return;
12
- ctx.clearRect(0, 0, $width, $height);
13
- targets.forEach(f => f.draw({ width: $width, height: $height, ctx }));
14
- };
15
- let { width, height } = getGame();
16
- let register = setupLayer({
17
- assign: (ctx) => {
18
- targets.add(ctx);
19
- return () => { targets.delete(ctx); };
20
- },
21
- requestFrame: () => {
22
- if (!staticMode)
23
- return;
24
- shouldRenderNextFrame = true;
25
- }
26
- });
27
- onMount(() => {
28
- return register({ draw, isStatic: () => { if (shouldRenderNextFrame) {
29
- shouldRenderNextFrame = false;
30
- draw();
31
- } return staticMode; } });
32
- });
33
- </script>
34
-
35
- <canvas width={$width} height={$height} bind:this={canvas} style:z-index={zIndex}></canvas>
36
- <slot />
37
-
38
- <style>
39
- canvas {
40
- position: absolute;
41
- top: 0;
42
- left: 0;
43
- width: 100%;
44
- height: 100%;
45
- object-fit: contain;
46
- }
47
- </style>
@@ -1,29 +0,0 @@
1
- <script>import { setupDrawable } from "../../setup";
2
- import { onMount } from "svelte";
3
- export let fill = null;
4
- export let stroke = null;
5
- export let strokeWidth = null;
6
- export let startAngle;
7
- export let endAngle;
8
- $: sd = (startAngle - 90) * Math.PI / 180;
9
- $: ed = (endAngle - 90) * Math.PI / 180;
10
- const draw = function ({ ctx }, { x, y, w, h }) {
11
- let r = (w + h) / 4;
12
- ctx.beginPath();
13
- ctx.arc(x + r, y + r, r, sd, ed);
14
- ctx.lineTo(x + r, y + r);
15
- if (fill) {
16
- ctx.fillStyle = fill;
17
- ctx.fill();
18
- }
19
- if (stroke && strokeWidth) {
20
- ctx.strokeStyle = stroke;
21
- ctx.lineWidth = strokeWidth;
22
- ctx.stroke();
23
- }
24
- };
25
- let register = setupDrawable({});
26
- onMount(() => {
27
- return register({ draw });
28
- });
29
- </script>
@@ -1,25 +0,0 @@
1
- <script>import { setupDrawable } from "../../setup";
2
- import { onMount } from "svelte";
3
- export let fill = null;
4
- export let stroke = null;
5
- export let strokeWidth = null;
6
- const TWO_PI = Math.PI * 2;
7
- const draw = function ({ ctx }, { x, y, w, h }) {
8
- let r = (w + h) / 4;
9
- ctx.beginPath();
10
- ctx.arc(x + r, y + r, r, 0, TWO_PI);
11
- if (fill) {
12
- ctx.fillStyle = fill;
13
- ctx.fill();
14
- }
15
- if (stroke && strokeWidth) {
16
- ctx.strokeStyle = stroke;
17
- ctx.lineWidth = strokeWidth;
18
- ctx.stroke();
19
- }
20
- };
21
- let register = setupDrawable({});
22
- onMount(() => {
23
- return register({ draw });
24
- });
25
- </script>
@@ -1,17 +0,0 @@
1
- <script>import { setupDrawable } from "../../setup";
2
- import { onMount } from "svelte";
3
- export let image = null;
4
- export let crop = null;
5
- const draw = function ({ ctx }, { x, y, w, h }) {
6
- if (!image)
7
- return;
8
- if (crop) {
9
- return ctx.drawImage(image, crop.x, crop.y, crop.w, crop.h, x, y, w, h);
10
- }
11
- ctx.drawImage(image, x, y, w, h);
12
- };
13
- let register = setupDrawable({});
14
- onMount(() => {
15
- return register({ draw });
16
- });
17
- </script>
@@ -1,45 +0,0 @@
1
- <script>import { setupDrawable } from "../../setup";
2
- import { onMount } from "svelte";
3
- export let text;
4
- export let size;
5
- export let spacing = 1.4;
6
- export let font;
7
- export let style = undefined;
8
- export let fill = undefined;
9
- export let stroke = undefined;
10
- export let strokeWidth = null;
11
- export let alignH = "left";
12
- export let alignV = "top";
13
- $: computedFont = (style ? style + " " : "") + size + "px " + font;
14
- $: splits = text?.split("\n") || [];
15
- $: offset =
16
- alignV === "bottom"
17
- ? ((splits?.length || 1) - 1) * size * spacing
18
- : alignV === "middle"
19
- ? ((splits?.length || 1) - 1) * size * spacing * 0.5
20
- : 0;
21
- const draw = function ({ ctx }, { x, y }) {
22
- if (!splits)
23
- return;
24
- for (let i = 0; i < splits.length; i++) {
25
- const line = splits[i];
26
- ctx.beginPath();
27
- ctx.textAlign = alignH;
28
- ctx.textBaseline = alignV;
29
- ctx.font = computedFont;
30
- if (fill) {
31
- ctx.fillStyle = fill;
32
- ctx.fillText(line, x, y + size * spacing * i - offset);
33
- }
34
- if (stroke && strokeWidth) {
35
- ctx.strokeStyle = stroke;
36
- ctx.lineWidth = strokeWidth;
37
- ctx.strokeText(line, x, y + size * spacing * i - offset);
38
- }
39
- }
40
- };
41
- let register = setupDrawable({});
42
- onMount(() => {
43
- return register({ draw });
44
- });
45
- </script>
@@ -1,22 +0,0 @@
1
- <script>import { setupDrawable } from "../../setup";
2
- import { onMount } from "svelte";
3
- export let fill = null;
4
- export let stroke = null;
5
- export let strokeWidth = null;
6
- const draw = function ({ ctx }, { x, y, w, h }) {
7
- ctx.beginPath();
8
- ctx.rect(x, y, w, h);
9
- if (fill) {
10
- ctx.fillStyle = fill;
11
- ctx.fill();
12
- }
13
- if (stroke && strokeWidth) {
14
- ctx.strokeStyle = stroke;
15
- ctx.stroke();
16
- }
17
- };
18
- let register = setupDrawable({});
19
- onMount(() => {
20
- return register({ draw });
21
- });
22
- </script>
@@ -1,24 +0,0 @@
1
- <script>import { setupDrawable } from "../../setup";
2
- import { onMount } from "svelte";
3
- export let fill = null;
4
- export let stroke = null;
5
- export let strokeWidth = null;
6
- export let radius = 0;
7
- const draw = function ({ ctx }, { x, y, w, h }) {
8
- ctx.beginPath();
9
- ctx.roundRect(x, y, w, h, radius);
10
- if (fill) {
11
- ctx.fillStyle = fill;
12
- ctx.fill();
13
- }
14
- if (stroke && strokeWidth) {
15
- ctx.strokeStyle = stroke;
16
- ctx.lineWidth = strokeWidth;
17
- ctx.stroke();
18
- }
19
- };
20
- let register = setupDrawable({});
21
- onMount(() => {
22
- return register({ draw });
23
- });
24
- </script>
@@ -1,36 +0,0 @@
1
- <script>import { setupDrawable } from "../../setup";
2
- import { onMount } from "svelte";
3
- export let text;
4
- export let size;
5
- export let font;
6
- export let style = undefined;
7
- export let fill = undefined;
8
- export let stroke = undefined;
9
- export let strokeWidth = null;
10
- export let alignH = "left";
11
- export let alignV = "top";
12
- $: computedFont = ((style) ? style + " " : "") + size + "px " + font;
13
- const draw = function ({ ctx }, { x, y, w, h }) {
14
- if (!text)
15
- return;
16
- ctx.beginPath();
17
- ctx.textAlign = alignH;
18
- ctx.textBaseline = alignV;
19
- ctx.font = computedFont;
20
- let actualX = x + (alignH === "right" ? w : alignH === "center" ? w / 2 : 0);
21
- let actualY = y + (alignV === "bottom" ? h : alignV === "middle" ? (h / 2) + (size * 0.10) : 0);
22
- if (fill) {
23
- ctx.fillStyle = fill;
24
- ctx.fillText(text, actualX, actualY);
25
- }
26
- if (stroke && strokeWidth) {
27
- ctx.strokeStyle = stroke;
28
- ctx.lineWidth = strokeWidth;
29
- ctx.strokeText(text, actualX, actualY);
30
- }
31
- };
32
- let register = setupDrawable({});
33
- onMount(() => {
34
- return register({ draw });
35
- });
36
- </script>
@@ -1,49 +0,0 @@
1
- <script>import { setupDrawable, getGame } from "../../setup";
2
- import { onMount, createEventDispatcher } from "svelte";
3
- import { MOUSE_ACTION } from "../mouse";
4
- let tx = 0;
5
- let ty = 0;
6
- let tw = 0;
7
- let th = 0;
8
- let dispatch = createEventDispatcher();
9
- let context = getGame();
10
- const draw = function (_info, { x, y, w, h }) {
11
- tx = x;
12
- ty = y;
13
- tw = w;
14
- th = h;
15
- };
16
- let register = setupDrawable({});
17
- onMount(() => {
18
- let event = context.onMouseEvent(null, MOUSE_ACTION.DOWN, ({ key }) => {
19
- let x = context.getMousePosition("mouse_x");
20
- if (x < tx || x > tx + tw)
21
- return;
22
- let y = context.getMousePosition("mouse_y");
23
- if (y < ty || y > ty + th)
24
- return;
25
- dispatch("click");
26
- switch (key) {
27
- case ("mouse_left"): {
28
- dispatch("left");
29
- dispatch("leftorright");
30
- return;
31
- }
32
- case ("mouse_right"): {
33
- dispatch("right");
34
- dispatch("leftorright");
35
- return;
36
- }
37
- case ("mouse_middle"): {
38
- dispatch("middle");
39
- }
40
- }
41
- dispatch("other");
42
- });
43
- let deregister = register({ draw });
44
- return () => {
45
- event();
46
- deregister();
47
- };
48
- });
49
- </script>