[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