From 05657b14dd0471fe4e2ad7c05baa1225ef46ab07 Mon Sep 17 00:00:00 2001 From: Talon Date: Thu, 22 Apr 2021 23:03:05 +0200 Subject: [PATCH] Add initial menu system --- .vs/EvilSatellites/v16/.suo | Bin 107008 -> 150528 bytes EvilSatellites/Menu/MenuContainer.cs | 14 ++++ EvilSatellites/Menu/MenuEntry.cs | 6 ++ EvilSatellites/ScreenManager.cs | 2 +- EvilSatellites/Screens/MenuScreen.cs | 100 +++++++++++++++++++++++++++ 5 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 EvilSatellites/Screens/MenuScreen.cs diff --git a/.vs/EvilSatellites/v16/.suo b/.vs/EvilSatellites/v16/.suo index 80e1eab9d111896e7b4997d3babfba9afb598d72..06cd66f370238133a513a990877d617fcf023d65 100644 GIT binary patch delta 12210 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 QO6@41CCgyzZ;R#s0NkVHc>n+a delta 3855 zcmd5ah~lF@O4YP!$1ys=4kpH_Y|q^XiN>@#(?5D=e&0Fw zo^xO4{O)(Z&-lK~*y&XrLt~cshAIUiMi2xK#Gu`7MM_?+%a~vK8W}lXikK}%lS&6gX*OqZ`KGhf-P*X7DM& z2EHdO)E?U;KSU8On9u3y;fM3zv^(TA#^`E0Y{MO24 z2X>!Y+C^gvBj$axEi$`#%(riEy{wt0EuD07>+X=PYrfP>3-doc@axYcCk|l`I5IL- z=A*xS7C7>lt?skGq?mm3X7kys8Ck2(^&~Cmq-BMZ87XFd8Q@4oSW^4KOj!izenZD+%8DZ!{(I)8EXEyglbncS{pYk21_XrE4*e0OXRH| z(UCJR{i*0^UMn#-NF1c(9B`A84jA%>$l@ecWjL{hZ|?JO@W{;-H;+v7?*XSwELbO2 zT>*0eF;^3MugLE)Y^Z$klKlI;(WQkMk57b!+5F9Wz%4FAL?gdms#Q zX#c=IsAYB8P%-KUMq!OmD3qdOiSR3-Ojtvc2Mc8yfxoE*A(sZ(qp5B11z8rhypGpi zCS7e;i@KR`i!k#X2$ZMKbH4vo0?S(rwe*AT1ZH>%w$n3TN?GngXk~egFpBE;C5m|~ zp~Z*xw*;^qxo|`bSO%>g?802=Vq-VMc6O@^G`zZ9RK5vUJcfposD!K&tT+$0(d(9U z@kj#<131R!Er$1~p>+yX_4qQ+diVxwA`E{0UkYgtWg&^zy5R(yw-Gs@ z{}d8=c#n!-mBLG8DAH`!t8mk@!~SLO@1nIdI>#! zKGB&oKADJz!lEIeGu|EHhdAxKkeLw-{!T5tRvrtYv*3j@NqehI8l@6vXjGDXAPtwZ-U&) z3K0oJ!NC@Of}Lf8gDtU4aR7GEmcDe+*aj-Xs*XbhJ@{3DIP(O&33T%hZmm!?ph$DsU zpVuJS(MDNFB$J+lWU6nHGuv!9#15T>3}%~yqh*%8@fcf^&7VN+IkfAWlzb44s5=Kn zsJ(!rtLtGj!L_OP2GfGzNaqTcT!s>4@_d=qYR>l+ZzaQL4 kl$C7}(~E!hr^J##&n-QxH@!uBV Entries; + public string Title; + public string Description; + public MenuContainer(string title, string description) + { + Entries = new List(); + Title = title; + Description = description; + } + + public MenuContainer Add(MenuEntry entry) + { + Entries.Add(entry); + return this; + } } } diff --git a/EvilSatellites/Menu/MenuEntry.cs b/EvilSatellites/Menu/MenuEntry.cs index a78c915..a7b33d2 100644 --- a/EvilSatellites/Menu/MenuEntry.cs +++ b/EvilSatellites/Menu/MenuEntry.cs @@ -9,5 +9,11 @@ namespace EvilSatellites.Menu public class MenuEntry { public string Name; + public string Description; + public MenuEntry(string name, string description = "") + { + Name = name; + Description = description; + } } } diff --git a/EvilSatellites/ScreenManager.cs b/EvilSatellites/ScreenManager.cs index 71c425b..68bff7d 100644 --- a/EvilSatellites/ScreenManager.cs +++ b/EvilSatellites/ScreenManager.cs @@ -26,7 +26,7 @@ namespace EvilSatellites EnvironmentEffect = Sound.CreateReverb(); EnvironmentEffect.Delay = 0.03; EnvironmentEffect.Wet = 30; - EnvironmentEffect.T60 = 5; + EnvironmentEffect.T60 = 1; EnvironmentEffect.Defusion = 1f; EnvironmentEffect.FreePath = 0.02; diff --git a/EvilSatellites/Screens/MenuScreen.cs b/EvilSatellites/Screens/MenuScreen.cs new file mode 100644 index 0000000..fb65861 --- /dev/null +++ b/EvilSatellites/Screens/MenuScreen.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using EvilSatellites.Menu; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using DavyKager; + +namespace EvilSatellites.Screens +{ + public class MenuScreen : IScreen + { + public MenuContainer MenuOptions; + public int CursorPosition; + 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() + { + CursorPosition = 0; + Tolk.Output(MenuOptions.Title, true); + Tolk.Output(MenuOptions.Description, false); + Tolk.Output(MenuOptions.Entries[CursorPosition].Name); + } + + void IScreen.Deactivate() + { + return; + } + + void IScreen.HandleInput(GameTime gameTime, KeyboardState inputs) + { + Inputs.Update(); + if (Inputs.IsJustPressed(Keys.Down)) + { + NextItem(); + } + if (Inputs.IsJustPressed(Keys.Down)) + { + PreviousItem(); + } + if (Inputs.IsJustPressed(Keys.Enter)) + { + SelectItem(); + } + } + + void IScreen.Update(GameTime gameTime) + { + return; + } + + public void PreviousItem() + { + CursorPosition--; + CheckMenuBounds(); + ReadMenuItem(); + } + + public void NextItem() + { + CursorPosition++; + CheckMenuBounds(); + ReadMenuItem(); + } + + public void CheckMenuBounds() + { + if (CursorPosition > MenuOptions.Entries.Count-1) + { + CursorPosition = 0; + } + if (CursorPosition < 0) + { + CursorPosition = MenuOptions.Entries.Count - 1; + } + } + + public void ReadMenuItem() + { + Tolk.Output(MenuOptions.Entries[CursorPosition].Name, true); + } + + public void SelectItem() + { + return; + } + } +}