Update of /cvsroot/exult/exult/objs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12734/objs Modified Files: barge.cc barge.h egg.cc egg.h iregobjs.cc iregobjs.h objs.cc objs.h Log Message: Move() methods take a 'newmap' parameter Index: barge.cc =================================================================== RCS file: /cvsroot/exult/exult/objs/barge.cc,v retrieving revision 1.45 retrieving revision 1.46 diff -u -d -r1.45 -r1.46 --- barge.cc 19 Apr 2004 05:03:54 -0000 1.45 +++ barge.cc 30 Jun 2004 06:16:18 -0000 1.46 @@ -362,7 +362,8 @@ void Barge_object::finish_move ( - Tile_coord *positions // New positions. Deleted when done. + Tile_coord *positions, // New positions. Deleted when done. + int newmap // Map #, or -1 for current. ) { set_center(); // Update center. @@ -372,7 +373,7 @@ Game_object *obj = get_object(i); if (i < perm_count) // Restore us as owner. obj->set_owner(this); - obj->move(positions[i]); + obj->move(positions[i], newmap); } delete [] positions; // Check for scrolling. @@ -622,7 +623,8 @@ ( int newtx, int newty, - int newlift + int newlift, + int newmap ) { if (!gathered) // Happens in SI with turtle. @@ -631,8 +633,10 @@ add_dirty(); // Get current location. Tile_coord old = get_tile(); + if (newmap != -1 && chunk) + newmap = chunk->get_map()->get_num(); // Move the barge itself. - Container_game_object::move(newtx, newty, newlift); + Container_game_object::move(newtx, newty, newlift, newmap); // Get deltas. int dx = newtx - old.tx, dy = newty - old.ty, dz = newlift - old.tz; int cnt = objects.size(); // We'll move each object. @@ -662,7 +666,7 @@ break; } } - finish_move(positions); // Add back & del. positions. + finish_move(positions, newmap); // Add back & del. positions. } /* Index: barge.h =================================================================== RCS file: /cvsroot/exult/exult/objs/barge.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- barge.h 17 Dec 2003 05:13:26 -0000 1.16 +++ barge.h 30 Jun 2004 06:16:18 -0000 1.17 @@ -55,7 +55,7 @@ int okay_to_rotate(Tile_coord pos); void add_dirty(); // Finish up move/rotate operation. - void finish_move(Tile_coord *positions); + void finish_move(Tile_coord *positions, int newmap = -1); public: Barge_object(int shapenum, int framenum, unsigned int shapex, unsigned int shapey, unsigned int lft, @@ -94,7 +94,7 @@ // For Time_sensitive: virtual void handle_event(unsigned long curtime, long udata); // Move to new abs. location. - virtual void move(int newtx, int newty, int newlift); + virtual void move(int newtx, int newty, int newlift, int newmap = -1); // Remove an object. virtual void remove(Game_object *obj); // Add an object. Index: egg.cc =================================================================== RCS file: /cvsroot/exult/exult/objs/egg.cc,v retrieving revision 1.111 retrieving revision 1.112 diff -u -d -r1.111 -r1.112 --- egg.cc 26 Jun 2004 23:00:58 -0000 1.111 +++ egg.cc 30 Jun 2004 06:16:18 -0000 1.112 @@ -839,12 +839,15 @@ ( int newtx, int newty, - int newlift + int newlift, + int newmap ) { // Figure new chunk. int newcx = newtx/c_tiles_per_chunk, newcy = newty/c_tiles_per_chunk; - Map_chunk *newchunk = gmap->get_chunk_safely(newcx, newcy); + Game_map *eggmap = newmap >= 0 ? gwin->get_map(newmap) : + (chunk ? chunk->get_map() : gmap); + Map_chunk *newchunk = eggmap->get_chunk_safely(newcx, newcy); if (!newchunk) return; // Bad loc. remove_this(1); // Remove from old. Index: egg.h =================================================================== RCS file: /cvsroot/exult/exult/objs/egg.h,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- egg.h 26 Jun 2004 23:00:58 -0000 1.25 +++ egg.h 30 Jun 2004 06:16:18 -0000 1.26 @@ -139,7 +139,7 @@ static void set_weather(int weather, int len = 15, Game_object *egg = 0); // Move to new abs. location. - virtual void move(int newtx, int newty, int newlift); + virtual void move(int newtx, int newty, int newlift, int newmap = -1); // Remove/delete this object. virtual void remove_this(int nodel = 0); virtual int is_egg() const // An egg? Index: iregobjs.cc =================================================================== RCS file: /cvsroot/exult/exult/objs/iregobjs.cc,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- iregobjs.cc 26 Jun 2004 23:00:58 -0000 1.27 +++ iregobjs.cc 30 Jun 2004 06:16:18 -0000 1.28 @@ -62,7 +62,8 @@ ( int newtx, int newty, - int newlift + int newlift, + int newmap ) { if (owner) // Watch for this. @@ -70,7 +71,7 @@ owner->remove(this); set_invalid(); // So we can safely move it back. } - Game_object::move(newtx, newty, newlift); + Game_object::move(newtx, newty, newlift, newmap); } /* Index: iregobjs.h =================================================================== RCS file: /cvsroot/exult/exult/objs/iregobjs.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- iregobjs.h 31 Aug 2003 17:32:26 -0000 1.13 +++ iregobjs.h 30 Jun 2004 06:16:18 -0000 1.14 @@ -57,9 +57,9 @@ virtual void paint(); virtual void paint_terrain() { } // Move to new abs. location. - virtual void move(int newtx, int newty, int newlift); - void move(Tile_coord t) - { move(t.tx, t.ty, t.tz); } + virtual void move(int newtx, int newty, int newlift, int newmap = -1); + void move(Tile_coord t, int newmap = -1) + { move(t.tx, t.ty, t.tz, newmap); } // Remove/delete this object. virtual void remove_this(int nodel = 0); virtual Container_game_object *get_owner() Index: objs.cc =================================================================== RCS file: /cvsroot/exult/exult/objs/objs.cc,v retrieving revision 1.127 retrieving revision 1.128 diff -u -d -r1.127 -r1.128 --- objs.cc 26 Jun 2004 23:00:58 -0000 1.127 +++ objs.cc 30 Jun 2004 06:16:18 -0000 1.128 @@ -299,12 +299,15 @@ ( int newtx, int newty, - int newlift + int newlift, + int newmap ) { // Figure new chunk. int newcx = newtx/c_tiles_per_chunk, newcy = newty/c_tiles_per_chunk; - Map_chunk *newchunk = gmap->get_chunk_safely(newcx, newcy); + Game_map *objmap = newmap >= 0 ? gwin->get_map(newmap) : + (chunk ? chunk->get_map() : gmap); + Map_chunk *newchunk = objmap->get_chunk_safely(newcx, newcy); if (!newchunk) return; // Bad loc. Map_chunk *oldchunk = chunk; // Remove from old. @@ -1360,10 +1363,11 @@ ( int newtx, int newty, - int newlift + int newlift, + int newmap ) { - Game_object::move(newtx, newty, newlift); + Game_object::move(newtx, newty, newlift, newmap); if (chunk) // Mark superchunk as 'modified'. { int cx = chunk->get_cx(), cy = chunk->get_cy(); Index: objs.h =================================================================== RCS file: /cvsroot/exult/exult/objs/objs.h,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- objs.h 26 Jun 2004 23:00:58 -0000 1.60 +++ objs.h 30 Jun 2004 06:16:18 -0000 1.61 @@ -162,9 +162,9 @@ // Get direction (NPC) is facing. int get_dir_facing() const; // Move to new abs. location. - virtual void move(int newtx, int newty, int newlift); - void move(Tile_coord t) - { move(t.tx, t.ty, t.tz); } + virtual void move(int newtx, int newty, int newlift, int newmap = -1); + void move(Tile_coord t, int newmap = -1) + { move(t.tx, t.ty, t.tz, newmap); } void change_frame(int frnum); // Change frame & set to repaint. // Swap positions. int swap_positions(Game_object *obj2); @@ -342,7 +342,7 @@ : Game_object(shapenum, framenum, tilex, tiley, lft) { } // Move to new abs. location. - virtual void move(int newtx, int newty, int newlift); + virtual void move(int newtx, int newty, int newlift, int newmap = -1); // Remove/delete this object. virtual void remove_this(int nodel = 0); virtual void paint_terrain() { } |