/// <summary> /// Creates a thread-safe manager which holds all controllables of a player /// </summary> /// <param name="universeGroup"></param> internal ControllablesManager(UniverseSession universeSession) { Session = universeSession; universeGroup = universeSession.UniverseGroup; Ships = ImmutableArray <Ship> .Empty; }
/// <summary> /// Creates a map manager /// </summary> /// <param name="universeGroup"></param> internal MapManager(UniverseSession universeSession) { Session = universeSession; UniverseGroup = universeSession.UniverseGroup; mainMaps = new ConcurrentDictionary <string, Map>(Environment.ProcessorCount * 2, 4); universeSortedMaps = new ConcurrentDictionary <string, List <Map> >(Environment.ProcessorCount * 2, 4); foreach (Universe universe in UniverseGroup.Universes) { mainMaps.TryAdd(universe.Name, null); universeSortedMaps.TryAdd(universe.Name, new List <Map>()); } workerThread = new Thread(new ThreadStart(worker)); workerThread.Start(); }
/// <summary> /// /// </summary> public GameScreen(GameUI parent) : base(parent) { this.parent = parent; universeSession = parent.Session; universeGroup = universeSession.UniverseGroup; mapManager = universeSession.MapManager; controllablesManager = universeSession.ControllablesManager; foreach (Flattiverse.Team team in universeGroup.Teams) { SolidColorBrush teamColor = new SolidColorBrush(parent.WindowRenderTarget, new SharpDX.Color4(team.Red, team.Green, team.Blue, 1f)); if (!Brushes.SolidColorBrushes.TeamColors.ContainsKey(team.Name)) { Brushes.SolidColorBrushes.TeamColors.Add(team.Name, teamColor); } } dashedStrokeStyle = new StrokeStyle(parent.Direct2DFactory, new StrokeStyleProperties() { DashStyle = DashStyle.Dash, DashCap = CapStyle.Flat }); missionTargetTextFormat = new SharpDX.DirectWrite.TextFormat(parent.DirectWriteFactory, "Arial", SharpDX.DirectWrite.FontWeight.Normal, SharpDX.DirectWrite.FontStyle.Normal, 12f); scoreBoard = new UniverseTable(this, universeGroup, Brushes.SolidColorBrushes.BlackHalfTransparent); scoreBoard.AddColumn(" ", "SmallAvatar", 40f, UniverseTeamTable.MAX_COLUMN_HEIGHT); scoreBoard.AddColumn("Name", "Name", UniverseTeamTable.MAX_COLUMN_WIDTH, UniverseTeamTable.MAX_COLUMN_HEIGHT); scoreBoard.AddColumn("Score", "Score", UniverseTeamTable.MAX_COLUMN_WIDTH, UniverseTeamTable.MAX_COLUMN_HEIGHT); scoreBoard.AddColumn("Kills", "Kills", UniverseTeamTable.MAX_COLUMN_WIDTH, UniverseTeamTable.MAX_COLUMN_HEIGHT); scoreBoard.AddColumn("Deaths", "Deaths", UniverseTeamTable.MAX_COLUMN_WIDTH, UniverseTeamTable.MAX_COLUMN_HEIGHT); scoreBoard.AddColumn("Avg. Commit Time", "AverageCommitTime", 250f, UniverseTeamTable.MAX_COLUMN_HEIGHT); currentShip = controllablesManager.CreateShip("D2RP", $"R1P"); shipList.Add(currentShip); currentShip.TryContinue(); }
/// <summary> /// Creates a controllable /// </summary> /// <param name="universeSession">Active session</param> /// <param name="controllable">Flattiverse controllable</param> internal Controllable(UniverseSession universeSession, Flattiverse.Controllable controllable) { Session = universeSession; Base = controllable; Name = controllable.Name; Class = controllable.Class; NeededTileSize = 2; Radius = controllable.Radius; int tempRadius = (int)(Radius * 2f + 0.1f); while (NeededTileSize < tempRadius) { NeededTileSize <<= 1; } workerThread = new Thread(new ThreadStart(worker)); workerThread.Start(); }
/// <summary> /// Creates a ship controllable /// </summary> /// <param name="ship"></param> internal Ship(UniverseSession universeSession, Flattiverse.Ship ship) : base(universeSession, ship) { this.ship = ship; }