more fixes for editor

This commit is contained in:
nosogo 2010-12-05 01:33:28 +00:00
parent 81683509d9
commit f545edad68
15 changed files with 120 additions and 76 deletions

View File

@ -1,4 +1,5 @@
; === propertyMap File === ; === propertyMap File ===
AiLog=0 AiLog=0
AiRedir=false AiRedir=false
AllowDownloadDataSynch=false AllowDownloadDataSynch=false
@ -15,8 +16,8 @@ ConsoleTimeout=20
DayTime=1000 DayTime=1000
DebugLogFile=debug.log DebugLogFile=debug.log
DebugMode=false DebugMode=false
DebugPerformance=false
DebugNetwork=false DebugNetwork=false
DebugPerformance=false
DebugWorldSynch=false DebugWorldSynch=false
DepthBits=16 DepthBits=16
FactoryGraphics=OpenGL FactoryGraphics=OpenGL
@ -44,17 +45,17 @@ FontMenuNormalPrefix=-*-helvetica-*-r-*-*-
FontMenuVeryBigBaseSize=25 FontMenuVeryBigBaseSize=25
FontSizeAdjustment=0 FontSizeAdjustment=0
Lang=english Lang=english
MaxLights=3 MapPreview=1
;Masterserver=http://soft-haus.com/glest/cgi-bin/ MasterServerExternalPort=61357
;MasterServerExternalPortList=80,143,587,21,110,25,443,993,995
Masterserver=http://megaglest.pepper.freeit.org/masterserver/
MasterServerExternalPortList=61357,61358,61359,61360,61000,80,143,587,21,110,25,443,993,995,1080,8080 MasterServerExternalPortList=61357,61358,61359,61360,61000,80,143,587,21,110,25,443,993,995,1080,8080
Masterserver=http://megaglest.pepper.freeit.org/masterserver/
MaxLights=3
NetPlayerName=newbie NetPlayerName=newbie
NetworkConsistencyChecks=true NetworkConsistencyChecks=true
PhotoMode=false PhotoMode=false
RefreshFrequency=75 RefreshFrequency=75
ScreenHeight=768 ScreenHeight=1200
ScreenWidth=1024 ScreenWidth=1600
ServerIp=192.168.0.107 ServerIp=192.168.0.107
ServerPort=61357 ServerPort=61357
ShadowAlpha=0.2 ShadowAlpha=0.2
@ -65,9 +66,9 @@ SoundStaticBuffers=16
SoundStreamingBuffers=4 SoundStreamingBuffers=4
SoundVolumeAmbient=80 SoundVolumeAmbient=80
SoundVolumeFx=80 SoundVolumeFx=80
SoundVolumeMusic=90 SoundVolumeMusic=10
StencilBits=0 StencilBits=0
Textures3D=true Textures3D=1
UnitParticles=true UnitParticles=1
UserData_Root=mydata/ UserData_Root=mydata/
Windowed=false Windowed=0

View File

@ -99,7 +99,7 @@ MainWindow::MainWindow(const string &modelPath)
menuSpeed->Append(miSpeedSlower, wxT("&Slower\t-")); menuSpeed->Append(miSpeedSlower, wxT("&Slower\t-"));
menuSpeed->Append(miSpeedFaster, wxT("&Faster\t+")); menuSpeed->Append(miSpeedFaster, wxT("&Faster\t+"));
menuSpeed->AppendSeparator(); menuSpeed->AppendSeparator();
menuSpeed->Append(miRestart, wxT("&Restart particles\tR")); menuSpeed->Append(miRestart, wxT("&Restart particles\tR"), wxT("Restart particle animations, this also reloads model and particle files if they are changed"));
menu->Append(menuSpeed, wxT("&Speed")); menu->Append(menuSpeed, wxT("&Speed"));
//custom color //custom color
@ -974,7 +974,8 @@ bool App::OnInit(){
std::cout << "glest_g3dviewer [G3D 3D-MODEL FILE]" << std::endl << std::endl; std::cout << "glest_g3dviewer [G3D 3D-MODEL FILE]" << std::endl << std::endl;
std::cout << "Displays glest 3D-models and unit/projectile/splash particle systems." << std::endl; std::cout << "Displays glest 3D-models and unit/projectile/splash particle systems." << std::endl;
std::cout << "rotate with left mouse button, zoom with right mouse button or mousewheel." << std::endl; std::cout << "rotate with left mouse button, zoom with right mouse button or mousewheel." << std::endl;
std::cout << "Use ctrl to load more than one particle system. Press R to restart particles." << std::endl << std::endl; std::cout << "Use ctrl to load more than one particle system." << std::endl;
std::cout << "Press R to restart particles, this also reloads all files if they are changed." << std::endl << std::endl;
exit (0); exit (0);
} }
modelPath= wxFNCONV(argv[1]); modelPath= wxFNCONV(argv[1]);

