Draw shellmap actors
This commit is contained in:
@@ -146,6 +146,7 @@ namespace OpenRA
|
|||||||
public void Tick(World world)
|
public void Tick(World world)
|
||||||
{
|
{
|
||||||
if (!Game.IsStarted) return;
|
if (!Game.IsStarted) return;
|
||||||
|
if (world.LocalPlayer == null) return;
|
||||||
|
|
||||||
TickPaletteAnimation();
|
TickPaletteAnimation();
|
||||||
TickRadarAnimation();
|
TickRadarAnimation();
|
||||||
|
|||||||
@@ -185,12 +185,13 @@ namespace OpenRA
|
|||||||
AvailableMaps = FindMaps(LobbyInfo.GlobalSettings.Mods);
|
AvailableMaps = FindMaps(LobbyInfo.GlobalSettings.Mods);
|
||||||
|
|
||||||
ChangeMods();
|
ChangeMods();
|
||||||
LoadMap(new Manifest(LobbyInfo.GlobalSettings.Mods).ShellmapUid);
|
|
||||||
|
|
||||||
if( Settings.Replay != "" )
|
if( Settings.Replay != "" )
|
||||||
orderManager = new OrderManager( new ReplayConnection( Settings.Replay ) );
|
orderManager = new OrderManager( new ReplayConnection( Settings.Replay ) );
|
||||||
else
|
else
|
||||||
JoinLocal();
|
JoinLocal();
|
||||||
|
|
||||||
|
LoadShellMap(new Manifest(LobbyInfo.GlobalSettings.Mods).ShellmapUid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string CurrentHost = "";
|
public static string CurrentHost = "";
|
||||||
@@ -341,6 +342,20 @@ namespace OpenRA
|
|||||||
|
|
||||||
public static bool IsStarted { get { return orderManager.GameStarted; } }
|
public static bool IsStarted { get { return orderManager.GameStarted; } }
|
||||||
|
|
||||||
|
public static void LoadShellMap(string map)
|
||||||
|
{
|
||||||
|
LoadMap(map);
|
||||||
|
world.Queries = new World.AllQueries(world);
|
||||||
|
|
||||||
|
foreach (var p in world.players.Values)
|
||||||
|
foreach (var q in world.players.Values)
|
||||||
|
p.Stances[q] = ChooseInitialStance(p, q);
|
||||||
|
|
||||||
|
foreach (var gs in world.WorldActor.traits.WithInterface<IGameStarted>())
|
||||||
|
gs.GameStarted(world);
|
||||||
|
orderManager.StartGame();
|
||||||
|
}
|
||||||
|
|
||||||
public static void StartGame()
|
public static void StartGame()
|
||||||
{
|
{
|
||||||
LoadMap(LobbyInfo.GlobalSettings.Map);
|
LoadMap(LobbyInfo.GlobalSettings.Map);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#region Copyright & License Information
|
#region Copyright & License Information
|
||||||
/*
|
/*
|
||||||
* Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
|
* Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
|
||||||
* This file is part of OpenRA.
|
* This file is part of OpenRA.
|
||||||
@@ -43,6 +43,9 @@ namespace OpenRA.GameRules
|
|||||||
public Cache<string, List<Actor>> GatherBuildings( Player player )
|
public Cache<string, List<Actor>> GatherBuildings( Player player )
|
||||||
{
|
{
|
||||||
var ret = new Cache<string, List<Actor>>( x => new List<Actor>() );
|
var ret = new Cache<string, List<Actor>>( x => new List<Actor>() );
|
||||||
|
if (player == null)
|
||||||
|
return ret;
|
||||||
|
|
||||||
foreach( var b in player.World.Queries.OwnedBy[player].Where( x=>x.Info.Traits.Contains<BuildingInfo>() ) )
|
foreach( var b in player.World.Queries.OwnedBy[player].Where( x=>x.Info.Traits.Contains<BuildingInfo>() ) )
|
||||||
{
|
{
|
||||||
ret[ b.Info.Name ].Add( b );
|
ret[ b.Info.Name ].Add( b );
|
||||||
@@ -56,6 +59,9 @@ namespace OpenRA.GameRules
|
|||||||
|
|
||||||
public bool CanBuild( ActorInfo info, Player player, Cache<string, List<Actor>> playerBuildings )
|
public bool CanBuild( ActorInfo info, Player player, Cache<string, List<Actor>> playerBuildings )
|
||||||
{
|
{
|
||||||
|
if (player == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
var bi = info.Traits.GetOrDefault<BuildableInfo>();
|
var bi = info.Traits.GetOrDefault<BuildableInfo>();
|
||||||
if( bi == null ) return false;
|
if( bi == null ) return false;
|
||||||
|
|
||||||
@@ -74,6 +80,9 @@ namespace OpenRA.GameRules
|
|||||||
|
|
||||||
public IEnumerable<string> BuildableItems( Player player, params string[] categories )
|
public IEnumerable<string> BuildableItems( Player player, params string[] categories )
|
||||||
{
|
{
|
||||||
|
if (player == null)
|
||||||
|
yield break;
|
||||||
|
|
||||||
var playerBuildings = GatherBuildings( player );
|
var playerBuildings = GatherBuildings( player );
|
||||||
foreach (var unit in AllBuildables(categories))
|
foreach (var unit in AllBuildables(categories))
|
||||||
if( CanBuild( unit, player, playerBuildings ) )
|
if( CanBuild( unit, player, playerBuildings ) )
|
||||||
|
|||||||
@@ -75,7 +75,8 @@ namespace OpenRA.Graphics
|
|||||||
world.WorldRenderer.Draw();
|
world.WorldRenderer.Draw();
|
||||||
if( Game.orderManager.GameStarted )
|
if( Game.orderManager.GameStarted )
|
||||||
{
|
{
|
||||||
Game.chrome.Draw( world );
|
if (world.LocalPlayer != null)
|
||||||
|
Game.chrome.Draw( world );
|
||||||
|
|
||||||
if( Game.orderManager.Connection.ConnectionState == ConnectionState.NotConnected )
|
if( Game.orderManager.Connection.ConnectionState == ConnectionState.NotConnected )
|
||||||
Game.chrome.DrawDialog("Connection lost.");
|
Game.chrome.DrawDialog("Connection lost.");
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ using System.Drawing;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.FileFormats;
|
using OpenRA.FileFormats;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
|
using System;
|
||||||
namespace OpenRA.Graphics
|
namespace OpenRA.Graphics
|
||||||
{
|
{
|
||||||
public class WorldRenderer
|
public class WorldRenderer
|
||||||
|
|||||||
@@ -155,7 +155,10 @@ namespace OpenRA
|
|||||||
frameEndActions = new List<Action<World>>();
|
frameEndActions = new List<Action<World>>();
|
||||||
foreach (var a in acts) a(this);
|
foreach (var a in acts) a(this);
|
||||||
|
|
||||||
Minimap.Update();
|
// TODO: This doesn't even belong here -> move into a widget
|
||||||
|
if (LocalPlayer != null)
|
||||||
|
Minimap.Update();
|
||||||
|
|
||||||
foreach (var player in players.Values)
|
foreach (var player in players.Values)
|
||||||
player.Tick();
|
player.Tick();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user