X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameDraw.cpp;h=3966a57e92da50b402c98fdfb51b83789247f7d9;hb=cd043e3f9e26c2b3406b40a354c2840941e9db7f;hp=25d65e53a4ce487d3d7ad396233b3bcad95cf3d8;hpb=2ce8e2f8ac6921286ebd6b30362c35b38e935977;p=lugaru.git diff --git a/Source/GameDraw.cpp b/Source/GameDraw.cpp index 25d65e5..3966a57 100644 --- a/Source/GameDraw.cpp +++ b/Source/GameDraw.cpp @@ -3,20 +3,18 @@ Copyright (C) 2003, 2010 - Wolfire Games This file is part of Lugaru. -Lugaru is free software; you can redistribute it 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. +Lugaru is free software; you can redistribute it 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 program is distributed in the hope that it will be useful, +Lugaru is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +along with Lugaru. If not, see . */ #include "Game.h" @@ -137,8 +135,7 @@ int Game::DrawGLScene(StereoSide side) { static float texcoordwidth, texcoordheight; static float texviewwidth, texviewheight; - static int i, j, k, l; - //~ static GLubyte color; + static int l; static XYZ checkpoint; static float tempmult; float tutorialopac; @@ -176,7 +173,7 @@ int Game::DrawGLScene(StereoSide side) numboundaries = mapradius * 2; if (numboundaries > 360) numboundaries = 360; - for (i = 0; i < numboundaries; i++) { + for (int i = 0; i < numboundaries; i++) { boundary[i] = 0; boundary[i].z = 1; boundary[i] = mapcenter + DoRotation(boundary[i] * mapradius, 0, i * (360 / ((float)(numboundaries))), 0); @@ -333,10 +330,10 @@ int Game::DrawGLScene(StereoSide side) static XYZ point; static float size, opacity, rotation; rotation = 0; - for (k = 0; k < numplayers; k++) { + for (unsigned k = 0; k < Person::players.size(); k++) { if (!Person::players[k]->skeleton.free && Person::players[k]->playerdetail && Person::players[k]->howactive < typesleeping) if (frustum.SphereInFrustum(Person::players[k]->coords.x, Person::players[k]->coords.y + Person::players[k]->scale * 3, Person::players[k]->coords.z, Person::players[k]->scale * 7) && Person::players[k]->occluded < 25) - for (i = 0; i < Person::players[k]->skeleton.num_joints; i++) { + for (int i = 0; i < Person::players[k]->skeleton.num_joints; i++) { if (Person::players[k]->skeleton.joints[i].label == leftknee || Person::players[k]->skeleton.joints[i].label == rightknee || Person::players[k]->skeleton.joints[i].label == groin) { point = DoRotation(Person::players[k]->skeleton.joints[i].position, 0, Person::players[k]->yaw, 0) * Person::players[k]->scale + Person::players[k]->coords; size = .4f; @@ -346,7 +343,7 @@ int Game::DrawGLScene(StereoSide side) } terrain.MakeDecal(shadowdecal, point, size, opacity, rotation); for (l = 0; l < terrain.patchobjectnum[Person::players[k]->whichpatchx][Person::players[k]->whichpatchz]; l++) { - j = terrain.patchobjects[Person::players[k]->whichpatchx][Person::players[k]->whichpatchz][l]; + int j = terrain.patchobjects[Person::players[k]->whichpatchx][Person::players[k]->whichpatchz][l]; if (objects.position[j].y < Person::players[k]->coords.y || objects.type[j] == tunneltype || objects.type[j] == weirdtype) { point = DoRotation(DoRotation(Person::players[k]->skeleton.joints[i].position, 0, Person::players[k]->yaw, 0) * Person::players[k]->scale + Person::players[k]->coords - objects.position[j], 0, -objects.yaw[j], 0); size = .4f; @@ -361,7 +358,7 @@ int Game::DrawGLScene(StereoSide side) } if ((Person::players[k]->skeleton.free || Person::players[k]->howactive >= typesleeping) && Person::players[k]->playerdetail) if (frustum.SphereInFrustum(Person::players[k]->coords.x, Person::players[k]->coords.y, Person::players[k]->coords.z, Person::players[k]->scale * 5) && Person::players[k]->occluded < 25) - for (i = 0; i < Person::players[k]->skeleton.num_joints; i++) { + for (int i = 0; i < Person::players[k]->skeleton.num_joints; i++) { if (Person::players[k]->skeleton.joints[i].label == leftknee || Person::players[k]->skeleton.joints[i].label == rightknee || Person::players[k]->skeleton.joints[i].label == groin || Person::players[k]->skeleton.joints[i].label == leftelbow || Person::players[k]->skeleton.joints[i].label == rightelbow || Person::players[k]->skeleton.joints[i].label == neck) { if (Person::players[k]->skeleton.free) point = Person::players[k]->skeleton.joints[i].position * Person::players[k]->scale + Person::players[k]->coords; @@ -374,7 +371,7 @@ int Game::DrawGLScene(StereoSide side) } terrain.MakeDecal(shadowdecal, point, size, opacity * .7, rotation); for (l = 0; l < terrain.patchobjectnum[Person::players[k]->whichpatchx][Person::players[k]->whichpatchz]; l++) { - j = terrain.patchobjects[Person::players[k]->whichpatchx][Person::players[k]->whichpatchz][l]; + int j = terrain.patchobjects[Person::players[k]->whichpatchx][Person::players[k]->whichpatchz][l]; if (objects.position[j].y < Person::players[k]->coords.y || objects.type[j] == tunneltype || objects.type[j] == weirdtype) { if (Person::players[k]->skeleton.free) point = DoRotation(Person::players[k]->skeleton.joints[i].position * Person::players[k]->scale + Person::players[k]->coords - objects.position[j], 0, -objects.yaw[j], 0); @@ -398,7 +395,7 @@ int Game::DrawGLScene(StereoSide side) opacity = .4 - (Person::players[k]->coords.y - terrain.getHeight(Person::players[k]->coords.x, Person::players[k]->coords.z)) / 5; terrain.MakeDecal(shadowdecal, point, size, opacity * .7, rotation); for (l = 0; l < terrain.patchobjectnum[Person::players[k]->whichpatchx][Person::players[k]->whichpatchz]; l++) { - j = terrain.patchobjects[Person::players[k]->whichpatchx][Person::players[k]->whichpatchz][l]; + int j = terrain.patchobjects[Person::players[k]->whichpatchx][Person::players[k]->whichpatchz][l]; point = DoRotation(Person::players[k]->coords - objects.position[j], 0, -objects.yaw[j], 0); size = .7; opacity = .4f; @@ -451,7 +448,7 @@ int Game::DrawGLScene(StereoSide side) glEnable(GL_CULL_FACE); glCullFace(GL_FRONT); glDepthMask(1); - for (k = 0; k < numplayers; k++) { + for (unsigned k = 0; k < Person::players.size(); k++) { if (k == 0 || tutoriallevel != 1) { glEnable(GL_BLEND); glEnable(GL_LIGHTING); @@ -464,6 +461,7 @@ int Game::DrawGLScene(StereoSide side) if (distance >= .5) { checkpoint = DoRotation(Person::players[k]->skeleton.joints[abs(Random() % Person::players[k]->skeleton.num_joints)].position, 0, Person::players[k]->yaw, 0) * Person::players[k]->scale + Person::players[k]->coords; checkpoint.y += 1; + int i; if (!Person::players[k]->occluded == 0) i = checkcollide(viewer, checkpoint, Person::players[k]->lastoccluded); if (i == -1 || Person::players[k]->occluded == 0) @@ -515,7 +513,7 @@ int Game::DrawGLScene(StereoSide side) glEnable(GL_CULL_FACE); glCullFace(GL_FRONT); glDepthMask(1); - for (k = 0; k < numplayers; k++) { + for (unsigned k = 0; k < Person::players.size(); k++) { if (!(k == 0 || tutoriallevel != 1)) { glEnable(GL_BLEND); glEnable(GL_LIGHTING); @@ -528,6 +526,7 @@ int Game::DrawGLScene(StereoSide side) if (distance >= .5) { checkpoint = DoRotation(Person::players[k]->skeleton.joints[abs(Random() % Person::players[k]->skeleton.num_joints)].position, 0, Person::players[k]->yaw, 0) * Person::players[k]->scale + Person::players[k]->coords; checkpoint.y += 1; + int i; if (!Person::players[k]->occluded == 0) i = checkcollide(viewer, checkpoint, Person::players[k]->lastoccluded); if (i == -1 || Person::players[k]->occluded == 0) @@ -567,10 +566,10 @@ int Game::DrawGLScene(StereoSide side) glDisable(GL_COLOR_MATERIAL); glColor4f(1, 1, 0, 1); - for (k = 0; k < numplayers; k++) { + for (unsigned k = 0; k < Person::players.size(); k++) { if (Person::players[k]->numwaypoints > 1) { glBegin(GL_LINE_LOOP); - for (i = 0; i < Person::players[k]->numwaypoints; i++) { + for (int i = 0; i < Person::players[k]->numwaypoints; i++) { glVertex3f(Person::players[k]->waypoints[i].x, Person::players[k]->waypoints[i].y + .5, Person::players[k]->waypoints[i].z); } glEnd(); @@ -580,9 +579,9 @@ int Game::DrawGLScene(StereoSide side) if (numpathpoints > 1) { glColor4f(0, 1, 0, 1); - for (k = 0; k < numpathpoints; k++) { + for (unsigned k = 0; int(k) < numpathpoints; k++) { if (numpathpointconnect[k]) { - for (i = 0; i < numpathpointconnect[k]; i++) { + for (int i = 0; i < numpathpointconnect[k]; i++) { glBegin(GL_LINE_LOOP); glVertex3f(pathpoint[k].x, pathpoint[k].y + .5, pathpoint[k].z); glVertex3f(pathpoint[pathpointconnect[k][i]].x, pathpoint[pathpointconnect[k][i]].y + .5, pathpoint[pathpointconnect[k][i]].z); @@ -603,9 +602,6 @@ int Game::DrawGLScene(StereoSide side) glEnable(GL_TEXTURE_2D); glColor4f(.5, .5, .5, 1); if (!console) { - sprintf (string, " ", (int)(fps)); - text->glPrint(10, 30, string, 0, .8, screenwidth, screenheight); - if (!tutoriallevel) if (bonus > 0 && bonustime < 1 && !winfreeze && indialogue == -1/*bonustime<4*/) { const char *bonus_name; @@ -939,7 +935,7 @@ int Game::DrawGLScene(StereoSide side) float closestdist = -1; float distance = 0; closest = currenthotspot; - for (i = 0; i < numhotspots; i++) { + for (int i = 0; i < numhotspots; i++) { distance = distsq(&Person::players[0]->coords, &hotspot[i]); if (closestdist == -1 || distance < closestdist) { if (distsq(&Person::players[0]->coords, &hotspot[i]) < hotspotsize[i] && ((hotspottype[i] <= 10 && hotspottype[i] >= 0) || (hotspottype[i] <= 40 && hotspottype[i] >= 20))) { @@ -966,7 +962,7 @@ int Game::DrawGLScene(StereoSide side) int lastline = 0; int line = 0; bool done = false; - i = 0; + int i = 0; while (!done) { if (string[i] == '\n' || string[i] > 'z' || string[i] < ' ' || string[i] == '\0') { glColor4f(0, 0, 0, tutorialopac); @@ -984,7 +980,7 @@ int Game::DrawGLScene(StereoSide side) } } else if (hotspottype[closest] >= 20 && dialoguegonethrough[hotspottype[closest] - 20] == 0) { whichdialogue = hotspottype[closest] - 20; - for (j = 0; j < numdialogueboxes[whichdialogue]; j++) { + for (int j = 0; j < numdialogueboxes[whichdialogue]; j++) { Person::players[participantfocus[whichdialogue][j]]->coords = participantlocation[whichdialogue][participantfocus[whichdialogue][j]]; Person::players[participantfocus[whichdialogue][j]]->yaw = participantyaw[whichdialogue][participantfocus[whichdialogue][j]]; Person::players[participantfocus[whichdialogue][j]]->targetyaw = participantyaw[whichdialogue][participantfocus[whichdialogue][j]]; @@ -1073,11 +1069,11 @@ int Game::DrawGLScene(StereoSide side) char tempname[264]; bool goodchar; int tempnum = 0; - for (i = 0; i < 264; i++) { + for (int i = 0; i < 264; i++) { tempname[i] = '\0'; } - for (i = 0; i < (int)strlen(dialoguename[whichdialogue][indialogue]); i++) { + for (int i = 0; i < (int)strlen(dialoguename[whichdialogue][indialogue]); i++) { tempname[tempnum] = dialoguename[whichdialogue][indialogue][i]; goodchar = 1; if (dialoguename[whichdialogue][indialogue][i] == '#' || dialoguename[whichdialogue][indialogue][i] == '\0') @@ -1101,7 +1097,7 @@ int Game::DrawGLScene(StereoSide side) } tempnum = 0; - for (i = 0; i < (int)strlen(dialoguetext[whichdialogue][indialogue]) + 1; i++) { + for (int i = 0; i < (int)strlen(dialoguetext[whichdialogue][indialogue]) + 1; i++) { tempname[tempnum] = dialoguetext[whichdialogue][indialogue][i]; if (dialoguetext[whichdialogue][indialogue][i] != '#') tempnum++; @@ -1112,7 +1108,7 @@ int Game::DrawGLScene(StereoSide side) int lastline = 0; int line = 0; bool done = false; - i = 0; + int i = 0; while (!done) { if (string[i] == '\n' || string[i] > 'z' || string[i] < ' ' || string[i] == '\0') { if (dialogueboxcolor[whichdialogue][indialogue][0] + dialogueboxcolor[whichdialogue][indialogue][1] + dialogueboxcolor[whichdialogue][indialogue][2] < 1.5) { @@ -1301,9 +1297,9 @@ int Game::DrawGLScene(StereoSide side) } text->glPrint(130, 120, string, 0, .8, 1024, 768); - sprintf (string, "Numplayers: %d", numplayers); + sprintf (string, "Numplayers: %lu", Person::players.size()); text->glPrint(10, 155, string, 0, .8, 1024, 768); - sprintf (string, "Player %d: numwaypoints: %d", numplayers, Person::players[numplayers - 1]->numwaypoints); + sprintf (string, "Player %d: numwaypoints: %d", (int(Person::players.size()) - 1), Person::players.back()->numwaypoints); text->glPrint(10, 140, string, 0, .8, 1024, 768); } sprintf (string, "Difficulty: %d", difficulty); @@ -1438,22 +1434,12 @@ int Game::DrawGLScene(StereoSide side) displaytime[0] = 0; glEnable(GL_TEXTURE_2D); glColor4f(1, 1, 1, 1); - if (chatting) { - sprintf (string, " ]"); - text->glPrint(10, 30 + screenheight - 330, string, 0, 1, screenwidth, screenheight); - if (displayblink) { - sprintf (string, "_"); - text->glPrint(30 + (float)(displayselected) * 10, 30 + (screenheight - 330), string, 0, 1, screenwidth, screenheight); - } - } - for (i = 0; i < 15; i++) - if ((i != 0 || chatting) && displaytime[i] < 4) - for (j = 0; j < displaychars[i]; j++) { + for (unsigned i = 1; i < 15; i++) + if (displaytime[i] < 4) + for (unsigned j = 0; j < displaytext[i].size(); j++) { glColor4f(1, 1, 1, 4 - displaytime[i]); - if (j < displaychars[i]) { - sprintf (string, "%c", displaytext[i][j]); - text->glPrint(30 + j * 10, 30 + i * 20 + (screenheight - 330), string, 0, 1, screenwidth, screenheight); - } + sprintf (string, "%c", displaytext[i][j]); + text->glPrint(30 + j * 10, 30 + i * 20 + (screenheight - 330), string, 0, 1, screenwidth, screenheight); } } @@ -1489,20 +1475,20 @@ int Game::DrawGLScene(StereoSide side) float distcheck; int numliveplayers = 0; center = 0; - for (i = 0; i < numplayers; i++) { + for (unsigned i = 0; i < Person::players.size(); i++) { if (!Person::players[i]->dead) numliveplayers++; } int numadd = 0; - for (i = 0; i < objects.numobjects; i++) { + for (int i = 0; i < objects.numobjects; i++) { if (objects.type[i] == treetrunktype || objects.type[i] == boxtype) { center += objects.position[i]; numadd++; } } - for (i = 0; i < numplayers; i++) { + for (unsigned i = 0; i < Person::players.size(); i++) { if (!Person::players[i]->dead) center += Person::players[i]->coords; } @@ -1513,14 +1499,14 @@ int Game::DrawGLScene(StereoSide side) float maxdistance = 0; float tempdist; //~ int whichclosest; - for (i = 0; i < objects.numobjects; i++) { + for (int i = 0; i < objects.numobjects; i++) { tempdist = distsq(¢er, &objects.position[i]); if (tempdist > maxdistance) { //~ whichclosest=i; maxdistance = tempdist; } } - for (i = 0; i < numplayers; i++) { + for (unsigned i = 0; i < Person::players.size(); i++) { if (!Person::players[i]->dead) { tempdist = distsq(¢er, &Person::players[i]->coords); if (tempdist > maxdistance) { @@ -1539,7 +1525,7 @@ int Game::DrawGLScene(StereoSide side) glPopMatrix(); glRotatef(Person::players[0]->lookyaw * -1 + 180, 0, 0, 1); glTranslatef(-(center.x / terrain.scale / 256 * -2 + 1), (center.z / terrain.scale / 256 * -2 + 1), 0); - for (i = 0; i < objects.numobjects; i++) { + for (int i = 0; i < objects.numobjects; i++) { if (objects.type[i] == treetrunktype) { distcheck = distsq(&Person::players[0]->coords, &objects.position[i]); if (distcheck < mapviewdist) { @@ -1587,7 +1573,7 @@ int Game::DrawGLScene(StereoSide side) } if (editorenabled) { Mapcircletexture.bind(); - for (i = 0; i < numboundaries; i++) { + for (int i = 0; i < numboundaries; i++) { glColor4f(0, 0, 0, opac / 3); glPushMatrix(); glTranslatef(boundary[i].x / terrain.scale / 256 * -2 + 1, boundary[i].z / terrain.scale / 256 * 2 - 1, 0); @@ -1605,7 +1591,7 @@ int Game::DrawGLScene(StereoSide side) glPopMatrix(); } } - for (i = 0; i < numplayers; i++) { + for (unsigned i = 0; i < Person::players.size(); i++) { distcheck = distsq(&Person::players[0]->coords, &Person::players[i]->coords); if (distcheck < mapviewdist) { glPushMatrix(); @@ -1757,7 +1743,8 @@ int Game::DrawGLScene(StereoSide side) char temp[255]; - for (i = 0; i < 255; i++)string[i] = '\0'; + for (int i = 0; i < 255; i++) + string[i] = '\0'; sprintf (temp, "Time: %d:", (int)(((int)leveltime - (int)(leveltime) % 60) / 60)); strcat(string, temp); if ((int)(leveltime) % 60 < 10) @@ -1770,7 +1757,7 @@ int Game::DrawGLScene(StereoSide side) int awards[award_count]; int numawards = award_awards(awards); - for (i = 0; i < numawards && i < 6; i++) + for (int i = 0; i < numawards && i < 6; i++) text->glPrintOutlined(1024 / 30, 768 * 6 / 8 - 90 - 40 * i, award_names[awards[i]], 1, 2, 1024, 768); } @@ -1996,7 +1983,7 @@ int Game::DrawGLScene(StereoSide side) glPopMatrix(); } if (drawmode == radialzoommode) { - for (i = 0; i < 3; i++) { + for (int i = 0; i < 3; i++) { //glRotatef((float)i*.1,0,0,1); glColor4f(1, 1, 1, 1 / ((float)i + 1)); glPushMatrix(); @@ -2037,13 +2024,11 @@ int Game::DrawGLScene(StereoSide side) sprintf (string, "_"); text->glPrint(30 + (float)(consoleselected) * 10 - offset * 10, 30, string, 0, 1, 1024, 768); } - for (i = 0; i < 15; i++) - for (j = 0; j < consolechars[i]; j++) { + for (unsigned i = 0; i < 15; i++) + for (unsigned j = 0; j < consoletext[i].size(); j++) { glColor4f(1, 1, 1, 1 - (float)(i) / 16); - if (j < consolechars[i]) { - sprintf (string, "%c", consoletext[i][j]); - text->glPrint(30 + j * 10 - offset * 10, 30 + i * 20, string, 0, 1, 1024, 768); - } + sprintf (string, "%c", consoletext[i][j]); + text->glPrint(30 + j * 10 - offset * 10, 30 + i * 20, string, 0, 1, 1024, 768); } } }