parts: add PARTS_UNINITIALIZED parts type

This commit is contained in:
Nunuhara Cabbage
2022-06-12 19:23:02 -07:00
parent e78119bf5a
commit 20d5820efc
4 changed files with 55 additions and 50 deletions
+50 -49
View File
@@ -152,6 +152,8 @@ static void parts_print_state(struct parts_state *state, int indent)
indent_printf(indent, "hitbox = "); gfx_print_rectangle(&com->hitbox); printf(",\n");
indent_printf(indent, "surface_area = "); gfx_print_rectangle(&com->surface_area); printf(",\n");
switch (state->type) {
case PARTS_UNINITIALIZED:
break;
case PARTS_CG:
parts_cg_print(&state->cg, indent);
break;
@@ -353,57 +355,56 @@ static void parts_list_print(struct parts *parts, int indent)
indent_printf(indent, parts->show ? "+ " : "- ");
printf("parts %d ", parts->no);
struct parts_state *state = &parts->states[parts->state];
if (!state->common.texture.handle) {
printf("(unititialized)\n");
} else {
switch (state->type) {
case PARTS_CG:
printf("(cg %d)\n", state->cg.no);
break;
case PARTS_TEXT:
printf("(text)\n"); // TODO? store actual text and print it here
break;
case PARTS_ANIMATION:
printf("(animation %d+%d)\n", state->anim.cg_no, state->anim.nr_frames);
break;
case PARTS_NUMERAL:
printf("(numeral %d)\n", state->num.cg_no);
break;
case PARTS_HGAUGE:
printf("(hgauge)\n"); // TODO? store rate and cg and print them here
break;
case PARTS_VGAUGE:
printf("(vgauge)\n");
break;
case PARTS_CONSTRUCTION_PROCESS: {
printf("(construction process:");
struct parts_cp_op *op;
TAILQ_FOREACH(op, &state->cproc.ops, entry) {
switch (op->type) {
case PARTS_CP_CREATE:
printf(" create");
break;
case PARTS_CP_CREATE_PIXEL_ONLY:
printf(" create-pixel-only");
break;
case PARTS_CP_CG:
printf(" cg");
break;
case PARTS_CP_FILL_ALPHA_COLOR:
printf(" fill-alpha-color");
break;
case PARTS_CP_DRAW_TEXT:
printf(" draw-text");
break;
case PARTS_CP_COPY_TEXT:
printf(" copy-text");
break;
}
switch (state->type) {
case PARTS_UNINITIALIZED:
printf("(uninitialized)\n");
break;
case PARTS_CG:
printf("(cg %d)\n", state->cg.no);
break;
case PARTS_TEXT:
printf("(text)\n"); // TODO? store actual text and print it here
break;
case PARTS_ANIMATION:
printf("(animation %d+%d)\n", state->anim.cg_no, state->anim.nr_frames);
break;
case PARTS_NUMERAL:
printf("(numeral %d)\n", state->num.cg_no);
break;
case PARTS_HGAUGE:
printf("(hgauge)\n"); // TODO? store rate and cg and print them here
break;
case PARTS_VGAUGE:
printf("(vgauge)\n");
break;
case PARTS_CONSTRUCTION_PROCESS: {
printf("(construction process:");
struct parts_cp_op *op;
TAILQ_FOREACH(op, &state->cproc.ops, entry) {
switch (op->type) {
case PARTS_CP_CREATE:
printf(" create");
break;
case PARTS_CP_CREATE_PIXEL_ONLY:
printf(" create-pixel-only");
break;
case PARTS_CP_CG:
printf(" cg");
break;
case PARTS_CP_FILL_ALPHA_COLOR:
printf(" fill-alpha-color");
break;
case PARTS_CP_DRAW_TEXT:
printf(" draw-text");
break;
case PARTS_CP_COPY_TEXT:
printf(" copy-text");
break;
}
printf(")\n");
break;
}
}
printf(")\n");
break;
}
}
struct parts *child;
+2 -1
View File
@@ -31,7 +31,6 @@ static struct hash_table *parts_table = NULL;
static void parts_init(struct parts *parts)
{
memset(parts, 0, sizeof(struct parts));
parts->delegate_index = -1;
parts->on_cursor_sound = -1;
parts->on_click_sound = -1;
@@ -111,6 +110,8 @@ static void parts_list_remove(struct parts_list *list, struct parts *parts)
static void parts_state_free(struct parts_state *state)
{
switch (state->type) {
case PARTS_UNINITIALIZED:
break;
case PARTS_CG:
gfx_delete_texture(&state->common.texture);
break;
+1
View File
@@ -77,6 +77,7 @@ struct parts_text_line {
};
enum parts_type {
PARTS_UNINITIALIZED,
PARTS_CG,
PARTS_TEXT,
PARTS_ANIMATION,
+2
View File
@@ -109,6 +109,8 @@ static void _parts_render(struct parts *parts, struct parts_render_params *paren
struct parts_state *state = &parts->states[parts->state];
if (state->common.texture.handle) {
switch (state->type) {
case PARTS_UNINITIALIZED:
break;
case PARTS_CG:
case PARTS_ANIMATION:
case PARTS_NUMERAL: