Example #1
0
        public override void LoadContent()
        {
            base.LoadContent();

            //Game.CurrentGameMode.ClearPlayers();
            Game.EngineComponents.Get <AudioManager>().PreloadSongs("Audio\\joinScreen", "Audio\\gamePlay");
            var backgroundSize = new Vector2(6f / 3.508f * 1.1f * GameConstants.ScreenHeight, 1.1f * GameConstants.ScreenHeight);

            AddEntity(new Entity(this, EntityType.Game, new SpriteComponent("background", backgroundSize, new Vector2(0.5f, 0.5f), layerDepth: -1.0f)));
            AddEntity(new Entity(this, EntityType.Game, new SpriteComponent("trees_border", backgroundSize, new Vector2(0.5f, 0.5f), layerDepth: -0.9f)));

            // UI
            HUDTextComponent pressStartText    = new HUDTextComponent(MainFont, 0.04f, "PRESS START", offset: new Vector2(0.5f, 0.9f), origin: new Vector2(0.5f, 0.5f), layerDepth: 1f);
            HUDComponent     vignetteComponent = new HUDComponent(Game.Debug.DebugRectangle, Vector2.One, layerDepth: 0)
            {
                MaintainAspectRation = false, OnVirtualUIScreen = false,
                Color = Color.FromNonPremultiplied(22, 59, 59, 163)
            };
            Vector2      logoSize      = new Vector2(1, 0.7684f);
            HUDComponent logoComponent = new HUDComponent("titleScreen", 0.9f * logoSize, offset: new Vector2(0.5f, 0.5f), origin: new Vector2(0.5f, 0.5f), layerDepth: 0.9f);

            AddEntity(new Entity(this, EntityType.UI, Vector2.Zero, pressStartText, vignetteComponent, logoComponent));
            Dispatcher.AddAnimation(Animation.Get(0, 1, 1.5f, true, val => pressStartText.Opacity = val, EasingFunctions.ToLoop(EasingFunctions.QuadIn)));


            var inputEntity = new Entity(this, EntityType.LayerIndependent,
                                         new InputComponent(0, new InputMapping(f => InputFunctions.KeyboardMenuStart(f), StartPressed))
                                         );

            for (int i = 0; i < 4; i++)
            {
                inputEntity.AddComponent(new InputComponent(i, new InputMapping(f => InputFunctions.MenuStart(f), StartPressed)));
            }
            AddEntity(inputEntity);

            AddEntity(new Entity(this, EntityType.LayerIndependent, new CenterCameraComponent(Game.Camera)));

            this.TransitionIn();
        }
Example #2
0
        public override void LoadContent()
        {
            base.LoadContent();

            // we create them to preload everything
            new BoarEntity(this, Vector2.Zero);
            new ChickenEntity(this, Vector2.Zero, 0); // normal chicken
            new ChickenEntity(this, Vector2.Zero, 1); // yellow chicken

            player        = playerEntities[0];
            startPosition = player.Body.Position;

            // Trees
            AddEntity(new Entity(this, EntityType.Game, new Vector2(2.4f, 2f), 0.4f,
                                 new SpriteComponent("tree1", new Vector2(5.25f, 6.02f), new Vector2(0.5f, 0.5f), layerDepth: 0.9f),
                                 new PhysicsComponent(new PolygonShape(new Vertices(GameConstants.BoundingTree1), 1))
                                 ));
            AddEntity(new Entity(this, EntityType.Game, new Vector2(-2.8f, -3.5f), 1.4f,
                                 new SpriteComponent("tree1", new Vector2(5.25f * 1.1f, 6.02f * 1.1f), new Vector2(0.5f, 0.5f), layerDepth: 0.9f),
                                 new PhysicsComponent(new PolygonShape(new Vertices(GameConstants.BoundingTree1.Select(v => v * 1.1f)), 1))
                                 ));


            // UI
            AddEntity(new Entity(this, EntityType.UI, new Vector2(0.5f, 0.95f), welcome = new HUDTextComponent(MainFont, 0.08f, "Welcome to VACAMOLE.", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            },
                                 playerAndBarn = new HUDTextComponent(MainFont, 0.08f, "This is your player and your barn.", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            },
                                 moveWithStick = new HUDTextComponent(MainFont, 0.08f, "Try to move with the left stick of your controller.", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            },
                                 dash1 = new HUDTextComponent(MainFont, 0.08f, "Good. Now press the right bumper to dash.", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            },
                                 dash2 = new HUDTextComponent(MainFont, 0.08f, "Try to dash multiple times.", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            },
                                 lure = new HUDTextComponent(MainFont, 0.08f, "Press A to lure animals towards you!", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            },
                                 shout = new HUDTextComponent(MainFont, 0.08f, "Press B to shout. The animals will run!", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            }
                                 ));
            AddEntity(new Entity(this, EntityType.UI, new Vector2(0.5f, 0.9f), dizzy = new HUDTextComponent(MainFont, 0.08f, "If you dash too often or into a something, you get dizzy.\nHowever, if you hit another player you can make them dizzy.", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            },
                                 fetchAnimal = new HUDTextComponent(MainFont, 0.08f, "Now use luring (B) and shouting (A) to bring animals into your barn.\nBoars give 3 points, chicken 1 point.", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            },
                                 pressStartToLeave = new HUDTextComponent(MainFont, 0.08f, "Well done! Press START to continue!\nGrab your friends - VACAMOLE is enjoyed best with 4 players!", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            }));

            bool isKeyboard   = Game.CurrentGameMode.PlayerInfos.First().IsKeyboardPlayer;
            int  gamepadIndex = Game.CurrentGameMode.PlayerInfos.First().GamepadIndex;

            AddEntity(new Entity(this, EntityType.LayerIndependent, new InputComponent(gamepadIndex,
                                                                                       new InputMapping(f => (isKeyboard) ? InputFunctions.KeyboardMenuStart(f) : InputFunctions.MenuStart(f), f =>
            {
                if (currentState == TutorialState.PressStartToLeaveTutorial && !IsTransitioning)
                {
                    Settings <GameSettings> .Value.ShowTutorial = false;
                    Settings <GameSettings> .Save();
                    Pause();
                    this.TransitionOutAndSwitchScene(navigateBackToMainMenu ? (Scene) new MainMenuScene(Game) : new GameModeScene(Game));
                }
            }))));
        }
Example #3
0
        private InputComponent MakeInput(bool isKeyboard, int gamepadIndex)
        {
            return(new InputComponent(gamepadIndex,
                                      new InputMapping(f => (isKeyboard) ? InputFunctions.KeyboardMenuStart(f) : InputFunctions.MenuStart(f), f => StartIfReady()),
                                      new InputMapping(f => (isKeyboard) ? InputFunctions.KeyboardMenuSelect(f) : InputFunctions.MenuSelect(f), f =>
            {
                var player = players.FindPlayer(gamepadIndex, isKeyboard);

                if (player != null)
                {
                    PlayerIsReady(player);
                }
                else
                {
                    JoinPlayer(isKeyboard, gamepadIndex);
                }
            }), new InputMapping(f => (isKeyboard) ? InputFunctions.KeyboardMenuBack(f) : InputFunctions.MenuBack(f), f =>
            {
                var player = players.FindPlayer(gamepadIndex, isKeyboard);

                if (player != null)
                {
                    if (player.CurrentState == JoinState.State.Joined)
                    {
                        NonPositionalAudio.PlaySound("Audio/MenuActionSound");
                        Game.CurrentGameMode.RemovePlayer(gamepadIndex, isKeyboard);
                        RemoveEntity(player.HUD);
                        RemoveEntity(player.Player);
                        players.Remove(player);
                        numJoinedPlayer--;

                        if (numJoinedPlayer < 4)
                        {
                            Dispatcher.AddAnimation(Animation.Get(joinComponent.Opacity, 1, 0.2f, false, (val) =>
                            {
                                joinComponent.Opacity = val;
                                joinTextComponent.Opacity = val;
                            }, EasingFunctions.QuadIn));
                        }
                    }
                    else if (player.CurrentState == JoinState.State.Ready)
                    {
                        NonPositionalAudio.PlaySound("Audio/MenuActionSound");
                        player.Back();

                        // Animate text
                        var textChooser = player.HUD.GetComponentByName <HUDTextComponent>("nameTextchooser");
                        Dispatcher.AddAnimation(Animation.Get(textChooser.Opacity, 1f, 1f, false, (o) => textChooser.Opacity = o, EasingFunctions.QuadIn));
                        var boardChooser = player.HUD.GetComponentByName <HUDComponent>("namechooser");
                        Dispatcher.AddAnimation(Animation.Get(boardChooser.Opacity, 1f, 1f, false, (o) => boardChooser.Opacity = o, EasingFunctions.QuadIn));

                        var text = player.HUD.GetComponentByName <HUDTextComponent>("nameText");
                        Dispatcher.AddAnimation(Animation.Get(text.Opacity, 0f, 1f, false, (o) => text.Opacity = o, EasingFunctions.ToEaseOut(EasingFunctions.QuadIn)));
                        var board = player.HUD.GetComponentByName <HUDComponent>("name");
                        Dispatcher.AddAnimation(Animation.Get(board.Opacity, 0f, 1f, false, (o) => board.Opacity = o, EasingFunctions.ToEaseOut(EasingFunctions.QuadIn)));

                        player.Player.Freeze();

                        if (players.Count(j => j.CurrentState == JoinState.State.Ready) >= (Game.CurrentGameMode.PlayerMode == PlayerMode.TwoVsTwo ? 4 : 1))
                        {
                            pressStartToStartAnimation.IsRunning = false;
                            Dispatcher.AddAnimation(Animation.Get(pressStartToStart.Opacity, 0f, 0.3f, false, (o) => pressStartToStart.Opacity = o, EasingFunctions.ToEaseOut(EasingFunctions.QuadIn)));
                        }
                    }
                }
                else if (!players.Any())
                {
                    this.TransitionOutAndSwitchScene(new GameModeScene(Game));
                }
            }),
                                      new InputMapping(
                                          f => (isKeyboard)
                        ? InputFunctions.KeyboardMenuRandom(f)
                        : InputFunctions.MenuRandom(f), f =>
            {
                var player = players.FindPlayer(gamepadIndex, isKeyboard);
                if (player != null && player.CurrentState == JoinState.State.Joined)
                {
                    NonPositionalAudio.PlaySound("Audio/MenuActionSound");
                    SetRandomName(player);
                }
            }),
                                      new InputMapping(
                                          f => (isKeyboard)
                        ? InputFunctions.KeyboardMenuLeft(f) || InputFunctions.KeyboardMenuUp(f)
                        : InputFunctions.MenuLeft(f) || InputFunctions.MenuUp(f), f =>
            {
                var player = players.FindPlayer(gamepadIndex, isKeyboard);
                if (player != null && player.CurrentState == JoinState.State.Joined)
                {
                    NonPositionalAudio.PlaySound("Audio/MenuActionSound");
                    SetNextOrPreviousName(player, 1);
                }
            }),
                                      new InputMapping(
                                          f => (isKeyboard)
                        ? InputFunctions.KeyboardMenuRight(f) || InputFunctions.KeyboardMenuDown(f)
                        : InputFunctions.MenuRight(f) || InputFunctions.MenuDown(f), f =>
            {
                var player = players.FindPlayer(gamepadIndex, isKeyboard);
                if (player != null && player.CurrentState == JoinState.State.Joined)
                {
                    NonPositionalAudio.PlaySound("Audio/MenuActionSound");
                    SetNextOrPreviousName(player, -1);
                }
            })
                                      ));
        }
