OSDN Git Service

辛夷祭初日の緊急修正多数。
[h58pcdgame/GameScriptCoreLibrary.git] / www / corelib / classes / CharacterClass.js
index 6049df0..6a9c8fd 100644 (file)
-var CharacterClass = function(ownerStage, args)
-{
-       //args[imgAry0, ...]初期状態で描画したい画像のファイル名の配列(アニメーションさせる)を指定
-       CharacterClass.base.apply(this, arguments);
-       //キャラ独自の機能(たとえば攻撃や相手が当たってきたときのあたり判定など)
-               
-       this.interval = 15;
-       this.imageState = -1;
-       //-1:画像は無効
-       // 0:左右歩行中または左右方向に向いて停止中(方向に関係なし。画像はすべて左向きで用意する。)
-       // 1:攻撃アニメーション(一周分表示したら0に戻る)
-       this.imageIndex = 0;
-       this.imageList = [];
-       this.lastImage = null;
-       //キャラが向いている向き(0:Left,1:Right,[2:Up,3:Down])
-       this.direction = 0;
-       
-       this.isItemCollector = true;
-       this.lastFireTick = 0;
-       this.fireTickInterval = 60;
-       
-       for(var k in args){
-               var a = [];
-               for(var f in args[k]){
-                       var img = document.createElement('img');
-                       img.src = "images/" + args[k][f];
-                       a.push(img);
-               }
-               this.imageList.push(a);
-       }
-       if(this.imageList.length > 0){
-               this.imageState = 0;
-       }
-       
-       //初期画像の設定
-       if(this.imageList[0] && this.imageList[0].length > 0){
-               this.lastImage = this.imageList[0][0];
-       }
-}.extend(MovableStageObjectClass, {
-       className: "CharacterClass",
-       draw: function(x, y){
-               MovableStageObjectClass.prototype.draw.apply(this, arguments);
-               if(this.lastImage){
-                       //コンテキスト変換行列を保存
-                       this.ownerStage.mainContext.save();
-                       //コンテキスト変換行列を設定
-                       switch(this.direction){
-                               case 1:
-                                       //Right
-                                       this.ownerStage.mainContext.transform(-1, 0, 0, 1, x + this.size.x, y);
-                                       break;
-                               default:
-                                       //Left, Up, Down, OtherState
-                                       this.ownerStage.mainContext.transform(1, 0, 0, 1, x, y);
-                                       break;
-                       }
-                       //描画
-                       this.ownerStage.mainContext.globalAlpha = this.opacity;
-                       this.ownerStage.mainContext.drawImage(this.lastImage, 0, 0, this.size.x, this.size.y);
-                       this.ownerStage.mainContext.globalAlpha = 1.0;
-                       //コンテキスト変換行列を復帰
-                       this.ownerStage.mainContext.restore();
-               }
-       },
-       tick: function(){
-               MovableStageObjectClass.prototype.tick.apply(this, []);
-               
-               if(this.ownerStage.manager.tickCount % this.interval == 0){
-                       //インターバル時刻になった
-                       if(this.imageState != -1){
-                               if(this.imageList[this.imageState]){
-                                       if(this.imageList[this.imageState].length > 0){
-                                               if(this.imageIndex >= this.imageList[this.imageState].length){
-                                                       this.imageIndex = 0;
-                                                       if(this.imageState == 1){
-                                                               this.imageState = 0;
-                                                       }
-                                               }
-                                               this.lastImage = this.imageList[this.imageState][this.imageIndex];
-                                               if(!(this.imageState == 0 && this.movingSpeed.x == 0)){
-                                                       //imageState:0の時にspeed == 0のときは画像をアニメしない。それ以外の時はインデックスを進める。
-                                                       this.imageIndex ++;
-                                               }
-                                       } else{
-                                               this.lastImage = null;
-                                       }
-                               } else{
-                                       this.lastImage = null;
-                               }
-                       } else{
-                               this.lastImage = null;
-                       }
-               }
-               if(this.movingSpeed.x < 0){
-                       this.direction = 0;
-               } else if(this.movingSpeed.x > 0){
-                       this.direction = 1;
-               }
-       },
-       fire: function()
-       {
-               if(this.lastFireTick < this.ownerStage.manager.tickCount - this.fireTickInterval){
-                       var f = new FireObjectClass(this.ownerStage, [["breadball1.png","breadball2.png","breadball3.png"]]);
-                       if(this.ownerStage.manager.breadItemWidget)
-                       {
-                               var score = this.ownerStage.manager.breadItemWidget.getLastSelectedBreadIndex();
-                               if(score != -1)
-                               {
-                                       if(score > 50) score = 50;
-                                       this.touchDamage *= (score / 50);
-                                       f.fire(this);
-                                       this.lastFireTick = this.ownerStage.manager.tickCount;
-                               }else
-                               {
-                                       showAlert(this.ownerStage.manager, "武器が選択されていません");
-                               }
-                       }
-               }
-       }
-       
-});
-
+var CharacterClass = function(ownerStage, args)\r
+{\r
+       //args[imgAry0, ...]初期状態で描画したい画像のファイル名の配列(アニメーションさせる)を指定\r
+       CharacterClass.base.apply(this, arguments);\r
+       //キャラ独自の機能(たとえば攻撃や相手が当たってきたときのあたり判定など)\r
+               \r
+       this.interval = 15;\r
+       this.imageState = -1;\r
+       //-1:画像は無効\r
+       // 0:左右歩行中または左右方向に向いて停止中(方向に関係なし。画像はすべて左向きで用意する。)\r
+       // 1:攻撃アニメーション(一周分表示したら0に戻る)\r
+       this.imageIndex = 0;\r
+       this.imageList = [];\r
+       this.lastImage = null;\r
+       //キャラが向いている向き(0:Left,1:Right,[2:Up,3:Down])\r
+       this.direction = 0;\r
+       \r
+       this.isItemCollector = true;\r
+       this.lastFireTick = 0;\r
+       this.fireTickInterval = 60;\r
+       \r
+       for(var k in args){\r
+               var a = [];\r
+               for(var f in args[k]){\r
+                       var img = document.createElement('img');\r
+                       img.src = "images/" + args[k][f];\r
+                       a.push(img);\r
+               }\r
+               this.imageList.push(a);\r
+       }\r
+       if(this.imageList.length > 0){\r
+               this.imageState = 0;\r
+       }\r
+       \r
+       //初期画像の設定\r
+       if(this.imageList[0] && this.imageList[0].length > 0){\r
+               this.lastImage = this.imageList[0][0];\r
+       }\r
+}.extend(MovableStageObjectClass, {\r
+       className: "CharacterClass",\r
+       draw: function(x, y){\r
+               MovableStageObjectClass.prototype.draw.apply(this, arguments);\r
+               if(this.lastImage){\r
+                       //コンテキスト変換行列を保存\r
+                       this.ownerStage.mainContext.save();\r
+                       //コンテキスト変換行列を設定\r
+                       switch(this.direction){\r
+                               case 1:\r
+                                       //Right\r
+                                       this.ownerStage.mainContext.transform(-1, 0, 0, 1, x + this.size.x, y);\r
+                                       break;\r
+                               default:\r
+                                       //Left, Up, Down, OtherState\r
+                                       this.ownerStage.mainContext.transform(1, 0, 0, 1, x, y);\r
+                                       break;\r
+                       }\r
+                       //描画\r
+                       this.ownerStage.mainContext.globalAlpha = this.opacity;\r
+                       this.ownerStage.mainContext.drawImage(this.lastImage, 0, 0, this.size.x, this.size.y);\r
+                       this.ownerStage.mainContext.globalAlpha = 1.0;\r
+                       //コンテキスト変換行列を復帰\r
+                       this.ownerStage.mainContext.restore();\r
+               }\r
+       },\r
+       tick: function(){\r
+               MovableStageObjectClass.prototype.tick.apply(this, []);\r
+               \r
+               if(this.ownerStage.manager.tickCount % this.interval == 0){\r
+                       //インターバル時刻になった\r
+                       if(this.imageState != -1){\r
+                               if(this.imageList[this.imageState]){\r
+                                       if(this.imageList[this.imageState].length > 0){\r
+                                               if(this.imageIndex >= this.imageList[this.imageState].length){\r
+                                                       this.imageIndex = 0;\r
+                                                       if(this.imageState == 1){\r
+                                                               this.imageState = 0;\r
+                                                       }\r
+                                               }\r
+                                               this.lastImage = this.imageList[this.imageState][this.imageIndex];\r
+                                               if(!(this.imageState == 0 && this.movingSpeed.x == 0)){\r
+                                                       //imageState:0の時にspeed == 0のときは画像をアニメしない。それ以外の時はインデックスを進める。\r
+                                                       this.imageIndex ++;\r
+                                               }\r
+                                       } else{\r
+                                               this.lastImage = null;\r
+                                       }\r
+                               } else{\r
+                                       this.lastImage = null;\r
+                               }\r
+                       } else{\r
+                               this.lastImage = null;\r
+                       }\r
+               }\r
+               if(this.movingSpeed.x < 0){\r
+                       this.direction = 0;\r
+               } else if(this.movingSpeed.x > 0){\r
+                       this.direction = 1;\r
+               }\r
+       },\r
+       fire: function()\r
+       {\r
+               if(this.lastFireTick < this.ownerStage.manager.tickCount - this.fireTickInterval){\r
+                       var f = new FireObjectClass(this.ownerStage, [["breadball1.png","breadball2.png","breadball3.png"]]);\r
+                       if(this.ownerStage.manager.breadItemWidget)\r
+                       {\r
+                               var score = this.ownerStage.manager.breadItemWidget.getLastSelectedBreadIndex();\r
+                               if(score != -1)\r
+                               {\r
+                                       if(score > 50) score = 50;\r
+                                       this.touchDamage *= (score / 50);\r
+                                       f.fire(this);\r
+                                       this.lastFireTick = this.ownerStage.manager.tickCount;\r
+                               }else\r
+                               {\r
+                                       showAlert(this.ownerStage.manager, "武器が選択されていません");\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       \r
+});\r
+\r