diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d6b5830 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +www/js/escalator.js diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a86a40d --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +.PHONY: www/js/escalator.js + +www/js/escalator.js: $(shell find src -name "*.js") + cat \ + src/open.js \ + src/box.js \ + src/main.js \ + src/close.js \ + > www/js/escalator.js + diff --git a/js/main.js b/js/main.js deleted file mode 100644 index 1415856..0000000 --- a/js/main.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -let canvas = document.getElementById('canvas'); -canvas.width = window.innerWidth; -canvas.height = window.innerHeight; - -console.log(canvas.width, canvas.height); - -let context = canvas.getContext("2d"); -context.fillStyle = "rgb(0.0, 0.0, 0.0)"; -context.rect(canvas.width / 4, canvas.height / 4, canvas.width / 2, canvas.height / 2); -context.stroke(); - -console.log(canvas); diff --git a/src/box.js b/src/box.js new file mode 100644 index 0000000..8997044 --- /dev/null +++ b/src/box.js @@ -0,0 +1,48 @@ +const MAX_SPEED = 20; +const MAX_JUMP = 2; +const G = 500; + +class Box { + constructor() { + this.position = 0; + this.speed = 0; + this.size = 100; + this.jumpCounter = MAX_JUMP; + } + + drawOn(canvas) { + let ctx = canvas.getContext('2d'); + + ctx.fillStyle = 'rgb(0, 0, 0)'; + ctx.beginPath(); + ctx.rect( + canvas.width / 2.0 - this.size / 2.0, + canvas.height - this.size - this.position, + this.size, + this.size + ); + + ctx.fill(); + + } + + update(time = 0.002) { + this.speed -= G * time; + this.speed = Math.max(this.speed, -MAX_SPEED); + this.position += this.speed; + + if (this.position <= 0) { + this.position = 0; + this.speed = 0; + this.jumpCounter = MAX_JUMP; + } + + } + + jump() { + if (this.jumpCounter > 0) { + this.jumpCounter--; + this.speed = MAX_SPEED; + } + } +} diff --git a/src/close.js b/src/close.js new file mode 100644 index 0000000..0319a0f --- /dev/null +++ b/src/close.js @@ -0,0 +1 @@ +})(); diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..14f43f2 --- /dev/null +++ b/src/main.js @@ -0,0 +1,40 @@ +let canvas, ctx, box; + +init(); +render(); + +function init() { + // Initialize canvas + canvas = document.getElementById('canvas'); + document.body.style.margin = '0px'; + onWindowResize(); + ctx = canvas.getContext('2d'); + + // Initialize listeners + window.addEventListener('resize', onWindowResize); + document.addEventListener('touchstart', () => box.jump()); + + // Initialize game + box = new Box(); +} + +function render() { + // Manage physics + box.update(); + + // Do rendering + // canvas.width = canvas.width + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.beginPath(); + ctx.fillStyle = 'rgb(255, 0, 0)'; + ctx.rect(0, 0, canvas.width, canvas.height); + ctx.fill(); + + box.drawOn(canvas); + requestAnimationFrame(render); +} + +function onWindowResize() { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; +} diff --git a/src/object.js b/src/object.js new file mode 100644 index 0000000..7a58402 --- /dev/null +++ b/src/object.js @@ -0,0 +1,3 @@ +class Object { + +} diff --git a/src/open.js b/src/open.js new file mode 100644 index 0000000..ae521f2 --- /dev/null +++ b/src/open.js @@ -0,0 +1,2 @@ +"use strict"; +(function() { diff --git a/watch.sh b/watch.sh new file mode 100755 index 0000000..673fb93 --- /dev/null +++ b/watch.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +inotifywait -r -q -e close_write src/ -m | while read line; do + make www/js/escalator.js +done diff --git a/index.html b/www/index.html similarity index 51% rename from index.html rename to www/index.html index 5fbda65..75e05d0 100644 --- a/index.html +++ b/www/index.html @@ -4,19 +4,13 @@ Escalator - +