Initial main menu impl
This commit is contained in:
@@ -4,7 +4,6 @@ using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using SynthySound;
|
||||
using Synthizer;
|
||||
using Microsoft.Xna.Framework.Audio;
|
||||
using EvilSatellites.Screens;
|
||||
|
||||
@@ -14,6 +13,8 @@ namespace EvilSatellites
|
||||
public class ScreenManager : DrawableGameComponent
|
||||
{
|
||||
private List<IScreen> _Screens;
|
||||
private List<IScreen> _ToRemove;
|
||||
private List<IScreen> _ToAdd;
|
||||
private IScreen _CurrentScreen;
|
||||
private Game _Game;
|
||||
private bool _Running = false;
|
||||
@@ -29,9 +30,11 @@ namespace EvilSatellites
|
||||
EnvironmentEffect.T60 = 1;
|
||||
EnvironmentEffect.Defusion = 1f;
|
||||
EnvironmentEffect.FreePath = 0.02;
|
||||
|
||||
Sound.SetMaxDistance(150);
|
||||
_Game = instance;
|
||||
_Screens = new List<IScreen>();
|
||||
_ToRemove = new List<IScreen>();
|
||||
_ToAdd = new List<IScreen>();
|
||||
_CurrentScreen = null;
|
||||
}
|
||||
|
||||
@@ -48,8 +51,7 @@ namespace EvilSatellites
|
||||
public void AddScreen(IScreen screen)
|
||||
{
|
||||
screen.Manager = this;
|
||||
if (_Running) screen.Activate();
|
||||
_Screens.Add(screen);
|
||||
_ToAdd.Add(screen);
|
||||
}
|
||||
public void RemoveScreen(IScreen screen)
|
||||
{
|
||||
@@ -57,12 +59,29 @@ namespace EvilSatellites
|
||||
{
|
||||
throw new Exception("Cannot remove a screen that isn't added to manager");
|
||||
}
|
||||
screen.Deactivate();
|
||||
_Screens.Remove(screen);
|
||||
_ToRemove.Add(screen);
|
||||
}
|
||||
|
||||
public void Update(GameTime gameTime)
|
||||
{
|
||||
if (_ToAdd.Count > 0)
|
||||
{
|
||||
foreach (var screen in _ToAdd)
|
||||
{
|
||||
screen.Activate();
|
||||
_Screens.Add(screen);
|
||||
}
|
||||
_ToAdd.Clear();
|
||||
}
|
||||
if (_ToRemove.Count > 0)
|
||||
{
|
||||
foreach (var screen in _ToRemove)
|
||||
{
|
||||
screen.Deactivate();
|
||||
_Screens.Remove(screen);
|
||||
}
|
||||
_ToRemove.Clear();
|
||||
}
|
||||
Sound.Update();
|
||||
var input = Keyboard.GetState();
|
||||
foreach (var screen in _Screens)
|
||||
|
||||
Reference in New Issue
Block a user