void init_stuff() { int seed; Uint32 (*my_timer_pointer) (unsigned int) = my_timer; //TODO: process command line options chdir(datadir); //Initialize all strings init_translatables(); #ifdef WRITE_XML load_translatables();//Write to the current working directory - hopefully we'll have write rights here... #endif //read the config file read_config(); //Parse command line options read_command_line(); //OK, we have the video mode settings... setup_video_mode(full_screen,video_mode); //now you may set the video mode using the %<foo> in-game video_mode_set=1; //Good, we should be in the right working directory - load all translatables from their files load_translatables(); init_video(); resize_window(); init_gl_extensions(); #ifdef CAL3D create_cal3d_model(); init_cal3d_model(); #endif seed = time (NULL); srand (seed); cache_system_init(MAX_CACHE_SYSTEM); init_texture_cache(); init_md2_cache(); init_e3d_cache(); init_2d_obj_cache(); load_ignores(); load_filters(); load_e3d_list(); load_e2d_list(); load_part_list(); load_knowledge_list(); load_cursors(); build_cursors(); change_cursor(CURSOR_ARROW); build_glow_color_table(); init_actors_lists(); memset(tile_list, 0, sizeof(tile_list)); memset(lights_list, 0, sizeof(lights_list)); init_particles_list(); memset(actors_defs, 0, sizeof(actors_defs)); init_actor_defs(); load_map_tiles(); //lights setup build_global_light_table(); build_sun_pos_table(); reset_material(); init_lights(); disable_local_lights(); init_colors(); clear_error_log(); clear_conn_log(); clear_thunders(); build_rain_table(); read_bin_cfg(); build_levels_table();//for some HUD stuff init_scale_array(); if(!no_sound)init_sound(); //initialize the fonts init_fonts(); check_gl_errors(); //load the necesary textures //font_text=load_texture_cache("./textures/font.bmp",0); icons_text=load_texture_cache("./textures/gamebuttons.bmp",0); hud_text=load_texture_cache("./textures/gamebuttons2.bmp",0); cons_text=load_texture_cache("./textures/console.bmp",255); sky_text_1=load_texture_cache("./textures/sky.bmp",70); particle_textures[0]=load_texture_cache("./textures/particle0.bmp",0); particle_textures[1]=load_texture_cache("./textures/particle1.bmp",0); particle_textures[2]=load_texture_cache("./textures/particle2.bmp",0); particle_textures[3]=load_texture_cache("./textures/particle3.bmp",0); particle_textures[4]=load_texture_cache("./textures/particle4.bmp",0); particle_textures[5]=load_texture_cache("./textures/particle5.bmp",0); particle_textures[6]=load_texture_cache("./textures/particle6.bmp",0); particle_textures[7]=load_texture_cache("./textures/particle7.bmp",0); items_text_1=load_texture_cache("./textures/items1.bmp",0); items_text_2=load_texture_cache("./textures/items2.bmp",0); items_text_3=load_texture_cache("./textures/items3.bmp",0); items_text_4=load_texture_cache("./textures/items4.bmp",0); items_text_5=load_texture_cache("./textures/items5.bmp",0); items_text_6=load_texture_cache("./textures/items6.bmp",0); items_text_7=load_texture_cache("./textures/items7.bmp",0); items_text_8=load_texture_cache("./textures/items8.bmp",0); items_text_9=load_texture_cache("./textures/items9.bmp",0); portraits1_tex=load_texture_cache("./textures/portraits1.bmp",0); portraits2_tex=load_texture_cache("./textures/portraits2.bmp",0); portraits3_tex=load_texture_cache("./textures/portraits3.bmp",0); portraits4_tex=load_texture_cache("./textures/portraits4.bmp",0); portraits5_tex=load_texture_cache("./textures/portraits5.bmp",0); halo_tex=load_texture_cache("./textures/halo.bmp",0); if(have_multitexture)ground_detail_text=load_texture_cache("./textures/ground_detail.bmp",255); check_gl_errors(); create_char_error_str[0]=0; init_opening_interface(); init_hud_interface(); if(SDLNet_Init()<0) { char str[120]; sprintf(str,"%s: %s\n",failed_sdl_net_init,SDLNet_GetError()); log_error(str); SDLNet_Quit(); SDL_Quit(); exit(2); } if(SDL_InitSubSystem(SDL_INIT_TIMER)<0) { char str[120]; sprintf(str, "%s: %s\n", failed_sdl_timer_init,SDL_GetError()); log_error(str); SDL_Quit(); exit(1); } SDL_SetTimer (1000/(18*4), my_timer_pointer); ReadXML("languages/en/Encyclopedia/index.xml"); read_key_config(); load_questlog(); init_buddy(); //initiate function pointers init_attribf(); //we might want to do this later. connect_to_server(); }
void get_the_stats(Sint16 *stats, size_t len_in_bytes) { have_stats=1; memset(&your_info, 0, sizeof(your_info)); // failsafe incase structure changes //initiate the function pointers init_attribf(); your_info.phy.cur=SDL_SwapLE16(stats[0]); your_info.phy.base=SDL_SwapLE16(stats[1]); your_info.coo.cur=SDL_SwapLE16(stats[2]); your_info.coo.base=SDL_SwapLE16(stats[3]); your_info.rea.cur=SDL_SwapLE16(stats[4]); your_info.rea.base=SDL_SwapLE16(stats[5]); your_info.wil.cur=SDL_SwapLE16(stats[6]); your_info.wil.base=SDL_SwapLE16(stats[7]); your_info.ins.cur=SDL_SwapLE16(stats[8]); your_info.ins.base=SDL_SwapLE16(stats[9]); your_info.vit.cur=SDL_SwapLE16(stats[10]); your_info.vit.base=SDL_SwapLE16(stats[11]); your_info.human_nex.cur=SDL_SwapLE16(stats[12]); your_info.human_nex.base=SDL_SwapLE16(stats[13]); your_info.animal_nex.cur=SDL_SwapLE16(stats[14]); your_info.animal_nex.base=SDL_SwapLE16(stats[15]); your_info.vegetal_nex.cur=SDL_SwapLE16(stats[16]); your_info.vegetal_nex.base=SDL_SwapLE16(stats[17]); your_info.inorganic_nex.cur=SDL_SwapLE16(stats[18]); your_info.inorganic_nex.base=SDL_SwapLE16(stats[19]); your_info.artificial_nex.cur=SDL_SwapLE16(stats[20]); your_info.artificial_nex.base=SDL_SwapLE16(stats[21]); your_info.magic_nex.cur=SDL_SwapLE16(stats[22]); your_info.magic_nex.base=SDL_SwapLE16(stats[23]); your_info.manufacturing_skill.cur=SDL_SwapLE16(stats[24]); your_info.manufacturing_skill.base=SDL_SwapLE16(stats[25]); your_info.harvesting_skill.cur=SDL_SwapLE16(stats[26]); your_info.harvesting_skill.base=SDL_SwapLE16(stats[27]); your_info.alchemy_skill.cur=SDL_SwapLE16(stats[28]); your_info.alchemy_skill.base=SDL_SwapLE16(stats[29]); your_info.overall_skill.cur=SDL_SwapLE16(stats[30]); your_info.overall_skill.base=SDL_SwapLE16(stats[31]); your_info.attack_skill.cur=SDL_SwapLE16(stats[32]); your_info.attack_skill.base=SDL_SwapLE16(stats[33]); your_info.defense_skill.cur=SDL_SwapLE16(stats[34]); your_info.defense_skill.base=SDL_SwapLE16(stats[35]); your_info.magic_skill.cur=SDL_SwapLE16(stats[36]); your_info.magic_skill.base=SDL_SwapLE16(stats[37]); your_info.potion_skill.cur=SDL_SwapLE16(stats[38]); your_info.potion_skill.base=SDL_SwapLE16(stats[39]); your_info.carry_capacity.cur=SDL_SwapLE16(stats[40]); your_info.carry_capacity.base=SDL_SwapLE16(stats[41]); your_info.material_points.cur=SDL_SwapLE16(stats[42]); your_info.material_points.base=SDL_SwapLE16(stats[43]); your_info.ethereal_points.cur=SDL_SwapLE16(stats[44]); your_info.ethereal_points.base=SDL_SwapLE16(stats[45]); your_info.food_level=SDL_SwapLE16(stats[46]); your_info.manufacturing_exp=SDL_SwapLE32(*((Uint32 *)(stats+49))); your_info.manufacturing_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+51))); your_info.harvesting_exp=SDL_SwapLE32(*((Uint32 *)(stats+53))); your_info.harvesting_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+55))); your_info.alchemy_exp=SDL_SwapLE32(*((Uint32 *)(stats+57))); your_info.alchemy_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+59))); your_info.overall_exp=SDL_SwapLE32(*((Uint32 *)(stats+61))); your_info.overall_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+63))); your_info.attack_exp=SDL_SwapLE32(*((Uint32 *)(stats+65))); your_info.attack_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+67))); your_info.defense_exp=SDL_SwapLE32(*((Uint32 *)(stats+69))); your_info.defense_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+71))); your_info.magic_exp=SDL_SwapLE32(*((Uint32 *)(stats+73))); your_info.magic_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+75))); your_info.potion_exp=SDL_SwapLE32(*((Uint32 *)(stats+77))); your_info.potion_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+79))); your_info.summoning_skill.cur=SDL_SwapLE16(stats[83]); your_info.summoning_skill.base=SDL_SwapLE16(stats[84]); your_info.summoning_exp=SDL_SwapLE32(*((Uint32 *)(stats+85))); your_info.summoning_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+87))); your_info.crafting_skill.cur=SDL_SwapLE16(stats[89]); your_info.crafting_skill.base=SDL_SwapLE16(stats[90]); your_info.crafting_exp=SDL_SwapLE32(*((Uint32 *)(stats+91))); your_info.crafting_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+93))); your_info.engineering_skill.cur=SDL_SwapLE16(stats[95]); your_info.engineering_skill.base=SDL_SwapLE16(stats[96]); your_info.engineering_exp=SDL_SwapLE32(*((Uint32 *)(stats+97))); your_info.engineering_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+99))); your_info.tailoring_skill.cur=SDL_SwapLE16(stats[101]); your_info.tailoring_skill.base=SDL_SwapLE16(stats[102]); your_info.tailoring_exp=SDL_SwapLE32(*((Uint32 *)(stats+103))); your_info.tailoring_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+105))); your_info.ranging_skill.cur=SDL_SwapLE16(stats[107]); your_info.ranging_skill.base=SDL_SwapLE16(stats[108]); your_info.ranging_exp=SDL_SwapLE32(*((Uint32 *)(stats+109))); your_info.ranging_exp_next_lev=SDL_SwapLE32(*((Uint32 *)(stats+111))); your_info.research_completed=SDL_SwapLE16(stats[47]); your_info.researching=SDL_SwapLE16(stats[81]); your_info.research_total=SDL_SwapLE16(stats[82]); check_book_known(); // can be removed test when we change protocol number for 1.9.2 if (len_in_bytes <= 2*114) { your_info.action_points.cur=0; your_info.action_points.base=0; } else { your_info.action_points.cur=SDL_SwapLE16(stats[113]); your_info.action_points.base=SDL_SwapLE16(stats[114]); } init_session(); check_castability(); }