diff --git a/src/jsds.js b/src/jsds.js
index 0985479..195cc25 100644
--- a/src/jsds.js
+++ b/src/jsds.js
@@ -1,87 +1,157 @@
{
- function Creature(info,attributes,properties,drawinfo,battle){
- /* info: pname, cname,class, level, experience, race, size
- * attributes: body, agility, spirit
- * properties: strength, hardness, movement, skill, mind, aura
- * drawinfo: x,y,w,h,col
- */
- this.info = {"pname": info["pname"]+"", "experience": info["experience"]*1, "race":info["race"]+"",
- "size":info["size"]*1};
- this.attributes = {"body": attributes["body"]*1, "agility": attributes["agility"]*1,
- "spirit": attributes["spirit"]*1};
- this.properties = {"strength": properties["strength"]*1 , "hardness": info["hardness"]*1,
- "movement": info["movement"]*1, "skill": properties["skill"]*1,
- "mind": properties["mind"]*1, "aura": properties["aura"]*1};
- this.graphelement = Crafty.e("Creature").creature(this.info["pname"],drawinfo["x"],drawinfo["y"],
- drawinfo["w"],drawinfo["h"],drawinfo["col"]);
+ // OOP-Setup
+ var reflection = {};
+
+ (function(){
+ var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
- this.battle = {};
- if(battle) {
- this.battle={"life": battle["life"], "defense": battle["defense"],"ini":battle["ini"],
- "walk": battle["walk"], "melee": battle["melee"], "shoot": battle["shoot"],
- "chant": battle["chant"], "shoot_chant": battle["shoot_chant"]};
- }
- else {
- this.battle["life"] = this.attributes.body + this.properties.strength + 10;
- this.battle["defense"] = this.attributes.body + this.properties.hardness;
- this.battle["ini"] = this.attributes.agility + this.properties.movement;
- this.battle["walk"] = (this.attributes.agility / 2) +1;
- this.battle["melee"] = this.attributes.body + this.properties.strength;
- this.battle["shoot"] = this.attributes.agility + this.properties.mind;
- this.battle["chant"] = this.attributes.spirit + this.properties.aura;
- this.battle["shoot_chant"] = this.attributes.spirit + this.properties.skill;
+ // The base Class implementation (does nothing)
+ this.Class = function(){ };
+
+ // Create a new Class that inherits from this class
+ Class.extend = function(prop, ref_name) {
+ if(ref_name)
+ reflection[ref_name] = Class;
+
+ var _super = this.prototype;
+
+ // Instantiate a base class (but only create the instance,
+ // don't run the init constructor)
+ initializing = true;
+ var prototype = new this();
+ initializing = false;
+
+ // Copy the properties over onto the new prototype
+ for (var name in prop) {
+ // Check if we're overwriting an existing function
+ prototype[name] = typeof prop[name] == "function" &&
+ typeof _super[name] == "function" && fnTest.test(prop[name]) ?
+ (function(name, fn) {
+ return function() {
+ var tmp = this._super;
+
+ // Add a new ._super() method that is the same method
+ // but on the super-class
+ this._super = _super[name];
+
+ // The method only need to be bound temporarily, so we
+ // remove it when we're done executing
+ var ret = fn.apply(this, arguments);
+ this._super = tmp;
+
+ return ret;
+ };
+ })(name, prop[name]) :
+ prop[name];
+ }
+
+ // The dummy class constructor
+ function Class() {
+ // All construction is actually done in the init method
+ if ( !initializing && this.init )
+ this.init.apply(this, arguments);
+ }
+
+ // Populate our constructed prototype object
+ Class.prototype = prototype;
+
+ // Enforce the constructor to be what we expect
+ Class.prototype.constructor = Class;
+
+ // And make this class extendable
+ Class.extend = arguments.callee;
+
+ return Class;
};
- this.life = this.battle["life"]*1;
- };
-
- Creature.prototype.attack = function(enem) {
- console.log("attack");
- //console.log(this.cname+" greift "+enem.cname+" an!");
- //console.log("Ergebnis: " + this.melee + ( this.melee > enem.defense? " > " : " < ") + enem.defense);
- };
-
+ })();
- function Player(info,attributes,properties,drawinfo,battle){ // x,y,w,h,col) {
- /* info: pname, cname,class, level, experience, race, size
- * attributes: body, agility, spirit
- * properties: strength, hardness, movement, skill, mind, aura
- * drawinfo: x,y,w,h,col
- */
+ var Creature = Class.extend({
+ init: function(info,attributes,properties,drawinfo,battle){
+ /* info: pname, cname,class, level, experience, race, size
+ * attributes: body, agility, spirit
+ * properties: strength, hardness, movement, skill, mind, aura
+ * drawinfo: x,y,w,h,col
+ */
+ console.log("Creature called!");
+ this.info = {"pname": info["pname"]+"", "experience": info["experience"]*1, "race":info["race"]+"",
+ "size":info["size"]*1};
+ console.log("Creature Ready!");
+ this.attributes = {"body": attributes["body"]*1, "agility": attributes["agility"]*1,
+ "spirit": attributes["spirit"]*1};
+ console.log("Problem?");
+ this.properties = {"strength": properties["strength"]*1 , "hardness": properties["hardness"]*1,
+ "movement": properties["movement"]*1, "skill": properties["skill"]*1,
+ "mind": properties["mind"]*1, "aura": properties["aura"]*1};
+ this.graphelement = Crafty.e("Creature").creature(this.info["pname"],drawinfo["x"],drawinfo["y"],
+ drawinfo["w"],drawinfo["h"],drawinfo["col"]);
+
+ this.battle = {};
+ if(battle) {
+ this.battle={"life": battle["life"]*1, "defense": battle["defense"]*1,"ini":battle["ini"]*1,
+ "walk": battle["walk"]*1, "melee": battle["melee"]*1, "shoot": battle["shoot"]*1,
+ "chant": battle["chant"]*1, "shoot_chant": battle["shoot_chant"]*1};
+ }
+ else {
+ this.battle["life"] = this.attributes.body + this.properties.strength + 10;;
+ this.battle["defense"] = this.attributes.body + this.properties.hardness;
+ this.battle["ini"] = this.attributes.agility + this.properties.movement;
+ this.battle["walk"] = (this.attributes.agility / 2) +1;
+ this.battle["melee"] = this.attributes.body + this.properties.strength;
+ this.battle["shoot"] = this.attributes.agility + this.properties.mind;
+ this.battle["chant"] = this.attributes.spirit + this.properties.aura;
+ this.battle["shoot_chant"] = this.attributes.spirit + this.properties.skill;
+ };
+ this.life = this.battle["life"]*1;
+ },
+ attack: function(enem) {
+ //console.log("attack");
+ console.log(this.info.cname+" greift "+enem.info.cname+" an!");
+ console.log("Ergebnis: " + this.battle.melee + ( this.battle.melee > enem.battle.defense ? " > " : " < ") + enem.battle.defense);
+ }
+ });
+
+ var Player = Creature.extend({
+ init: function(info,attributes,properties,drawinfo,battle){ // x,y,w,h,col) {
+ /* info: pname, cname,class, level, experience, race, size
+ * attributes: body, agility, spirit
+ * properties: strength, hardness, movement, skill, mind, aura
+ * drawinfo: x,y,w,h,col
+ */
+ this._super(info,attributes,properties,drawinfo,battle);
+ this.info["cname"]= info["cname"]+"";
+ this.info["class"]= info["class"]+"";
+ this.info["level"]= info["level"]*1;
+
+ // Set default battle-propoerties.
+ this.extern = {"armor":0,"chant":0,"weapon":0};
+ console.log(this.battle.defense);
+ this.battle.defense += this.extern.armor;
+ this.battle.melee += this.extern.weapon;
+ this.battle.shoot += this.extern.weapon;
+ this.battle.chant = this.battle.chant + this.extern.chant - this.extern.armor;
+ this.battle.shoot_chant = this.battle.chant + this.extern.chant - this.extern.armor;
+ },
+ printoutput: function() {
+ $('#output').empty();
+ $('#output').html(this.info.cname+"
"+this.info.pname);
+ }
+ });
- Creature.apply(this, arguments);
- this.info["cname"]= info["cname"]+"";
- this.info["class"]= info["class"]+"";
- this.info["level"]= info["level"]*1;
-
- // Set default battle-propoerties.
- this.extern = {"armor":0,"chant":0,"weapon":0};
- this.battle["defense"] += this.extern.armor;
- this.battle.melee += this.extern.weapon;
- this.battle.shoot += this.extern.weapon;
- this.battle.chant = this.battle.chant + this.extern.chant - this.extern.armor;
- this.battle.shoot_chant = this.battle.chant + this.extern.chant - this.extern.armor;
- };
- Player.prototype = new Creature();
-
- Player.prototype.printoutput = function() {
- $('#output').empty();
- $('#output').html(this.info.cname+"
"+this.info.pname);
- };
-
- function Beast(info,attributes,properties,drawinfo,battle){ // x,y,w,h,col) {
- /* info: pname, experience, race, size
- * attributes: body, agility, spirit
- * properties: strength, hardness, movement, skill, mind, aura
- * drawinfo: x,y,w,h,col
- * battle: life, defense,ini,walk,melee,shoot,chant,shoot_chant
- */
-
- Creature.apply(this,arguments);
- this.info.cname=this.info.pname;
- };
-
- Beast.prototype.printoutput = function() {
- $('#output').empty();
- $('#output').html(this.info.race+"
"+this.info.pname);
- };
+ var Beast = Creature.extend({
+ init: function(info,attributes,properties,drawinfo,battle){ // x,y,w,h,col) {
+ /* info: pname, experience, race, size
+ * attributes: body, agility, spirit
+ * properties: strength, hardness, movement, skill, mind, aura
+ * drawinfo: x,y,w,h,col
+ * battle: life, defense,ini,walk,melee,shoot,chant,shoot_chant
+ */
+
+ this._super(info,attributes,properties,drawinfo,battle);
+ this.info.cname=this.info.pname;
+ },
+ printoutput: function() {
+ $('#output').empty();
+ $('#output').html(this.info.race+"
"+this.info.pname);
+ }
+ });
}
diff --git a/src/jsds_crafty.js b/src/jsds_crafty.js
index 98bc924..fad6d0c 100644
--- a/src/jsds_crafty.js
+++ b/src/jsds_crafty.js
@@ -78,8 +78,6 @@
this.enableControl();
};
if(e.mouseButton === Crafty.mouseButtons.RIGHT) {
- console.log(player[this.id]);
- console.log(cur_sel);
cur_sel.attack(player[this.id]);
};
});