Overview
Comment: | Some corrections of custom level table, including initializing the schema properly; start a few more parts of its implementation too. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
66cf1d39adf231ef5edb8595344f2bab |
User & Date: | user on 2021-12-25 06:33:53 |
Other Links: | manifest | tags |
Context
2021-12-27
| ||
20:33 | More corrections, and more work on implementation, of custom level table definitions. check-in: 702847e470 user: user tags: trunk | |
2021-12-25
| ||
06:33 | Some corrections of custom level table, including initializing the schema properly; start a few more parts of its implementation too. check-in: 66cf1d39ad user: user tags: trunk | |
00:11 | Start to implement (LevelTable) definition (untested so far, and currently only the definition and not the implementation). check-in: 3b02288a18 user: user tags: trunk | |
Changes
Modified class.c from [da031da59b] to [64b3d009e0].
︙ | |||
2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 | 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 | + + + + | for(;;) { if(ptr>=0xFFFA) ParseError("Out of memory\n"); nxttok(); if(Tokenf(TF_MACRO)) ParseError("Unexpected macro\n"); if(tokent==TF_CLOSE) { ll_code[ptr++]=OP_RET; return ptr; } else if(Tokenf(TF_INT)) { if(!(tokenv&~0xFFL)) ll_code[ptr++]=tokenv; else if(!(tokenv&~0xFFFFL)) ll_code[ptr++]=OP_INT16,ll_code[ptr++]=tokenv; else ll_code[ptr++]=OP_INT32,ll_code[ptr++]=OP_INT32,ll_code[ptr++]=tokenv>>16,ll_code[ptr++]=tokenv; } else if(Tokenf(TF_NAME)) { switch(tokenv) { case OP_IF: if(flowdepth==64) ParseError("Too much flow control nesting\n"); ll_code[ptr++]=OP_IF; flowptr[flowdepth++]=ptr++; break; |
︙ | |||
2282 2283 2284 2285 2286 2287 2288 | 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 | - + | if(!Tokenf(TF_NAME)) ParseError("Unexpected token in (LevelTable) block\n"); switch(tokenv) { case OP_LABEL: i=look_hash(hash,LOCAL_HASH_SIZE,0x100,0x13F,ll_ndata+0x100,"data columns")?:(ll_ndata++)+0x100; i-=0x100; if(datac[i].name) ParseError("Duplicate definition\n"); datac[i].name=strdup(tokenstr); |
︙ |
Modified class.doc from [73da3ea9bc] to [9f8228ce84].
︙ | |||
2587 2588 2589 2590 2591 2592 2593 | 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 | - - - - - - - - - - + + + + + + + + + + + + | (<label> <code...>) Define a data column. The SQL name of the data column will be that of the label name, preceded by a underscore, and some characters will be stripped out. (<string> <label> <width> <format> <color>) Defines a display column. The <label> is the name of the data column. |
︙ |
Modified function.c from [29a1dbc515] to [3ae0a5eecb].
︙ | |||
1180 1181 1182 1183 1184 1185 1186 1187 | 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 | + + - - - + + + + + + + + + + + + - + + + + + + + + + + + + + + + - + + - + + + + + + + + + | .xBestIndex=vt1_playfield_index, .xColumn=vt1_playfield_column, .xFilter=vt1_playfield_filter, .xNext=vt1_playfield_next, ); static int vt1_levels_connect(sqlite3*db,void*aux,int argc,const char*const*argv,sqlite3_vtab**vt,char**err) { sqlite3_str*str; int c,i,j; if(levels_schema) goto declare; |
︙ |
Modified game.c from [de971fc52d] to [d6b8ec0435].
︙ | |||
741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 | 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 | + - - + + | i=strtol(v,0,10); j=(screen->w-16)/070; if(i<1) i=j; if(i>j) i=j; if(i>255) i=255; columns=i; } if(!ll_head) ll_head="\xB3W \xB3H \xB3 TITLE"; // ID, ORD, CODE, WIDTH, HEIGHT, TITLE, SOLVED, SOLVABLE, ... if(sqlite3_prepare_v2(userdb,"SELECT * FROM `LEVELS` WHERE `ORD` NOT NULL AND `ORD` >= ?1 ORDER BY `ORD`;",-1,&st,0)) { screen_message(sqlite3_errmsg(userdb)); return 0; } set_cursor(XC_arrow); redraw: if(sel<0) sel=0; if(sel>=level_nindex) sel=level_nindex-1; SDL_FillRect(screen,0,0x02); r.x=r.y=0; r.w=screen->w; r.h=24; SDL_FillRect(screen,&r,0xF7); SDL_LockSurface(screen); draw_text(0,0,"<LMB/\x18\x19\x1A\x1B> Select <MMB/SP> Title <RMB/RET> Play <0-9> Find <ESC> Cancel",0xF7,0xF0); draw_text(0,8,"<F1> Wide/Tall <F2> ID/Ord",0xF7,0xF0); sqlite3_reset(st); if(mo&1) { scrmax=level_nindex; |
︙ |
Modified main.c from [3d54a4ff62] to [f3572b0f94].
︙ | |||
1067 1068 1069 1070 1071 1072 1073 | 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 | - + | set_stack_protection(); #endif if(main_options['c']) { load_classes(); return 0; } init_sql(); |
︙ |