ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/object.C
(Generate patch)

Comparing deliantra/server/common/object.C (file contents):
Revision 1.223 by root, Wed Apr 30 08:29:31 2008 UTC vs.
Revision 1.225 by root, Fri May 2 20:28:44 2008 UTC

606} 606}
607 607
608object & 608object &
609object::operator =(const object &src) 609object::operator =(const object &src)
610{ 610{
611 bool is_freed = flag [FLAG_FREED]; 611 remove ();
612 bool is_removed = flag [FLAG_REMOVED];
613 612
614 *(object_copy *)this = src; 613 *(object_copy *)this = src;
615 614
616 flag [FLAG_FREED] = is_freed;
617 flag [FLAG_REMOVED] = is_removed; 615 flag [FLAG_REMOVED] = true;
618 616
619 /* Copy over key_values, if any. */ 617 /* Copy over key_values, if any. */
620 if (src.key_values) 618 if (src.key_values)
621 { 619 {
622 key_value *tail = 0; 620 key_value *tail = 0;
686object * 684object *
687object::clone () 685object::clone ()
688{ 686{
689 object *neu = create (); 687 object *neu = create ();
690 copy_to (neu); 688 copy_to (neu);
689 neu->map = map; // not copied by copy_to
691 return neu; 690 return neu;
692} 691}
693 692
694/* 693/*
695 * If an object with the IS_TURNABLE() flag needs to be turned due 694 * If an object with the IS_TURNABLE() flag needs to be turned due
2326 * create clone from object to another 2325 * create clone from object to another
2327 */ 2326 */
2328object * 2327object *
2329object_create_clone (object *asrc) 2328object_create_clone (object *asrc)
2330{ 2329{
2331 object *dst = 0, *tmp, *src, *prev, *item; 2330 object *dst = 0;
2332 2331
2333 if (!asrc) 2332 if (!asrc)
2334 return 0; 2333 return 0;
2335 2334
2336 src = asrc->head_ (); 2335 object *src = asrc->head_ ();
2337 2336
2338 prev = 0; 2337 object *prev = 0;
2339 for (object *part = src; part; part = part->more) 2338 for (object *part = src; part; part = part->more)
2340 { 2339 {
2341 tmp = part->clone (); 2340 object *tmp = part->clone ();
2341
2342 tmp->x -= src->x; 2342 tmp->x -= src->x;
2343 tmp->y -= src->y; 2343 tmp->y -= src->y;
2344 2344
2345 if (!part->head) 2345 if (!part->head)
2346 { 2346 {
2356 prev->more = tmp; 2356 prev->more = tmp;
2357 2357
2358 prev = tmp; 2358 prev = tmp;
2359 } 2359 }
2360 2360
2361 for (item = src->inv; item; item = item->below) 2361 for (object *item = src->inv; item; item = item->below)
2362 insert_ob_in_ob (object_create_clone (item), dst); 2362 insert_ob_in_ob (object_create_clone (item), dst);
2363 2363
2364 return dst; 2364 return dst;
2365} 2365}
2366 2366

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines