/// <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( ); }
/// <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); }