Ignore:
Timestamp:
2013-07-23 14:56:43 (8 years ago)
Author:
dezhidki
Message:

Talletus.

File:
1 edited

Legend:

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

    r4550 r4581  
    66using CastleMaster.World; 
    77using CastleMaster.Players; 
     8using CastleMaster.Physics; 
     9using Microsoft.Xna.Framework; 
     10using CastleMaster.Graphics; 
    811 
    912namespace CastleMaster.Units 
     
    1215    { 
    1316        protected bool isSelectable, isSelected; 
     17        protected BoundingRectangle screenRect; 
     18        protected BoundingRectangle screenRectOffset; 
     19        protected Vector2 highlightOffset = Vector2.Zero; 
     20        protected Point spriteSize; 
     21        private float timer = -MathHelper.TwoPi, arrowSpeed = 0.1F; 
     22        private Vector2 arrowOffs = Vector2.Zero; 
     23        private Player owner; 
    1424 
    1525        public Unit(Level level, Player owner) 
    1626            : base(level) 
    1727        { 
     28            this.owner = owner; 
     29 
     30            spriteSize = new Point(32, 32); 
     31            screenRectOffset = new BoundingRectangle(0, 0, spriteSize.X, spriteSize.Y, null); 
    1832            isSelectable = true; 
    1933            isSelected = false; 
    2034        } 
     35 
     36        public bool IsSelectable { get { return isSelectable; } } 
     37 
     38        public Player Owner { get { return owner; } } 
     39 
     40        public override void Init() 
     41        { 
     42            base.Init(); 
     43        } 
     44 
     45        public virtual void OnSelectGain() 
     46        { 
     47            isSelected = true; 
     48        } 
     49 
     50        public virtual void OnSelectLost() 
     51        { 
     52            isSelected = false; 
     53        } 
     54 
     55        public virtual void OnFunctionClick() { } 
     56 
     57        public override void Update() 
     58        { 
     59            if (isSelected) 
     60            { 
     61                timer += arrowSpeed; 
     62                if (timer >= MathHelper.TwoPi) timer = -MathHelper.TwoPi; 
     63                arrowOffs.Y = (float)Math.Sin(timer) * 2.0F; 
     64            } 
     65        } 
     66 
     67        public bool IntersectsWithScreenSpace(float x0, float y0, float x1, float y1) 
     68        { 
     69            if (!isSelectable) return false; 
     70            screenRect = new BoundingRectangle(screenPos.X, screenPos.Y, screenPos.X, screenPos.Y, this).AddSelf(screenRectOffset).Scale(Viewport.ZOOM); 
     71            return screenRect.Intersects(x0, y0, x1, y1); 
     72        } 
     73 
     74        public float DistanceTo(float x, float z) 
     75        { 
     76            float xd = X - x; 
     77            float zd = Z - z; 
     78 
     79            return (float)(Math.Sqrt(xd * xd + zd * zd)); 
     80        } 
     81 
     82        public float DistanceFromScreenSpaceSqr(float x, float y) 
     83        { 
     84            float dx = screenPos.X * Viewport.ZOOM - x; 
     85            float dy = screenPos.Y * Viewport.ZOOM - y; 
     86 
     87            return dx * dx + dy * dy; 
     88        } 
     89 
     90        public virtual void RenderHighLight(RenderHelper renderer) 
     91        { 
     92            renderer.Render((screenPos + highlightOffset + arrowOffs) * Viewport.ZOOM, 1, 0, Resources.SPRITESHEET_ICONS, Viewport.ZOOM); 
     93        } 
     94 
     95        public override void Render(RenderHelper renderer) 
     96        { 
     97            if (isSelected) 
     98                RenderHighLight(renderer); 
     99        } 
    21100    } 
    22101} 
Note: See TracChangeset for help on using the changeset viewer.