Show
Ignore:
Timestamp:
08/13/10 22:27:00 (22 months ago)
Author:
Carsten
Message:

This revision implements (much of) the big step of replacing the previous OS layer with wxWidgets, achieving a good deal of the objective of ticket #34:
The Cafu engine runs now as a wxWidgets application! ;-)
The most important loose ends have already been tied up, such as app initialization and mouse and keyboard event forwarding, but there are also many details left that for clarity have been scheduled for separate revisions.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • cafu/branches/cafu_to_wx/Ca3DE/Client/ClientStateInGame.cpp

    r48 r116  
    2222*/ 
    2323 
     24#include "../AppCafu.hpp" 
     25#include "../MainCanvas.hpp" 
     26#include "../MainFrame.hpp" 
     27#include "../NetConst.hpp" 
     28 
    2429#include "ClientStateInGame.hpp" 
    2530#include "Client.hpp" 
     
    2732#include "PathRecorder.hpp" 
    2833 
    29 #include "../NetConst.hpp" 
    3034#include "GuiSys/Gui.hpp" 
    3135#include "GuiSys/GuiMan.hpp" 
     
    359363void ClientStateInGameT::Render(float FrameTime) 
    360364{ 
     365    const wxSize FrameSize=wxGetApp().GetMainFrame()->GetClientSize(); 
     366 
    361367    Graphs.ClearForFrame(ClientFrameNr); 
    362368 
     
    383389            static ConVarT ShowPosition("showPos", false, ConVarT::FLAG_MAIN_EXE, "Toggles whether the current players position is shown."); 
    384390 
    385             if (ShowFrameRate.GetValueBool()) Font_f.Print(SingleOpenGLWindow->GetWidth()-100, SingleOpenGLWindow->GetHeight()-16, 0x00FFFFFF, "FPS %5.1f", 1.0f/FrameTime); 
     391            if (ShowFrameRate.GetValueBool()) Font_f.Print(FrameSize.GetWidth()-100, FrameSize.GetHeight()-16, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "FPS %5.1f", 1.0f/FrameTime); 
    386392 
    387393            if (ShowPosition.GetValueBool()) 
     
    393399                //     LeafContents=World->GetCa3DEWorldP()->Map.Leaves[LeafNr].IsWaterLeaf ? 'w' : 'i'; 
    394400 
    395                 Font_f.Print(SingleOpenGLWindow->GetWidth()-130, 15, 0x00FFFFFF, "X %10.1f", OurEntityCurrentState->Origin.x); 
    396                 Font_f.Print(SingleOpenGLWindow->GetWidth()-130, 35, 0x00FFFFFF, "Y %10.1f", OurEntityCurrentState->Origin.y); 
    397                 Font_f.Print(SingleOpenGLWindow->GetWidth()-130, 55, 0x00FFFFFF, "Z %10.1f", OurEntityCurrentState->Origin.z); 
    398                 Font_f.Print(SingleOpenGLWindow->GetWidth()-130, 75, 0x00FFFFFF, "Hdg %8u", OurEntityCurrentState->Heading); 
    399              // Font_f.Print(SingleOpenGLWindow->GetWidth()-100, SingleOpenGLWindow->GetHeight()-32, 0x00FFFFFF, "L %4u %c", LeafNr, LeafContents); 
     401                Font_f.Print(FrameSize.GetWidth()-130, 15, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "X %10.1f", OurEntityCurrentState->Origin.x); 
     402                Font_f.Print(FrameSize.GetWidth()-130, 35, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "Y %10.1f", OurEntityCurrentState->Origin.y); 
     403                Font_f.Print(FrameSize.GetWidth()-130, 55, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "Z %10.1f", OurEntityCurrentState->Origin.z); 
     404                Font_f.Print(FrameSize.GetWidth()-130, 75, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "Hdg %8u", OurEntityCurrentState->Heading); 
     405             // Font_f.Print(FrameSize.GetWidth()-100, FrameSize.GetHeight()-32, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "L %4u %c", LeafNr, LeafContents); 
    400406            } 
    401407 
     
    412418        else 
    413419        { 
    414             Font_f.Print(30, SingleOpenGLWindow->GetHeight()*2/3, 0x00004080, "Receiving entity baselines..."); 
     420            Font_f.Print(30, FrameSize.GetHeight()*2/3, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00004080, "Receiving entity baselines..."); 
    415421        } 
    416422    } 
     
    426432            MatSys::Renderer->SetMatrix(MatSys::RendererI::MODEL_TO_WORLD, MatrixT()); 
    427433            MatSys::Renderer->SetMatrix(MatSys::RendererI::WORLD_TO_VIEW,  MatrixT()); 
    428             MatSys::Renderer->SetMatrix(MatSys::RendererI::PROJECTION,     MatrixT::GetProjOrthoMatrix(0.0f, float(SingleOpenGLWindow->GetWidth()), float(SingleOpenGLWindow->GetHeight()), 0.0f, -1.0f, 1.0f)); 
     434            MatSys::Renderer->SetMatrix(MatSys::RendererI::PROJECTION,     MatrixT::GetProjOrthoMatrix(0.0f, float(FrameSize.GetWidth()), float(FrameSize.GetHeight()), 0.0f, -1.0f, 1.0f)); 
    429435 
    430436            MatSys::Renderer->SetCurrentRenderAction(MatSys::RendererI::AMBIENT); 
     
    442448                // The coordinates have also been tested with a hor. and ver. stripe pattern texture for making sure that there is no 
    443449                // inadvertent scaling by plus or minus one pixel. 
    444                 M.Vertices[0].SetOrigin(SingleOpenGLWindow->GetWidth()/2.0f-512.0f, SingleOpenGLWindow->GetHeight()/2.0f-256.0f-20.0f); // links  oben 
    445                 M.Vertices[1].SetOrigin(SingleOpenGLWindow->GetWidth()/2.0f+512.0f, SingleOpenGLWindow->GetHeight()/2.0f-256.0f-20.0f); // rechts oben 
    446                 M.Vertices[2].SetOrigin(SingleOpenGLWindow->GetWidth()/2.0f+512.0f, SingleOpenGLWindow->GetHeight()/2.0f+256.0f-20.0f); // rechts unten 
    447                 M.Vertices[3].SetOrigin(SingleOpenGLWindow->GetWidth()/2.0f-512.0f, SingleOpenGLWindow->GetHeight()/2.0f+256.0f-20.0f); // links  unten 
     450                M.Vertices[0].SetOrigin(FrameSize.GetWidth()/2.0f-512.0f, FrameSize.GetHeight()/2.0f-256.0f-20.0f); // links  oben 
     451                M.Vertices[1].SetOrigin(FrameSize.GetWidth()/2.0f+512.0f, FrameSize.GetHeight()/2.0f-256.0f-20.0f); // rechts oben 
     452                M.Vertices[2].SetOrigin(FrameSize.GetWidth()/2.0f+512.0f, FrameSize.GetHeight()/2.0f+256.0f-20.0f); // rechts unten 
     453                M.Vertices[3].SetOrigin(FrameSize.GetWidth()/2.0f-512.0f, FrameSize.GetHeight()/2.0f+256.0f-20.0f); // links  unten 
    448454 
    449455                MatSys::Renderer->SetCurrentMaterial(LogoRenderMat); 
     
    453459 
    454460        #if 0 
    455             const unsigned long BarHalfWidth=SingleOpenGLWindow->GetWidth()/2-40; 
     461            const unsigned long BarHalfWidth=FrameSize.GetWidth()/2-40; 
    456462 
    457463            // Render the left end of the loading bar. 
    458464            { 
    459                 M.Vertices[0].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth-16, SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    460                 M.Vertices[1].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth   , SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    461                 M.Vertices[2].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth   , SingleOpenGLWindow->GetHeight()*9/10-20+32); 
    462                 M.Vertices[3].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth-16, SingleOpenGLWindow->GetHeight()*9/10-20+32); 
     465                M.Vertices[0].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth-16, FrameSize.GetHeight()*9/10-20   ); 
     466                M.Vertices[1].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth   , FrameSize.GetHeight()*9/10-20   ); 
     467                M.Vertices[2].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth   , FrameSize.GetHeight()*9/10-20+32); 
     468                M.Vertices[3].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth-16, FrameSize.GetHeight()*9/10-20+32); 
    463469 
    464470                MatSys::Renderer->SetCurrentMaterial(LoadingBarLMat); 
     
    468474            // Render the center left (filled) part of the loading bar. 
    469475            { 
    470                 M.Vertices[0].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth                               , SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    471                 M.Vertices[1].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    472                 M.Vertices[2].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, SingleOpenGLWindow->GetHeight()*9/10-20+32); 
    473                 M.Vertices[3].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth                               , SingleOpenGLWindow->GetHeight()*9/10-20+32); 
     476                M.Vertices[0].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth                               , FrameSize.GetHeight()*9/10-20   ); 
     477                M.Vertices[1].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, FrameSize.GetHeight()*9/10-20   ); 
     478                M.Vertices[2].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, FrameSize.GetHeight()*9/10-20+32); 
     479                M.Vertices[3].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth                               , FrameSize.GetHeight()*9/10-20+32); 
    474480 
    475481                MatSys::Renderer->SetCurrentMaterial(LoadingBar1Mat); 
     
    479485            // Render the center right (not yet filled) part of the loading bar. 
    480486            { 
    481                 M.Vertices[0].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    482                 M.Vertices[1].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth                               , SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    483                 M.Vertices[2].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth                               , SingleOpenGLWindow->GetHeight()*9/10-20+32); 
    484                 M.Vertices[3].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, SingleOpenGLWindow->GetHeight()*9/10-20+32); 
     487                M.Vertices[0].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, FrameSize.GetHeight()*9/10-20   ); 
     488                M.Vertices[1].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth                               , FrameSize.GetHeight()*9/10-20   ); 
     489                M.Vertices[2].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth                               , FrameSize.GetHeight()*9/10-20+32); 
     490                M.Vertices[3].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, FrameSize.GetHeight()*9/10-20+32); 
    485491 
    486492                MatSys::Renderer->SetCurrentMaterial(LoadingBar0Mat); 
     
    490496            // Render the right end of the loading bar. 
    491497            { 
    492                 M.Vertices[0].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth   , SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    493                 M.Vertices[1].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth+16, SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    494                 M.Vertices[2].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth+16, SingleOpenGLWindow->GetHeight()*9/10-20+32); 
    495                 M.Vertices[3].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth   , SingleOpenGLWindow->GetHeight()*9/10-20+32); 
     498                M.Vertices[0].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth   , FrameSize.GetHeight()*9/10-20   ); 
     499                M.Vertices[1].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth+16, FrameSize.GetHeight()*9/10-20   ); 
     500                M.Vertices[2].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth+16, FrameSize.GetHeight()*9/10-20+32); 
     501                M.Vertices[3].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth   , FrameSize.GetHeight()*9/10-20+32); 
    496502 
    497503                MatSys::Renderer->SetCurrentMaterial(LoadingBarRMat); 
     
    507513 
    508514            #ifdef DEBUG 
    509                 LoadingFont->Print(SingleOpenGLWindow->GetWidth()/2-34*CharWidth/2, SingleOpenGLWindow->GetHeight()*9/10+12, 0x00800000, "Version: %s [Debug build], %s", __DATE__, LoadingProgressText.c_str()); 
     515                LoadingFont->Print(FrameSize.GetWidth()/2-34*CharWidth/2, FrameSize.GetHeight()*9/10+12, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Version: %s [Debug build], %s", __DATE__, LoadingProgressText.c_str()); 
    510516            #else 
    511                 LoadingFont->Print(SingleOpenGLWindow->GetWidth()/2-20*CharWidth/2, SingleOpenGLWindow->GetHeight()*9/10+12, 0x00800000, "Version: %s", __DATE__); 
     517                LoadingFont->Print(FrameSize.GetWidth()/2-20*CharWidth/2, FrameSize.GetHeight()*9/10+12, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Version: %s", __DATE__); 
    512518            #endif 
    513519 
    514520            if (LoadingProgressPercent>0) 
    515                 LoadingFont->Print(SingleOpenGLWindow->GetWidth()/2-10*CharWidth/2, SingleOpenGLWindow->GetHeight()*9/10+30, 0x00800000, "Loading... %.0f%%", LoadingProgressPercent*100.0f); 
     521                LoadingFont->Print(FrameSize.GetWidth()/2-10*CharWidth/2, FrameSize.GetHeight()*9/10+30, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Loading... %.0f%%", LoadingProgressPercent*100.0f); 
    516522            else 
    517                 LoadingFont->Print(SingleOpenGLWindow->GetWidth()/2-10*CharWidth/2, SingleOpenGLWindow->GetHeight()*9/10+30, 0x00800000, "Loading..."); 
     523                LoadingFont->Print(FrameSize.GetWidth()/2-10*CharWidth/2, FrameSize.GetHeight()*9/10+30, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Loading..."); 
    518524        } 
    519525        else 
     
    521527            // We have no world yet, and are currently not loading one, 
    522528            // which means that we're still waiting for a SC1_WorldInfo message. 
    523             Font_f.Print(5, 200, 0x00DDFFBB, "Waiting for SC1_WorldInfo message..."); 
     529            Font_f.Print(5, 200, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00DDFFBB, "Waiting for SC1_WorldInfo message..."); 
    524530        } 
    525531    } 
     
    536542    } 
    537543 
    538     ChatScrollInfo  .Draw(Font_v, 5, SingleOpenGLWindow->GetHeight()-10-140); 
     544    ChatScrollInfo  .Draw(Font_v, 5, FrameSize.GetHeight()-10-140, FrameSize.GetWidth(), FrameSize.GetHeight()); 
    539545    ChatScrollInfo  .AdvanceTime(FrameTime); 
    540     SystemScrollInfo.Draw(Font_v, 5, 15); 
     546    SystemScrollInfo.Draw(Font_v, 5, 15, FrameSize.GetWidth(), FrameSize.GetHeight()); 
    541547    SystemScrollInfo.AdvanceTime(FrameTime); 
    542548 
     
    589595 
    590596    MatSys::Renderer->EndFrame(); 
    591     SingleOpenGLWindow->SwapBuffers(); 
     597    wxGetApp().GetMainFrame()->GetMainCanvas()->SwapBuffers(); 
    592598 
    593599    SoundSystem->Update(); 
     
    809815 
    810816        // This is unfortunately needed, because the users last click (in the GUI) that brought us here may still have the "LMB up" event pending. 
     817#if 0 
    811818        WasLMBOnceUp|=(SingleOpenGLWindow->GetMouseButtonState() & 0x1)==0; 
    812819 
     
    843850            if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_END        ]) PlayerCommand.Keys|=PCK_CenterView; 
    844851        } 
     852#endif 
    845853 
    846854