├── .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 |
--------------------------------------------------------------------------------