int FirmDie::process() { FirmBuild *firmBuild = firm_die_res.get_build(firm_build_id); if( --frame_delay_count < 1 ) // if( ++frame_delay_count > firmBuild->frame_delay_array[frame-1]) { // frame_delay_count = 0; // if( ++frame > firmBuild->frame_count) if( ++frame > end_frame) { if (frame_looping >0) { frame_looping --; frame = start_frame; return 0; } firmBuild->free_bitmap_res(); return 1; } } return 0; }
//--------- Begin of function Firm::deinit --------// // void Firm::deinit() { if( !firm_recno ) // already deleted return; if( power.command_firm_recno == firm_recno ) power.reset_command(); // ##### begin Gilbert 30/10 ######// // mem_del(firm_cur_frame); // firm_cur_frame = NULL; // mem_del(firm_remain_frame_delay); // firm_remain_frame_delay = NULL; // ##### end Gilbert 30/10 ######// is_being_deleted = 1; // whether the place is currently being deleted, if it is set to true, some functions will be executed in an exceptional way, it is set in deinit() Place::deinit(); // parent class deinit() deinit_derived(); //------- delete AI info ----------// if( nation_recno ) { Nation* nationPtr = nation_array[nation_recno]; nationPtr->del_firm_info(firm_id, firm_recno); if(is_ai) { if( should_close_flag ) nationPtr->firm_should_close_array[firm_id-1]--; err_when( nationPtr->firm_should_close_array[firm_id-1] < 0 ); } } //--------- clean up related stuff -----------// restore_world_matrix(); release_link(); //-------- dynamic unloading of firm bitmaps ---------// FirmBuild* firmBuild = firm_res.get_build(firm_build_id); firmBuild->free_bitmap_res(); //------ all workers and the overseer resign ------// if( !sys.signal_exit_flag ) { // char* name1 = "Wilde Lishorr"; // char* name2 = "Lishorr"; // if( !under_construction && hit_points < 1 && strcmp(name1, firm_name()) && strcmp(name2, firm_name()) ) if( !under_construction && hit_points < 1 ) { // -------- create a firm die record ------// // can be called as soon as restore_world_matrix static int effectId = sprite_res.search_sprite( "FIRE_EFF" ); err_when( !effectId ); Effect::create(effectId, loc_x1 *LOCATE_WIDTH, loc_y1 *LOCATE_HEIGHT, SPRITE_IDLE, 1, 8, 0); FirmDie firmDie3; if (firmBuild->loc_width == 3 && firmBuild->loc_height == 3) firmDie3.init(this, 6); else if (firmBuild->loc_width == 6 && firmBuild->loc_height == 6) firmDie3.init(this, 5); else firmDie3.init(this, 4); firm_die_array.add(&firmDie3); } } free_all_people(); //--------- decrease firm counter -----------// if( nation_recno ) nation_array[nation_recno]->nation_firm_count--; //------ update firm counter -------// FirmInfo* firmInfo = firm_res[firm_id]; firmInfo->total_firm_count--; if( nation_recno ) firmInfo->dec_nation_firm_count(nation_recno); //------- update town border ---------// loc_x1 = -1; // mark deleted //------- if the current firm is the selected -----// if( firm_array.selected_recno == firm_recno ) { firm_array.selected_recno = 0; info.disp(); } //-------------------------------------------------// firm_recno = 0; is_being_deleted = 0; //-------- dynamic unloading of firm bitmaps ---------// // FirmBuild* firmBuild = firm_res.get_build(firm_build_id); if( firm_id ) { // firmBuild->free_bitmap_res(); firm_id = 0; } }