… | |
… | |
2524 | * create clone from object to another |
2524 | * create clone from object to another |
2525 | */ |
2525 | */ |
2526 | object * |
2526 | object * |
2527 | object_create_clone (object *asrc) |
2527 | object_create_clone (object *asrc) |
2528 | { |
2528 | { |
2529 | object * |
|
|
2530 | dst = NULL, *tmp, *src, *part, *prev, *item; |
2529 | object *dst = 0, *tmp, *src, *part, *prev, *item; |
2531 | |
2530 | |
2532 | if (!asrc) |
2531 | if (!asrc) |
2533 | return NULL; |
2532 | return 0; |
|
|
2533 | |
2534 | src = asrc; |
2534 | src = asrc; |
2535 | if (src->head) |
2535 | if (src->head) |
2536 | src = src->head; |
2536 | src = src->head; |
2537 | |
2537 | |
2538 | prev = NULL; |
2538 | prev = 0; |
2539 | for (part = src; part; part = part->more) |
2539 | for (part = src; part; part = part->more) |
2540 | { |
2540 | { |
2541 | tmp = get_object (); |
2541 | tmp = get_object (); |
2542 | copy_object (part, tmp); |
2542 | copy_object (part, tmp); |
2543 | tmp->x -= src->x; |
2543 | tmp->x -= src->x; |
2544 | tmp->y -= src->y; |
2544 | tmp->y -= src->y; |
|
|
2545 | |
2545 | if (!part->head) |
2546 | if (!part->head) |
2546 | { |
2547 | { |
2547 | dst = tmp; |
2548 | dst = tmp; |
2548 | tmp->head = NULL; |
2549 | tmp->head = 0; |
2549 | } |
2550 | } |
2550 | else |
2551 | else |
2551 | { |
2552 | { |
2552 | tmp->head = dst; |
2553 | tmp->head = dst; |
2553 | } |
2554 | } |
|
|
2555 | |
2554 | tmp->more = NULL; |
2556 | tmp->more = 0; |
|
|
2557 | |
2555 | if (prev) |
2558 | if (prev) |
2556 | prev->more = tmp; |
2559 | prev->more = tmp; |
|
|
2560 | |
2557 | prev = tmp; |
2561 | prev = tmp; |
2558 | } |
2562 | } |
2559 | |
2563 | |
2560 | for (item = src->inv; item; item = item->below) |
2564 | for (item = src->inv; item; item = item->below) |
2561 | insert_ob_in_ob (object_create_clone (item), dst); |
2565 | insert_ob_in_ob (object_create_clone (item), dst); |