added map preview to lobby
This commit is contained in:
@@ -230,6 +230,9 @@ namespace OpenRa.Game
|
|||||||
DrawDialogBackground(new Rectangle(r.Right - 330, r.Top + 40, 310, r.Bottom - 273 - r.Top - 40),
|
DrawDialogBackground(new Rectangle(r.Right - 330, r.Top + 40, 310, r.Bottom - 273 - r.Top - 40),
|
||||||
panelSprites, false);
|
panelSprites, false);
|
||||||
|
|
||||||
|
Game.minimap.Update();
|
||||||
|
Game.minimap.Draw(new Rectangle(r.Right - 325, r.Top + 45, 300, 277), true);
|
||||||
|
|
||||||
renderer.DrawText2("Name", new int2(r.Left + 30, r.Top + 50), Color.White);
|
renderer.DrawText2("Name", new int2(r.Left + 30, r.Top + 50), Color.White);
|
||||||
renderer.DrawText2("Color", new int2(r.Left + 230, r.Top + 50), Color.White);
|
renderer.DrawText2("Color", new int2(r.Left + 230, r.Top + 50), Color.White);
|
||||||
renderer.DrawText2("Faction", new int2(r.Left + 300, r.Top + 50), Color.White);
|
renderer.DrawText2("Faction", new int2(r.Left + 300, r.Top + 50), Color.White);
|
||||||
@@ -316,7 +319,7 @@ namespace OpenRa.Game
|
|||||||
if (radarAnimationFrame >= radarSlideAnimationLength)
|
if (radarAnimationFrame >= radarSlideAnimationLength)
|
||||||
{
|
{
|
||||||
RectangleF mapRect = new RectangleF(radarOrigin.X + 9, radarOrigin.Y+(192-radarMinimapHeight)/2, 192, radarMinimapHeight);
|
RectangleF mapRect = new RectangleF(radarOrigin.X + 9, radarOrigin.Y+(192-radarMinimapHeight)/2, 192, radarMinimapHeight);
|
||||||
Game.minimap.Draw(mapRect, hasRadar, isJammed);
|
Game.minimap.Draw(mapRect, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ namespace OpenRa.Game.Graphics
|
|||||||
{
|
{
|
||||||
class Minimap
|
class Minimap
|
||||||
{
|
{
|
||||||
Sheet sheet;
|
Sheet sheet, mapOnlySheet;
|
||||||
SpriteRenderer rgbaRenderer;
|
SpriteRenderer rgbaRenderer;
|
||||||
Sprite sprite;
|
Sprite sprite, mapOnlySprite;
|
||||||
Bitmap terrain, oreLayer;
|
Bitmap terrain, oreLayer;
|
||||||
const int alpha = 230;
|
const int alpha = 230;
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ namespace OpenRa.Game.Graphics
|
|||||||
public Minimap(Renderer r)
|
public Minimap(Renderer r)
|
||||||
{
|
{
|
||||||
sheet = new Sheet(r, new Size(128, 128));
|
sheet = new Sheet(r, new Size(128, 128));
|
||||||
|
mapOnlySheet = new Sheet(r, new Size(128, 128));
|
||||||
|
|
||||||
rgbaRenderer = new SpriteRenderer(r, true, r.RgbaSpriteShader);
|
rgbaRenderer = new SpriteRenderer(r, true, r.RgbaSpriteShader);
|
||||||
var size = Math.Max(Rules.Map.Width, Rules.Map.Height);
|
var size = Math.Max(Rules.Map.Width, Rules.Map.Height);
|
||||||
@@ -27,6 +28,7 @@ namespace OpenRa.Game.Graphics
|
|||||||
var dh = (size - Rules.Map.Height) / 2;
|
var dh = (size - Rules.Map.Height) / 2;
|
||||||
|
|
||||||
sprite = new Sprite(sheet, new Rectangle(Rules.Map.Offset.X+dw, Rules.Map.Offset.Y+dh, size, size), TextureChannel.Alpha);
|
sprite = new Sprite(sheet, new Rectangle(Rules.Map.Offset.X+dw, Rules.Map.Offset.Y+dh, size, size), TextureChannel.Alpha);
|
||||||
|
mapOnlySprite = new Sprite(mapOnlySheet, new Rectangle(Rules.Map.Offset.X + dw, Rules.Map.Offset.Y + dh, size, size), TextureChannel.Alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
Color[] terrainTypeColors;
|
Color[] terrainTypeColors;
|
||||||
@@ -37,9 +39,6 @@ namespace OpenRa.Game.Graphics
|
|||||||
|
|
||||||
public void Update()
|
public void Update()
|
||||||
{
|
{
|
||||||
if (!Game.world.Actors.Any(a => a.Owner == Game.LocalPlayer && a.traits.Contains<ProvidesRadar>()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
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"));
|
||||||
@@ -79,6 +78,11 @@ namespace OpenRa.Game.Graphics
|
|||||||
oreLayer.SetPixel(x, y, terrainTypeColors[(int)TerrainMovementType.Ore]);
|
oreLayer.SetPixel(x, y, terrainTypeColors[(int)TerrainMovementType.Ore]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mapOnlySheet.Texture.SetData(oreLayer);
|
||||||
|
|
||||||
|
if (!Game.world.Actors.Any(a => a.Owner == Game.LocalPlayer && a.traits.Contains<ProvidesRadar>()))
|
||||||
|
return;
|
||||||
|
|
||||||
var bitmap = new Bitmap(oreLayer);
|
var bitmap = new Bitmap(oreLayer);
|
||||||
var bitmapData = bitmap.LockBits(new Rectangle( 0,0,bitmap.Width, bitmap.Height ),
|
var bitmapData = bitmap.LockBits(new Rectangle( 0,0,bitmap.Width, bitmap.Height ),
|
||||||
ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
|
ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
|
||||||
@@ -97,7 +101,8 @@ namespace OpenRa.Game.Graphics
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach (var a in Game.world.Actors.Where(a => a.traits.Contains<Unit>()))
|
foreach (var a in Game.world.Actors.Where(a => a.traits.Contains<Unit>()))
|
||||||
*(c + (a.Location.Y * bitmapData.Stride >> 2) + a.Location.X) = Chat.paletteColors[(int)a.Owner.Palette].ToArgb();
|
*(c + (a.Location.Y * bitmapData.Stride >> 2) + a.Location.X) =
|
||||||
|
Chat.paletteColors[(int)a.Owner.Palette].ToArgb();
|
||||||
|
|
||||||
unchecked
|
unchecked
|
||||||
{
|
{
|
||||||
@@ -112,9 +117,10 @@ namespace OpenRa.Game.Graphics
|
|||||||
sheet.Texture.SetData(bitmap);
|
sheet.Texture.SetData(bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Draw(RectangleF rect, bool hasRadar, bool isJammed)
|
public void Draw(RectangleF rect, bool mapOnly)
|
||||||
{
|
{
|
||||||
rgbaRenderer.DrawSprite(sprite, new float2(rect.X, rect.Y), PaletteType.Chrome, new float2(rect.Width, rect.Height));
|
rgbaRenderer.DrawSprite(mapOnly ? mapOnlySprite : sprite,
|
||||||
|
new float2(rect.X, rect.Y), PaletteType.Chrome, new float2(rect.Width, rect.Height));
|
||||||
rgbaRenderer.Flush();
|
rgbaRenderer.Flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user