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)); }
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); } }
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()); }