/// <summary>
        /// State's update
        /// </summary>
        /// <param name="time"><see cref="GameTime"/></param>
        public override void Update(GameTime time)
        {
            if (!_console.IsVisible)
            {
                if (_input.HasScrolledDown( ))
                {
                    _camera.ZoomOut( );
                }
                if (_input.HasScrolledUp( ))
                {
                    _camera.ZoomIn( );
                }
                if (_input.IsKeyPressedOnce(_config.KEY_Pause))
                {
                    _state.ChangeState(GameStateType.Pause);
                    ((PauseState)_state.GetCurrentState( )).OnResume = () => _state.ChangeState(GameStateType.Gameplay);
                }
                if (_input.IsKeyPressedOnce(Keys.R))
                {
                    NewGame( );
                }
                if (_input.IsKeyPressedOnce(Keys.Space))
                {
                    _level.Test( );
                }

                _player.Update(_input, _config, time, _level);
                _camera.LookAt(-_player.X * _camera.Scale, -_player.Y * _camera.Scale);
            }

            _camera.Update( );
        }
Esempio n. 2
0
        /// <summary>
        /// Initialize
        /// </summary>
        protected override void Initialize( )
        {
            base.Initialize( );

            _config = new ConfigurationService(_deviceMNG);
            _config.LoadConfiguration( );
            _config.AssignIngameConfiguration( );

            _canvas = new SpriteBatch(GraphicsDevice);

            _input   = new InputService( );
            _content = new ContentService(Content, GraphicsDevice, _canvas);

            // Console
            LOG.Add("Initializing console commands...");
            _console = new GameConsole(_input, _content, _config);
            _console.Initialize(_content);
            _console.SetAction("hide", 0, (args) => _console.IsVisible = false);
            _console.SetAction("exit", 0, (args) => Exit( ));
            _console.SetAction("debug", 0, (args) => _config.Change("debug_mode", !_config.DebugMode));
            _console.SetAction("translate", 1, (args) => LOG.Add(TranslationService.Get(args[0]), LogType.Success));
            _console.SetAction("new_game", 0, (args) => {
                _state.ChangeState(GameStateType.Gameplay);
                ((GameplayState)_state.GetCurrentState( )).NewGame(args.Length >= 1 ? args[0] : null);
                MediaPlayer.Stop( );
            });

            // Content
            LOG.Add("Loading application's content");
            DH.Content = _content;
            _content.LoadContent( );
            _content.UpdateDynamicContent(_config);

            // States
            LOG.Add("Initializing states...");
            _state = new StateService( );
            _state.Register(GameStateType.MainMenu, new MainMenuState(_content, _input, _config, _state, _console));
            _state.Register(GameStateType.Gameplay, new GameplayState(_content, _input, _config, _state, _console));
            _state.Register(GameStateType.Credits, new CreditsState( ));
            _state.Register(GameStateType.Settings, new SettingsState(_content, _input, _config, _state));
            _state.Register(GameStateType.Tutorial, new TutorialState( ));
            _state.Register(GameStateType.Pause, new PauseState(_content, _input, _config));
            _state.ChangeState(GameStateType.MainMenu);

            // Audio
            LOG.Add("Initializing audio...");
            MediaPlayer.IsRepeating = true; // Temporary
            AudioHelper.Music(_content.GetRandomSong( ));

            // Common
            LOG.Add("Finalizing initialization...");
            RandomService.Random = new Random( );
            TranslationService.LoadTranslations <LanguageModel>(_config.Language);

            LOG.Add($"App ready, version {VERSION}", LogType.Success);
        }
        /// <summary>
        /// State's initialization
        /// </summary>
        /// <param name="content"><see cref="ContentServiceBase"/></param>
        public override void Initialize(ContentServiceBase content)
        {
            Width  = _config.ViewWidth;
            Height = _config.ViewHeight;

            _buttons = new List <Button>( )
            {
                new MenuButton(_input, _content)
                {
                    X = 32, Y = Height - 384, Width = 256, Height = 48, Align = AlignType.CM, Text = "new_game", OnClick = () => _console.ExecuteCommand("new_game")
                },
                new MenuButton(_input, _content)
                {
                    X = 32, Y = Height - 288, Width = 256, Height = 48, Align = AlignType.CM, Text = "how_to_play", OnClick = () => _state.ChangeState(GameStateType.Tutorial)
                },
                new MenuButton(_input, _content)
                {
                    X = 32, Y = Height - 240, Width = 256, Height = 48, Align = AlignType.CM, Text = "settings", OnClick = () => {
                        _state.ChangeState(GameStateType.Settings);
                        ((SettingsState)_state.GetCurrentState( )).OnResume = () => _state.ChangeState(GameStateType.MainMenu);
                    }
                },
                new MenuButton(_input, _content)
                {
                    X = 32, Y = Height - 192, Width = 256, Height = 48, Align = AlignType.CM, Text = "credits", OnClick = () => _state.ChangeState(GameStateType.Credits)
                },
                new MenuButton(_input, _content)
                {
                    X = 32, Y = Height - 96, Width = 256, Height = 48, Align = AlignType.CM, Text = "exit_app", OnClick = () => _console.ExecuteCommand("exit")
                }
            };
            // Temporary, if there is game save, continue button should be displayed
            _buttons.Add(new MenuButton(_input, _content)
            {
                X = 32, Y = Height - 432, Width = 256, Height = 48, Align = AlignType.CM, Text = "continue"
            });

            base.Initialize(content);
        }