Mercurial > hg > forks > yadex
changeset 94:baa6877ed0d3
Cosmetics.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 06 Oct 2014 01:39:56 +0300 |
parents | 5652866f31eb |
children | f099a7e4fa2e |
files | src/objects.cc |
diffstat | 1 files changed, 105 insertions(+), 135 deletions(-) [+] |
line wrap: on
line diff
--- a/src/objects.cc Mon Oct 06 00:33:26 2014 +0300 +++ b/src/objects.cc Mon Oct 06 01:39:56 2014 +0300 @@ -62,16 +62,16 @@ { switch (objtype) { - case OBJ_THINGS: - return NumThings - 1; - case OBJ_LINEDEFS: - return NumLineDefs - 1; - case OBJ_SIDEDEFS: - return NumSideDefs - 1; - case OBJ_VERTICES: - return NumVertices - 1; - case OBJ_SECTORS: - return NumSectors - 1; + case OBJ_THINGS: + return NumThings - 1; + case OBJ_LINEDEFS: + return NumLineDefs - 1; + case OBJ_SIDEDEFS: + return NumSideDefs - 1; + case OBJ_VERTICES: + return NumVertices - 1; + case OBJ_SECTORS: + return NumSectors - 1; } return -1; } @@ -84,9 +84,10 @@ { int n, m; -/* use XOR mode : drawing any line twice erases it */ + /* use XOR mode : drawing any line twice erases it */ SetDrawingMode(1); set_colour(colour); + switch (objtype) { case OBJ_THINGS: @@ -104,10 +105,8 @@ break; case OBJ_LINEDEFS: - n = (Vertices[LineDefs[objnum].start].x - + Vertices[LineDefs[objnum].end].x) / 2; - m = (Vertices[LineDefs[objnum].start].y - + Vertices[LineDefs[objnum].end].y) / 2; + n = (Vertices[LineDefs[objnum].start].x + Vertices[LineDefs[objnum].end].x) / 2; + m = (Vertices[LineDefs[objnum].start].y + Vertices[LineDefs[objnum].end].y) / 2; DrawMapLine(n, m, n + (Vertices[LineDefs[objnum].end].y - Vertices[LineDefs[objnum].start].y) / 3, m + (Vertices[LineDefs[objnum].start].x @@ -155,10 +154,10 @@ { const struct Vertex *v1 = Vertices + LineDefs[n].start; const struct Vertex *v2 = Vertices + LineDefs[n].end; - if (v1->x < mapx0 && v2->x < mapx0 - || v1->x > mapx1 && v2->x > mapx1 - || v1->y < mapy0 && v2->y < mapy0 - || v1->y > mapy1 && v2->y > mapy1) + if (v1->x < mapx0 && v2->x < mapx0 || + v1->x > mapx1 && v2->x > mapx1 || + v1->y < mapy0 && v2->y < mapy0 || + v1->y > mapy1 && v2->y > mapy1) continue; // Off-screen DrawMapLine(v1->x, v1->y, v2->x, v2->y); } @@ -183,9 +182,7 @@ */ void DeleteObject(const Objid & obj) /* SWAP! */ { - SelPtr list; - - list = 0; + SelPtr list = 0; SelectObject(&list, obj.num); DeleteObjects(obj.type, &list); } @@ -223,18 +220,19 @@ { for (n = objnum; n < NumThings; n++) Things[n] = Things[n + 1]; - Things = (TPtr) ResizeMemory(Things, - NumThings * - sizeof(struct Thing)); + + Things = (TPtr) ResizeMemory(Things, NumThings * sizeof(struct Thing)); } else { FreeMemory(Things); Things = 0; } + for (cur = (*list)->next; cur; cur = cur->next) if (cur->objnum > objnum) cur->objnum--; + next_thing: UnSelectObject(list, objnum); } @@ -243,6 +241,7 @@ case OBJ_VERTICES: if (*list) MadeMapChanges = 1; + while (*list) { objnum = (*list)->objnum; @@ -255,7 +254,9 @@ for (n = 0; n < NumLineDefs; n++) { if (LineDefs[n].start == objnum || LineDefs[n].end == objnum) + { DeleteObject(Objid(OBJ_LINEDEFS, n--)); + } else { if (LineDefs[n].start >= objnum) @@ -270,9 +271,8 @@ { for (n = objnum; n < NumVertices; n++) Vertices[n] = Vertices[n + 1]; - Vertices = (VPtr) ResizeMemory(Vertices, - NumVertices * - sizeof(struct Vertex)); + + Vertices = (VPtr) ResizeMemory(Vertices, NumVertices * sizeof(struct Vertex)); } else { @@ -313,9 +313,8 @@ { for (n = objnum; n < NumLineDefs; n++) LineDefs[n] = LineDefs[n + 1]; - LineDefs = (LDPtr) ResizeMemory(LineDefs, - NumLineDefs * - sizeof(struct LineDef)); + + LineDefs = (LDPtr) ResizeMemory(LineDefs, NumLineDefs * sizeof(struct LineDef)); } else { @@ -346,11 +345,14 @@ { if (LineDefs[n].sidedef1 == objnum) LineDefs[n].sidedef1 = -1; - else if (LineDefs[n].sidedef1 >= objnum) + else + if (LineDefs[n].sidedef1 >= objnum) LineDefs[n].sidedef1--; + if (LineDefs[n].sidedef2 == objnum) LineDefs[n].sidedef2 = -1; - else if (LineDefs[n].sidedef2 >= objnum) + else + if (LineDefs[n].sidedef2 >= objnum) LineDefs[n].sidedef2--; } /* delete the sidedef */ @@ -359,9 +361,8 @@ { for (n = objnum; n < NumSideDefs; n++) SideDefs[n] = SideDefs[n + 1]; - SideDefs = (SDPtr) ResizeMemory(SideDefs, - NumSideDefs * - sizeof(struct SideDef)); + + SideDefs = (SDPtr) ResizeMemory(SideDefs, NumSideDefs * sizeof(struct SideDef)); } else { @@ -391,15 +392,15 @@ DeleteObject(Objid(OBJ_SIDEDEFS, n--)); else if (SideDefs[n].sector >= objnum) SideDefs[n].sector--; + /* delete the sector */ NumSectors--; if (NumSectors > 0) { for (n = objnum; n < NumSectors; n++) Sectors[n] = Sectors[n + 1]; - Sectors = (SPtr) ResizeMemory(Sectors, - NumSectors * - sizeof(struct Sector)); + + Sectors = (SPtr) ResizeMemory(Sectors, NumSectors * sizeof(struct Sector)); } else { @@ -444,11 +445,10 @@ case OBJ_THINGS: last = NumThings++; if (last > 0) - Things = (TPtr) ResizeMemory(Things, - (unsigned long) NumThings * - sizeof(struct Thing)); + Things = (TPtr) ResizeMemory(Things, (unsigned long) NumThings * sizeof(struct Thing)); else Things = (TPtr) GetMemory(sizeof(struct Thing)); + Things[last].xpos = xpos; Things[last].ypos = ypos; things_angles++; @@ -470,13 +470,13 @@ case OBJ_VERTICES: last = NumVertices++; if (last > 0) - Vertices = (VPtr) ResizeMemory(Vertices, - (unsigned long) NumVertices * - sizeof(struct Vertex)); + Vertices = (VPtr) ResizeMemory(Vertices, (unsigned long) NumVertices * sizeof(struct Vertex)); else Vertices = (VPtr) GetMemory(sizeof(struct Vertex)); + Vertices[last].x = xpos; Vertices[last].y = ypos; + if (Vertices[last].x < MapMinX) MapMinX = Vertices[last].x; if (Vertices[last].x > MapMaxX) @@ -485,17 +485,17 @@ MapMinY = Vertices[last].y; if (Vertices[last].y > MapMaxY) MapMaxY = Vertices[last].y; + MadeMapChanges = 1; break; case OBJ_LINEDEFS: last = NumLineDefs++; if (last > 0) - LineDefs = (LDPtr) ResizeMemory(LineDefs, - (unsigned long) NumLineDefs * - sizeof(struct LineDef)); + LineDefs = (LDPtr) ResizeMemory(LineDefs, (unsigned long) NumLineDefs * sizeof(struct LineDef)); else LineDefs = (LDPtr) GetMemory(sizeof(struct LineDef)); + if (is_obj(copyfrom)) { LineDefs[last].start = LineDefs[copyfrom].start; @@ -519,21 +519,17 @@ case OBJ_SIDEDEFS: last = NumSideDefs++; if (last > 0) - SideDefs = (SDPtr) ResizeMemory(SideDefs, - (unsigned long) NumSideDefs * - sizeof(struct SideDef)); + SideDefs = (SDPtr) ResizeMemory(SideDefs, (unsigned long) NumSideDefs * sizeof(struct SideDef)); else SideDefs = (SDPtr) GetMemory(sizeof(struct SideDef)); + if (is_obj(copyfrom)) { SideDefs[last].xoff = SideDefs[copyfrom].xoff; SideDefs[last].yoff = SideDefs[copyfrom].yoff; - strncpy(SideDefs[last].tex1, SideDefs[copyfrom].tex1, - WAD_TEX_NAME); - strncpy(SideDefs[last].tex2, SideDefs[copyfrom].tex2, - WAD_TEX_NAME); - strncpy(SideDefs[last].tex3, SideDefs[copyfrom].tex3, - WAD_TEX_NAME); + strncpy(SideDefs[last].tex1, SideDefs[copyfrom].tex1, WAD_TEX_NAME); + strncpy(SideDefs[last].tex2, SideDefs[copyfrom].tex2, WAD_TEX_NAME); + strncpy(SideDefs[last].tex3, SideDefs[copyfrom].tex3, WAD_TEX_NAME); SideDefs[last].sector = SideDefs[copyfrom].sector; } else @@ -551,19 +547,16 @@ case OBJ_SECTORS: last = NumSectors++; if (last > 0) - Sectors = (SPtr) ResizeMemory(Sectors, - (unsigned long) NumSectors * - sizeof(struct Sector)); + Sectors = (SPtr) ResizeMemory(Sectors, (unsigned long) NumSectors * sizeof(struct Sector)); else Sectors = (SPtr) GetMemory(sizeof(struct Sector)); + if (is_obj(copyfrom)) { Sectors[last].floorh = Sectors[copyfrom].floorh; Sectors[last].ceilh = Sectors[copyfrom].ceilh; - strncpy(Sectors[last].floort, Sectors[copyfrom].floort, - WAD_FLAT_NAME); - strncpy(Sectors[last].ceilt, Sectors[copyfrom].ceilt, - WAD_FLAT_NAME); + strncpy(Sectors[last].floort, Sectors[copyfrom].floort, WAD_FLAT_NAME); + strncpy(Sectors[last].ceilt, Sectors[copyfrom].ceilt, WAD_FLAT_NAME); Sectors[last].light = Sectors[copyfrom].light; Sectors[last].special = Sectors[copyfrom].special; Sectors[last].tag = Sectors[copyfrom].tag; @@ -572,10 +565,8 @@ { Sectors[last].floorh = cfg.def.floor_height; Sectors[last].ceilh = cfg.def.ceiling_height; - strncpy(Sectors[last].floort, cfg.def.floor_texture, - WAD_FLAT_NAME); - strncpy(Sectors[last].ceilt, cfg.def.ceiling_texture, - WAD_FLAT_NAME); + strncpy(Sectors[last].floort, cfg.def.floor_texture, WAD_FLAT_NAME); + strncpy(Sectors[last].ceilt, cfg.def.ceiling_texture, WAD_FLAT_NAME); Sectors[last].light = cfg.def.light_level; Sectors[last].special = 0; Sectors[last].tag = 0; @@ -600,40 +591,34 @@ int ly1 = Vertices[LineDefs[ldnum].end].y; int i; -/* do you like mathematics? */ + /* do you like mathematics? */ if (lx0 >= x0 && lx0 <= x1 && ly0 >= y0 && ly0 <= y1) return 1; /* the linedef start is entirely inside the square */ + if (lx1 >= x0 && lx1 <= x1 && ly1 >= y0 && ly1 <= y1) return 1; /* the linedef end is entirely inside the square */ + if ((ly0 > y0) != (ly1 > y0)) { - i = lx0 + - (int) ((long) (y0 - ly0) * (long) (lx1 - lx0) / - (long) (ly1 - ly0)); + i = lx0 + (int) ((y0 - ly0) * (lx1 - lx0) / (ly1 - ly0)); if (i >= x0 && i <= x1) return true; /* the linedef crosses the y0 side (left) */ } if ((ly0 > y1) != (ly1 > y1)) { - i = lx0 + - (int) ((long) (y1 - ly0) * (long) (lx1 - lx0) / - (long) (ly1 - ly0)); + i = lx0 + (int) ((y1 - ly0) * (lx1 - lx0) / (ly1 - ly0)); if (i >= x0 && i <= x1) return true; /* the linedef crosses the y1 side (right) */ } if ((lx0 > x0) != (lx1 > x0)) { - i = ly0 + - (int) ((long) (x0 - lx0) * (long) (ly1 - ly0) / - (long) (lx1 - lx0)); + i = ly0 + (int) ((x0 - lx0) * (ly1 - ly0) / (lx1 - lx0)); if (i >= y0 && i <= y1) return true; /* the linedef crosses the x0 side (down) */ } if ((lx0 > x1) != (lx1 > x1)) { - i = ly0 + - (int) ((long) (x1 - lx0) * (long) (ly1 - ly0) / - (long) (lx1 - lx0)); + i = ly0 + (int) ((x1 - lx0) * (ly1 - ly0) / (lx1 - lx0)); if (i >= y0 && i <= y1) return true; /* the linedef crosses the x1 side (up) */ } @@ -642,6 +627,7 @@ + /* get the sector number of the sidedef opposite to this sidedef (returns -1 if it cannot be found) @@ -654,13 +640,13 @@ int ld2, dist; int bestld, bestdist, bestmdist; -/* get the coords for this LineDef */ x0 = Vertices[LineDefs[ld1].start].x; y0 = Vertices[LineDefs[ld1].start].y; dx0 = Vertices[LineDefs[ld1].end].x - x0; dy0 = Vertices[LineDefs[ld1].end].y - y0; + /* get the coords for this LineDef */ -/* find the normal vector for this LineDef */ + /* find the normal vector for this LineDef */ x1 = (dx0 + x0 + x0) / 2; y1 = (dy0 + y0 + y0) / 2; if (firstside) @@ -675,7 +661,8 @@ } bestld = -1; -/* use a parallel to an axis instead of the normal vector (faster method) */ + + /* use a parallel to an axis instead of the normal vector (faster method) */ if (abs(dy1) > abs(dx1)) { if (dy1 > 0) @@ -691,13 +678,8 @@ y2 = Vertices[LineDefs[ld2].start].y; dx2 = Vertices[LineDefs[ld2].end].x - x2; dy2 = Vertices[LineDefs[ld2].end].y - y2; - dist = - y2 + - (int) ((long) (x1 - x2) * (long) dy2 / (long) dx2); - if (dist > y1 - && (dist < bestdist - || (dist == bestdist - && (y2 + dy2 / 2) < bestmdist))) + dist = y2 + (int) ((x1 - x2) * dy2 / dx2); + if (dist > y1 && (dist < bestdist || (dist == bestdist && (y2 + dy2 / 2) < bestmdist))) { bestld = ld2; bestdist = dist; @@ -718,13 +700,8 @@ y2 = Vertices[LineDefs[ld2].start].y; dx2 = Vertices[LineDefs[ld2].end].x - x2; dy2 = Vertices[LineDefs[ld2].end].y - y2; - dist = - y2 + - (int) ((long) (x1 - x2) * (long) dy2 / (long) dx2); - if (dist < y1 - && (dist > bestdist - || (dist == bestdist - && (y2 + dy2 / 2) > bestmdist))) + dist = y2 + (int) ((x1 - x2) * dy2 / dx2); + if (dist < y1 && (dist > bestdist || (dist == bestdist && (y2 + dy2 / 2) > bestmdist))) { bestld = ld2; bestdist = dist; @@ -748,13 +725,8 @@ y2 = Vertices[LineDefs[ld2].start].y; dx2 = Vertices[LineDefs[ld2].end].x - x2; dy2 = Vertices[LineDefs[ld2].end].y - y2; - dist = - x2 + - (int) ((long) (y1 - y2) * (long) dx2 / (long) dy2); - if (dist > x1 - && (dist < bestdist - || (dist == bestdist - && (x2 + dx2 / 2) < bestmdist))) + dist = x2 + (int) ((y1 - y2) * dx2 / dy2); + if (dist > x1 && (dist < bestdist || (dist == bestdist && (x2 + dx2 / 2) < bestmdist))) { bestld = ld2; bestdist = dist; @@ -775,13 +747,8 @@ y2 = Vertices[LineDefs[ld2].start].y; dx2 = Vertices[LineDefs[ld2].end].x - x2; dy2 = Vertices[LineDefs[ld2].end].y - y2; - dist = - x2 + - (int) ((long) (y1 - y2) * (long) dx2 / (long) dy2); - if (dist < x1 - && (dist > bestdist - || (dist == bestdist - && (x2 + dx2 / 2) > bestmdist))) + dist = x2 + (int) ((y1 - y2) * dx2 / dy2); + if (dist < x1 && (dist > bestdist || (dist == bestdist && (x2 + dx2 / 2) > bestmdist))) { bestld = ld2; bestdist = dist; @@ -798,16 +765,14 @@ /* now look if this LineDef has a SideDef bound to one sector */ if (abs(dy1) > abs(dx1)) { - if ((Vertices[LineDefs[bestld].start].x - < Vertices[LineDefs[bestld].end].x) == (dy1 > 0)) + if ((Vertices[LineDefs[bestld].start].x < Vertices[LineDefs[bestld].end].x) == (dy1 > 0)) x0 = LineDefs[bestld].sidedef1; else x0 = LineDefs[bestld].sidedef2; } else { - if ((Vertices[LineDefs[bestld].start].y - < Vertices[LineDefs[bestld].end].y) != (dx1 > 0)) + if ((Vertices[LineDefs[bestld].start].y < Vertices[LineDefs[bestld].end].y) != (dx1 > 0)) x0 = LineDefs[bestld].sidedef1; else x0 = LineDefs[bestld].sidedef2; @@ -1132,15 +1097,15 @@ return; } for (n = 0; n < NumLineDefs; n++) - if (LineDefs[n].sidedef1 == objnum - || LineDefs[n].sidedef2 == objnum) - { - v1 = LineDefs[n].start; - v2 = LineDefs[n].end; - *xpos = (Vertices[v1].x + Vertices[v2].x) / 2; - *ypos = (Vertices[v1].y + Vertices[v2].y) / 2; - return; - } + if (LineDefs[n].sidedef1 == objnum || LineDefs[n].sidedef2 == objnum) + { + v1 = LineDefs[n].start; + v2 = LineDefs[n].end; + *xpos = (Vertices[v1].x + Vertices[v2].x) / 2; + *ypos = (Vertices[v1].y + Vertices[v2].y) / 2; + return; + } + *xpos = (MapMinX + MapMaxX) / 2; *ypos = (MapMinY + MapMaxY) / 2; // FIXME is the fall through intentional ? -- AYM 2000-11-08 @@ -1162,8 +1127,8 @@ sd2 = LineDefs[n].sidedef2; v1 = LineDefs[n].start; v2 = LineDefs[n].end; - if ((sd1 >= 0 && SideDefs[sd1].sector == objnum) - || (sd2 >= 0 && SideDefs[sd2].sector == objnum)) + if ((sd1 >= 0 && SideDefs[sd1].sector == objnum) || + (sd2 >= 0 && SideDefs[sd2].sector == objnum)) { /* if the Sector is closed, all Vertices will be counted twice */ accx += (long) Vertices[v1].x; @@ -1209,19 +1174,24 @@ { ok = true; for (n = 0; n < NumLineDefs; n++) - if (LineDefs[n].tag == tag) + if (LineDefs[n].tag == tag) + { + ok = false; + break; + } + + if (ok) + { + for (n = 0; n < NumSectors; n++) + if (Sectors[n].tag == tag) { ok = false; break; } - if (ok) - for (n = 0; n < NumSectors; n++) - if (Sectors[n].tag == tag) - { - ok = false; - break; - } + } + tag++; } + return tag - 1; }