add dev level and get info pads working
This commit is contained in:
parent
7e75b665f5
commit
276c7c562b
10 changed files with 246 additions and 13 deletions
|
|
@ -46,6 +46,7 @@
|
||||||
|
|
||||||
(def tutorial-map-tmx (load-tiled-xml-file "./tiled/tutorial.tmx"))
|
(def tutorial-map-tmx (load-tiled-xml-file "./tiled/tutorial.tmx"))
|
||||||
(def level-001-map-tmx (load-tiled-xml-file "./tiled/level_001.tmx"))
|
(def level-001-map-tmx (load-tiled-xml-file "./tiled/level_001.tmx"))
|
||||||
|
(def dev-map-tmx (load-tiled-xml-file "./tiled/dev.tmx"))
|
||||||
|
|
||||||
(defn parse-gid [gid]
|
(defn parse-gid [gid]
|
||||||
(let [gid-long (Long/parseLong (str gid))
|
(let [gid-long (Long/parseLong (str gid))
|
||||||
|
|
@ -91,7 +92,9 @@
|
||||||
{:player-1 (extract-pos player-1)
|
{:player-1 (extract-pos player-1)
|
||||||
:player-2 (extract-pos player-2)})}))
|
:player-2 (extract-pos player-2)})}))
|
||||||
(def levels {:levels {:level-001 (parse-map level-001-map-tmx)
|
(def levels {:levels {:level-001 (parse-map level-001-map-tmx)
|
||||||
:tutorial (parse-map tutorial-map-tmx)}
|
:tutorial (parse-map tutorial-map-tmx)
|
||||||
|
:dev (parse-map dev-map-tmx)}
|
||||||
|
|
||||||
:colliders colliders})
|
:colliders colliders})
|
||||||
|
|
||||||
(pprint (get-in levels [:levels :tutorial :objects]))
|
(pprint (get-in levels [:levels :tutorial :objects]))
|
||||||
|
|
|
||||||
83
two_player_cleaning_game/assets/tiled/dev.tmx
Normal file
83
two_player_cleaning_game/assets/tiled/dev.tmx
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.10" tiledversion="1.12.1" orientation="orthogonal" renderorder="right-down" width="50" height="50" tilewidth="25" tileheight="25" infinite="0" nextlayerid="4" nextobjectid="12">
|
||||||
|
<tileset firstgid="1" source="walls.tsx"/>
|
||||||
|
<layer id="1" name="Tile Layer 1" width="50" height="50">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2147483651,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,10,1,1,1,0,0,1,1,1,2147483658,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,4,11,2147483652,0,0,0,0,0,0,4,11,2147483652,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2147483650,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<objectgroup id="2" name="spawns">
|
||||||
|
<object id="1" name="player_1" x="612.159" y="713.357">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="2" name="player_2" x="638.166" y="712.787">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="3" name="objects">
|
||||||
|
<object id="5" type="info_pad" x="600" y="700" width="25" height="25">
|
||||||
|
<properties>
|
||||||
|
<property name="content" value="[a] is left wheel forward [d] is right wheel forward"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="6" x="625" y="700" width="25" height="25">
|
||||||
|
<properties>
|
||||||
|
<property name="content" value="[a] is left wheel forward [d] is right wheel forward"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="11" type="info_pad" x="600" y="600" width="25" height="25">
|
||||||
|
<properties>
|
||||||
|
<property name="content" value="[q] is left wheel reverse [e] is right wheel reverse"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
|
</map>
|
||||||
|
|
@ -6,15 +6,26 @@
|
||||||
"/Users/she0001t/personal_projects/fennel_love2d_experiments/two_player_cleaning_game/assets"
|
"/Users/she0001t/personal_projects/fennel_love2d_experiments/two_player_cleaning_game/assets"
|
||||||
],
|
],
|
||||||
"fileStates": {
|
"fileStates": {
|
||||||
|
"dev.tmx": {
|
||||||
|
"expandedObjectLayers": [
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"scale": 2.9815,
|
||||||
|
"selectedLayer": 2,
|
||||||
|
"viewCenter": {
|
||||||
|
"x": 635.7538151936944,
|
||||||
|
"y": 649.3375817541506
|
||||||
|
}
|
||||||
|
},
|
||||||
"level_001.tmx": {
|
"level_001.tmx": {
|
||||||
"expandedObjectLayers": [
|
"expandedObjectLayers": [
|
||||||
2
|
2
|
||||||
],
|
],
|
||||||
"scale": 0.5497,
|
"scale": 0.92,
|
||||||
"selectedLayer": 1,
|
"selectedLayer": 1,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 624.886301619065,
|
"x": 528.804347826087,
|
||||||
"y": 614.8808440967802
|
"y": 1036.9565217391303
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"map_tileset.tsx": {
|
"map_tileset.tsx": {
|
||||||
|
|
@ -28,6 +39,7 @@
|
||||||
},
|
},
|
||||||
"tutorial.tmx": {
|
"tutorial.tmx": {
|
||||||
"expandedObjectLayers": [
|
"expandedObjectLayers": [
|
||||||
|
3,
|
||||||
2
|
2
|
||||||
],
|
],
|
||||||
"scale": 3.1565,
|
"scale": 3.1565,
|
||||||
|
|
@ -64,6 +76,7 @@
|
||||||
"tutorial.tmx",
|
"tutorial.tmx",
|
||||||
"map_tileset.tsx"
|
"map_tileset.tsx"
|
||||||
],
|
],
|
||||||
|
"textEdit.monospace": true,
|
||||||
"tileset.lastUsedFormat": "tsx",
|
"tileset.lastUsedFormat": "tsx",
|
||||||
"tileset.tileSize": {
|
"tileset.tileSize": {
|
||||||
"height": 25,
|
"height": 25,
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -5,7 +5,11 @@
|
||||||
; (local assets (require "src/assets.fnl"))
|
; (local assets (require "src/assets.fnl"))
|
||||||
(local utils (require "src/utils.fnl"))
|
(local utils (require "src/utils.fnl"))
|
||||||
; (local colors (require "src/colors.fnl"))
|
; (local colors (require "src/colors.fnl"))
|
||||||
(local tutorial (require "src/levels/tutorial.fnl"))
|
; (local tutorial (require "src/levels/tutorial.fnl"))
|
||||||
|
(local dev (require "src/levels/dev.fnl"))
|
||||||
|
|
||||||
|
(local level dev)
|
||||||
|
(local debug false)
|
||||||
|
|
||||||
(var pool nil)
|
(var pool nil)
|
||||||
|
|
||||||
|
|
@ -16,7 +20,6 @@
|
||||||
:canvas-w canvas-w
|
:canvas-w canvas-w
|
||||||
:canvas-h canvas-h
|
:canvas-h canvas-h
|
||||||
:scale scale}))
|
:scale scale}))
|
||||||
(local debug true)
|
|
||||||
|
|
||||||
|
|
||||||
; (lambda create-charging-station [x y]
|
; (lambda create-charging-station [x y]
|
||||||
|
|
@ -75,7 +78,7 @@
|
||||||
(fn love.load []
|
(fn love.load []
|
||||||
(love.window.setMode screen.screen-w screen.screen-h)
|
(love.window.setMode screen.screen-w screen.screen-h)
|
||||||
; (tset screen :canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h))
|
; (tset screen :canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h))
|
||||||
(set pool (tutorial.load screen))
|
(set pool (level.load screen))
|
||||||
(pool:flush)
|
(pool:flush)
|
||||||
(pool:emit :load)
|
(pool:emit :load)
|
||||||
; (utils.debug-print pool)
|
; (utils.debug-print pool)
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,18 @@
|
||||||
(local levels (require "levels.fnl"))
|
(local levels (require "levels.fnl"))
|
||||||
(local assets (require "src/assets.fnl"))
|
(local assets (require "src/assets.fnl"))
|
||||||
|
|
||||||
(lambda info-pad [x y name]
|
(lambda info-pad [obj]
|
||||||
(let [pad {: x : y : name :hitbox [x y 25 25]}
|
(let [
|
||||||
|
x obj.x
|
||||||
|
y obj.y
|
||||||
|
content obj.content
|
||||||
|
pad {: x : y : content :hitbox [x y 25 25]}
|
||||||
(w h) (assets.objects-sprite:getDimensions)]
|
(w h) (assets.objects-sprite:getDimensions)]
|
||||||
(lambda pad.load [self]
|
(lambda pad.load [self]
|
||||||
(set self.quad (love.graphics.newQuad 75 0 25 25 w h)))
|
(set self.quad (love.graphics.newQuad 75 0 25 25 w h)))
|
||||||
|
|
||||||
|
(lambda pad.on-hit [self]
|
||||||
|
(beholder.trigger "NOTIFICATION" self.content))
|
||||||
|
|
||||||
(fn pad.draw-debug [self]
|
(fn pad.draw-debug [self]
|
||||||
(color.set-color :black)
|
(color.set-color :black)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
(local utils (require "src/utils.fnl"))
|
||||||
(local beholder (require "libs/beholder"))
|
(local beholder (require "libs/beholder"))
|
||||||
(local color (require "src/colors.fnl"))
|
(local color (require "src/colors.fnl"))
|
||||||
(local levels (require "levels.fnl"))
|
(local levels (require "levels.fnl"))
|
||||||
|
|
@ -25,9 +26,23 @@
|
||||||
|
|
||||||
(local width 19)
|
(local width 19)
|
||||||
(local height 15)
|
(local height 15)
|
||||||
(local player { :x 50 :y 50 :w 25 :h 25 :speed 80 :battery 100 :rot 0 :hitbox [50 50 width height] })
|
(local player {
|
||||||
|
:x 50 :y 50 :w 25 :h 25 :speed 80 :battery 100 :rot 0
|
||||||
|
:hitbox [50 50 width height]
|
||||||
|
:init-move false ; nudge the player at start of game to trigger starting collisions
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
(lambda handle-collisions [cols]
|
||||||
|
(each [_ col (pairs cols)]
|
||||||
|
(when col.other.on-hit (col.other:on-hit))
|
||||||
|
(beholder.trigger "PLAYER.HIT" col.other)))
|
||||||
|
|
||||||
(fn player.update [self dt]
|
(fn player.update [self dt]
|
||||||
|
(when (= self.init-move false)
|
||||||
|
(set self.init-move true)
|
||||||
|
(let [(x y cols len) (bump-world:move self self.x self.y bump-filter)]
|
||||||
|
(handle-collisions cols)))
|
||||||
(let [
|
(let [
|
||||||
d-key (love.keyboard.isDown :d)
|
d-key (love.keyboard.isDown :d)
|
||||||
a-key (love.keyboard.isDown :a)
|
a-key (love.keyboard.isDown :a)
|
||||||
|
|
@ -45,6 +60,7 @@
|
||||||
new-x (dir-fn self.x (* self.speed dt (math.cos self.rot)))
|
new-x (dir-fn self.x (* self.speed dt (math.cos self.rot)))
|
||||||
new-y (dir-fn self.y (* self.speed dt (math.sin self.rot)))
|
new-y (dir-fn self.y (* self.speed dt (math.sin self.rot)))
|
||||||
(x y cols len) (bump-world:move self new-x new-y bump-filter)]
|
(x y cols len) (bump-world:move self new-x new-y bump-filter)]
|
||||||
|
(handle-collisions cols)
|
||||||
(set self.x x)
|
(set self.x x)
|
||||||
(set self.y y))
|
(set self.y y))
|
||||||
(if (> self.battery 0)
|
(if (> self.battery 0)
|
||||||
|
|
|
||||||
72
two_player_cleaning_game/src/levels/dev.fnl
Normal file
72
two_player_cleaning_game/src/levels/dev.fnl
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
(local bump (require "libs/bump"))
|
||||||
|
(local color (require "src/colors.fnl"))
|
||||||
|
(local nata (require "libs/nata"))
|
||||||
|
(local utils (require "src/utils.fnl"))
|
||||||
|
(local camera (require "src/systems/camera.fnl"))
|
||||||
|
(local beholder (require "libs/beholder"))
|
||||||
|
(local player (require "src/entities/player.fnl"))
|
||||||
|
(local walls (require "src/systems/walls.fnl"))
|
||||||
|
(local hud (require "src/systems/hud.fnl"))
|
||||||
|
(local levels (require "levels.fnl"))
|
||||||
|
(local info-pad (require "src/entities/info-pad.fnl"))
|
||||||
|
|
||||||
|
(lambda load-objects [level-key pool]
|
||||||
|
(each [_ object (pairs (. levels :levels level-key :objects))]
|
||||||
|
; (debug-print object)
|
||||||
|
(case object.type
|
||||||
|
"info_pad" (pool:queue (info-pad object))
|
||||||
|
))
|
||||||
|
)
|
||||||
|
|
||||||
|
(lambda collider-manager [bump-world]
|
||||||
|
(local collider-manager {})
|
||||||
|
(lambda collider-manager.addToGroup [self group-name entity]
|
||||||
|
(when (= group-name :hitbox)
|
||||||
|
; (utils.debug-print {:adding entity})
|
||||||
|
(bump-world:add entity (unpack entity.hitbox))))
|
||||||
|
collider-manager)
|
||||||
|
|
||||||
|
; (lambda register-notifications []
|
||||||
|
; (beholder.observe "PLAYER.HIT" (lambda [other]
|
||||||
|
; (when (= other.object-type :info-pad)
|
||||||
|
; (beholder.trigger "NOTIFICATION" "[a] is left wheel forward [d] is right wheel forward"))
|
||||||
|
; (utils.debug-print {: other}))))
|
||||||
|
; (beholder.observe "PLAYER.HIT" :info-pad (lambda [info-pad-name]
|
||||||
|
; (case info-pad-name
|
||||||
|
; :controls (beholder.trigger "NOTIFICATION" "[a] is left wheel forward [d] is right wheel forward")
|
||||||
|
; ))))
|
||||||
|
|
||||||
|
|
||||||
|
(fn load [screen]
|
||||||
|
; (register-notifications)
|
||||||
|
(let [
|
||||||
|
canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h)
|
||||||
|
level-key :dev
|
||||||
|
bump-world (bump.newWorld 25)
|
||||||
|
pool (nata.new {
|
||||||
|
:data {
|
||||||
|
: screen
|
||||||
|
: canvas
|
||||||
|
: bump-world
|
||||||
|
: level-key
|
||||||
|
}
|
||||||
|
:groups {
|
||||||
|
; gravity = {filter = {'gravity'}},
|
||||||
|
:hitbox {:filter [:hitbox]}
|
||||||
|
; :post-draw {:filter [:post-draw]}
|
||||||
|
}
|
||||||
|
:systems [
|
||||||
|
(nata:oop)
|
||||||
|
(collider-manager bump-world)
|
||||||
|
camera
|
||||||
|
walls
|
||||||
|
(hud {: screen})
|
||||||
|
]
|
||||||
|
})]
|
||||||
|
(pool:queue (player {: bump-world : level-key}))
|
||||||
|
(load-objects level-key pool)
|
||||||
|
pool))
|
||||||
|
|
||||||
|
{
|
||||||
|
: load
|
||||||
|
}
|
||||||
|
|
@ -26,8 +26,19 @@
|
||||||
(bump-world:add entity (unpack entity.hitbox))))
|
(bump-world:add entity (unpack entity.hitbox))))
|
||||||
collider-manager)
|
collider-manager)
|
||||||
|
|
||||||
|
(lambda register-notifications []
|
||||||
|
(beholder.observe "PLAYER.HIT" (lambda [other]
|
||||||
|
(when (= other.object-type :info-pad)
|
||||||
|
(beholder.trigger "NOTIFICATION" "[a] is left wheel forward [d] is right wheel forward"))
|
||||||
|
(utils.debug-print {: other}))))
|
||||||
|
; (beholder.observe "PLAYER.HIT" :info-pad (lambda [info-pad-name]
|
||||||
|
; (case info-pad-name
|
||||||
|
; :controls (beholder.trigger "NOTIFICATION" "[a] is left wheel forward [d] is right wheel forward")
|
||||||
|
; ))))
|
||||||
|
|
||||||
|
|
||||||
(fn load [screen]
|
(fn load [screen]
|
||||||
|
(register-notifications)
|
||||||
(let [
|
(let [
|
||||||
canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h)
|
canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h)
|
||||||
bump-world (bump.newWorld 25)
|
bump-world (bump.newWorld 25)
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,39 @@
|
||||||
(var screen nil)
|
(var screen nil)
|
||||||
(local hud {
|
(local hud {
|
||||||
:player-battery 0
|
:player-battery 0
|
||||||
|
:notification nil
|
||||||
|
:notification-life 0
|
||||||
})
|
})
|
||||||
|
|
||||||
|
(lambda draw-notification [self]
|
||||||
|
(when (and self.notification (> self.notification-life 0))
|
||||||
|
(love.graphics.push)
|
||||||
|
(love.graphics.translate 0 (- 400 20))
|
||||||
|
(color.set-color :cream)
|
||||||
|
(love.graphics.rectangle "fill" 0 0 screen.canvas-w 20)
|
||||||
|
(color.set-color :dark-purple)
|
||||||
|
(color.set-color :dark-purple)
|
||||||
|
(love.graphics.line 0 0 screen.canvas-w 0)
|
||||||
|
(love.graphics.setFont self.font)
|
||||||
|
(love.graphics.print self.notification 3 3)
|
||||||
|
(love.graphics.pop)))
|
||||||
|
|
||||||
(fn hud.load [self]
|
(fn hud.load [self]
|
||||||
(set self.font (love.graphics.newFont 10))
|
(set self.font (love.graphics.newFont 10))
|
||||||
(set self.font-small (love.graphics.newFont 6))
|
(set self.font-small (love.graphics.newFont 6))
|
||||||
|
|
||||||
(beholder.observe "PLAYER.BATTERY" (lambda [bat]
|
(beholder.observe "PLAYER.BATTERY" (lambda [bat]
|
||||||
(set self.player-battery bat))))
|
(set self.player-battery bat)))
|
||||||
|
|
||||||
|
(beholder.observe "NOTIFICATION" (lambda [text]
|
||||||
|
(set self.notification text)
|
||||||
|
; set life of notification to 5 seconds
|
||||||
|
(set self.notification-life 5))))
|
||||||
|
|
||||||
|
|
||||||
|
(lambda hud.update [self dt]
|
||||||
|
(when (> self.notification-life 0)
|
||||||
|
(set self.notification-life (- self.notification-life dt))))
|
||||||
|
|
||||||
(lambda draw-header [self]
|
(lambda draw-header [self]
|
||||||
(color.set-color :cream)
|
(color.set-color :cream)
|
||||||
|
|
@ -55,7 +80,8 @@
|
||||||
(fn hud.draw90 [self]
|
(fn hud.draw90 [self]
|
||||||
(draw-side-walls self)
|
(draw-side-walls self)
|
||||||
(draw-footer self)
|
(draw-footer self)
|
||||||
(draw-header self))
|
(draw-header self)
|
||||||
|
(draw-notification self))
|
||||||
|
|
||||||
(lambda [{:screen s}]
|
(lambda [{:screen s}]
|
||||||
(set screen s)
|
(set screen s)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue