// ============================================================== // This file is part of Glest (www.glest.org) // // Copyright (C) 2001-2008 Marti�o Figueroa // // You can redistribute this code and/or modify it under // the terms of the GNU General Public License as published // by the Free Software Foundation; either version 2 of the // License, or (at your option) any later version // ============================================================== //this file is not used /* #include "renderer.h" #include #include "opengl.h" #include "vec.h" using namespace Shared::Graphics; using namespace Shared::Graphics::Gl; namespace MapEditor { // =============================================== // class Renderer // =============================================== void Renderer::init(int clientW, int clientH) { assertGl(); glFrontFace(GL_CW); glEnable(GL_CULL_FACE); glPolygonMode(GL_FRONT, GL_FILL); glClearColor(0.5, 0.5, 0.5, 1.0); assertGl(); } void Renderer::renderMap(MapPreview *map, int x, int y, int clientW, int clientH, int cellSize, bool grid) { float alt; float showWater; assertGl(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, clientW, 0, clientH, 1, -1); glViewport(0, 0, clientW, clientH); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glPushAttrib(GL_CURRENT_BIT); glTranslatef(static_cast(x), static_cast(y), 0.0f); glLineWidth(1); glClear(GL_COLOR_BUFFER_BIT); glColor3f(0, 0, 0); for (int j = 0; j < map->getH(); j++) { for (int i = 0; i < map->getW(); i++) { if (i * cellSize + x > -cellSize && i * cellSize + x < clientW && clientH - cellSize - j * cellSize + y > -cellSize && clientH - cellSize - j * cellSize + y < clientH) { //surface alt = map->getHeight(i, j) / 20.f; showWater = map->getWaterLevel()/ 20.f - alt; showWater = (showWater > 0)? showWater:0; Vec3f surfColor; switch (map->getSurface(i, j)) { case 1: surfColor = Vec3f(0.0, 0.8f * alt, 0.f + showWater); break; case 2: surfColor = Vec3f(0.4f * alt, 0.6f * alt, 0.f + showWater); break; case 3: surfColor = Vec3f(0.6f * alt, 0.3f * alt, 0.f + showWater); break; case 4: surfColor = Vec3f(0.7f * alt, 0.7f * alt, 0.7f * alt + showWater); break; case 5: surfColor = Vec3f(0.7f * alt, 0.5f * alt, 0.3f * alt + showWater); break; } glColor3fv(surfColor.ptr()); glBegin(GL_TRIANGLE_STRIP); glVertex2i(i * cellSize, clientH - j * cellSize - cellSize); glVertex2i(i * cellSize, clientH - j * cellSize); glVertex2i(i * cellSize + cellSize, clientH - j * cellSize - cellSize); glVertex2i(i * cellSize + cellSize, clientH - j * cellSize); glEnd(); //objects switch (map->getObject(i, j)) { case 0: glColor3f(0.f, 0.f, 0.f); break; case 1: glColor3f(1.f, 0.f, 0.f); break; case 2: glColor3f(1.f, 1.f, 1.f); break; case 3: glColor3f(0.5f, 0.5f, 1.f); break; case 4: glColor3f(0.f, 0.f, 1.f); break; case 5: glColor3f(0.5f, 0.5f, 0.5f); break; case 6: glColor3f(1.f, 0.8f, 0.5f); break; case 7: glColor3f(0.f, 1.f, 1.f); break; case 8: glColor3f(0.7f, 0.1f, 0.3f); break; case 9: glColor3f(0.5f, 1.f, 0.1f); break; case 10: glColor3f(1.f, 0.2f, 0.8f); break; } if (map->getObject(i, j) != 0) { glPointSize(cellSize / 2.f); glBegin(GL_POINTS); glVertex2i(i * cellSize + cellSize / 2, clientH - j * cellSize - cellSize / 2); glEnd(); } // bool found = false; //height lines // if (!found) { glColor3fv((surfColor*0.5f).ptr()); //left if (i > 0 && map->getHeight(i - 1, j) > map->getHeight(i, j)) { glBegin(GL_LINES); glVertex2i(i * cellSize, clientH - (j + 1) * cellSize); glVertex2i(i * cellSize, clientH - j * cellSize); glEnd(); } //down if (j > 0 && map->getHeight(i, j - 1) > map->getHeight(i, j)) { glBegin(GL_LINES); glVertex2i(i * cellSize, clientH - j * cellSize); glVertex2i((i + 1) * cellSize, clientH - j * cellSize); glEnd(); } glColor3fv((surfColor*2.f).ptr()); //left if (grid || (i > 0 && map->getHeight(i - 1, j) < map->getHeight(i, j))) { glBegin(GL_LINES); glVertex2i(i * cellSize, clientH - (j + 1) * cellSize); glVertex2i(i * cellSize, clientH - j * cellSize); glEnd(); } if (grid || (j > 0 && map->getHeight(i, j - 1) < map->getHeight(i, j))) { glBegin(GL_LINES); glVertex2i(i * cellSize, clientH - j * cellSize); glVertex2i((i + 1) * cellSize, clientH - j * cellSize); glEnd(); } // } //resources switch (map->getResource(i, j)) { case 1: glColor3f(1.f, 1.f, 0.f); break; case 2: glColor3f(0.5f, 0.5f, 0.5f); break; case 3: glColor3f(1.f, 0.f, 0.f); break; case 4: glColor3f(0.f, 0.f, 1.f); break; case 5: glColor3f(0.5f, 0.5f, 1.f); break; } if (map->getResource(i, j) != 0) { glBegin(GL_LINES); glVertex2i(i * cellSize, clientH - j * cellSize - cellSize); glVertex2i(i * cellSize + cellSize, clientH - j * cellSize); glVertex2i(i * cellSize, clientH - j * cellSize); glVertex2i(i * cellSize + cellSize, clientH - j * cellSize - cellSize); glEnd(); } } } } //start locations glLineWidth(3); for (int i = 0; i < map->getMaxFactions(); i++) { switch (i) { case 0: glColor3f(1.f, 0.f, 0.f); break; case 1: glColor3f(0.f, 0.f, 1.f); break; case 2: glColor3f(0.f, 1.f, 0.f); break; case 3: glColor3f(1.f, 1.f, 0.f); break; case 4: glColor3f(1.f, 1.f, 1.f); break; case 5: glColor3f(0.f, 1.f, 0.8f); break; case 6: glColor3f(1.f, 0.5f, 0.f); break; case 7: glColor3f(1.f, 0.5f, 1.f); break; } glBegin(GL_LINES); glVertex2i((map->getStartLocationX(i) - 1) * cellSize, clientH - (map->getStartLocationY(i) - 1) * cellSize); glVertex2i((map->getStartLocationX(i) + 1) * cellSize + cellSize, clientH - (map->getStartLocationY(i) + 1) * cellSize - cellSize); glVertex2i((map->getStartLocationX(i) - 1) * cellSize, clientH - (map->getStartLocationY(i) + 1) * cellSize - cellSize); glVertex2i((map->getStartLocationX(i) + 1) * cellSize + cellSize, clientH - (map->getStartLocationY(i) - 1) * cellSize); glEnd(); } glPopMatrix(); glPopAttrib(); assertGl(); } }// end namespace */