diff --git a/game.js b/game.js
index 84afc3b..ad25731 100644
--- a/game.js
+++ b/game.js
@@ -6,6 +6,8 @@
// version: 0.1
// script: js
+// api: https://github.com/nesbox/TIC-80/wiki/API
+
function TIC() {
gameStages[currentStage]()
}
@@ -21,9 +23,26 @@ let currentStage = 'mainMenu'
// State
-let t = 0
-let x = 96
-let y = 24
+let interface = {
+ arenaX: 7,
+ arenaY: 7,
+ spriteSize: 7,
+ spriteHalfSize: 3,
+}
+
+let arena = {
+ top: 0,
+ right: 225,
+ bottom: 89,
+ left: 0,
+}
+
+let player = {
+ sprite: 1,
+ speed: 1,
+ x: 0,
+ y: 0,
+}
// Main Menu
@@ -44,15 +63,49 @@ function mainMenu() {
// Gameplay
function gameplay() {
- if (btn(BTN_U)) y--
- if (btn(BTN_D)) y++
- if (btn(BTN_L)) x--
- if (btn(BTN_R)) x++
+ // chackColisions()
- cls(13)
- spr(1 + (((t % 60) / 30) | 0) * 2, x, y, 14, 3, 0, 0, 2, 2)
- print('HELLO WORLD!', 84, 84)
- t++
+ handleMoves()
+ handleMorse()
+
+ // spawn()
+ // moveEnemies()
+
+ drawInterface()
+ drawArena()
+ // drawFX()
+ // drawEnemies()
+ drawPlayer()
+}
+
+function handleMoves() {
+ player.speed = btn(BTN_A) ? 2 : 1
+
+ if (btn(BTN_U)) player.y = Math.max(player.y - player.speed, arena.top)
+ if (btn(BTN_D)) player.y = Math.min(player.y + player.speed, arena.bottom)
+ if (btn(BTN_L)) player.x = Math.max(player.x - player.speed, arena.left)
+ if (btn(BTN_R)) player.x = Math.min(player.x + player.speed, arena.right)
+}
+
+function handleMorse() {
+ player.sprite = btn(BTN_B) ? 17 : 1
+}
+
+function drawInterface() {
+ cls(0)
+}
+
+function drawArena() {
+ map(0, 0, 30, 15)
+}
+
+function drawPlayer() {
+ spr(
+ player.sprite,
+ interface.arenaX + player.x - interface.spriteHalfSize,
+ interface.arenaY + player.y - interface.spriteHalfSize,
+ 0,
+ )
}
// Constants
@@ -63,16 +116,35 @@ const [BTN_U, BTN_D, BTN_L, BTN_R, BTN_A, BTN_B, BTN_X, BTN_Y] = [
]
//
-// 001:eccccccccc888888caaaaaaaca888888cacccccccacc0ccccacc0ccccacc0ccc
-// 002:ccccceee8888cceeaaaa0cee888a0ceeccca0ccc0cca0c0c0cca0c0c0cca0c0c
-// 003:eccccccccc888888caaaaaaaca888888cacccccccacccccccacc0ccccacc0ccc
-// 004:ccccceee8888cceeaaaa0cee888a0ceeccca0cccccca0c0c0cca0c0c0cca0c0c
-// 017:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec
-// 018:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee
-// 019:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec
-// 020:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee
+// 001:8800088080000080008880000088800000888000800000808800088000000000
+// 002:0000000000000000000000000000000000000000000001110000012200000123
+// 003:0000000000000000000000000000000000000000111111112222222233333333
+// 004:0000000000000000000000000000000000000000111000002210000032100000
+// 017:0000000008808800080008000008000008000800088088000000000000000000
+// 018:0000012300000123000001230000012300000123000001230000012300000123
+// 019:2111111111111111111111111111111111111111111111111111111111111111
+// 020:3210000032100000321000003210000032100000321000003210000032100000
+// 034:0000012300000122000001110000000000000000000000000000000000000000
+// 035:3333333322222222111111110000000000000000000000000000000000000000
+// 036:3210000022100000111000000000000000000000000000000000000000000000
//
+//
+
//
// 000:00000000ffffffff00000000ffffffff
// 001:0123456789abcdeffedcba9876543210
@@ -88,5 +160,5 @@ const [BTN_U, BTN_D, BTN_L, BTN_R, BTN_A, BTN_B, BTN_X, BTN_Y] = [
//
//
-// 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
+// 000:000000002b36073642586e75657b8383949693a1a1eee8d5b58900cb4b16dc322fd336826c71c4268bd22aa198859900
//