Overview
Comment: | Fix the logic for sending CREATED and DESTROYED messages |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
00378e2e14f90937b87dc5644356fd53 |
User & Date: | user on 2021-01-09 01:32:59 |
Other Links: | manifest | tags |
Context
2021-01-09
| ||
03:03 | Fix a mistake in the solution replay and document that command. check-in: 8524828a0e user: user tags: trunk | |
01:32 | Fix the logic for sending CREATED and DESTROYED messages check-in: 00378e2e14 user: user tags: trunk | |
00:56 | Implement the solution replay check-in: 3edc879c32 user: user tags: trunk | |
Changes
Modified exec.c from [790ffffb30] to [3483fb1cee].
︙ | ︙ | |||
604 605 606 607 608 609 610 | o->dir=d; pflink(n); v=send_message(from,n,MSG_CREATE,NVALUE(0),NVALUE(0),NVALUE(0)); if(o->oflags&OF_DESTROYED) return VOIDLINK; for(y=0;y<5;y++) for(x=0;x<5;x++) { xx=o->x+x-2; yy=o->y+y-2; if(xx<1 || xx>pfwidth || yy<1 || yy>pfheight) continue; | | | 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 | o->dir=d; pflink(n); v=send_message(from,n,MSG_CREATE,NVALUE(0),NVALUE(0),NVALUE(0)); if(o->oflags&OF_DESTROYED) return VOIDLINK; for(y=0;y<5;y++) for(x=0;x<5;x++) { xx=o->x+x-2; yy=o->y+y-2; if(xx<1 || xx>pfwidth || yy<1 || yy>pfheight) continue; i=x+5*(4-y); m=playfield[xx+yy*64-65]; while(m!=VOIDLINK) { p=objects[m]; if(p->arrivals&(1<<i)) if(m!=n) send_message(n,m,MSG_CREATED,NVALUE(o->x),NVALUE(o->y),v); m=p->up; } } |
︙ | ︙ | |||
646 647 648 649 650 651 652 | if(o->next!=VOIDLINK) objects[o->next]->prev=o->prev; // This object is not itself removed from the linked list, since it may be destroyed while enumerating all objects } o->oflags|=OF_DESTROYED; if(why!=8 && !(o->oflags&OF_VISUALONLY)) { // Not checking for stealth; stealth only applies to movement, not destruction for(yy=0;yy<5;yy++) for(xx=0;xx<5;xx++) { | | | | 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 | if(o->next!=VOIDLINK) objects[o->next]->prev=o->prev; // This object is not itself removed from the linked list, since it may be destroyed while enumerating all objects } o->oflags|=OF_DESTROYED; if(why!=8 && !(o->oflags&OF_VISUALONLY)) { // Not checking for stealth; stealth only applies to movement, not destruction for(yy=0;yy<5;yy++) for(xx=0;xx<5;xx++) { x=objects[to]->x+xx-2; y=objects[to]->y+yy-2; if(x<1 || x>pfwidth || y<1 || y>pfheight) continue; i=xx+5*(4-yy); n=playfield[x+y*64-65]; while(n!=VOIDLINK) { o=objects[n]; if(o->departures&(1<<i)) send_message(to,n,MSG_DESTROYED,NVALUE(0),NVALUE(0),NVALUE(why)); n=o->up; } } |
︙ | ︙ |