Example #4
0
        public override void LoadContent()
        {
            base.LoadContent();

            var backgroundSize = new Vector2(6f / 3.508f * 1.1f * GameConstants.ScreenHeight, 1.1f * GameConstants.ScreenHeight);

            AddEntity(new Entity(this, EntityType.Game, new SpriteComponent("background", backgroundSize, new Vector2(0.5f, 0.5f), layerDepth: -1.0f)));
            AddEntity(new Entity(this, EntityType.Game, new SpriteComponent("trees_border", backgroundSize, new Vector2(0.5f, 0.5f), layerDepth: 0.9f)));

            // UI
            var buttonBackground = new HUDComponent("overlayInstructionBox", new Vector2(1.2f, 0.2f), offset: new Vector2(0.5f, 0.05f), origin: new Vector2(0.5f, 0.05f));

            AddEntity(new Entity(this, EntityType.UI, buttonBackground,
                                 new HUDTextComponent(MainFont, 0.1f, "Game mode",
                                                      offset: buttonBackground.LocalPointToWorldPoint(new Vector2(0.5f, 0.5f)),
                                                      origin: new Vector2(0.5f, 0.5f), layerDepth: 0.1f)
                                 ));

            // Player mode selection
            playerMode2vs2 = new HUDComponent("gameMode_2VS2_notselected", new Vector2(0.5f, 0.32f), origin: new Vector2(0.5f, 0.5f), offset: new Vector2(-0.16f, 0))
            {
                Opacity = 0f
            };
            playerMode2vs2Selected     = new HUDComponent("gameMode_2VS2_selected", new Vector2(0.5f, 0.32f), origin: new Vector2(0.5f, 0.5f), offset: new Vector2(-0.16f, 0));
            playerModeFree4All         = new HUDComponent("gameMode_freeForAll_notselected", new Vector2(0.5f, 0.32f), origin: new Vector2(0.5f, 0.5f), offset: new Vector2(0.16f, 0));
            playerModeFree4AllSelected = new HUDComponent("gameMode_freeForAll_selected", new Vector2(0.5f, 0.32f), origin: new Vector2(0.5f, 0.5f), offset: new Vector2(0.16f, 0))
            {
                Opacity = 0f
            };

            AddEntity(new Entity(this, EntityType.UI, new Vector2(0.5f, 0.3f), playerMode2vs2, playerModeFree4All, playerMode2vs2Selected, playerModeFree4AllSelected));


            // Game mode selection
            gameModeWaves = new HUDTextComponent(MainFont, 0.05f, "WAVES", origin: new Vector2(0.5f, 0.5f), offset: new Vector2(-0.11f, 0), color: Color.Yellow)
            {
                Opacity = InActiveOpacity
            };
            gameModeBigHerd = new HUDTextComponent(MainFont, 0.05f, "BIG HERD", origin: new Vector2(0.5f, 0.5f), offset: new Vector2(0.11f, 0))
            {
                Opacity = InActiveOpacity
            };

            AddEntity(new Entity(this, EntityType.UI, new Vector2(0.5f, 0.55f), gameModeWaves, gameModeBigHerd));

            // Runtime mode selection
            runtimeModeOptions = Enumerable.Range(0, 4).Select(i => new HUDTextComponent(MainFont, 0.05f, "", origin: new Vector2(0.5f, 0.5f),
                                                                                         offset: new Vector2(-0.225f, 0) + new Vector2(0.15f, 0) * i)
            {
                Opacity = InActiveOpacity, Color = i == 0 ? Color.Yellow : Color.Wheat
            }).ToArray();
            UpdateRuntimeTexts();
            AddEntity(new Entity(this, EntityType.UI, new Vector2(0.5f, 0.65f), runtimeModeOptions));

            // CONTINUE TEXT
            continueText = new HUDTextComponent(MainFont, 0.05f, "press A to continue", origin: new Vector2(0.5f, 0.5f))
            {
                Opacity = 0
            };
            AddEntity(new Entity(this, EntityType.UI, new Vector2(0.5f, 0.8f), continueText));
            continueTextAnimation = Dispatcher.AddAnimation(Animation.Get(0, 1, 1.5f, true, val => continueText.Opacity = val, EasingFunctions.ToLoop(EasingFunctions.QuadIn))
                                                            .Set(a => a.IsRunning = false));


            // add controls
            var layerIndependent = new Entity(this, EntityType.LayerIndependent, new CenterCameraComponent(Game.Camera));

            for (int i = 0; i < 4; i++)
            {
                layerIndependent.AddComponent(new InputComponent(i,
                                                                 new InputMapping(f => InputFunctions.MenuSelect(f) || InputFunctions.MenuDown(f), OnNextPressed),
                                                                 new InputMapping(f => InputFunctions.MenuBack(f) || InputFunctions.MenuUp(f), OnBackPressed),
                                                                 new InputMapping(f => InputFunctions.MenuStart(f), OnStartPressed),
                                                                 new InputMapping(f => InputFunctions.MenuLeft(f), OnLeftPressed),
                                                                 new InputMapping(f => InputFunctions.MenuRight(f), OnRightPressed)));
            }


            layerIndependent.AddComponent(new InputComponent(
                                              new InputMapping(f => InputFunctions.KeyboardMenuSelect(f) || InputFunctions.KeyboardMenuDown(f), OnNextPressed),
                                              new InputMapping(f => InputFunctions.KeyboardMenuBack(f) || InputFunctions.KeyboardMenuUp(f), OnBackPressed),
                                              new InputMapping(f => InputFunctions.KeyboardMenuStart(f), OnStartPressed),
                                              new InputMapping(f => InputFunctions.KeyboardMenuLeft(f), OnLeftPressed),
                                              new InputMapping(f => InputFunctions.KeyboardMenuRight(f), OnRightPressed)));
            AddEntity(layerIndependent);

            GoToMenuState(MenuState.ChoosePlayerMode);


            this.TransitionIn();
        }