]> git.lizzy.rs Git - dragonblocks.git/blobdiff - game/fire/init.js
Map abstraction and World class
[dragonblocks.git] / game / fire / init.js
index 0d8c5fbfa3f2701d2191d88c84ce7c5868e5e4ec..3f391317f7f29e0117ad1ea6028f3421085c56eb 100644 (file)
@@ -10,12 +10,12 @@ fire.playBurnSound = function(){
        };
        audio.play();
 }
-fire.catchfire = function(x, y){
-       let mapNode = dragonblocks.getNode(x, y);
+fire.catchfire = function(map, x, y){
+       let mapNode = map.getNode(x, y);
        if(mapNode && mapNode.toNode().flammable){
                if(mapNode.toNode().onfire && mapNode.toNode().onfire(x, y) == false)
                        return;
-               dragonblocks.player.place(x, y - 1, "fire:fire");
+               dragonblocks.player.place(map, x, y - 1, "fire:fire");
        }
 }
 dragonblocks.registerGroup({
@@ -33,26 +33,26 @@ dragonblocks.registerNode({
                dug: "fire_dug.ogg",
                place: "",
        },
-       onset : (x, y) => {
-               let meta = dragonblocks.getNode(x, y).meta;
+       onset: (map, x, y) => {
+               let meta = map.getNode(x, y).meta;
                meta.fireInterval = setInterval(_ => {
                        if(dblib.random(0, 6) == 0);
                                fire.playBurnSound();
                        for(let ix = x - 1; ix <= x + 1; ix++){
                                for(let iy = y - 1; iy <= y + 2; iy++){
                                        if(dblib.random(0, 3) == 0)
-                                               fire.catchfire(ix, iy);
+                                               fire.catchfire(map, ix, iy);
                                }
                        }
-                       if(! dragonblocks.getNode(x, y + 1) || ! dragonblocks.getNode(x, y + 1).toNode().inGroup("flammable")){
-                               if(dblib.random(0, 20) == 0)
-                                       dragonblocks.setNode(x, y, "air");
+                       if (! map.getNode(x, y + 1) || ! map.getNode(x, y + 1).toNode().inGroup("flammable")) {
+                               if (dblib.random(0, 20) == 0)
+                                       map.setNode(x, y, "air");
+                       } else if (dblib.random(0, map.getNode(x, y + 1).toNode().hardness * 2) == 0) {
+                               dragonblocks.player.dig(map, x, y + 1);
                        }
-                       else if(dblib.random(0, dragonblocks.getNode(x, y + 1).toNode().hardness * 2) == 0)
-                               dragonblocks.player.dig(x, y + 1);
                }, 1000);
        },
-       onremove : (x, y) => {
-               clearInterval(dragonblocks.getNode(x, y).meta.fireInterval);
+       onremove: (map, x, y) => {
+               clearInterval(map.getNode(x, y).meta.fireInterval);
        }
 });