コード例 #1
0
        /// <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;
        }
コード例 #2
0
        /// <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();
        }
コード例 #3
0
        /// <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();
        }
コード例 #4
0
ファイル: Controllable.cs プロジェクト: dannyd89/yafbcore
        /// <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();
        }
コード例 #5
0
ファイル: Ship.cs プロジェクト: dannyd89/yafbcore
 /// <summary>
 /// Creates a ship controllable
 /// </summary>
 /// <param name="ship"></param>
 internal Ship(UniverseSession universeSession, Flattiverse.Ship ship)
     : base(universeSession, ship)
 {
     this.ship = ship;
 }