really hacky radar shim
This commit is contained in:
@@ -68,7 +68,7 @@ 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 - 20, 240 - 9);
|
paletteOrigin = new int2(Game.viewport.Width - paletteColumns * 64 - 9 - 20, 282);
|
||||||
|
|
||||||
this.renderer = r;
|
this.renderer = r;
|
||||||
specialBin = new Sheet(renderer, "specialbin.png");
|
specialBin = new Sheet(renderer, "specialbin.png");
|
||||||
@@ -198,9 +198,10 @@ namespace OpenRa.Game
|
|||||||
if (hasRadar != hadRadar)
|
if (hasRadar != hadRadar)
|
||||||
Sound.Play((hasRadar) ? "radaron2.aud" : "radardn1.aud");
|
Sound.Play((hasRadar) ? "radaron2.aud" : "radardn1.aud");
|
||||||
hadRadar = hasRadar;
|
hadRadar = hasRadar;
|
||||||
|
|
||||||
|
var isJammed = false; // todo: MRJ can do this
|
||||||
|
|
||||||
if (hasRadar)
|
Game.minimap.Draw(new float2(Game.viewport.Width - 247, 10), hasRadar, isJammed);
|
||||||
Game.minimap.Draw(new float2(Game.viewport.Width - 256, 8));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddButton(Rectangle r, Action<bool> b) { buttons.Add(Pair.New(r, b)); }
|
void AddButton(Rectangle r, Action<bool> b) { buttons.Add(Pair.New(r, b)); }
|
||||||
@@ -278,7 +279,7 @@ namespace OpenRa.Game
|
|||||||
void DrawPower()
|
void DrawPower()
|
||||||
{
|
{
|
||||||
//draw background
|
//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(powerLevelTopSprite, powerOrigin, PaletteType.Chrome);
|
||||||
buildPaletteRenderer.DrawSprite(powerLevelBottomSprite, powerOrigin + new float2(0, powerLevelTopSprite.size.Y), PaletteType.Chrome);
|
buildPaletteRenderer.DrawSprite(powerLevelBottomSprite, powerOrigin + new float2(0, powerLevelTopSprite.size.Y), PaletteType.Chrome);
|
||||||
|
|||||||
@@ -84,11 +84,12 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
Rules.Map.InitOreDensity();
|
Rules.Map.InitOreDensity();
|
||||||
worldRenderer = new WorldRenderer(renderer);
|
worldRenderer = new WorldRenderer(renderer);
|
||||||
minimap = new Minimap(renderer);
|
|
||||||
|
|
||||||
SequenceProvider.Initialize(usingAftermath);
|
SequenceProvider.Initialize(usingAftermath);
|
||||||
viewport = new Viewport(clientSize, Rules.Map.Offset, Rules.Map.Offset + Rules.Map.Size, renderer);
|
viewport = new Viewport(clientSize, Rules.Map.Offset, Rules.Map.Offset + Rules.Map.Size, renderer);
|
||||||
|
|
||||||
|
minimap = new Minimap(renderer);
|
||||||
|
|
||||||
BuildingInfluence = new BuildingInfluenceMap();
|
BuildingInfluence = new BuildingInfluenceMap();
|
||||||
UnitInfluence = new UnitInfluenceMap();
|
UnitInfluence = new UnitInfluenceMap();
|
||||||
|
|
||||||
|
|||||||
@@ -9,25 +9,36 @@ namespace OpenRa.Game.Graphics
|
|||||||
{
|
{
|
||||||
Sheet sheet;
|
Sheet sheet;
|
||||||
SpriteRenderer spriteRenderer;
|
SpriteRenderer spriteRenderer;
|
||||||
|
SpriteRenderer shpRenderer;
|
||||||
Sprite sprite;
|
Sprite sprite;
|
||||||
Bitmap terrain, oreLayer;
|
Bitmap terrain, oreLayer;
|
||||||
|
Animation radarAnim, alliesAnim, sovietAnim;
|
||||||
|
|
||||||
public void Tick() { }
|
public void Tick() { }
|
||||||
|
|
||||||
public Minimap(Renderer r)
|
public Minimap(Renderer r)
|
||||||
{
|
{
|
||||||
sheet = new Sheet(r, new Size(128, 128));
|
sheet = new Sheet(r, new Size(128, 128));
|
||||||
|
shpRenderer = new SpriteRenderer(r, true);
|
||||||
spriteRenderer = new SpriteRenderer(r, true, r.RgbaSpriteShader);
|
spriteRenderer = new SpriteRenderer(r, true, r.RgbaSpriteShader);
|
||||||
sprite = new Sprite(sheet, new Rectangle(0, 0, 128, 128), TextureChannel.Alpha);
|
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;
|
Color[] terrainTypeColors;
|
||||||
|
|
||||||
public void InvalidateOre() { oreLayer = null; }
|
public void InvalidateOre() { oreLayer = null; }
|
||||||
|
|
||||||
public void Update()
|
public void Update()
|
||||||
{
|
{
|
||||||
|
radarAnim = Game.LocalPlayer.Race == Race.Allies ? alliesAnim : sovietAnim;
|
||||||
|
radarAnim.Tick();
|
||||||
|
|
||||||
if (terrainTypeColors == null)
|
if (terrainTypeColors == null)
|
||||||
{
|
{
|
||||||
var pal = new Palette(FileSystem.Open(Rules.Map.Theater + ".pal"));
|
var pal = new Palette(FileSystem.Open(Rules.Map.Theater + ".pal"));
|
||||||
@@ -87,10 +98,27 @@ namespace OpenRa.Game.Graphics
|
|||||||
sheet.Texture.SetData(bitmap);
|
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")
|
||||||
spriteRenderer.Flush();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
<sequence name="idle" start="0" />
|
<sequence name="idle" start="0" />
|
||||||
<sequence name="damaged-idle" start="1" />
|
<sequence name="damaged-idle" start="1" />
|
||||||
<sequence name="make" start="0" length="*" src="atekmake" />
|
<sequence name="make" start="0" length="*" src="atekmake" />
|
||||||
<sequence name="active" start="0" length="*" src="sputdoor" />
|
<sequence name="active" start="0" length="*" src="sputdoor" />
|
||||||
</unit>
|
</unit>
|
||||||
<!-- soviet tech center -->
|
<!-- soviet tech center -->
|
||||||
<unit name="stek">
|
<unit name="stek">
|
||||||
@@ -202,9 +202,9 @@
|
|||||||
</unit>
|
</unit>
|
||||||
<!-- iron curtain -->
|
<!-- iron curtain -->
|
||||||
<unit name="iron">
|
<unit name="iron">
|
||||||
<sequence name="idle" start="0" length="1" />
|
<sequence name="idle" start="0" length="1" />
|
||||||
<sequence name="active" start="0" length="11" />
|
<sequence name="active" start="0" length="11" />
|
||||||
<sequence name="damaged-idle" start="11" length="1" />
|
<sequence name="damaged-idle" start="11" length="1" />
|
||||||
<sequence name="damaged-active" start="11" length="11" />
|
<sequence name="damaged-active" start="11" length="11" />
|
||||||
<sequence name="make" start="0" length="*" src="ironmake" />
|
<sequence name="make" start="0" length="*" src="ironmake" />
|
||||||
</unit>
|
</unit>
|
||||||
@@ -1031,10 +1031,30 @@
|
|||||||
<sequence name="left-normal" start="0" length="1" />
|
<sequence name="left-normal" start="0" length="1" />
|
||||||
<sequence name="left-pressed" start="1" length="1" />
|
<sequence name="left-pressed" start="1" length="1" />
|
||||||
</unit>
|
</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-left" start="0" length="1" />
|
||||||
<sequence name="top-right" start="1" length="1" />
|
<sequence name="top-right" start="1" length="1" />
|
||||||
<sequence name="bottom-left" start="2" length="1" />
|
<sequence name="bottom-left" start="2" length="1" />
|
||||||
<sequence name="bottom-right" start="3" length="1" />
|
<sequence name="bottom-right" start="3" length="1" />
|
||||||
</unit>
|
</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>
|
</sequences>
|
||||||
Reference in New Issue
Block a user