summaryrefslogtreecommitdiff
path: root/2026/games/crm148/view.js
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-08-29 04:06:51 -0400
committerLLLL Colonq <llll@colonq>2026-08-29 04:06:51 -0400
commit761a3172bf4c15aed3836e4d1cd6f815b651b0e0 (patch)
treecc90491529e83349d84d42a8e9982e5f0f38338e /2026/games/crm148/view.js
parent0d2d8cd897e94bd94e0b3ae7c6ce9aa580a44a0a (diff)
Fix
Diffstat (limited to '2026/games/crm148/view.js')
-rw-r--r--2026/games/crm148/view.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/2026/games/crm148/view.js b/2026/games/crm148/view.js
new file mode 100644
index 0000000..1d2fb5c
--- /dev/null
+++ b/2026/games/crm148/view.js
@@ -0,0 +1,32 @@
+
+import Vec2 from './vec2.js';
+
+class View {
+ center = Vec2.zero();
+ zoom = 1.0;
+
+ // Convert game coordinate to canvas coordinate
+ project(vec2) {
+ return new Vec2(
+ (gameCanvas.width / 2) + ((vec2.x - this.center.x) * this.zoom),
+ (gameCanvas.height / 2) - ((vec2.y - this.center.y) * this.zoom));
+ }
+ // Covert canvas coordinate to game coordinate
+ unproject(vec2) {
+ return new Vec2(
+ this.center.x + (vec2.x - (gameCanvas.width / 2)) / this.zoom,
+ this.center.y - (vec2.y - (gameCanvas.height/2)) / this.zoom);
+ }
+}
+
+function globalView() {
+ return gView;
+}
+
+var gView = new View();
+window.view = gView;
+
+export {
+ View,
+ globalView,
+}