- bugfixes and cleanup for g3d editor and map editor so they now compile and run using newer wxwidgets (should also be backwards compatible with 2.8
This commit is contained in:
parent
c75181f350
commit
829c499568
|
@ -209,23 +209,26 @@ MainWindow::MainWindow( std::pair<string,vector<string> > unitToLoad,
|
|||
string appPath)
|
||||
: wxFrame(NULL, -1, ToUnicode(winHeader),
|
||||
wxPoint(Renderer::windowX, Renderer::windowY),
|
||||
wxSize(Renderer::windowW, Renderer::windowH)), model(NULL), glCanvas(NULL), renderer(NULL), initTextureManager(true), timer(NULL)
|
||||
wxSize(Renderer::windowW, Renderer::windowH)),
|
||||
model(NULL), glCanvas(NULL), renderer(NULL),
|
||||
initTextureManager(true), timer(NULL),
|
||||
startupSettingsInited(false)
|
||||
{
|
||||
this->appPath = appPath;
|
||||
Properties::setApplicationPath(extractDirectoryPathFromFile(appPath));
|
||||
|
||||
Config &config = Config::getInstance();
|
||||
//getGlPlatformExtensions();
|
||||
|
||||
int args[] = { WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_MIN_ALPHA, 8 }; // to prevent flicker
|
||||
glCanvas = new GlCanvas(this, args);
|
||||
|
||||
#if wxCHECK_VERSION(2, 9, 1)
|
||||
//glCanvas->setCurrentGLContext();
|
||||
#else
|
||||
glCanvas->SetCurrent();
|
||||
#endif
|
||||
|
||||
renderer= Renderer::getInstance();
|
||||
|
||||
model= NULL;
|
||||
unitPath = unitToLoad;
|
||||
|
||||
|
@ -302,56 +305,7 @@ MainWindow::MainWindow( std::pair<string,vector<string> > unitToLoad,
|
|||
menuMode->Check(miModeGrid, true);
|
||||
menuCustomColor->Check(miColorRed, true);
|
||||
|
||||
for(unsigned int i = 0; i < autoScreenShotParams.size(); ++i) {
|
||||
if(autoScreenShotParams[i] == "transparent") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuFile->Check(miFileToggleScreenshotTransparent,true);
|
||||
float alpha = 0.0f;
|
||||
renderer->setAlphaColor(alpha);
|
||||
}
|
||||
if(autoScreenShotParams[i] == "enable_grid") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeGrid,true);
|
||||
if(renderer->getGrid() == false) {
|
||||
renderer->toggleGrid();
|
||||
}
|
||||
}
|
||||
if(autoScreenShotParams[i] == "enable_wireframe") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeWireframe,true);
|
||||
if(renderer->getWireframe() == false) {
|
||||
renderer->toggleWireframe();
|
||||
}
|
||||
}
|
||||
if(autoScreenShotParams[i] == "enable_normals") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeNormals,true);
|
||||
if(renderer->getNormals() == false) {
|
||||
renderer->toggleNormals();
|
||||
}
|
||||
}
|
||||
if(autoScreenShotParams[i] == "disable_grid") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeGrid,false);
|
||||
if(renderer->getGrid() == true) {
|
||||
renderer->toggleGrid();
|
||||
}
|
||||
}
|
||||
if(autoScreenShotParams[i] == "enable_wireframe") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeWireframe,false);
|
||||
if(renderer->getWireframe() == true) {
|
||||
renderer->toggleWireframe();
|
||||
}
|
||||
}
|
||||
if(autoScreenShotParams[i] == "enable_normals") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeNormals,false);
|
||||
if(renderer->getNormals() == true) {
|
||||
renderer->toggleNormals();
|
||||
}
|
||||
}
|
||||
}
|
||||
//!!!
|
||||
|
||||
SetMenuBar(menu);
|
||||
|
||||
|
@ -393,8 +347,8 @@ MainWindow::MainWindow( std::pair<string,vector<string> > unitToLoad,
|
|||
|
||||
glCanvas->SetFocus();
|
||||
|
||||
timer = new wxTimer(this);
|
||||
timer->Start(100);
|
||||
//timer = new wxTimer(this);
|
||||
//timer->Start(100);
|
||||
|
||||
// For windows register g3d file extension to launch this app
|
||||
#ifdef WIN32
|
||||
|
@ -426,6 +380,70 @@ MainWindow::MainWindow( std::pair<string,vector<string> > unitToLoad,
|
|||
#endif
|
||||
}
|
||||
|
||||
void MainWindow::setupTimer() {
|
||||
timer = new wxTimer(this);
|
||||
timer->Start(100);
|
||||
}
|
||||
|
||||
void MainWindow::setupStartupSettings() {
|
||||
renderer= Renderer::getInstance();
|
||||
|
||||
for(unsigned int i = 0; i < autoScreenShotParams.size(); ++i) {
|
||||
if(autoScreenShotParams[i] == "transparent") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuFile->Check(miFileToggleScreenshotTransparent,true);
|
||||
float alpha = 0.0f;
|
||||
renderer->setAlphaColor(alpha);
|
||||
}
|
||||
if(autoScreenShotParams[i] == "enable_grid") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeGrid,true);
|
||||
if(renderer->getGrid() == false) {
|
||||
renderer->toggleGrid();
|
||||
}
|
||||
}
|
||||
if(autoScreenShotParams[i] == "enable_wireframe") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeWireframe,true);
|
||||
if(renderer->getWireframe() == false) {
|
||||
renderer->toggleWireframe();
|
||||
}
|
||||
}
|
||||
if(autoScreenShotParams[i] == "enable_normals") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeNormals,true);
|
||||
if(renderer->getNormals() == false) {
|
||||
renderer->toggleNormals();
|
||||
}
|
||||
}
|
||||
if(autoScreenShotParams[i] == "disable_grid") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeGrid,false);
|
||||
if(renderer->getGrid() == true) {
|
||||
renderer->toggleGrid();
|
||||
}
|
||||
}
|
||||
if(autoScreenShotParams[i] == "enable_wireframe") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeWireframe,false);
|
||||
if(renderer->getWireframe() == true) {
|
||||
renderer->toggleWireframe();
|
||||
}
|
||||
}
|
||||
if(autoScreenShotParams[i] == "enable_normals") {
|
||||
printf("Screenshot option [%s]\n",autoScreenShotParams[i].c_str());
|
||||
menuMode->Check(miModeNormals,false);
|
||||
if(renderer->getNormals() == true) {
|
||||
renderer->toggleNormals();
|
||||
}
|
||||
}
|
||||
}
|
||||
renderer->init();
|
||||
|
||||
wxCommandEvent event;
|
||||
onMenuRestart(event);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow(){
|
||||
delete renderer;
|
||||
renderer = NULL;
|
||||
|
@ -440,18 +458,27 @@ MainWindow::~MainWindow(){
|
|||
|
||||
void MainWindow::init() {
|
||||
#if wxCHECK_VERSION(2, 9, 1)
|
||||
|
||||
#else
|
||||
glCanvas->SetCurrent();
|
||||
#endif
|
||||
renderer->init();
|
||||
//renderer->init();
|
||||
|
||||
wxCommandEvent event;
|
||||
onMenuRestart(event);
|
||||
//wxCommandEvent event;
|
||||
//onMenuRestart(event);
|
||||
}
|
||||
|
||||
void MainWindow::onPaint(wxPaintEvent &event){
|
||||
//printf("Start onPaint\n");
|
||||
//fflush(stdout);
|
||||
void MainWindow::onPaint(wxPaintEvent &event) {
|
||||
if(!IsShown()) return;
|
||||
|
||||
#if wxCHECK_VERSION(2, 9, 1)
|
||||
glCanvas->setCurrentGLContext();
|
||||
#endif
|
||||
|
||||
if(startupSettingsInited == false) {
|
||||
startupSettingsInited = true;
|
||||
setupStartupSettings();
|
||||
}
|
||||
|
||||
renderer->reset(GetClientSize().x, GetClientSize().y, playerColor);
|
||||
|
||||
|
@ -1006,7 +1033,7 @@ void MainWindow::loadModel(string path) {
|
|||
for(unsigned int idx =0; idx < this->modelPathList.size(); idx++) {
|
||||
string modelPath = this->modelPathList[idx];
|
||||
|
||||
printf("Loading model [%s] %u of %lu\n",modelPath.c_str(),idx, this->modelPathList.size());
|
||||
//printf("Loading model [%s] %u of %lu\n",modelPath.c_str(),idx, this->modelPathList.size());
|
||||
|
||||
if(timer) timer->Stop();
|
||||
delete model;
|
||||
|
@ -1712,9 +1739,25 @@ void translateCoords(wxWindow *wnd, int &x, int &y) {
|
|||
|
||||
// to prevent flicker
|
||||
GlCanvas::GlCanvas(MainWindow * mainWindow, int *args)
|
||||
#if wxCHECK_VERSION(2, 9, 1)
|
||||
: wxGLCanvas(mainWindow, -1, args, wxDefaultPosition, wxDefaultSize, 0, wxT("GLCanvas")) {
|
||||
this->context = new wxGLContext(this);
|
||||
#else
|
||||
: wxGLCanvas(mainWindow, -1, wxDefaultPosition, wxDefaultSize, 0, wxT("GLCanvas"), args) {
|
||||
this->context = NULL;
|
||||
#endif
|
||||
this->mainWindow = mainWindow;
|
||||
//
|
||||
}
|
||||
|
||||
GlCanvas::~GlCanvas() {
|
||||
delete this->context;
|
||||
this->context = NULL;
|
||||
}
|
||||
|
||||
void GlCanvas::setCurrentGLContext() {
|
||||
if(this->context) {
|
||||
this->SetCurrent(*this->context);
|
||||
}
|
||||
}
|
||||
|
||||
// for the mousewheel
|
||||
|
@ -2103,6 +2146,7 @@ bool App::OnInit(){
|
|||
mainWindow->Show();
|
||||
mainWindow->init();
|
||||
mainWindow->Update();
|
||||
mainWindow->setupTimer();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -106,6 +106,8 @@ private:
|
|||
|
||||
string appPath;
|
||||
|
||||
bool startupSettingsInited;
|
||||
|
||||
void loadUnit(string path, string skillName);
|
||||
void loadModel(string path);
|
||||
void loadParticle(string path);
|
||||
|
@ -159,6 +161,9 @@ public:
|
|||
void onKeyDown(wxKeyEvent &e);
|
||||
|
||||
string getModelInfo();
|
||||
|
||||
void setupTimer();
|
||||
void setupStartupSettings();
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
|
@ -171,14 +176,17 @@ private:
|
|||
|
||||
public:
|
||||
GlCanvas(MainWindow *mainWindow, int *args);
|
||||
~GlCanvas();
|
||||
|
||||
void onMouseWheel(wxMouseEvent &event);
|
||||
void onMouseMove(wxMouseEvent &event);
|
||||
void onPaint(wxPaintEvent &event);
|
||||
void onKeyDown(wxKeyEvent &event);
|
||||
void setCurrentGLContext();
|
||||
|
||||
private:
|
||||
MainWindow *mainWindow;
|
||||
wxGLContext *context;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ MainWindow::MainWindow()
|
|||
, menuBar(NULL)
|
||||
, panel(NULL)
|
||||
, glCanvas(NULL)
|
||||
, program(NULL), boxsizer(NULL) {
|
||||
, program(NULL), boxsizer(NULL), startupSettingsInited(false) {
|
||||
|
||||
this->panel = new wxPanel(this, wxID_ANY);
|
||||
|
||||
|
@ -74,6 +74,7 @@ void MainWindow::onToolPlayer(wxCommandEvent& event){
|
|||
|
||||
void MainWindow::init(string fname) {
|
||||
#if wxCHECK_VERSION(2, 9, 1)
|
||||
|
||||
#else
|
||||
glCanvas->SetCurrent();
|
||||
#endif
|
||||
|
@ -349,18 +350,18 @@ void MainWindow::init(string fname) {
|
|||
this->panel->SetSizer(boxsizer);
|
||||
this->Layout();
|
||||
|
||||
program = new Program(glCanvas->GetClientSize().x, glCanvas->GetClientSize().y);
|
||||
//program = new Program(glCanvas->GetClientSize().x, glCanvas->GetClientSize().y);
|
||||
|
||||
fileName = "New (unsaved) Map";
|
||||
if (!fname.empty() && fileExists(fname)) {
|
||||
program->loadMap(fname);
|
||||
//program->loadMap(fname);
|
||||
currentFile = fname;
|
||||
fileName = cutLastExt(extractFileFromDirectoryPath(fname.c_str()));
|
||||
fileDialog->SetPath(ToUnicode(fname));
|
||||
}
|
||||
SetTitle(ToUnicode(currentFile + " - " + winHeader));
|
||||
setDirty(false);
|
||||
setExtension();
|
||||
//setDirty(false);
|
||||
//setExtension();
|
||||
}
|
||||
|
||||
void MainWindow::onClose(wxCloseEvent &event) {
|
||||
|
@ -372,6 +373,21 @@ void MainWindow::onClose(wxCloseEvent &event) {
|
|||
delete this;
|
||||
}
|
||||
|
||||
void MainWindow::setupStartupSettings() {
|
||||
program = new Program(glCanvas->GetClientSize().x, glCanvas->GetClientSize().y);
|
||||
|
||||
fileName = "New (unsaved) Map";
|
||||
if (!currentFile.empty() && fileExists(currentFile)) {
|
||||
program->loadMap(currentFile);
|
||||
//currentFile = fname;
|
||||
fileName = cutLastExt(extractFileFromDirectoryPath(currentFile.c_str()));
|
||||
fileDialog->SetPath(ToUnicode(currentFile));
|
||||
}
|
||||
SetTitle(ToUnicode(currentFile + " - " + winHeader));
|
||||
setDirty(false);
|
||||
setExtension();
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() {
|
||||
delete program;
|
||||
program = NULL;
|
||||
|
@ -395,7 +411,7 @@ void MainWindow::setDirty(bool val) {
|
|||
}
|
||||
|
||||
void MainWindow::setExtension() {
|
||||
if (currentFile.empty()) {
|
||||
if (currentFile.empty() || program == NULL) {
|
||||
return;
|
||||
}
|
||||
string extnsn = ext(currentFile);
|
||||
|
@ -412,7 +428,7 @@ void MainWindow::setExtension() {
|
|||
}
|
||||
|
||||
void MainWindow::onMouseDown(wxMouseEvent &event, int x, int y) {
|
||||
if (event.LeftIsDown()) {
|
||||
if (event.LeftIsDown() && program != NULL) {
|
||||
program->setUndoPoint(enabledGroup);
|
||||
program->setRefAlt(x, y);
|
||||
change(x, y);
|
||||
|
@ -427,18 +443,27 @@ void MainWindow::onMouseDown(wxMouseEvent &event, int x, int y) {
|
|||
|
||||
// for the mousewheel
|
||||
void MainWindow::onMouseWheelDown(wxMouseEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
wxPaintEvent ev;
|
||||
program->incCellSize(1);
|
||||
onPaint(ev);
|
||||
}
|
||||
|
||||
void MainWindow::onMouseWheelUp(wxMouseEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
wxPaintEvent ev;
|
||||
program->incCellSize(-1);
|
||||
onPaint(ev);
|
||||
}
|
||||
|
||||
void MainWindow::onMouseMove(wxMouseEvent &event, int x, int y) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
bool repaint = false;
|
||||
int dif;
|
||||
if (event.LeftIsDown()) {
|
||||
|
@ -477,6 +502,20 @@ void MainWindow::onMouseMove(wxMouseEvent &event, int x, int y) {
|
|||
}
|
||||
|
||||
void MainWindow::onPaint(wxPaintEvent &event) {
|
||||
if(!IsShown()) {
|
||||
event.Skip();
|
||||
return;
|
||||
}
|
||||
|
||||
#if wxCHECK_VERSION(2, 9, 1)
|
||||
glCanvas->setCurrentGLContext();
|
||||
#endif
|
||||
|
||||
if(startupSettingsInited == false) {
|
||||
startupSettingsInited = true;
|
||||
setupStartupSettings();
|
||||
}
|
||||
|
||||
if(lastPaintEvent.getMillis() < 30) {
|
||||
sleep(1);
|
||||
return;
|
||||
|
@ -499,6 +538,10 @@ void MainWindow::onPaint(wxPaintEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuFileLoad(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
fileDialog->SetMessage(wxT("Select Glestmap to load"));
|
||||
fileDialog->SetWildcard(wxT("Glest&Mega Map (*.gbm *.mgm)|*.gbm;*.mgm|Glest Map (*.gbm)|*.gbm|Mega Map (*.mgm)|*.mgm"));
|
||||
if (fileDialog->ShowModal() == wxID_OK) {
|
||||
|
@ -512,6 +555,10 @@ void MainWindow::onMenuFileLoad(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuFileSave(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentFile.empty()) {
|
||||
wxCommandEvent ev;
|
||||
onMenuFileSaveAs(ev);
|
||||
|
@ -523,6 +570,9 @@ void MainWindow::onMenuFileSave(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuFileSaveAs(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
#if wxCHECK_VERSION(2, 9, 1)
|
||||
wxFileDialog fd(this, wxT("Select file"), wxT(""), wxT(""), wxT("*.gbm|*.mgm"), wxFD_SAVE);
|
||||
|
@ -548,6 +598,10 @@ void MainWindow::onMenuFileExit(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuEditUndo(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
// std::cout << "Undo Pressed" << std::endl;
|
||||
if (program->undo()) {
|
||||
wxPaintEvent e;
|
||||
|
@ -557,7 +611,10 @@ void MainWindow::onMenuEditUndo(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuEditRedo(wxCommandEvent &event) {
|
||||
// std::cout << "Redo Pressed" << std::endl;
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (program->redo()) {
|
||||
wxPaintEvent e;
|
||||
onPaint(e);
|
||||
|
@ -566,6 +623,10 @@ void MainWindow::onMenuEditRedo(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuEditReset(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
SimpleDialog simpleDialog;
|
||||
simpleDialog.addValue("Width", "128","(must be 16,32,64,128,256,512...)"); // must be an exponent of two
|
||||
|
@ -591,6 +652,10 @@ void MainWindow::onMenuEditReset(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuEditResetPlayers(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
SimpleDialog simpleDialog;
|
||||
simpleDialog.addValue("Number of players", intToStr(program->getMap()->getMaxFactions()));
|
||||
if (!simpleDialog.show("Reset players")) return;
|
||||
|
@ -606,6 +671,10 @@ void MainWindow::onMenuEditResetPlayers(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuEditResize(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
SimpleDialog simpleDialog;
|
||||
simpleDialog.addValue("Width", intToStr(program->getMap()->getW()),"(must be 16,32,64,128,256,512...)");
|
||||
simpleDialog.addValue("Height", intToStr(program->getMap()->getH()),"(must be 16,32,64,128,256,512...)");
|
||||
|
@ -627,73 +696,121 @@ void MainWindow::onMenuEditResize(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuEditFlipX(wxCommandEvent &event) {
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->flipX();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuEditFlipY(wxCommandEvent &event) {
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->flipY();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuEditMirrorX(wxCommandEvent &event) { // copy left to right
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->mirrorX();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuEditMirrorY(wxCommandEvent &event) { // copy top to bottom
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->mirrorY();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuEditMirrorXY(wxCommandEvent &event) { // copy bottomleft tp topright
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->mirrorXY();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuEditRotatecopyX(wxCommandEvent &event) { // copy left to right, rotated
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->rotatecopyX();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuEditRotatecopyY(wxCommandEvent &event) { // copy top to bottom, rotated
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->rotatecopyY();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuEditRotatecopyXY(wxCommandEvent &event) { // copy bottomleft to topright, rotated
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->rotatecopyXY();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuEditRotatecopyCorner(wxCommandEvent &event) { // copy top left 1/4 to top right 1/4, rotated
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->rotatecopyCorner();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::onMenuEditRandomizeHeights(wxCommandEvent &event) {
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->randomizeMapHeights();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuEditRandomize(wxCommandEvent &event) {
|
||||
program->setUndoPoint(ctAll);
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->setUndoPoint(ctAll);
|
||||
program->randomizeMap();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
void MainWindow::onMenuEditSwitchSurfaces(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
SimpleDialog simpleDialog;
|
||||
simpleDialog.addValue("Surface1", "1","replace this surface with...");
|
||||
simpleDialog.addValue("Surface2", "2","...this and vice versa");
|
||||
|
@ -712,6 +829,10 @@ void MainWindow::onMenuEditSwitchSurfaces(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuEditInfo(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
SimpleDialog simpleDialog;
|
||||
simpleDialog.addValue("Title", program->getMap()->getTitle());
|
||||
simpleDialog.addValue("Description", program->getMap()->getDesc());
|
||||
|
@ -730,6 +851,10 @@ void MainWindow::onMenuEditInfo(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuEditAdvanced(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
SimpleDialog simpleDialog;
|
||||
simpleDialog.addValue("Height Factor", intToStr(program->getMap()->getHeightFactor()),"(lower means map is more more zoomed in)");
|
||||
simpleDialog.addValue("Water Level", intToStr(program->getMap()->getWaterLevel()),"(water is visible below this, and walkable until 1.5 less)");
|
||||
|
@ -751,12 +876,20 @@ void MainWindow::onMenuEditAdvanced(wxCommandEvent &event) {
|
|||
}
|
||||
|
||||
void MainWindow::onMenuViewResetZoomAndPos(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
program->resetOfset();
|
||||
wxPaintEvent e;
|
||||
onPaint(e);
|
||||
}
|
||||
|
||||
void MainWindow::onMenuViewGrid(wxCommandEvent &event) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
menuView->Check(miViewGrid, program->setGridOnOff()); // miViewGrid event.GetId()
|
||||
wxPaintEvent e;
|
||||
onPaint(e);
|
||||
|
@ -860,6 +993,10 @@ void MainWindow::onMenuRadius(wxCommandEvent &e) {
|
|||
}
|
||||
|
||||
void MainWindow::change(int x, int y) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (enabledGroup) {
|
||||
case ctHeight:
|
||||
program->glestChangeMapHeight(x, y, height, radius);
|
||||
|
@ -910,6 +1047,10 @@ void MainWindow::uncheckRadius() {
|
|||
}
|
||||
|
||||
void MainWindow::onKeyDown(wxKeyEvent &e) {
|
||||
if(program == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentBrush == btHeight || currentBrush == btGradient) { // 'height' brush
|
||||
if (e.GetKeyCode() >= '0' && e.GetKeyCode() <= '5') {
|
||||
height = e.GetKeyCode() - 48; // '0'-'5' == 0-5
|
||||
|
@ -1077,10 +1218,28 @@ END_EVENT_TABLE()
|
|||
// =====================================================
|
||||
|
||||
GlCanvas::GlCanvas(MainWindow *mainWindow, wxWindow *parent, int *args)
|
||||
#if wxCHECK_VERSION(2, 9, 1)
|
||||
: wxGLCanvas(parent, -1, args, wxDefaultPosition, wxDefaultSize, 0, wxT("GLCanvas")) {
|
||||
this->context = new wxGLContext(this);
|
||||
#else
|
||||
: wxGLCanvas(parent, -1, wxDefaultPosition, wxDefaultSize, 0, wxT("GLCanvas"), args) {
|
||||
this->context = NULL;
|
||||
#endif
|
||||
|
||||
this->mainWindow = mainWindow;
|
||||
}
|
||||
|
||||
GlCanvas::~GlCanvas() {
|
||||
delete this->context;
|
||||
this->context = NULL;
|
||||
}
|
||||
|
||||
void GlCanvas::setCurrentGLContext() {
|
||||
if(this->context) {
|
||||
this->SetCurrent(*this->context);
|
||||
}
|
||||
}
|
||||
|
||||
void translateCoords(wxWindow *wnd, int &x, int &y) {
|
||||
/*
|
||||
#ifdef WIN32
|
||||
|
|
|
@ -183,6 +183,8 @@ private:
|
|||
|
||||
wxBoxSizer *boxsizer;
|
||||
|
||||
bool startupSettingsInited;
|
||||
|
||||
public:
|
||||
MainWindow();
|
||||
~MainWindow();
|
||||
|
@ -247,9 +249,11 @@ public:
|
|||
void uncheckRadius();
|
||||
|
||||
private:
|
||||
|
||||
bool isDirty() const { return fileModified; }
|
||||
void setDirty(bool val=true);
|
||||
void setExtension();
|
||||
void setupStartupSettings();
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
|
@ -262,14 +266,18 @@ private:
|
|||
|
||||
public:
|
||||
GlCanvas(MainWindow *mainWindow, wxWindow *parent, int *args);
|
||||
~GlCanvas();
|
||||
|
||||
void onMouseDown(wxMouseEvent &event);
|
||||
void onMouseMove(wxMouseEvent &event);
|
||||
void onMouseWheel(wxMouseEvent &event);
|
||||
void onKeyDown(wxKeyEvent &event);
|
||||
void onPaint(wxPaintEvent &event);
|
||||
|
||||
void setCurrentGLContext();
|
||||
private:
|
||||
MainWindow *mainWindow;
|
||||
wxGLContext *context;
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
|
|
Loading…
Reference in New Issue