Ejemplo n.º 1
0
        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();
        }