Ignore:
Timestamp:
2013-07-23 19:11:27 (6 years ago)
Author:
dezhidki
Message:

Puut lisätty, woodcutter toimii.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/Mobs/MobWoodcutter.cs

    r4581 r4590  
    77using CastleMaster.Graphics; 
    88using IsometricEngineTest.Ai.Orders; 
     9using Microsoft.Xna.Framework; 
     10using CastleMaster.Entities.TileEntities; 
    911 
    1012namespace CastleMaster.Units.Mobs 
     
    1214    public class MobWoodcutter : Mob 
    1315    { 
     16        private TileEntityTree currentTarget; 
     17        private bool isChopping = false, isOrderedToChop = false; 
     18        private AnimationHelper choppingAnimation; 
     19        private AnimationHelper choppingTimer; 
     20        private int currentSpriteX; 
     21 
    1422        public MobWoodcutter(Level level, Player owner) 
    1523            : base(level, owner) 
     
    2028            renderOffset.Y = 20; 
    2129 
    22             highlightOffset.X = 10; 
     30            highlightOffset.X = 11; 
    2331 
    2432            rectOffset.Update(-4.0F, -4.0F, 5.0F, 5.0F); 
     
    2634 
    2735            moveSpeed = 1.0F; 
     36            choppingAnimation = new AnimationHelper(10, 5, false, 3); 
     37            choppingTimer = new AnimationHelper(30, 1); 
     38            choppingTimer.RoundEnded += delegate() 
     39            { 
     40                currentTarget.AvaliableLogs--; 
     41                if (currentTarget.AvaliableLogs <= 0) 
     42                { 
     43                    StopChopping(); 
     44                    currentTarget.Remove(); 
     45                    currentTarget = null; 
     46                } 
     47            }; 
     48        } 
    2849 
    29             walkingAnimation = new AnimationHelper(10, 5); 
     50        private void StartChopping() 
     51        { 
     52            choppingAnimation.Start(); 
     53            choppingTimer.Start(); 
     54            isChopping = true; 
     55        } 
     56 
     57        private void StopChopping() 
     58        { 
     59            isChopping = false; 
     60            isOrderedToChop = false; 
     61            choppingAnimation.Stop(); 
     62            choppingAnimation.Reset(); 
     63            choppingTimer.Stop(); 
     64            choppingTimer.Reset(); 
    3065        } 
    3166 
    3267        public override void OnFunctionClick() 
    3368        { 
    34             SetOrder(new OrderMove(Owner.Camera.MouseWorldPos.X, Owner.Camera.MouseWorldPos.Y)); 
     69            TileEntity te = level.GetTileEntity(Owner.Camera.MouseTilePos.X, Owner.Camera.MouseTilePos.Y); 
     70            if (te != null && typeof(TileEntityTree).IsAssignableFrom(te.GetType())) 
     71            { 
     72                if (currentTarget != null) StopChopping(); 
     73                isOrderedToChop = true; 
     74                currentTarget = (TileEntityTree)te; 
     75                SetOrder(new OrderMove(te.X, te.Z, 20.0F, true)); 
     76            } 
     77            else 
     78            { 
     79                if (isChopping) 
     80                { 
     81                    StopChopping(); 
     82                    currentTarget = null; 
     83                } 
     84                SetOrder(new OrderMove(Owner.Camera.MouseWorldPos.X, Owner.Camera.MouseWorldPos.Y)); 
     85            } 
     86        } 
     87 
     88        protected override void OnOrderFinished() 
     89        { 
     90            if (isOrderedToChop) 
     91                StartChopping(); 
    3592        } 
    3693 
     
    3895        { 
    3996            base.Update(); 
    40             walkingAnimation.UpdateStep(); 
     97 
     98            if (isChopping) 
     99            { 
     100                choppingAnimation.UpdateStep(); 
     101                choppingTimer.UpdateStep(); 
     102            } 
     103 
     104            currentSpriteX = isChopping ? choppingAnimation.CurrentFrame : walkingAnimation.CurrentFrame; 
    41105        } 
    42106 
     
    44108        { 
    45109            base.Render(renderer); 
    46             renderer.Render(ScreenPos, 0, dirID, Resources.SPRITESHEET_WOODCUTTER, Viewport.ZOOM); 
     110            renderer.Render(ScreenPos, currentSpriteX, dirID, Resources.SPRITESHEET_WOODCUTTER, Viewport.ZOOM); 
    47111        } 
    48112    } 
Note: See TracChangeset for help on using the changeset viewer.