Beispiel #1
0
static json_t *cmd_list_items(json_t *params, int display_only)
{
    struct nh_objitem *items;
    int icount, i, invent;
    json_t *jarr;
    
    if (json_unpack(params, "{so,si,si!}", "items", &jarr, "icount", &icount,
	            "invent", &invent) == -1) {
	print_error("Incorrect parameter type in cmd_list_items");
	return NULL;
    }
    
    if (!json_is_array(jarr) || json_array_size(jarr) != icount) {
	print_error("Damaged items array in cmd_list_items");
	return NULL;
    }
    
    items = malloc(icount * sizeof(struct nh_objitem));
    for (i = 0; i < icount; i++)
	json_read_objitem(json_array_get(jarr, i), &items[i]);
    cur_wndprocs.win_list_items(items, icount, invent);
    free(items);
    
    return NULL;
}
Beispiel #2
0
static json_t *
cmd_display_objects(json_t * params, int display_only)
{
    struct nh_objitem *items;
    struct nh_objresult *pick_list;
    int icount, i, how, ret, placement_hint;
    const char *title;
    json_t *jarr, *jobj;

    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_objitem));
    for (i = 0; i < icount; i++)
        json_read_objitem(json_array_get(jarr, i), &items[i]);

    pick_list = malloc(icount * sizeof (struct nh_objresult));
    ret =
        cur_wndprocs.win_display_objects(items, icount, title, how,
                                         placement_hint, pick_list);
    free(items);
    if (display_only) {
        free(pick_list);
        return NULL;
    }

    jarr = json_array();
    for (i = 0; i < ret; i++) {
        jobj =
            json_pack("{si,si}", "id", pick_list[i].id, "count",
                      pick_list[i].count);
        json_array_append_new(jarr, jobj);
    }
    free(pick_list);
    return json_pack("{si,so}", "return", ret, "pick_list", jarr);
}