示例#1
0
        public void Draw(SpriteBatch spriteBatch, bool editing, float itemDepth = -1)
        {
            if (!IsActive || picker == null || !CanBeAttached(picker) || !picker.IsKeyDown(InputType.Aim) || picker != Character.Controlled)
            {
                Drawable = false;
                return;
            }

            Vector2 gridPos        = picker.Position;
            Vector2 roundedGridPos = new Vector2(
                MathUtils.RoundTowardsClosest(picker.Position.X, Submarine.GridSize.X),
                MathUtils.RoundTowardsClosest(picker.Position.Y, Submarine.GridSize.Y));
            Vector2 attachPos = GetAttachPosition(picker);

            if (item.Submarine == null)
            {
                Structure attachTarget = Structure.GetAttachTarget(item.WorldPosition);
                if (attachTarget != null)
                {
                    if (attachTarget.Submarine != null)
                    {
                        //set to submarine-relative position
                        gridPos        += attachTarget.Submarine.Position;
                        roundedGridPos += attachTarget.Submarine.Position;
                        attachPos      += attachTarget.Submarine.Position;
                    }
                }
            }
            else
            {
                gridPos        += item.Submarine.Position;
                roundedGridPos += item.Submarine.Position;
                attachPos      += item.Submarine.Position;
            }

            Submarine.DrawGrid(spriteBatch, 14, gridPos, roundedGridPos, alpha: 0.7f);

            item.Sprite.Draw(
                spriteBatch,
                new Vector2(attachPos.X, -attachPos.Y),
                item.SpriteColor * 0.5f,
                0.0f, item.Scale, SpriteEffects.None, 0.0f);

            GUI.DrawRectangle(spriteBatch, new Vector2(attachPos.X - 2, -attachPos.Y - 2), Vector2.One * 5, GUI.Style.Red, thickness: 3);
        }