void iface_read_settings_singleplayer(iface_type *iface) { int singleplayer_head_tag, settings_tag,options_head_tag,option_tag; char path[1024]; iface_sp_option_type *sp_option; // get xml file file_paths_data(&file_path_setup,path,"Settings","Singleplayer","xml"); if (!xml_open_file(path)) return; singleplayer_head_tag=xml_findrootchild("Singleplayer"); if (singleplayer_head_tag==-1) { xml_close_file(); return; } // settings settings_tag=xml_findfirstchild("Settings",singleplayer_head_tag); if (settings_tag!=-1) { iface->singleplayer.skill=xml_get_attribute_boolean(settings_tag,"skill"); iface->singleplayer.map_pick=xml_get_attribute_boolean(settings_tag,"map_pick"); iface->singleplayer.map_pick_ss_reveal_id=xml_get_attribute_int_default(settings_tag,"map_pick_ss_reveal_id",-1); } // options options_head_tag=xml_findfirstchild("Options",singleplayer_head_tag); if (options_head_tag!=-1) { iface->singleplayer.option_list.noption=0; option_tag=xml_findfirstchild("Option",options_head_tag); while (option_tag!=-1) { sp_option=&iface->singleplayer.option_list.options[iface->singleplayer.option_list.noption]; xml_get_attribute_text(option_tag,"name",sp_option->name,name_str_len); xml_get_attribute_text(option_tag,"description",sp_option->descript,64); sp_option->ss_reveal_id=xml_get_attribute_int_default(option_tag,"ss_reveal_id",-1); iface->singleplayer.option_list.noption++; if (iface->singleplayer.option_list.noption==max_net_option) break; option_tag=xml_findnextchild(option_tag); } } xml_close_file(); }
void read_settings_action(void) { int n,actions_head_tag,action_tag,idx; char name[name_str_len],path[1024]; // default actions for (n=0;n!=ncontrol;n++) { strcpy(action_display[n].display_name,control_names_str[n]); action_display[n].show=TRUE; } // read in actions from setting files file_paths_data(&setup.file_path_setup,path,"Settings","Actions","xml"); if (!xml_open_file(path)) return; // decode the file actions_head_tag=xml_findrootchild("Actions"); if (actions_head_tag!=-1) { action_tag=xml_findfirstchild("Action",actions_head_tag); while (action_tag!=-1) { xml_get_attribute_text(action_tag,"name",name,name_str_len); idx=setup_find_control_for_name(name); if (idx!=-1) { xml_get_attribute_text(action_tag,"display",action_display[idx].display_name,name_str_len); action_display[idx].show=xml_get_attribute_boolean(action_tag,"show"); } action_tag=xml_findnextchild(action_tag); } } xml_close_file(); }
bool read_mesh_xml(model_type *model) { int version,model_head; char sub_path[1024],path[1024]; // load the model xml sprintf(sub_path,"Models/%s",model->name); file_paths_data(&modelutility_settings.file_path_setup,path,sub_path,"mesh","xml"); if (!xml_open_file(path)) return(FALSE); model_head=xml_findrootchild("Model"); if (model_head==-1) { xml_close_file(); return(FALSE); } // get the version version=xml_get_attribute_int_default(model_head,"version",1); // decode switch (version) { case 1: decode_mesh_v1_xml(model,model_head); break; case 2: decode_mesh_v2_xml(model,model_head); break; } xml_close_file(); return(TRUE); }
bool setup_xml_read_path(char *path) { int n,k,naction, setup_tag,actions_tag,maps_tag,options_tag,tag; char tag_name[32]; setup_action_type *action; // read file setup_xml_default(); if (!xml_open_file(path)) return(FALSE); // decode the file setup_tag=xml_findrootchild("Setup"); if (setup_tag==-1) { xml_close_file(); return(FALSE); } // keys xml_key_read_int(setup_tag,"Screen_Width",&setup.screen_wid); xml_key_read_int(setup_tag,"Screen_Height",&setup.screen_high); xml_key_read_float(setup_tag,"Gamma",&setup.gamma); xml_key_read_int(setup_tag,"FSAA_Mode",&setup.fsaa_mode); xml_key_read_boolean(setup_tag,"Decal_On",&setup.decal_on); xml_key_read_boolean(setup_tag,"Shadow_On",&setup.shadow_on); xml_key_read_float(setup_tag,"Sound_Volume",&setup.sound_volume); xml_key_read_boolean(setup_tag,"Music_On",&setup.music_on); xml_key_read_float(setup_tag,"Music_Volume",&setup.music_volume); xml_key_read_boolean(setup_tag,"Always_Run",&setup.always_run); xml_key_read_boolean(setup_tag,"Toggle_Run",&setup.toggle_run); xml_key_read_boolean(setup_tag,"Invert_Look",&setup.invert_look); xml_key_read_boolean(setup_tag,"Auto_Aim",&setup.auto_aim); xml_key_read_boolean(setup_tag,"Mouse_Smooth",&setup.mouse_smooth); xml_key_read_float(setup_tag,"Mouse_Speed",&setup.mouse.speed); xml_key_read_float(setup_tag,"Mouse_Acceleration",&setup.mouse.acceleration); xml_key_read_float(setup_tag,"Joystick_Speed",&setup.joystick.speed); xml_key_read_float(setup_tag,"Joystick_Acceleration",&setup.joystick.acceleration); xml_key_read_text(setup_tag,"Network_Name",setup.network.name,name_str_len); xml_key_read_int(setup_tag,"Character",&setup.network.character_idx); xml_key_read_int(setup_tag,"Tint",&setup.network.tint_color_idx); xml_key_read_text(setup_tag,"Network_Custom_Host_IP",setup.network.custom_host_ip,64); xml_key_read_int(setup_tag,"Host_Bot_Count",&setup.network.bot.count); xml_key_read_int(setup_tag,"Host_Bot_Skill",&setup.network.bot.skill); xml_key_read_int(setup_tag,"Host_Game_Type",&setup.network.game_type); xml_key_read_int(setup_tag,"Host_Score_Limit",&setup.network.score_limit); xml_key_read_int(setup_tag,"Host_Game_Reset_Secs",&setup.network.game_reset_secs); xml_key_read_int(setup_tag,"Host_Respawn_Secs",&setup.network.respawn_secs); xml_key_read_boolean(setup_tag,"Network_Show_Names",&setup.network.show_names); xml_key_read_boolean(setup_tag,"Network_Map_Rotation",&setup.network.map_rotation); xml_key_read_boolean(setup_tag,"Window",&setup.window); xml_key_read_boolean(setup_tag,"Window_Editor",&setup.window_editor); xml_key_read_boolean(setup_tag,"No_HUD",&setup.no_hud); xml_key_read_boolean(setup_tag,"No_Draw_Weapon",&setup.no_draw_weapon); xml_key_read_boolean(setup_tag,"Metrics_On",&setup.metrics_on); xml_key_read_boolean(setup_tag,"Debug_On",&setup.debug_on); xml_key_read_boolean(setup_tag,"Ignore_FPS_Lock",&setup.ignore_fps_lock); xml_key_read_int(setup_tag,"Screen_dim3RTL_Width",&setup.screen_rtl_wid); xml_key_read_int(setup_tag,"Screen_dim3RTL_Height",&setup.screen_rtl_high); xml_key_read_boolean(setup_tag,"Screen_dim3RTL_Full_Window",&setup.screen_rtl_full_window); // actions actions_tag=xml_findfirstchild("Actions",setup_tag); if (actions_tag!=-1) { naction=xml_countchildren(actions_tag); tag=xml_findfirstchild("Action",actions_tag); setup.action_list.naction=naction; action=setup.action_list.actions; for (n=0;n!=naction;n++) { xml_get_attribute_text(tag,"name",action->name,32); for (k=0;k!=max_setup_action_attach;k++) { sprintf(tag_name,"attach_%d",k); xml_get_attribute_text(tag,tag_name,action->attach[k],32); } tag=xml_findnextchild(tag); action++; } } // maps maps_tag=xml_findfirstchild("Maps",setup_tag); if (maps_tag!=-1) { setup.network.map_list.count=xml_countchildren(maps_tag); tag=xml_findfirstchild("Map",maps_tag); for (n=0;n!=setup.network.map_list.count;n++) { xml_get_attribute_text(tag,"name",setup.network.map_list.maps[n].name,name_str_len); tag=xml_findnextchild(tag); } } // options options_tag=xml_findfirstchild("Options",setup_tag); if (options_tag!=-1) { setup.network.option_list.count=xml_countchildren(options_tag); tag=xml_findfirstchild("Option",options_tag); for (n=0;n!=setup.network.option_list.count;n++) { xml_get_attribute_text(tag,"name",setup.network.option_list.options[n].name,name_str_len); tag=xml_findnextchild(tag); } } xml_close_file(); return(TRUE); }
bool read_pose_xml(model_type *model) { int n,k,t,npose,pose_idx,cnt, tag,model_head,bone_tag,poses_tag,pose_tag,constraint_bone_idx; char sub_path[1024],path[1024]; model_tag constraint_bone_tag; model_bone_move_type *bone_move; model_pose_type *pose; // load the pose xml sprintf(sub_path,"Models/%s",model->name); file_paths_data(&modelutility_settings.file_path_setup,path,sub_path,"pose","xml"); if (!xml_open_file(path)) return(FALSE); model_head=xml_findrootchild("Model"); if (model_head==-1) return(FALSE); // poses poses_tag=xml_findfirstchild("Poses",model_head); npose=xml_countchildren(poses_tag); pose_tag=xml_findfirstchild("Pose",poses_tag); for (n=0;n!=npose;n++) { // add new pose pose_idx=model_pose_add(model); if (pose_idx==-1) { xml_close_file(); return(FALSE); } pose=&model->poses[pose_idx]; // set pose data xml_get_attribute_text(pose_tag,"name",pose->name,64); bone_move=pose->bone_moves; for (k=0;k!=model->nbone;k++) { bone_move->rot.x=bone_move->rot.z=bone_move->rot.y=0.0f; bone_move->mov.x=bone_move->mov.z=bone_move->mov.y=1.0f; bone_move->acceleration=0; bone_move->skip_blended=FALSE; bone_move->constraint.bone_idx=-1; bone_move->constraint.offset.x=bone_move->constraint.offset.y=bone_move->constraint.offset.z=0; bone_move++; } bone_tag=xml_findfirstchild("Bones",pose_tag); cnt=xml_countchildren(bone_tag); tag=xml_findfirstchild("Bone",bone_tag); for (k=0;k!=cnt;k++) { t=model_find_bone(model,xml_get_attribute_model_tag(tag,"tag")); if (t!=-1) { bone_move=&pose->bone_moves[t]; xml_get_attribute_3_coord_float(tag,"rot",&bone_move->rot.x,&bone_move->rot.y,&bone_move->rot.z); xml_get_attribute_3_coord_float(tag,"move",&bone_move->mov.x,&bone_move->mov.y,&bone_move->mov.z); bone_move->acceleration=xml_get_attribute_float(tag,"acceleration"); bone_move->skip_blended=xml_get_attribute_boolean(tag,"skip_blended"); bone_move->constraint.bone_idx=-1; bone_move->constraint.offset.x=bone_move->constraint.offset.y=bone_move->constraint.offset.z=0; constraint_bone_tag=xml_get_attribute_model_tag(tag,"constraint_bone"); if (constraint_bone_tag!=model_null_tag) { constraint_bone_idx=model_find_bone(model,constraint_bone_tag); if (constraint_bone_idx!=-1) { bone_move->constraint.bone_idx=constraint_bone_idx; xml_get_attribute_3_coord_int(tag,"constraint_offset",&bone_move->constraint.offset.x,&bone_move->constraint.offset.y,&bone_move->constraint.offset.z); } } } tag=xml_findnextchild(tag); } pose_tag=xml_findnextchild(pose_tag); } xml_close_file(); return(TRUE); }
void iface_read_settings_halo(iface_type *iface) { int nhalo,halos_head_tag,halo_tag,tag; char path[1024]; iface_halo_type *halo; // read in interface from setting files file_paths_data(&file_path_setup,path,"Settings","Halos","xml"); if (!xml_open_file(path)) return; // get counts halos_head_tag=xml_findrootchild("Halos"); if (halos_head_tag==-1) { xml_close_file(); return; } nhalo=xml_countchildren(halos_head_tag); if (nhalo==0) { xml_close_file(); return; } // read the halos halo_tag=xml_findfirstchild("Halo",halos_head_tag); while (halo_tag!=-1) { // create a new halo if (iface->halo_list.nhalo>=max_iface_halo) { xml_close_file(); return; } halo=&iface->halo_list.halos[iface->halo_list.nhalo]; iface->halo_list.nhalo++; // read settings xml_get_attribute_text(halo_tag,"name",halo->name,name_str_len); tag=xml_findfirstchild("Image",halo_tag); if (tag!=-1) { xml_get_attribute_text(tag,"file",halo->bitmap_name,file_str_len); } halo->min_dist=3000; halo->max_dist=50000; halo->min_size=500; halo->max_size=200; halo->min_alpha=0.8f; halo->max_alpha=0.05f; halo->no_clip_object=FALSE; halo->no_clip_self=TRUE; tag=xml_findfirstchild("Distance",halo_tag); if (tag!=-1) { halo->min_dist=xml_get_attribute_int(tag,"min"); halo->max_dist=xml_get_attribute_int(tag,"max"); } tag=xml_findfirstchild("Size",halo_tag); if (tag!=-1) { halo->min_size=xml_get_attribute_int(tag,"min"); halo->max_size=xml_get_attribute_int(tag,"max"); } tag=xml_findfirstchild("Alpha",halo_tag); if (tag!=-1) { halo->min_alpha=xml_get_attribute_float(tag,"min"); halo->max_alpha=xml_get_attribute_float(tag,"max"); } tag=xml_findfirstchild("Option",halo_tag); if (tag!=-1) { halo->no_clip_object=xml_get_attribute_boolean(tag,"no_clip_object"); halo->no_clip_self=xml_get_attribute_boolean(tag,"no_clip_self"); } // move on to next halo halo_tag=xml_findnextchild(halo_tag); } xml_close_file(); }
void read_settings_ring(void) { int nring,ring_head_tag,ring_tag,tag; char path[1024]; ring_type *ring; // no rings yet server.rings=NULL; server.count.ring=0; // read in rings from setting files file_paths_data(&setup.file_path_setup,path,"Settings","Rings","xml"); if (!xml_open_file(path)) return; // get counts ring_head_tag=xml_findrootchild("Rings"); if (ring_head_tag==-1) { xml_close_file(); return; } nring=xml_countchildren(ring_head_tag); if (nring==0) { xml_close_file(); return; } server.rings=(ring_type*)malloc(sizeof(ring_type)*nring); if (server.rings==NULL) { xml_close_file(); return; } // read in the rings ring_tag=xml_findfirstchild("Ring",ring_head_tag); while (ring_tag!=-1) { // create a new ring ring=&server.rings[server.count.ring]; xml_get_attribute_text(ring_tag,"name",ring->name,name_str_len); ring->life_msec=1000; ring->blend_add=FALSE; tag=xml_findfirstchild("Settings",ring_tag); if (tag!=-1) { ring->life_msec=xml_get_attribute_int(tag,"time"); ring->blend_add=xml_get_attribute_boolean(tag,"additive"); } ring->animate.image_count=1; ring->animate.image_per_row=1; ring->animate.msec=200; ring->animate.loop=TRUE; ring->animate.loop_back=FALSE; tag=xml_findfirstchild("Image",ring_tag); if (tag!=-1) { xml_get_attribute_text(tag,"file",ring->bitmap_name,file_str_len); ring->animate.image_count=xml_get_attribute_int(tag,"count"); ring->animate.image_per_row=(int)sqrt((float)ring->animate.image_count); ring->animate.msec=xml_get_attribute_int(tag,"time"); ring->animate.loop=xml_get_attribute_boolean(tag,"loop"); ring->animate.loop_back=xml_get_attribute_boolean(tag,"loop_back"); } tag=xml_findfirstchild("Outer",ring_tag); if (tag!=-1) { ring->start_outer_size=xml_get_attribute_int(tag,"start"); ring->end_outer_size=xml_get_attribute_int(tag,"end"); } tag=xml_findfirstchild("Inner",ring_tag); if (tag!=-1) { ring->start_inner_size=xml_get_attribute_int(tag,"start"); ring->end_inner_size=xml_get_attribute_int(tag,"end"); } tag=xml_findfirstchild("Rotate",ring_tag); if (tag!=-1) { ring->ang.x=xml_get_attribute_float(tag,"x"); ring->ang.y=xml_get_attribute_float(tag,"y"); ring->ang.z=xml_get_attribute_float(tag,"z"); ring->rot.x=xml_get_attribute_float_default(tag,"x_add",0.0f); ring->rot.y=xml_get_attribute_float_default(tag,"y_add",0.0f); ring->rot.z=xml_get_attribute_float_default(tag,"z_add",0.0f); ring->rot_accel.x=xml_get_attribute_float_default(tag,"x_accel",0.0f); ring->rot_accel.y=xml_get_attribute_float_default(tag,"y_accel",0.0f); ring->rot_accel.z=xml_get_attribute_float_default(tag,"z_accel",0.0f); } tag=xml_findfirstchild("Move",ring_tag); if (tag!=-1) { ring->vct.x=xml_get_attribute_float(tag,"x"); ring->vct.y=xml_get_attribute_float(tag,"y"); ring->vct.z=xml_get_attribute_float(tag,"z"); } ring->start_color.r=ring->start_color.g=ring->start_color.b=1.0f; ring->end_color.r=ring->end_color.g=ring->end_color.b=1.0f; ring->team_tint=FALSE; tag=xml_findfirstchild("Color",ring_tag); if (tag!=-1) { xml_get_attribute_color(tag,"start",&ring->start_color); xml_get_attribute_color(tag,"end",&ring->end_color); ring->team_tint=xml_get_attribute_boolean(tag,"team"); } tag=xml_findfirstchild("Alpha",ring_tag); if (tag!=-1) { ring->start_alpha=xml_get_attribute_float(tag,"start"); ring->end_alpha=xml_get_attribute_float(tag,"end"); } // move on to next ring server.count.ring++; ring_tag=xml_findnextchild(ring_tag); } xml_close_file(); }
void read_settings_crosshair(void) { int ncrosshair,crosshairs_head_tag,crosshair_tag,tag; char path[1024]; crosshair_type *crosshair; // no crosshairs yet server.crosshairs=NULL; server.count.crosshair=0; // read in crosshairs from setting files file_paths_data(&setup.file_path_setup,path,"Settings","Crosshairs","xml"); if (!xml_open_file(path)) return; // get counts crosshairs_head_tag=xml_findrootchild("Crosshairs"); if (crosshairs_head_tag==-1) { xml_close_file(); return; } ncrosshair=xml_countchildren(crosshairs_head_tag); if (ncrosshair==0) { xml_close_file(); return; } server.crosshairs=(crosshair_type*)malloc(sizeof(crosshair_type)*ncrosshair); if (server.crosshairs==NULL) { xml_close_file(); return; } // read the crosshairs crosshair_tag=xml_findfirstchild("Crosshair",crosshairs_head_tag); while (crosshair_tag!=-1) { // create a new crosshair crosshair=&server.crosshairs[server.count.crosshair]; xml_get_attribute_text(crosshair_tag,"name",crosshair->name,name_str_len); tag=xml_findfirstchild("Image",crosshair_tag); if (tag!=-1) { xml_get_attribute_text(tag,"file",crosshair->bitmap_name,file_str_len); } // move on to next crosshair server.count.crosshair++; crosshair_tag=xml_findnextchild(crosshair_tag); } xml_close_file(); }
bool setup_xml_read_path(char *path) { int n,k,naction,nhost,noption, setup_tag,actions_tag,hosts_tag,options_tag,tag; char tag_name[32]; setup_action_type *action; setup_network_hosts_type *host; setup_network_option_type *option; // read file setup_xml_default(); if (!xml_open_file(path)) return(FALSE); // decode the file setup_tag=xml_findrootchild("Setup"); if (setup_tag==-1) { xml_close_file(); return(FALSE); } // keys xml_key_read_int(setup_tag,"Screen_Width",&setup.screen_wid); xml_key_read_int(setup_tag,"Screen_Height",&setup.screen_high); xml_key_read_boolean(setup_tag,"Lock_FPS_Refresh",&setup.lock_fps_refresh); xml_key_read_float(setup_tag,"Gamma",&setup.gamma); xml_key_read_int(setup_tag,"Tint",&setup.tint_color_idx); xml_key_read_boolean(setup_tag,"Texture_Compression",&setup.texture_compression); xml_key_read_int(setup_tag,"Anisotropic_Mode",&setup.anisotropic_mode); xml_key_read_int(setup_tag,"Mipmap_Mode",&setup.mipmap_mode); xml_key_read_int(setup_tag,"FSAA_Mode",&setup.fsaa_mode); xml_key_read_boolean(setup_tag,"Decal_On",&setup.decal_on); xml_key_read_boolean(setup_tag,"Shadow_On",&setup.shadow_on); xml_key_read_float(setup_tag,"Sound_Volume",&setup.sound_volume); xml_key_read_boolean(setup_tag,"Music_On",&setup.music_on); xml_key_read_float(setup_tag,"Music_Volume",&setup.music_volume); xml_key_read_boolean(setup_tag,"Always_Run",&setup.always_run); xml_key_read_boolean(setup_tag,"Toggle_Run",&setup.toggle_run); xml_key_read_boolean(setup_tag,"Invert_Look",&setup.invert_look); xml_key_read_boolean(setup_tag,"Mouse_Smooth",&setup.mouse_smooth); xml_key_read_float(setup_tag,"Mouse_X_Speed",&setup.mouse_x.speed); xml_key_read_float(setup_tag,"Mouse_X_Speed_Min",&setup.mouse_x.speed_min); xml_key_read_float(setup_tag,"Mouse_X_Speed_Max",&setup.mouse_x.speed_max); xml_key_read_float(setup_tag,"Mouse_X_Acceleration",&setup.mouse_x.acceleration); xml_key_read_float(setup_tag,"Mouse_X_Acceleration_Min",&setup.mouse_x.acceleration_min); xml_key_read_float(setup_tag,"Mouse_X_Acceleration_Max",&setup.mouse_x.acceleration_max); xml_key_read_float(setup_tag,"Mouse_Y_Speed",&setup.mouse_y.speed); xml_key_read_float(setup_tag,"Mouse_Y_Speed_Min",&setup.mouse_y.speed_min); xml_key_read_float(setup_tag,"Mouse_Y_Speed_Max",&setup.mouse_y.speed_max); xml_key_read_float(setup_tag,"Mouse_Y_Acceleration",&setup.mouse_y.acceleration); xml_key_read_float(setup_tag,"Mouse_Y_Acceleration_Min",&setup.mouse_y.acceleration_min); xml_key_read_float(setup_tag,"Mouse_Y_Acceleration_Max",&setup.mouse_y.acceleration_max); xml_key_read_float(setup_tag,"Joystick_X_Speed",&setup.joystick_x.speed); xml_key_read_float(setup_tag,"Joystick_X_Speed_Min",&setup.joystick_x.speed_min); xml_key_read_float(setup_tag,"Joystick_X_Speed_Max",&setup.joystick_x.speed_max); xml_key_read_float(setup_tag,"Joystick_X_Acceleration",&setup.joystick_x.acceleration); xml_key_read_float(setup_tag,"Joystick_X_Acceleration_Min",&setup.joystick_x.acceleration_min); xml_key_read_float(setup_tag,"Joystick_X_Acceleration_Max",&setup.joystick_x.acceleration_max); xml_key_read_float(setup_tag,"Joystick_Y_Speed",&setup.joystick_y.speed); xml_key_read_float(setup_tag,"Joystick_Y_Speed_Min",&setup.joystick_y.speed_min); xml_key_read_float(setup_tag,"Joystick_Y_Speed_Max",&setup.joystick_y.speed_max); xml_key_read_float(setup_tag,"Joystick_Y_Acceleration",&setup.joystick_y.acceleration); xml_key_read_float(setup_tag,"Joystick_Y_Acceleration_Min",&setup.joystick_y.acceleration_min); xml_key_read_float(setup_tag,"Joystick_Y_Acceleration_Max",&setup.joystick_y.acceleration_max); xml_key_read_int(setup_tag,"Joystick_Mode",&setup.joystick_mode); xml_key_read_text(setup_tag,"Network_Name",setup.network.name,name_str_len); xml_key_read_text(setup_tag,"Network_Last_Map",setup.network.last_map,name_str_len); xml_key_read_int(setup_tag,"Host_Bot_Count",&setup.network.bot.count); xml_key_read_int(setup_tag,"Host_Bot_Skill",&setup.network.bot.skill); xml_key_read_int(setup_tag,"Host_Game_Type",&setup.network.game_type); xml_key_read_int(setup_tag,"Host_Score_Limit",&setup.network.score_limit); xml_key_read_boolean(setup_tag,"Network_Show_Names",&setup.network.show_names); xml_key_read_boolean(setup_tag,"Debug_Console",&setup.debug_console); xml_key_read_boolean(setup_tag,"Window",&setup.window); xml_key_read_boolean(setup_tag,"Window_Editor",&setup.window_editor); // fix some items setup_xml_fix_axis(&setup.mouse_x); setup_xml_fix_axis(&setup.mouse_y); // actions actions_tag=xml_findfirstchild("Actions",setup_tag); if (actions_tag!=-1) { naction=xml_countchildren(actions_tag); tag=xml_findfirstchild("Action",actions_tag); setup.action_list.naction=naction; action=setup.action_list.actions; for (n=0;n!=naction;n++) { xml_get_attribute_text(tag,"name",action->name,32); for (k=0;k!=max_setup_action_attach;k++) { sprintf(tag_name,"attach_%d",k); if (!xml_get_attribute_text(tag,tag_name,action->attach[k],32)) action->attach[k][0]=0x0; } tag=xml_findnextchild(tag); action++; } } // hosts hosts_tag=xml_findfirstchild("Hosts",setup_tag); if (hosts_tag!=-1) { nhost=xml_countchildren(hosts_tag); tag=xml_findfirstchild("Host",hosts_tag); setup.network.nhost=nhost; host=setup.network.hosts; for (n=0;n!=nhost;n++) { xml_get_attribute_text(tag,"ip",host->ip,256); tag=xml_findnextchild(tag); host++; } } // options options_tag=xml_findfirstchild("Options",setup_tag); if (options_tag!=-1) { noption=xml_countchildren(options_tag); tag=xml_findfirstchild("Option",options_tag); setup.network.noption=noption; option=setup.network.options; for (n=0;n!=noption;n++) { xml_get_attribute_text(tag,"name",option->name,name_str_len); tag=xml_findnextchild(tag); option++; } } xml_close_file(); return(TRUE); }