Rework WidgetUtil sprite rendering helpers.
This commit is contained in:
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
var icon = playerDatabase.GetIcon(Badge);
|
||||
if (icon != null)
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(icon, RenderOrigin);
|
||||
WidgetUtils.DrawSprite(icon, RenderOrigin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
checkType += "-disabled";
|
||||
|
||||
var offset = new float2(rect.Left + CheckOffset, rect.Top + CheckOffset);
|
||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("checkbox-bits", checkType), offset);
|
||||
WidgetUtils.DrawSprite(ChromeProvider.GetImage("checkbox-bits", checkType), offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -89,12 +89,12 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
public override void Draw()
|
||||
{
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(mixerSprite, RenderOrigin, new float2(RenderBounds.Size));
|
||||
WidgetUtils.DrawSprite(mixerSprite, RenderOrigin, RenderBounds.Size);
|
||||
|
||||
var sprite = ChromeProvider.GetImage("lobby-bits", "colorpicker");
|
||||
var pos = RenderOrigin + PxFromValue() - new int2((int)sprite.Size.X, (int)sprite.Size.Y) / 2;
|
||||
WidgetUtils.FillEllipseWithColor(new Rectangle(pos.X + 1, pos.Y + 1, (int)sprite.Size.X - 2, (int)sprite.Size.Y - 2), Color);
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos);
|
||||
WidgetUtils.DrawSprite(sprite, pos);
|
||||
}
|
||||
|
||||
void SetValueFromPx(int2 xy)
|
||||
|
||||
@@ -61,11 +61,11 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
var isHover = Ui.MouseOverWidget == this || Children.Any(c => c == Ui.MouseOverWidget);
|
||||
|
||||
var arrowImage = getMarkerImage.Update((isDisabled, Depressed, isHover, false));
|
||||
WidgetUtils.DrawRGBA(arrowImage, stateOffset + new float2(rb.Right - (int)((rb.Height + arrowImage.Size.X) / 2), rb.Top + (int)((rb.Height - arrowImage.Size.Y) / 2)));
|
||||
WidgetUtils.DrawSprite(arrowImage, stateOffset + new float2(rb.Right - (int)((rb.Height + arrowImage.Size.X) / 2), rb.Top + (int)((rb.Height - arrowImage.Size.Y) / 2)));
|
||||
|
||||
var separatorImage = getSeparatorImage.Update((isDisabled, Depressed, isHover, false));
|
||||
if (separatorImage != null)
|
||||
WidgetUtils.DrawRGBA(separatorImage, stateOffset + new float2(-3, 0) + new float2(rb.Right - rb.Height + 4, rb.Top + (int)((rb.Height - separatorImage.Size.Y) / 2)));
|
||||
WidgetUtils.DrawSprite(separatorImage, stateOffset + new float2(-3, 0) + new float2(rb.Right - rb.Height + 4, rb.Top + (int)((rb.Height - separatorImage.Size.Y) / 2)));
|
||||
}
|
||||
|
||||
public override Widget Clone() { return new DropDownButtonWidget(this); }
|
||||
|
||||
@@ -67,7 +67,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
if (sprite == null)
|
||||
throw new ArgumentException($"Sprite {collection}/{name} was not found.");
|
||||
|
||||
WidgetUtils.DrawRGBA(sprite, RenderOrigin);
|
||||
WidgetUtils.DrawSprite(sprite, RenderOrigin);
|
||||
}
|
||||
|
||||
public override bool HandleMouseInput(MouseInput mi)
|
||||
|
||||
@@ -181,7 +181,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
var y = RenderBounds.Y + (RenderBounds.Height - h) / 2;
|
||||
mapRect = new Rectangle(x, y, w, h);
|
||||
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(minimap, new float2(mapRect.Location), new float2(mapRect.Size));
|
||||
WidgetUtils.DrawSprite(minimap, mapRect.Location, mapRect.Size);
|
||||
|
||||
TooltipSpawnIndex = -1;
|
||||
if (ShowSpawnPoints)
|
||||
@@ -207,14 +207,14 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
if (disabled)
|
||||
{
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(spawnDisabled, pos - offset);
|
||||
WidgetUtils.DrawSprite(spawnDisabled, pos - offset);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (occupied)
|
||||
WidgetUtils.FillEllipseWithColor(new Rectangle(pos.X - offset.X + 1, pos.Y - offset.Y + 1, (int)sprite.Size.X - 2, (int)sprite.Size.Y - 2), occupant.Color);
|
||||
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos - offset);
|
||||
WidgetUtils.DrawSprite(sprite, pos - offset);
|
||||
|
||||
var number = Convert.ToChar('A' + spawnPoints.IndexOf(p)).ToString();
|
||||
var textOffset = spawnFont.Measure(number) / 2 + spawnLabelOffset;
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
// Cursor is rendered in native window coordinates
|
||||
// Apply same scaling rules as hardware cursors
|
||||
var scale = (graphicSettings.CursorDouble ? 2 : 1) * (Game.Renderer.NativeWindowScale > 1.5f ? 2 : 1);
|
||||
WidgetUtils.DrawSHPCentered(sprite, ChildOrigin, directionPalette, scale / Game.Renderer.WindowScale);
|
||||
WidgetUtils.DrawSpriteCentered(sprite, directionPalette, ChildOrigin, scale / Game.Renderer.WindowScale);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
var centerPosition = iconTopLeft;
|
||||
|
||||
var palette = unit.IconPaletteIsPlayerPalette ? unit.IconPalette + player.InternalName : unit.IconPalette;
|
||||
WidgetUtils.DrawSHPCentered(icon.Image, centerPosition + 0.5f * iconSize, worldRenderer.Palette(palette), 0.5f);
|
||||
WidgetUtils.DrawSpriteCentered(icon.Image, worldRenderer.Palette(palette), centerPosition + 0.5f * iconSize, 0.5f);
|
||||
|
||||
armyIcons.Add(new ArmyIcon
|
||||
{
|
||||
|
||||
@@ -144,7 +144,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
var centerPosition = iconTopLeft + 0.5f * iconSize;
|
||||
|
||||
var palette = bi.IconPaletteIsPlayerPalette ? bi.IconPalette + player.InternalName : bi.IconPalette;
|
||||
WidgetUtils.DrawSHPCentered(icon.Image, centerPosition, worldRenderer.Palette(palette), 0.5f);
|
||||
WidgetUtils.DrawSpriteCentered(icon.Image, worldRenderer.Palette(palette), centerPosition, 0.5f);
|
||||
|
||||
var rect = new Rectangle((int)iconTopLeft.X, (int)iconTopLeft.Y, (int)iconSize.X, (int)iconSize.Y);
|
||||
productionIcons.Add(new ProductionIcon
|
||||
@@ -161,15 +161,15 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
.FirstOrDefault(p => p.IsOverlayActive(actor));
|
||||
|
||||
if (pio != null)
|
||||
WidgetUtils.DrawSHPCentered(pio.Sprite, centerPosition + pio.Offset(iconSize),
|
||||
worldRenderer.Palette(pio.Palette), 0.5f);
|
||||
WidgetUtils.DrawSpriteCentered(pio.Sprite, worldRenderer.Palette(pio.Palette),
|
||||
centerPosition + pio.Offset(iconSize), 0.5f);
|
||||
|
||||
var clock = clocks[queue];
|
||||
clock.PlayFetchIndex(ClockSequence, () => current.TotalTime == 0 ? 0 :
|
||||
(current.TotalTime - current.RemainingTime) * (clock.CurrentSequence.Length - 1) / current.TotalTime);
|
||||
|
||||
clock.Tick();
|
||||
WidgetUtils.DrawSHPCentered(clock.Image, centerPosition, worldRenderer.Palette(ClockPalette), 0.5f);
|
||||
WidgetUtils.DrawSpriteCentered(clock.Image, worldRenderer.Palette(ClockPalette), centerPosition, 0.5f);
|
||||
|
||||
queueCol++;
|
||||
}
|
||||
|
||||
@@ -124,14 +124,14 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
supportPowerIconsIcons.Add(new SupportPowersWidget.SupportPowerIcon { Power = item, Pos = location });
|
||||
supportPowerIconsBounds.Add(new Rectangle((int)location.X, (int)location.Y, (int)iconSize.X, (int)iconSize.Y));
|
||||
|
||||
WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer.Palette(item.Info.IconPalette), 0.5f);
|
||||
WidgetUtils.DrawSpriteCentered(icon.Image, worldRenderer.Palette(item.Info.IconPalette), location + 0.5f * iconSize, 0.5f);
|
||||
|
||||
var clock = clocks[power.a.Key];
|
||||
clock.PlayFetchIndex(ClockSequence,
|
||||
() => item.TotalTicks == 0 ? 0 : ((item.TotalTicks - item.RemainingTicks)
|
||||
* (clock.CurrentSequence.Length - 1) / item.TotalTicks));
|
||||
clock.Tick();
|
||||
WidgetUtils.DrawSHPCentered(clock.Image, location + 0.5f * iconSize, worldRenderer.Palette(ClockPalette), 0.5f);
|
||||
WidgetUtils.DrawSpriteCentered(clock.Image, worldRenderer.Palette(ClockPalette), location + 0.5f * iconSize, 0.5f);
|
||||
}
|
||||
|
||||
Game.Renderer.DisableAntialiasingFilter();
|
||||
|
||||
@@ -499,12 +499,12 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
Game.Renderer.EnableAntialiasingFilter();
|
||||
foreach (var icon in icons.Values)
|
||||
{
|
||||
WidgetUtils.DrawSHPCentered(icon.Sprite, icon.Pos + iconOffset, icon.Palette);
|
||||
WidgetUtils.DrawSpriteCentered(icon.Sprite, icon.Palette, icon.Pos + iconOffset);
|
||||
|
||||
// Draw the ProductionIconOverlay's sprite
|
||||
var pio = pios.FirstOrDefault(p => p.IsOverlayActive(icon.Actor));
|
||||
if (pio != null)
|
||||
WidgetUtils.DrawSHPCentered(pio.Sprite, icon.Pos + iconOffset + pio.Offset(IconSize), worldRenderer.Palette(pio.Palette), 1f);
|
||||
WidgetUtils.DrawSpriteCentered(pio.Sprite, worldRenderer.Palette(pio.Palette), icon.Pos + iconOffset + pio.Offset(IconSize));
|
||||
|
||||
// Build progress
|
||||
if (icon.Queued.Count > 0)
|
||||
@@ -515,10 +515,10 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
* (clock.CurrentSequence.Length - 1) / first.TotalTime);
|
||||
clock.Tick();
|
||||
|
||||
WidgetUtils.DrawSHPCentered(clock.Image, icon.Pos + iconOffset, icon.IconClockPalette);
|
||||
WidgetUtils.DrawSpriteCentered(clock.Image, icon.IconClockPalette, icon.Pos + iconOffset);
|
||||
}
|
||||
else if (!buildableItems.Any(a => a.Name == icon.Name))
|
||||
WidgetUtils.DrawSHPCentered(cantBuild.Image, icon.Pos + iconOffset, icon.IconDarkenPalette);
|
||||
WidgetUtils.DrawSpriteCentered(cantBuild.Image, icon.IconDarkenPalette, icon.Pos + iconOffset);
|
||||
}
|
||||
|
||||
Game.Renderer.DisableAntialiasingFilter();
|
||||
|
||||
@@ -194,11 +194,11 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
ButtonWidget.DrawBackground(Button, rightButtonRect, rightDisabled, rightPressed, rightHover, false);
|
||||
|
||||
var leftArrowImage = getLeftArrowImage.Update((leftDisabled, leftPressed, leftHover, false));
|
||||
WidgetUtils.DrawRGBA(leftArrowImage,
|
||||
WidgetUtils.DrawSprite(leftArrowImage,
|
||||
new float2(leftButtonRect.Left + 2, leftButtonRect.Top + 2));
|
||||
|
||||
var rightArrowImage = getRightArrowImage.Update((rightDisabled, rightPressed, rightHover, false));
|
||||
WidgetUtils.DrawRGBA(rightArrowImage,
|
||||
WidgetUtils.DrawSprite(rightArrowImage,
|
||||
new float2(rightButtonRect.Left + 2, rightButtonRect.Top + 2));
|
||||
|
||||
// Draw tab buttons
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
{
|
||||
var sprite = GetSprite();
|
||||
if (sprite != null)
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, RenderOrigin);
|
||||
WidgetUtils.DrawSprite(sprite, RenderOrigin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -339,12 +339,11 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
var o = new float2(mapRect.Location.X, mapRect.Location.Y + world.Map.Bounds.Height * previewScale * (1 - radarMinimapHeight) / 2);
|
||||
var s = new float2(mapRect.Size.Width, mapRect.Size.Height * radarMinimapHeight);
|
||||
|
||||
var rsr = Game.Renderer.RgbaSpriteRenderer;
|
||||
rsr.DrawSprite(terrainSprite, o, s);
|
||||
rsr.DrawSprite(actorSprite, o, s);
|
||||
WidgetUtils.DrawSprite(terrainSprite, o, s);
|
||||
WidgetUtils.DrawSprite(actorSprite, o, s);
|
||||
|
||||
if (shroud != null)
|
||||
rsr.DrawSprite(shroudSprite, o, s);
|
||||
WidgetUtils.DrawSprite(shroudSprite, o, s);
|
||||
|
||||
// Draw viewport rect
|
||||
if (hasRadar)
|
||||
|
||||
@@ -90,7 +90,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
var x = (b.Left + b.Right - indicator.Size.X) / 2;
|
||||
var y = float2.Lerp(b.Bottom, b.Top, usedFrac) - indicator.Size.Y / 2;
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(indicator, new float2(x, y));
|
||||
WidgetUtils.DrawSprite(indicator, new float2(x, y));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -100,7 +100,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
var x = float2.Lerp(b.Left, b.Right, usedFrac) - indicator.Size.X / 2;
|
||||
var y = (b.Bottom + b.Top - indicator.Size.Y) / 2;
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(indicator, new float2(x, y));
|
||||
WidgetUtils.DrawSprite(indicator, new float2(x, y));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,11 +210,11 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
var downOffset = !downPressed || downDisabled ? 4 : 4 + ButtonDepth;
|
||||
|
||||
var upArrowImage = getUpArrowImage.Update((upDisabled, upPressed, upHover, false));
|
||||
WidgetUtils.DrawRGBA(upArrowImage,
|
||||
WidgetUtils.DrawSprite(upArrowImage,
|
||||
new float2(upButtonRect.Left + upOffset, upButtonRect.Top + upOffset));
|
||||
|
||||
var downArrowImage = getDownArrowImage.Update((downDisabled, downPressed, downHover, false));
|
||||
WidgetUtils.DrawRGBA(downArrowImage,
|
||||
WidgetUtils.DrawSprite(downArrowImage,
|
||||
new float2(downButtonRect.Left + downOffset, downButtonRect.Top + downOffset));
|
||||
}
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
trackOrigin + (i * (trackRect.Width - (int)tick.Size.X) / (Ticks - 1)) - tick.Size.X / 2,
|
||||
trackRect.Bottom);
|
||||
|
||||
WidgetUtils.DrawRGBA(tick, tickPos);
|
||||
WidgetUtils.DrawSprite(tick, tickPos);
|
||||
}
|
||||
|
||||
// Track
|
||||
|
||||
@@ -47,12 +47,12 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
foreach (var a in svc.AllPoints)
|
||||
{
|
||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "critical_unowned"), offset + new float2(rb.Left + curX, rb.Top));
|
||||
WidgetUtils.DrawSprite(ChromeProvider.GetImage("strategic", "critical_unowned"), offset + new float2(rb.Left + curX, rb.Top));
|
||||
|
||||
if (world.LocalPlayer != null && a.Owner.RelationshipWith(world.LocalPlayer) == PlayerRelationship.Ally)
|
||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "player_owned"), offset + new float2(rb.Left + curX, rb.Top));
|
||||
WidgetUtils.DrawSprite(ChromeProvider.GetImage("strategic", "player_owned"), offset + new float2(rb.Left + curX, rb.Top));
|
||||
else if (!a.Owner.NonCombatant)
|
||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "enemy_owned"), offset + new float2(rb.Left + curX, rb.Top));
|
||||
WidgetUtils.DrawSprite(ChromeProvider.GetImage("strategic", "enemy_owned"), offset + new float2(rb.Left + curX, rb.Top));
|
||||
|
||||
curX += 32;
|
||||
}
|
||||
|
||||
@@ -202,7 +202,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
Game.Renderer.EnableAntialiasingFilter();
|
||||
foreach (var p in icons.Values)
|
||||
{
|
||||
WidgetUtils.DrawSHPCentered(p.Sprite, p.Pos + iconOffset, p.Palette);
|
||||
WidgetUtils.DrawSpriteCentered(p.Sprite, p.Palette, p.Pos + iconOffset);
|
||||
|
||||
// Charge progress
|
||||
var sp = p.Power;
|
||||
@@ -211,7 +211,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
* (clock.CurrentSequence.Length - 1) / sp.TotalTicks);
|
||||
|
||||
clock.Tick();
|
||||
WidgetUtils.DrawSHPCentered(clock.Image, p.Pos + iconOffset, p.IconClockPalette);
|
||||
WidgetUtils.DrawSpriteCentered(clock.Image, p.IconClockPalette, p.Pos + iconOffset);
|
||||
}
|
||||
|
||||
Game.Renderer.DisableAntialiasingFilter();
|
||||
|
||||
@@ -118,10 +118,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
Log.Write("perf", "VqaPlayer : {0} skipped {1} frames at position {2}", cachedVideo, skippedFrames, video.CurrentFrame);
|
||||
}
|
||||
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(
|
||||
videoSprite,
|
||||
videoOrigin,
|
||||
videoSize);
|
||||
WidgetUtils.DrawSprite(videoSprite, videoOrigin, videoSize);
|
||||
|
||||
if (DrawOverlay)
|
||||
{
|
||||
@@ -161,7 +158,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
overlayScale = scale;
|
||||
}
|
||||
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(overlaySprite, overlayOrigin, overlaySize);
|
||||
WidgetUtils.DrawSprite(overlaySprite, overlayOrigin, overlaySize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,17 +41,22 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
});
|
||||
}
|
||||
|
||||
public static void DrawRGBA(Sprite s, float2 pos)
|
||||
public static void DrawSprite(Sprite s, float2 pos)
|
||||
{
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s, pos);
|
||||
}
|
||||
|
||||
public static void DrawSHPCentered(Sprite s, float2 pos, PaletteReference p)
|
||||
public static void DrawSprite(Sprite s, float2 pos, Size size)
|
||||
{
|
||||
Game.Renderer.SpriteRenderer.DrawSprite(s, pos - 0.5f * s.Size, p);
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s, pos, new float2(size));
|
||||
}
|
||||
|
||||
public static void DrawSHPCentered(Sprite s, float2 pos, PaletteReference p, float scale)
|
||||
public static void DrawSprite(Sprite s, float2 pos, float2 size)
|
||||
{
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s, pos, size);
|
||||
}
|
||||
|
||||
public static void DrawSpriteCentered(Sprite s, PaletteReference p, float2 pos, float scale = 1f)
|
||||
{
|
||||
Game.Renderer.SpriteRenderer.DrawSprite(s, pos - 0.5f * scale * s.Size, p, scale * s.Size);
|
||||
}
|
||||
@@ -83,7 +88,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
ss = new Sprite(s.Sheet, rr, s.Channel, scale);
|
||||
}
|
||||
|
||||
DrawRGBA(ss, new float2(x, y));
|
||||
DrawSprite(ss, new float2(x, y));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -165,19 +170,19 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
// Top-left corner
|
||||
if (sprites[0] != null)
|
||||
DrawRGBA(sprites[0], new float2(bounds.Left, bounds.Top));
|
||||
DrawSprite(sprites[0], new float2(bounds.Left, bounds.Top));
|
||||
|
||||
// Top-right corner
|
||||
if (sprites[2] != null)
|
||||
DrawRGBA(sprites[2], new float2(bounds.Right - sprites[2].Size.X, bounds.Top));
|
||||
DrawSprite(sprites[2], new float2(bounds.Right - sprites[2].Size.X, bounds.Top));
|
||||
|
||||
// Bottom-left corner
|
||||
if (sprites[6] != null)
|
||||
DrawRGBA(sprites[6], new float2(bounds.Left, bounds.Bottom - sprites[6].Size.Y));
|
||||
DrawSprite(sprites[6], new float2(bounds.Left, bounds.Bottom - sprites[6].Size.Y));
|
||||
|
||||
// Bottom-right corner
|
||||
if (sprites[8] != null)
|
||||
DrawRGBA(sprites[8], new float2(bounds.Right - sprites[8].Size.X, bounds.Bottom - sprites[8].Size.Y));
|
||||
DrawSprite(sprites[8], new float2(bounds.Right - sprites[8].Size.X, bounds.Bottom - sprites[8].Size.Y));
|
||||
}
|
||||
|
||||
public static string FormatTime(int ticks, int timestep)
|
||||
|
||||
Reference in New Issue
Block a user