OSDN Git Service

Merge branch 'master' of https://scm.sourceforge.jp/gitroot/h58pcdgame/GameScriptCore...
[h58pcdgame/GameScriptCoreLibrary.git] / www / corelib / classes / MainCharacterClass.js
index 7fe69c4..a0dada1 100644 (file)
-var MainCharacterClass = function(stage, args, isFromNetwork){
-       MainCharacterClass.base.apply(this);
-       this.create(stage, args);
-       if(stage){
-               if(!isFromNetwork){
-                       this.ownerUID = stage.manager.userID;
-                       stage.userControlledCharacter = this;
-                       stage.addStageObject(this, true);
-               } else{
-                       stage.addStageObject(this, true, true);
-               }
-       }
-       
-       // 攻撃を受けた際などに一時的に無敵モードになるように
-       // これがないと攻撃を受けたことが分かりにくくなる
-       this.isDamageDefenseMode = false;
-       this.damageDefenseModeTimeStamp = 0;
-       this.damageDefenseModeLong = 500;
-       
-       // 探し回ってしまった。こんな時間の無駄を今後はしないようにするため記述しておく
-       this.max_HP = 100;
-       this.HP = 100;
-       
-}.extend(OperatedCharacterClass, {
-       className: "MainCharacterClass",
-       create: function(stage, args){
-               MainCharacterClass.base.apply(this, arguments);
-               this.max_HP = 100;
-               this.HP = this.max_HP;
-       },
-       tick : function()
-       {
-               if(this.isDamageDefenseMode)
-               {
-                       if((+new Date()) > this.damageDefenseModeTimeStamp + this.damageDefenseModeLong)
-                       {
-                               this.isDamageDefenseMode = false;
-                       }
-               }
-               MainCharacterClass.base.prototype.tick.apply(this);
-               if((!mainManager.runningStageName || this.ownerStage.manager.userID == this.ownerUID) && this.origin.y > 1000){
-                       this.kill();
-               }
-       },
-       damage: function(p){
-               if(!this.isDamageDefenseMode)
-               {
-                       if(this.HP <= p){
-                               
-                               this.kill();
-                       } else{
-                               this.HP -= p;
-                       }
-                       this.isDamageDefenseMode = true;
-                       this.damageDefenseModeTimeStamp = (+new Date());
-               }
-       },
-       heal: function(p){
-               if(this.HP + p > this.max_HP){
-                       this.HP = this.max_HP;
-               } else{
-                       this.HP += p;
-               }
-       },
-       kill: function(){
-               this.HP = 0;
-               //終了処理および再読み込みはmainManager側で行われる。
-       },
-       draw: function(x, y){
-               
-               if(!this.isDamageDefenseMode || (+new Date()) % 200 < 100)
-               {
-                       //自分を描画
-                       MainCharacterClass.base.prototype.draw.apply(this, [x, y]);
-               }
-               
-               if(this != this.ownerStage.userControlledCharacter)
-               {
-                       this.ownerStage.mainContext.save();
-                       var color = "green";
-                       var backColor = "gray";
-                       var thickness = 4;
-                       var barWidth = this.max_HP;
-                       if(barWidth < 16) barWidth = 16;
-                       if(barWidth > this.size.x) barWidth = this.size.x;
-                       var barPerHP = this.HP / this.max_HP;
-                       
-                       if(barPerHP < 0.2)
-                       {
-                               var backColor = "red";
-                       }else if(barPerHP < 0.4)
-                       {
-                               var backColor = "yellow";
-                       }
-                       
-                       this.ownerStage.mainContext.fillStyle = backColor;
-                       this.ownerStage.mainContext.fillRect(x + (this.size.x - barWidth) / 2, y - thickness, barWidth, thickness);
-                       this.ownerStage.mainContext.fillStyle = color;
-                       this.ownerStage.mainContext.fillRect(x + (this.size.x - barWidth) / 2, y - thickness, barWidth * barPerHP, thickness);
-                       
-                       this.ownerStage.mainContext.restore();
-               }
-       }
-});
-
-/*
-MainCharacterClass.createCharacter = function(stage, args)
-{
-       var id = stage.manager.userManager.characterId;
-       if(id == 0)
-       {
-               return new MainCharacterClass_Hunter(stage, args);
-       }else if(id == 1)
-       {
-               return new MainCharacterClass_Man(stage, args);
-       }else if(id == 2)
-       {
-               return new MainCharacterClass_NakedMan(stage, args);
-       }else if(id == 3)
-       {
-               return new MainCharacterClass_Thief(stage, args);
-       }else if(id == 4)
-       {
-               return new MainCharacterClass_Witch(stage, args);
-       }else
-       {
-               return new MainCharacterClass_Woman(stage, args);
-       }
-};
-*/
-
+var MainCharacterClass = function(stage, args, isFromNetwork){\r
+       MainCharacterClass.base.apply(this);\r
+       this.create(stage, args);\r
+       if(stage){\r
+               if(!isFromNetwork){\r
+                       this.ownerUID = stage.manager.userID;\r
+                       stage.userControlledCharacter = this;\r
+                       stage.addStageObject(this, true);\r
+               } else{\r
+                       stage.addStageObject(this, true, true);\r
+               }\r
+       }\r
+       \r
+       // 攻撃を受けた際などに一時的に無敵モードになるように\r
+       // これがないと攻撃を受けたことが分かりにくくなる\r
+       this.isDamageDefenseMode = false;\r
+       this.damageDefenseModeTimeStamp = 0;\r
+       this.damageDefenseModeLong = 500;\r
+       \r
+       // 探し回ってしまった。こんな時間の無駄を今後はしないようにするため記述しておく\r
+       this.max_HP = 100;\r
+       this.HP = 100;\r
+       //this.isPhantom = true;\r
+}.extend(OperatedCharacterClass, {\r
+       className: "MainCharacterClass",\r
+       create: function(stage, args){\r
+               MainCharacterClass.base.apply(this, arguments);\r
+               this.max_HP = 100;\r
+               this.HP = this.max_HP;\r
+       },\r
+       tick : function()\r
+       {\r
+               if(this.isDamageDefenseMode)\r
+               {\r
+                       if((+new Date()) > this.damageDefenseModeTimeStamp + this.damageDefenseModeLong)\r
+                       {\r
+                               this.isDamageDefenseMode = false;\r
+                       }\r
+               }\r
+               MainCharacterClass.base.prototype.tick.apply(this);\r
+               if((!mainManager.runningStageName || this.ownerStage.manager.userID == this.ownerUID) && this.origin.y > 1000){\r
+                       this.kill();\r
+               }\r
+       },\r
+       damage: function(p){\r
+               if(!this.isDamageDefenseMode)\r
+               {\r
+                       if(this.HP <= p){\r
+                               \r
+                               this.kill();\r
+                       } else{\r
+                               this.HP -= p;\r
+                       }\r
+                       this.isDamageDefenseMode = true;\r
+                       this.damageDefenseModeTimeStamp = (+new Date());\r
+               }\r
+       },\r
+       heal: function(p){\r
+               if(this.HP + p > this.max_HP){\r
+                       this.HP = this.max_HP;\r
+               } else{\r
+                       this.HP += p;\r
+               }\r
+       },\r
+       kill: function(){\r
+               this.HP = 0;\r
+               //終了処理および再読み込みはmainManager側で行われる。\r
+       },\r
+       draw: function(x, y){\r
+               \r
+               if(!this.isDamageDefenseMode || (+new Date()) % 200 < 100)\r
+               {\r
+                       //自分を描画\r
+                       MainCharacterClass.base.prototype.draw.apply(this, [x, y]);\r
+               }\r
+               \r
+               if(this != this.ownerStage.userControlledCharacter)\r
+               {\r
+                       this.ownerStage.mainContext.save();\r
+                       var color = "green";\r
+                       var backColor = "gray";\r
+                       var thickness = 4;\r
+                       var barWidth = this.max_HP;\r
+                       if(barWidth < 16) barWidth = 16;\r
+                       if(barWidth > this.size.x) barWidth = this.size.x;\r
+                       var barPerHP = this.HP / this.max_HP;\r
+                       \r
+                       if(barPerHP < 0.2)\r
+                       {\r
+                               var backColor = "red";\r
+                       }else if(barPerHP < 0.4)\r
+                       {\r
+                               var backColor = "yellow";\r
+                       }\r
+                       \r
+                       this.ownerStage.mainContext.fillStyle = backColor;\r
+                       this.ownerStage.mainContext.fillRect(x + (this.size.x - barWidth) / 2, y - thickness, barWidth, thickness);\r
+                       this.ownerStage.mainContext.fillStyle = color;\r
+                       this.ownerStage.mainContext.fillRect(x + (this.size.x - barWidth) / 2, y - thickness, barWidth * barPerHP, thickness);\r
+                       \r
+                       this.ownerStage.mainContext.restore();\r
+               }\r
+       },\r
+       canMoveTo: function(x, y){\r
+               //すべてのオブジェクトに対して(x, y)にあるときの自分の衝突状態を調べる。\r
+               var retv = true;\r
+               var d = this.ownerStage.stageObjectLinearList;\r
+               \r
+               this.onLadder = false;\r
+               for(var i = 0, i_max = d.length; i < i_max; i++){\r
+                       var f = d[i];\r
+                       if(f !== this && !(f instanceof MainCharacterClass)){\r
+                               //自分でない\r
+                               if(f.isOverlappedWithLocatedObject(this, x, y)){\r
+                                       //衝突先fの衝突範囲内にいる\r
+                                       if(this.isItemCollector){\r
+                                               //衝突先fを取得したアイテムに加える。\r
+                                               var titem = null;\r
+                                               for(titem in this.collectedItems){\r
+                                                       //複数追加の防止\r
+                                                       if(titem == f){\r
+                                                               break;\r
+                                                       }\r
+                                               }\r
+                                               if(titem != f){\r
+                                                       this.collectedItems.push(f);\r
+                                                       if(f instanceof LadderBlockClass){\r
+                                                               this.onLadder = true;\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                                       if(f.isPhantom){\r
+                                               //衝突先fが衝突判定無視だったら、衝突はしない\r
+                                       } else{\r
+                                               //衝突した\r
+                                               retv = false;\r
+                                               //break;\r
+                                       }\r
+                                       \r
+                               }\r
+                       }\r
+               }\r
+               return retv;\r
+       },\r
+});\r
+\r
+/*\r
+MainCharacterClass.createCharacter = function(stage, args)\r
+{\r
+       var id = stage.manager.userManager.characterId;\r
+       if(id == 0)\r
+       {\r
+               return new MainCharacterClass_Hunter(stage, args);\r
+       }else if(id == 1)\r
+       {\r
+               return new MainCharacterClass_Man(stage, args);\r
+       }else if(id == 2)\r
+       {\r
+               return new MainCharacterClass_NakedMan(stage, args);\r
+       }else if(id == 3)\r
+       {\r
+               return new MainCharacterClass_Thief(stage, args);\r
+       }else if(id == 4)\r
+       {\r
+               return new MainCharacterClass_Witch(stage, args);\r
+       }else\r
+       {\r
+               return new MainCharacterClass_Woman(stage, args);\r
+       }\r
+};\r
+*/\r
+\r