public void Update()
{
if (middleman.DriverReady()) { middleman.DriverReset(); driver.Execute(); waiting = false; }
mousestate = Mouse.GetState();
keystate = Keyboard.GetState();
if (keystate.IsKeyDown(Keys.Escape) && oldkeystate.IsKeyUp(Keys.Escape)) { MenuManager.ClickTitle(this, EventArgs.Empty); middleman.Close(); }
if (keystate.IsKeyDown(Keys.R) && oldkeystate.IsKeyUp(Keys.R)) { Save(); }
if (keystate.IsKeyDown(Keys.Space) && oldkeystate.IsKeyUp(Keys.Space)) { waiting = true; middleman.EndTurn(); }
//////camera controls////
if (keystate.IsKeyDown(Keys.Left)) { offset.X = offset.X + scrollspeed; }
if (keystate.IsKeyDown(Keys.Right)) { offset.X = offset.X - scrollspeed; }
if (keystate.IsKeyDown(Keys.Down)) { offset.Y = offset.Y + scrollspeed; }
if (keystate.IsKeyDown(Keys.Up)) { offset.Y = offset.Y - scrollspeed; }
//if (keystate.IsKeyDown(Keys.Z)) { xr += rotatespeed; }
if (keystate.IsKeyDown(Keys.S)) { yr += rotatespeed; }
if (keystate.IsKeyDown(Keys.D)) { zr += rotatespeed; }
//if (keystate.IsKeyDown(Keys.A)) { xr -= rotatespeed; }
if (keystate.IsKeyDown(Keys.W)) { yr -= rotatespeed; }
if (keystate.IsKeyDown(Keys.A)) { zr -= rotatespeed; }
if (keystate.IsKeyDown(Keys.Q)) { height += zoomspeed; }
if (keystate.IsKeyDown(Keys.E)) { height -= zoomspeed; }
if (yr > 0) { yr = 0; }
if (yr < (-Math.PI / (float)2)) { yr = (float)(-Math.PI / (float)2); }
space.Update(); //just resets the color of hexes
if (space is SolarSystem3D) UpdateSolar();
if (space is Galaxy) UpdateGalaxy();
//update the 2d stuff
foreach (MenuComponent c in components)
{
c.Update(mousestate, oldmousestate);
}
oldmousestate = mousestate;
oldmousehex = mousehex;
oldkeystate = keystate;
}