Overview
| Comment: | Always use objtrash to free objects in editor, not free |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
b8f0f5f65a6af5ac2e74eec509b36896 |
| User & Date: | user on 2021-02-11 22:51:06.136 |
| Other Links: | manifest | tags |
Context
|
2021-02-11
| ||
| 23:59 | Add the "pick" instruction check-in: 23f422335e user: user tags: trunk | |
| 22:51 | Always use objtrash to free objects in editor, not free check-in: b8f0f5f65a user: user tags: trunk | |
| 22:37 | Check for collision layers when adding objects in the editor check-in: 73439c4682 user: user tags: trunk | |
Changes
Modified edit.c
from [ecf182b369]
to [f72f24e675].
| ︙ | ︙ | |||
403 404 405 406 407 408 409 |
c=classes[m->class];
if(!c) return;
n=playfield[y*64+x-65];
while(n!=VOIDLINK) {
if(d && objects[n]->class==m->class) return;
if(c->collisionLayers&classes[objects[n]->class]->collisionLayers) {
u=objects[n]->up;
| | < > | 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 |
c=classes[m->class];
if(!c) return;
n=playfield[y*64+x-65];
while(n!=VOIDLINK) {
if(d && objects[n]->class==m->class) return;
if(c->collisionLayers&classes[objects[n]->class]->collisionLayers) {
u=objects[n]->up;
objtrash(n);
n=u;
} else {
n=objects[n]->up;
}
}
generation_number_inc=0;
n=objalloc(m->class);
if(n==VOIDLINK) return;
objects[n]->x=x;
objects[n]->y=y;
objects[n]->image=m->img;
objects[n]->dir=m->dir;
objects[n]->misc1=m->misc1;
|
| ︙ | ︙ |
Modified function.c
from [0fdb3a7faa]
to [89bf3c9a8b].
| ︙ | ︙ | |||
866 867 868 869 870 871 872 |
static int vt1_objects_update(sqlite3_vtab*vt,int argc,sqlite3_value**argv,sqlite3_int64*rowid) {
sqlite3_int64 id;
int x,y,z;
if(!main_options['e']) return SQLITE_LOCKED;
if(argc==1) {
// DELETE
id=sqlite3_value_int64(argv[0]);
| | < < | 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 |
static int vt1_objects_update(sqlite3_vtab*vt,int argc,sqlite3_value**argv,sqlite3_int64*rowid) {
sqlite3_int64 id;
int x,y,z;
if(!main_options['e']) return SQLITE_LOCKED;
if(argc==1) {
// DELETE
id=sqlite3_value_int64(argv[0]);
objtrash(id);
} else if(sqlite3_value_type(argv[0])==SQLITE_NULL) {
// INSERT
if(sqlite3_value_type(argv[1])!=SQLITE_NULL || sqlite3_value_type(argv[2])!=SQLITE_NULL) return SQLITE_CONSTRAINT_VTAB;
if(sqlite3_value_type(argv[3])==SQLITE_NULL) return SQLITE_CONSTRAINT_NOTNULL;
if(sqlite3_value_type(argv[7])==SQLITE_NULL) return SQLITE_CONSTRAINT_NOTNULL;
if(sqlite3_value_type(argv[11])!=SQLITE_NULL) return SQLITE_CONSTRAINT_VTAB;
if(sqlite3_value_type(argv[12])!=SQLITE_NULL) return SQLITE_CONSTRAINT_VTAB;
|
| ︙ | ︙ |