Overview
Comment: | Do not try to access levels past beginning or end when skipping levels |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
b9447d44881a82ef270af3d52aec6a8c |
User & Date: | user on 2021-06-10 18:36:40 |
Other Links: | manifest | tags |
Context
2021-06-10
| ||
18:51 | Remember which levels have been solved in the user cache database check-in: c20acae981 user: user tags: trunk | |
18:36 | Do not try to access levels past beginning or end when skipping levels check-in: b9447d4488 user: user tags: trunk | |
05:37 | Improve code page documentation check-in: 5979352e00 user: user tags: trunk | |
Changes
Modified TODO from [6e6172910e] to [ade12521c4].
︙ | ︙ | |||
33 34 35 36 37 38 39 40 | * Display solution comments/timestamp * VCR mode * Command-line switch for batch import/export levels * SQL * Implement the GROUP column in the CLASSES table * Allow multiple SQL statements in one binding * Large fonts (width 8 or 16, height 8-32) | > | 33 34 35 36 37 38 39 40 41 | * Display solution comments/timestamp * VCR mode * Command-line switch for batch import/export levels * SQL * Implement the GROUP column in the CLASSES table * Allow multiple SQL statements in one binding * Large fonts (width 8 or 16, height 8-32) * Remember solved levels (store solved version in USERSTATE column) |
Modified default.heromeshrc from [71d4d49167] to [3ae6768dd0].
︙ | ︙ | |||
160 161 162 163 164 165 166 | ?.editKey.f2: select 'ex',:Export_Level; ?.editClick.left: ^a ?.editClick.ctrl.left: select 'em',id from objects where x=$X and y=$Y and up is null; ?.editClick.alt.left: ^u ?.editClick.right: delete from objects where x=$X and y=$Y and up is null; ! Global key bindings | | | | 160 161 162 163 164 165 166 167 168 169 170 171 172 | ?.editKey.f2: select 'ex',:Export_Level; ?.editClick.left: ^a ?.editClick.ctrl.left: select 'em',id from objects where x=$X and y=$Y and up is null; ?.editClick.alt.left: ^u ?.editClick.right: delete from objects where x=$X and y=$Y and up is null; ! Global key bindings ?.?.kp_minus: select 'go',-(level()-1) where level()>1; ?.?.kp_plus: select 'go',-(level()+1) where level()<max_level(); ?.?.ctrl.G: select 'go',-:Go_To_Level where :Go_To_Level=cast(:Go_To_Level as int) and cast(:Go_To_Level as int)>0; ?.?.shift.ctrl.M: select ':s'; ?.?.f10: select ':x'; |
Modified function.c from [bc142b3500] to [bb06bdfd76].
︙ | ︙ | |||
256 257 258 259 260 261 262 263 264 265 266 267 268 269 | sqlite3_result_error(cxt,"LOAD_LEVEL function requires -x switch",-1); return; } if(sqlite3_value_type(*argv)==SQLITE_NULL) return; s=load_level(sqlite3_value_int(*argv)); if(s) sqlite3_result_error(cxt,s,-1); } static void fn_modstate(sqlite3_context*cxt,int argc,sqlite3_value**argv) { sqlite3_result_int(cxt,SDL_GetModState()); } static void fn_move_list(sqlite3_context*cxt,int argc,sqlite3_value**argv) { if(replay_count) sqlite3_result_blob(cxt,replay_list,replay_count,SQLITE_TRANSIENT); | > > > > | 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 | sqlite3_result_error(cxt,"LOAD_LEVEL function requires -x switch",-1); return; } if(sqlite3_value_type(*argv)==SQLITE_NULL) return; s=load_level(sqlite3_value_int(*argv)); if(s) sqlite3_result_error(cxt,s,-1); } static void fn_max_level(sqlite3_context*cxt,int argc,sqlite3_value**argv) { sqlite3_result_int(cxt,level_nindex); } static void fn_modstate(sqlite3_context*cxt,int argc,sqlite3_value**argv) { sqlite3_result_int(cxt,SDL_GetModState()); } static void fn_move_list(sqlite3_context*cxt,int argc,sqlite3_value**argv) { if(replay_count) sqlite3_result_blob(cxt,replay_list,replay_count,SQLITE_TRANSIENT); |
︙ | ︙ | |||
972 973 974 975 976 977 978 979 980 981 982 983 984 985 | sqlite3_create_function(userdb,"HEROMESH_TYPE",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_heromesh_type,0,0); sqlite3_create_function(userdb,"HEROMESH_UNESCAPE",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_heromesh_unescape,0,0); sqlite3_create_function(userdb,"LEVEL",0,SQLITE_UTF8,&level_ord,fn_level,0,0); sqlite3_create_function(userdb,"LEVEL_CACHEID",0,SQLITE_UTF8|SQLITE_DETERMINISTIC,ptr0,fn_cacheid,0,0); sqlite3_create_function(userdb,"LEVEL_ID",0,SQLITE_UTF8,&level_id,fn_level,0,0); sqlite3_create_function(userdb,"LEVEL_TITLE",0,SQLITE_UTF8,0,fn_level_title,0,0); sqlite3_create_function(userdb,"LOAD_LEVEL",1,SQLITE_UTF8,0,fn_load_level,0,0); sqlite3_create_function(userdb,"MODSTATE",0,SQLITE_UTF8,0,fn_modstate,0,0); sqlite3_create_function(userdb,"MOVE_LIST",0,SQLITE_UTF8,0,fn_move_list,0,0); sqlite3_create_function(userdb,"MOVENUMBER",0,SQLITE_UTF8,0,fn_movenumber,0,0); sqlite3_create_function(userdb,"MVALUE",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_mvalue,0,0); sqlite3_create_function(userdb,"NVALUE",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_zero_extend,0,0); sqlite3_create_function(userdb,"OVALUE",1,SQLITE_UTF8,0,fn_ovalue,0,0); sqlite3_create_function(userdb,"PFHEIGHT",0,SQLITE_UTF8,&pfheight,fn_pfsize,0,0); | > | 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 | sqlite3_create_function(userdb,"HEROMESH_TYPE",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_heromesh_type,0,0); sqlite3_create_function(userdb,"HEROMESH_UNESCAPE",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_heromesh_unescape,0,0); sqlite3_create_function(userdb,"LEVEL",0,SQLITE_UTF8,&level_ord,fn_level,0,0); sqlite3_create_function(userdb,"LEVEL_CACHEID",0,SQLITE_UTF8|SQLITE_DETERMINISTIC,ptr0,fn_cacheid,0,0); sqlite3_create_function(userdb,"LEVEL_ID",0,SQLITE_UTF8,&level_id,fn_level,0,0); sqlite3_create_function(userdb,"LEVEL_TITLE",0,SQLITE_UTF8,0,fn_level_title,0,0); sqlite3_create_function(userdb,"LOAD_LEVEL",1,SQLITE_UTF8,0,fn_load_level,0,0); sqlite3_create_function(userdb,"MAX_LEVEL",0,SQLITE_UTF8,0,fn_max_level,0,0); sqlite3_create_function(userdb,"MODSTATE",0,SQLITE_UTF8,0,fn_modstate,0,0); sqlite3_create_function(userdb,"MOVE_LIST",0,SQLITE_UTF8,0,fn_move_list,0,0); sqlite3_create_function(userdb,"MOVENUMBER",0,SQLITE_UTF8,0,fn_movenumber,0,0); sqlite3_create_function(userdb,"MVALUE",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_mvalue,0,0); sqlite3_create_function(userdb,"NVALUE",1,SQLITE_UTF8|SQLITE_DETERMINISTIC,0,fn_zero_extend,0,0); sqlite3_create_function(userdb,"OVALUE",1,SQLITE_UTF8,0,fn_ovalue,0,0); sqlite3_create_function(userdb,"PFHEIGHT",0,SQLITE_UTF8,&pfheight,fn_pfsize,0,0); |
︙ | ︙ |
Modified sql.doc from [05f8679276] to [0dad571720].
︙ | ︙ | |||
57 58 59 60 61 62 63 | HEROMESH_UNESCAPE(text) Converts escaped representation of a game string into text format. LEVEL() The one-based order number of the current level. LEVEL_CACHEID() | | | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | HEROMESH_UNESCAPE(text) Converts escaped representation of a game string into text format. LEVEL() The one-based order number of the current level. LEVEL_CACHEID() The user cache ID of the level file. LEVEL_ID() The ID number of the current level. LEVEL_TITLE() The title of the current level, as a blob. |
︙ | ︙ | |||
101 102 103 104 105 106 107 108 109 110 111 112 113 114 | RESOURCE(...) Given the list of resource names, read a value from the X resource manager. Returns null if there is no such resource value. SIGN_EXTEND(number) Sign extends a 32-bit number to 64-bits. TRACE_OFF() Disables tracing when called. TRACE_ON() Enables tracing when called. XY(x,y) | > > > | 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | RESOURCE(...) Given the list of resource names, read a value from the X resource manager. Returns null if there is no such resource value. SIGN_EXTEND(number) Sign extends a 32-bit number to 64-bits. SOLUTION_CACHEID() The user cache ID of the level file. TRACE_OFF() Disables tracing when called. TRACE_ON() Enables tracing when called. XY(x,y) |
︙ | ︙ |