diff --git a/src/parts/debug.c b/src/parts/debug.c index f58f527..c17eba3 100644 --- a/src/parts/debug.c +++ b/src/parts/debug.c @@ -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; diff --git a/src/parts/parts.c b/src/parts/parts.c index 010f5f5..d468598 100644 --- a/src/parts/parts.c +++ b/src/parts/parts.c @@ -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; diff --git a/src/parts/parts_internal.h b/src/parts/parts_internal.h index 6f618f1..2582052 100644 --- a/src/parts/parts_internal.h +++ b/src/parts/parts_internal.h @@ -77,6 +77,7 @@ struct parts_text_line { }; enum parts_type { + PARTS_UNINITIALIZED, PARTS_CG, PARTS_TEXT, PARTS_ANIMATION, diff --git a/src/parts/render.c b/src/parts/render.c index 29e1cb6..b3edbca 100644 --- a/src/parts/render.c +++ b/src/parts/render.c @@ -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: