void init_displaychars(void) { struct nh_drawing_info *dinfo = nh_get_drawing_info(); default_drawing = load_nh_drawing_info(dinfo); }
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; }
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); }