Exemplo n.º 1
0
        public void Draw(SpriteBatch spriteBatch)
        {
            //calculate the offset for texture to the position origin
            //calculate amount of movement as a fraction of elapsed time

            spriteBatch.Draw(Data.Texture, Data.Position, null, Color.White, Data.FacingAngle,
                             Data.Texture.Origin(), 1.0f, SpriteEffects.None, Data.Height);

            foreach (var comp in Data.Components)
            {
                //If the component hasn't a facing direction set, then just point forward
                //comp.Data.FacingAngle = comp.Data.Destination.Count > 0 ?
                //                        comp.Data.Destination[0].Angle() : Data.FacingAngle;

                //Calculate where to draw the component, in relation to the unit
                if (comp.Data.Texture != null)
                {
                    var compPosition = Data.Position + comp.Data.Position.Rotate(Data.FacingAngle);

                    spriteBatch.Draw(comp.Data.Texture, compPosition, null, Color.White,
                                     comp.Data.FacingAngle, comp.Data.Texture.Origin(),
                                     1.0f, SpriteEffects.None, comp.Data.Height);
                }

                if ((comp.Data.UnitName == UnitsEnum.DEFAULT) &&
                    (comp.Data.Timer.ElapsedMilliseconds > comp.Data.Timeout))
                {
                    var t = UnitFactory.New(UnitsEnum.MISSILE, new UnitData
                    {
                        Position     = Data.Position + comp.Data.Position.Rotate(Data.FacingAngle),
                        MovementMode = MovementMode.INTERCEPT,
                        Timeout      = 2000,
                        Timer        = new System.Diagnostics.Stopwatch(),
                    });
                    t.Data.Timer.Start();
                    comp.Data.Timer.Restart();
                    Game1.AddUnit(t);
                }
            }

            //if (Destination.Count > 0)
            //{
            //    spriteBatch.DrawLine(_pixel, Position, Destination[0], Game1.SelectColor);
            //    spriteBatch.DrawLine(_pixel, Position, Steering, Color.Blue);
            //    spriteBatch.DrawLine(_pixel, Position, Velocity, Color.Red);
            //}
        }