Fix UI rendering of offset sprites.
This commit is contained in:
@@ -56,6 +56,7 @@ namespace OpenRA.Widgets
|
|||||||
Sprite sprite = null;
|
Sprite sprite = null;
|
||||||
string cachedImage = null;
|
string cachedImage = null;
|
||||||
int cachedFrame = -1;
|
int cachedFrame = -1;
|
||||||
|
float2 cachedOffset = float2.Zero;
|
||||||
|
|
||||||
public override void Draw()
|
public override void Draw()
|
||||||
{
|
{
|
||||||
@@ -68,9 +69,10 @@ namespace OpenRA.Widgets
|
|||||||
sprite = Game.modData.SpriteLoader.LoadAllSprites(image)[frame];
|
sprite = Game.modData.SpriteLoader.LoadAllSprites(image)[frame];
|
||||||
cachedImage = image;
|
cachedImage = image;
|
||||||
cachedFrame = frame;
|
cachedFrame = frame;
|
||||||
|
cachedOffset = 0.5f * (new float2(RenderBounds.Size) - sprite.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(sprite, RenderOrigin, worldRenderer.Palette(palette));
|
Game.Renderer.SpriteRenderer.DrawSprite(sprite, RenderOrigin + cachedOffset, worldRenderer.Palette(palette));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int FrameCount
|
public int FrameCount
|
||||||
|
|||||||
@@ -29,14 +29,14 @@ namespace OpenRA.Widgets
|
|||||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s,pos);
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s,pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawSHP(Sprite s, float2 pos, WorldRenderer wr)
|
public static void DrawSHPCentered(Sprite s, float2 pos, WorldRenderer wr)
|
||||||
{
|
{
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(s, pos, wr.Palette("chrome"));
|
Game.Renderer.SpriteRenderer.DrawSprite(s, pos - 0.5f * s.size, wr.Palette("chrome"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawSHP(Sprite s, float2 pos, WorldRenderer wr, float2 size)
|
public static void DrawSHPCentered(Sprite s, float2 pos, WorldRenderer wr, float scale)
|
||||||
{
|
{
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(s, pos, wr.Palette("chrome"), size);
|
Game.Renderer.SpriteRenderer.DrawSprite(s, pos - 0.5f * scale * s.size, wr.Palette("chrome"), scale * s.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawPanel(string collection, Rectangle Bounds)
|
public static void DrawPanel(string collection, Rectangle Bounds)
|
||||||
|
|||||||
@@ -197,11 +197,14 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
|
|
||||||
public override void Draw()
|
public override void Draw()
|
||||||
{
|
{
|
||||||
|
var iconSize = new float2(64, 48);
|
||||||
|
var iconOffset = 0.5f * iconSize;
|
||||||
|
|
||||||
overlayFont = Game.Renderer.Fonts["TinyBold"];
|
overlayFont = Game.Renderer.Fonts["TinyBold"];
|
||||||
timeOffset = new float2(32, 24) - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2;
|
timeOffset = iconOffset - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2;
|
||||||
queuedOffset = new float2(4, 2);
|
queuedOffset = new float2(4, 2);
|
||||||
holdOffset = new float2(32, 24) - overlayFont.Measure(HoldText) / 2;
|
holdOffset = iconOffset - overlayFont.Measure(HoldText) / 2;
|
||||||
readyOffset = new float2(32, 24) - overlayFont.Measure(ReadyText) / 2;
|
readyOffset = iconOffset - overlayFont.Measure(ReadyText) / 2;
|
||||||
|
|
||||||
if (CurrentQueue == null)
|
if (CurrentQueue == null)
|
||||||
return;
|
return;
|
||||||
@@ -215,7 +218,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
// Icons
|
// Icons
|
||||||
foreach (var icon in icons.Values)
|
foreach (var icon in icons.Values)
|
||||||
{
|
{
|
||||||
WidgetUtils.DrawSHP(icon.Sprite, icon.Pos, worldRenderer);
|
WidgetUtils.DrawSHPCentered(icon.Sprite, icon.Pos + iconOffset, worldRenderer);
|
||||||
|
|
||||||
// Build progress
|
// Build progress
|
||||||
if (icon.Queued.Count > 0)
|
if (icon.Queued.Count > 0)
|
||||||
@@ -225,10 +228,10 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
() => (first.TotalTime - first.RemainingTime)
|
() => (first.TotalTime - first.RemainingTime)
|
||||||
* (clock.CurrentSequence.Length - 1) / first.TotalTime);
|
* (clock.CurrentSequence.Length - 1) / first.TotalTime);
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
WidgetUtils.DrawSHP(clock.Image, icon.Pos, worldRenderer);
|
WidgetUtils.DrawSHPCentered(clock.Image, icon.Pos + iconOffset, worldRenderer);
|
||||||
}
|
}
|
||||||
else if (!buildableItems.Any(a => a.Name == icon.Name))
|
else if (!buildableItems.Any(a => a.Name == icon.Name))
|
||||||
WidgetUtils.DrawSHP(cantBuild.Image, icon.Pos, worldRenderer);
|
WidgetUtils.DrawSHPCentered(cantBuild.Image, icon.Pos + iconOffset, worldRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overlays
|
// Overlays
|
||||||
|
|||||||
@@ -89,10 +89,13 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
|
|
||||||
public override void Draw()
|
public override void Draw()
|
||||||
{
|
{
|
||||||
|
var iconSize = new float2(64, 48);
|
||||||
|
var iconOffset = 0.5f * iconSize;
|
||||||
|
|
||||||
overlayFont = Game.Renderer.Fonts["TinyBold"];
|
overlayFont = Game.Renderer.Fonts["TinyBold"];
|
||||||
holdOffset = new float2(32, 24) - overlayFont.Measure(HoldText) / 2;
|
holdOffset = iconOffset - overlayFont.Measure(HoldText) / 2;
|
||||||
readyOffset = new float2(32, 24) - overlayFont.Measure(ReadyText) / 2;
|
readyOffset = iconOffset - overlayFont.Measure(ReadyText) / 2;
|
||||||
timeOffset = new float2(32, 24) - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2;
|
timeOffset = iconOffset - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2;
|
||||||
|
|
||||||
// Background
|
// Background
|
||||||
foreach (var rect in icons.Keys)
|
foreach (var rect in icons.Keys)
|
||||||
@@ -101,14 +104,14 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
// Icons
|
// Icons
|
||||||
foreach (var p in icons.Values)
|
foreach (var p in icons.Values)
|
||||||
{
|
{
|
||||||
WidgetUtils.DrawSHP(p.Sprite, p.Pos, worldRenderer);
|
WidgetUtils.DrawSHPCentered(p.Sprite, p.Pos + iconOffset, worldRenderer);
|
||||||
|
|
||||||
// Charge progress
|
// Charge progress
|
||||||
clock.PlayFetchIndex("idle",
|
clock.PlayFetchIndex("idle",
|
||||||
() => (p.Power.TotalTime - p.Power.RemainingTime)
|
() => (p.Power.TotalTime - p.Power.RemainingTime)
|
||||||
* (clock.CurrentSequence.Length - 1) / p.Power.TotalTime);
|
* (clock.CurrentSequence.Length - 1) / p.Power.TotalTime);
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
WidgetUtils.DrawSHP(clock.Image, p.Pos, worldRenderer);
|
WidgetUtils.DrawSHPCentered(clock.Image, p.Pos + iconOffset, worldRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overlay
|
// Overlay
|
||||||
|
|||||||
@@ -203,6 +203,7 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
|
|
||||||
string paletteCollection = "palette-" + world.LocalPlayer.Country.Race;
|
string paletteCollection = "palette-" + world.LocalPlayer.Country.Race;
|
||||||
float2 origin = new float2(paletteOrigin.X + 9, paletteOrigin.Y + 9);
|
float2 origin = new float2(paletteOrigin.X + 9, paletteOrigin.Y + 9);
|
||||||
|
var iconOffset = 0.5f * new float2(IconWidth, IconHeight);
|
||||||
var x = 0;
|
var x = 0;
|
||||||
var y = 0;
|
var y = 0;
|
||||||
|
|
||||||
@@ -233,7 +234,7 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
var drawPos = new float2(rect.Location);
|
var drawPos = new float2(rect.Location);
|
||||||
var icon = new Animation(RenderSimple.GetImage(item));
|
var icon = new Animation(RenderSimple.GetImage(item));
|
||||||
icon.Play(item.Traits.Get<TooltipInfo>().Icon);
|
icon.Play(item.Traits.Get<TooltipInfo>().Icon);
|
||||||
WidgetUtils.DrawSHP(icon.Image, drawPos, worldRenderer);
|
WidgetUtils.DrawSHPCentered(icon.Image, drawPos + iconOffset, worldRenderer);
|
||||||
|
|
||||||
var firstOfThis = queue.AllQueued().FirstOrDefault(a => a.Item == item.Name);
|
var firstOfThis = queue.AllQueued().FirstOrDefault(a => a.Item == item.Name);
|
||||||
|
|
||||||
@@ -248,7 +249,7 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
() => (firstOfThis.TotalTime - firstOfThis.RemainingTime)
|
() => (firstOfThis.TotalTime - firstOfThis.RemainingTime)
|
||||||
* (clock.CurrentSequence.Length - 1) / firstOfThis.TotalTime);
|
* (clock.CurrentSequence.Length - 1) / firstOfThis.TotalTime);
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
WidgetUtils.DrawSHP(clock.Image, drawPos, worldRenderer);
|
WidgetUtils.DrawSHPCentered(clock.Image, drawPos + iconOffset, worldRenderer);
|
||||||
|
|
||||||
if (queue.CurrentItem() == firstOfThis)
|
if (queue.CurrentItem() == firstOfThis)
|
||||||
textBits.Add(Pair.New(overlayPos, GetOverlayForItem(firstOfThis)));
|
textBits.Add(Pair.New(overlayPos, GetOverlayForItem(firstOfThis)));
|
||||||
@@ -269,7 +270,7 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
if (x != 0) y++;
|
if (x != 0) y++;
|
||||||
|
|
||||||
foreach (var ob in overlayBits)
|
foreach (var ob in overlayBits)
|
||||||
WidgetUtils.DrawSHP(ob.First, ob.Second, worldRenderer);
|
WidgetUtils.DrawSHPCentered(ob.First, ob.Second + iconOffset, worldRenderer);
|
||||||
|
|
||||||
var font = Game.Renderer.Fonts["TinyBold"];
|
var font = Game.Renderer.Fonts["TinyBold"];
|
||||||
foreach (var tb in textBits)
|
foreach (var tb in textBits)
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
WorldRenderer worldRenderer;
|
WorldRenderer worldRenderer;
|
||||||
Dictionary<ProductionQueue, Animation> clocks;
|
Dictionary<ProductionQueue, Animation> clocks;
|
||||||
|
|
||||||
|
public int IconWidth = 32;
|
||||||
|
public int IconHeight = 24;
|
||||||
|
public int IconSpacing = 8;
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public ObserverProductionIconsWidget(World world, WorldRenderer worldRenderer)
|
public ObserverProductionIconsWidget(World world, WorldRenderer worldRenderer)
|
||||||
{
|
{
|
||||||
@@ -59,6 +63,8 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
clocks.Add(queue.Trait, new Animation("clock"));
|
clocks.Add(queue.Trait, new Animation("clock"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var iconSize = new float2(IconWidth, IconHeight);
|
||||||
foreach (var queue in queues)
|
foreach (var queue in queues)
|
||||||
{
|
{
|
||||||
var current = queue.Trait.CurrentItem();
|
var current = queue.Trait.CurrentItem();
|
||||||
@@ -71,16 +77,15 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
|
|
||||||
var icon = new Animation(RenderSimple.GetImage(actor));
|
var icon = new Animation(RenderSimple.GetImage(actor));
|
||||||
icon.Play(actor.Traits.Get<TooltipInfo>().Icon);
|
icon.Play(actor.Traits.Get<TooltipInfo>().Icon);
|
||||||
var size = icon.Image.size / new float2(2, 2);
|
var location = new float2(RenderBounds.Location) + new float2(queue.i * (IconWidth + IconSpacing), 0);
|
||||||
var location = new float2(RenderBounds.Location) + new float2(queue.i * (int)size.Length, 0);
|
WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
||||||
WidgetUtils.DrawSHP(icon.Image, location, worldRenderer, size);
|
|
||||||
|
|
||||||
var clock = clocks[queue.Trait];
|
var clock = clocks[queue.Trait];
|
||||||
clock.PlayFetchIndex("idle",
|
clock.PlayFetchIndex("idle",
|
||||||
() => current.TotalTime == 0 ? 0 : ((current.TotalTime - current.RemainingTime)
|
() => current.TotalTime == 0 ? 0 : ((current.TotalTime - current.RemainingTime)
|
||||||
* (clock.CurrentSequence.Length - 1) / current.TotalTime));
|
* (clock.CurrentSequence.Length - 1) / current.TotalTime));
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
WidgetUtils.DrawSHP(clock.Image, location, worldRenderer, size);
|
WidgetUtils.DrawSHPCentered(clock.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
||||||
|
|
||||||
var tiny = Game.Renderer.Fonts["Tiny"];
|
var tiny = Game.Renderer.Fonts["Tiny"];
|
||||||
var text = GetOverlayForItem(current);
|
var text = GetOverlayForItem(current);
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
WorldRenderer worldRenderer;
|
WorldRenderer worldRenderer;
|
||||||
Dictionary<string, Animation> clocks;
|
Dictionary<string, Animation> clocks;
|
||||||
|
|
||||||
|
public int IconWidth = 32;
|
||||||
|
public int IconHeight = 24;
|
||||||
|
public int IconSpacing = 8;
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public ObserverSupportPowerIconsWidget(World world, WorldRenderer worldRenderer)
|
public ObserverSupportPowerIconsWidget(World world, WorldRenderer worldRenderer)
|
||||||
{
|
{
|
||||||
@@ -61,22 +65,24 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
clocks.Add(power.a.Key, new Animation("clock"));
|
clocks.Add(power.a.Key, new Animation("clock"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var iconSize = new float2(IconWidth, IconHeight);
|
||||||
foreach (var power in powers)
|
foreach (var power in powers)
|
||||||
{
|
{
|
||||||
var item = power.a.Value;
|
var item = power.a.Value;
|
||||||
if (item == null || item.Info == null || item.Info.Icon == null)
|
if (item == null || item.Info == null || item.Info.Icon == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
icon.Play(item.Info.Icon);
|
icon.Play(item.Info.Icon);
|
||||||
var size = icon.Image.size / new float2(2, 2);
|
var location = new float2(RenderBounds.Location) + new float2(power.i * (IconWidth + IconSpacing), 0);
|
||||||
var location = new float2(RenderBounds.Location) + new float2(power.i * (int)size.Length, 0);
|
WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
||||||
WidgetUtils.DrawSHP(icon.Image, location, worldRenderer, size);
|
|
||||||
|
|
||||||
var clock = clocks[power.a.Key];
|
var clock = clocks[power.a.Key];
|
||||||
clock.PlayFetchIndex("idle",
|
clock.PlayFetchIndex("idle",
|
||||||
() => item.TotalTime == 0 ? 0 : ((item.TotalTime - item.RemainingTime)
|
() => item.TotalTime == 0 ? 0 : ((item.TotalTime - item.RemainingTime)
|
||||||
* (clock.CurrentSequence.Length - 1) / item.TotalTime));
|
* (clock.CurrentSequence.Length - 1) / item.TotalTime));
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
WidgetUtils.DrawSHP(clock.Image, location, worldRenderer, size);
|
WidgetUtils.DrawSHPCentered(clock.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
||||||
|
|
||||||
var tiny = Game.Renderer.Fonts["Tiny"];
|
var tiny = Game.Renderer.Fonts["Tiny"];
|
||||||
var text = GetOverlayForItem(item);
|
var text = GetOverlayForItem(item);
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
[Translate] public string ReadyText = "";
|
[Translate] public string ReadyText = "";
|
||||||
[Translate] public string HoldText = "";
|
[Translate] public string HoldText = "";
|
||||||
|
|
||||||
|
public int IconWidth = 64;
|
||||||
|
public int IconHeight = 48;
|
||||||
|
|
||||||
Animation icon;
|
Animation icon;
|
||||||
Animation clock;
|
Animation clock;
|
||||||
readonly List<Pair<Rectangle, Action<MouseInput>>> buttons = new List<Pair<Rectangle,Action<MouseInput>>>();
|
readonly List<Pair<Rectangle, Action<MouseInput>>> buttons = new List<Pair<Rectangle,Action<MouseInput>>>();
|
||||||
@@ -84,10 +87,11 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world, "specialbin-bottom"), new float2(rectBounds.X, rectBounds.Y + numPowers * 51));
|
WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world, "specialbin-bottom"), new float2(rectBounds.X, rectBounds.Y + numPowers * 51));
|
||||||
|
|
||||||
// HACK: Hack Hack Hack
|
// HACK: Hack Hack Hack
|
||||||
rectBounds.Width = 69;
|
rectBounds.Width = IconWidth + 5;
|
||||||
rectBounds.Height = 10 + numPowers * 51 + 21;
|
rectBounds.Height = 31 + numPowers * (IconHeight + 3);
|
||||||
|
|
||||||
var y = rectBounds.Y + 10;
|
var y = rectBounds.Y + 10;
|
||||||
|
var iconSize = new float2(IconWidth, IconHeight);
|
||||||
foreach (var kv in powers)
|
foreach (var kv in powers)
|
||||||
{
|
{
|
||||||
var sp = kv.Value;
|
var sp = kv.Value;
|
||||||
@@ -137,14 +141,14 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WidgetUtils.DrawSHP(icon.Image, drawPos, worldRenderer);
|
WidgetUtils.DrawSHPCentered(icon.Image, drawPos + 0.5f * iconSize, worldRenderer);
|
||||||
|
|
||||||
clock.PlayFetchIndex("idle",
|
clock.PlayFetchIndex("idle",
|
||||||
() => sp.TotalTime == 0 ? clock.CurrentSequence.Length - 1 : (sp.TotalTime - sp.RemainingTime)
|
() => sp.TotalTime == 0 ? clock.CurrentSequence.Length - 1 : (sp.TotalTime - sp.RemainingTime)
|
||||||
* (clock.CurrentSequence.Length - 1) / sp.TotalTime);
|
* (clock.CurrentSequence.Length - 1) / sp.TotalTime);
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
|
|
||||||
WidgetUtils.DrawSHP(clock.Image, drawPos, worldRenderer);
|
WidgetUtils.DrawSHPCentered(clock.Image, drawPos + 0.5f * iconSize, worldRenderer);
|
||||||
|
|
||||||
var overlay = sp.Ready ? ReadyText : sp.Active ? null : HoldText;
|
var overlay = sp.Ready ? ReadyText : sp.Active ? null : HoldText;
|
||||||
var font = Game.Renderer.Fonts["TinyBold"];
|
var font = Game.Renderer.Fonts["TinyBold"];
|
||||||
|
|||||||
@@ -30,8 +30,10 @@ Background@COLOR_CHOOSER:
|
|||||||
Width:144
|
Width:144
|
||||||
Height:72
|
Height:72
|
||||||
ShpImage@FACT:
|
ShpImage@FACT:
|
||||||
X:160
|
X:153
|
||||||
Y:13
|
Y:1
|
||||||
|
Width:80
|
||||||
|
Height:73
|
||||||
Image:fact
|
Image:fact
|
||||||
Palette:colorpicker
|
Palette:colorpicker
|
||||||
Button@RANDOM_BUTTON:
|
Button@RANDOM_BUTTON:
|
||||||
|
|||||||
@@ -30,8 +30,10 @@ Background@COLOR_CHOOSER:
|
|||||||
Width:144
|
Width:144
|
||||||
Height:72
|
Height:72
|
||||||
ShpImage@FACT:
|
ShpImage@FACT:
|
||||||
X:160
|
X:153
|
||||||
Y:8
|
Y:1
|
||||||
|
Width:80
|
||||||
|
Height:73
|
||||||
Image:DATA.R8
|
Image:DATA.R8
|
||||||
Frame:1936
|
Frame:1936
|
||||||
Palette:colorpicker
|
Palette:colorpicker
|
||||||
|
|||||||
@@ -150,6 +150,8 @@ Container@PLAYER_WIDGETS:
|
|||||||
SupportPowerBin@INGAME_POWERS_BIN:
|
SupportPowerBin@INGAME_POWERS_BIN:
|
||||||
X:0
|
X:0
|
||||||
Y:25
|
Y:25
|
||||||
|
IconWidth: 60
|
||||||
|
IconHeight: 48
|
||||||
ReadyText: READY
|
ReadyText: READY
|
||||||
HoldText: ON HOLD
|
HoldText: ON HOLD
|
||||||
BuildPalette@INGAME_BUILD_PALETTE:
|
BuildPalette@INGAME_BUILD_PALETTE:
|
||||||
|
|||||||
@@ -30,8 +30,10 @@ Background@COLOR_CHOOSER:
|
|||||||
Width:144
|
Width:144
|
||||||
Height:72
|
Height:72
|
||||||
ShpImage@FACT:
|
ShpImage@FACT:
|
||||||
X:156
|
X:153
|
||||||
Y:1
|
Y:1
|
||||||
|
Width:80
|
||||||
|
Height:73
|
||||||
Image:fact
|
Image:fact
|
||||||
Palette:colorpicker
|
Palette:colorpicker
|
||||||
Button@RANDOM_BUTTON:
|
Button@RANDOM_BUTTON:
|
||||||
|
|||||||
@@ -30,8 +30,10 @@ Background@COLOR_CHOOSER:
|
|||||||
Width:144
|
Width:144
|
||||||
Height:72
|
Height:72
|
||||||
ShpImage@GTCNST:
|
ShpImage@GTCNST:
|
||||||
X:121
|
X:153
|
||||||
Y:0-68
|
Y:1-40
|
||||||
|
Width:80
|
||||||
|
Height:73
|
||||||
Image:gtcnstmk
|
Image:gtcnstmk
|
||||||
Palette:colorpicker
|
Palette:colorpicker
|
||||||
Button@RANDOM_BUTTON:
|
Button@RANDOM_BUTTON:
|
||||||
|
|||||||
Reference in New Issue
Block a user