really hacky radar shim
This commit is contained in:
@@ -68,7 +68,7 @@ namespace OpenRa.Game
|
||||
// Positioning of chrome elements
|
||||
// Build palette
|
||||
paletteColumns = 4;
|
||||
paletteOrigin = new int2(Game.viewport.Width - paletteColumns * 64 - 9 - 20, 240 - 9);
|
||||
paletteOrigin = new int2(Game.viewport.Width - paletteColumns * 64 - 9 - 20, 282);
|
||||
|
||||
this.renderer = r;
|
||||
specialBin = new Sheet(renderer, "specialbin.png");
|
||||
@@ -199,8 +199,9 @@ namespace OpenRa.Game
|
||||
Sound.Play((hasRadar) ? "radaron2.aud" : "radardn1.aud");
|
||||
hadRadar = hasRadar;
|
||||
|
||||
if (hasRadar)
|
||||
Game.minimap.Draw(new float2(Game.viewport.Width - 256, 8));
|
||||
var isJammed = false; // todo: MRJ can do this
|
||||
|
||||
Game.minimap.Draw(new float2(Game.viewport.Width - 247, 10), hasRadar, isJammed);
|
||||
}
|
||||
|
||||
void AddButton(Rectangle r, Action<bool> b) { buttons.Add(Pair.New(r, b)); }
|
||||
@@ -278,7 +279,7 @@ namespace OpenRa.Game
|
||||
void DrawPower()
|
||||
{
|
||||
//draw background
|
||||
float2 powerOrigin = Game.viewport.Location+new float2(Game.viewport.Width - 20, 240 - 9);
|
||||
float2 powerOrigin = Game.viewport.Location + new float2(Game.viewport.Width - 20, paletteOrigin.Y);
|
||||
|
||||
buildPaletteRenderer.DrawSprite(powerLevelTopSprite, powerOrigin, PaletteType.Chrome);
|
||||
buildPaletteRenderer.DrawSprite(powerLevelBottomSprite, powerOrigin + new float2(0, powerLevelTopSprite.size.Y), PaletteType.Chrome);
|
||||
|
||||
@@ -84,11 +84,12 @@ namespace OpenRa.Game
|
||||
|
||||
Rules.Map.InitOreDensity();
|
||||
worldRenderer = new WorldRenderer(renderer);
|
||||
minimap = new Minimap(renderer);
|
||||
|
||||
SequenceProvider.Initialize(usingAftermath);
|
||||
viewport = new Viewport(clientSize, Rules.Map.Offset, Rules.Map.Offset + Rules.Map.Size, renderer);
|
||||
|
||||
minimap = new Minimap(renderer);
|
||||
|
||||
BuildingInfluence = new BuildingInfluenceMap();
|
||||
UnitInfluence = new UnitInfluenceMap();
|
||||
|
||||
|
||||
@@ -9,25 +9,36 @@ namespace OpenRa.Game.Graphics
|
||||
{
|
||||
Sheet sheet;
|
||||
SpriteRenderer spriteRenderer;
|
||||
SpriteRenderer shpRenderer;
|
||||
Sprite sprite;
|
||||
Bitmap terrain, oreLayer;
|
||||
Animation radarAnim, alliesAnim, sovietAnim;
|
||||
|
||||
public void Tick() { }
|
||||
|
||||
public Minimap(Renderer r)
|
||||
{
|
||||
sheet = new Sheet(r, new Size(128, 128));
|
||||
shpRenderer = new SpriteRenderer(r, true);
|
||||
spriteRenderer = new SpriteRenderer(r, true, r.RgbaSpriteShader);
|
||||
sprite = new Sprite(sheet, new Rectangle(0, 0, 128, 128), TextureChannel.Alpha);
|
||||
|
||||
sovietAnim = new Animation("ussrradr");
|
||||
sovietAnim.PlayRepeating("idle");
|
||||
alliesAnim = new Animation("natoradr");
|
||||
alliesAnim.PlayRepeating("idle");
|
||||
radarAnim = Game.LocalPlayer.Race == Race.Allies ? alliesAnim : sovietAnim;
|
||||
}
|
||||
|
||||
// todo: extract these from the palette
|
||||
Color[] terrainTypeColors;
|
||||
|
||||
public void InvalidateOre() { oreLayer = null; }
|
||||
|
||||
public void Update()
|
||||
{
|
||||
radarAnim = Game.LocalPlayer.Race == Race.Allies ? alliesAnim : sovietAnim;
|
||||
radarAnim.Tick();
|
||||
|
||||
if (terrainTypeColors == null)
|
||||
{
|
||||
var pal = new Palette(FileSystem.Open(Rules.Map.Theater + ".pal"));
|
||||
@@ -87,10 +98,27 @@ namespace OpenRa.Game.Graphics
|
||||
sheet.Texture.SetData(bitmap);
|
||||
}
|
||||
|
||||
public void Draw(float2 pos)
|
||||
public void Draw(float2 pos, bool hasRadar, bool isJammed)
|
||||
{
|
||||
spriteRenderer.DrawSprite(sprite, pos, PaletteType.Chrome, new float2(256,256));
|
||||
if (hasRadar && radarAnim.CurrentSequence.Name == "idle")
|
||||
radarAnim.PlayThen("open", () => radarAnim.PlayRepeating("active"));
|
||||
if (hasRadar && radarAnim.CurrentSequence.Name == "no-power")
|
||||
radarAnim.PlayBackwardsThen("close", () => radarAnim.PlayRepeating("active"));
|
||||
if (!hasRadar && radarAnim.CurrentSequence.Name == "active")
|
||||
radarAnim.PlayThen("close", () => radarAnim.PlayRepeating("no-power"));
|
||||
if (isJammed && radarAnim.CurrentSequence.Name == "active")
|
||||
radarAnim.PlayRepeating("jammed");
|
||||
if (!isJammed && radarAnim.CurrentSequence.Name == "jammed")
|
||||
radarAnim.PlayRepeating("active");
|
||||
|
||||
shpRenderer.DrawSprite(radarAnim.Image, pos + Game.viewport.Location - new float2( 290-256,0), PaletteType.Chrome, new float2(290, 272));
|
||||
shpRenderer.Flush();
|
||||
|
||||
if (radarAnim.CurrentSequence.Name == "active")
|
||||
{
|
||||
spriteRenderer.DrawSprite(sprite, pos - new float2((290-256)/2, -5), PaletteType.Chrome, new float2(256, 256));
|
||||
spriteRenderer.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1031,10 +1031,30 @@
|
||||
<sequence name="left-normal" start="0" length="1" />
|
||||
<sequence name="left-pressed" start="1" length="1" />
|
||||
</unit>
|
||||
<unit name="sputnik"> <sequence name="idle" start="0" length="4" /> </unit> <unit name="dd-crnr"> <sequence name="idle" start="0" length="4" />
|
||||
<unit name="sputnik">
|
||||
<sequence name="idle" start="0" length="4" />
|
||||
</unit>
|
||||
<unit name="dd-crnr">
|
||||
<sequence name="idle" start="0" length="4" />
|
||||
<sequence name="top-left" start="0" length="1" />
|
||||
<sequence name="top-right" start="1" length="1" />
|
||||
<sequence name="bottom-left" start="2" length="1" />
|
||||
<sequence name="bottom-right" start="3" length="1" />
|
||||
</unit>
|
||||
<unit name="ussrradr">
|
||||
<sequence name="idle" start="0" length="1" />
|
||||
<sequence name="open" start="1" length="20" />
|
||||
<sequence name="jammed" start="21" length="4" />
|
||||
<sequence name="close" start="25" length="16" />
|
||||
<sequence name="no-power" start="41" length="1" />
|
||||
<sequence name="active" start="42" length="1" />
|
||||
</unit>
|
||||
<unit name="natoradr">
|
||||
<sequence name="idle" start="0" length="1" />
|
||||
<sequence name="open" start="1" length="20" />
|
||||
<sequence name="active" start="42" length="1" />
|
||||
<sequence name="jammed" start="21" length="4" />
|
||||
<sequence name="close" start="25" length="16" />
|
||||
<sequence name="no-power" start="41" length="1" />
|
||||
</unit>
|
||||
</sequences>
|
||||
Reference in New Issue
Block a user