public void Draw(Vector2 position, Vector2 windowOrigin, Sprite spriteToDrawAbove)
        {
            if ((DateTime.Now - _buildTime).TotalMilliseconds >= MillisecondsToLive)
            {
                return;
            }

            float x = position.X - windowOrigin.X - (_bubbleSprite.Width / 2.0f);
            float y = position.Y - windowOrigin.Y - (_bubbleSprite.Height) - (spriteToDrawAbove.Height / 2.0f) - 5.0f;

            _bubbleSprite.SetPosition(x, y);
            _bubbleSprite.Draw();
        }
 public void SetSpriteCenter(CluwneSprite sprite, Vector2 center)
 {
     sprite.SetPosition(center.X - (GetActiveDirectionalSprite().AABB.Width/2),
                        center.Y - (GetActiveDirectionalSprite().AABB.Height/2));
 }
Beispiel #3
0
        public override void Render(Vector2 topLeft, Vector2 bottomRight)
        {
            if (IsCurrentlyWorn && currentSprite == baseSprite)
            {
                base.Render(topLeft, bottomRight);
                return;
            }
            else if (IsCurrentlyCarried && currentSprite != CarriedSprite)
            {
                SetSprite(CarriedSprite);
                base.Render(topLeft, bottomRight);
                return;
            }

            //Render slaves beneath
            IEnumerable <SpriteComponent> renderablesBeneath = from SpriteComponent c in slaves
                                                               //FIXTHIS
                                                               orderby c.DrawDepth ascending
                                                               where c.DrawDepth < DrawDepth
                                                               select c;

            foreach (SpriteComponent component in renderablesBeneath.ToList())
            {
                component.Render(topLeft, bottomRight);
            }

            //Render this sprite
            if (!visible)
            {
                return;
            }
            if (NotWornSprite == null)
            {
                return;
            }

            Sprite spriteToRender = NotWornSprite;

            Vector2 renderPos =
                ClientWindowData.Singleton.WorldToScreen(
                    Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position);

            spriteToRender.SetPosition(renderPos.X - (spriteToRender.AABB.Width / 2),
                                       renderPos.Y - (spriteToRender.AABB.Height / 2));

            if (Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.X + spriteToRender.AABB.Right <
                topLeft.X ||
                Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.X > bottomRight.X
                ||
                Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.Y +
                spriteToRender.AABB.Bottom < topLeft.Y ||
                Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.Y > bottomRight.Y)
            {
                return;
            }

            spriteToRender.HorizontalFlip = flip;
            spriteToRender.Draw();
            spriteToRender.HorizontalFlip = false;

            //Render slaves above
            IEnumerable <SpriteComponent> renderablesAbove = from SpriteComponent c in slaves
                                                             //FIXTHIS
                                                             orderby c.DrawDepth ascending
                                                             where c.DrawDepth >= DrawDepth
                                                             select c;

            foreach (SpriteComponent component in renderablesAbove.ToList())
            {
                component.Render(topLeft, bottomRight);
            }


            //Draw AABB
            var aabb = AABB;
            //CluwneLib.CurrentRenderTarget.Rectangle(renderPos.X - aabb.Width / 2, renderPos.Y - aabb.Height / 2, aabb.Width, aabb.Height, Color.Lime);
        }
 public void SetSpriteCenter(CluwneSprite sprite, Vector2 center)
 {
     sprite.SetPosition(center.X - (GetActiveDirectionalSprite().AABB.Width / 2),
                        center.Y - (GetActiveDirectionalSprite().AABB.Height / 2));
 }