public void AddSprite(string key, CluwneSprite spritetoadd)
 {
     if (spritetoadd != null && key != "")
     {
         sprites.Add(key, spritetoadd);
     }
     BuildDirectionalSprites();
 }
        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 SpeechBubble(string mobname)
        {
            _resourceManager  = IoCManager.Resolve <IResourceManager>();
            _mobName          = mobname;
            _buildTime        = DateTime.Now;
            _textSprite       = new Text(String.Empty, _resourceManager.GetFont("CALIBRI"));
            _textSprite.Color = SFML.Graphics.Color.Black;
            // TODO Word wrap!
            _textSprite.Position = new Vector2(5, 3);
            _stringBuilder       = new StringBuilder();

            _bubbleRender = new RenderImage(1, 1);
            _bubbleSprite = new Sprite(_bubbleRender);
        }
        public SpeechBubble(string mobname)
        {
            _resourceManager = IoCManager.Resolve<IResourceManager>();
            _mobName = mobname;
            _buildTime = DateTime.Now;
            _textSprite = new Text(String.Empty, _resourceManager.GetFont("CALIBRI"));
            _textSprite.Color = SFML.Graphics.Color.Black;
            // TODO Word wrap!
            _textSprite.Position = new Vector2(5, 3);
            _stringBuilder = new StringBuilder();

            _bubbleRender = new RenderImage(1, 1);
            _bubbleSprite = new Sprite(_bubbleRender);
        }
 public void SetSpriteByKey(string spriteKey)
 {
     if (sprites.ContainsKey(spriteKey))
     {
         currentBaseSprite = sprites[spriteKey];
         if (Owner != null)
         {
             Owner.SendMessage(this, ComponentMessageType.SpriteChanged);
         }
     }
     else
     {
         throw new Exception("Whoops. That sprite isn't in the dictionary.");
     }
 }
        protected virtual bool WasClicked(PointF worldPos)
        {
            if (currentBaseSprite == null || !visible)
            {
                return(false);
            }

            CluwneSprite spriteToCheck = GetActiveDirectionalSprite();

            var AABB =
                new RectangleF(
                    Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.X -
                    (spriteToCheck.Width / 2),
                    Owner.GetComponent <TransformComponent>(ComponentFamily.Transform).Position.Y -
                    (spriteToCheck.Height / 2), spriteToCheck.Width, spriteToCheck.Height);

            if (!AABB.Contains(worldPos))
            {
                return(false);
            }

            // Get the sprite's position within the texture
            var texRect = spriteToCheck.TextureRect;

            // Get the clicked position relative to the texture
            var spritePosition = new Point((int)(worldPos.X - AABB.X + texRect.Left),
                                           (int)(worldPos.Y - AABB.Y + texRect.Top));

            if (spritePosition.X < 0 || spritePosition.Y < 0)
            {
                return(false);
            }

            // Copy the texture to image
            var img = spriteToCheck.Texture.CopyToImage();

            // Check if the clicked pixel is opaque
            if (img.GetPixel((uint)spritePosition.X, (uint)spritePosition.Y).A == 0)
            {
                return(false);
            }

            return(true);
        }
        private CluwneSprite GetActiveDirectionalSprite()
        {
            if (currentBaseSprite == null)
            {
                return(null);
            }

            CluwneSprite sprite = currentBaseSprite;

            string dirName =
                (currentBaseSprite.Name + "_" +
                 Owner.GetComponent <DirectionComponent>(ComponentFamily.Direction).Direction.ToString()).
                ToLowerInvariant();

            if (dirSprites.ContainsKey(dirName))
            {
                sprite = dirSprites[dirName];
            }

            return(sprite);
        }
 public void AddSprite(string key, CluwneSprite spritetoadd)
 {
     if (spritetoadd != null && key != "")
         sprites.Add(key, spritetoadd);
     BuildDirectionalSprites();
 }
Beispiel #9
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);
        }
Beispiel #10
0
 public void SetNotWornSprite(string spritename)
 {
     NotWornSprite = IoCManager.Resolve <IResourceManager>().GetSprite(spritename);
 }
 public void SetSpriteCenter(CluwneSprite sprite, Vector2 center)
 {
     sprite.SetPosition(center.X - (GetActiveDirectionalSprite().AABB.Width / 2),
                        center.Y - (GetActiveDirectionalSprite().AABB.Height / 2));
 }
        public virtual void Render(Vector2 topLeft, Vector2 bottomRight)
        {
            //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 (currentBaseSprite == null)
            {
                return;
            }

            CluwneSprite spriteToRender = GetActiveDirectionalSprite();

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

            SetSpriteCenter(spriteToRender, renderPos);

            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 SetIcon(string name)
 {
     Icon = IoCManager.Resolve <IResourceManager>().GetSprite(name);
 }
 public void SetNotWornSprite(string spritename)
 {
     NotWornSprite = IoCManager.Resolve<IResourceManager>().GetSprite(spritename);
 }
        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));
 }
 public void SetSpriteByKey(string spriteKey)
 {
     if (sprites.ContainsKey(spriteKey))
     {
         currentBaseSprite = sprites[spriteKey];
         if (Owner != null)
             Owner.SendMessage(this, ComponentMessageType.SpriteChanged);
     }
     else
         throw new Exception("Whoops. That sprite isn't in the dictionary.");
 }
 public void SetIcon(string name)
 {
     Icon = IoCManager.Resolve<IResourceManager>().GetSprite(name);
 }