(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h

-Codechange: rewrote some functions while moving waypoint-stuff
-Add: added support for 64k waypoints
-Fix: made the waypoint struct a bit more logic (no bit-fucking)
This commit is contained in:
truelight
2005-03-24 17:03:37 +00:00
parent 625d041e99
commit d1e158d6f7
20 changed files with 617 additions and 442 deletions

View File

@@ -13,6 +13,7 @@
#include "gfx.h"
#include "town.h"
#include "signs.h"
#include "waypoint.h"
#define VIEWPORT_DRAW_MEM (65536 * 2)
@@ -978,7 +979,7 @@ static void ViewportAddSigns(DrawPixelInfo *dpi)
static void ViewportAddWaypoints(DrawPixelInfo *dpi)
{
Waypoint *cp;
Waypoint *wp;
int left, top, right, bottom;
StringSpriteToDraw *sstd;
@@ -992,34 +993,34 @@ static void ViewportAddWaypoints(DrawPixelInfo *dpi)
bottom = top + dpi->height;
if (dpi->zoom < 1) {
for(cp=_waypoints; cp != endof(_waypoints); cp++) {
if (cp->xy &&
bottom > cp->sign.top &&
top < cp->sign.top + 12 &&
right > cp->sign.left &&
left < cp->sign.left + cp->sign.width_1) {
FOR_ALL_WAYPOINTS(wp) {
if (wp->xy &&
bottom > wp->sign.top &&
top < wp->sign.top + 12 &&
right > wp->sign.left &&
left < wp->sign.left + wp->sign.width_1) {
sstd=AddStringToDraw(cp->sign.left + 1, cp->sign.top + 1, STR_WAYPOINT_VIEWPORT, cp - _waypoints, 0, 0);
sstd = AddStringToDraw(wp->sign.left + 1, wp->sign.top + 1, STR_WAYPOINT_VIEWPORT, wp->index, 0, 0);
if (sstd != NULL) {
sstd->width = cp->sign.width_1;
sstd->color = (cp->deleted ? 0xE : 11);
sstd->width = wp->sign.width_1;
sstd->color = (wp->deleted ? 0xE : 11);
}
}
}
} else if (dpi->zoom == 1) {
right += 2;
bottom += 2;
for(cp=_waypoints; cp != endof(_waypoints); cp++) {
if (cp->xy &&
bottom > cp->sign.top &&
top < cp->sign.top + 24 &&
right > cp->sign.left &&
left < cp->sign.left + cp->sign.width_1*2) {
FOR_ALL_WAYPOINTS(wp) {
if (wp->xy &&
bottom > wp->sign.top &&
top < wp->sign.top + 24 &&
right > wp->sign.left &&
left < wp->sign.left + wp->sign.width_1*2) {
sstd=AddStringToDraw(cp->sign.left + 1, cp->sign.top + 1, STR_WAYPOINT_VIEWPORT, cp - _waypoints, 0, 0);
sstd = AddStringToDraw(wp->sign.left + 1, wp->sign.top + 1, STR_WAYPOINT_VIEWPORT, wp->index, 0, 0);
if (sstd != NULL) {
sstd->width = cp->sign.width_1;
sstd->color = (cp->deleted ? 0xE : 11);
sstd->width = wp->sign.width_1;
sstd->color = (wp->deleted ? 0xE : 11);
}
}
}
@@ -1027,17 +1028,17 @@ static void ViewportAddWaypoints(DrawPixelInfo *dpi)
right += 4;
bottom += 5;
for(cp=_waypoints; cp != endof(_waypoints); cp++) {
if (cp->xy &&
bottom > cp->sign.top &&
top < cp->sign.top + 24 &&
right > cp->sign.left &&
left < cp->sign.left + cp->sign.width_2*4) {
FOR_ALL_WAYPOINTS(wp) {
if (wp->xy &&
bottom > wp->sign.top &&
top < wp->sign.top + 24 &&
right > wp->sign.left &&
left < wp->sign.left + wp->sign.width_2*4) {
sstd=AddStringToDraw(cp->sign.left + 1, cp->sign.top + 1, STR_WAYPOINT_VIEWPORT_TINY, cp - _waypoints, 0, 0);
sstd = AddStringToDraw(wp->sign.left + 1, wp->sign.top + 1, STR_WAYPOINT_VIEWPORT_TINY, wp->index, 0, 0);
if (sstd != NULL) {
sstd->width = cp->sign.width_2 | 0x8000;
sstd->color = (cp->deleted ? 0xE : 11);
sstd->width = wp->sign.width_2 | 0x8000;
sstd->color = (wp->deleted ? 0xE : 11);
}
}
}
@@ -1624,7 +1625,7 @@ static bool CheckClickOnSign(ViewPort *vp, int x, int y)
static bool CheckClickOnWaypoint(ViewPort *vp, int x, int y)
{
Waypoint *cp;
Waypoint *wp;
if (!(_display_opt & DO_WAYPOINTS))
return false;
@@ -1633,39 +1634,39 @@ static bool CheckClickOnWaypoint(ViewPort *vp, int x, int y)
x = x - vp->left + vp->virtual_left;
y = y - vp->top + vp->virtual_top;
for(cp = _waypoints; cp != endof(_waypoints); cp++) {
if (cp->xy &&
y >= cp->sign.top &&
y < cp->sign.top + 12 &&
x >= cp->sign.left &&
x < cp->sign.left + cp->sign.width_1) {
ShowRenameWaypointWindow(cp);
FOR_ALL_WAYPOINTS(wp) {
if (wp->xy &&
y >= wp->sign.top &&
y < wp->sign.top + 12 &&
x >= wp->sign.left &&
x < wp->sign.left + wp->sign.width_1) {
ShowRenameWaypointWindow(wp);
return true;
}
}
} else if (vp->zoom == 1) {
x = (x - vp->left + 1) * 2 + vp->virtual_left;
y = (y - vp->top + 1) * 2 + vp->virtual_top;
for(cp = _waypoints; cp != endof(_waypoints); cp++) {
if (cp->xy &&
y >= cp->sign.top &&
y < cp->sign.top + 24 &&
x >= cp->sign.left &&
x < cp->sign.left + cp->sign.width_1 * 2) {
ShowRenameWaypointWindow(cp);
FOR_ALL_WAYPOINTS(wp) {
if (wp->xy &&
y >= wp->sign.top &&
y < wp->sign.top + 24 &&
x >= wp->sign.left &&
x < wp->sign.left + wp->sign.width_1 * 2) {
ShowRenameWaypointWindow(wp);
return true;
}
}
} else {
x = (x - vp->left + 3) * 4 + vp->virtual_left;
y = (y - vp->top + 3) * 4 + vp->virtual_top;
for(cp = _waypoints; cp != endof(_waypoints); cp++) {
if (cp->xy &&
y >= cp->sign.top &&
y < cp->sign.top + 24 &&
x >= cp->sign.left &&
x < cp->sign.left + cp->sign.width_2 * 4) {
ShowRenameWaypointWindow(cp);
FOR_ALL_WAYPOINTS(wp) {
if (wp->xy &&
y >= wp->sign.top &&
y < wp->sign.top + 24 &&
x >= wp->sign.left &&
x < wp->sign.left + wp->sign.width_2 * 4) {
ShowRenameWaypointWindow(wp);
return true;
}
}