コード例 #1
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            // Set the sharing mode of the graphics device to turn on XNA rendering
            SharedGraphicsDeviceManager.Current.GraphicsDevice.SetSharingMode(true);

            graphics = SharedGraphicsDeviceManager.Current.GraphicsDevice;

            game.Run();

            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(SharedGraphicsDeviceManager.Current.GraphicsDevice);

            var environment = new Conesoft.Game.DefaultEnvironment()
            {
                Random          = new Random(),
                ModelBoundaries = new Dictionary <string, BoundingSphere>()
            };

            game.Resources.Load((to, from) =>
            {
                to.Models.Add(from.Load <Model>(Data.Ship, Data.Drone, Data.Spaceship));
                to.Sprites.Add(from.Load <Texture2D>(Data.Fireball, Data.Energyball, Data.Bullet, Data.Grass, Data.TutorialOverlay, Data.GameWonOverlay, Data.GameOverOverlay));

                var texture = new Texture2D(graphics, 1, 1);
                texture.SetData(new Color[] { Color.Black });
                to.Sprites.Add(Data.BlackBackground, texture);

                to.Sounds.Add(from.Load <SoundEffect>(Data.ExplosionSound, Data.GameOverSound, Data.GoSound, Data.GoodSound, Data.LaserSound));

                to.Fonts.Add(from.Load <SpriteFont>(Data.Font, Data.SmallFont));

                var terrainModel = new TerrainModel()
                {
                    Position = Vector3.Down * 64 * 32,
                    Size     = new Vector3(1024 * 128, 256 * 32, 1024 * 128)
                };
                terrainModel.LoadFromTexture2D(from.Load <Texture2D>(Data.LandscapeGround), environment);
                to.Terrains.Add(Data.Landscape, terrainModel);

                foreach (var model in to.Models)
                {
                    var boundingSphere = default(BoundingSphere);
                    foreach (var mesh in model.Value.Meshes)
                    {
                        boundingSphere = BoundingSphere.CreateMerged(boundingSphere, mesh.BoundingSphere);
                    }
                    environment.ModelBoundaries[model.Key] = boundingSphere;
                }
            });

            environment.Sounds = game.Resources.Sounds;

            // Start the timer
            timer.Start();

            App.Current.Appl.NavigationService.NavigateTo <LastManStandingLevel>();

            level = new DefaultLevel(environment);

            var spaceShips = level.Objects3D.OfType <Spaceship>();

            if (spaceShips.Count() > 0)
            {
                localPlayer = new LocalPlayer()
                {
                    ControlledObject = spaceShips.First()
                };
                level.Players.Add(localPlayer);
            }

            startTime = null;

            fadeInTime            = App.Current.FirstTime ? 3 : 1;
            App.Current.FirstTime = false;

            base.OnNavigatedTo(e);
        }