OSDN Git Service

敵キャラのDmageEffect
authorttwilb <ttwilb@users.sourceforge.jp>
Thu, 5 Sep 2013 07:37:52 +0000 (16:37 +0900)
committerttwilb <ttwilb@users.sourceforge.jp>
Thu, 5 Sep 2013 07:37:52 +0000 (16:37 +0900)
www/corelib/classes/EnemyCharacterClass.js

index d0639e8..602e3ea 100644 (file)
@@ -26,10 +26,25 @@ var EnemyCharacterClass = function(stage, args){
        this.max_HP = 20;
        this.HP = this.max_HP;
        this.isWeaponed = false;
+       
+       // 攻撃を受けた際などに一時的に無敵モードになるように
+       // これがないと攻撃を受けたことが分かりにくくなる
+       this.isDamageDefenseMode = false;
+       this.damageDefenseModeTimeStamp = 0;
+       this.damageDefenseModeLong = 500;
+       
 }.extend(OperatedCharacterClass, {
        className: "EnemyCharacterClass",
        tick : function()
        {
+               if(this.isDamageDefenseMode)
+               {
+                       if((+new Date()) > this.damageDefenseModeTimeStamp + this.damageDefenseModeLong)
+                       {
+                               this.isDamageDefenseMode = false;
+                       }
+               }
+               
                var main = this.ownerStage.userControlledCharacter;
                var distX = main.origin.x - this.origin.x - ((this.chasingMode == 0) ? this.fightingRange : -this.fightingRange);
                if(this.chasing && Math.abs(distX) <= this.chasingRange && Math.abs(this.origin.y - main.origin.y) <= this.chasingRange){
@@ -64,13 +79,16 @@ var EnemyCharacterClass = function(stage, args){
                }
                //自分自身のダメージ
                if(this.hurting){
-                       if(this.hurtPerTickCount == this.hurtPerTickBase){
-                               this.damage(this.hurt);
-                               this.hurtPerTickCount--;
-                       } else{
-                               this.hurtPerTickCount--;
-                               if(this.hurtPerTickCount <= 0){
-                                       this.hurtPerTickCount = this.hurtPerTickBase;
+                       if(!this.isDamageDefenseMode)
+                       {
+                               if(this.hurtPerTickCount == this.hurtPerTickBase){
+                                       this.damage(this.hurt);
+                                       this.hurtPerTickCount--;
+                               } else{
+                                       this.hurtPerTickCount--;
+                                       if(this.hurtPerTickCount <= 0){
+                                               this.hurtPerTickCount = this.hurtPerTickBase;
+                                       }
                                }
                        }
                }
@@ -125,9 +143,17 @@ var EnemyCharacterClass = function(stage, args){
        },
        draw: function(x, y){
                EnemyCharacterClass.base.prototype.draw.apply(this, arguments);
+               this.ownerStage.mainContext.save();
+               if(this.isDamageDefenseMode)
+               {
+                       var d = ((+new Date()) - this.damageDefenseModeTimeStamp) / this.damageDefenseModeLong;
+                       this.ownerStage.mainContext.fillStyle = "rgba(255,0,0," + d + ")";
+                       this.ownerStage.mainContext.fillRectangle(x, y, this.size.x, this.size.y);
+               }
+               
                if(this.hurt > 0)
                {
-                       this.ownerStage.mainContext.save();
+                       
                        var backColor = "gray";
                        var thickness = 4;
                        var barWidth = this.max_HP;
@@ -147,8 +173,7 @@ var EnemyCharacterClass = function(stage, args){
                        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();
                }
-       },
+               this.ownerStage.mainContext.restore();
+       }
 });