Ejemplo n.º 1
0
static json_t *cmd_outrip(json_t *params, int display_only)
{
    struct nh_menuitem *items;
    int icount, end_how, tombstone, gold, year, i;
    const char *name, *killbuf;
    json_t *jarr;
    
    if (json_unpack(params, "{so,si,si,si,si,si,ss,ss!}", "items", &jarr, "icount",
		    &icount, "tombstone", &tombstone, "gold", &gold, "year",
		    &year, "how", &end_how, "name", &name, "killbuf", &killbuf) == -1) {
	print_error("Incorrect parameter type in cmd_outrip");
	return NULL;
    }
    
    if (!json_is_array(jarr) || json_array_size(jarr) != icount) {
	print_error("Damaged items array in cmd_outrip");
	return NULL;
    }
    
    items = malloc(icount * sizeof(struct nh_menuitem));
    for (i = 0; i < icount; i++)
	json_read_menuitem(json_array_get(jarr, i), &items[i]);
    
    cur_wndprocs.win_outrip(items, icount, tombstone, name, gold, killbuf, end_how, year);
    free(items);
    return NULL;
}
Ejemplo n.º 2
0
static json_t *
cmd_display_menu(json_t * params, int display_only)
{
    struct nh_menuitem *items;
    int icount, i, how, ret, *selected, placement_hint;
    const char *title;
    json_t *jarr;

    if (json_unpack
        (params, "{so,si,si,ss,si!}", "items", &jarr, "icount", &icount, "how",
         &how, "title", &title, "plhint", &placement_hint) == -1) {
        print_error("Incorrect parameter type in cmd_display_menu");
        return NULL;
    }

    if (!json_is_array(jarr) || json_array_size(jarr) != icount) {
        print_error("Damaged items array in cmd_display_menu");
        return NULL;
    }

    if (!*title)
        title = NULL;

    items = malloc(icount * sizeof (struct nh_menuitem));
    for (i = 0; i < icount; i++)
        json_read_menuitem(json_array_get(jarr, i), &items[i]);

    selected = malloc(icount * sizeof (int));
    ret =
        cur_wndprocs.win_display_menu(items, icount, title, how, placement_hint,
                                      selected);
    free(items);
    if (display_only) {
        free(selected);
        return NULL;
    }

    jarr = json_array();
    for (i = 0; i < ret; i++)
        json_array_append_new(jarr, json_integer(selected[i]));
    free(selected);
    return json_pack("{si,so}", "return", ret, "results", jarr);
}