Overview
| Comment: | Correct the implementation of sink() so that the objects above and below the ones being switched are linked correctly; also, objtrash() does not need to reset the up/down links |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
3aa2e5e3bd8bd252dfb59f31a1bbb9fc |
| User & Date: | user on 2020-12-18 02:00:30.368 |
| Other Links: | manifest | tags |
Context
|
2020-12-18
| ||
| 08:07 | Many changes (still not quite right, it seems) check-in: a5ad5e4eeb user: user tags: trunk | |
| 02:00 | Correct the implementation of sink() so that the objects above and below the ones being switched are linked correctly; also, objtrash() does not need to reset the up/down links check-in: 3aa2e5e3bd user: user tags: trunk | |
|
2020-12-17
| ||
| 22:10 | Implement the rest of the phases of the turn; still not working perfectly though check-in: f4f4383c4e user: user tags: trunk | |
Changes
Modified exec.c
from [bcf1e42af2]
to [4dabc08567].
| ︙ | ︙ | |||
158 159 160 161 162 163 164 |
void objtrash(Uint32 n) {
Object*o=objects[n];
if(!o) return;
animfree(o->anim);
if(o->down==VOIDLINK) playfield[o->x+o->y*64-65]=o->up;
else objects[o->down]->up=o->up;
if(o->up!=VOIDLINK) objects[o->up]->down=o->down;
| < | 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
void objtrash(Uint32 n) {
Object*o=objects[n];
if(!o) return;
animfree(o->anim);
if(o->down==VOIDLINK) playfield[o->x+o->y*64-65]=o->up;
else objects[o->down]->up=o->up;
if(o->up!=VOIDLINK) objects[o->up]->down=o->down;
if(!(o->oflags&OF_DESTROYED)) {
if(firstobj==n) firstobj=o->next;
if(lastobj==n) lastobj=o->prev;
if(o->prev!=VOIDLINK) objects[o->prev]->next=o->next;
if(o->next!=VOIDLINK) objects[o->next]->prev=o->prev;
}
free(o);
|
| ︙ | ︙ | |||
398 399 400 401 402 403 404 | Object*p=objects[y]; int i=o->x+o->y*64-65; Value v; p->up=o->up; o->down=p->down; o->up=y; p->down=x; | | | | 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 |
Object*p=objects[y];
int i=o->x+o->y*64-65;
Value v;
p->up=o->up;
o->down=p->down;
o->up=y;
p->down=x;
if(o->down==VOIDLINK) playfield[i]=x; else objects[o->down]->up=x;
if(p->up!=VOIDLINK) objects[p->up]->down=y;
v=send_message(x,y,MSG_FLOATED,NVALUE(0),NVALUE(0),NVALUE(0));
if(!((o->oflags|p->oflags)&(OF_VISUALONLY|OF_DESTROYED))) send_message(y,x,MSG_SUNK,NVALUE(0),NVALUE(0),v);
}
static void change_density(Uint32 n,Sint32 v) {
Object*o=objects[n];
Uint32 i;
|
| ︙ | ︙ |