void precache_view(int view) { if (view < 0) return; for (int i = 0; i < views[view].numLoops; i++) { for (int j = 0; j < views[view].loops[i].numFrames; j++) spriteset.precache (views[view].loops[i].frames[j].pic); } }
void init_game_settings() { int ee; for (ee=0;ee<256;ee++) { if (game.paluses[ee]!=PAL_BACKGROUND) palette[ee]=game.defpal[ee]; } if (game.options[OPT_NOSCALEFNT]) wtext_multiply=1; for (ee = 0; ee < game.numcursors; ee++) { // The cursor graphics are assigned to mousecurs[] and so cannot // be removed from memory if (game.mcurs[ee].pic >= 0) spriteset.precache (game.mcurs[ee].pic); // just in case they typed an invalid view number in the editor if (game.mcurs[ee].view >= game.numviews) game.mcurs[ee].view = -1; if (game.mcurs[ee].view >= 0) precache_view (game.mcurs[ee].view); } // may as well preload the character gfx if (playerchar->view >= 0) precache_view (playerchar->view); for (ee = 0; ee < MAX_INIT_SPR; ee++) objcache[ee].image = NULL; /* dummygui.guiId = -1; dummyguicontrol.guin = -1; dummyguicontrol.objn = -1;*/ our_eip=-6; // game.chars[0].talkview=4; //init_language_text(game.langcodes[0]); for (ee = 0; ee < MAX_INIT_SPR; ee++) { scrObj[ee].id = ee; // 64 bit: Using the id instead // scrObj[ee].obj = NULL; } for (ee=0;ee<game.numcharacters;ee++) { memset(&game.chars[ee].inv[0],0,MAX_INV*sizeof(short)); game.chars[ee].activeinv=-1; game.chars[ee].following=-1; game.chars[ee].followinfo=97 | (10 << 8); game.chars[ee].idletime=20; // can be overridden later with SetIdle or summink game.chars[ee].idleleft=game.chars[ee].idletime; game.chars[ee].transparency = 0; game.chars[ee].baseline = -1; game.chars[ee].walkwaitcounter = 0; game.chars[ee].z = 0; charextra[ee].xwas = INVALID_X; charextra[ee].zoom = 100; if (game.chars[ee].view >= 0) { // set initial loop to 0 game.chars[ee].loop = 0; // or to 1 if they don't have up/down frames if (views[game.chars[ee].view].loops[0].numFrames < 1) game.chars[ee].loop = 1; } charextra[ee].process_idle_this_time = 0; charextra[ee].invorder_count = 0; charextra[ee].slow_move_counter = 0; charextra[ee].animwait = 0; } // multiply up gui positions guibg = (Bitmap **)malloc(sizeof(Bitmap *) * game.numgui); guibgbmp = (IDriverDependantBitmap**)malloc(sizeof(IDriverDependantBitmap*) * game.numgui); for (ee=0;ee<game.numgui;ee++) { guibg[ee] = NULL; guibgbmp[ee] = NULL; } our_eip=-5; for (ee=0;ee<game.numinvitems;ee++) { if (game.invinfo[ee].flags & IFLG_STARTWITH) playerchar->inv[ee]=1; else playerchar->inv[ee]=0; } play.score=0; play.sierra_inv_color=7; play.talkanim_speed = 5; play.inv_item_wid = 40; play.inv_item_hit = 22; play.messagetime=-1; play.disabled_user_interface=0; play.gscript_timer=-1; play.debug_mode=game.options[OPT_DEBUGMODE]; play.inv_top=0; play.inv_numdisp=0; play.obsolete_inv_numorder=0; play.text_speed=15; play.text_min_display_time_ms = 1000; play.ignore_user_input_after_text_timeout_ms = 500; play.ignore_user_input_until_time = 0; play.lipsync_speed = 15; play.close_mouth_speech_time = 10; play.disable_antialiasing = 0; play.rtint_level = 0; play.rtint_light = 255; play.text_speed_modifier = 0; play.text_align = SCALIGN_LEFT; // Make the default alignment to the right with right-to-left text if (game.options[OPT_RIGHTLEFTWRITE]) play.text_align = SCALIGN_RIGHT; play.speech_bubble_width = get_fixed_pixel_size(100); play.bg_frame=0; play.bg_frame_locked=0; play.bg_anim_delay=0; play.anim_background_speed = 0; play.silent_midi = 0; play.current_music_repeating = 0; play.skip_until_char_stops = -1; play.get_loc_name_last_time = -1; play.get_loc_name_save_cursor = -1; play.restore_cursor_mode_to = -1; play.restore_cursor_image_to = -1; play.ground_level_areas_disabled = 0; play.next_screen_transition = -1; play.temporarily_turned_off_character = -1; play.inv_backwards_compatibility = 0; play.gamma_adjustment = 100; play.num_do_once_tokens = 0; play.do_once_tokens = NULL; play.music_queue_size = 0; play.shakesc_length = 0; play.wait_counter=0; play.key_skip_wait = 0; play.cur_music_number=-1; play.music_repeat=1; play.music_master_volume=160; play.digital_master_volume = 100; play.screen_flipped=0; play.offsets_locked=0; play.cant_skip_speech = user_to_internal_skip_speech(game.options[OPT_NOSKIPTEXT]); play.sound_volume = 255; play.speech_volume = 255; play.normal_font = 0; play.speech_font = 1; play.speech_text_shadow = 16; play.screen_tint = -1; play.bad_parsed_word[0] = 0; play.swap_portrait_side = 0; play.swap_portrait_lastchar = -1; play.in_conversation = 0; play.skip_display = 3; play.no_multiloop_repeat = 0; play.in_cutscene = 0; play.fast_forward = 0; play.totalscore = game.totalscore; play.roomscript_finished = 0; play.no_textbg_when_voice = 0; play.max_dialogoption_width = get_fixed_pixel_size(180); play.no_hicolor_fadein = 0; play.bgspeech_game_speed = 0; play.bgspeech_stay_on_display = 0; play.unfactor_speech_from_textlength = 0; play.mp3_loop_before_end = 70; play.speech_music_drop = 60; play.room_changes = 0; play.check_interaction_only = 0; play.replay_hotkey = 318; // Alt+R play.dialog_options_x = 0; play.dialog_options_y = 0; play.min_dialogoption_width = 0; play.disable_dialog_parser = 0; play.ambient_sounds_persist = 0; play.screen_is_faded_out = 0; play.player_on_region = 0; play.top_bar_backcolor = 8; play.top_bar_textcolor = 16; play.top_bar_bordercolor = 8; play.top_bar_borderwidth = 1; play.top_bar_ypos = 25; play.top_bar_font = -1; play.screenshot_width = 160; play.screenshot_height = 100; play.speech_text_align = SCALIGN_CENTRE; play.auto_use_walkto_points = 1; play.inventory_greys_out = 0; play.skip_speech_specific_key = 0; play.abort_key = 324; // Alt+X play.fade_to_red = 0; play.fade_to_green = 0; play.fade_to_blue = 0; play.show_single_dialog_option = 0; play.keep_screen_during_instant_transition = 0; play.read_dialog_option_colour = -1; play.narrator_speech = game.playercharacter; play.crossfading_out_channel = 0; play.speech_textwindow_gui = game.options[OPT_TWCUSTOM]; if (play.speech_textwindow_gui == 0) play.speech_textwindow_gui = -1; strcpy(play.game_name, game.gamename); play.lastParserEntry[0] = 0; play.follow_change_room_timer = 150; for (ee = 0; ee < MAX_BSCENE; ee++) play.raw_modified[ee] = 0; play.game_speed_modifier = 0; if (debug_flags & DBG_DEBUGMODE) play.debug_mode = 1; gui_disabled_style = convert_gui_disabled_style(game.options[OPT_DISABLEOFF]); memset(&play.walkable_areas_on[0],1,MAX_WALK_AREAS+1); memset(&play.script_timers[0],0,MAX_TIMERS * sizeof(int)); memset(&play.default_audio_type_volumes[0], -1, MAX_AUDIO_TYPES * sizeof(int)); // reset graphical script vars (they're still used by some games) for (ee = 0; ee < MAXGLOBALVARS; ee++) play.globalvars[ee] = 0; for (ee = 0; ee < MAXGLOBALSTRINGS; ee++) play.globalstrings[ee][0] = 0; for (ee = 0; ee < MAX_SOUND_CHANNELS; ee++) last_sound_played[ee] = -1; if (usetup.translation) init_translation (usetup.translation); update_invorder(); displayed_room = -10; }