UINT32 ui_gfx_ui_handler(running_machine &machine, render_container *container, UINT32 uistate) { ui_gfx_state *state = &ui_gfx; /* if we have nothing, implicitly cancel */ if (machine.total_colors() == 0 && machine.colortable == NULL && machine.gfx[0] == NULL && machine.tilemap().count() == 0) goto cancel; /* if we're not paused, mark the bitmap dirty */ if (!machine.paused()) state->bitmap_dirty = TRUE; /* switch off the state to display something */ again: switch (state->mode) { case 0: /* if we have a palette, display it */ if (machine.total_colors() > 0) { palette_handler(machine, container, state); break; } /* fall through...*/ state->mode++; case 1: /* if we have graphics sets, display them */ if (machine.gfx[0] != NULL) { gfxset_handler(machine, container, state); break; } /* fall through...*/ state->mode++; case 2: /* if we have tilemaps, display them */ if (machine.tilemap().count() > 0) { tilemap_handler(machine, container, state); break; } state->mode = 0; goto again; } /* handle keys */ if (ui_input_pressed(machine, IPT_UI_SELECT)) { state->mode = (state->mode + 1) % 3; state->bitmap_dirty = TRUE; } if (ui_input_pressed(machine, IPT_UI_PAUSE)) { if (machine.paused()) machine.resume(); else machine.pause(); } if (ui_input_pressed(machine, IPT_UI_CANCEL) || ui_input_pressed(machine, IPT_UI_SHOW_GFX)) goto cancel; return uistate; cancel: if (!uistate) machine.resume(); state->bitmap_dirty = TRUE; return UI_HANDLER_CANCEL; }
uint32_t ui_gfx_ui_handler(render_container &container, mame_ui_manager &mui, bool uistate) { ui_gfx_state &state = ui_gfx; // if we have nothing, implicitly cancel if (!ui_gfx_is_relevant(mui.machine())) goto cancel; // if we're not paused, mark the bitmap dirty if (!mui.machine().paused()) state.bitmap_dirty = true; // switch off the state to display something again: switch (state.mode) { case UI_GFX_PALETTE: // if we have a palette, display it if (state.palette.devcount > 0) { palette_handler(mui, container, state); break; } // fall through... state.mode++; case UI_GFX_GFXSET: // if we have graphics sets, display them if (state.gfxset.devcount > 0) { gfxset_handler(mui, container, state); break; } // fall through... state.mode++; case UI_GFX_TILEMAP: // if we have tilemaps, display them if (mui.machine().tilemap().count() > 0) { tilemap_handler(mui, container, state); break; } state.mode = UI_GFX_PALETTE; goto again; } // handle keys if (mui.machine().ui_input().pressed(IPT_UI_SELECT)) { state.mode = (state.mode + 1) % 3; state.bitmap_dirty = true; } if (mui.machine().ui_input().pressed(IPT_UI_PAUSE)) { if (mui.machine().paused()) mui.machine().resume(); else mui.machine().pause(); } if (mui.machine().ui_input().pressed(IPT_UI_CANCEL) || mui.machine().ui_input().pressed(IPT_UI_SHOW_GFX)) goto cancel; return uistate; cancel: if (!uistate) mui.machine().resume(); state.bitmap_dirty = true; return UI_HANDLER_CANCEL; }