Beispiel #1
0
        static IScene SetupScene(IAssetManager assetManager)
        {
            // Create scene
            IScene scene = new Scene("Game");

            // Create the human player
            PlayerController player = scene.CreateGameObject <PlayerController>("PlayerController", Vector2.Zero);
            {
                player.TeamColor          = new Color(183, 68, 231);
                player.AttackCommandSound = assetManager.GetAsset <AudioClip>("AttackCommand");
                player.AddComponent <LineRenderer>();
                player.AddComponent <AudioSource>();
            }

            // Create the AI player
            AIController aiPlayer = scene.CreateGameObject <AIController>("AIController", Vector2.Zero);
            {
                aiPlayer.TeamColor = new Color(68, 231, 118);
            }

            // Create the Neutral player
            AIController neutralPlayer = scene.CreateGameObject <AIController>("NeutralController", Vector2.Zero);
            {
                neutralPlayer.TeamColor = new Color(230, 230, 230);
                neutralPlayer.IsNeutral = true;
            }

            // Create the GameController
            GameController gc = scene.CreateGameObject <GameController>("GameController", Vector2.Zero);
            {
                gc.ShipSprite             = new Sprite(assetManager.GetAsset <Texture2D>("ship"));
                gc.ShotSprite             = new Sprite(assetManager.GetAsset <Texture2D>("bullet"));
                gc.OutlineSprite          = new Sprite(assetManager.GetAsset <Texture2D>("outline"));
                gc.RangeSprite            = new Sprite(assetManager.GetAsset <Texture2D>("range"));
                gc.PlanetConqueredSound   = assetManager.GetAsset <AudioClip>("PlanetConquered");
                gc.PlanetSelectSound      = assetManager.GetAsset <AudioClip>("PlanetSelect");
                gc.PlanetUpgradeSound     = assetManager.GetAsset <AudioClip>("PlanetUpgrade");
                gc.ShipShotSound          = assetManager.GetAsset <AudioClip>("ShipShotDown");
                gc.ShipExplosionAnimation = new AnimationClip(new Sprite(assetManager.GetAsset <Texture2D>("ship_explosion")), 7);
                gc.PlanetPopulationFont   = assetManager.GetAsset <Font>("main_font");
                gc.Players = new Player[] { player, aiPlayer, neutralPlayer };

                // Set the planet types and upgrades
                gc.PlanetTypes = new[]
                {
                    new Planet.Type
                    {
                        UpgradeLevels = new[]
                        {
                            new Planet.Upgrade
                            {
                                Cost               = 10,
                                Sprite             = new Sprite(assetManager.GetAsset <Texture2D>("Planet1")),
                                PopGenerationLimit = 20,
                                PopGenerationRate  = 2f
                            },
                            new Planet.Upgrade
                            {
                                Cost               = 15,
                                Sprite             = new Sprite(assetManager.GetAsset <Texture2D>("Planet2")),
                                PopGenerationLimit = 40,
                                PopGenerationRate  = 1.5f
                            },
                            new Planet.Upgrade
                            {
                                Cost               = 20,
                                Sprite             = new Sprite(assetManager.GetAsset <Texture2D>("Planet3")),
                                PopGenerationLimit = 60,
                                PopGenerationRate  = 1f
                            }
                        }
                    },
                    new Planet.Type
                    {
                        UpgradeLevels = new[]
                        {
                            new Planet.Upgrade
                            {
                                Cost     = 10,
                                FireRate = 0.5f,
                                Range    = 120,
                                Sprite   = new Sprite(assetManager.GetAsset <Texture2D>("Sentry1")),
                            },
                            new Planet.Upgrade
                            {
                                Cost     = 20,
                                FireRate = 0.4f,
                                Range    = 170,
                                Sprite   = new Sprite(assetManager.GetAsset <Texture2D>("Sentry2")),
                            },
                            new Planet.Upgrade
                            {
                                Cost     = 30,
                                FireRate = 0.3f,
                                Range    = 210,
                                Sprite   = new Sprite(assetManager.GetAsset <Texture2D>("Sentry3")),
                            }
                        }
                    }
                };

                player.GameController   = gc;
                aiPlayer.GameController = gc;
            }

            // Create the Custom Cursor
            CustomCursor cc = scene.CreateGameObject <CustomCursor>("CustomCursor", Vector2.Zero);
            {
                cc.AddComponent <SpriteRenderer>();
                cc.Percent25Sprite  = new Sprite(assetManager.GetAsset <Texture2D>("cursor_25"));
                cc.Percent50Sprite  = new Sprite(assetManager.GetAsset <Texture2D>("cursor_50"));
                cc.Percent75Sprite  = new Sprite(assetManager.GetAsset <Texture2D>("cursor_75"));
                cc.Percent100Sprite = new Sprite(assetManager.GetAsset <Texture2D>("cursor_100"));
                player.CustomCursor = cc;
            }

            // Create the HUD
            HUD hud = scene.CreateGameObject <HUD>("HUD", Vector2.Zero);

            {
                var leftBar   = scene.CreateGameObject <LineRenderer>("LeftBar", Vector2.Zero);
                var rightBar  = scene.CreateGameObject <LineRenderer>("RightBar", Vector2.Zero);
                var leftText  = scene.CreateGameObject <TextRenderer>("LeftText", Vector2.Zero);
                var rightText = scene.CreateGameObject <TextRenderer>("RightText", Vector2.Zero);

                hud.LeftBar        = leftBar;
                hud.RightBar       = rightBar;
                hud.LeftText       = leftText;
                hud.RightText      = rightText;
                hud.UIFont         = assetManager.GetAsset <Font>("main_font");
                hud.GameController = gc;
            }

            return(scene);
        }