]> git.plutz.net Git - flarejs/blobdiff - engine.js
obey stacking order when drawing hero layers
[flarejs] / engine.js
index 30c06f6868d454318a24d897d60dc29200a68cfe..c769ccab2a3a9acdb9d333bf80cdf93a17021cec 100644 (file)
--- a/engine.js
+++ b/engine.js
@@ -54,23 +54,35 @@ function Mob(textdef) {
 }
 
 function Player(gender = "female", hair = "short"){
-  // this.head  = new Mob("/animations/avatar/"+gender+"/head_short.txt")
-  // this.chest = new Mob("/animations/avatar/"+gender+"/default_chest.txt")
-  // this.hands = new Mob("/animations/avatar/"+gender+"/default_hands.txt")
-  // this.legs  = new Mob("/animations/avatar/"+gender+"/default_legs.txt")
-  // this.feet  = new Mob("/animations/avatar/"+gender+"/default_feet.txt")
-  this.limbs = [
-    (gender == "female")?new Mob("/animations/avatar/female/head_long.txt"):new Mob("/animations/avatar/male/head_"+hair+".txt"),
-    new Mob("/animations/avatar/"+gender+"/default_chest.txt"),
-    new Mob("/animations/avatar/"+gender+"/default_hands.txt"),
-    new Mob("/animations/avatar/"+gender+"/default_legs.txt"),
-    new Mob("/animations/avatar/"+gender+"/default_feet.txt")
-  ]
+  this.x=0; this.y=0; this.direction=0;
+  this.limbs = {
+    head : (gender == "female")?new Mob("/animations/avatar/female/head_long.txt"):new Mob("/animations/avatar/male/head_"+hair+".txt"),
+    chest: new Mob("/animations/avatar/"+gender+"/default_chest.txt"),
+    hands: new Mob("/animations/avatar/"+gender+"/default_hands.txt"),
+    legs : new Mob("/animations/avatar/"+gender+"/default_legs.txt"),
+    feet : new Mob("/animations/avatar/"+gender+"/default_feet.txt"),
+    main : new Mob("/animations/avatar/"+gender+"/club.txt"),
+    off  : new Mob("/animations/avatar/"+gender+"/shield.txt")
+  }
 
-  this.place   = function(x,y){ this.limbs.forEach(limb => limb.place(x,y));   return this; }
-  this.direct  = function(x,y){ this.limbs.forEach(limb => limb.direct(x,y));  return this; }
-  this.animate = function(x,y){ this.limbs.forEach(limb => limb.animate(x,y)); return this; }
-  this.draw    = function(x,y){ this.limbs.forEach(limb => limb.draw(x,y));    return this; }
+  this.place   = function(x,y) {
+    this.x = x; this.y = y;
+    for (var limb in this.limbs) this.limbs[limb].place(x,y);
+    return this;
+  }
+  this.direct  = function(d)   {
+    this.direction = d;
+    for (var limb in this.limbs) this.limbs[limb].direct(d);
+    return this;
+  }
+  this.animate = function(anim){
+    for (var limb in this.limbs) this.limbs[limb].animate(anim);
+    return this;
+  }
+  this.draw    = function(){
+    gamedata["/engine/hero_layers.txt"].layers[this.direction].forEach(limb => this.limbs[limb].draw());
+    return this;
+  }
 }
 
 canvas = document.getElementById("view").getContext("2d");