<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>
+<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>
--- /dev/null
+export const coordinateLength = 6;
+export const maxSize = Math.pow(16, coordinateLength);
--- /dev/null
+/**
+ * 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
+};
<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;
}
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 }