Initial commit
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using SynthySound;
|
||||
using Microsoft.Xna.Framework.Audio;
|
||||
|
||||
namespace EvilSatellites
|
||||
{
|
||||
public class ScreenManager : DrawableGameComponent
|
||||
{
|
||||
private List<IScreen> _Screens;
|
||||
private IScreen _CurrentScreen;
|
||||
private Game _Game;
|
||||
private bool _Running = false;
|
||||
public Synthy Sound = new Synthy();
|
||||
public FDNReverb EnvironmentEffect;
|
||||
public AudioListener Listener = new AudioListener();
|
||||
public ScreenManager(Game instance): base(instance)
|
||||
{
|
||||
EnvironmentEffect = Sound.CreateReverb();
|
||||
EnvironmentEffect.Delay = 0.03;
|
||||
EnvironmentEffect.Wet = 30;
|
||||
EnvironmentEffect.T60 = 3.3;
|
||||
EnvironmentEffect.Defusion = 1;
|
||||
EnvironmentEffect.FreePath = 0.22;
|
||||
|
||||
_Game = instance;
|
||||
_Screens = new List<IScreen>();
|
||||
_CurrentScreen = null;
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
_Running = true;
|
||||
foreach (var screen in _Screens)
|
||||
{
|
||||
screen.Activate();
|
||||
}
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
public void AddScreen(IScreen screen)
|
||||
{
|
||||
screen.Manager = this;
|
||||
if (_Running) screen.Activate();
|
||||
_Screens.Add(screen);
|
||||
}
|
||||
public void RemoveScreen(IScreen screen)
|
||||
{
|
||||
if (!_Screens.Contains(screen))
|
||||
{
|
||||
throw new Exception("Cannot remove a screen that isn't added to manager");
|
||||
}
|
||||
screen.Deactivate();
|
||||
_Screens.Remove(screen);
|
||||
}
|
||||
|
||||
public void Update(GameTime gameTime)
|
||||
{
|
||||
Sound.Update();
|
||||
var input = Keyboard.GetState();
|
||||
foreach (var screen in _Screens)
|
||||
{
|
||||
if (screen.State == ScreenState.Active) screen.HandleInput(gameTime, input);
|
||||
screen.Update(gameTime);
|
||||
}
|
||||
base.Update(gameTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user