changeset 9:8864a2065794

separate a library
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Tue, 30 Oct 2012 20:50:31 +0100
parents 749a58f3117c
children 6314a8b18d71
files mhrok.js
diffstat 1 files changed, 46 insertions(+), 55 deletions(-) [+]
line wrap: on
line diff
--- a/mhrok.js	Tue Oct 30 20:32:26 2012 +0100
+++ b/mhrok.js	Tue Oct 30 20:50:31 2012 +0100
@@ -1,37 +1,16 @@
-(function () {
+MhrokLib = function () {
     var Mob = function () {
-        this.animation = 'stand';
         this.x = 0;
         this.y = 0;
         this.x = 0;
-        this.frame = 0;
         this.frameX = 0;
         this.frameY = 0;
     };
     Mob.prototype = {};
     Mob.prototype.classes = 'mhrok-mob';
-    Mob.prototype.animations = {
-        stand: {
-            frames: [
-                [0, 0], [0, 0], [0, 1], [0, 1],
-                [0, 2], [0, 2], [0, 3], [0, 3],
-            ],
-            motion: [
-                [0, 0], [0, 0], [0, 0], [0, 0],
-                [0, 0], [0, 0], [0, 0], [0, 0],
-            ]
-        }
-    };
     Mob.prototype.animate = function (frame) {
-        var animation = this.animations[this.animation];
-        var motion = animation.motion[frame];
-        var tile = animation.frames[this.frame];
-        this.frame = frame;
-        this.frameX = tile[0];
-        this.frameY = tile[1];
-        this.x += motion[0];
-        this.y += motion[1];
-        this.z = this.y;
+        this.frameX = 0;
+        this.frameY = Math.round(frame / 2);
     };
     Mob.prototype.update = function (game) {};
     Mob.prototype.html = function () {
@@ -85,6 +64,7 @@
             this.frameX = dir[2] + 8;
             this.frameY = Math.round(frame / 2);
         };
+        this.z = this.y;
     };
     Hero.prototype.update = function (game) {
         if (game.keys[37] || game.last_key === 37) { // Left arrow
@@ -134,40 +114,13 @@
         this.map_element = element.getElementsByClassName('mhrok-map')[0];
         this.mobs_element = element.getElementsByClassName('mhrok-mobs')[0];
         this.element = element;
-    };
-    Game.prototype = {};
-    Game.prototype.run = function () {
         this.frame_number = 0;
         this.mobs = [];
         this.keys = {};
         this.last_key = null;
-
-        this.level = new Level([
-            'XXXXXXXXXXXXXXXXXXXX',
-            'XabaaaaaaaaaaaaaaaaX',
-            'XaaaaaabaaaaaaaaaaaX',
-            'XaaaabbbaaaaaaaaaabX',
-            'XaababbbaaaaaaaaaabX',
-            'XaaaaabbbaabbaaaaabX',
-            'XaaaaaabbaabbaaaaaaX',
-            'XaaaaaaaaaaaaaabbaaX',
-            'XaaaaaaaaaaabaabbaaX',
-            'XaaaaaaaaaaaaaaaaaaX',
-            'XaaaaaaaaaaaabbbbabX',
-            'XaaaaaaaaaaaabbbbabX',
-            'XaaabbaaaaaaaaabaabX',
-            'XaabbbbaaaaaaaaaabbX',
-            'XaabbbbaaaaaaaaaabbX',
-            'XaaabbaaaaaaaaaaabbX',
-            'XaaaaaaaaaabaabbbbbX',
-            'XaaaaaabbabbbbbbbbbX',
-            'XaaaabbbbbbbbbbbbbbX',
-            'XXXXXXXXXXXXXXXXXXXX',
-        ]);
-        this.map_element.innerHTML = this.level.html();
-        this.hero = new Hero(this);
-        this.mobs.push(this.hero);
-
+    };
+    Game.prototype = {};
+    Game.prototype.run = function () {
         var that = this;
         this.animation = window.setInterval(function () {
             that.frame();
@@ -263,6 +216,45 @@
         this.mobs_element.innerHTML = html;
     };
 
+    return {
+        Game: Game,
+        Mob: Mob,
+        Hero: Hero,
+        Level: Level,
+    }
+} ();
+
+
+(function () {
+    var Game = function () {
+        MhrokLib.Game.apply(this, arguments);
+        this.level = new MhrokLib.Level([
+            'XXXXXXXXXXXXXXXXXXXX',
+            'XabaaaaaaaaaaaaaaaaX',
+            'XaaaaaabaaaaaaaaaaaX',
+            'XaaaabbbaaaaaaaaaabX',
+            'XaababbbaaaaaaaaaabX',
+            'XaaaaabbbaabbaaaaabX',
+            'XaaaaaabbaabbaaaaaaX',
+            'XaaaaaaaaaaaaaabbaaX',
+            'XaaaaaaaaaaabaabbaaX',
+            'XaaaaaaaaaaaaaaaaaaX',
+            'XaaaaaaaaaaaabbbbabX',
+            'XaaaaaaaaaaaabbbbabX',
+            'XaaabbaaaaaaaaabaabX',
+            'XaabbbbaaaaaaaaaabbX',
+            'XaabbbbaaaaaaaaaabbX',
+            'XaaabbaaaaaaaaaaabbX',
+            'XaaaaaaaaaabaabbbbbX',
+            'XaaaaaabbabbbbbbbbbX',
+            'XaaaabbbbbbbbbbbbbbX',
+            'XXXXXXXXXXXXXXXXXXXX',
+        ]);
+        this.map_element.innerHTML = this.level.html();
+        this.hero = new MhrokLib.Hero();
+        this.mobs.push(this.hero);
+    };
+    Game.prototype = Object.create(MhrokLib.Game.prototype);
 
     window.addEventListener('load', function () {
         var element = window.document.getElementById('mhrok');
@@ -271,5 +263,4 @@
             game.run();
         };
     }, false);
-
 } ());