Overview
| Comment: | Add XY function |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
1bcf59e1304b09c011ba51f95b8de805 |
| User & Date: | user on 2021-02-16 03:08:39.288 |
| Other Links: | manifest | tags |
Context
|
2021-02-16
| ||
| 07:11 | In the level editor, add the possibility to clear levels, resize levels, and to fill the playfield with one kind of object. check-in: 2f8784fac0 user: user tags: trunk | |
| 03:08 | Add XY function check-in: 1bcf59e130 user: user tags: trunk | |
|
2021-02-14
| ||
| 05:08 | Correct a mistake in the OBJECTS virtual table, and allow the class name to be used with the CVALUE function. check-in: a352027216 user: user tags: trunk | |
Changes
Modified function.c
from [cd1065ef25]
to [7eed9dd543].
| ︙ | ︙ | |||
321 322 323 324 325 326 327 328 329 330 331 332 333 334 |
sqlite3_result_int64(cxt,a-(a&0x80000000?0x100000000LL:0));
}
static void fn_trace_on(sqlite3_context*cxt,int argc,sqlite3_value**argv) {
const char*v=sqlite3_user_data(cxt);
if(main_options['t']=*v) puts("[Tracing enabled]"); else puts("[Tracing disabled]");
}
static void fn_zero_extend(sqlite3_context*cxt,int argc,sqlite3_value**argv) {
sqlite3_int64 a;
if(sqlite3_value_type(*argv)==SQLITE_NULL) return;
a=sqlite3_value_int64(*argv)&0xFFFFFFFF;
sqlite3_result_int64(cxt,a);
}
| > > > > > | 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 |
sqlite3_result_int64(cxt,a-(a&0x80000000?0x100000000LL:0));
}
static void fn_trace_on(sqlite3_context*cxt,int argc,sqlite3_value**argv) {
const char*v=sqlite3_user_data(cxt);
if(main_options['t']=*v) puts("[Tracing enabled]"); else puts("[Tracing disabled]");
}
static void fn_xy(sqlite3_context*cxt,int argc,sqlite3_value**argv) {
if(sqlite3_value_type(argv[0])==SQLITE_NULL || sqlite3_value_type(argv[1])==SQLITE_NULL) return;
sqlite3_result_int(cxt,sqlite3_value_int(argv[0])+sqlite3_value_int(argv[1])*64);
}
static void fn_zero_extend(sqlite3_context*cxt,int argc,sqlite3_value**argv) {
sqlite3_int64 a;
if(sqlite3_value_type(*argv)==SQLITE_NULL) return;
a=sqlite3_value_int64(*argv)&0xFFFFFFFF;
sqlite3_result_int64(cxt,a);
}
|
| ︙ | ︙ | |||
962 963 964 965 966 967 968 969 970 971 972 973 974 975 | sqlite3_create_function(userdb,"PICTURE_SIZE",0,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_picture_size,0,0); sqlite3_create_function(userdb,"READ_LUMP_AT",2,SQLITE_UTF8,0,fn_read_lump_at,0,0); sqlite3_create_function(userdb,"RESOURCE",-1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_resource,0,0); sqlite3_create_function(userdb,"SIGN_EXTEND",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_sign_extend,0,0); sqlite3_create_function(userdb,"SOLUTION_CACHEID",0,SQLITE_UTF8|SQLITE_DETERMINISTIC,ptr1,fn_cacheid,0,0); sqlite3_create_function(userdb,"TRACE_OFF",0,SQLITE_UTF8,"",fn_trace_on,0,0); sqlite3_create_function(userdb,"TRACE_ON",0,SQLITE_UTF8,"\x01",fn_trace_on,0,0); sqlite3_create_function(userdb,"ZERO_EXTEND",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_zero_extend,0,0); sqlite3_create_module(userdb,"CLASSES",&vt_classes,"CREATE TABLE `CLASSES`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT, `EDITORHELP` TEXT, `HELP` TEXT," "`INPUT` INT, `QUIZ` INT, `TRACEIN` INT, `TRACEOUT` INT, `GROUP` TEXT, `PLAYER` INT);"); sqlite3_create_module(userdb,"MESSAGES",&vt_messages,"CREATE TABLE `MESSAGES`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT, `TRACE` INT);"); sqlite3_create_module(userdb,"OBJECTS",&vt_objects,"CREATE TABLE `OBJECTS`(`ID` INTEGER PRIMARY KEY, `CLASS` INT, `MISC1` INT, `MISC2` INT, `MISC3` INT," "`IMAGE` INT, `DIR` INT, `X` INT, `Y` INT, `UP` INT, `DOWN` INT, `DENSITY` INT HIDDEN);"); } | > | 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 | sqlite3_create_function(userdb,"PICTURE_SIZE",0,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_picture_size,0,0); sqlite3_create_function(userdb,"READ_LUMP_AT",2,SQLITE_UTF8,0,fn_read_lump_at,0,0); sqlite3_create_function(userdb,"RESOURCE",-1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_resource,0,0); sqlite3_create_function(userdb,"SIGN_EXTEND",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_sign_extend,0,0); sqlite3_create_function(userdb,"SOLUTION_CACHEID",0,SQLITE_UTF8|SQLITE_DETERMINISTIC,ptr1,fn_cacheid,0,0); sqlite3_create_function(userdb,"TRACE_OFF",0,SQLITE_UTF8,"",fn_trace_on,0,0); sqlite3_create_function(userdb,"TRACE_ON",0,SQLITE_UTF8,"\x01",fn_trace_on,0,0); sqlite3_create_function(userdb,"XY",2,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_xy,0,0); sqlite3_create_function(userdb,"ZERO_EXTEND",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_zero_extend,0,0); sqlite3_create_module(userdb,"CLASSES",&vt_classes,"CREATE TABLE `CLASSES`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT, `EDITORHELP` TEXT, `HELP` TEXT," "`INPUT` INT, `QUIZ` INT, `TRACEIN` INT, `TRACEOUT` INT, `GROUP` TEXT, `PLAYER` INT);"); sqlite3_create_module(userdb,"MESSAGES",&vt_messages,"CREATE TABLE `MESSAGES`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT, `TRACE` INT);"); sqlite3_create_module(userdb,"OBJECTS",&vt_objects,"CREATE TABLE `OBJECTS`(`ID` INTEGER PRIMARY KEY, `CLASS` INT, `MISC1` INT, `MISC2` INT, `MISC3` INT," "`IMAGE` INT, `DIR` INT, `X` INT, `Y` INT, `UP` INT, `DOWN` INT, `DENSITY` INT HIDDEN);"); } |
Modified sql.doc
from [b92214eca8]
to [98e4b49059].
| ︙ | ︙ | |||
78 79 80 81 82 83 84 85 86 87 88 89 90 91 | TRACE_OFF() Disables tracing when called. TRACE_ON() Enables tracing when called. ZERO_EXTEND(number) Zero extends a 32-bit number to 64-bits. Same as NVALUE. === Tables === Asterisks denote virtual tables. | > > > > | 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | TRACE_OFF() Disables tracing when called. TRACE_ON() Enables tracing when called. XY(x,y) Many bindings require a position as their first argument; use this function to combine X/Y coordinates into a single value for this. ZERO_EXTEND(number) Zero extends a 32-bit number to 64-bits. Same as NVALUE. === Tables === Asterisks denote virtual tables. |
| ︙ | ︙ |