summaryrefslogtreecommitdiff
path: root/2026/games_submissions/crm148/view.js
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-07-31 05:00:49 -0400
committerLLLL Colonq <llll@colonq>2026-07-31 05:00:49 -0400
commitea5332e4a1a035e888709bee278fcafb182f7922 (patch)
tree7e1520391e7f04fa3df425fd9ed02008f748cdfd /2026/games_submissions/crm148/view.js
parent3ec03ba57474aa4320cb7901980b55706adbc111 (diff)
Update
Diffstat (limited to '2026/games_submissions/crm148/view.js')
-rw-r--r--2026/games_submissions/crm148/view.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/2026/games_submissions/crm148/view.js b/2026/games_submissions/crm148/view.js
new file mode 100644
index 0000000..1d2fb5c
--- /dev/null
+++ b/2026/games_submissions/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,
+}