Пример #1
0
int
dosave(void)
{
    int n, selected[1];
    struct menulist menu;

    init_menulist(&menu);
    add_menuitem(&menu, 1, "Quicksave and exit the game", 'y', FALSE);
    add_menuitem(&menu, 2, "Abandon this game and delete its save file", '!',
                 FALSE);
    add_menuitem(&menu, 3, "Continue playing", 'n', FALSE);
    n = display_menu(menu.items, menu.icount, "Do you want to stop playing?",
                     PICK_ONE, PLHINT_URGENT, selected);
    free(menu.items);
    if (n)
        n = selected[0];
    else
        n = 3;

    if (n == 3) {
        if (multi > 0)
            nomul(0, NULL);
    } else if (n == 1) {
        pline("Saving...");
        if (dosave0(FALSE)) {
            program_state.something_worth_saving = 0;
            u.uhp = -1; /* universal game's over indicator */
            terminate();
        } else
            doredraw();
    } else if (n == 2) {
        return done2();
    }
    return 0;
}
Пример #2
0
int do_naming(void)
{
	int n, selected[1];
	struct obj *obj;
	static const char allowall[] = {ALL_CLASSES, 0};
	struct menulist menu;

	init_menulist(&menu);

	add_menuitem(&menu, 1, "Name a monster", 'C', FALSE);
	add_menuitem(&menu, 2, "Name the current level", 'f', FALSE);
	add_menuitem(&menu, 3, "Name an individual item", 'y', FALSE);
	add_menuitem(&menu, 4, "Name all items of a certain type", 'n', FALSE);

	n = display_menu(menu.items, menu.icount, "What do you wish to name?",
			PICK_ONE, selected);
	free(menu.items);
	if (n)
	    n = selected[0] - 1;
	else
	    return 0;

	switch (n) {
	    default: break;
	    case 0:
		do_mname();
		break;
		
	    case 1:
		donamelevel();
		break;

		/* cases 2 & 3 duplicated from ddocall() */
	    case 2:
		obj = getobj(allowall, "name");
		if(obj)
		    do_oname(obj);
		break;
	    case 3:
		obj = getobj(callable, "call");
		if (obj) {
		    /* behave as if examining it in inventory;
		     * this might set dknown if it was picked up
		     * while blind and the hero can now see */
		    xname(obj);

		    if (!obj->dknown) {
			pline("You would never recognize another one.");
			return 0;
		    }
		    docall(obj);
		}
		break;
	}
	return 0;
}
Пример #3
0
/** @copydoc widgetdata::menu_handle_func */
static int widget_menu_handle(widgetdata *widget, SDL_Event *event)
{
    widgetdata *menu = create_menu(event->motion.x, event->motion.y, widget);
    widget_menu_standard_items(widget, menu);
    add_menuitem(menu, "Display  >", &menu_network_graph_display, MENU_SUBMENU,
            0);
    add_menuitem(menu, "Filters  >", &menu_network_graph_filters, MENU_SUBMENU,
            0);
    menu_finalize(menu);
    return 1;
}
Пример #4
0
static void menu_network_graph_filters(widgetdata *widget, widgetdata *menuitem,
        SDL_Event *event)
{
    network_graph_widget_t *network_graph = widget->subwidget;
    widgetdata *submenu = MENU(menuitem->env)->submenu;

    for (int i = 0; i < NETWORK_GRAPH_TRAFFIC_MAX; i++) {
        add_menuitem(submenu, network_graph_filters[i],
                &menu_network_graph_filters_change, MENU_CHECKBOX,
                BIT_QUERY(network_graph->filters, i));
    }
}
Пример #5
0
static void menu_network_graph_display(widgetdata *widget, widgetdata *menuitem,
        SDL_Event *event)
{
    network_graph_widget_t *network_graph = widget->subwidget;
    widgetdata *submenu = MENU(menuitem->env)->submenu;

    for (int i = 0; i < NETWORK_GRAPH_TYPE_MAX; i++) {
        add_menuitem(submenu, network_graph_types[i],
                &menu_network_graph_display_change, MENU_RADIO,
                network_graph->type == i);
    }
}
Пример #6
0
int
do_naming(const struct nh_cmd_arg *arg)
{
    int n;
    const int *selected;
    char classes[20], *s;
    struct nh_menulist menu;

    (void) arg;

    init_menulist(&menu);

    /* group_accel settings are for keystroke-compatibility with nethack.alt.org
       (which uses a/b/c/d); they shouldn't show in the interface because
       there's no good reason to use them other than muscle memory */
    add_menuitem(&menu, 1, "Name a monster", 'C', FALSE);
    menu.items[menu.icount-1].group_accel = 'a';
    add_menuitem(&menu, 2, "Name an individual item", 'y', FALSE);
    menu.items[menu.icount-1].group_accel = 'b';
    add_menuitem(&menu, 3, "Name all items of a certain type", 'n', FALSE);
    menu.items[menu.icount-1].group_accel = 'c';
    add_menuitem(&menu, 4, "Name an item type by appearance", 'A', FALSE);
    add_menuitem(&menu, 5, "Name the current level", 'f', FALSE);
    if (flags.recently_broken_otyp != STRANGE_OBJECT) {
        const char *buf;

        buf = msgprintf("Name %s (recently broken)",
                        an(obj_typename(flags.recently_broken_otyp)));
        add_menuitem(&menu, 6, buf, 'V', FALSE);
    }

    n = display_menu(&menu, "What do you wish to name?",
                     PICK_ONE, PLHINT_ANYWHERE, &selected);
    if (n > 0)
        n = selected[0] - 1;
    else
        return 0;

    switch (n) {
    default:
        break;
    case 0:
        do_mname(&(struct nh_cmd_arg){.argtype = 0});
        break;

    case 1:
        do_oname(&(struct nh_cmd_arg){.argtype = 0});