void
init_displaychars(void)
{
    struct nh_drawing_info *dinfo = nh_get_drawing_info();

    default_drawing = load_nh_drawing_info(dinfo);
}
Exemple #2
0
struct nh_drawing_info *
nhnet_get_drawing_info(void)
{
    json_t *jmsg, *jbg, *jtraps, *jobjs, *jmons, *jwarn, *jexpt, *jzapt, *jzaps,
        *jeff, *jexps, *jswal, *jinvis;
    struct nh_drawing_info *di;

    if (!nhnet_active())
        return nh_get_drawing_info();

    if (!api_entry())
        return 0;

    jmsg = send_receive_msg("get_drawing_info", json_object());
    di = xmalloc(sizeof (struct nh_drawing_info));
    if (json_unpack
        (jmsg,
         "{si,si,si,si,si,si,si,si,si,so,so,so,so,so,so,so,so,so,so,so,so!}",
         "num_bgelements", &di->num_bgelements, "num_traps", &di->num_traps,
         "num_objects", &di->num_objects, "num_monsters", &di->num_monsters,
         "num_warnings", &di->num_warnings, "num_expltypes", &di->num_expltypes,
         "num_zaptypes", &di->num_zaptypes, "num_effects", &di->num_effects,
         "feature_offset", &di->bg_feature_offset, "bgelements", &jbg, "traps",
         &jtraps, "objects", &jobjs, "monsters", &jmons, "warnings", &jwarn,
         "expltypes", &jexpt, "zaptypes", &jzapt, "effects", &jeff, "explsyms",
         &jexps, "zapsyms", &jzaps, "swallowsyms", &jswal, "invis",
         &jinvis) == -1 || !json_is_array(jbg) || !json_is_array(jobjs) ||
        !json_is_array(jmons) || !json_is_array(jwarn) || !json_is_array(jexpt)
        || !json_is_array(jzapt) || !json_is_array(jeff) ||
        !json_is_array(jexps) || !json_is_array(jswal) ||
        !json_is_array(jinvis)) {
        print_error("Incorrect return object in nhnet_get_drawing_info");
        di = NULL;
    } else {
        di->bgelements = read_symdef_array(jbg);
        di->traps = read_symdef_array(jtraps);
        di->objects = read_symdef_array(jobjs);
        di->monsters = read_symdef_array(jmons);
        di->warnings = read_symdef_array(jwarn);
        di->expltypes = read_symdef_array(jexpt);
        di->zaptypes = read_symdef_array(jzapt);
        di->effects = read_symdef_array(jeff);
        di->explsyms = read_symdef_array(jexps);
        di->zapsyms = read_symdef_array(jzaps);
        di->swallowsyms = read_symdef_array(jswal);
        di->invis = read_symdef_array(jinvis);
    }
    json_decref(jmsg);

    api_exit();
    return di;
}
Exemple #3
0
static void
ccmd_get_drawing_info(json_t * params)
{
    json_t *jobj;
    struct nh_drawing_info *di;
    void *iter;

    iter = json_object_iter(params);
    if (iter)
        exit_client("non-empty parameter list for get_drawing_info");

    di = nh_get_drawing_info();
    jobj =
        json_pack("{si,si,si,si,si,si,si,si,si}", "num_bgelements",
                  di->num_bgelements, "num_traps", di->num_traps, "num_objects",
                  di->num_objects, "num_monsters", di->num_monsters,
                  "num_warnings", di->num_warnings, "num_expltypes",
                  di->num_expltypes, "num_zaptypes", di->num_zaptypes,
                  "num_effects", di->num_effects, "feature_offset",
                  di->bg_feature_offset);
    json_object_set_new(jobj, "bgelements",
                        json_symarray(di->bgelements, di->num_bgelements));
    json_object_set_new(jobj, "traps", json_symarray(di->traps, di->num_traps));
    json_object_set_new(jobj, "objects",
                        json_symarray(di->objects, di->num_objects));
    json_object_set_new(jobj, "monsters",
                        json_symarray(di->monsters, di->num_monsters));
    json_object_set_new(jobj, "warnings",
                        json_symarray(di->warnings, di->num_warnings));
    json_object_set_new(jobj, "expltypes",
                        json_symarray(di->expltypes, di->num_expltypes));
    json_object_set_new(jobj, "zaptypes",
                        json_symarray(di->zaptypes, di->num_zaptypes));
    json_object_set_new(jobj, "effects",
                        json_symarray(di->effects, di->num_effects));
    json_object_set_new(jobj, "explsyms",
                        json_symarray(di->explsyms, NUMEXPCHARS));
    json_object_set_new(jobj, "zapsyms",
                        json_symarray(di->zapsyms, NUMZAPCHARS));
    json_object_set_new(jobj, "swallowsyms",
                        json_symarray(di->swallowsyms, NUMSWALLOWCHARS));
    json_object_set_new(jobj, "invis", json_symarray(di->invis, 1));

    client_msg("get_drawing_info", jobj);
}