Use state more, start on menus

This commit is contained in:
Bill Niblock 2024-11-02 17:09:38 -04:00
parent e63a0039b6
commit fd96d53a34
7 changed files with 315 additions and 217 deletions

View file

@ -2,34 +2,35 @@
(local pi math.pi)
; The Player table holds all the player stuff
; The Inventory table holds the player's inventory
; [x y] coordinates, [d]irection, [f]ield-of-view
; [o]xygen and [p]ower
(var player {:x 3.5 :y 3.5 :d 0 :f (/ pi 3)
:o 100 :p 45})
; [x y] coordinates, [d] distance
; [dx dy] direction vector
; [o]xygen
(var player {:x 3.5 :y 3.5 :d 0
:o 100})
(var inventory [])
; The Map table holds the map
(var map [])
; The Map table holds the map meta-data
; [n] number of cells
; [h w] hall and wall widths
(var map {:n 10 :h 2 :w 2})
{:getPlayer (fn getPlayer [] player)
:getX (fn getX [] player.x)
:setX (fn setX [x] (set player.x x))
:getY (fn getY [] player.y)
:setY (fn setY [y] (set player.y y))
:getD (fn getD [] player.d)
:setD (fn setD [d] (set player.d d))
:getX (fn getX [] player.x)
:getDirX (fn getDirX [] player.dx)
:setDirX (fn setDirX [x] (set player.dx x))
:getDirY (fn getDirY [] player.dy)
:setDirY (fn setDirY [y] (set player.dy y))
:getO (fn getO [] player.o)
:setO (fn setO [x] (set player.o x))
:getDis (fn getDis [] player.d)
:setDis (fn setDis [x] (set player.d x))
:modDis (fn modDis [x] (set player.d (+ player.d x)))
:modO (fn modO [x]
(if (< (+ player.o x) 0)
(set player.o 0)
(set player.o (+ player.o x))))
:getP (fn getP [] player.p)
:setP (fn setP [x] (set player.p x))
:modP (fn modP [x]
(if (< (+ player.p x) 0)
(set player.p 0)
(set player.p (+ player.p x))))
:getMap (fn getMap [] map)
}