Ignore:
Timestamp:
2015-06-30 20:07:55 (6 years ago)
Author:
sieerinn
Message:

Kamoissa näkyy käyttökerrat. Kamasysteemin toimivuutta paranneltu. Kojootin kuvat.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2015/27/ohjaajat/TheLegendOfGabriel/TheLegendOfGabriel/TheLegendOfGabriel/Item.cs

    r6625 r6626  
    1313    public Image InventoryImage { get; set; } 
    1414 
     15    public IntMeter Usages { get; set; } 
     16 
    1517    // Onko kama tällä hetkellä aktiivisessa käytössä. 
    1618    public virtual bool InUse { get; set; } 
     
    3133    public virtual void UseKeyReleased() { } 
    3234 
     35    public virtual void CancelUse() { } 
     36 
    3337    protected Item(Player player) 
    3438    { 
     39        Usages = new IntMeter(0, 0, 0); 
    3540        this.player = player; 
    3641    } 
     
    6974        if (SwordObject != null && InUse) 
    7075        { 
    71             var dir = SwingDirection; 
    72             var swordAngle = swordAngles[player.Animation.CurrentFrameIndex]; 
    73             if (dir == Direction.Left) 
    74                 swordAngle = Angle.FromDegrees(swordAngle.Degrees * -1); 
    75             SwordObject.Position = player.Position + (dir.Angle + swordAngle).GetVector() * 15; 
    76             SwordObject.Angle = swordAngle + Angle.FromDegrees(dir == Direction.Left || dir == Direction.Right ? 90 : 0); 
    77             SwordObject.Angle += Angle.FromDegrees(dir == Direction.Right || dir == Direction.Down ? 180 : 0); 
     76            if (player.Animation.CurrentFrameIndex < swordAngles.Length) 
     77            { 
     78                var dir = SwingDirection; 
     79                var swordAngle = swordAngles[player.Animation.CurrentFrameIndex]; 
     80                if (dir == Direction.Left) 
     81                    swordAngle = Angle.FromDegrees(swordAngle.Degrees * -1); 
     82                SwordObject.Position = player.Position + (dir.Angle + swordAngle).GetVector() * 15; 
     83                SwordObject.Angle = swordAngle + Angle.FromDegrees(dir == Direction.Left || dir == Direction.Right ? 90 : 0); 
     84                SwordObject.Angle += Angle.FromDegrees(dir == Direction.Right || dir == Direction.Down ? 180 : 0);    
     85            } 
    7886        } 
    7987        base.UpdateItem(time); 
     
    106114        base.UseKeyPressed(); 
    107115    } 
     116 
     117    public override void CancelUse() 
     118    { 
     119        InUse = false; 
     120        player.SetWalkAnimation(); 
     121        if (SwordObject != null) 
     122        { 
     123            SwordObject.Destroy(); 
     124            SwordObject = null; 
     125        } 
     126    } 
    108127} 
    109128 
     
    125144        : base(player) 
    126145    { 
     146        Usages.MaxValue = 15; 
     147        Usages.Value = 15; 
    127148        Charge = new DoubleMeter(0, 0, 4); 
    128149        InventoryImage = TheLegendOfGabriel.GunImage; 
     
    140161    public override void UseKeyPressed() 
    141162    { 
     163        if (Usages.Value == 0) 
     164        { 
     165            base.UseKeyPressed(); 
     166            return; 
     167        } 
     168 
    142169        InUse = true; 
    143170        isCharging = true; // Ase alkaa latautumaan. 
     
    159186        if (player.Animation.CurrentFrameIndex == player.Animation.FrameCount - 1) 
    160187        { 
     188            Usages.Value--; 
     189 
    161190            var bullet = new PhysicsObject(4, 4); 
    162191            bullet.Position = player.Position + ShootDirection.GetVector() * player.Width * 0.7; 
     
    164193            Game.Instance.Add(bullet); 
    165194        } 
    166  
     195        CancelUse(); 
     196 
     197        base.UseKeyReleased(); 
     198    } 
     199 
     200    public override void CancelUse() 
     201    { 
    167202        InUse = false; 
    168203        isCharging = false; 
    169204        player.MovementSpeed.Value = player.MovementSpeed.MaxValue; 
    170205        player.SetWalkAnimation(); 
    171  
    172         base.UseKeyReleased(); 
     206        base.CancelUse(); 
    173207    } 
    174208} 
     
    199233    public override void UseKeyReleased() 
    200234    { 
     235        CancelUse(); 
     236        base.UseKeyReleased(); 
     237    } 
     238 
     239    public override void CancelUse() 
     240    { 
    201241        InUse = false; 
    202242        if (bigMonocle != null) 
     
    205245            bigMonocle = null; 
    206246        } 
    207         base.UseKeyReleased(); 
     247        base.CancelUse(); 
    208248    } 
    209249 
Note: See TracChangeset for help on using the changeset viewer.