示例#1
0
        public override void Start()
        {
            Ship    = Entity.EntityManager.GetAll <FlightShip>().First();
            _camera = Entity.EntityManager.GetAll <FlightCameraControl>().First();

            _oldCameraScale     = _camera.CameraScale;
            _camera.CameraScale = 5f;

            var random        = new Random();
            var takenUpgrades = Ship.Upgrades.ToArray();
            var possible      = PotentialUpgrades
                                .Where(x => takenUpgrades.All(y => y.GetType() != x.GetType()))
                                .Select(x => (x, random.Next(1000)))
                                .ToList() as List <(UpgradeBase, int)>;

            possible
            .Sort((x, y) => x.Item2 - y.Item2);
            var candidates = possible.Select(x => x.Item1)
                             .ToArray();

            if (candidates.Length < 3)
            {
                candidates = PotentialUpgrades;
            }

            _dispose = UserInterfaceManager.Create(new UpgradeMenu(
                                                       new List <UpgradeBase>()
            {
                candidates[0],
                candidates[1],
                candidates[2]
            },
                                                       OnSelect
                                                       ));
        }
示例#2
0
        public override void Initialise()
        {
            _uiCleanup = UserInterfaceManager.Create(new SplashTemplate("Welcome to Forge", SceneManager));

            Fonts.Load("Default", Content.Load <SpriteFont>("Font/Default"));

            Textures.Load("Rocket", Content.Load <Texture2D>("Icon/Rocket"));
            Textures.Load("Settings", Content.Load <Texture2D>("Icon/Settings"));
            Textures.Load("Globe", Content.Load <Texture2D>("Icon/Globe"));
        }
示例#3
0
        public override void Initialise()
        {
            AddSingleton(new SpaceBackgroundScroll());

            var focusLocation = HexagonHelpers.GetGridWorldPosition(new Point(2, 2));

            var camera    = Create();
            var cameraPos = camera.Add(new Transform()
            {
                Rotation = Quaternion.CreateFromYawPitchRoll(0, 0, (float)(Math.PI)),
                Location = focusLocation + (Vector3.Backward + Vector3.Up * 1.8f) * 10
            });

            //CameraManager.ActiveCamera = camera.Add(new Camera(new OrthographicCameraParameters(10)));
            CameraManager.ActiveCamera = camera.Add(new Camera(new PerspectiveCameraParameters()
            {
                AspectRatio = GraphicsDevice.Viewport.AspectRatio
            }));
            CameraManager.ActiveCamera.LookAt(focusLocation);
            CameraManager.ActiveCamera.Recalculate();
            camera.Add(new BuildCameraControl());

            // Background planet.
            var planetEnt = Create();

            planetEnt.Add(new Transform()
            {
                Location = cameraPos.Location + CameraManager.ActiveCamera.Forwards * 100 + Vector3.Forward * 50
            });
            var planetRenderer = planetEnt.Add(new PlanetRenderer()
            {
                AutoRender  = true,
                Planet      = _planet,
                Scale       = 80f,
                RenderOrder = 20
            });

            var floor = Create();

            floor.Add(new BuildFloor(_shipTopology));

            var productionLine = AddSingleton(new ProductionLine());
            var gameMode       = AddSingleton(new BuildMode(_shipTopology, _planet));

            var placerEnt = Create();
            var placer    = placerEnt.Add(new BuildPlacer(CameraManager.ActiveCamera, _shipTopology, productionLine));

            placerEnt.Add(new BuildPlacerCursor());

            var shipRenderer = AddSingleton(new ShipSectionRenderer());

            UserInterfaceManager.AddSceneUI(this, new BuildScreenTemplate(gameMode, _planet, productionLine, placer, shipRenderer));
            if (_planet == Planet.Earth)
            {
                UIDispose closeBeginScreen = null;
                closeBeginScreen = UserInterfaceManager.Create(new BeginScreenTemplate(() => {
                    gameMode.Start();
                    EntityManager.Update(() =>
                    {
                        closeBeginScreen?.Invoke();
                    });
                }));
            }
            else
            {
                gameMode.Start();
            }

            MusicManager.Start("Building");
        }
示例#4
0
 public override void Start()
 {
     _dispose          = UserInterfaceManager.Create(new OpenControls());
     _openPhaseControl = Entity.Create().Add(new OpenPhaseControl());
 }