View File

@ -949,13 +949,13 @@ void Renderer::renderChatManager(const ChatManager *chatManager) {
// white shadowed is default ( in the menu for example ) // white shadowed is default ( in the menu for example )
fontColor=Vec4f(1.f, 1.f, 1.f, 0.0f); fontColor=Vec4f(1.f, 1.f, 1.f, 0.0f);
} }
renderTextShadow( renderTextShadow(
text, text,
CoreData::getInstance().getConsoleFont(), CoreData::getInstance().getConsoleFont(),
fontColor, fontColor,
300, 150); 300, 150);
//textRenderer->begin(CoreData::getInstance().getConsoleFont()); //textRenderer->begin(CoreData::getInstance().getConsoleFont());
//textRenderer->render(text, 300, 150); //textRenderer->render(text, 300, 150);
//textRenderer->end(); //textRenderer->end();
@ -3172,20 +3172,20 @@ void Renderer::renderUnitsFast(bool renderingShadows) {
glPushAttrib(GL_ENABLE_BIT| GL_TEXTURE_BIT); glPushAttrib(GL_ENABLE_BIT| GL_TEXTURE_BIT);
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
glAlphaFunc(GL_GREATER, 0.4f); glAlphaFunc(GL_GREATER, 0.4f);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
//set color to the texture alpha //set color to the texture alpha
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE); glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PRIMARY_COLOR); glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PRIMARY_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
//set alpha to the texture alpha //set alpha to the texture alpha
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE); glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
} }
modelRenderer->begin(false, renderingShadows, false); modelRenderer->begin(false, renderingShadows, false);
glInitNames(); glInitNames();
} }
@ -3236,26 +3236,26 @@ void Renderer::renderUnitsFast(bool renderingShadows) {
modelRenderStarted = true; modelRenderStarted = true;
glPushAttrib(GL_ENABLE_BIT| GL_TEXTURE_BIT); glPushAttrib(GL_ENABLE_BIT| GL_TEXTURE_BIT);
glDisable(GL_LIGHTING); glDisable(GL_LIGHTING);
if (!renderingShadows) { if (!renderingShadows) {
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
} else { } else {
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
glAlphaFunc(GL_GREATER, 0.4f); glAlphaFunc(GL_GREATER, 0.4f);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
//set color to the texture alpha //set color to the texture alpha
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE); glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PRIMARY_COLOR); glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PRIMARY_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
//set alpha to the texture alpha //set alpha to the texture alpha
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE); glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
} }
modelRenderer->begin(false, renderingShadows, false); modelRenderer->begin(false, renderingShadows, false);
glInitNames(); glInitNames();
@ -4119,7 +4119,7 @@ VisibleQuadContainerCache & Renderer::getQuadCache( bool updateOnDirtyFrame,
return quadCache; return quadCache;
} }
void Renderer::renderMapPreview( const MapPreview *map, bool renderAll, void Renderer::renderMapPreview( const MapPreview *map, bool renderAll,
int screenPosX, int screenPosY, int screenPosX, int screenPosY,
Texture2D **renderToTexture) { Texture2D **renderToTexture) {
float alt=0; float alt=0;
@ -4130,7 +4130,7 @@ void Renderer::renderMapPreview( const MapPreview *map, bool renderAll,
float playerCrossSize=2; float playerCrossSize=2;
float clientW=renderMapWidth*cellSize; float clientW=renderMapWidth*cellSize;
float clientH=renderMapHeight*cellSize;; float clientH=renderMapHeight*cellSize;;
const Metrics &metrics= Metrics::getInstance(); const Metrics &metrics= Metrics::getInstance();
// stretch small maps to 128x128 // stretch small maps to 128x128
@ -4205,7 +4205,7 @@ void Renderer::renderMapPreview( const MapPreview *map, bool renderAll,
//glEnable( GL_SCISSOR_TEST ); //glEnable( GL_SCISSOR_TEST );
//glScissor(screenPosX, screenPosY,screenPosX-clientW, screenPosY-clientH); //glScissor(screenPosX, screenPosY,screenPosX-clientW, screenPosY-clientH);
//int newX = screenPosX - (metrics.getVirtualW() / 2); //int newX = screenPosX - (metrics.getVirtualW() / 2);
//int newY = screenPosY - (metrics.getVirtualH() / 2); //int newY = screenPosY - (metrics.getVirtualH() / 2);
//int newX = 0; //int newX = 0;
@ -4401,21 +4401,21 @@ void Renderer::renderMapPreview( const MapPreview *map, bool renderAll,
if(renderToTexture != NULL) { if(renderToTexture != NULL) {
//*renderToTexture = saveScreenToTexture(screenPosX, screenPosY, metrics.getVirtualW(), metrics.getVirtualH()); // *renderToTexture = saveScreenToTexture(screenPosX, screenPosY, metrics.getVirtualW(), metrics.getVirtualH());
//*renderToTexture = saveScreenToTexture(0, 0, metrics.getVirtualW(), metrics.getVirtualH()); // *renderToTexture = saveScreenToTexture(0, 0, metrics.getVirtualW(), metrics.getVirtualH());
/* /*
Texture2DGl *texture = static_cast<Texture2DGl *>(*renderToTexture); Texture2DGl *texture = static_cast<Texture2DGl *>(*renderToTexture);
if(texture != NULL) { if(texture != NULL) {
//*renderToTexture = saveScreenToTexture(screenPosX, screenPosY, clientW, clientH); // *renderToTexture = saveScreenToTexture(screenPosX, screenPosY, clientW, clientH);
texture->dettachFrameBufferFromTexture(); texture->dettachFrameBufferFromTexture();
// Signal the threads queue to add a screenshot save request // Signal the threads queue to add a screenshot save request
//MutexSafeWrapper safeMutex(&saveScreenShotThreadAccessor); // MutexSafeWrapper safeMutex(&saveScreenShotThreadAccessor);
//saveScreenQueue.push_back(make_pair("bob.png",texture->getPixmap())); // saveScreenQueue.push_back(make_pair("bob.png",texture->getPixmap()));
//*renderToTexture=NULL; // *renderToTexture=NULL;
//safeMutex.ReleaseLock(); // safeMutex.ReleaseLock();
//texture->teardown_FBO_RBO(); // texture->teardown_FBO_RBO();
} }
*/ */
} }
@ -4424,9 +4424,9 @@ void Renderer::renderMapPreview( const MapPreview *map, bool renderAll,
// setLastRenderFps and calculate shadowsOffDueToMinRender // setLastRenderFps and calculate shadowsOffDueToMinRender
void Renderer::setLastRenderFps(int value) { void Renderer::setLastRenderFps(int value) {
lastRenderFps = value; lastRenderFps = value;
smoothedRenderFps=(MIN_FPS_NORMAL_RENDERING*smoothedRenderFps+lastRenderFps)/(MIN_FPS_NORMAL_RENDERING+1.0f); smoothedRenderFps=(MIN_FPS_NORMAL_RENDERING*smoothedRenderFps+lastRenderFps)/(MIN_FPS_NORMAL_RENDERING+1.0f);
if(smoothedRenderFps>=MIN_FPS_NORMAL_RENDERING_TOP_THRESHOLD){ if(smoothedRenderFps>=MIN_FPS_NORMAL_RENDERING_TOP_THRESHOLD){
shadowsOffDueToMinRender=false; shadowsOffDueToMinRender=false;
} }

View File

@ -114,6 +114,7 @@ MainWindow::MainWindow()
//view //view
menuView = new wxMenu(); menuView = new wxMenu();
menuView->Append(miViewResetZoomAndPos, wxT("&Reset zoom and pos")); menuView->Append(miViewResetZoomAndPos, wxT("&Reset zoom and pos"));
menuView->AppendCheckItem(miViewGrid, wxT("&Grid"));
menuView->AppendSeparator(); menuView->AppendSeparator();
menuView->Append(miViewHelp, wxT("&Help...")); menuView->Append(miViewHelp, wxT("&Help..."));
menuView->Append(miViewAbout, wxT("&About...")); menuView->Append(miViewAbout, wxT("&About..."));
@ -293,15 +294,15 @@ MainWindow::MainWindow()
toolbar2->AddTool(miBrushHeight +10, _("brush_height_p4"), wxBitmap(brush_height_p4)); toolbar2->AddTool(miBrushHeight +10, _("brush_height_p4"), wxBitmap(brush_height_p4));
toolbar2->AddTool(miBrushHeight +11, _("brush_height_p5"), wxBitmap(brush_height_p5)); toolbar2->AddTool(miBrushHeight +11, _("brush_height_p5"), wxBitmap(brush_height_p5));
toolbar2->AddSeparator(); toolbar2->AddSeparator();
toolbar2->AddTool(miRadius + 1, _("radius1"), wxBitmap(radius_1)); toolbar2->AddTool(miRadius + 1, _("radius1"), wxBitmap(radius_1), _("1 (1x1)"));
toolbar2->AddTool(miRadius + 2, _("radius2"), wxBitmap(radius_2)); toolbar2->AddTool(miRadius + 2, _("radius2"), wxBitmap(radius_2), _("2 (3x3)"));
toolbar2->AddTool(miRadius + 3, _("radius3"), wxBitmap(radius_3)); toolbar2->AddTool(miRadius + 3, _("radius3"), wxBitmap(radius_3), _("3 (5x5)"));
toolbar2->AddTool(miRadius + 4, _("radius4"), wxBitmap(radius_4)); toolbar2->AddTool(miRadius + 4, _("radius4"), wxBitmap(radius_4), _("4 (7x7)"));
toolbar2->AddTool(miRadius + 5, _("radius5"), wxBitmap(radius_5)); toolbar2->AddTool(miRadius + 5, _("radius5"), wxBitmap(radius_5), _("5 (9x9)"));
toolbar2->AddTool(miRadius + 6, _("radius6"), wxBitmap(radius_6)); toolbar2->AddTool(miRadius + 6, _("radius6"), wxBitmap(radius_6), _("6 (11x11)"));
toolbar2->AddTool(miRadius + 7, _("radius7"), wxBitmap(radius_7)); toolbar2->AddTool(miRadius + 7, _("radius7"), wxBitmap(radius_7), _("7 (13x13)"));
toolbar2->AddTool(miRadius + 8, _("radius8"), wxBitmap(radius_8)); toolbar2->AddTool(miRadius + 8, _("radius8"), wxBitmap(radius_8), _("8 (15x15)"));
toolbar2->AddTool(miRadius + 9, _("radius9"), wxBitmap(radius_9)); toolbar2->AddTool(miRadius + 9, _("radius9"), wxBitmap(radius_9), _("9 (17x17)"));
toolbar2->Realize(); toolbar2->Realize();
wxBoxSizer *boxsizer = new wxBoxSizer(wxVERTICAL); wxBoxSizer *boxsizer = new wxBoxSizer(wxVERTICAL);
@ -708,7 +709,7 @@ void MainWindow::onMenuEditInfo(wxCommandEvent &event) {
void MainWindow::onMenuEditAdvanced(wxCommandEvent &event) { void MainWindow::onMenuEditAdvanced(wxCommandEvent &event) {
SimpleDialog simpleDialog; SimpleDialog simpleDialog;
simpleDialog.addValue("Height Factor", intToStr(program->getMap()->getHeightFactor()),"(lower means map is more more zoomed in)"); simpleDialog.addValue("Height Factor", intToStr(program->getMap()->getHeightFactor()),"(lower means map is more more zoomed in)");
simpleDialog.addValue("Water Level", intToStr(program->getMap()->getWaterLevel()),"(which level water is visible but still walkable)"); simpleDialog.addValue("Water Level", intToStr(program->getMap()->getWaterLevel()),"(water is visible below this, and walkable until 1.5 less)");
if (!simpleDialog.show("Advanced")) return; if (!simpleDialog.show("Advanced")) return;
try { try {
@ -728,6 +729,13 @@ void MainWindow::onMenuViewResetZoomAndPos(wxCommandEvent &event) {
onPaint(e); onPaint(e);
} }
void MainWindow::onMenuViewGrid(wxCommandEvent &event) {
menuView->Check(miViewGrid, program->setGridOnOff()); // miViewGrid event.GetId()
wxPaintEvent e;
onPaint(e);
}
void MainWindow::onMenuViewAbout(wxCommandEvent &event) { void MainWindow::onMenuViewAbout(wxCommandEvent &event) {
MsgDialog( MsgDialog(
this, this,
@ -739,8 +747,10 @@ void MainWindow::onMenuViewHelp(wxCommandEvent &event) {
MsgDialog(this, MsgDialog(this,
wxT("Draw with left mouse\nMove viewport with right mouse drag\nZoom with center mouse drag, or mousewheel\n\ wxT("Draw with left mouse\nMove viewport with right mouse drag\nZoom with center mouse drag, or mousewheel\n\
You can change brush in the same category with key 1-9\n\ You can change brush in the same category with key 1-9\n\
Height tool (blue) builds with integer height steps 0-20, \nwhile Gradient tool (red) uses any real number \n\
Units can go over water as long as it is less than 1.5 deep\n\
A good idea is to put some stone, gold and tree near starting position\n\ A good idea is to put some stone, gold and tree near starting position\n\
Starting position needs an open area for the tower and at starting units\n"), Starting position needs an open area for the tower and the starting units\n"),
wxT("Help")).ShowModal(); wxT("Help")).ShowModal();
/* 5 away and 10x10 empty area? */ /* 5 away and 10x10 empty area? */
} }
@ -996,6 +1006,7 @@ BEGIN_EVENT_TABLE(MainWindow, wxFrame)
EVT_MENU(miEditAdvanced, MainWindow::onMenuEditAdvanced) EVT_MENU(miEditAdvanced, MainWindow::onMenuEditAdvanced)
EVT_MENU(miViewResetZoomAndPos, MainWindow::onMenuViewResetZoomAndPos) EVT_MENU(miViewResetZoomAndPos, MainWindow::onMenuViewResetZoomAndPos)
EVT_MENU(miViewGrid, MainWindow::onMenuViewGrid)
EVT_MENU(miViewAbout, MainWindow::onMenuViewAbout) EVT_MENU(miViewAbout, MainWindow::onMenuViewAbout)
EVT_MENU(miViewHelp, MainWindow::onMenuViewHelp) EVT_MENU(miViewHelp, MainWindow::onMenuViewHelp)

View File

@ -123,6 +123,7 @@ private:
miEditAdvanced, miEditAdvanced,
miViewResetZoomAndPos, miViewResetZoomAndPos,
miViewGrid,
miViewAbout, miViewAbout,
miViewHelp, miViewHelp,
@ -222,6 +223,7 @@ public:
void onMenuEditAdvanced(wxCommandEvent &event); void onMenuEditAdvanced(wxCommandEvent &event);
void onMenuViewResetZoomAndPos(wxCommandEvent &event); void onMenuViewResetZoomAndPos(wxCommandEvent &event);
void onMenuViewGrid(wxCommandEvent &event);
void onMenuViewAbout(wxCommandEvent &event); void onMenuViewAbout(wxCommandEvent &event);
void onMenuViewHelp(wxCommandEvent &event); void onMenuViewHelp(wxCommandEvent &event);

View File

@ -9,8 +9,9 @@
// License, or (at your option) any later version // License, or (at your option) any later version
// ============================================================== // ==============================================================
// This file is not used anoymore // This file is not used anymore
/*
#include "map.h" #include "map.h"
#include <cmath> #include <cmath>
@ -349,12 +350,12 @@ void Map::mirrorXY() { // copy leftbottom to topright
} }
} }
} }
/*
void Map::rotatecopyX(); // void Map::rotatecopyX();
void Map::rotatecopyY(); // void Map::rotatecopyY();
void Map::rotatecopyXY(); // void Map::rotatecopyXY();
void Map::rotatecopyCorner(); // void Map::rotatecopyCorner();
*/
void Map::changeSurface(int x, int y, int surface, int radius) { void Map::changeSurface(int x, int y, int surface, int radius) {
int i, j; int i, j;
@ -804,4 +805,6 @@ void Map::applyNewHeight(float newHeight, int x, int y, int strenght) {
}// end namespace }// end namespace
*/

View File

@ -9,8 +9,9 @@
// License, or (at your option) any later version // License, or (at your option) any later version
// ============================================================== // ==============================================================
// This file is not used anoymore // This file is not used anymore
/*
#ifndef _MAPEDITOR_MAP_H_ #ifndef _MAPEDITOR_MAP_H_
#define _MAPEDITOR_MAP_H_ #define _MAPEDITOR_MAP_H_
@ -141,3 +142,6 @@ public:
}// end namespace }// end namespace
#endif #endif
*/

View File

@ -146,6 +146,7 @@ MapPreview *Program::map = NULL;
Program::Program(int w, int h) { Program::Program(int w, int h) {
cellSize = 6; cellSize = 6;
grid=false;
ofsetX = 0; ofsetX = 0;
ofsetY = 0; ofsetY = 0;
map = new MapPreview(); map = new MapPreview();
@ -178,6 +179,7 @@ int Program::getResource(int x, int y) {
} }
} }
// TODO: move editor-specific code from shared_lib to here.
void Program::glestChangeMapHeight(int x, int y, int Height, int radius) { void Program::glestChangeMapHeight(int x, int y, int Height, int radius) {
map->glestChangeHeight((x - ofsetX) / cellSize, (y + ofsetY) / cellSize, Height, radius); map->glestChangeHeight((x - ofsetX) / cellSize, (y + ofsetY) / cellSize, Height, radius);
} }
@ -238,7 +240,7 @@ bool Program::redo() {
} }
void Program::renderMap(int w, int h) { void Program::renderMap(int w, int h) {
renderer.renderMap(map, ofsetX, ofsetY, w, h, cellSize); renderer.renderMap(map, ofsetX, ofsetY, w, h, cellSize, grid);
} }
void Program::setRefAlt(int x, int y) { void Program::setRefAlt(int x, int y) {
@ -444,6 +446,11 @@ void Program::resetOfset() {
cellSize = 6; cellSize = 6;
} }
bool Program::setGridOnOff() {
grid=!grid;
return grid;
}
void Program::setMapAdvanced(int altFactor, int waterLevel) { void Program::setMapAdvanced(int altFactor, int waterLevel) {
map->setAdvanced(altFactor, waterLevel); map->setAdvanced(altFactor, waterLevel);
} }

View File

@ -96,6 +96,7 @@ private:
BaseRenderer renderer; BaseRenderer renderer;
int ofsetX, ofsetY; int ofsetX, ofsetY;
int cellSize; int cellSize;
bool grid; // show grid option
//static Map *map; //static Map *map;
static MapPreview *map; static MapPreview *map;
friend class UndoPoint; friend class UndoPoint;
@ -151,6 +152,7 @@ public:
void setOfset(int x, int y); void setOfset(int x, int y);
void incCellSize(int i); void incCellSize(int i);
void resetOfset(); void resetOfset();
bool setGridOnOff();
int getObject(int x, int y); int getObject(int x, int y);
int getResource(int x, int y); int getResource(int x, int y);

View File

@ -9,6 +9,9 @@
// License, or (at your option) any later version // License, or (at your option) any later version
// ============================================================== // ==============================================================
//this file is not used
/*
#include "renderer.h" #include "renderer.h"
@ -37,7 +40,7 @@ void Renderer::init(int clientW, int clientH) {
assertGl(); assertGl();
} }
void Renderer::renderMap(MapPreview *map, int x, int y, int clientW, int clientH, int cellSize) { void Renderer::renderMap(MapPreview *map, int x, int y, int clientW, int clientH, int cellSize, bool grid) {
float alt; float alt;
float showWater; float showWater;
@ -129,13 +132,13 @@ void Renderer::renderMap(MapPreview *map, int x, int y, int clientW, int clientH
glColor3fv((surfColor*2.f).ptr()); glColor3fv((surfColor*2.f).ptr());
//left //left
if (i > 0 && map->getHeight(i - 1, j) < map->getHeight(i, j)) { if (grid || (i > 0 && map->getHeight(i - 1, j) < map->getHeight(i, j))) {
glBegin(GL_LINES); glBegin(GL_LINES);
glVertex2i(i * cellSize, clientH - (j + 1) * cellSize); glVertex2i(i * cellSize, clientH - (j + 1) * cellSize);
glVertex2i(i * cellSize, clientH - j * cellSize); glVertex2i(i * cellSize, clientH - j * cellSize);
glEnd(); glEnd();
} }
if (j > 0 && map->getHeight(i, j - 1) < map->getHeight(i, j)) { if (grid || (j > 0 && map->getHeight(i, j - 1) < map->getHeight(i, j))) {
glBegin(GL_LINES); glBegin(GL_LINES);
glVertex2i(i * cellSize, clientH - j * cellSize); glVertex2i(i * cellSize, clientH - j * cellSize);
glVertex2i((i + 1) * cellSize, clientH - j * cellSize); glVertex2i((i + 1) * cellSize, clientH - j * cellSize);
@ -191,4 +194,8 @@ void Renderer::renderMap(MapPreview *map, int x, int y, int clientW, int clientH
assertGl(); assertGl();
} }
}// end namespace }// end namespace
*/

View File

@ -9,6 +9,11 @@
// License, or (at your option) any later version // License, or (at your option) any later version
// ============================================================== // ==============================================================
//this file is not used
/*
#ifndef _MAPEDITOR_RENDERER_H_ #ifndef _MAPEDITOR_RENDERER_H_
#define _MAPEDITOR_RENDERER_H_ #define _MAPEDITOR_RENDERER_H_
@ -25,9 +30,11 @@ namespace MapEditor {
class Renderer { class Renderer {
public: public:
void init(int clientW, int clientH); void init(int clientW, int clientH);
void renderMap(MapPreview *map, int x, int y, int clientW, int clientH, int cellSize); void renderMap(MapPreview *map, int x, int y, int clientW, int clientH, int cellSize, bool grid=false);
}; };
}// end namespace }// end namespace
#endif #endif
*/

View File

@ -27,7 +27,7 @@ public:
~BaseRenderer() { } ~BaseRenderer() { }
virtual void initMapSurface(int clientW, int clientH); virtual void initMapSurface(int clientW, int clientH);
virtual void renderMap(MapPreview *map, int x, int y, int clientW, int clientH, int cellSize); virtual void renderMap(MapPreview *map, int x, int y, int clientW, int clientH, int cellSize, bool grid=false);
}; };
}} // end namespace }} // end namespace

View File

@ -3,9 +3,9 @@
// //
// Copyright (C) 2001-2008 Martio Figueroa // Copyright (C) 2001-2008 Martio Figueroa
// //
// You can redistribute this code and/or modify it under // You can redistribute this code and/or modify it under
// the terms of the GNU General Public License as published // the terms of the GNU General Public License as published
// by the Free Software Foundation; either version 2 of the // by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version // License, or (at your option) any later version
// ============================================================== // ==============================================================
@ -41,11 +41,11 @@ public:
class RendererMapInterface { class RendererMapInterface {
public: public:
virtual void initMapSurface(int clientW, int clientH) = 0; virtual void initMapSurface(int clientW, int clientH) = 0;
virtual void renderMap(MapPreview *map, int x, int y, int clientW, int clientH, int cellSize) = 0; virtual void renderMap(MapPreview *map, int x, int y, int clientW, int clientH, int cellSize, bool grid) = 0;
}; };
// ===================================================== // =====================================================
// class GraphicsInterface // class GraphicsInterface
// //
/// Interface for the graphic engine /// Interface for the graphic engine
// ===================================================== // =====================================================
@ -68,7 +68,7 @@ public:
static GraphicsInterface &getInstance(); static GraphicsInterface &getInstance();
void setFactory(GraphicsFactory *graphicsFactory); void setFactory(GraphicsFactory *graphicsFactory);
void setCurrentContext(Context *context); void setCurrentContext(Context *context);
Context *getCurrentContext() const {return currentContext;} Context *getCurrentContext() const {return currentContext;}
GraphicsFactory *getFactory() const {return graphicsFactory;} GraphicsFactory *getFactory() const {return graphicsFactory;}

View File

@ -36,7 +36,7 @@ void BaseRenderer::initMapSurface(int clientW, int clientH) {
} }
void BaseRenderer::renderMap(MapPreview *map, int x, int y, void BaseRenderer::renderMap(MapPreview *map, int x, int y,
int clientW, int clientH, int cellSize) { int clientW, int clientH, int cellSize, bool grid) {
float alt=0; float alt=0;
float showWater=0; float showWater=0;
@ -112,14 +112,14 @@ void BaseRenderer::renderMap(MapPreview *map, int x, int y,
// if (!found) { // if (!found) {
glColor3fv((surfColor*0.5f).ptr()); glColor3fv((surfColor*0.5f).ptr());
//left //left
if (i > 0 && map->getHeight(i - 1, j) > map->getHeight(i, j)) { if (grid || (i > 0 && map->getHeight(i - 1, j) > map->getHeight(i, j))) {
glBegin(GL_LINES); glBegin(GL_LINES);
glVertex2i(i * cellSize, clientH - (j + 1) * cellSize); glVertex2i(i * cellSize, clientH - (j + 1) * cellSize);
glVertex2i(i * cellSize, clientH - j * cellSize); glVertex2i(i * cellSize, clientH - j * cellSize);
glEnd(); glEnd();
} }
//down //down
if (j > 0 && map->getHeight(i, j - 1) > map->getHeight(i, j)) { if (grid || (j > 0 && map->getHeight(i, j - 1) > map->getHeight(i, j))) {
glBegin(GL_LINES); glBegin(GL_LINES);
glVertex2i(i * cellSize, clientH - j * cellSize); glVertex2i(i * cellSize, clientH - j * cellSize);
glVertex2i((i + 1) * cellSize, clientH - j * cellSize); glVertex2i((i + 1) * cellSize, clientH - j * cellSize);

View File

@ -83,8 +83,7 @@ int MapPreview::getStartLocationY(int index) const {
static int get_dist(int delta_x, int delta_y) { static int get_dist(int delta_x, int delta_y) {
float dx = (float)delta_x; float dx = (float)delta_x;
float dy = (float)delta_y; float dy = (float)delta_y;
return static_cast<int>(sqrtf(dx * dx + dy * dy)+0.5); // round correctly
return static_cast<int>(sqrtf(dx * dx + dy * dy));
} }
void MapPreview::glestChangeHeight(int x, int y, int height, int radius) { void MapPreview::glestChangeHeight(int x, int y, int height, int radius) {
@ -169,8 +168,8 @@ void MapPreview::pirateChangeHeight(int x, int y, int height, int radius) {
} }
//std::cout << endl; //std::cout << endl;
// A brush with radius n cells should have a true radius of n-1 distance // // A brush with radius n cells should have a true radius of n-1 distance // No becasue then "radius" 1==2
radius -= 1; // radius -= 1;
for (int i = x - radius; i <= x + radius; i++) { for (int i = x - radius; i <= x + radius; i++) {
for (int j = y - radius; j <= y + radius; j++) { for (int j = y - radius; j <= y + radius; j++) {
int dist = get_dist(i - x, j - y); int dist = get_dist(i - x, j - y);
@ -360,7 +359,7 @@ void MapPreview::changeSurface(int x, int y, MapSurfaceType surface, int radius)
for (j = y - radius + 1; j < y + radius; j++) { for (j = y - radius + 1; j < y + radius; j++) {
if (inside(i, j)) { if (inside(i, j)) {
dist = get_dist(i - x, j - y); dist = get_dist(i - x, j - y);
if (radius >= dist) { if (radius > dist) { // was >=
cells[i][j].surface = surface; cells[i][j].surface = surface;
} }
} }