public void DrawRegions( World world ) { world.WorldRenderer.palette.Update( world.WorldActor.traits.WithInterface<IPaletteModifier>()); float2 r1 = new float2(2, -2) / screenSize; float2 r2 = new float2(-1, 1); renderer.BeginFrame(r1, r2, scrollPosition.ToInt2()); if( Game.orderManager.GameStarted ) { world.WorldRenderer.Draw(); Game.chrome.Draw( world ); if( Game.orderManager.Connection.ConnectionState == ConnectionState.NotConnected ) Game.chrome.DrawDialog("Connection lost."); } else { // Still hacky, but at least it uses widgets // TODO: Clean up the logic of this beast // TODO: Have a proper "In main menu" state ConnectionState state = Game.orderManager.Connection.ConnectionState; if (state != lastConnectionState) { switch( Game.orderManager.Connection.ConnectionState ) { case ConnectionState.PreConnecting: Game.chrome.rootWidget.GetWidget("MAINMENU_BG").Visible = true; Game.chrome.rootWidget.GetWidget("CONNECTING_BG").Visible = false; Game.chrome.rootWidget.GetWidget("CONNECTION_FAILED_BG").Visible = false; break; case ConnectionState.Connecting: Game.chrome.rootWidget.GetWidget("MAINMENU_BG").Visible = false; Game.chrome.rootWidget.GetWidget("CONNECTING_BG").Visible = true; Game.chrome.rootWidget.GetWidget("CONNECTION_FAILED_BG").Visible = false; //(Game.chrome.rootWidget.GetWidget("CONNECTION_GROUP_FAILED") as LabelWidget).Text = "Connecting abort"; //Game.chrome.DrawDialog("Connecting to {0}:{1}...".F( Game.Settings.NetworkHost, Game.Settings.NetworkPort )); break; case ConnectionState.NotConnected: Game.chrome.rootWidget.GetWidget("MAINMENU_BG").Visible = false; Game.chrome.rootWidget.GetWidget("CONNECTING_BG").Visible = false; Game.chrome.rootWidget.GetWidget("CONNECTION_FAILED_BG").Visible = true; //(Game.chrome.rootWidget.GetWidget("CONNECTION_GROUP_FAILED") as LabelWidget).Text = "Not Connected Retry/fail"; //Game.chrome.DrawDialog("Connection failed.", "Retry", _ => {}, "Cancel",_ => {}); break; case ConnectionState.Connected: Game.chrome.rootWidget.GetWidget("MAINMENU_BG").Visible = false; Game.chrome.rootWidget.GetWidget("CONNECTING_BG").Visible = false; Game.chrome.rootWidget.GetWidget("CONNECTION_FAILED_BG").Visible = false; //Game.chrome.DrawLobby( world ); break; } } // TODO: Kill this (hopefully!) soon if (state == ConnectionState.Connected) Game.chrome.DrawLobby( world ); lastConnectionState = state; Game.chrome.DrawWidgets(world); } var cursorName = Game.chrome.HitTest(mousePos) ? "default" : Game.controller.ChooseCursor( world ); var c = new Cursor(cursorName); cursorRenderer.DrawSprite(c.GetSprite((int)cursorFrame), mousePos + Location - c.GetHotspot(), "cursor"); cursorRenderer.Flush(); renderer.EndFrame(); }