basic powerbar
This commit is contained in:
@@ -13,11 +13,15 @@ namespace OpenRa.Game
|
|||||||
class Chrome : IHandleInput
|
class Chrome : IHandleInput
|
||||||
{
|
{
|
||||||
readonly Renderer renderer;
|
readonly Renderer renderer;
|
||||||
|
readonly LineRenderer lineRenderer;
|
||||||
readonly Sheet specialBin;
|
readonly Sheet specialBin;
|
||||||
readonly SpriteRenderer chromeRenderer;
|
readonly SpriteRenderer chromeRenderer;
|
||||||
readonly Sprite specialBinSprite;
|
readonly Sprite specialBinSprite;
|
||||||
readonly Sprite moneyBinSprite;
|
readonly Sprite moneyBinSprite;
|
||||||
readonly Sprite tooltipSprite;
|
readonly Sprite tooltipSprite;
|
||||||
|
readonly Sprite powerIndicatorSprite;
|
||||||
|
readonly Sprite powerLevelTopSprite;
|
||||||
|
readonly Sprite powerLevelBottomSprite;
|
||||||
readonly SpriteRenderer buildPaletteRenderer;
|
readonly SpriteRenderer buildPaletteRenderer;
|
||||||
readonly Animation cantBuild;
|
readonly Animation cantBuild;
|
||||||
readonly Animation ready;
|
readonly Animation ready;
|
||||||
@@ -37,17 +41,30 @@ namespace OpenRa.Game
|
|||||||
// Positioning of chrome elements
|
// Positioning of chrome elements
|
||||||
// Build palette
|
// Build palette
|
||||||
paletteColumns = 4;
|
paletteColumns = 4;
|
||||||
paletteOrigin = new int2(Game.viewport.Width - paletteColumns * 64 - 9, 240 - 9);
|
paletteOrigin = new int2(Game.viewport.Width - paletteColumns * 64 - 9 - 20, 240 - 9);
|
||||||
|
|
||||||
this.renderer = r;
|
this.renderer = r;
|
||||||
specialBin = new Sheet(renderer, "specialbin.png");
|
specialBin = new Sheet(renderer, "specialbin.png");
|
||||||
chromeRenderer = new SpriteRenderer(renderer, true, renderer.RgbaSpriteShader);
|
chromeRenderer = new SpriteRenderer(renderer, true, renderer.RgbaSpriteShader);
|
||||||
|
lineRenderer = new LineRenderer(renderer);
|
||||||
buildPaletteRenderer = new SpriteRenderer(renderer, true);
|
buildPaletteRenderer = new SpriteRenderer(renderer, true);
|
||||||
|
|
||||||
specialBinSprite = new Sprite(specialBin, new Rectangle(0, 0, 32, 192), TextureChannel.Alpha);
|
specialBinSprite = new Sprite(specialBin, new Rectangle(0, 0, 32, 192), TextureChannel.Alpha);
|
||||||
moneyBinSprite = new Sprite(specialBin, new Rectangle(512 - 320, 0, 320, 32), TextureChannel.Alpha);
|
moneyBinSprite = new Sprite(specialBin, new Rectangle(512 - 320, 0, 320, 32), TextureChannel.Alpha);
|
||||||
tooltipSprite = new Sprite(specialBin, new Rectangle(0, 288, 272, 136), TextureChannel.Alpha);
|
tooltipSprite = new Sprite(specialBin, new Rectangle(0, 288, 272, 136), TextureChannel.Alpha);
|
||||||
|
|
||||||
|
var powerIndicator = new Animation("power");
|
||||||
|
powerIndicator.PlayRepeating("power-level-indicator");
|
||||||
|
powerIndicatorSprite = powerIndicator.Image;
|
||||||
|
|
||||||
|
var powerTop = new Animation("powerbar");
|
||||||
|
powerTop.PlayRepeating("powerbar-top");
|
||||||
|
powerLevelTopSprite = powerTop.Image;
|
||||||
|
|
||||||
|
var powerBottom = new Animation("powerbar");
|
||||||
|
powerBottom.PlayRepeating("powerbar-bottom");
|
||||||
|
powerLevelBottomSprite = powerBottom.Image;
|
||||||
|
|
||||||
blank = SheetBuilder.Add(new Size(64, 48), 16);
|
blank = SheetBuilder.Add(new Size(64, 48), 16);
|
||||||
|
|
||||||
sprites = groups
|
sprites = groups
|
||||||
@@ -106,6 +123,7 @@ namespace OpenRa.Game
|
|||||||
chromeRenderer.DrawSprite(moneyBinSprite, new float2(Game.viewport.Width - 320, 0), PaletteType.Chrome);
|
chromeRenderer.DrawSprite(moneyBinSprite, new float2(Game.viewport.Width - 320, 0), PaletteType.Chrome);
|
||||||
|
|
||||||
DrawMoney();
|
DrawMoney();
|
||||||
|
DrawPower();
|
||||||
|
|
||||||
chromeRenderer.Flush();
|
chromeRenderer.Flush();
|
||||||
|
|
||||||
@@ -185,6 +203,35 @@ namespace OpenRa.Game
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DrawPower()
|
||||||
|
{
|
||||||
|
//draw background
|
||||||
|
float2 powerOrigin = Game.viewport.Location+new float2(Game.viewport.Width - 20, 240 - 9);
|
||||||
|
|
||||||
|
buildPaletteRenderer.DrawSprite(powerLevelTopSprite, powerOrigin, PaletteType.Chrome);
|
||||||
|
buildPaletteRenderer.DrawSprite(powerLevelBottomSprite, powerOrigin + new float2(0, powerLevelTopSprite.size.Y), PaletteType.Chrome);
|
||||||
|
buildPaletteRenderer.Flush();
|
||||||
|
float2 top = powerOrigin + new float2(0, 15);
|
||||||
|
float2 bottom = powerOrigin + new float2(0, powerLevelTopSprite.size.Y + powerLevelBottomSprite.size.Y) - new float2(0, 50);
|
||||||
|
|
||||||
|
var scale = 100;
|
||||||
|
while(Game.LocalPlayer.PowerProvided >= scale) scale += 100;
|
||||||
|
//draw bar
|
||||||
|
float2 powerTop = new float2(bottom.X, bottom.Y + (top.Y - bottom.Y) * (Game.LocalPlayer.PowerProvided / (float)scale));
|
||||||
|
|
||||||
|
for(int i = 7; i < 11; i++)
|
||||||
|
lineRenderer.DrawLine(bottom + new float2(i, 0), powerTop + new float2(i, 0), Color.LimeGreen, Color.LimeGreen);
|
||||||
|
lineRenderer.Flush();
|
||||||
|
|
||||||
|
//draw indicator
|
||||||
|
float2 drainedPosition = new float2(bottom.X , bottom.Y + (top.Y - bottom.Y)*(Game.LocalPlayer.PowerDrained/(float) scale));
|
||||||
|
|
||||||
|
buildPaletteRenderer.DrawSprite(powerIndicatorSprite, drainedPosition, PaletteType.Chrome);
|
||||||
|
buildPaletteRenderer.Flush();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void DrawChat()
|
void DrawChat()
|
||||||
{
|
{
|
||||||
var chatpos = new int2(400, Game.viewport.Height - 20);
|
var chatpos = new int2(400, Game.viewport.Height - 20);
|
||||||
|
|||||||
@@ -994,4 +994,11 @@
|
|||||||
<unit name="select">
|
<unit name="select">
|
||||||
<sequence name="repair" start="2" length="1" />
|
<sequence name="repair" start="2" length="1" />
|
||||||
</unit>
|
</unit>
|
||||||
|
<unit name="power">
|
||||||
|
<sequence name="power-level-indicator" start="0" length="1" />
|
||||||
|
</unit>
|
||||||
|
<unit name="powerbar">
|
||||||
|
<sequence name="powerbar-top" start="0" length="1" />
|
||||||
|
<sequence name="powerbar-bottom" start="1" length="1" />
|
||||||
|
</unit>
|
||||||
</sequences>
|
</sequences>
|
||||||
Reference in New Issue
Block a user