From 44f0f9e399800530dcc12c672b5fd2afde8d5633 Mon Sep 17 00:00:00 2001 From: Talon Date: Fri, 23 Apr 2021 15:07:50 +0200 Subject: [PATCH] Initial main menu impl --- .../DesignTimeBuild/.dtbcache.v2 | Bin 63152 -> 63152 bytes .vs/EvilSatellites/v16/.suo | Bin 150528 -> 166400 bytes EvilSatellites/EvilSatellites.csproj | 6 +-- EvilSatellites/Game1.cs | 3 +- EvilSatellites/Objects/Satellite.cs | 4 +- EvilSatellites/ScreenManager.cs | 31 +++++++++++++--- EvilSatellites/Screens/GameScreen.cs | 2 - EvilSatellites/Screens/MainMenuScreen.cs | 34 +++++++++++++++++ EvilSatellites/Screens/MenuScreen.cs | 35 +++++++++--------- EvilSatellites/Weapons/LaserMG.cs | 14 +++---- 10 files changed, 91 insertions(+), 38 deletions(-) create mode 100644 EvilSatellites/Screens/MainMenuScreen.cs diff --git a/.vs/EvilSatellites/DesignTimeBuild/.dtbcache.v2 b/.vs/EvilSatellites/DesignTimeBuild/.dtbcache.v2 index a2e60590bd3ac7fdfbacc36855039486683bf12b..3f0411526dba07033f9c080fc2ef4fb20034e675 100644 GIT binary patch literal 63152 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 YQGuwxPShW&uM^dW+UrE^U3S_30k%u%zyJUM literal 63152 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 V24c9`Fowb{2g4uS9P8}a{|B#-r#=7x diff --git a/.vs/EvilSatellites/v16/.suo b/.vs/EvilSatellites/v16/.suo index 06cd66f370238133a513a990877d617fcf023d65..a69c84b7cd9872aa3671aec8b11a1331ba993132 100644 GIT binary patch delta 17526 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 ba!c^j^G&yE2yv$M&ki){r}C8PFM0K!fl(iO diff --git a/EvilSatellites/EvilSatellites.csproj b/EvilSatellites/EvilSatellites.csproj index ed8a200..cceaefa 100644 --- a/EvilSatellites/EvilSatellites.csproj +++ b/EvilSatellites/EvilSatellites.csproj @@ -32,13 +32,13 @@ - ..\..\Synthizer\Synthy\bin\Debug\netstandard2.1\CppSharp.Runtime.dll + ..\..\synthy\Synthy\bin\Debug\netstandard2.1\CppSharp.Runtime.dll - ..\..\Synthizer\Synthy\bin\Debug\netstandard2.1\Synthizer.Net.dll + ..\..\synthy\Synthy\bin\Debug\netstandard2.1\Synthizer.Net.dll - ..\..\Synthizer\Synthy\bin\Debug\netstandard2.1\Synthy.dll + ..\..\synthy\Synthy\bin\Debug\netstandard2.1\Synthy.dll \ No newline at end of file diff --git a/EvilSatellites/Game1.cs b/EvilSatellites/Game1.cs index e6842d2..84afca3 100644 --- a/EvilSatellites/Game1.cs +++ b/EvilSatellites/Game1.cs @@ -23,7 +23,8 @@ namespace EvilSatellites protected override void Initialize() { // TODO: Add your initialization logic here - _manager.AddScreen(new EvilSatellites.Screens.GameScreen()); + // _manager.AddScreen(new EvilSatellites.Screens.GameScreen()); + _manager.AddScreen(new EvilSatellites.Screens.MainMenuScreen()); base.Initialize(); } diff --git a/EvilSatellites/Objects/Satellite.cs b/EvilSatellites/Objects/Satellite.cs index 96df7da..15a7605 100644 --- a/EvilSatellites/Objects/Satellite.cs +++ b/EvilSatellites/Objects/Satellite.cs @@ -50,14 +50,14 @@ namespace EvilSatellites.Objects { Move(new Vector3(0, 0, -0.05f)); Sound.Position = new System.Numerics.Vector3(Position.X+Dimensions.X/2, Position.Y+Dimensions.Y/2, Position.Z+Dimensions.Z/2); - if (rnd.Next(512) == 250) + if (rnd.Next(1024) == 512) { var scr = (GameScreen)Screen; var player = scr.GetPlayer(); var orient = Matrix.Invert(Matrix.CreateTranslation(Position) * Matrix.CreateLookAt(Position, scr.GetPlayer().Position, Rotation.Up)); var dir = Position - player.Position; dir.Normalize(); - + Screen.Manager.Sound.PlayOneshot(@"sfx/weapons/LaserCannon/fire/" + (rnd.Next(2) + 1).ToString() + ".wav", new System.Numerics.Vector3(Position.X + Dimensions.X / 2, Position.Y + Dimensions.Y / 2, Position.Z / Dimensions.Z / 2), Screen.Manager.EnvironmentEffect); var proj = new Projectile(Screen, Position, orient, this); // proj.Direction = dir; scr.AddObject(proj); diff --git a/EvilSatellites/ScreenManager.cs b/EvilSatellites/ScreenManager.cs index 68bff7d..4eb3f86 100644 --- a/EvilSatellites/ScreenManager.cs +++ b/EvilSatellites/ScreenManager.cs @@ -4,7 +4,6 @@ using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; using SynthySound; -using Synthizer; using Microsoft.Xna.Framework.Audio; using EvilSatellites.Screens; @@ -14,6 +13,8 @@ namespace EvilSatellites public class ScreenManager : DrawableGameComponent { private List _Screens; + private List _ToRemove; + private List _ToAdd; private IScreen _CurrentScreen; private Game _Game; private bool _Running = false; @@ -29,9 +30,11 @@ namespace EvilSatellites EnvironmentEffect.T60 = 1; EnvironmentEffect.Defusion = 1f; EnvironmentEffect.FreePath = 0.02; - + Sound.SetMaxDistance(150); _Game = instance; _Screens = new List(); + _ToRemove = new List(); + _ToAdd = new List(); _CurrentScreen = null; } @@ -48,8 +51,7 @@ namespace EvilSatellites public void AddScreen(IScreen screen) { screen.Manager = this; - if (_Running) screen.Activate(); - _Screens.Add(screen); + _ToAdd.Add(screen); } public void RemoveScreen(IScreen screen) { @@ -57,12 +59,29 @@ namespace EvilSatellites { throw new Exception("Cannot remove a screen that isn't added to manager"); } - screen.Deactivate(); - _Screens.Remove(screen); + _ToRemove.Add(screen); } public void Update(GameTime gameTime) { + if (_ToAdd.Count > 0) + { + foreach (var screen in _ToAdd) + { + screen.Activate(); + _Screens.Add(screen); + } + _ToAdd.Clear(); + } + if (_ToRemove.Count > 0) + { + foreach (var screen in _ToRemove) + { + screen.Deactivate(); + _Screens.Remove(screen); + } + _ToRemove.Clear(); + } Sound.Update(); var input = Keyboard.GetState(); foreach (var screen in _Screens) diff --git a/EvilSatellites/Screens/GameScreen.cs b/EvilSatellites/Screens/GameScreen.cs index 11d2ba7..50711f9 100644 --- a/EvilSatellites/Screens/GameScreen.cs +++ b/EvilSatellites/Screens/GameScreen.cs @@ -30,8 +30,6 @@ namespace EvilSatellites.Screens Player player = new Player(this); Objects.Add(player); _player = player; - // Satellite prop = new Satellite(this, new Vector3(5000, 5000, 5000)); - // Objects.Add(prop); ObjectRadar = new Radar(_player, this); Spawner = new SatelliteSpawner(this); Spawner.Spawn(); diff --git a/EvilSatellites/Screens/MainMenuScreen.cs b/EvilSatellites/Screens/MainMenuScreen.cs new file mode 100644 index 0000000..0ca62d6 --- /dev/null +++ b/EvilSatellites/Screens/MainMenuScreen.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using EvilSatellites.Menu; +using EvilSatellites.Screens; + +namespace EvilSatellites.Screens +{ + public class MainMenuScreen : MenuScreen + { + public override void Activate() + { + + MenuOptions = new MenuContainer("Main Menu", "Navigate with up and down arrows,, and enter to select."); + MenuOptions.Add(new MenuEntry("Start", "Start the game")) + .Add(new MenuEntry("Exit", "Exit the game")) + .Add(new MenuEntry("Something Else", "Do something else")); + base.Activate(); + } + + public override void SelectItem() + { + Manager.Sound.PlayOneshot(@"sfx/ui/menuChoose.wav"); + if (CursorPosition == 0) + { + Manager.AddScreen(new GameScreen()); + Manager.RemoveScreen(this); + Manager.Game.ResetElapsedTime(); + } + } + } +} diff --git a/EvilSatellites/Screens/MenuScreen.cs b/EvilSatellites/Screens/MenuScreen.cs index fb65861..9408e75 100644 --- a/EvilSatellites/Screens/MenuScreen.cs +++ b/EvilSatellites/Screens/MenuScreen.cs @@ -17,36 +17,33 @@ namespace EvilSatellites.Screens public ScreenManager _Manager; public ScreenState _State; public InputManager Inputs = new InputManager(); - public MenuScreen(ScreenManager manager, MenuContainer options) - { - _Manager = manager; - MenuOptions = options; - } - ScreenManager IScreen.Manager { get => _Manager; set => _Manager = value; } - ScreenState IScreen.State { get => _State; set => _State = value; } - void IScreen.Activate() + public ScreenManager Manager { get => _Manager; set => _Manager = value; } + public ScreenState State { get => _State; set => _State = value; } + + public virtual void Activate() { CursorPosition = 0; Tolk.Output(MenuOptions.Title, true); Tolk.Output(MenuOptions.Description, false); Tolk.Output(MenuOptions.Entries[CursorPosition].Name); + Manager.Sound.PlayOneshot(@"sfx/ui/menuOpen.wav"); } - void IScreen.Deactivate() + public virtual void Deactivate() { return; } - void IScreen.HandleInput(GameTime gameTime, KeyboardState inputs) + public void HandleInput(GameTime gameTime, KeyboardState inputs) { Inputs.Update(); if (Inputs.IsJustPressed(Keys.Down)) { NextItem(); } - if (Inputs.IsJustPressed(Keys.Down)) + if (Inputs.IsJustPressed(Keys.Up)) { PreviousItem(); } @@ -56,21 +53,22 @@ namespace EvilSatellites.Screens } } - void IScreen.Update(GameTime gameTime) + public virtual void Update(GameTime gameTime) { - return; + Manager.Sound.Update(); + } public void PreviousItem() { - CursorPosition--; + CursorPosition -= 1; CheckMenuBounds(); ReadMenuItem(); } public void NextItem() { - CursorPosition++; + CursorPosition += 1; CheckMenuBounds(); ReadMenuItem(); } @@ -80,19 +78,22 @@ namespace EvilSatellites.Screens if (CursorPosition > MenuOptions.Entries.Count-1) { CursorPosition = 0; + Manager.Sound.PlayOneshot(@"sfx/ui/menuBoundary.wav"); } if (CursorPosition < 0) { - CursorPosition = MenuOptions.Entries.Count - 1; + CursorPosition = MenuOptions.Entries.Count-1; + Manager.Sound.PlayOneshot(@"sfx/ui/menuBoundary.wav"); } } public void ReadMenuItem() { + Manager.Sound.PlayOneshot(@"sfx/ui/menuMove.wav"); Tolk.Output(MenuOptions.Entries[CursorPosition].Name, true); } - public void SelectItem() + public virtual void SelectItem() { return; } diff --git a/EvilSatellites/Weapons/LaserMG.cs b/EvilSatellites/Weapons/LaserMG.cs index 0466e66..1306af5 100644 --- a/EvilSatellites/Weapons/LaserMG.cs +++ b/EvilSatellites/Weapons/LaserMG.cs @@ -56,7 +56,7 @@ namespace EvilSatellites.Weapons State = WeaponState.Starting; sfxSpinup.Reset(); sfxSpinup.Play(); - TimerStart = time.TotalGameTime.TotalMilliseconds; + TimerStart = 0; } public override void Stop() @@ -73,19 +73,19 @@ namespace EvilSatellites.Weapons public override void Update(GameTime time) { - TimerEnd += time.ElapsedGameTime.TotalMilliseconds; + TimerStart += time.ElapsedGameTime.TotalMilliseconds; if (State == WeaponState.Starting) { - if (TimerEnd - TimerStart > 800) + if (TimerStart > 800) { State = WeaponState.Firing; sfxSpinning.Play(); - TimerStart = TimerEnd; + TimerStart = 0; } } if (State == WeaponState.Firing) { - if (TimerEnd - TimerStart > FireRate) + if (TimerStart > FireRate) { if (RemainingAmmo > 0) { @@ -104,10 +104,10 @@ namespace EvilSatellites.Weapons } if (State == WeaponState.Stopping) { - if (TimerEnd - TimerStart > 500) + if (TimerStart > 500) { State = WeaponState.Stopped; - TimerStart = TimerEnd; + TimerStart = 0; } } base.Update(time);