├── .gitattributes ├── .gitignore ├── Code ├── Code.sln └── Code │ ├── Code.projitems │ ├── Code.shproj │ ├── Content │ ├── Audio │ │ ├── Songs │ │ │ ├── A Terrible Battle (cut).mp3 │ │ │ ├── Back Into the Fray.mp3 │ │ │ ├── Get Those Spies!.mp3 │ │ │ ├── Prayer, Worry, Hope.mp3 │ │ │ ├── The Fractured Hero.mp3 │ │ │ └── The Power and the Control.mp3 │ │ └── SoundEffects │ │ │ ├── Menu Back.wav │ │ │ ├── Menu Confirm.wav │ │ │ ├── Menu Down.wav │ │ │ ├── Menu Left.wav │ │ │ ├── Menu Right.wav │ │ │ ├── Menu Slider.wav │ │ │ ├── Menu Toggle.wav │ │ │ └── Menu Up.wav │ ├── Content.mgcb │ ├── Controls │ │ ├── Buttons │ │ │ ├── a.png │ │ │ ├── auto-for-joystick.png │ │ │ ├── b.png │ │ │ ├── back.png │ │ │ ├── buttons-for-joystick.png │ │ │ ├── dpad-down.png │ │ │ ├── dpad-left.png │ │ │ ├── dpad-right.png │ │ │ ├── dpad-up.png │ │ │ ├── left-bumper.png │ │ │ ├── left-stick-press.png │ │ │ ├── left-stick.png │ │ │ ├── left-trigger.png │ │ │ ├── right-bumper.png │ │ │ ├── right-stick-press.png │ │ │ ├── right-stick.png │ │ │ ├── right-trigger.png │ │ │ ├── start.png │ │ │ ├── x.png │ │ │ └── y.png │ │ ├── Checkbox │ │ │ ├── false.png │ │ │ └── true.png │ │ ├── Keys │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ ├── 8.png │ │ │ ├── 9.png │ │ │ ├── a.png │ │ │ ├── alt-right.png │ │ │ ├── alt.png │ │ │ ├── apostroph.png │ │ │ ├── b.png │ │ │ ├── backslash.png │ │ │ ├── backspace.png │ │ │ ├── bracket-close.png │ │ │ ├── bracket-open.png │ │ │ ├── c.png │ │ │ ├── capslock.png │ │ │ ├── comma-lt.png │ │ │ ├── comma.png │ │ │ ├── context-menu.png │ │ │ ├── ctrl-2.png │ │ │ ├── ctrl.png │ │ │ ├── cursor-down.png │ │ │ ├── cursor-left.png │ │ │ ├── cursor-right.png │ │ │ ├── cursor-up.png │ │ │ ├── d.png │ │ │ ├── delete.png │ │ │ ├── e.png │ │ │ ├── end.png │ │ │ ├── enter.png │ │ │ ├── equals-plus.png │ │ │ ├── esc.png │ │ │ ├── f.png │ │ │ ├── f1.png │ │ │ ├── f10.png │ │ │ ├── f11.png │ │ │ ├── f12.png │ │ │ ├── f2.png │ │ │ ├── f3.png │ │ │ ├── f4.png │ │ │ ├── f5.png │ │ │ ├── f6.png │ │ │ ├── f7.png │ │ │ ├── f8.png │ │ │ ├── f9.png │ │ │ ├── g.png │ │ │ ├── h.png │ │ │ ├── home.png │ │ │ ├── i.png │ │ │ ├── insert.png │ │ │ ├── j.png │ │ │ ├── k.png │ │ │ ├── keypad-0.png │ │ │ ├── keypad-1.png │ │ │ ├── keypad-2.png │ │ │ ├── keypad-3.png │ │ │ ├── keypad-4.png │ │ │ ├── keypad-5.png │ │ │ ├── keypad-6.png │ │ │ ├── keypad-7.png │ │ │ ├── keypad-8.png │ │ │ ├── keypad-9.png │ │ │ ├── keypad-asterix.png │ │ │ ├── keypad-enter.png │ │ │ ├── keypad-minus.png │ │ │ ├── keypad-period.png │ │ │ ├── keypad-plus.png │ │ │ ├── keypad-slash.png │ │ │ ├── l.png │ │ │ ├── locks.png │ │ │ ├── m.png │ │ │ ├── minus.png │ │ │ ├── n.png │ │ │ ├── num-lock.png │ │ │ ├── o.png │ │ │ ├── p.png │ │ │ ├── page-down.png │ │ │ ├── page-up.png │ │ │ ├── pause.png │ │ │ ├── period-gt.png │ │ │ ├── power.png │ │ │ ├── print.png │ │ │ ├── q.png │ │ │ ├── r.png │ │ │ ├── s.png │ │ │ ├── scroll-lock.png │ │ │ ├── semicolon-dble.png │ │ │ ├── shift-right.png │ │ │ ├── shift.png │ │ │ ├── slash-questionmark.png │ │ │ ├── sleep.png │ │ │ ├── spacebar.png │ │ │ ├── specialkey-2.png │ │ │ ├── t.png │ │ │ ├── tab.png │ │ │ ├── u.png │ │ │ ├── v.png │ │ │ ├── w.png │ │ │ ├── wake-up.png │ │ │ ├── x.png │ │ │ ├── y.png │ │ │ └── z.png │ │ ├── Mouse │ │ │ ├── mouse-left-click.png │ │ │ ├── mouse-middle-click.png │ │ │ └── mouse-right-click.png │ │ ├── input-not-found.png │ │ ├── none.png │ │ └── waiting-for-input.png │ ├── Fonts │ │ ├── arial-40.spritefont │ │ ├── arial-bold-22.spritefont │ │ ├── arial-bold-28.spritefont │ │ ├── arial-bold-40.spritefont │ │ └── arial-bold-52.spritefont │ ├── Menues │ │ ├── MainMenu │ │ │ ├── GameSettingsMenu │ │ │ │ └── game-settings-menu-background.png │ │ │ ├── loading-icon.png │ │ │ ├── main-menu-background.png │ │ │ ├── main-menu-exit-button.png │ │ │ ├── main-menu-game-settings-button.png │ │ │ └── main-menu-start-game-button.png │ │ ├── MenuHelpers │ │ │ ├── menu-button-blank-checked.png │ │ │ ├── menu-button-blank-unchecked.png │ │ │ ├── menu-button-blank.png │ │ │ ├── menu-button-side-scroll-arrow.png │ │ │ ├── menu-slider-handle.png │ │ │ ├── menu-slider.png │ │ │ ├── menu-tint.png │ │ │ └── scroll-menu-arrow.png │ │ └── PauseMenu │ │ │ └── pause-menu-background.png │ └── SplashScreen │ │ ├── splash-image.png │ │ └── tint.png │ └── Main │ ├── Animation │ ├── AnimatedEntity.cs │ ├── Animation.cs │ └── KeyFrame.cs │ ├── Config │ ├── AudioConfig.cs │ ├── ControlsConfig.cs │ ├── DefaultControls.cs │ ├── GlobalControls.cs │ ├── PlayerControls.cs │ ├── Resolution.cs │ ├── ResolutionConfig.cs │ ├── Settings.cs │ └── SettingsManager.cs │ ├── CustomColors.cs │ ├── Game1.cs │ ├── Gameplay │ ├── GameFlow.cs │ ├── GameplayManager.cs │ ├── GameplaySettingsManager.cs │ ├── SongManager.cs │ └── SoundEffectsManager.cs │ ├── GlobalTextures.cs │ ├── Globals.cs │ ├── HelperFunctions.cs │ └── Menues │ ├── GameplayMenues │ ├── AudioSettingsMenu.cs │ ├── ControlsMenu.cs │ ├── GameUI.cs │ ├── GamepadControlsMenu.cs │ ├── GraphicalSettingsMenu.cs │ ├── KeyboardControlsMenu.cs │ ├── PauseMenu.cs │ └── ResolutionSelectionMenu.cs │ ├── MenuHelperClasses │ ├── GamepadControlsMenuButton.cs │ ├── KeyboardControlsMenuButton.cs │ ├── MenuButton.cs │ ├── MenuButtonSideScroll.cs │ ├── MenuButtonWithImage.cs │ ├── MenuImage.cs │ ├── MenuLabel.cs │ ├── MenuScreen.cs │ ├── MenuSelection.cs │ ├── MenuSlider.cs │ └── ScrollingMenuScreen.cs │ └── StartMenues │ ├── GameplaySettingsMenu.cs │ ├── LoadingScreenManager.cs │ ├── MainMenu.cs │ ├── MainMenuSettingsMenu.cs │ ├── SplashScreen.cs │ └── StartMenuesManager.cs ├── Mac ├── Mac.sln └── Mac │ ├── Icon.ico │ ├── Info.plist │ ├── Mac.csproj │ ├── Main.cs │ ├── MonoGame.Framework.dll.config │ ├── Properties │ └── AssemblyInfo.cs │ ├── libSDL2-2.0.0.dylib │ └── libopenal.1.dylib ├── README.md └── Windows ├── AsymptoticMonoGameFramework.sln └── AsymptoticMonoGameFramework ├── AsymptoticMonoGameFramework.csproj ├── Icon.ico ├── Program.cs ├── Properties └── AssemblyInfo.cs ├── app.config └── packages.config /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | build/ 21 | bld/ 22 | [Bb]in/ 23 | [Oo]bj/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | 28 | # MSTest test Results 29 | [Tt]est[Rr]esult*/ 30 | [Bb]uild[Ll]og.* 31 | 32 | # NUNIT 33 | *.VisualState.xml 34 | TestResult.xml 35 | 36 | # Build Results of an ATL Project 37 | [Dd]ebugPS/ 38 | [Rr]eleasePS/ 39 | dlldata.c 40 | 41 | # DNX 42 | project.lock.json 43 | artifacts/ 44 | 45 | *_i.c 46 | *_p.c 47 | *_i.h 48 | *.ilk 49 | *.meta 50 | *.obj 51 | *.pch 52 | *.pdb 53 | *.pgc 54 | *.pgd 55 | *.rsp 56 | *.sbr 57 | *.tlb 58 | *.tli 59 | *.tlh 60 | *.tmp 61 | *.tmp_proj 62 | *.log 63 | *.vspscc 64 | *.vssscc 65 | .builds 66 | *.pidb 67 | *.svclog 68 | *.scc 69 | 70 | # Chutzpah Test files 71 | _Chutzpah* 72 | 73 | # Visual C++ cache files 74 | ipch/ 75 | *.aps 76 | *.ncb 77 | *.opensdf 78 | *.sdf 79 | *.cachefile 80 | 81 | # Visual Studio profiler 82 | *.psess 83 | *.vsp 84 | *.vspx 85 | 86 | # TFS 2012 Local Workspace 87 | $tf/ 88 | 89 | # Guidance Automation Toolkit 90 | *.gpState 91 | 92 | # ReSharper is a .NET coding add-in 93 | _ReSharper*/ 94 | *.[Rr]e[Ss]harper 95 | *.DotSettings.user 96 | 97 | # JustCode is a .NET coding add-in 98 | .JustCode 99 | 100 | # TeamCity is a build add-in 101 | _TeamCity* 102 | 103 | # DotCover is a Code Coverage Tool 104 | *.dotCover 105 | 106 | # NCrunch 107 | _NCrunch_* 108 | .*crunch*.local.xml 109 | 110 | # MightyMoose 111 | *.mm.* 112 | AutoTest.Net/ 113 | 114 | # Web workbench (sass) 115 | .sass-cache/ 116 | 117 | # Installshield output folder 118 | [Ee]xpress/ 119 | 120 | # DocProject is a documentation generator add-in 121 | DocProject/buildhelp/ 122 | DocProject/Help/*.HxT 123 | DocProject/Help/*.HxC 124 | DocProject/Help/*.hhc 125 | DocProject/Help/*.hhk 126 | DocProject/Help/*.hhp 127 | DocProject/Help/Html2 128 | DocProject/Help/html 129 | 130 | # Click-Once directory 131 | publish/ 132 | 133 | # Publish Web Output 134 | *.[Pp]ublish.xml 135 | *.azurePubxml 136 | ## TODO: Comment the next line if you want to checkin your 137 | ## web deploy settings but do note that will include unencrypted 138 | ## passwords 139 | #*.pubxml 140 | 141 | *.publishproj 142 | 143 | # NuGet Packages 144 | *.nupkg 145 | # The packages folder can be ignored because of Package Restore 146 | **/packages/* 147 | # except build/, which is used as an MSBuild target. 148 | !**/packages/build/ 149 | # Uncomment if necessary however generally it will be regenerated when needed 150 | #!**/packages/repositories.config 151 | 152 | # Windows Azure Build Output 153 | csx/ 154 | *.build.csdef 155 | 156 | # Windows Store app package directory 157 | AppPackages/ 158 | 159 | # Visual Studio cache files 160 | # files ending in .cache can be ignored 161 | *.[Cc]ache 162 | # but keep track of directories ending in .cache 163 | !*.[Cc]ache/ 164 | 165 | # Others 166 | ClientBin/ 167 | [Ss]tyle[Cc]op.* 168 | ~$* 169 | *~ 170 | *.dbmdl 171 | *.dbproj.schemaview 172 | *.pfx 173 | *.publishsettings 174 | node_modules/ 175 | orleans.codegen.cs 176 | 177 | # RIA/Silverlight projects 178 | Generated_Code/ 179 | 180 | # Backup & report files from converting an old project file 181 | # to a newer Visual Studio version. Backup files are not needed, 182 | # because we have git ;-) 183 | _UpgradeReport_Files/ 184 | Backup*/ 185 | UpgradeLog*.XML 186 | UpgradeLog*.htm 187 | 188 | # SQL Server files 189 | *.mdf 190 | *.ldf 191 | 192 | # Business Intelligence projects 193 | *.rdl.data 194 | *.bim.layout 195 | *.bim_*.settings 196 | 197 | # Microsoft Fakes 198 | FakesAssemblies/ 199 | 200 | # Node.js Tools for Visual Studio 201 | .ntvs_analysis.dat 202 | 203 | # Visual Studio 6 build log 204 | *.plg 205 | 206 | # Visual Studio 6 workspace options file 207 | *.opt 208 | 209 | # LightSwitch generated files 210 | GeneratedArtifacts/ 211 | _Pvt_Extensions/ 212 | ModelManifest.xml 213 | -------------------------------------------------------------------------------- /Code/Code.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.23107.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Code", "Code\Code.shproj", "{7A9B8A55-8FC9-45C2-AFDC-F1446F172330}" 7 | EndProject 8 | Global 9 | GlobalSection(SharedMSBuildProjectFiles) = preSolution 10 | Code\Code.projitems*{7a9b8a55-8fc9-45c2-afdc-f1446f172330}*SharedItemsImports = 13 11 | EndGlobalSection 12 | GlobalSection(SolutionProperties) = preSolution 13 | HideSolutionNode = FALSE 14 | EndGlobalSection 15 | EndGlobal 16 | -------------------------------------------------------------------------------- /Code/Code/Code.projitems: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 5 | true 6 | 7a9b8a55-8fc9-45c2-afdc-f1446f172330 7 | 8 | 9 | Code 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /Code/Code/Code.shproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 7a9b8a55-8fc9-45c2-afdc-f1446f172330 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Code/Code/Content/Audio/Songs/A Terrible Battle (cut).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/Songs/A Terrible Battle (cut).mp3 -------------------------------------------------------------------------------- /Code/Code/Content/Audio/Songs/Back Into the Fray.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/Songs/Back Into the Fray.mp3 -------------------------------------------------------------------------------- /Code/Code/Content/Audio/Songs/Get Those Spies!.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/Songs/Get Those Spies!.mp3 -------------------------------------------------------------------------------- /Code/Code/Content/Audio/Songs/Prayer, Worry, Hope.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/Songs/Prayer, Worry, Hope.mp3 -------------------------------------------------------------------------------- /Code/Code/Content/Audio/Songs/The Fractured Hero.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/Songs/The Fractured Hero.mp3 -------------------------------------------------------------------------------- /Code/Code/Content/Audio/Songs/The Power and the Control.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/Songs/The Power and the Control.mp3 -------------------------------------------------------------------------------- /Code/Code/Content/Audio/SoundEffects/Menu Back.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/SoundEffects/Menu Back.wav -------------------------------------------------------------------------------- /Code/Code/Content/Audio/SoundEffects/Menu Confirm.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/SoundEffects/Menu Confirm.wav -------------------------------------------------------------------------------- /Code/Code/Content/Audio/SoundEffects/Menu Down.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/SoundEffects/Menu Down.wav -------------------------------------------------------------------------------- /Code/Code/Content/Audio/SoundEffects/Menu Left.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/SoundEffects/Menu Left.wav -------------------------------------------------------------------------------- /Code/Code/Content/Audio/SoundEffects/Menu Right.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/SoundEffects/Menu Right.wav -------------------------------------------------------------------------------- /Code/Code/Content/Audio/SoundEffects/Menu Slider.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/SoundEffects/Menu Slider.wav -------------------------------------------------------------------------------- /Code/Code/Content/Audio/SoundEffects/Menu Toggle.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/SoundEffects/Menu Toggle.wav -------------------------------------------------------------------------------- /Code/Code/Content/Audio/SoundEffects/Menu Up.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Audio/SoundEffects/Menu Up.wav -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/a.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/auto-for-joystick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/auto-for-joystick.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/b.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/back.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/buttons-for-joystick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/buttons-for-joystick.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/dpad-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/dpad-down.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/dpad-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/dpad-left.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/dpad-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/dpad-right.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/dpad-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/dpad-up.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/left-bumper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/left-bumper.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/left-stick-press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/left-stick-press.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/left-stick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/left-stick.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/left-trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/left-trigger.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/right-bumper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/right-bumper.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/right-stick-press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/right-stick-press.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/right-stick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/right-stick.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/right-trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/right-trigger.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/start.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/x.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Buttons/y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Buttons/y.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Checkbox/false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Checkbox/false.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Checkbox/true.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Checkbox/true.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/0.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/1.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/2.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/3.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/4.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/5.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/6.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/7.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/8.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/9.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/a.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/alt-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/alt-right.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/alt.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/apostroph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/apostroph.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/b.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/backslash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/backslash.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/backspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/backspace.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/bracket-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/bracket-close.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/bracket-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/bracket-open.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/c.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/capslock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/capslock.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/comma-lt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/comma-lt.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/comma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/comma.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/context-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/context-menu.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/ctrl-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/ctrl-2.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/ctrl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/ctrl.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/cursor-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/cursor-down.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/cursor-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/cursor-left.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/cursor-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/cursor-right.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/cursor-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/cursor-up.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/d.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/delete.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/e.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/end.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/enter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/enter.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/equals-plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/equals-plus.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/esc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/esc.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f1.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f10.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f11.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f12.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f2.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f3.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f4.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f5.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f6.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f7.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f8.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/f9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/f9.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/g.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/h.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/home.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/i.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/insert.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/j.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/j.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/k.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-0.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-1.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-2.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-3.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-4.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-5.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-6.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-7.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-8.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-9.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-asterix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-asterix.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-enter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-enter.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-minus.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-period.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-period.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-plus.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/keypad-slash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/keypad-slash.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/l.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/locks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/locks.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/m.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/minus.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/n.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/num-lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/num-lock.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/o.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/o.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/p.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/page-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/page-down.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/page-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/page-up.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/pause.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/period-gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/period-gt.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/power.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/power.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/print.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/q.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/q.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/r.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/s.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/scroll-lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/scroll-lock.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/semicolon-dble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/semicolon-dble.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/shift-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/shift-right.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/shift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/shift.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/slash-questionmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/slash-questionmark.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/sleep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/sleep.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/spacebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/spacebar.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/specialkey-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/specialkey-2.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/t.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/tab.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/u.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/v.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/w.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/wake-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/wake-up.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/x.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/y.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Keys/z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Keys/z.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Mouse/mouse-left-click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Mouse/mouse-left-click.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Mouse/mouse-middle-click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Mouse/mouse-middle-click.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/Mouse/mouse-right-click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/Mouse/mouse-right-click.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/input-not-found.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/input-not-found.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/none.png -------------------------------------------------------------------------------- /Code/Code/Content/Controls/waiting-for-input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Controls/waiting-for-input.png -------------------------------------------------------------------------------- /Code/Code/Content/Fonts/arial-40.spritefont: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | 10 | 11 | 14 | Arial 15 | 16 | 20 | 40 21 | 22 | 26 | 0 27 | 28 | 32 | true 33 | 34 | 38 | 39 | 40 | 44 | 45 | 46 | 53 | 54 | 55 | 56 | ~ 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Code/Code/Content/Fonts/arial-bold-22.spritefont: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | 10 | 11 | 14 | Arial Bold 15 | 16 | 20 | 22 21 | 22 | 26 | 0 27 | 28 | 32 | true 33 | 34 | 38 | 39 | 40 | 44 | 45 | 46 | 53 | 54 | 55 | 56 | ~ 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Code/Code/Content/Fonts/arial-bold-28.spritefont: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | 10 | 11 | 14 | Arial Bold 15 | 16 | 20 | 28 21 | 22 | 26 | 0 27 | 28 | 32 | true 33 | 34 | 38 | 39 | 40 | 44 | 45 | 46 | 53 | 54 | 55 | 56 | ~ 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Code/Code/Content/Fonts/arial-bold-40.spritefont: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | 10 | 11 | 14 | Arial Bold 15 | 16 | 20 | 40 21 | 22 | 26 | 0 27 | 28 | 32 | true 33 | 34 | 38 | 39 | 40 | 44 | 45 | 46 | 53 | 54 | 55 | 56 | ~ 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Code/Code/Content/Fonts/arial-bold-52.spritefont: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | 10 | 11 | 14 | Arial Bold 15 | 16 | 20 | 52 21 | 22 | 26 | 0 27 | 28 | 32 | true 33 | 34 | 38 | 39 | 40 | 44 | 45 | 46 | 53 | 54 | 55 | 56 | ~ 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MainMenu/GameSettingsMenu/game-settings-menu-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MainMenu/GameSettingsMenu/game-settings-menu-background.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MainMenu/loading-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MainMenu/loading-icon.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MainMenu/main-menu-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MainMenu/main-menu-background.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MainMenu/main-menu-exit-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MainMenu/main-menu-exit-button.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MainMenu/main-menu-game-settings-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MainMenu/main-menu-game-settings-button.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MainMenu/main-menu-start-game-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MainMenu/main-menu-start-game-button.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MenuHelpers/menu-button-blank-checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MenuHelpers/menu-button-blank-checked.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MenuHelpers/menu-button-blank-unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MenuHelpers/menu-button-blank-unchecked.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MenuHelpers/menu-button-blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MenuHelpers/menu-button-blank.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MenuHelpers/menu-button-side-scroll-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MenuHelpers/menu-button-side-scroll-arrow.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MenuHelpers/menu-slider-handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MenuHelpers/menu-slider-handle.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MenuHelpers/menu-slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MenuHelpers/menu-slider.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MenuHelpers/menu-tint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MenuHelpers/menu-tint.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/MenuHelpers/scroll-menu-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/MenuHelpers/scroll-menu-arrow.png -------------------------------------------------------------------------------- /Code/Code/Content/Menues/PauseMenu/pause-menu-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/Menues/PauseMenu/pause-menu-background.png -------------------------------------------------------------------------------- /Code/Code/Content/SplashScreen/splash-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/SplashScreen/splash-image.png -------------------------------------------------------------------------------- /Code/Code/Content/SplashScreen/tint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Code/Code/Content/SplashScreen/tint.png -------------------------------------------------------------------------------- /Code/Code/Main/Animation/AnimatedEntity.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace AsymptoticMonoGameFramework 8 | { 9 | public class AnimatedEntity 10 | { 11 | private Dictionary animations; 12 | private Animation currentAnimation; 13 | private Vector2 position; 14 | private Vector2 size; 15 | private Vector2 origin; 16 | private float rotation; 17 | private SpriteEffects flipEffect; 18 | private Color tintColor; 19 | 20 | public Vector2 Position{ 21 | get { return position; } 22 | set { position = value; } 23 | } 24 | 25 | public Vector2 Size { 26 | get { return size; } 27 | set { size = value; } 28 | } 29 | 30 | public float Rotation{ 31 | get { return rotation; } 32 | set { rotation = value; } 33 | } 34 | 35 | public Vector2 Origin { 36 | get { return origin; } 37 | set { origin = value; } 38 | } 39 | 40 | public SpriteEffects FlipEffect{ 41 | get { return flipEffect; } 42 | set { flipEffect = value; } 43 | } 44 | 45 | public Color TintColor { 46 | get { return tintColor; } 47 | set { tintColor = value; } 48 | } 49 | 50 | public string CurntAnimationName { 51 | get { return currentAnimation.Name; } 52 | } 53 | 54 | public Animation CurrentAnimation { 55 | get { return currentAnimation;} 56 | } 57 | 58 | public Rectangle BoundingRect() { 59 | return new Rectangle((int)position.X, (int)position.Y, (int)size.X, (int)size.Y); 60 | } 61 | 62 | public AnimatedEntity(){ 63 | animations = new Dictionary(24); 64 | position = Vector2.Zero; 65 | origin = Vector2.Zero; 66 | size = Vector2.Zero; 67 | rotation = 0; 68 | flipEffect = SpriteEffects.None; 69 | tintColor = Color.White; 70 | } 71 | 72 | public AnimatedEntity(Vector2 position, Vector2 size, Color tintColor) { 73 | animations = new Dictionary(24); 74 | origin = Vector2.Zero; 75 | rotation = 0; 76 | flipEffect = SpriteEffects.None; 77 | 78 | this.position = position; 79 | this.size = size; 80 | this.tintColor = tintColor; 81 | 82 | if (tintColor == null) 83 | tintColor = Color.White; 84 | } 85 | 86 | 87 | public void AddAnimation(Animation animation){ 88 | if (!animations.ContainsKey(animation.Name)){ 89 | animations.Add(animation.Name, animation); 90 | } 91 | else{ 92 | throw new ApplicationException("Animation key is already used"); 93 | } 94 | } 95 | 96 | public void PlayAnimation(string key){ 97 | if(string.IsNullOrEmpty(key) || !animations.ContainsKey(key)){ 98 | return; 99 | } 100 | if(currentAnimation != null){ 101 | if(currentAnimation.Name == key) { 102 | return; 103 | } 104 | } 105 | currentAnimation = animations[key]; 106 | currentAnimation.Reset(); 107 | } 108 | 109 | public void ResetAndPlayAnimation(string key) { 110 | if (string.IsNullOrEmpty(key) || !animations.ContainsKey(key)) { 111 | return; 112 | } 113 | currentAnimation = animations[key]; 114 | currentAnimation.Reset(); 115 | } 116 | 117 | public void Update(GameTime gameTime){ 118 | if(currentAnimation != null){ 119 | currentAnimation.Update(gameTime); 120 | 121 | if (currentAnimation.IsComplete){ 122 | if (!string.IsNullOrEmpty(currentAnimation.TransitionKey)){ 123 | PlayAnimation(currentAnimation.TransitionKey); 124 | } 125 | } 126 | } 127 | } 128 | 129 | public void Draw(SpriteBatch spriteBatch, Rectangle boundingRect) { 130 | if (currentAnimation != null) { 131 | spriteBatch.Draw(currentAnimation.SpriteSheet, boundingRect, currentAnimation.CurrentKeyFrame.Source, tintColor, rotation, origin, flipEffect, 0); 132 | } 133 | } 134 | 135 | } 136 | } 137 | -------------------------------------------------------------------------------- /Code/Code/Main/Animation/Animation.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | using Microsoft.Xna.Framework.Graphics; 6 | 7 | namespace AsymptoticMonoGameFramework 8 | { 9 | public class Animation 10 | { 11 | private string name; 12 | private bool shouldLoop; 13 | private bool isComplete; 14 | private float framesPerSecond; 15 | private float timePerFrame; 16 | private float totalElapsedTime; 17 | private int currentFrame; 18 | private List keyFrames; 19 | private string transitionKey; 20 | private Texture2D spriteSheet; 21 | 22 | 23 | public string Name{ 24 | get { return name; } 25 | set { name = value; } 26 | } 27 | 28 | public bool ShouldLoop{ 29 | get { return shouldLoop; } 30 | set { shouldLoop = value; } 31 | } 32 | 33 | public Texture2D SpriteSheet { 34 | get { return spriteSheet;} 35 | } 36 | 37 | public float FramesPerSecond{ 38 | get { return framesPerSecond; } 39 | } 40 | 41 | public List KeyFrames{ 42 | get { return keyFrames; } 43 | set { keyFrames = value; } 44 | } 45 | 46 | public int CurrentFrame { 47 | get { return currentFrame; } 48 | } 49 | 50 | public KeyFrame CurrentKeyFrame{ 51 | get { return keyFrames[currentFrame]; } 52 | } 53 | 54 | public bool IsComplete { 55 | get { return isComplete; } 56 | set { isComplete = value; } 57 | } 58 | 59 | public string TransitionKey{ 60 | get { return transitionKey; } 61 | } 62 | 63 | public void SetFramesPerSecond(float value) { 64 | framesPerSecond = value; 65 | timePerFrame = 1.0f / framesPerSecond; 66 | } 67 | 68 | public Animation(){ 69 | name = string.Empty; 70 | shouldLoop = false; 71 | isComplete = false; 72 | framesPerSecond = 0; 73 | timePerFrame = 0; 74 | totalElapsedTime = 0; 75 | currentFrame = -1; 76 | keyFrames = new List(); 77 | } 78 | 79 | public Animation(string name, bool shouldLoop, float framesPerSecond, string path, string transitionKey){ 80 | this.name = name; 81 | this.shouldLoop = shouldLoop; 82 | this.framesPerSecond = framesPerSecond; 83 | this.transitionKey = transitionKey; 84 | spriteSheet = Globals.content.Load(path); 85 | 86 | timePerFrame = 1.0f / framesPerSecond; 87 | keyFrames = new List(60); 88 | isComplete = false; 89 | currentFrame = -1; 90 | totalElapsedTime = 0; 91 | } 92 | 93 | public void Reset(){ 94 | currentFrame = 0; 95 | totalElapsedTime = 0; 96 | isComplete = false; 97 | } 98 | 99 | public void LoadLineAnimation(int width, int height, int num) { 100 | for (int i = 0; i < num; i++) { 101 | AddKeyFrame(i * width, 0, width, height); 102 | } 103 | } 104 | 105 | public void LoadRectAnimation(int width, int height, int perLine, int num) { 106 | int x, y = 0; 107 | 108 | for (int i = 0; i < num; i++) { 109 | x = (i * width) % (width * perLine); 110 | if (x == 0 && i != 0) 111 | y += height; 112 | AddKeyFrame(x, y, width, height); 113 | } 114 | } 115 | 116 | public void LoadSingleAnimation(int width, int height) { 117 | AddKeyFrame(0, 0, width, height); 118 | } 119 | 120 | public void AddKeyFrame(int x, int y, int width, int height){ 121 | KeyFrame keyFrame = new KeyFrame(x, y, width, height); 122 | keyFrames.Add(keyFrame); 123 | } 124 | 125 | public void LoadContent(string textureName){ 126 | spriteSheet = Globals.content.Load(textureName); 127 | } 128 | 129 | public void LoadContent(Texture2D spriteSheet){ 130 | this.spriteSheet = spriteSheet; 131 | } 132 | 133 | public void Update(GameTime gameTime){ 134 | totalElapsedTime += (float)gameTime.ElapsedGameTime.TotalSeconds; 135 | KeyFrame keyFrame = keyFrames[currentFrame]; 136 | 137 | if(totalElapsedTime >= timePerFrame){ 138 | if(currentFrame >= keyFrames.Count - 1){ 139 | if (shouldLoop){ 140 | currentFrame = 0; 141 | isComplete = false; 142 | } 143 | else{ 144 | isComplete = true; 145 | } 146 | } 147 | else{ 148 | currentFrame++; 149 | } 150 | 151 | totalElapsedTime -= totalElapsedTime; 152 | } 153 | } 154 | 155 | 156 | } 157 | } 158 | -------------------------------------------------------------------------------- /Code/Code/Main/Animation/KeyFrame.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace AsymptoticMonoGameFramework 7 | { 8 | public class KeyFrame 9 | { 10 | private Rectangle source; 11 | 12 | public Rectangle Source{ 13 | get { return source; } 14 | } 15 | 16 | public int Width{ 17 | get { return source.Width; } 18 | } 19 | 20 | public int Height{ 21 | get { return source.Height; } 22 | } 23 | 24 | public KeyFrame(int x, int y, int width, int height){ 25 | source = new Rectangle(x, y, width, height); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Code/Code/Main/Config/AudioConfig.cs: -------------------------------------------------------------------------------- 1 | namespace AsymptoticMonoGameFramework{ 2 | 3 | public static class AudioConfig { 4 | 5 | public static float musicVolume = 0.0f; 6 | public static float soundEffectVolume = 0.0f; 7 | 8 | public static void SaveAudioSettings() { 9 | Globals.gameInstance.settingsManager.settings.soundEffectVolume = (int) (soundEffectVolume * 100); 10 | Globals.gameInstance.settingsManager.settings.musicVolume = (int) (musicVolume * 100); 11 | Globals.gameInstance.settingsManager.Save(); 12 | } 13 | 14 | public static void LoadAudioSettings() { 15 | soundEffectVolume = HelperFunctions.Clamp((float)Globals.gameInstance.settingsManager.settings.soundEffectVolume / 100.0f, 0, 1); 16 | musicVolume = HelperFunctions.Clamp((float)Globals.gameInstance.settingsManager.settings.musicVolume / 100.0f, 0, 1); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Code/Code/Main/Config/DefaultControls.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Collections.Generic; 4 | using Microsoft.Xna.Framework.Input; 5 | 6 | namespace AsymptoticMonoGameFramework{ 7 | 8 | public static class DefaultControls { 9 | 10 | public static string defaultPresetString = "Default"; 11 | public static string customPresetString = "Custom"; 12 | 13 | /******* *******\ 14 | When changing these controls, you must delete the current settings file on your hard drive. 15 | You can do this in SettingsManager.cs and uncommenting the function call to DeleteSettingsFile() 16 | Or you can do it manually 17 | \******* *******/ 18 | 19 | public static string moveUpTKey = "Move Up"; 20 | public static string moveDownTKey = "Move Down"; 21 | public static string moveLeftTKey = "Move Left"; 22 | public static string moveRightTKey = "Move Right"; 23 | public static string joystickExampleTKey = "Joystick Example"; 24 | public static string booleanExampleTKey = "Boolean Example"; 25 | public static string mouseClickExampleTkey = "Mouse Click Example"; 26 | public static string confirmTKey = "Confirm"; 27 | public static string declineTKey = "Decline"; 28 | public static string pauseTKey = "Pause"; 29 | 30 | public static Dictionary gamepadControls = new Dictionary { 31 | {moveUpTKey, Buttons.DPadUp }, 32 | {moveDownTKey, Buttons.DPadDown }, 33 | {moveLeftTKey, Buttons.DPadLeft }, 34 | {moveRightTKey, Buttons.DPadRight }, 35 | {joystickExampleTKey, JoystickOptions.Right }, 36 | {booleanExampleTKey, ToggleOptions.False }, 37 | {confirmTKey, Buttons.A }, 38 | {declineTKey, Buttons.B }, 39 | {pauseTKey, Buttons.Start } 40 | }; 41 | 42 | public static Dictionary gamepadControlsPreset2 = new Dictionary { 43 | {moveUpTKey, Buttons.DPadUp }, 44 | {moveDownTKey, Buttons.DPadDown }, 45 | {moveLeftTKey, Buttons.DPadLeft }, 46 | {moveRightTKey, Buttons.DPadRight }, 47 | {joystickExampleTKey, JoystickOptions.Left }, 48 | {booleanExampleTKey, ToggleOptions.True }, 49 | {confirmTKey, Buttons.A }, 50 | {declineTKey, Buttons.B }, 51 | {pauseTKey, Buttons.Start } 52 | }; 53 | 54 | public static Dictionary keyboardControls = new Dictionary { 55 | {moveUpTKey, Keys.W }, 56 | {moveDownTKey, Keys.S }, 57 | {moveLeftTKey, Keys.A }, 58 | {moveRightTKey, Keys.D }, 59 | {mouseClickExampleTkey, MouseClickOptions.LeftClick }, 60 | {booleanExampleTKey, ToggleOptions.False }, 61 | {confirmTKey, Keys.Enter }, 62 | {declineTKey, Keys.Back }, 63 | {pauseTKey, Keys.Escape } 64 | }; 65 | 66 | public static Dictionary keyboardControlsPreset2 = new Dictionary { 67 | {moveUpTKey, Keys.W }, 68 | {moveDownTKey, Keys.S }, 69 | {moveLeftTKey, Keys.A }, 70 | {moveRightTKey, Keys.D }, 71 | {mouseClickExampleTkey, MouseClickOptions.RightClick }, 72 | {booleanExampleTKey, ToggleOptions.True }, 73 | {confirmTKey, Keys.Enter }, 74 | {declineTKey, Keys.Back }, 75 | {pauseTKey, Keys.Escape } 76 | }; 77 | 78 | public static Dictionary> gamepadPresets; 79 | public static Dictionary> keyboardPresets; 80 | 81 | public static string[] currentGamepadPreset = new string[ControlsConfig.numGamepads]; 82 | public static string[] currentKeyboardPreset = new string[1]; 83 | 84 | public static void SetupPresets() { 85 | gamepadPresets = new Dictionary> { 86 | { defaultPresetString, gamepadControls }, 87 | { "Preset 2", gamepadControlsPreset2 }, 88 | { customPresetString, gamepadControls } 89 | }; 90 | for (int i = 0; i < ControlsConfig.numGamepads; i++) { 91 | currentGamepadPreset[i] = defaultPresetString; 92 | } 93 | 94 | keyboardPresets = new Dictionary> { 95 | { defaultPresetString, keyboardControls }, 96 | { "Preset 2", keyboardControlsPreset2 }, 97 | { customPresetString, keyboardControls } 98 | }; 99 | currentKeyboardPreset[0] = defaultPresetString; 100 | } 101 | 102 | public static bool GamepadPresetIsCustom(int playerNumber) { 103 | return currentGamepadPreset[playerNumber] == customPresetString; 104 | } 105 | 106 | public static bool KeyboardPresetIsCustom() { 107 | return currentKeyboardPreset[0] == customPresetString; 108 | } 109 | 110 | public static void IncrementGamepadPreset(int playerNumber) { 111 | int currentIndex = gamepadPresets.Keys.ToList().IndexOf(currentGamepadPreset[playerNumber]); 112 | currentIndex++; 113 | if (currentIndex >= gamepadPresets.Keys.ToList().Count) { 114 | currentIndex = 0; 115 | } 116 | currentGamepadPreset[playerNumber] = gamepadPresets.Keys.ToList()[currentIndex]; 117 | } 118 | 119 | public static void DecrementGamepadPreset(int playerNumber) { 120 | int currentIndex = gamepadPresets.Keys.ToList().IndexOf(currentGamepadPreset[playerNumber]); 121 | currentIndex--; 122 | if (currentIndex < 0) { 123 | currentIndex = gamepadPresets.Keys.ToList().Count - 1; 124 | } 125 | currentGamepadPreset[playerNumber] = gamepadPresets.Keys.ToList()[currentIndex]; 126 | } 127 | 128 | public static void IncrementKeyboardPreset() { 129 | int currentIndex = keyboardPresets.Keys.ToList().IndexOf(currentKeyboardPreset[0]); 130 | currentIndex++; 131 | if (currentIndex >= keyboardPresets.Keys.ToList().Count) { 132 | currentIndex = 0; 133 | } 134 | currentKeyboardPreset[0] = keyboardPresets.Keys.ToList()[currentIndex]; 135 | } 136 | 137 | public static void DecrementKeyboardPreset() { 138 | int currentIndex = keyboardPresets.Keys.ToList().IndexOf(currentKeyboardPreset[0]); 139 | currentIndex--; 140 | if (currentIndex < 0) { 141 | currentIndex = keyboardPresets.Keys.ToList().Count - 1; 142 | } 143 | currentKeyboardPreset[0] = keyboardPresets.Keys.ToList()[currentIndex]; 144 | } 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /Code/Code/Main/Config/GlobalControls.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace AsymptoticMonoGameFramework 4 | { 5 | public static class GlobalControls 6 | { 7 | public static bool ConfirmPressed() { 8 | foreach(int controllerIndex in ControlsConfig.GetAllControllerIndexes()) { 9 | if (PlayerControls.ConfirmPressed(controllerIndex)) { 10 | return true; 11 | } 12 | } 13 | return false; 14 | } 15 | 16 | public static bool DeclinePressed() { 17 | foreach (int controllerIndex in ControlsConfig.GetAllControllerIndexes()) { 18 | if (PlayerControls.DeclinePressed(controllerIndex)) { 19 | return true; 20 | } 21 | } 22 | return false; 23 | } 24 | 25 | public static bool PausePressed() { 26 | if (CurrentlySettingControl()) { 27 | //When setting control in controls menu, don't want to unpause the game 28 | return false; 29 | } 30 | foreach (int controllerIndex in ControlsConfig.GetAllControllerIndexes()) { 31 | if (PlayerControls.PausePressed(controllerIndex)) { 32 | return true; 33 | } 34 | } 35 | return false; 36 | } 37 | 38 | public static bool MenuLeftPressed() { 39 | foreach (int controllerIndex in ControlsConfig.GetAllControllerIndexes()) { 40 | if (PlayerControls.MenuLeftPressed(controllerIndex)) { 41 | return true; 42 | } 43 | } 44 | return false; 45 | } 46 | 47 | public static bool MenuRightPressed() { 48 | foreach (int controllerIndex in ControlsConfig.GetAllControllerIndexes()) { 49 | if (PlayerControls.MenuRightPressed(controllerIndex)) { 50 | return true; 51 | } 52 | } 53 | return false; 54 | } 55 | 56 | public static bool MenuUpPressed() { 57 | foreach (int controllerIndex in ControlsConfig.GetAllControllerIndexes()) { 58 | if (PlayerControls.MenuUpPressed(controllerIndex)) { 59 | return true; 60 | } 61 | } 62 | return false; 63 | } 64 | 65 | public static bool MenuDownPressed() { 66 | foreach (int controllerIndex in ControlsConfig.GetAllControllerIndexes()) { 67 | if (PlayerControls.MenuDownPressed(controllerIndex)) { 68 | return true; 69 | } 70 | } 71 | return false; 72 | } 73 | 74 | public static bool CurrentlySettingControl() { 75 | if (Globals.gameInstance.gameState == GameState.inStartMenues) { 76 | return Globals.startMenuesManager.mainMenu.mainMenuSettingsMenu.controlsMenu.CurrentlySettingControl(); 77 | } else if (Globals.gameInstance.gameState == GameState.inGame) { 78 | return Globals.gameplayManager.gameFlow.pauseMenu.controlsMenu.CurrentlySettingControl(); 79 | } 80 | return false; 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /Code/Code/Main/Config/ResolutionConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace AsymptoticMonoGameFramework { 5 | 6 | public static class ResolutionConfig { 7 | 8 | public static Tuple virtualResolution = new Tuple(1920, 1080); 9 | public static List> resolutionOptions = new List>(new Tuple[] { 10 | new Tuple(800, 600), //0 11 | new Tuple(960, 540), //1 12 | new Tuple(1024, 768), //2 13 | new Tuple(1280, 720), //3 14 | new Tuple(1280, 1024), //4 15 | new Tuple(1366, 768), //5 16 | new Tuple(1440, 900), //6 17 | new Tuple(1600, 900), //7 18 | new Tuple(1680, 1050), //8 19 | new Tuple(1920, 1080), //9 20 | new Tuple(2560, 1440), //10 21 | new Tuple(3840, 2160) //11 22 | }); 23 | 24 | public static List> validResolutionOptions; 25 | 26 | public static int currentResolutionIndex; 27 | public static bool isFullScreen; 28 | 29 | public static Tuple GetCurrentResolution() { 30 | return validResolutionOptions[currentResolutionIndex]; 31 | } 32 | 33 | public static void SetResolution(int _currentResolutionIndex, bool _isFullScreen) { 34 | isFullScreen = _isFullScreen; 35 | currentResolutionIndex = _currentResolutionIndex; 36 | Resolution.SetResolution(validResolutionOptions[currentResolutionIndex].Item1, validResolutionOptions[currentResolutionIndex].Item2, isFullScreen); 37 | SaveGraphicalSettings(); 38 | } 39 | 40 | public static void SetValidResolutionOptions() { 41 | validResolutionOptions = new List>(); 42 | foreach(Tuple option in resolutionOptions) { 43 | if(option.Item1 <= Resolution.GetMonitorResolution().X && option.Item2 <= Resolution.GetMonitorResolution().Y) { 44 | validResolutionOptions.Add(option); 45 | } 46 | } 47 | 48 | /** Set resolution to 2 under valid resolution options so the entire window is in view the first time the game is loaded **/ 49 | currentResolutionIndex = validResolutionOptions.Count - 2; 50 | if (currentResolutionIndex < 0) { 51 | currentResolutionIndex = 0; 52 | } 53 | 54 | //special case for 1920x1080 monitors, set to 1600x900 55 | if (validResolutionOptions[validResolutionOptions.Count - 1].Item1 == 1920 && validResolutionOptions[validResolutionOptions.Count - 1].Item2 == 1080) { 56 | for(int i = 0; i < validResolutionOptions.Count; i++) { 57 | if(validResolutionOptions[i].Item1 == 1600 && validResolutionOptions[i].Item2 == 900) { 58 | currentResolutionIndex = i; 59 | break; 60 | } 61 | } 62 | } 63 | } 64 | 65 | public static void SaveGraphicalSettings() { 66 | Globals.gameInstance.settingsManager.settings.fullScreen = isFullScreen ? "true" : "false"; 67 | Globals.gameInstance.settingsManager.settings.resolution = GetCurrentResolution().Item1 + "x" + GetCurrentResolution().Item2; 68 | Globals.gameInstance.settingsManager.Save(); 69 | } 70 | 71 | public static void LoadGraphicalSettings() { 72 | isFullScreen = (Globals.gameInstance.settingsManager.settings.fullScreen == "true"); 73 | 74 | SetValidResolutionOptions(); 75 | for(int i = 0; i < validResolutionOptions.Count; i++) { 76 | Tuple option = validResolutionOptions[i]; 77 | if(option.Item1 + "x" + option.Item2 == Globals.gameInstance.settingsManager.settings.resolution) { 78 | currentResolutionIndex = i; 79 | break; 80 | } 81 | } 82 | 83 | SetResolution(currentResolutionIndex, isFullScreen); 84 | } 85 | 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /Code/Code/Main/Config/Settings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using Microsoft.Xna.Framework.Input; 5 | 6 | namespace AsymptoticMonoGameFramework 7 | { 8 | public class Settings { 9 | 10 | //public int/string = 11 | 12 | /** Graphical Settings **/ 13 | public string fullScreen = "false"; 14 | public string resolution = ""; 15 | 16 | /** Audio Settings **/ 17 | public int soundEffectVolume = 50; 18 | public int musicVolume = 50; 19 | 20 | /** Controls Settings **/ 21 | public int[][] gamepadControlsTValues = new int[DefaultControls.gamepadControls.Count][]; 22 | public string[] currentGamepadPreset = new string[ControlsConfig.numGamepads]; 23 | public int[][] keyboardControlsTValues = new int[DefaultControls.keyboardControls.Count][]; 24 | public string[] currentKeyboardPreset = new string[1]; 25 | 26 | public Settings() { 27 | int controlsIndex = 0; 28 | foreach(KeyValuePair entry in DefaultControls.gamepadControls) { 29 | int[] playerControlsTValues = new int[ControlsConfig.numGamepads]; 30 | for(int playerIndex = 0; playerIndex < ControlsConfig.numGamepads; playerIndex++) { 31 | if (entry.Value is bool) { 32 | playerControlsTValues[playerIndex] = (bool)entry.Value ? (int)ToggleOptions.True : (int)ToggleOptions.False; 33 | } else { 34 | playerControlsTValues[playerIndex] = (int)DefaultControls.gamepadControls[entry.Key]; 35 | } 36 | } 37 | gamepadControlsTValues[controlsIndex] = playerControlsTValues; 38 | controlsIndex++; 39 | } 40 | 41 | controlsIndex = 0; 42 | foreach (KeyValuePair entry in DefaultControls.keyboardControls) { 43 | int[] playerControlsTValues = new int[1]; 44 | playerControlsTValues[0] = (int)DefaultControls.keyboardControls[entry.Key]; 45 | keyboardControlsTValues[controlsIndex] = playerControlsTValues; 46 | controlsIndex++; 47 | } 48 | 49 | for (int i = 0; i < currentGamepadPreset.Length; i++) { 50 | currentGamepadPreset[i] = DefaultControls.defaultPresetString; 51 | } 52 | currentKeyboardPreset[0] = DefaultControls.defaultPresetString; 53 | } 54 | } 55 | 56 | public static class ArrayExtensions { 57 | public static void Fill(this T[] originalArray, T with) { 58 | for (int i = 0; i < originalArray.Length; i++) { 59 | originalArray[i] = with; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Code/Code/Main/Config/SettingsManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.IO.IsolatedStorage; 5 | using System.Linq; 6 | using System.Reflection; 7 | using System.Text; 8 | using System.Xml.Serialization; 9 | 10 | namespace AsymptoticMonoGameFramework 11 | { 12 | public class SettingsManager 13 | { 14 | private string folderName = "AsymptoticMonoGameFramework"; 15 | private string fileName = "asymptotic-monogame-framework-settings.dat"; 16 | public Settings settings; 17 | 18 | public SettingsManager() { 19 | settings = new Settings(); 20 | 21 | /*** Uncomment if you want to see where the settings file is stored on your local hard drive. full path is printed to console ***/ 22 | //OutputFullFilePathOfSettingsFile(); 23 | 24 | /*** Uncomment if changing controls in DefaultControls.cs or ControlsConfig.numGamepads ***/ 25 | //DeleteSettingsFile(); 26 | } 27 | 28 | public void Load() { 29 | using (IsolatedStorageFile isf = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null)) { 30 | if (!isf.DirectoryExists(folderName)) 31 | return; 32 | 33 | string filePath = Path.Combine(folderName, fileName); 34 | 35 | if (!isf.FileExists(filePath)) 36 | return; 37 | 38 | using (IsolatedStorageFileStream stream = isf.OpenFile(filePath, FileMode.Open)) { 39 | XmlSerializer serializer = new XmlSerializer(typeof(Settings)); 40 | settings = (Settings)serializer.Deserialize(stream); 41 | } 42 | } 43 | } 44 | 45 | public void Save() { 46 | using (IsolatedStorageFile isf = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null)) { 47 | if (!isf.DirectoryExists(folderName)) 48 | isf.CreateDirectory(folderName); 49 | 50 | string filePath = Path.Combine(folderName, fileName); 51 | 52 | using (IsolatedStorageFileStream stream = isf.CreateFile(filePath)) { 53 | XmlSerializer serializer = new XmlSerializer(typeof(Settings)); 54 | serializer.Serialize(stream, settings); 55 | } 56 | } 57 | } 58 | 59 | public static void LoadAllSettings() { 60 | Globals.gameInstance.settingsManager = new SettingsManager(); 61 | Globals.gameInstance.settingsManager.Load(); 62 | 63 | ResolutionConfig.LoadGraphicalSettings(); 64 | AudioConfig.LoadAudioSettings(); 65 | ControlsConfig.LoadControlsSettings(); 66 | } 67 | 68 | private void OutputFullFilePathOfSettingsFile() { 69 | using (IsolatedStorageFile isf = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null)) { 70 | string filePath = Path.Combine(folderName, fileName); 71 | 72 | if (!isf.DirectoryExists(folderName) || !isf.FileExists(filePath)) { 73 | Console.WriteLine("Settings Filepath: ERROR: Settings file not created yet. try again."); 74 | return; 75 | } 76 | 77 | using (IsolatedStorageFileStream stream = isf.OpenFile(filePath, FileMode.Open)) { 78 | string fullFilePath = stream.GetType().GetField("m_FullPath", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(stream).ToString(); 79 | Console.WriteLine("Settings Filepath: " + fullFilePath); 80 | } 81 | } 82 | } 83 | 84 | private void DeleteSettingsFile() { 85 | using (IsolatedStorageFile isf = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null)) { 86 | string filePath = Path.Combine(folderName, fileName); 87 | if (!isf.DirectoryExists(folderName) || !isf.FileExists(filePath)) 88 | return; 89 | 90 | isf.DeleteFile(filePath); 91 | } 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /Code/Code/Main/CustomColors.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | 4 | namespace AsymptoticMonoGameFramework 5 | { 6 | public static class CustomColors 7 | { 8 | public static Color veryLightOrange = new Color(255.0f / 255.0f, 219.0f / 255.0f, 170.0f / 255.0f); 9 | public static Color lightBlue = new Color(73.0f / 255.0f, 109.0f / 255.0f, 137.0f / 255.0f); 10 | public static Color darkerGray = new Color(120.0f / 255.0f, 120.0f / 255.0f, 120.0f / 255.0f); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Code/Code/Main/Game1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.Xna.Framework; 4 | using Microsoft.Xna.Framework.Graphics; 5 | 6 | namespace AsymptoticMonoGameFramework{ 7 | 8 | public enum GameState { 9 | inStartMenues, 10 | inLoadingScreen, 11 | inGame 12 | } 13 | 14 | public class Game1 : Game { 15 | 16 | GraphicsDeviceManager graphics; 17 | SpriteBatch spriteBatch; 18 | public Viewport viewport; 19 | public SettingsManager settingsManager; 20 | 21 | public GameState gameState; 22 | public bool isLoading = false; 23 | 24 | public Game1() { 25 | graphics = new GraphicsDeviceManager(this); 26 | this.IsMouseVisible = true; 27 | Content.RootDirectory = "Content"; 28 | 29 | Resolution.Init(ref graphics); 30 | } 31 | 32 | protected override void Initialize() { 33 | gameState = GameState.inStartMenues; 34 | 35 | Globals.content = Content; 36 | Globals.gameWindow = Window; 37 | Globals.gameInstance = this; 38 | Globals.startMenuesManager = new StartMenuesManager(); 39 | Globals.loadingScreenManager = new LoadingScreenManager(); 40 | Globals.gameplayManager = new GameplayManager(); 41 | Globals.songManager = new SongManager(); 42 | Globals.soundEffectsManager = new SoundEffectsManager(); 43 | 44 | SettingsManager.LoadAllSettings(); 45 | 46 | base.Initialize(); 47 | } 48 | 49 | protected override void LoadContent() { 50 | spriteBatch = new SpriteBatch(GraphicsDevice); 51 | viewport = GraphicsDevice.Viewport; 52 | 53 | GlobalTextures.LoadContent(); 54 | Globals.startMenuesManager.LoadContent(); 55 | Globals.loadingScreenManager.LoadContent(); 56 | Globals.songManager.LoadContent(); 57 | Globals.soundEffectsManager.LoadContent(); 58 | } 59 | 60 | protected override void UnloadContent() { 61 | GlobalTextures.UnloadContent(); 62 | Globals.startMenuesManager.UnloadContent(); 63 | Globals.loadingScreenManager.UnloadContent(); 64 | Globals.gameplayManager.UnloadContent(); 65 | Globals.songManager.UnloadContent(); 66 | Globals.soundEffectsManager.UnloadContent(); 67 | } 68 | 69 | protected override void Update(GameTime gameTime) { 70 | if (IsActive) { 71 | if (gameState == GameState.inStartMenues) { 72 | Globals.startMenuesManager.Update(gameTime); 73 | } 74 | 75 | if (gameState == GameState.inLoadingScreen) { 76 | Globals.loadingScreenManager.Update(gameTime); 77 | } 78 | 79 | if (gameState == GameState.inGame) { 80 | Globals.gameplayManager.Update(gameTime); 81 | } 82 | 83 | Globals.songManager.Update(gameTime); 84 | Globals.soundEffectsManager.Update(gameTime); 85 | PlayerControls.Update(); 86 | base.Update(gameTime); 87 | } 88 | } 89 | 90 | protected override void Draw(GameTime gameTime) { 91 | Resolution.BeginDraw(); 92 | spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null, Resolution.getTransformationMatrix()); 93 | 94 | if (gameState == GameState.inStartMenues) { 95 | Globals.startMenuesManager.Draw(spriteBatch); 96 | }else if(gameState == GameState.inLoadingScreen) { 97 | Globals.loadingScreenManager.Draw(spriteBatch); 98 | }else if(gameState == GameState.inGame) { 99 | Globals.gameplayManager.Draw(spriteBatch); 100 | } 101 | 102 | base.Draw(gameTime); 103 | spriteBatch.End(); 104 | } 105 | 106 | public void ExitGameplay() { 107 | gameState = GameState.inStartMenues; 108 | Globals.startMenuesManager.startMenuesState = StartMenuesState.MainMenu; 109 | GameplaySettingsManager.ResetToDefault(); 110 | Globals.songManager.StopGameplay(); 111 | Globals.songManager.StartMainMenu(); 112 | } 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /Code/Code/Main/Gameplay/GameFlow.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace AsymptoticMonoGameFramework 5 | { 6 | public class GameFlow { 7 | 8 | public enum GameScreenStatus { 9 | inGame, 10 | inPause 11 | }; 12 | 13 | public PauseMenu pauseMenu; 14 | public GameUI gameUI; 15 | public GameScreenStatus gameScreenStatus; 16 | 17 | public GameFlow() { 18 | pauseMenu = new PauseMenu(); 19 | gameUI = new GameUI(); 20 | gameScreenStatus = GameScreenStatus.inGame; 21 | } 22 | 23 | public void LoadContent() { 24 | gameUI.LoadContent(); 25 | pauseMenu.LoadContent(); 26 | } 27 | 28 | public void UnloadContent() { 29 | gameUI.UnloadContent(); 30 | pauseMenu.UnloadContent(); 31 | } 32 | 33 | public void Update(GameTime gameTime) { 34 | gameUI.Update(gameTime); 35 | if (gameScreenStatus == GameScreenStatus.inPause) { 36 | pauseMenu.Update(gameTime); 37 | } else if (gameScreenStatus == GameScreenStatus.inGame) { 38 | if (GlobalControls.PausePressed() || PlayerControls.PausePressed(ControlsConfig.keyboardControllerIndex)) { 39 | PauseGame(); 40 | } 41 | } 42 | } 43 | 44 | public void Draw(SpriteBatch spriteBatch) { 45 | gameUI.Draw(spriteBatch); 46 | if (gameScreenStatus == GameScreenStatus.inPause) { 47 | pauseMenu.Draw(spriteBatch); 48 | } 49 | } 50 | 51 | public void PauseGame() { 52 | gameScreenStatus = GameScreenStatus.inPause; 53 | PauseAllSoundEffects(); 54 | } 55 | 56 | public void UnpauseGame() { 57 | gameScreenStatus = GameScreenStatus.inGame; 58 | ResumeAllSoundEffects(); 59 | } 60 | 61 | public void PauseAllSoundEffects() { 62 | 63 | } 64 | 65 | public void ResumeAllSoundEffects() { 66 | 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Code/Code/Main/Gameplay/GameplayManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | using Microsoft.Xna.Framework.Graphics; 4 | 5 | namespace AsymptoticMonoGameFramework 6 | { 7 | public class GameplayManager { 8 | 9 | public GameFlow gameFlow; 10 | 11 | public GameplayManager() { 12 | 13 | } 14 | 15 | public void LoadContent() { 16 | gameFlow = new GameFlow(); 17 | gameFlow.LoadContent(); 18 | 19 | Globals.gameInstance.gameState = GameState.inGame; 20 | Globals.gameInstance.isLoading = false; 21 | Globals.songManager.StartGameplay(); 22 | } 23 | 24 | public void UnloadContent() { 25 | if(gameFlow != null) 26 | Globals.gameplayManager.gameFlow.UnloadContent(); 27 | } 28 | 29 | public void Update(GameTime gameTime) { 30 | Globals.gameplayManager.gameFlow.Update(gameTime); 31 | } 32 | 33 | public void Draw(SpriteBatch spriteBatch) { 34 | Globals.gameplayManager.gameFlow.Draw(spriteBatch); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Code/Code/Main/Gameplay/GameplaySettingsManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | 4 | namespace AsymptoticMonoGameFramework { 5 | 6 | public enum GameplayDifficulty { 7 | Easy = 0, 8 | Medium = 1, 9 | Hard = 2 10 | } 11 | 12 | public static class GameplaySettingsManager { 13 | 14 | public static GameplayDifficulty currentGameplayDifficulty = GameplayDifficulty.Medium; 15 | public static string[] gameplayDifficultiesFriendlyStrings = new string[3] { "Easy", "Medium", "Hard" }; 16 | 17 | public static void ResetToDefault() { 18 | currentGameplayDifficulty = GameplayDifficulty.Medium; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Code/Code/Main/Gameplay/SongManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | using Microsoft.Xna.Framework.Audio; 4 | 5 | namespace AsymptoticMonoGameFramework 6 | { 7 | public class SongManager { 8 | 9 | private readonly string[] gameplaySongList = new string[5] { "Back Into the Fray", "Get Those Spies!", "Prayer, Worry, Hope", "The Fractured Hero", "The Power and the Control" }; 10 | private readonly string mainMenuSong = "A Terrible Battle (cut)"; 11 | 12 | private SoundEffect song; 13 | private SoundEffectInstance songInstance; 14 | private int gameplaySongListIndex; 15 | 16 | public SongManager() { 17 | 18 | } 19 | 20 | public void Update(GameTime gameTime) { 21 | if (songInstance != null) { 22 | songInstance.Volume = GetSongVolume(); 23 | if (Globals.gameInstance.gameState == GameState.inGame) { 24 | if (songInstance.State != SoundState.Playing) { 25 | gameplaySongListIndex++; 26 | if (gameplaySongListIndex >= gameplaySongList.Length) { 27 | gameplaySongListIndex = 0; 28 | } 29 | StopGameplay(); 30 | StartGameplay(); 31 | } 32 | } 33 | } 34 | } 35 | 36 | public void LoadContent() { 37 | 38 | } 39 | 40 | public void UnloadContent() { 41 | 42 | } 43 | 44 | public void StartGameplay() { 45 | gameplaySongListIndex = Globals.random.Next(gameplaySongList.Length); 46 | LoadNewSong(gameplaySongList[gameplaySongListIndex]); 47 | songInstance.IsLooped = false; 48 | } 49 | 50 | public void StopGameplay() { 51 | StopSongManager(); 52 | } 53 | 54 | public void StartMainMenu() { 55 | LoadNewSong(mainMenuSong); 56 | songInstance.Volume = GetSongVolume(); 57 | songInstance.Pitch = 0.0f; 58 | songInstance.IsLooped = true; 59 | } 60 | 61 | public void StopMainMenu() { 62 | StopSongManager(); 63 | } 64 | 65 | private void StopSongManager() { 66 | songInstance.Stop(); 67 | songInstance = null; 68 | } 69 | 70 | private void LoadNewSong(string songName) { 71 | song = Globals.content.Load("Audio/Songs/" + songName); 72 | songInstance = song.CreateInstance(); 73 | songInstance.Play(); 74 | } 75 | 76 | private float GetSongVolume() { 77 | return 0.3f * AudioConfig.musicVolume; 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /Code/Code/Main/Gameplay/SoundEffectsManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Collections.Generic; 4 | using Microsoft.Xna.Framework; 5 | using Microsoft.Xna.Framework.Audio; 6 | 7 | namespace AsymptoticMonoGameFramework{ 8 | 9 | public class SoundEffectObject { 10 | 11 | public SoundEffect soundEffect; 12 | public string soundEffectFile; 13 | public float soundEffectVolume; 14 | 15 | public SoundEffectObject(string _soundEffectFile, float _soundEffectVolume) { 16 | soundEffectFile = _soundEffectFile; 17 | soundEffectVolume = _soundEffectVolume; 18 | } 19 | 20 | public void LoadSoundEffect() { 21 | soundEffect = Globals.content.Load(soundEffectFile); 22 | } 23 | } 24 | 25 | public enum SoundEffects { 26 | MenuUp, 27 | MenuDown, 28 | MenuLeft, 29 | MenuRight, 30 | MenuConfirm, 31 | MenuBack, 32 | MenuToggle, 33 | MenuSlider 34 | }; 35 | 36 | public class SoundEffectsManager { 37 | 38 | public static Vector2 zeroPanVectorLocation = new Vector2(-1, -1); 39 | 40 | private Dictionary soundEffectList = new Dictionary { 41 | {SoundEffects.MenuUp, new SoundEffectObject("Audio/SoundEffects/Menu Up", 0.7f)}, 42 | {SoundEffects.MenuDown, new SoundEffectObject("Audio/SoundEffects/Menu Down", 0.7f)}, 43 | {SoundEffects.MenuLeft, new SoundEffectObject("Audio/SoundEffects/Menu Left", 0.7f)}, 44 | {SoundEffects.MenuRight, new SoundEffectObject("Audio/SoundEffects/Menu Right", 0.7f)}, 45 | {SoundEffects.MenuConfirm, new SoundEffectObject("Audio/SoundEffects/Menu Confirm", 0.9f)}, 46 | {SoundEffects.MenuBack, new SoundEffectObject("Audio/SoundEffects/Menu Back", 1.0f)}, 47 | {SoundEffects.MenuToggle, new SoundEffectObject("Audio/SoundEffects/Menu Toggle", 0.7f)}, 48 | {SoundEffects.MenuSlider, new SoundEffectObject("Audio/SoundEffects/Menu Slider", 0.5f)}, 49 | }; 50 | 51 | public SoundEffectsManager() { 52 | 53 | } 54 | 55 | public void Update(GameTime gameTime) { 56 | 57 | } 58 | 59 | public void LoadContent() { 60 | foreach(KeyValuePair soundEffectObject in soundEffectList) { 61 | soundEffectObject.Value.LoadSoundEffect(); 62 | } 63 | } 64 | 65 | public void UnloadContent() { 66 | 67 | } 68 | 69 | public SoundEffectInstance PlaySoundEffect(SoundEffects soundEffect, bool looping, Vector2 location) { 70 | SoundEffectInstance soundInstance = soundEffectList[soundEffect].soundEffect.CreateInstance(); 71 | if (soundInstance != null) { 72 | soundInstance.Volume = GetSoundVolume() * soundEffectList[soundEffect].soundEffectVolume; 73 | soundInstance.IsLooped = looping; 74 | soundInstance.Pitch = GetSoundPitch(); 75 | soundInstance.Pan = GetSoundPan(location); 76 | soundInstance.Play(); 77 | } 78 | 79 | return soundInstance; 80 | } 81 | 82 | private float GetSoundVolume() { 83 | return 0.2f * AudioConfig.soundEffectVolume; 84 | } 85 | 86 | private float GetSoundPitch() { 87 | return 0.0f; 88 | } 89 | 90 | private float GetSoundPan(Vector2 location) { 91 | if (location == zeroPanVectorLocation) { 92 | return 0.0f; 93 | } else { 94 | return (location.X / ResolutionConfig.virtualResolution.Item1) * 2.0f - 1.0f; 95 | } 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Code/Code/Main/GlobalTextures.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace AsymptoticMonoGameFramework { 5 | 6 | public static class GlobalTextures { 7 | 8 | public static Texture2D waitingForControlsInput; 9 | 10 | public static void LoadContent() { 11 | waitingForControlsInput = Globals.content.Load("Controls/waiting-for-input"); 12 | } 13 | 14 | public static void UnloadContent() { 15 | 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Code/Code/Main/Globals.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | using Microsoft.Xna.Framework.Content; 4 | 5 | namespace AsymptoticMonoGameFramework{ 6 | 7 | public static class Globals { 8 | 9 | public static StartMenuesManager startMenuesManager; 10 | public static LoadingScreenManager loadingScreenManager; 11 | public static GameplayManager gameplayManager; 12 | public static SongManager songManager; 13 | public static SoundEffectsManager soundEffectsManager; 14 | 15 | public static ContentManager content; 16 | public static GameWindow gameWindow; 17 | public static Game1 gameInstance; 18 | 19 | public static Random random = new Random(); 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Code/Code/Main/HelperFunctions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | using Microsoft.Xna.Framework.Graphics; 4 | 5 | namespace AsymptoticMonoGameFramework 6 | { 7 | public static class HelperFunctions { 8 | public static double RoundFloat(float value, int decPlaces) { 9 | double baseValue = Math.Pow(10f, decPlaces); 10 | return Math.Round(value * baseValue) / baseValue; 11 | } 12 | 13 | public static bool RectInRect(Rectangle rect1, Rectangle rect2) { 14 | if (rect1.X + rect1.Size.X < rect2.X) 15 | return false; 16 | if (rect1.X > rect2.X + rect2.Size.X) 17 | return false; 18 | if (rect1.Y + rect1.Size.Y < rect2.Y) 19 | return false; 20 | if (rect1.Y > rect2.Y + rect2.Size.Y) 21 | return false; 22 | 23 | return true; 24 | } 25 | 26 | public static bool ObjectInRect(Vector2 position, Vector2 size, Rectangle rectangle) { 27 | if (position.X + size.X < rectangle.X) 28 | return false; 29 | if (position.X > rectangle.X + rectangle.Size.X) 30 | return false; 31 | if (position.Y + size.Y < rectangle.Y) 32 | return false; 33 | if (position.Y > rectangle.Y + rectangle.Size.Y) 34 | return false; 35 | 36 | return true; 37 | } 38 | 39 | public static Vector2 SizeOfString(SpriteFont font, string text) { 40 | return font.MeasureString(text); 41 | } 42 | 43 | public static float Clamp(float value, float min, float max) { 44 | if(value < min) { 45 | return min; 46 | }else if(value > max) { 47 | return max; 48 | } else { 49 | return value; 50 | } 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/GameplayMenues/AudioSettingsMenu.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.Xna.Framework.Graphics; 4 | using Microsoft.Xna.Framework; 5 | 6 | namespace AsymptoticMonoGameFramework { 7 | 8 | public class AudioSettingsMenu : MenuScreen { 9 | 10 | private MenuLabel musicVolumeLabel; 11 | private MenuLabel soundEffectsVolumeLabel; 12 | 13 | private MenuSlider musicVolumeSlider; 14 | private MenuSlider soundEffectsVolumeSlider; 15 | private MenuButton applyChangesButton; 16 | private MenuButton backButton; 17 | 18 | private Texture2D menuBackground; 19 | 20 | private float originalMusicVolumeValue; 21 | private float originalSoundEffectsVolumeValue; 22 | 23 | public AudioSettingsMenu() { 24 | originalMusicVolumeValue = AudioConfig.musicVolume; 25 | originalSoundEffectsVolumeValue = AudioConfig.soundEffectVolume; 26 | } 27 | 28 | public AudioSettingsMenu(MenuScreen _parentMenu) : base(_parentMenu) { 29 | originalMusicVolumeValue = AudioConfig.musicVolume; 30 | originalSoundEffectsVolumeValue = AudioConfig.soundEffectVolume; 31 | } 32 | 33 | public override void MenuScreenOpened() { 34 | base.MenuScreenOpened(); 35 | originalMusicVolumeValue = AudioConfig.musicVolume; 36 | originalSoundEffectsVolumeValue = AudioConfig.soundEffectVolume; 37 | musicVolumeSlider.value = originalMusicVolumeValue; 38 | soundEffectsVolumeSlider.value = originalSoundEffectsVolumeValue; 39 | } 40 | 41 | public override void LoadContent() { 42 | menuBackground = Globals.content.Load("Menues/PauseMenu/pause-menu-background"); 43 | 44 | Vector2 buttonSize = new Vector2(400, 80); 45 | 46 | musicVolumeLabel = new MenuLabel( 47 | Globals.content.Load("Fonts/arial-bold-28"), 48 | new Vector2(ResolutionConfig.virtualResolution.Item1 / 2, 420), 49 | MusicVolumeLabelText(), 50 | CustomColors.veryLightOrange 51 | ); 52 | 53 | soundEffectsVolumeLabel = new MenuLabel( 54 | Globals.content.Load("Fonts/arial-bold-28"), 55 | new Vector2(ResolutionConfig.virtualResolution.Item1 / 2, 550), 56 | SoundEffectVolumeLabelText(), 57 | CustomColors.veryLightOrange 58 | ); 59 | 60 | musicVolumeSlider = new MenuSlider(new Vector2(660, 450), this, AudioConfig.musicVolume); 61 | soundEffectsVolumeSlider = new MenuSlider(new Vector2(660, 580), this, AudioConfig.soundEffectVolume); 62 | soundEffectsVolumeSlider.soundEffectOnSliderChange = true; 63 | 64 | applyChangesButton = new MenuButton( 65 | new Vector2(760, 680), 66 | this, 67 | buttonSize, 68 | "Apply Changes" 69 | ); 70 | 71 | backButton = new MenuButton( 72 | new Vector2(760, 780), 73 | this, 74 | buttonSize, 75 | "Back" 76 | ); 77 | 78 | labelList.Add(musicVolumeLabel); 79 | labelList.Add(soundEffectsVolumeLabel); 80 | 81 | buttonList.Add(musicVolumeSlider); 82 | buttonList.Add(soundEffectsVolumeSlider); 83 | buttonList.Add(applyChangesButton); 84 | buttonList.Add(backButton); 85 | } 86 | 87 | public override void UnloadContent() { 88 | 89 | } 90 | 91 | public override void Update(GameTime gameTime) { 92 | base.Update(gameTime); 93 | AudioConfig.musicVolume = musicVolumeSlider.value; 94 | AudioConfig.soundEffectVolume = soundEffectsVolumeSlider.value; 95 | 96 | musicVolumeLabel.text = MusicVolumeLabelText(); 97 | soundEffectsVolumeLabel.text = SoundEffectVolumeLabelText(); 98 | 99 | if (AudioConfig.musicVolume != originalMusicVolumeValue || AudioConfig.soundEffectVolume != originalSoundEffectsVolumeValue) { 100 | backButton.buttonTextLabel.text = "Discard Changes"; 101 | } else { 102 | backButton.buttonTextLabel.text = "Back"; 103 | } 104 | } 105 | 106 | protected override void BackPressed() { 107 | AudioConfig.SaveAudioSettings(); 108 | currentlySelectedButtonIndex = 0; 109 | parentMenu.CloseSubMenu(); 110 | } 111 | 112 | public override void ButtonClicked(MenuButton button) { 113 | base.ButtonClicked(button); 114 | if(button == applyChangesButton) { 115 | ApplyChangesButtonPressed(); 116 | } else if (button == backButton) { 117 | BackButtonPressed(); 118 | } 119 | } 120 | 121 | private void ApplyChangesButtonPressed() { 122 | originalMusicVolumeValue = AudioConfig.musicVolume; 123 | originalSoundEffectsVolumeValue = AudioConfig.soundEffectVolume; 124 | BackPressed(); 125 | } 126 | 127 | private void BackButtonPressed() { 128 | AudioConfig.musicVolume = originalMusicVolumeValue; 129 | musicVolumeSlider.value = originalMusicVolumeValue; 130 | AudioConfig.soundEffectVolume = originalSoundEffectsVolumeValue; 131 | soundEffectsVolumeSlider.value = originalSoundEffectsVolumeValue; 132 | BackPressed(); 133 | } 134 | 135 | public override void Draw(SpriteBatch spriteBatch) { 136 | spriteBatch.Draw(menuBackground, new Rectangle(320, 180, 1280, 720), currentSubMenuScreenIndex >= 0 ? CustomColors.darkerGray : Color.White); 137 | base.Draw(spriteBatch); 138 | } 139 | 140 | private string MusicVolumeLabelText() { 141 | return "Music Volume: " + HelperFunctions.RoundFloat((AudioConfig.musicVolume * 100.0f), 0); 142 | } 143 | 144 | private string SoundEffectVolumeLabelText() { 145 | return "Sound Effects Volume: " + HelperFunctions.RoundFloat((AudioConfig.soundEffectVolume * 100.0f), 0); 146 | } 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/GameplayMenues/ControlsMenu.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.Xna.Framework.Graphics; 4 | using Microsoft.Xna.Framework; 5 | 6 | namespace AsymptoticMonoGameFramework { 7 | 8 | public class ControlsMenu : ScrollingMenuScreen { 9 | 10 | private MenuButton backButton; 11 | private MenuButton[] gamepadControlsButton; 12 | private MenuButton keyboardControlsButton; 13 | private GamepadControlsMenu[] gamepadControlsMenu; 14 | private KeyboardControlsMenu keyboardControlsMenu; 15 | 16 | public ControlsMenu() { 17 | gamepadControlsButton = new MenuButton[ControlsConfig.numGamepads]; 18 | gamepadControlsMenu = new GamepadControlsMenu[ControlsConfig.numGamepads]; 19 | } 20 | 21 | public ControlsMenu(MenuScreen _parentMenu) : base(_parentMenu) { 22 | gamepadControlsButton = new MenuButton[ControlsConfig.numGamepads]; 23 | gamepadControlsMenu = new GamepadControlsMenu[ControlsConfig.numGamepads]; 24 | } 25 | 26 | private void Setup() { 27 | buttonSize = MenuButton.buttonSize + new Vector2(0, 12); 28 | buttonPadding = 4; 29 | } 30 | 31 | public override void LoadContent() { 32 | base.LoadContent(); 33 | 34 | for (int i = 0; i < ControlsConfig.numGamepads; i++) { 35 | gamepadControlsButton[i] = new MenuButton( 36 | new Vector2(), 37 | this, 38 | buttonSize, 39 | "Player " + (i+1) + " Gamepad" 40 | ); 41 | AddButton(gamepadControlsButton[i]); 42 | 43 | gamepadControlsMenu[i] = new GamepadControlsMenu(this, i); 44 | gamepadControlsMenu[i].LoadContent(); 45 | subMenues.Add(gamepadControlsMenu[i]); 46 | } 47 | 48 | keyboardControlsButton = new MenuButton( 49 | new Vector2(), 50 | this, 51 | buttonSize, 52 | "Keyboard" 53 | ); 54 | AddButton(keyboardControlsButton); 55 | 56 | keyboardControlsMenu = new KeyboardControlsMenu(this); 57 | keyboardControlsMenu.LoadContent(); 58 | subMenues.Add(keyboardControlsMenu); 59 | 60 | backButton = new MenuButton( 61 | new Vector2(), 62 | this, 63 | buttonSize, 64 | "Back" 65 | ); 66 | 67 | AddButton(backButton); 68 | } 69 | 70 | public override void UnloadContent() { 71 | 72 | } 73 | 74 | protected override void BackPressed() { 75 | currentlySelectedButtonIndex = 0; 76 | parentMenu.CloseSubMenu(); 77 | } 78 | 79 | public override void ButtonClicked(MenuButton button) { 80 | base.ButtonClicked(button); 81 | if (button == backButton) { 82 | BackButtonPressed(); 83 | }else if(ButtonIsGamepadControlsButton(button) >= 0) { 84 | GamepadControlsButtonPressed(ButtonIsGamepadControlsButton(button)); 85 | }else if(button == keyboardControlsButton) { 86 | KeyboardControlsButtonPressed(); 87 | } 88 | } 89 | 90 | private void BackButtonPressed() { 91 | BackPressed(); 92 | } 93 | 94 | private void GamepadControlsButtonPressed(int index) { 95 | currentSubMenuScreenIndex = index; 96 | gamepadControlsMenu[index].MenuScreenOpened(); 97 | } 98 | 99 | private void KeyboardControlsButtonPressed() { 100 | currentSubMenuScreenIndex = subMenues.IndexOf(keyboardControlsMenu); 101 | keyboardControlsMenu.MenuScreenOpened(); 102 | } 103 | 104 | public override void Draw(SpriteBatch spriteBatch) { 105 | base.Draw(spriteBatch); 106 | } 107 | 108 | public void UpdateAllControlsButtonImages() { 109 | foreach(GamepadControlsMenu gamepadMenu in gamepadControlsMenu) { 110 | gamepadMenu.UpdateAllButtonImages(); 111 | } 112 | keyboardControlsMenu.UpdateAllButtonImages(); 113 | } 114 | 115 | public bool CurrentlySettingControl() { 116 | foreach(GamepadControlsMenu gamepadMenu in gamepadControlsMenu) { 117 | if (gamepadMenu.CurrentlySettingControl()) { 118 | return true; 119 | } 120 | } 121 | if (keyboardControlsMenu.CurrentlySettingControl()) { 122 | return true; 123 | } 124 | return false; 125 | } 126 | 127 | private int ButtonIsGamepadControlsButton(MenuButton button) { 128 | for(int i = 0; i < gamepadControlsButton.Length; i++) { 129 | MenuButton gamepadButton = gamepadControlsButton[i]; 130 | if(button == gamepadButton) { 131 | return i; 132 | } 133 | } 134 | return -1; 135 | } 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/GameplayMenues/GameUI.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | using Microsoft.Xna.Framework.Graphics; 4 | using Microsoft.Xna.Framework.Audio; 5 | 6 | namespace AsymptoticMonoGameFramework { 7 | 8 | public class GameUI { 9 | 10 | public GameUI() { 11 | 12 | } 13 | 14 | public void LoadContent() { 15 | 16 | } 17 | 18 | public void UnloadContent() { 19 | 20 | } 21 | 22 | public void Update(GameTime gameTime) { 23 | 24 | } 25 | 26 | public void Draw(SpriteBatch spriteBatch) { 27 | 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/GameplayMenues/PauseMenu.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.Xna.Framework; 4 | using Microsoft.Xna.Framework.Graphics; 5 | 6 | namespace AsymptoticMonoGameFramework 7 | { 8 | public class PauseMenu : MenuScreen 9 | { 10 | private MenuButton continueButton; 11 | private MenuButton graphicalSettingsButton; 12 | private MenuButton audioSettingsButton; 13 | private MenuButton controlsButton; 14 | private MenuButton exitButton; 15 | 16 | private Texture2D backgroundTint; 17 | private Texture2D menuBackground; 18 | 19 | private GraphicalSettingsMenu graphicalSettingsMenu; 20 | private AudioSettingsMenu audioSettingsMenu; 21 | public ControlsMenu controlsMenu; 22 | 23 | public PauseMenu() { 24 | 25 | } 26 | 27 | public PauseMenu(MenuScreen _parentMenu) : base(_parentMenu) { 28 | 29 | } 30 | 31 | public override void LoadContent() { 32 | backgroundTint = Globals.content.Load("Menues/MenuHelpers/menu-tint"); 33 | menuBackground = Globals.content.Load("Menues/PauseMenu/pause-menu-background"); 34 | 35 | Vector2 buttonSize = new Vector2(400, 80); 36 | 37 | continueButton = new MenuButton( 38 | new Vector2(760, 380), 39 | this, 40 | buttonSize, 41 | "Continue" 42 | ); 43 | 44 | graphicalSettingsButton = new MenuButton( 45 | new Vector2(760, 480), 46 | this, 47 | buttonSize, 48 | "Graphical Settings" 49 | ); 50 | 51 | audioSettingsButton = new MenuButton( 52 | new Vector2(760, 580), 53 | this, 54 | buttonSize, 55 | "Audio Settings" 56 | ); 57 | 58 | controlsButton = new MenuButton( 59 | new Vector2(760, 680), 60 | this, 61 | buttonSize, 62 | "Controls" 63 | ); 64 | 65 | exitButton = new MenuButton( 66 | new Vector2(760, 780), 67 | this, 68 | buttonSize, 69 | "Exit" 70 | ); 71 | 72 | buttonList.Add(continueButton); 73 | buttonList.Add(graphicalSettingsButton); 74 | buttonList.Add(audioSettingsButton); 75 | buttonList.Add(controlsButton); 76 | buttonList.Add(exitButton); 77 | 78 | graphicalSettingsMenu = new GraphicalSettingsMenu(this); 79 | audioSettingsMenu = new AudioSettingsMenu(this); 80 | controlsMenu = new ControlsMenu(this); 81 | 82 | subMenues.Add(graphicalSettingsMenu); 83 | subMenues.Add(audioSettingsMenu); 84 | subMenues.Add(controlsMenu); 85 | 86 | foreach(MenuScreen subMenu in subMenues) { 87 | subMenu.LoadContent(); 88 | } 89 | } 90 | 91 | public override void UnloadContent() { 92 | 93 | } 94 | 95 | protected override void BackPressed() { 96 | currentlySelectedButtonIndex = 0; 97 | Globals.gameplayManager.gameFlow.UnpauseGame(); 98 | } 99 | 100 | public override void ButtonClicked(MenuButton button) { 101 | base.ButtonClicked(button); 102 | if (button == continueButton) { 103 | ContinueButtonPressed(); 104 | } else if (button == graphicalSettingsButton) { 105 | GraphicalSettingsButtonPressed(); 106 | } else if(button == audioSettingsButton) { 107 | AudioSettingsButtonPressed(); 108 | } else if(button == controlsButton) { 109 | ControlsButtonPressed(); 110 | } else if(button == exitButton) { 111 | ExitButtonPressed(); 112 | } 113 | } 114 | 115 | private void ContinueButtonPressed() { 116 | BackPressed(); 117 | } 118 | 119 | private void GraphicalSettingsButtonPressed() { 120 | for(int i = 0; i < subMenues.Count; i++) { 121 | if(subMenues[i] == graphicalSettingsMenu) { 122 | currentSubMenuScreenIndex = i; 123 | } 124 | } 125 | graphicalSettingsMenu.MenuScreenOpened(); 126 | } 127 | 128 | private void AudioSettingsButtonPressed() { 129 | for (int i = 0; i < subMenues.Count; i++) { 130 | if (subMenues[i] == audioSettingsMenu) { 131 | currentSubMenuScreenIndex = i; 132 | } 133 | } 134 | audioSettingsMenu.MenuScreenOpened(); 135 | } 136 | 137 | private void ControlsButtonPressed() { 138 | for (int i = 0; i < subMenues.Count; i++) { 139 | if (subMenues[i] == controlsMenu) { 140 | currentSubMenuScreenIndex = i; 141 | } 142 | } 143 | controlsMenu.MenuScreenOpened(); 144 | } 145 | 146 | private void ExitButtonPressed() { 147 | Globals.gameInstance.ExitGameplay(); 148 | } 149 | 150 | public override void Draw(SpriteBatch spriteBatch) { 151 | spriteBatch.Draw(backgroundTint, new Rectangle(0, 0, ResolutionConfig.virtualResolution.Item1, ResolutionConfig.virtualResolution.Item2), Color.White); 152 | spriteBatch.Draw(menuBackground, new Rectangle(320, 180, 1280, 720), currentSubMenuScreenIndex >= 0 ? CustomColors.darkerGray : Color.White); 153 | base.Draw(spriteBatch); 154 | } 155 | } 156 | } 157 | 158 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/GameplayMenues/ResolutionSelectionMenu.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.Xna.Framework.Graphics; 4 | using Microsoft.Xna.Framework; 5 | 6 | namespace AsymptoticMonoGameFramework { 7 | 8 | public class ResolutionSelectionMenu : ScrollingMenuScreen { 9 | 10 | public ResolutionSelectionMenu() { 11 | Setup(); 12 | } 13 | 14 | public ResolutionSelectionMenu(MenuScreen _parentMenu) : base(_parentMenu) { 15 | Setup(); 16 | } 17 | 18 | public void SetIndex(int index) { 19 | currentlySelectedButtonIndex = index; 20 | } 21 | 22 | private void Setup() { 23 | scrollAmount = 70; 24 | menuSize = new Vector2(960, 540); 25 | menuPadding = 60; 26 | buttonSize = new Vector2(300, 60); 27 | buttonPadding = 5; 28 | } 29 | 30 | public override void LoadContent() { 31 | base.LoadContent(); 32 | 33 | for (int i = 0; i < ResolutionConfig.validResolutionOptions.Count; i++) { 34 | AddButton(new MenuButton( 35 | new Vector2(), 36 | this, 37 | buttonSize, 38 | ResolutionConfig.validResolutionOptions[i].Item1 + " x " + ResolutionConfig.validResolutionOptions[i].Item2 39 | )); 40 | } 41 | SetIndex(ResolutionConfig.currentResolutionIndex); 42 | } 43 | 44 | public override void UnloadContent() { 45 | 46 | } 47 | 48 | public override void Update(GameTime gameTime) { 49 | base.Update(gameTime); 50 | } 51 | 52 | public override void ButtonClicked(MenuButton button) { 53 | base.ButtonClicked(button); 54 | for (int i = 0; i < buttonList.Count; i++) { 55 | if(button == buttonList[i]) { 56 | ((GraphicalSettingsMenu) parentMenu).SetCurrentResolutionIndex(i); 57 | parentMenu.CloseSubMenu(); 58 | } 59 | } 60 | } 61 | 62 | protected override void BackPressed() { 63 | SetIndex(((GraphicalSettingsMenu)parentMenu).currentResolutionIndex); 64 | parentMenu.CloseSubMenu(); 65 | } 66 | 67 | public override void Draw(SpriteBatch spriteBatch) { 68 | base.Draw(spriteBatch); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/MenuHelperClasses/GamepadControlsMenuButton.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.Xna.Framework; 4 | using Microsoft.Xna.Framework.Graphics; 5 | using Microsoft.Xna.Framework.Input; 6 | 7 | namespace AsymptoticMonoGameFramework { 8 | 9 | public enum GamepadControlsMenuButtonType { 10 | Button, 11 | Toggle, 12 | JoystickOption 13 | }; 14 | 15 | public class GamepadControlsMenuButton : MenuButtonWithImage { 16 | 17 | public string controlsTKey; 18 | public int controllerIndex; 19 | 20 | public GamepadControlsMenuButtonType buttonType; 21 | 22 | public GamepadControlsMenuButton(Vector2 _position, MenuScreen _menuScreen, Vector2 _size, string _buttonText, int _input) : base(_position, _menuScreen, _size, _buttonText, GetTextureFromInput(_input)) { 23 | Setup(_buttonText, _input); 24 | } 25 | 26 | public GamepadControlsMenuButton(Vector2 _position, MenuScreen _menuScreen, Vector2 _size, string _buttonText, SpriteFont font, int _input) : base(_position, _menuScreen, _size, _buttonText, font, GetTextureFromInput(_input)) { 27 | Setup(_buttonText, _input); 28 | } 29 | 30 | private void Setup(string _buttonText, int _input) { 31 | controlsTKey = _buttonText; 32 | SetSideImageSize(_input); 33 | if (ControlsConfig.IsInputJoystickOptions(_input)) { 34 | buttonType = GamepadControlsMenuButtonType.JoystickOption; 35 | } else if (ControlsConfig.IsInputToggleOptions(_input)) { 36 | buttonType = GamepadControlsMenuButtonType.Toggle; 37 | } else { 38 | buttonType = GamepadControlsMenuButtonType.Button; 39 | } 40 | } 41 | 42 | private void SetSideImageSize(int _input) { 43 | sideImageSize = new Vector2(80f, 80f); 44 | Texture2D texture = GetTextureFromInput(_input); 45 | sideImageSize = new Vector2(HelperFunctions.Clamp(sideImageSize.Y * texture.Width / texture.Height, 40, 200), sideImageSize.Y); 46 | image = texture; 47 | } 48 | 49 | public void SetNewInput(Buttons button) { 50 | SetSideImageSize((int)button); 51 | ControlsConfig.gamepadControls[controlsTKey][controllerIndex] = (int)button; 52 | } 53 | 54 | public void SetNewInput(JoystickOptions joystickOption) { 55 | SetSideImageSize((int)joystickOption); 56 | ControlsConfig.gamepadControls[controlsTKey][controllerIndex] = (int)joystickOption; 57 | } 58 | 59 | public void SetNewInput(bool toggleValue) { 60 | SetSideImageSize(toggleValue ? (int)ToggleOptions.True : (int)ToggleOptions.False); 61 | ControlsConfig.gamepadControls[controlsTKey][controllerIndex] = toggleValue ? (int)ToggleOptions.True : (int)ToggleOptions.False; 62 | } 63 | 64 | public void SetWaitingForInput() { 65 | sideImageSize = new Vector2(80f, 80f); 66 | image = GlobalTextures.waitingForControlsInput; 67 | } 68 | 69 | public void UpdateImage() { 70 | SetSideImageSize(ControlsConfig.gamepadControls[controlsTKey][controllerIndex]); 71 | } 72 | 73 | public static Texture2D GetTextureFromInput(int _input) { 74 | switch (_input) { 75 | case (int)Buttons.A: 76 | return Globals.content.Load("Controls/Buttons/a"); 77 | case (int)Buttons.B: 78 | return Globals.content.Load("Controls/Buttons/b"); 79 | case (int)Buttons.X: 80 | return Globals.content.Load("Controls/Buttons/x"); 81 | case (int)Buttons.Y: 82 | return Globals.content.Load("Controls/Buttons/y"); 83 | case (int)Buttons.RightShoulder: 84 | return Globals.content.Load("Controls/Buttons/right-bumper"); 85 | case (int)Buttons.LeftShoulder: 86 | return Globals.content.Load("Controls/Buttons/left-bumper"); 87 | case (int)Buttons.RightTrigger: 88 | return Globals.content.Load("Controls/Buttons/right-trigger"); 89 | case (int)Buttons.LeftTrigger: 90 | return Globals.content.Load("Controls/Buttons/left-trigger"); 91 | case (int)Buttons.Start: 92 | return Globals.content.Load("Controls/Buttons/start"); 93 | case (int)Buttons.Back: 94 | return Globals.content.Load("Controls/Buttons/back"); 95 | case (int)Buttons.DPadUp: 96 | return Globals.content.Load("Controls/Buttons/dpad-up"); 97 | case (int)Buttons.DPadDown: 98 | return Globals.content.Load("Controls/Buttons/dpad-down"); 99 | case (int)Buttons.DPadLeft: 100 | return Globals.content.Load("Controls/Buttons/dpad-left"); 101 | case (int)Buttons.DPadRight: 102 | return Globals.content.Load("Controls/Buttons/dpad-right"); 103 | case (int)Buttons.LeftStick: 104 | return Globals.content.Load("Controls/Buttons/left-stick-press"); 105 | case (int)Buttons.RightStick: 106 | return Globals.content.Load("Controls/Buttons/right-stick-press"); 107 | case (int)JoystickOptions.Left: 108 | return Globals.content.Load("Controls/Buttons/left-stick"); 109 | case (int)JoystickOptions.Right: 110 | return Globals.content.Load("Controls/Buttons/right-stick"); 111 | case (int)ToggleOptions.True: 112 | return Globals.content.Load("Controls/Checkbox/true"); 113 | case (int)ToggleOptions.False: 114 | return Globals.content.Load("Controls/Checkbox/false"); 115 | default: 116 | break; 117 | } 118 | 119 | Console.WriteLine("Input Not found: Input " + _input); 120 | return Globals.content.Load("Controls/input-not-found"); 121 | } 122 | 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/MenuHelperClasses/MenuButton.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace AsymptoticMonoGameFramework 5 | { 6 | public class MenuButton : MenuSelection{ 7 | 8 | public static Vector2 buttonSize = new Vector2(400, 80); 9 | 10 | public MenuLabel buttonTextLabel; 11 | 12 | public MenuButton(Vector2 _position, MenuScreen _menuScreen, Vector2 _size, string _buttonText) : base(_position, _menuScreen, _size, buttonSize) { 13 | texture = Globals.content.Load("Menues/MenuHelpers/menu-button-blank"); 14 | buttonTextLabel = new MenuLabel( 15 | Globals.content.Load("Fonts/arial-bold-28"), 16 | new Vector2(_position.X + _size.X / 2, _position.Y + _size.Y / 2), 17 | _buttonText, 18 | CustomColors.veryLightOrange 19 | ); 20 | } 21 | 22 | public MenuButton(Vector2 _position, MenuScreen _menuScreen, Vector2 _size, string _buttonText, SpriteFont font) : base(_position, _menuScreen, _size, buttonSize) { 23 | texture = Globals.content.Load("Menues/MenuHelpers/menu-button-blank"); 24 | buttonTextLabel = new MenuLabel( 25 | font, 26 | new Vector2(_position.X + _size.X / 2, _position.Y + _size.Y / 2), 27 | _buttonText, 28 | CustomColors.veryLightOrange 29 | ); 30 | } 31 | 32 | public MenuButton(Vector2 _position, MenuScreen _menuScreen, Vector2 _size, string _buttonText, Texture2D _texture) : base(_position, _menuScreen, _size, buttonSize) { 33 | texture = _texture; 34 | buttonTextLabel = new MenuLabel( 35 | Globals.content.Load("Fonts/arial-bold-28"), 36 | new Vector2(_position.X + _size.X / 2, _position.Y + _size.Y / 2), 37 | _buttonText, 38 | CustomColors.veryLightOrange 39 | ); 40 | } 41 | 42 | public override void Update(GameTime gameTime) { 43 | if (selected && menuScreen != null && selectable && enabled && inScrollView && 44 | ((PlayerControls.MouseLeftPressed() && BoundingRect().Contains(PlayerControls.MousePosition())) || 45 | GlobalControls.ConfirmPressed() || PlayerControls.ConfirmPressed(ControlsConfig.keyboardControllerIndex))) { 46 | SelectionClicked(); 47 | menuScreen.ButtonClicked(this); 48 | Globals.soundEffectsManager.PlaySoundEffect(SoundEffects.MenuConfirm, false, SoundEffectsManager.zeroPanVectorLocation); 49 | } 50 | } 51 | 52 | public override void Draw(SpriteBatch spriteBatch) { 53 | base.Draw(spriteBatch); 54 | if(buttonTextLabel.text != "") { 55 | buttonTextLabel.centerPosition = new Vector2(position.X + size.X / 2, position.Y + size.Y / 2); 56 | buttonTextLabel.transparency = transparency; 57 | buttonTextLabel.enabled = selectable; 58 | buttonTextLabel.Draw(spriteBatch); 59 | } 60 | } 61 | 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/MenuHelperClasses/MenuButtonSideScroll.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.Xna.Framework; 4 | using Microsoft.Xna.Framework.Graphics; 5 | 6 | namespace AsymptoticMonoGameFramework 7 | { 8 | public class MenuButtonSideScroll : MenuButton { 9 | 10 | public int selectionIndex; 11 | 12 | private string[] selectionOptions; 13 | private Texture2D selectionArrow; 14 | private int selectionArrowColor; 15 | 16 | public MenuButtonSideScroll(Vector2 _position, MenuScreen _menuScreen, Vector2 _size, string[] _selectionOptions, int _selectionIndex) : base(_position, _menuScreen, _size, _selectionOptions[0]) { 17 | selectionOptions = _selectionOptions; 18 | selectionIndex = _selectionIndex; 19 | SetTextLabelToSelectionIndex(); 20 | selectionArrow = Globals.content.Load("Menues/MenuHelpers/menu-button-side-scroll-arrow"); 21 | } 22 | 23 | public MenuButtonSideScroll(Vector2 _position, MenuScreen _menuScreen, Vector2 _size, string[] _selectionOptions, int _selectionIndex, SpriteFont font) : base(_position, _menuScreen, _size, _selectionOptions[0], font) { 24 | selectionOptions = _selectionOptions; 25 | selectionIndex = _selectionIndex; 26 | SetTextLabelToSelectionIndex(); 27 | selectionArrow = Globals.content.Load("Menues/MenuHelpers/menu-button-side-scroll-arrow"); 28 | } 29 | 30 | public Rectangle LeftArrowBoundingRect() { 31 | return new Rectangle((int)position.X + 16, (int)position.Y + 24, 32, 32); 32 | } 33 | 34 | public Rectangle RightArrowBoundingRect() { 35 | return new Rectangle((int)position.X + (int)buttonSize.X - 16 - 32, (int)position.Y + 24, 32, 32); 36 | } 37 | 38 | public string GetSelectedValue() { 39 | return selectionOptions[selectionIndex]; 40 | } 41 | 42 | public void LeftArrowPressed() { 43 | selectionIndex--; 44 | SetTextLabelToSelectionIndex(); 45 | selectionArrowColor = -3; 46 | menuScreen.ButtonSideScrollScrolled(this, -1); 47 | Globals.soundEffectsManager.PlaySoundEffect(SoundEffects.MenuLeft, false, SoundEffectsManager.zeroPanVectorLocation); 48 | } 49 | 50 | public void RightArrowPressed() { 51 | selectionIndex++; 52 | SetTextLabelToSelectionIndex(); 53 | selectionArrowColor = 3; 54 | menuScreen.ButtonSideScrollScrolled(this, 1); 55 | Globals.soundEffectsManager.PlaySoundEffect(SoundEffects.MenuRight, false, SoundEffectsManager.zeroPanVectorLocation); 56 | } 57 | 58 | private void SetTextLabelToSelectionIndex() { 59 | if(selectionIndex > selectionOptions.Length - 1) { 60 | selectionIndex = 0; 61 | }else if(selectionIndex < 0) { 62 | selectionIndex = selectionOptions.Length - 1; 63 | } 64 | buttonTextLabel.text = selectionOptions[selectionIndex]; 65 | } 66 | 67 | public override void Update(GameTime gameTime) { 68 | if (selected && menuScreen != null && enabled && inScrollView) { 69 | if (((PlayerControls.MouseLeftPressed() && RightArrowBoundingRect().Contains(PlayerControls.MousePosition())) || 70 | GlobalControls.MenuRightPressed() || PlayerControls.MenuRightPressed(ControlsConfig.keyboardControllerIndex))) { 71 | RightArrowPressed(); 72 | } 73 | if (((PlayerControls.MouseLeftPressed() && LeftArrowBoundingRect().Contains(PlayerControls.MousePosition())) || 74 | GlobalControls.MenuLeftPressed() || PlayerControls.MenuLeftPressed(ControlsConfig.keyboardControllerIndex))) { 75 | LeftArrowPressed(); 76 | } 77 | } 78 | } 79 | 80 | public override void Draw(SpriteBatch spriteBatch) { 81 | base.Draw(spriteBatch); 82 | if (selectionArrowColor < 0) { 83 | spriteBatch.Draw(selectionArrow, LeftArrowBoundingRect(), null, Color.White * 0.3f * transparency, 0, Vector2.Zero, SpriteEffects.None, 0); //left arrow 84 | selectionArrowColor++; 85 | } else { 86 | spriteBatch.Draw(selectionArrow, LeftArrowBoundingRect(), null, CustomColors.veryLightOrange * transparency, 0, Vector2.Zero, SpriteEffects.None, 0); //left arrow 87 | } 88 | 89 | if (selectionArrowColor > 0) { 90 | spriteBatch.Draw(selectionArrow, RightArrowBoundingRect(), null, Color.White * 0.3f * transparency, 0, Vector2.Zero, SpriteEffects.FlipHorizontally, 0); //right arrow 91 | selectionArrowColor--; 92 | } else { 93 | spriteBatch.Draw(selectionArrow, RightArrowBoundingRect(), null, CustomColors.veryLightOrange * transparency, 0, Vector2.Zero, SpriteEffects.FlipHorizontally, 0); //right arrow 94 | } 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/MenuHelperClasses/MenuButtonWithImage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.Xna.Framework; 4 | using Microsoft.Xna.Framework.Graphics; 5 | 6 | namespace AsymptoticMonoGameFramework { 7 | public class MenuButtonWithImage : MenuButton { 8 | 9 | protected Vector2 sideImageSize = new Vector2(50f, 50f); 10 | private readonly int widthPadding = 10; 11 | 12 | protected Texture2D image; 13 | 14 | public MenuButtonWithImage(Vector2 _position, MenuScreen _menuScreen, Vector2 _size, string _buttonText, Texture2D _image) : base(_position, _menuScreen, _size, _buttonText) { 15 | SetImage(_image); 16 | } 17 | 18 | public MenuButtonWithImage(Vector2 _position, MenuScreen _menuScreen, Vector2 _size, string _buttonText, SpriteFont font, Texture2D _image) : base(_position, _menuScreen, _size, _buttonText, font) { 19 | SetImage(_image); 20 | } 21 | 22 | public void SetImage(Texture2D _image) { 23 | image = _image; 24 | } 25 | 26 | public override void Draw(SpriteBatch spriteBatch) { 27 | Rectangle sourceRect = selected ? SelectedSourceRect() : UnselectedSourceRect(); 28 | Color _color = enabled && selectable ? color : CustomColors.darkerGray; 29 | float _transparency = transparency; 30 | if (selectionColor > 0) { 31 | selectionColor--; 32 | _color = Color.White; 33 | _transparency = 0.3f; 34 | } 35 | 36 | spriteBatch.Draw(texture, BoundingRect(), sourceRect, _color * _transparency, 0, new Vector2(0, 0), SpriteEffects.None, 0); 37 | 38 | Vector2 sizeOfLabel = HelperFunctions.SizeOfString(buttonTextLabel.GetFont(), buttonTextLabel.text); 39 | if (buttonTextLabel.text != "") { 40 | buttonTextLabel.centerPosition = new Vector2(position.X + sizeOfLabel.X / 2 + widthPadding, position.Y + size.Y / 2); 41 | buttonTextLabel.transparency = _transparency; 42 | buttonTextLabel.enabled = selectable; 43 | buttonTextLabel.Draw(spriteBatch); 44 | } 45 | 46 | Color _imageColor = selectable ? color : CustomColors.darkerGray; 47 | spriteBatch.Draw(image, new Rectangle((int)(position.X + size.X - sideImageSize.X - widthPadding), (int)(position.Y + ((size.Y - sideImageSize.Y) / 2)), (int)sideImageSize.X, (int)sideImageSize.Y), _imageColor * _transparency); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/MenuHelperClasses/MenuImage.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace AsymptoticMonoGameFramework { 5 | 6 | public class MenuImage { 7 | 8 | public Vector2 position; 9 | private Texture2D texture; 10 | private Vector2 size; 11 | private Color color; 12 | 13 | public bool hidden = false; 14 | public bool enabled = true; 15 | 16 | public MenuImage(Texture2D _texture, Vector2 _position, Vector2 _size) { 17 | texture = _texture; 18 | position = _position; 19 | size = _size; 20 | color = Color.White; 21 | } 22 | 23 | public MenuImage(Texture2D _texture, Vector2 _position, Vector2 _size, Color _color) { 24 | texture = _texture; 25 | position = _position; 26 | size = _size; 27 | color = _color; 28 | } 29 | 30 | public void SetColor(Color _color) { 31 | color = _color; 32 | } 33 | 34 | public void SetSize(Vector2 _size) { 35 | size = _size; 36 | } 37 | 38 | public Vector2 GetSize() { 39 | return size; 40 | } 41 | 42 | public Rectangle BoundingRect() { 43 | return new Rectangle((int)position.X, (int)position.Y, (int)size.X, (int)size.Y); 44 | } 45 | 46 | public void Draw(SpriteBatch spriteBatch) { 47 | if (!hidden) { 48 | Color _color = enabled ? color : CustomColors.darkerGray; 49 | spriteBatch.Draw(texture, BoundingRect(), null, _color, 0, new Vector2(0, 0), SpriteEffects.None, 0); 50 | } 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/MenuHelperClasses/MenuLabel.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace AsymptoticMonoGameFramework { 5 | 6 | public enum TextAlignment { 7 | Left, 8 | Right, 9 | Center 10 | }; 11 | 12 | public class MenuLabel { 13 | 14 | private SpriteFont font; 15 | private Color color; 16 | private TextAlignment textAlignment; 17 | 18 | public Vector2 centerPosition; 19 | public string text; 20 | 21 | public bool hidden = false; 22 | public int stroke = 0; 23 | public float transparency; 24 | public bool enabled; 25 | 26 | public MenuLabel(SpriteFont _font, Vector2 _centerPosition, string _text) { 27 | font = _font; 28 | centerPosition = _centerPosition; 29 | text = _text; 30 | color = Color.Black; 31 | textAlignment = TextAlignment.Center; 32 | transparency = 1.0f; 33 | enabled = true; 34 | } 35 | 36 | public MenuLabel(SpriteFont _font, Vector2 _centerPosition, string _text, Color _color) { 37 | font = _font; 38 | centerPosition = _centerPosition; 39 | text = _text; 40 | color = _color; 41 | textAlignment = TextAlignment.Center; 42 | transparency = 1.0f; 43 | enabled = true; 44 | } 45 | 46 | public MenuLabel(SpriteFont _font, Vector2 _centerPosition, string _text, Color _color, int _stroke) { 47 | font = _font; 48 | centerPosition = _centerPosition; 49 | text = _text; 50 | color = _color; 51 | stroke = _stroke; 52 | textAlignment = TextAlignment.Center; 53 | transparency = 1.0f; 54 | enabled = true; 55 | } 56 | 57 | public MenuLabel(SpriteFont _font, Vector2 _centerPosition, string _text, Color _color, TextAlignment _textAlignment) { 58 | font = _font; 59 | centerPosition = _centerPosition; 60 | text = _text; 61 | color = _color; 62 | textAlignment = _textAlignment; 63 | transparency = 1.0f; 64 | enabled = true; 65 | } 66 | 67 | public void SetColor(Color _color) { 68 | color = _color; 69 | } 70 | 71 | public void SetFont(SpriteFont _font) { 72 | font = _font; 73 | } 74 | 75 | public SpriteFont GetFont() { 76 | return font; 77 | } 78 | 79 | public Vector2 FontOrigin() { 80 | if (textAlignment == TextAlignment.Right) { 81 | return new Vector2(SizeOfString().X, SizeOfString().Y / 2); 82 | } else if (textAlignment == TextAlignment.Left) { 83 | return new Vector2(0, SizeOfString().Y /2); 84 | } else { 85 | return new Vector2(SizeOfString().X / 2, SizeOfString().Y / 2); 86 | } 87 | } 88 | 89 | public Vector2 SizeOfString() { 90 | return HelperFunctions.SizeOfString(font, text); 91 | } 92 | 93 | public void Draw(SpriteBatch spriteBatch) { 94 | Color _color = enabled ? color : CustomColors.darkerGray; 95 | if (!hidden) { 96 | if(stroke > 0) { 97 | spriteBatch.DrawString(font, text, centerPosition + new Vector2(-stroke, -stroke), Color.Black * transparency, 0, FontOrigin(), 1.0f, SpriteEffects.None, 0); 98 | spriteBatch.DrawString(font, text, centerPosition + new Vector2(stroke, -stroke), Color.Black * transparency, 0, FontOrigin(), 1.0f, SpriteEffects.None, 0); 99 | spriteBatch.DrawString(font, text, centerPosition + new Vector2(-stroke, stroke), Color.Black * transparency, 0, FontOrigin(), 1.0f, SpriteEffects.None, 0); 100 | spriteBatch.DrawString(font, text, centerPosition + new Vector2(stroke, stroke), Color.Black * transparency, 0, FontOrigin(), 1.0f, SpriteEffects.None, 0); 101 | spriteBatch.DrawString(font, text, centerPosition + new Vector2(-stroke, 0), Color.Black * transparency, 0, FontOrigin(), 1.0f, SpriteEffects.None, 0); 102 | spriteBatch.DrawString(font, text, centerPosition + new Vector2(stroke, 0), Color.Black * transparency, 0, FontOrigin(), 1.0f, SpriteEffects.None, 0); 103 | spriteBatch.DrawString(font, text, centerPosition + new Vector2(0, -stroke), Color.Black * transparency, 0, FontOrigin(), 1.0f, SpriteEffects.None, 0); 104 | spriteBatch.DrawString(font, text, centerPosition + new Vector2(0, stroke), Color.Black * transparency, 0, FontOrigin(), 1.0f, SpriteEffects.None, 0); 105 | } 106 | spriteBatch.DrawString(font, text, centerPosition, _color * transparency, 0, FontOrigin(), 1.0f, SpriteEffects.None, 0); 107 | } 108 | } 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/MenuHelperClasses/MenuSelection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using Microsoft.Xna.Framework; 5 | using Microsoft.Xna.Framework.Graphics; 6 | 7 | namespace AsymptoticMonoGameFramework { 8 | 9 | public abstract class MenuSelection { 10 | 11 | public Texture2D texture; 12 | public Vector2 position; 13 | 14 | protected MenuScreen menuScreen; 15 | protected Vector2 size; 16 | protected Vector2 imageSize; 17 | protected Color color; 18 | 19 | public bool inScrollView; 20 | public bool selected; 21 | public bool selectable; 22 | public bool enabled; 23 | public float transparency; 24 | 25 | protected int selectionColor; 26 | 27 | public MenuSelection(Vector2 _position, MenuScreen _menuScreen, Vector2 _size, Vector2 _imageSize) { 28 | position = _position; 29 | menuScreen = _menuScreen; 30 | size = _size; 31 | imageSize = _imageSize; 32 | 33 | color = Color.White; 34 | inScrollView = true; 35 | selected = false; 36 | selectable = true; 37 | enabled = true; 38 | transparency = 1.0f; 39 | } 40 | 41 | public abstract void Update(GameTime gameTime); 42 | 43 | public void SelectionClicked() { 44 | selectionColor = 2; 45 | } 46 | 47 | public void SetColor(Color _color) { 48 | color = _color; 49 | } 50 | 51 | public virtual Rectangle BoundingRect() { 52 | return new Rectangle((int)position.X, (int)position.Y, (int)size.X, (int)size.Y); 53 | } 54 | 55 | protected virtual Rectangle UnselectedSourceRect() { 56 | return new Rectangle(0, 0, (int)imageSize.X, (int)imageSize.Y); 57 | } 58 | 59 | protected virtual Rectangle SelectedSourceRect() { 60 | return new Rectangle(0, (int)imageSize.Y, (int)imageSize.X, (int)imageSize.Y); 61 | } 62 | 63 | public virtual void Draw(SpriteBatch spriteBatch) { 64 | Rectangle sourceRect = selected ? SelectedSourceRect() : UnselectedSourceRect(); 65 | Color _color = enabled && selectable ? color : CustomColors.darkerGray; 66 | float _transparency = transparency; 67 | if(selectionColor > 0) { 68 | selectionColor--; 69 | _color = Color.White; 70 | _transparency = 0.5f; 71 | } 72 | spriteBatch.Draw(texture, BoundingRect(), sourceRect, _color * _transparency, 0, new Vector2(0, 0), SpriteEffects.None, 0); 73 | } 74 | 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/MenuHelperClasses/MenuSlider.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace AsymptoticMonoGameFramework { 5 | 6 | public class MenuSlider : MenuSelection { 7 | 8 | public static Vector2 sliderSize = new Vector2(600, 60); 9 | public static Vector2 handleImageSize = new Vector2(20, 60); 10 | 11 | public float value; 12 | 13 | private Texture2D handleTexture; 14 | private float valueIncrement = 0.05f; 15 | 16 | private bool mouseChangingValue = false; 17 | 18 | public bool soundEffectOnSliderChange = false; 19 | 20 | public MenuSlider(Vector2 _position, MenuScreen _menuScreen, float _value) : base(_position, _menuScreen, sliderSize, sliderSize) { 21 | value = _value; 22 | texture = Globals.content.Load("Menues/MenuHelpers/menu-slider"); 23 | handleTexture = Globals.content.Load("Menues/MenuHelpers/menu-slider-handle"); 24 | } 25 | 26 | public override void Update(GameTime gameTime) { 27 | bool inGame = Globals.gameInstance.gameState == GameState.inGame; 28 | if (selected) { 29 | if (GlobalControls.MenuLeftPressed()) { 30 | value -= valueIncrement; 31 | if (value < 0) { 32 | value = 0.0f; 33 | } 34 | if (soundEffectOnSliderChange) { 35 | Globals.soundEffectsManager.PlaySoundEffect(SoundEffects.MenuSlider, false, SoundEffectsManager.zeroPanVectorLocation); 36 | } 37 | } 38 | 39 | if (GlobalControls.MenuRightPressed()) { 40 | value += valueIncrement; 41 | if (value > 1) { 42 | value = 1.0f; 43 | } 44 | if (soundEffectOnSliderChange) { 45 | Globals.soundEffectsManager.PlaySoundEffect(SoundEffects.MenuSlider, false, SoundEffectsManager.zeroPanVectorLocation); 46 | } 47 | } 48 | 49 | if (PlayerControls.MouseLeftPressed() && BoundingRect().Contains(PlayerControls.MousePosition())) { 50 | mouseChangingValue = true; 51 | } 52 | 53 | if (mouseChangingValue && PlayerControls.MouseLeftDown()) { 54 | value = (PlayerControls.MousePosition().X - position.X) / size.X; 55 | if (value < 0) { 56 | value = 0; 57 | } else if (value > 1) { 58 | value = 1; 59 | } 60 | } else { 61 | if (mouseChangingValue && soundEffectOnSliderChange) { 62 | Globals.soundEffectsManager.PlaySoundEffect(SoundEffects.MenuSlider, false, SoundEffectsManager.zeroPanVectorLocation); 63 | } 64 | mouseChangingValue = false; 65 | } 66 | } 67 | } 68 | 69 | private Rectangle HandleBoundingRect() { 70 | return new Rectangle((int)(position.X + size.X * value - handleImageSize.X / 2), (int)position.Y, (int)handleImageSize.X, (int)handleImageSize.Y); 71 | } 72 | 73 | private Rectangle HandleUnselectedSourceRect() { 74 | return new Rectangle(0, 0, (int)handleImageSize.X, (int)handleImageSize.Y); 75 | } 76 | 77 | private Rectangle HandleSelectedSourceRect() { 78 | return new Rectangle(0, (int)handleImageSize.Y, (int)handleImageSize.X, (int)handleImageSize.Y); 79 | } 80 | 81 | public override void Draw(SpriteBatch spriteBatch) { 82 | base.Draw(spriteBatch); 83 | 84 | Rectangle sourceRect = selected ? HandleSelectedSourceRect() : HandleUnselectedSourceRect(); 85 | Color _color = enabled && selectable ? color : CustomColors.darkerGray; 86 | spriteBatch.Draw(handleTexture, HandleBoundingRect(), sourceRect, _color, 0, new Vector2(0, 0), SpriteEffects.None, 0); 87 | } 88 | 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/StartMenues/GameplaySettingsMenu.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.Xna.Framework; 4 | using Microsoft.Xna.Framework.Graphics; 5 | 6 | namespace AsymptoticMonoGameFramework { 7 | 8 | public class GameplaySettingsMenu : MenuScreen { 9 | 10 | private Texture2D background; 11 | 12 | private MenuLabel gameDifficultyTextLabel; 13 | private MenuButtonSideScroll gameplayDifficultySelection; 14 | 15 | private MenuButton beginGameButton; 16 | 17 | public GameplaySettingsMenu() { 18 | 19 | } 20 | 21 | public override void LoadContent() { 22 | background = Globals.content.Load("Menues/MainMenu/GameSettingsMenu/game-settings-menu-background"); 23 | 24 | gameDifficultyTextLabel = new MenuLabel( 25 | Globals.content.Load("Fonts/arial-40"), 26 | new Vector2(1920 / 2, 240), 27 | "Game Difficulty", 28 | Color.Black 29 | ); 30 | labelList.Add(gameDifficultyTextLabel); 31 | 32 | gameplayDifficultySelection = new MenuButtonSideScroll( 33 | new Vector2(1920/2 - MenuButton.buttonSize.X / 2, 310 - MenuButton.buttonSize.Y / 2), 34 | this, 35 | MenuButton.buttonSize, 36 | GameplaySettingsManager.gameplayDifficultiesFriendlyStrings, 37 | (int)GameplaySettingsManager.currentGameplayDifficulty 38 | ); 39 | buttonList.Add(gameplayDifficultySelection); 40 | 41 | beginGameButton = new MenuButton( 42 | new Vector2(1920 / 2 - MenuButton.buttonSize.X / 2 - 15, 420 - MenuButton.buttonSize.Y / 2 - 5), 43 | this, 44 | MenuButton.buttonSize + new Vector2(30, 10), 45 | "Begin Game", 46 | Globals.content.Load("Fonts/arial-bold-40") 47 | ); 48 | buttonList.Add(beginGameButton); 49 | } 50 | 51 | public override void UnloadContent() { 52 | 53 | } 54 | 55 | public override void ButtonClicked(MenuButton button) { 56 | base.ButtonClicked(button); 57 | if (button == beginGameButton) { 58 | BeginGameButtonPressed(); 59 | } 60 | } 61 | 62 | protected override void BackPressed() { 63 | Globals.startMenuesManager.startMenuesState = StartMenuesState.MainMenu; 64 | } 65 | 66 | private void BeginGameButtonPressed() { 67 | SetGameplayOptions(); 68 | Globals.startMenuesManager.LoadGameplay(); 69 | } 70 | 71 | public override void Update(GameTime gameTime) { 72 | base.Update(gameTime); 73 | } 74 | 75 | public override void Draw(SpriteBatch spriteBatch) { 76 | spriteBatch.Draw(background, new Rectangle(0, 0, ResolutionConfig.virtualResolution.Item1, ResolutionConfig.virtualResolution.Item2), Color.White); 77 | base.Draw(spriteBatch); 78 | } 79 | 80 | private void SetGameplayOptions() { 81 | GameplaySettingsManager.currentGameplayDifficulty = (GameplayDifficulty)gameplayDifficultySelection.selectionIndex; 82 | Console.WriteLine("" + GameplaySettingsManager.currentGameplayDifficulty); 83 | } 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/StartMenues/LoadingScreenManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using Microsoft.Xna.Framework; 4 | using Microsoft.Xna.Framework.Graphics; 5 | 6 | namespace AsymptoticMonoGameFramework 7 | { 8 | public class LoadingScreenManager { 9 | 10 | private AnimatedEntity loadingIcon; 11 | private Animation loadingAnimation; 12 | 13 | private Thread backgroundThread; 14 | 15 | public LoadingScreenManager() { 16 | 17 | } 18 | 19 | public void LoadContent() { 20 | loadingIcon = new AnimatedEntity(); 21 | loadingAnimation = new Animation("idle", true, 2, "Menues/MainMenu/loading-icon", string.Empty); 22 | loadingAnimation.LoadRectAnimation(600, 200, 1, 3); 23 | loadingIcon.AddAnimation(loadingAnimation); 24 | loadingIcon.PlayAnimation("idle"); 25 | } 26 | 27 | public void UnloadContent() { 28 | 29 | } 30 | 31 | public void Update(GameTime gameTime) { 32 | loadingIcon.Update(gameTime); 33 | if (!Globals.gameInstance.isLoading) { 34 | backgroundThread = new Thread(Globals.gameplayManager.LoadContent); 35 | Globals.gameInstance.isLoading = true; 36 | backgroundThread.Start(); 37 | } 38 | } 39 | 40 | public void Draw(SpriteBatch spriteBatch) { 41 | loadingIcon.Draw(spriteBatch, new Rectangle(1920 / 2 - 300, 1080 / 2 - 100, 600, 200)); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/StartMenues/MainMenu.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | using Microsoft.Xna.Framework.Graphics; 4 | using Microsoft.Xna.Framework.Input; 5 | 6 | namespace AsymptoticMonoGameFramework 7 | { 8 | public class MainMenu : MenuScreen{ 9 | 10 | private Texture2D background; 11 | 12 | private MenuButton startGameButton; 13 | private MenuButton settingsButton; 14 | private MenuButton exitGameButton; 15 | 16 | public MainMenuSettingsMenu mainMenuSettingsMenu; 17 | 18 | public MainMenu() { 19 | 20 | } 21 | 22 | public override void LoadContent() { 23 | background = Globals.content.Load("Menues/MainMenu/main-menu-background"); 24 | 25 | startGameButton = new MenuButton( 26 | new Vector2(760, 740), 27 | this, 28 | MenuButton.buttonSize, 29 | "", 30 | Globals.content.Load("Menues/MainMenu/main-menu-start-game-button") 31 | ); 32 | buttonList.Add(startGameButton); 33 | 34 | settingsButton = new MenuButton( 35 | new Vector2(760, 820), 36 | this, 37 | MenuButton.buttonSize, 38 | "", 39 | Globals.content.Load("Menues/MainMenu/main-menu-game-settings-button") 40 | ); 41 | buttonList.Add(settingsButton); 42 | 43 | exitGameButton = new MenuButton( 44 | new Vector2(760, 900), 45 | this, 46 | MenuButton.buttonSize, 47 | "", 48 | Globals.content.Load("Menues/MainMenu/main-menu-exit-button") 49 | ); 50 | buttonList.Add(exitGameButton); 51 | 52 | mainMenuSettingsMenu = new MainMenuSettingsMenu(this); 53 | subMenues.Add(mainMenuSettingsMenu); 54 | 55 | foreach (MenuScreen subMenu in subMenues) { 56 | subMenu.LoadContent(); 57 | } 58 | } 59 | 60 | public override void UnloadContent() { 61 | 62 | } 63 | 64 | private void StartGameButtonPressed() { 65 | Globals.startMenuesManager.LoadGameplaySettingsMenu(); 66 | } 67 | 68 | private void SettingsButtonPressed() { 69 | for (int i = 0; i < subMenues.Count; i++) { 70 | if (subMenues[i] == mainMenuSettingsMenu) { 71 | currentSubMenuScreenIndex = i; 72 | } 73 | } 74 | } 75 | 76 | private void ExitGameButtonPressed() { 77 | Globals.gameInstance.Exit(); 78 | } 79 | 80 | public override void ButtonClicked(MenuButton button) { 81 | base.ButtonClicked(button); 82 | if (button == startGameButton) { 83 | StartGameButtonPressed(); 84 | }else if(button == settingsButton) { 85 | SettingsButtonPressed(); 86 | }else if(button == exitGameButton) { 87 | ExitGameButtonPressed(); 88 | } 89 | } 90 | 91 | protected override void BackPressed() { 92 | //Do Nothing 93 | } 94 | 95 | public override void Draw(SpriteBatch spriteBatch) { 96 | spriteBatch.Draw(background, new Rectangle(0, 0, ResolutionConfig.virtualResolution.Item1, ResolutionConfig.virtualResolution.Item2), Color.White); 97 | base.Draw(spriteBatch); 98 | } 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/StartMenues/MainMenuSettingsMenu.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.Xna.Framework; 4 | using Microsoft.Xna.Framework.Graphics; 5 | 6 | namespace AsymptoticMonoGameFramework { 7 | public class MainMenuSettingsMenu : MenuScreen { 8 | 9 | private MenuButton graphicalSettingsButton; 10 | private MenuButton audioSettingsButton; 11 | private MenuButton controlsButton; 12 | private MenuButton backButton; 13 | 14 | private Texture2D backgroundTint; 15 | private Texture2D menuBackground; 16 | 17 | private GraphicalSettingsMenu graphicalSettingsMenu; 18 | private AudioSettingsMenu audioSettingsMenu; 19 | public ControlsMenu controlsMenu; 20 | 21 | public MainMenuSettingsMenu() { 22 | 23 | } 24 | 25 | public MainMenuSettingsMenu(MenuScreen _parentMenu) : base(_parentMenu) { 26 | 27 | } 28 | 29 | public override void LoadContent() { 30 | backgroundTint = Globals.content.Load("Menues/MenuHelpers/menu-tint"); 31 | menuBackground = Globals.content.Load("Menues/PauseMenu/pause-menu-background"); 32 | 33 | graphicalSettingsButton = new MenuButton( 34 | new Vector2(760, 480), 35 | this, 36 | MenuButton.buttonSize, 37 | "Graphical Settings" 38 | ); 39 | 40 | audioSettingsButton = new MenuButton( 41 | new Vector2(760, 580), 42 | this, 43 | MenuButton.buttonSize, 44 | "Audio Settings" 45 | ); 46 | 47 | controlsButton = new MenuButton( 48 | new Vector2(760, 680), 49 | this, 50 | MenuButton.buttonSize, 51 | "Controls" 52 | ); 53 | 54 | backButton = new MenuButton( 55 | new Vector2(760, 780), 56 | this, 57 | MenuButton.buttonSize, 58 | "Back" 59 | ); 60 | 61 | buttonList.Add(graphicalSettingsButton); 62 | buttonList.Add(audioSettingsButton); 63 | buttonList.Add(controlsButton); 64 | buttonList.Add(backButton); 65 | 66 | graphicalSettingsMenu = new GraphicalSettingsMenu(this); 67 | audioSettingsMenu = new AudioSettingsMenu(this); 68 | controlsMenu = new ControlsMenu(this); 69 | 70 | subMenues.Add(graphicalSettingsMenu); 71 | subMenues.Add(audioSettingsMenu); 72 | subMenues.Add(controlsMenu); 73 | 74 | foreach (MenuScreen subMenu in subMenues) { 75 | subMenu.LoadContent(); 76 | } 77 | } 78 | 79 | public override void UnloadContent() { 80 | 81 | } 82 | 83 | protected override void BackPressed() { 84 | currentlySelectedButtonIndex = 0; 85 | parentMenu.CloseSubMenu(); 86 | } 87 | 88 | public override void ButtonClicked(MenuButton button) { 89 | base.ButtonClicked(button); 90 | if (button == graphicalSettingsButton) { 91 | GraphicalSettingsButtonPressed(); 92 | } else if (button == audioSettingsButton) { 93 | AudioSettingsButtonPressed(); 94 | } else if (button == controlsButton) { 95 | ControlsButtonPressed(); 96 | } else if (button == backButton) { 97 | BackButtonPressed(); 98 | } 99 | } 100 | 101 | private void GraphicalSettingsButtonPressed() { 102 | for (int i = 0; i < subMenues.Count; i++) { 103 | if (subMenues[i] == graphicalSettingsMenu) { 104 | currentSubMenuScreenIndex = i; 105 | } 106 | } 107 | graphicalSettingsMenu.MenuScreenOpened(); 108 | } 109 | 110 | private void AudioSettingsButtonPressed() { 111 | for (int i = 0; i < subMenues.Count; i++) { 112 | if (subMenues[i] == audioSettingsMenu) { 113 | currentSubMenuScreenIndex = i; 114 | } 115 | } 116 | audioSettingsMenu.MenuScreenOpened(); 117 | } 118 | 119 | private void ControlsButtonPressed() { 120 | for (int i = 0; i < subMenues.Count; i++) { 121 | if (subMenues[i] == controlsMenu) { 122 | currentSubMenuScreenIndex = i; 123 | } 124 | } 125 | controlsMenu.MenuScreenOpened(); 126 | } 127 | 128 | private void BackButtonPressed() { 129 | BackPressed(); 130 | } 131 | 132 | public override void Draw(SpriteBatch spriteBatch) { 133 | spriteBatch.Draw(backgroundTint, new Rectangle(0, 0, ResolutionConfig.virtualResolution.Item1, ResolutionConfig.virtualResolution.Item2), Color.White); 134 | spriteBatch.Draw(menuBackground, new Rectangle(320, 180, 1280, 720), currentSubMenuScreenIndex >= 0 ? CustomColors.darkerGray : Color.White); 135 | base.Draw(spriteBatch); 136 | } 137 | } 138 | } 139 | 140 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/StartMenues/SplashScreen.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using Microsoft.Xna.Framework; 5 | using Microsoft.Xna.Framework.Graphics; 6 | 7 | namespace AsymptoticMonoGameFramework{ 8 | 9 | public class SplashScreen{ 10 | 11 | private Texture2D splashImage; 12 | private Texture2D tint; 13 | 14 | private float fadeInTime; 15 | private float showTime; 16 | private float fadeOutTime; 17 | private float timer; 18 | 19 | public SplashScreen() { 20 | timer = 0.0f; 21 | fadeInTime = 1.0f; 22 | showTime = 2.0f; 23 | fadeOutTime = 1.0f; 24 | } 25 | 26 | public void LoadContent() { 27 | tint = Globals.content.Load("SplashScreen/tint"); 28 | splashImage = Globals.content.Load("SplashScreen/splash-image"); 29 | } 30 | 31 | public void UnloadContent() { 32 | 33 | } 34 | 35 | public void Update (GameTime gameTime) { 36 | timer += (float)gameTime.ElapsedGameTime.TotalSeconds; 37 | if(timer > GetTotalScreenTime()){ 38 | Globals.startMenuesManager.startMenuesState = StartMenuesState.MainMenu; 39 | Globals.songManager.StartMainMenu(); 40 | } 41 | } 42 | 43 | public void Draw(SpriteBatch spriteBatch) { 44 | spriteBatch.Draw(splashImage, new Rectangle(0, 0, ResolutionConfig.virtualResolution.Item1, ResolutionConfig.virtualResolution.Item2), Color.White); 45 | if(timer < fadeInTime) { 46 | spriteBatch.Draw(tint, new Rectangle(0, 0, ResolutionConfig.virtualResolution.Item1, ResolutionConfig.virtualResolution.Item2), Color.White * GetFadeInAmount()); 47 | } 48 | if(timer > (fadeInTime + showTime)) { 49 | spriteBatch.Draw(tint, new Rectangle(0, 0, ResolutionConfig.virtualResolution.Item1, ResolutionConfig.virtualResolution.Item2), Color.White * GetFadeOutAmount()); 50 | } 51 | } 52 | 53 | private float GetFadeInAmount() { 54 | return ((fadeInTime - timer) / fadeInTime); 55 | } 56 | 57 | private float GetFadeOutAmount() { 58 | return ((timer - (GetTotalScreenTime() - fadeOutTime)) / fadeOutTime); 59 | } 60 | 61 | private float GetTotalScreenTime() { 62 | return fadeInTime + showTime + fadeOutTime; 63 | } 64 | 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Code/Code/Main/Menues/StartMenues/StartMenuesManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | using Microsoft.Xna.Framework.Graphics; 4 | 5 | namespace AsymptoticMonoGameFramework 6 | { 7 | public enum StartMenuesState { 8 | SplashScreen, 9 | MainMenu, 10 | GameplaySettingsMenu 11 | } 12 | 13 | public class StartMenuesManager 14 | { 15 | public StartMenuesState startMenuesState; 16 | 17 | private SplashScreen splashScreen; 18 | public MainMenu mainMenu; 19 | private GameplaySettingsMenu gameplaySettingsMenu; 20 | 21 | public StartMenuesManager() { 22 | startMenuesState = StartMenuesState.SplashScreen; 23 | splashScreen = new SplashScreen(); 24 | mainMenu = new MainMenu(); 25 | gameplaySettingsMenu = new GameplaySettingsMenu(); 26 | } 27 | 28 | public void LoadContent() { 29 | splashScreen.LoadContent(); 30 | mainMenu.LoadContent(); 31 | gameplaySettingsMenu.LoadContent(); 32 | } 33 | 34 | public void UnloadContent() { 35 | splashScreen.UnloadContent(); 36 | mainMenu.UnloadContent(); 37 | gameplaySettingsMenu.UnloadContent(); 38 | } 39 | 40 | public void Update(GameTime gameTime) { 41 | if (startMenuesState == StartMenuesState.SplashScreen) { 42 | splashScreen.Update(gameTime); 43 | }else if(startMenuesState == StartMenuesState.MainMenu) { 44 | mainMenu.Update(gameTime); 45 | } else if (startMenuesState == StartMenuesState.GameplaySettingsMenu) { 46 | gameplaySettingsMenu.Update(gameTime); 47 | } 48 | } 49 | 50 | public void Draw(SpriteBatch spriteBatch) { 51 | if (startMenuesState == StartMenuesState.SplashScreen) { 52 | splashScreen.Draw(spriteBatch); 53 | } else if (startMenuesState == StartMenuesState.MainMenu) { 54 | mainMenu.Draw(spriteBatch); 55 | } else if (startMenuesState == StartMenuesState.GameplaySettingsMenu) { 56 | gameplaySettingsMenu.Draw(spriteBatch); 57 | } 58 | } 59 | 60 | public void LoadGameplay() { 61 | Globals.songManager.StopMainMenu(); 62 | Globals.gameInstance.gameState = GameState.inLoadingScreen; 63 | Globals.gameInstance.isLoading = false; 64 | } 65 | 66 | public void LoadGameplaySettingsMenu() { 67 | startMenuesState = StartMenuesState.GameplaySettingsMenu; 68 | GameplaySettingsManager.ResetToDefault(); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Mac/Mac.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mac", "Mac\Mac.csproj", "{A0C07126-FD9A-4210-B11B-D56083EC74C0}" 5 | EndProject 6 | Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Code", "..\Code\Code\Code.shproj", "{7A9B8A55-8FC9-45C2-AFDC-F1446F172330}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x86 = Debug|x86 11 | Release|x86 = Release|x86 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {A0C07126-FD9A-4210-B11B-D56083EC74C0}.Debug|x86.ActiveCfg = Debug|x86 15 | {A0C07126-FD9A-4210-B11B-D56083EC74C0}.Debug|x86.Build.0 = Debug|x86 16 | {A0C07126-FD9A-4210-B11B-D56083EC74C0}.Release|x86.ActiveCfg = Release|x86 17 | {A0C07126-FD9A-4210-B11B-D56083EC74C0}.Release|x86.Build.0 = Release|x86 18 | EndGlobalSection 19 | EndGlobal 20 | -------------------------------------------------------------------------------- /Mac/Mac/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Mac/Mac/Icon.ico -------------------------------------------------------------------------------- /Mac/Mac/Info.plist: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | CFBundleIdentifier 6 | project.MonoGame.Mac 7 | CFBundleName 8 | Mac 9 | CFBundleVersion 10 | 1 11 | LSMinimumSystemVersion 12 | 10.6 13 | NSPrincipalClass 14 | NSApplication 15 | NSMainNibFile 16 | MainMenu 17 | 18 | 19 | -------------------------------------------------------------------------------- /Mac/Mac/Mac.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Debug 7 | x86 8 | {A0C07126-FD9A-4210-B11B-D56083EC74C0} 9 | {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 10 | Exe 11 | Mac 12 | Mac 13 | v4.5 14 | Resources 15 | DesktopGL 16 | 17 | 18 | true 19 | full 20 | false 21 | bin\Debug 22 | DEBUG; 23 | prompt 24 | 4 25 | false 26 | Mac Developer 27 | false 28 | false 29 | false 30 | true 31 | true 32 | x86 33 | 34 | 35 | pdbonly 36 | true 37 | bin\Release 38 | prompt 39 | 4 40 | false 41 | true 42 | false 43 | true 44 | true 45 | true 46 | SdkOnly 47 | x86 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | $(MonoGameInstallDirectory)\MonoGame\v3.0\Assemblies\DesktopGL\MonoGame.Framework.dll 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | PreserveNewest 75 | 76 | 77 | 78 | 79 | Static 80 | 81 | 82 | Static 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /Mac/Mac/Main.cs: -------------------------------------------------------------------------------- 1 | #region Using Statements 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | 6 | using AppKit; 7 | using Foundation; 8 | #endregion 9 | 10 | namespace AsymptoticMonoGameFramework 11 | { 12 | static class Program 13 | { 14 | /// 15 | /// The main entry point for the application. 16 | /// 17 | static void Main(string[] args) 18 | { 19 | NSApplication.Init(); 20 | 21 | using (var game = new Game1()) 22 | { 23 | game.Run(); 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Mac/Mac/MonoGame.Framework.dll.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Mac/Mac/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | #if __ANDROID__ 4 | using Android.App; 5 | #endif 6 | 7 | // Information about this assembly is defined by the following attributes. 8 | // Change them to the values specific to your project. 9 | 10 | [assembly: AssemblyTitle("Mac")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("")] 14 | [assembly: AssemblyProduct("")] 15 | [assembly: AssemblyCopyright("${AuthorCopyright}")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 20 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 21 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 22 | 23 | [assembly: AssemblyVersion("1.0.0")] 24 | 25 | // The following attributes are used to specify the signing key for the assembly, 26 | // if desired. See the Mono documentation for more information about signing. 27 | 28 | //[assembly: AssemblyDelaySign(false)] 29 | //[assembly: AssemblyKeyFile("")] 30 | -------------------------------------------------------------------------------- /Mac/Mac/libSDL2-2.0.0.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Mac/Mac/libSDL2-2.0.0.dylib -------------------------------------------------------------------------------- /Mac/Mac/libopenal.1.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Mac/Mac/libopenal.1.dylib -------------------------------------------------------------------------------- /Windows/AsymptoticMonoGameFramework.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.24720.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Code", "..\Code\Code\Code.shproj", "{7A9B8A55-8FC9-45C2-AFDC-F1446F172330}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AsymptoticMonoGameFramework", "AsymptoticMonoGameFramework\AsymptoticMonoGameFramework.csproj", "{230375C9-40FC-41D2-ADD1-4D8194E7B1B3}" 9 | EndProject 10 | Global 11 | GlobalSection(SharedMSBuildProjectFiles) = preSolution 12 | ..\Code\Code\Code.projitems*{7a9b8a55-8fc9-45c2-afdc-f1446f172330}*SharedItemsImports = 13 13 | ..\Code\Code\Code.projitems*{230375c9-40fc-41d2-add1-4d8194e7b1b3}*SharedItemsImports = 4 14 | EndGlobalSection 15 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 16 | Debug|x86 = Debug|x86 17 | Release|x86 = Release|x86 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {230375C9-40FC-41D2-ADD1-4D8194E7B1B3}.Debug|x86.ActiveCfg = Debug|x86 21 | {230375C9-40FC-41D2-ADD1-4D8194E7B1B3}.Debug|x86.Build.0 = Debug|x86 22 | {230375C9-40FC-41D2-ADD1-4D8194E7B1B3}.Release|x86.ActiveCfg = Release|x86 23 | {230375C9-40FC-41D2-ADD1-4D8194E7B1B3}.Release|x86.Build.0 = Release|x86 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /Windows/AsymptoticMonoGameFramework/AsymptoticMonoGameFramework.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {230375C9-40FC-41D2-ADD1-4D8194E7B1B3} 9 | WinExe 10 | Properties 11 | AsymptoticMonogameFramework 12 | AsymptoticMonogameFramework 13 | 512 14 | Windows 15 | 16 | 17 | v4.5.2 18 | 19 | false 20 | D:\Users\Jake\Desktop\AsymptoticMonogameFramework\ 21 | true 22 | Disk 23 | false 24 | Foreground 25 | 7 26 | Days 27 | false 28 | false 29 | true 30 | 6 31 | 1.0.0.%2a 32 | false 33 | true 34 | true 35 | 36 | 37 | x86 38 | true 39 | full 40 | false 41 | bin\Windows\Debug\ 42 | DEBUG;TRACE;WINDOWS 43 | prompt 44 | 4 45 | false 46 | 47 | 48 | x86 49 | pdbonly 50 | true 51 | bin\Windows\Release\ 52 | TRACE;WINDOWS 53 | prompt 54 | 4 55 | false 56 | 57 | 58 | Icon.ico 59 | 60 | 61 | E5AA99303E65AEEB4AB5FF1EC186BD185740A5E6 62 | 63 | 64 | ProjectPrototype_TemporaryKey.pfx 65 | 66 | 67 | true 68 | 69 | 70 | true 71 | 72 | 73 | 74 | Content\Content.mgcb 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | $(MSBuildProgramFiles32)\MonoGame\v3.0\Assemblies\Windows\MonoGame.Framework.dll 84 | 85 | 86 | ..\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll 87 | True 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | False 105 | Microsoft .NET Framework 4.5.2 %28x86 and x64%29 106 | true 107 | 108 | 109 | False 110 | .NET Framework 3.5 SP1 111 | false 112 | 113 | 114 | 115 | 116 | 117 | 131 | -------------------------------------------------------------------------------- /Windows/AsymptoticMonoGameFramework/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsymptoticGames/asymptotic-monogame-framework/1d081d8590bf73ecfc5b04fb83beb69154a2f818/Windows/AsymptoticMonoGameFramework/Icon.ico -------------------------------------------------------------------------------- /Windows/AsymptoticMonoGameFramework/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace AsymptoticMonoGameFramework 4 | { 5 | #if WINDOWS || LINUX 6 | /// 7 | /// The main class. 8 | /// 9 | public static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | using (var game = new Game1()) 18 | game.Run(); 19 | } 20 | } 21 | #endif 22 | } 23 | -------------------------------------------------------------------------------- /Windows/AsymptoticMonoGameFramework/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Asymptotic MonoGame Framework")] 9 | [assembly: AssemblyProduct("AsymptoticMonoGameFramework")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyDescription("Local multiplayer arcade shooter")] 12 | [assembly: AssemblyCompany("Asymptotic Games")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("c0ea5d56-f5be-4470-94c1-2163608f61b3")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("3.4.0.456")] 36 | [assembly: AssemblyFileVersion("3.4.0.456")] 37 | -------------------------------------------------------------------------------- /Windows/AsymptoticMonoGameFramework/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Windows/AsymptoticMonoGameFramework/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | --------------------------------------------------------------------------------