[ScryMUD] SVN Commit Info r768 - branches/people/eroper/automapper/mud/grrmud/server
scrymud at wanfear.com
scrymud at wanfear.com
Fri Dec 17 02:26:38 PST 2004
Author: eroper
Date: 2004-12-17 02:26:36 -0800 (Fri, 17 Dec 2004)
New Revision: 768
Modified:
branches/people/eroper/automapper/mud/grrmud/server/mapper.h
branches/people/eroper/automapper/mud/grrmud/server/zone.cc
Log:
Differential distance adjustment now takes place.
Links stretched by the automapper vs. set door distance are now tagged.
I use this for example in the perl script to color those paths red.
Modified: branches/people/eroper/automapper/mud/grrmud/server/mapper.h
===================================================================
--- branches/people/eroper/automapper/mud/grrmud/server/mapper.h 2004-12-17 08:52:47 UTC (rev 767)
+++ branches/people/eroper/automapper/mud/grrmud/server/mapper.h 2004-12-17 10:26:36 UTC (rev 768)
@@ -110,6 +110,7 @@
protected:
int start_room;
int end_room;
+ int dist;
bool hidden;
public:
path() { start_room = -1; end_room = -1; hidden = false; }
@@ -117,6 +118,8 @@
int end(void) { return end_room; }
int start(int s) { start_room = s; return start_room; }
int end(int e) { end_room = e; return end_room; }
+ int distance(void) { return dist; }
+ int distance(int d) { dist = d; return dist; }
};
class zonepath : public path {
Modified: branches/people/eroper/automapper/mud/grrmud/server/zone.cc
===================================================================
--- branches/people/eroper/automapper/mud/grrmud/server/zone.cc 2004-12-17 08:52:47 UTC (rev 767)
+++ branches/people/eroper/automapper/mud/grrmud/server/zone.cc 2004-12-17 10:26:36 UTC (rev 768)
@@ -636,7 +636,7 @@
new_maproom.zone(room_list[new_maproom.num()].getZoneNum());
new_maproom.placeholder(false);
dr_dir = ptr->getDirection();
- distance = ptr->distance;
+ distance = ptr->distance + 1;
if (
(strcmp((const char*)(*dr_dir), "northeast") == 0) ||
@@ -660,6 +660,7 @@
path_ptr = new path;
path_ptr->start(cur_maproom->num());
path_ptr->end(new_maproom.num());
+ path_ptr->distance(distance);
path_list.append(path_ptr);
path_ptr = NULL;
} else {
@@ -667,6 +668,7 @@
zpath_ptr = new zonepath;
zpath_ptr->start(cur_maproom->num());
zpath_ptr->end(new_maproom.num());
+ zpath_ptr->distance(distance);
zpath_ptr->zone(new_maproom.zone());
zpath_list.append(zpath_ptr);
zpath_ptr = NULL;
@@ -676,129 +678,108 @@
if ( !room_list[tmp_rm].getFlag(29) ) {
if (strcmp((const char *)(*dr_dir), "northeast") == 0) {
- new_maproom.x(cur_maproom->x()+1+distance);
- new_maproom.y(cur_maproom->y()-1-distance);
- new_maproom.z(cur_maproom->z());
if ( (shift_by = my_rlist.collision(maprooms::NORTHEAST,
- distance+1, *cur_maproom)) ) {
- x = cur_maproom->x();
- y = cur_maproom->y();
- z = cur_maproom->z();
+ distance, *cur_maproom)) ) {
my_rlist.shift_sw(cur_maproom->x(),
cur_maproom->y(), shift_by);
+ }
+ x = cur_maproom->x()+distance;
+ y = cur_maproom->y()-distance;
+ z = cur_maproom->z();
new_maproom.x(x);
new_maproom.y(y);
new_maproom.z(z);
- }
} else if (strcmp((const char *)(*dr_dir), "southeast") == 0) {
- new_maproom.x(cur_maproom->x()+1+distance);
- new_maproom.y(cur_maproom->y()+1+distance);
- new_maproom.z(cur_maproom->z());
if ( (shift_by = my_rlist.collision(maprooms::SOUTHEAST,
- distance+1, *cur_maproom)) ) {
- x = cur_maproom->x();
- y = cur_maproom->y();
- z = cur_maproom->z();
+ distance, *cur_maproom)) ) {
my_rlist.shift_nw(cur_maproom->x(), cur_maproom->y(),
shift_by);
+ }
+ x = cur_maproom->x()+distance;
+ y = cur_maproom->y()+distance;
+ z = cur_maproom->z();
new_maproom.x(x);
new_maproom.y(y);
new_maproom.z(z);
- }
} else if (strcmp((const char *)(*dr_dir), "southwest") == 0) {
- new_maproom.x(cur_maproom->x()-1-distance);
- new_maproom.y(cur_maproom->y()+1+distance);
- new_maproom.z(cur_maproom->z());
if ( (shift_by = my_rlist.collision(maprooms::SOUTHWEST,
- distance+1, *cur_maproom)) ) {
- x = cur_maproom->x();
- y = cur_maproom->y();
- z = cur_maproom->z();
+ distance, *cur_maproom)) ) {
my_rlist.shift_ne(cur_maproom->x(), cur_maproom->y(),
shift_by);
+ }
+ x = cur_maproom->x()-distance;
+ y = cur_maproom->y()+distance;
+ z = cur_maproom->z();
new_maproom.x(x);
new_maproom.y(y);
new_maproom.z(z);
- }
} else if (strcmp((const char *)(*dr_dir), "northwest") == 0) {
new_maproom.x(cur_maproom->x()-1-distance);
new_maproom.y(cur_maproom->y()-1-distance);
new_maproom.z(cur_maproom->z());
if ( (shift_by = my_rlist.collision(maprooms::NORTHWEST,
- distance+1, *cur_maproom)) ) {
- x = cur_maproom->x();
- y = cur_maproom->y();
- z = cur_maproom->z();
+ distance, *cur_maproom)) ) {
my_rlist.shift_se(cur_maproom->x(), cur_maproom->y(),
shift_by);
+ }
+ x = cur_maproom->x()-distance;
+ y = cur_maproom->y()-distance;
+ z = cur_maproom->z();
new_maproom.x(x);
new_maproom.y(y);
new_maproom.z(z);
- }
} else if (strcmp((const char *)(*dr_dir), "north") == 0) {
- new_maproom.x(cur_maproom->x());
- new_maproom.y(cur_maproom->y()-1-distance);
- new_maproom.z(cur_maproom->z());
if ( (shift_by = my_rlist.collision(maprooms::NORTH,
- distance+1, *cur_maproom)) ) {
+ distance, *cur_maproom)) ) {
+ my_rlist.shift_s(cur_maproom->y(), shift_by);
+ }
x = cur_maproom->x();
- y = cur_maproom->y();
+ y = cur_maproom->y()-distance;
z = cur_maproom->z();
- my_rlist.shift_s(cur_maproom->y(), shift_by);
new_maproom.x(x);
new_maproom.y(y);
new_maproom.z(z);
- }
} else if (strcmp((const char *)(*dr_dir), "south") == 0) {
- new_maproom.x(cur_maproom->x());
- new_maproom.y(cur_maproom->y()+1+distance);
- new_maproom.z(cur_maproom->z());
if ( (shift_by = my_rlist.collision(maprooms::SOUTH,
- distance+1, *cur_maproom)) ) {
+ distance, *cur_maproom)) ) {
+ my_rlist.shift_n(cur_maproom->y(), shift_by);
+ }
x = cur_maproom->x();
- y = cur_maproom->y();
+ y = cur_maproom->y()+distance;
z = cur_maproom->z();
- my_rlist.shift_n(cur_maproom->y(), shift_by);
new_maproom.x(x);
new_maproom.y(y);
new_maproom.z(z);
- }
} else if (strcmp((const char *)(*dr_dir), "east") == 0) {
- new_maproom.x(cur_maproom->x()+1+distance);
- new_maproom.y(cur_maproom->y());
- new_maproom.z(cur_maproom->z());
if ( (shift_by = my_rlist.collision(maprooms::EAST,
- distance+1, *cur_maproom)) ) {
- x = cur_maproom->x();
+ distance, *cur_maproom)) ) {
+ my_rlist.shift_w(cur_maproom->x(), shift_by);
+ }
+ x = cur_maproom->x()+distance;
y = cur_maproom->y();
z = cur_maproom->z();
- my_rlist.shift_w(cur_maproom->x(), shift_by);
new_maproom.x(x);
new_maproom.y(y);
new_maproom.z(z);
- }
} else if (strcmp((const char *)(*dr_dir), "west") == 0) {
- new_maproom.x(cur_maproom->x()-1-distance);
- new_maproom.y(cur_maproom->y());
- new_maproom.z(cur_maproom->z());
if ( (shift_by = my_rlist.collision(maprooms::WEST,
- distance+1, *cur_maproom)) ) {
- x = cur_maproom->x();
+ distance, *cur_maproom)) ) {
+ my_rlist.shift_e(cur_maproom->x(), shift_by );
+ }
+ x = cur_maproom->x()-distance;
y = cur_maproom->y();
z = cur_maproom->z();
- my_rlist.shift_e(cur_maproom->x(), shift_by );
new_maproom.x(x);
new_maproom.y(y);
new_maproom.z(z);
- }
} else if (strcmp((const char *)(*dr_dir), "up") == 0) {
new_maproom.x(cur_maproom->x());
new_maproom.y(cur_maproom->y());
- new_maproom.z(cur_maproom->z()+1+distance);
+ new_maproom.z(cur_maproom->z()+distance);
} else if (strcmp((const char *)(*dr_dir), "down") == 0) {
new_maproom.x(cur_maproom->x());
new_maproom.y(cur_maproom->y());
- new_maproom.z(cur_maproom->z()-1-distance);
+ new_maproom.z(cur_maproom->z()-distance);
} else {
continue;
}
@@ -849,7 +830,7 @@
while( (path_ptr = path_cll.next()) ) {
start_rm = my_rlist.byNum(path_ptr->start());
end_rm = my_rlist.byNum(path_ptr->end());
- Sprintf(tmp_buf, "path %d-%d %d %d %d %d %d %d\n",
+ Sprintf(tmp_buf, "path %d-%d %d %d %d %d %d %d",
path_ptr->start(),
path_ptr->end(),
start_rm->x(),
@@ -859,6 +840,14 @@
end_rm->y(),
end_rm->z());
retval.append(tmp_buf);
+ if (
+ ( abs((start_rm->x()-end_rm->x())) > path_ptr->distance() ) ||
+ ( abs((start_rm->y()-end_rm->y())) > path_ptr->distance() ) ||
+ ( abs((start_rm->z()-end_rm->z())) > path_ptr->distance() )
+ ) {
+ retval.append(" stretched");
+ }
+ retval.append("\n");
delete path_ptr;
}
More information about the ScryMUD
mailing list