📄 monitorframe.cc
字号:
#include "monitorframe.ih"#include <GL/glut.h>using namespace bats;MonitorFrame::MonitorFrame(const wxString& title, const wxPoint& pos, const wxSize& size, int style, GameModel& gameModel) : wxFrame((wxFrame *)NULL, -1, title, pos, size, style), d_gameModel(gameModel), d_camPos(0.0, -25.0, 25.0), d_camLookAt(0.0, 0.0, 0.0), d_camUp(0.0, 0.0, 1.0), d_centerOnBall(true){ resetCamUp(); int ac = 0; char *argv = 0; // Hmm.. glut init! glutInit(&ac,&argv); wxMenu *menuFile = new wxMenu; menuFile->Append( ID_About, wxT("&About...") ); menuFile->AppendSeparator(); menuFile->Append( ID_Quit, wxT("E&xit") ); wxMenuBar *menuBar = new wxMenuBar; menuBar->Append( menuFile, wxT("&File") ); SetMenuBar( menuBar ); CreateStatusBar(); SetStatusText( wxT("Welcome to the BATS Robocup Monitor!") ); wxFont largeFont(16, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD); // Elements d_mainSizer = new wxBoxSizer(wxHORIZONTAL); d_viewSizer = new wxBoxSizer(wxVERTICAL); d_teamScoreSizer = new wxBoxSizer(wxHORIZONTAL); d_leftTeamNameLabel = new wxStaticText(this, -1, wxT("Team 1")); d_leftTeamNameLabel->SetFont(largeFont); d_teamScoreSizer->Add(d_leftTeamNameLabel, 0, wxALL, 5); d_scoreLabel = new wxStaticText(this, -1, wxT("0 - 0")); d_scoreLabel->SetFont(largeFont); d_teamScoreSizer->Add(d_scoreLabel, 0, wxALL, 5); d_rightTeamNameLabel = new wxStaticText(this, -1, wxT("Team 2")); d_rightTeamNameLabel->SetFont(largeFont); d_teamScoreSizer->Add(d_rightTeamNameLabel, 0, wxALL, 5); d_viewSizer->Add(d_teamScoreSizer, 0, wxCENTER);#ifdef BATS_DOUBLEBUFFER int atrib[2]; atrib[0] = WX_GL_DOUBLEBUFFER; atrib[1] = 0; d_glCanvas = new MonitorGLCanvas(this, -1, wxDefaultPosition, wxSize(600, 400), wxSUNKEN_BORDER, wxT("glcanvas"), atrib);#else d_glCanvas = new MonitorGLCanvas(this, -1, wxDefaultPosition, wxSize(600, 400), wxSUNKEN_BORDER, wxT("glcanvas")/*, atrib*/);#endif d_viewSizer->Add(d_glCanvas, 1, wxALL | wxEXPAND, 5); //d_glCanvas->SetCurrent(); d_kickoffButton = new wxButton(this, ID_KickOff, wxT("&Kickoff!")); d_viewSizer->Add(d_kickoffButton, 0, wxALL, 5); d_centerOnBallCheck = new wxCheckBox(this, ID_CenterOnBall, wxT("&Center on ball")); d_viewSizer->Add(d_centerOnBallCheck, 0, wxALL, 5); d_centerOnBallCheck->SetValue(true); d_sayText = new wxTextCtrl(this, -1, wxT(" "), wxDefaultPosition, wxSize(600,150), wxTE_MULTILINE | wxTE_READONLY); d_viewSizer->Add(d_sayText, 0, wxEXPAND); d_mainSizer->Add(d_viewSizer, 1, wxEXPAND); d_settingsSizer = new wxFlexGridSizer(2); d_selectAllLeft = new wxCheckBox(this, ID_SelectLeft, wxT("L")); d_settingsSizer->Add(d_selectAllLeft, 0); d_selectAllRight = new wxCheckBox(this, ID_SelectRight, wxT("R")); d_settingsSizer->Add(d_selectAllRight, 0); wxCheckBox* check; for (unsigned p = 0; p < 11; ++p) for (unsigned t = 0; t < 2; ++t) { ostringstream out; out << (p + 1); check = new wxCheckBox(this, (t == 0 ? ID_LeftCheck : ID_RightCheck) + p /*(t?ID_RightCheck:ID_LeftCheck)*/, wxString(out.str().c_str(), wxConvUTF8)); d_playerCheckBoxes[t].push_back(check); d_settingsSizer->Add(check, 0); } d_mainSizer->Add(d_settingsSizer, 0); SetSizer(d_mainSizer); d_mainSizer->SetSizeHints(this); // Create the graphics objects. createGFXObjects(); initGameObjects(); // Load grass texture ifstream grassin("grass.ppm"); // Read magic number and size bogus (maybe prettier later so we can use different textures) string dummy; getline(grassin, dummy); // magic number getline(grassin, dummy); // gimp meuk getline(grassin, dummy); // size getline(grassin, dummy); // depth grassin.read(d_grassTex, 512 * 512 * 3); cout << "Characters read: " << grassin.gcount() << endl; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -