Nicolas Weeger wrote:
[...]
> My proposed check is to change insert_ob_in_map for:
>
> originator->below = op;
> } else {
> /* If there are other objects, then */
> if((top=GET_MAP_OB(op->map,op->x,op->y))!=NULL) {
> object *last=NULL;
> /*
> * If there are multiple objects on this space, we do some
> trickier
> handling.
>
> ie search floor & such all the time. The code after handles INS_MAP_LOAD
> and INS_ABOVE_FLOOR_ONLY flags.
I still cannot follow all the code that are done while loading maps. But
since the fix you propose here just reverses a part of the patch to
accelerate map loading (see cvs diff -r 1.100 -r 1.101 common/object.c),
it should not break too much. But reversing it will probably make map
loading slow again. Therefore: would it be possible to limit this
processing for overlay maps only? I.e. use something like
if ((!(flag&INS_MAP_LOAD) || <is overlay loading>) && top = ...)
instead of the original version
if (!(flag&INS_MAP_LOAD) && top = ...)
> Btw it looks strange to me that an overlay is always on top.
This problem should be solved with the above proposal, too: objects from
the overlay map are merged correctly, but the original map is loaded
with all the checks skipped.
_______________________________________________
crossfire mailing list
[email protected]
http://mailman.metalforge.org/mailman/listinfo/crossfire