]> git.r.bdr.sh - rbdr/canvas/commitdiff
Create the sensor, move values to config
authorRuben Beltran del Rio <redacted>
Tue, 5 Jul 2022 21:34:03 +0000 (23:34 +0200)
committerRuben Beltran del Rio <redacted>
Tue, 5 Jul 2022 21:34:03 +0000 (23:34 +0200)
src/lib/components/hud.svelte
src/lib/components/sensor.svelte
src/lib/config.js [new file with mode: 0644]
src/lib/math.js [new file with mode: 0644]
src/routes/index.svelte

index ce32e0d44398f653fa9efdb243e0881850ae00d3..f79658a46a695249e1a638ebc6ac6fa9022d21f2 100644 (file)
@@ -1,14 +1,15 @@
 <script>
+  import { coordinateLength } from '$lib/config';
+
   export let x;
   export let y;
 
-  const kCoordinateLength = 6;
   const kSeparatorRegex = /([0-9a-z]{2})/g;
 
   const formatCoordinate = function formatCoordinate(coordinate) {
     return coordinate
       .toString(16)
-      .padStart(kCoordinateLength, 0)
+      .padStart(coordinateLength, 0)
       .replace(kSeparatorRegex, '$1 ');
   }
 </script>
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..da968a3220432c74dc24401af9fa54d48175cd7a 100644 (file)
@@ -0,0 +1,34 @@
+<script>
+  import { browser } from '$app/env';
+  import { maxSize } from '$lib/config';
+
+  export let x;
+  export let y;
+
+  const kSensorSize = 2;
+
+  let left;
+  let right;
+  let top;
+  let bottom;
+
+  let timer;
+  const fetchItems = function fetchItems( left, top, right, bottom ) {
+    clearTimeout(timer);
+               timer = setTimeout(() => {
+      console.log('fetching', left, top, right, bottom);
+               }, 50);
+  }
+
+  $: {
+    if (browser) {
+      left = x - window.screen.width * kSensorSize;
+      top = y - window.screen.height * kSensorSize;
+      right = x + window.screen.width * kSensorSize;
+      bottom = y + window.screen.height * kSensorSize;
+
+      fetchItems(left, top, right, bottom);
+    }
+  }
+
+</script>
diff --git a/src/lib/config.js b/src/lib/config.js
new file mode 100644 (file)
index 0000000..3d243ed
--- /dev/null
@@ -0,0 +1,2 @@
+export const coordinateLength = 6;
+export const maxSize = Math.pow(16, coordinateLength);
diff --git a/src/lib/math.js b/src/lib/math.js
new file mode 100644 (file)
index 0000000..c745cdc
--- /dev/null
@@ -0,0 +1,8 @@
+/**
+ * Modulo that acts well with negative numbers.
+ * @param {number} dividend the number to divide
+ * @param {number} divisor the divisor to calculate the remainder
+ */
+export const modulo = function modulo (dividend, divisor) {
+  return ((dividend % divisor) + divisor) % divisor
+};
index 7d5a3ff48c6f98a73abeb074cb28dc007fa876c4..2943d232e6b90b4f29bb269add540a037e744f23 100644 (file)
@@ -1,12 +1,11 @@
 <script>
-
-  import { browser } from '$app/env';
+  import Sensor from '$lib/components/sensor.svelte';
   import Background from '$lib/components/background.svelte';
   import Palette from '$lib/components/palette.svelte';
   import Hud from '$lib/components/hud.svelte';
+  import { modulo } from '$lib/math';
 
-  const kCoordinateLength = 6;
-  const kMaxSize = Math.pow(16, kCoordinateLength);
+  import { coordinateLength, maxSize } from '$lib/config';
 
   $: x = 0;
   $: y = 0;
 
   let dragging = false;
 
-  const modulo = function modulo (number, base) {
-    return ((number % base) + base) % base
-  };
-
   const moveCanvas = function moveCanvas(event) {
 
     if (dragging) {
       let deltaX = event.x - dragging.x;
       let deltaY = event.y - dragging.y;
-      x = modulo(x - deltaX, kMaxSize);
-      y = modulo(y - deltaY, kMaxSize);
+      x = modulo(x - deltaX, maxSize);
+      y = modulo(y - deltaY, maxSize);
       dragging.x = event.x;
       dragging.y = event.y;
     }
@@ -63,7 +58,8 @@
   on:mouseup={stopDragging}
   on:mousemove={moveCanvas}>
 >
-  <Background x={x} y={y}/>
+  <Sensor x={x} y={y} />
+  <Background x={x} y={y} />
   <Hud x={x} y={y} />
 
   {#if shouldShowPalette }