Esempio n. 1
0
        private void DrawItems(SpriteBatch spriteBatch, float alpha, Vector2 viewPosition, float scaleSize, ShowcaseDrawMode drawMode, DepthProvider depthProvider)
        {
            if (ItemProvider.All(i => i == null))
            {
                return;
            }
            ItemProvider.UpdateCurrentRotation(currentRotation);

            var itemProvider     = (drawMode != ShowcaseDrawMode.Icon)? ItemProvider : ItemProvider.Clone(newRotation: 0);
            var actualSourceRect = (drawMode != ShowcaseDrawMode.Icon)? sourceRect : defaultSourceRect;
            var layout           = GetLayout(scaleSize, actualSourceRect, itemProvider);

            if (drawMode != ShowcaseDrawMode.Icon)
            {
                ForEachDrawItem(itemProvider, layout, (item, relativeItemPosition)
                                => DrawItemShadow(item, spriteBatch, viewPosition + relativeItemPosition, alpha, scaleSize, depthProvider));
                ForEachDrawItem(itemProvider, layout, (item, relativeItemPosition)
                                => UpdateItemGlow(item, spriteBatch, viewPosition + relativeItemPosition, alpha, scaleSize, depthProvider));
            }

            ForEachDrawItem(itemProvider, layout, (item, relativeItemPosition)
                            => DrawItem((dynamic)item, spriteBatch, viewPosition + relativeItemPosition, alpha, scaleSize, depthProvider));
        }
Esempio n. 2
0
        public void Draw(SpriteBatch spriteBatch, float alpha, Vector2 viewPosition, float scaleSize, float layerDepth, ShowcaseDrawMode drawMode)
        {
            var depthProvider = new DepthProvider(layerDepth);

            DrawFurniture(spriteBatch, viewPosition, alpha, scaleSize, Config.Sprite, Color.White, drawMode, depthProvider);

            var tintColor = Config.AutoTint? GetAutoTintColor() : Color;

            if (Config.Tint != null && tintColor != Color.Black)
            {
                DrawFurniture(spriteBatch, viewPosition, alpha, scaleSize, Config.Tint, tintColor, drawMode, depthProvider);
            }
            if (drawMode != ShowcaseDrawMode.WithoutItems)
            {
                DrawItems(spriteBatch, alpha, viewPosition, scaleSize, drawMode, depthProvider);
            }
            if (Config.SecondSprite != null)
            {
                DrawFurniture(spriteBatch, viewPosition, alpha, scaleSize, Config.SecondSprite, Color.White, drawMode, depthProvider);
            }
            if (Config.SecondTint != null && tintColor != Color.Black)
            {
                DrawFurniture(spriteBatch, viewPosition, alpha, scaleSize, Config.SecondTint, tintColor, drawMode, depthProvider);
            }
        }
Esempio n. 3
0
        private void DrawFurniture(SpriteBatch spriteBatch, Vector2 viewPosition, float alpha, float scaleSize, SpriteInfo sprite, Color color, ShowcaseDrawMode drawMode, DepthProvider depthProvider)
        {
            var currentSourceRect = GetDefaultSourceRect(sprite, defaultSourceRect.Width, defaultSourceRect.Height);

            if (drawMode != ShowcaseDrawMode.Icon)
            {
                currentSourceRect.X     += (sourceRect.X - defaultSourceRect.X);
                currentSourceRect.Y     += (sourceRect.Y - defaultSourceRect.Y);
                currentSourceRect.Height = sourceRect.Height;
                currentSourceRect.Width  = sourceRect.Width;
            }

            spriteBatch.Draw(
                GetTexture(sprite),
                viewPosition,
                currentSourceRect,
                color * alpha,
                0,
                Vector2.Zero,
                scaleSize,
                (flipped && drawMode != ShowcaseDrawMode.Icon) ? SpriteEffects.FlipHorizontally : SpriteEffects.None,
                depthProvider.GetDepth());
        }