void bk_set_key(sd_bk_file *bk, const char **key, int kcount, const char *value) { int tmp = 0; switch(bk_key_get_id(key[0])) { case 0: bk->file_id = conv_udword(value); break; case 1: break; // TODO case 2: bk->unknown_a = conv_ubyte(value); break; case 3: if(kcount == 2) { tmp = conv_ubyte(key[1]); if(tmp < 30) { bk->soundtable[tmp] = conv_ubyte(value); } else { printf("Soundtable index %d does not exist!\n", tmp); return; } } else { printf("Soundtable value requires index parameter (eg. --key soundtable --key 3).\n"); return; } break; default: printf("Unknown key!\n"); return; } printf("Value set!\n"); }
void anim_get_key(sd_animation *ani, int kn, const char **key, int kcount, int pcount) { int tmp = 0; switch(kn) { case 7: printf("%d\n", ani->null); break; case 8: if(kcount == 2) { tmp = conv_ubyte(key[1]); if(tmp < ani->coord_count) { printf("x,y = (%d,%d), null = %d, frame_id = %d\n", ani->coord_table[tmp].x, ani->coord_table[tmp].y, ani->coord_table[tmp].null, ani->coord_table[tmp].frame_id); } else { printf("Collision table index %d does not exist!\n", tmp); return; } } else { for(int i = 0; i < ani->coord_count; i++) { printf("x,y = (%d,%d), null = %d, frame_id = %d\n", ani->coord_table[i].x, ani->coord_table[i].y, ani->coord_table[i].null, ani->coord_table[i].frame_id); } printf("\n"); } break; case 9: printf("%s\n", ani->anim_string); break; case 11: if(kcount == 2) { tmp = conv_ubyte(key[1]); if(tmp < ani->extra_string_count) { printf("%s\n", ani->extra_strings[tmp]); } else { printf("Extra string table index %d does not exist!\n", tmp); return; } } else { for(int i = 0; i < ani->extra_string_count; i++) { printf("%s ", ani->extra_strings[i]); } printf("\n"); } break; case 12: printf("%d\n", ani->start_x); break; case 13: printf("%d\n", ani->start_y); break; default: printf("Unknown key!\n"); } }
void sprite_set_key(sd_sprite *s, const char **key, int kcount, const char *value) { switch(sprite_key_get_id(key[0])) { case 0: s->pos_x = conv_word(value); break; case 1: s->pos_y = conv_word(value); break; case 2: s->index = conv_ubyte(value); break; case 3: s->missing = conv_ubyte(value); break; case 4: printf("Value setting not supported for this key.\n"); break; default: printf("Unknown key!\n"); return; } printf("Value set!\n"); }
void anim_strip_key(sd_animation *ani, int kn, const char **key, int kcount, const char *tag) { int tmp = 0; switch(kn) { case 9: string_strip(ani->anim_string, tag); break; case 11: if(kcount == 2) { tmp = conv_ubyte(key[1]); if(tmp < ani->extra_string_count) { string_strip(ani->extra_strings[tmp], tag); } else { printf("Extra string table index %d does not exist!\n", tmp); return; } } else { printf("Key extra_str requires 1 parameter!\n"); return; } break; default: printf("Unknown key!\n"); return; } printf("Tag stripped!\n"); }
void bkanim_set_key(sd_bk_anim *bka, sd_animation *ani, const char **key, int kcount, const char *value) { int kn = bkanim_key_get_id(key[0]); switch(kn) { case 0: bka->null = conv_ubyte(value); break; case 1: bka->chain_hit = conv_ubyte(value); break; case 2: bka->chain_no_hit = conv_ubyte(value); break; case 3: bka->load_on_start = conv_ubyte(value); break; case 4: bka->probability = conv_uword(value); break; case 5: bka->hazard_damage = conv_ubyte(value); break; case 6: set_bk_anim_string(bka, value); break; default: anim_set_key(ani, kn, key, kcount, value); return; } printf("Value set!\n"); }
void anim_set_key(sd_animation *ani, int kn, const char **key, int kcount, const char *value) { int tmp = 0; switch(kn) { case 7: ani->null = conv_dword(value); break; case 8: /*if(kcount == 2) { tmp = conv_ubyte(key[1]); if(tmp < ani->col_coord_count) { ani->col_coord_table[tmp] = conv_udword(value); } else { printf("Overlay index %d does not exist!\n", tmp); return; } } else { printf("Key overlay requires 1 parameter!\n"); return; }*/ printf("Coord value setting not supported yet!\n"); break; case 9: sd_animation_set_anim_string(ani, value); break; case 11: if(kcount == 2) { tmp = conv_ubyte(key[1]); if(tmp < ani->extra_string_count) { sd_animation_set_extra_string(ani, tmp, value); } else { printf("Extra string table index %d does not exist!\n", tmp); return; } } else { printf("Key extra_str requires 1 parameter!\n"); return; } break; case 12: ani->start_x = conv_word(value); break; case 13: ani->start_y = conv_word(value); break; default: printf("Unknown key!\n"); return; } printf("Value set!\n"); }
void bk_get_key(sd_bk_file *bk, const char **key, int kcount) { int tmp = 0; switch(bk_key_get_id(key[0])) { case 0: printf("%d\n", bk->file_id); break; case 1: printf("\n"); break; // TODO case 2: printf("%d\n", bk->unknown_a); break; case 3: if(kcount == 2) { tmp = conv_ubyte(key[1]); if(tmp < 30) { printf("%d\n", bk->soundtable[tmp]); } else { printf("Soundtable index %d does not exist!\n", tmp); } } else { for(int i = 0; i < 30; i++) { printf("%d ", bk->soundtable[i]); } printf("\n"); } break; default: printf("Unknown key!\n"); } }