//--------- Begin of function FirmHarbor::disp_main_menu ---------// // void FirmHarbor::disp_main_menu(int refreshFlag) { firm_harbor_ptr = this; disp_basic_info(INFO_Y1, refreshFlag); if( !should_show_harbor_info() ) return; //-------- display browser -----------// if( refreshFlag == INFO_REPAINT ) { browse_ship.init( SHIP_BROWSE_X1, SHIP_BROWSE_Y1, SHIP_BROWSE_X2, SHIP_BROWSE_Y2, 0, 25, ship_count, put_ship_rec ); browse_ship.open(1); put_det(INFO_REPAINT); } else { if( last_ship_count != ship_count ) { last_ship_count = ship_count; info.disp(); } else browse_ship.update(); // update only } last_ship_count = ship_count; //-------------------------------// if( !own_firm() ) return; //-------- display buttons ---------// if( refreshFlag == INFO_REPAINT ) { button_build.paint( SHIP_DET_X1, SHIP_DET_Y2+4, 'A', "MAKESHIP" ); button_sail.paint ( SHIP_DET_X1+BUTTON_ACTION_WIDTH, SHIP_DET_Y2+4, 'A', "SAILOUT" ); } if( ship_count > 0 ) button_sail.enable(); else button_sail.disable(); //------ display the info of the ship under construction ------// disp_build_info(refreshFlag); }
//--------- Begin of function FirmInn::put_info ---------// // void FirmInn::put_info(int refreshFlag) { firm_inn_ptr = this; disp_basic_info(INFO_Y1, refreshFlag); if( !should_show_info() ) return; //----------- display browser -----------// if( refreshFlag == INFO_REPAINT ) { browse_hire.init( HIRE_BROWSE_X1, HIRE_BROWSE_Y1, HIRE_BROWSE_X2, HIRE_BROWSE_Y2, 0, 25, inn_unit_count, put_hire_rec ); browse_hire.open(1); } else { if( last_hire_count != inn_unit_count ) { if( last_hire_count==0 || inn_unit_count==0 ) // repaint the whole area as the detail area needs to disappear { last_hire_count = inn_unit_count; info.disp(); return; } last_hire_count = inn_unit_count; browse_hire.refresh(-1, inn_unit_count); if( last_hire_count==0 || inn_unit_count==0 ) refreshFlag = INFO_REPAINT; } else browse_hire.update(); // update only } last_hire_count = inn_unit_count; put_det(refreshFlag); //---------- display spy button ----------// disp_spy_button(INFO_X1+BUTTON_ACTION_WIDTH, HIRE_DET_Y2+4, refreshFlag); }
//--------- Begin of function Firm::disp_spy_menu ---------// // void Firm::disp_spy_menu(int refreshFlag) { static int lastSpyCount; firm_ptr = this; disp_basic_info(INFO_Y1, refreshFlag); //---------- paint controls -----------// if( refreshFlag == INFO_REPAINT ) { //------ display browser field description -------// int x=SPY_BROWSE_X1+2; int y=SPY_BROWSE_Y1-23; vga.d3_panel_up( SPY_BROWSE_X1, y, SPY_BROWSE_X2, SPY_BROWSE_Y1-3 ); font_san.put( x+4 , y+4, "Spy Skill" ); font_san.put( x+70 , y+4, "Loyalty" ); font_san.put( x+130, y+4, "Action" ); //------------ create browser ------------// browse_spy.init( SPY_BROWSE_X1, SPY_BROWSE_Y1, SPY_BROWSE_X2, SPY_BROWSE_Y2, 0, 25, player_spy_count, put_spy_rec ); browse_spy.open(1); lastSpyCount = player_spy_count; err_when( player_spy_count != spy_filter() ); } else { //---------- update controls -----------// if( player_spy_count != lastSpyCount ) { lastSpyCount = player_spy_count; info.disp(); return; } else browse_spy.update(); } if( spy_filter()==0 ) return; //----------- create the paint button ----------// if( refreshFlag == INFO_REPAINT ) { int x=BUTTON_X1; int y=SPY_BROWSE_Y2+5; //--------- spy menu mode -----------// if( firm_menu_mode == FIRM_MENU_SPY ) { //--------- mobilize spy button --------// button_spy_mobilize.paint( x, y, 'A', "MOBILSPY" ); x+=BUTTON_ACTION_WIDTH; //--------- reward spy button --------// button_spy_reward.paint( x, y, 'A', "REWARD" ); x+=BUTTON_ACTION_WIDTH; //------ change spy action button ------// if( firm_id != FIRM_INN && nation_recno != nation_array.player_recno ) // cannot change action in inns { button_spy_action.paint( x, y, 'A', "SPYCHACT" ); x+=BUTTON_ACTION_WIDTH; } else button_spy_action.reset(); //---------- capture button -----------// if( can_player_spy_capture() ) { button_capture.paint( x, y, 'A', "SPYCAPT" ); x+=BUTTON_ACTION_WIDTH; if( x+BUTTON_ACTION_WIDTH-5 > INFO_X2 ) { x = BUTTON_X1; y += BUTTON_ACTION_HEIGHT; } } else button_capture.reset(); //---------- view secret button -----------// if( nation_recno && nation_recno != nation_array.player_recno ) { button_view_secret.paint( x, y, 'A', "VSECRET" ); x+=BUTTON_ACTION_WIDTH; if( x+BUTTON_ACTION_WIDTH-5 > INFO_X2 ) { x = BUTTON_X1; y += BUTTON_ACTION_HEIGHT; } } else button_view_secret.reset(); //---------- assassination button -----------// if( nation_recno && nation_recno != nation_array.player_recno && firm_res[firm_id]->need_overseer ) { button_assassinate.paint( x, y, 'A', "ASSASSIN" ); x+=BUTTON_ACTION_WIDTH; if( x+BUTTON_ACTION_WIDTH-5 > INFO_X2 ) { x = BUTTON_X1; y += BUTTON_ACTION_HEIGHT; } } else button_assassinate.reset(); } //--------- select briber mode --------// else if( firm_menu_mode == FIRM_MENU_SELECT_BRIBER ) { button_bribe.paint( x, y, 'A', "BRIBE" ); x+=BUTTON_ACTION_WIDTH; } else err_here(); //----------- cancel button -----------// button_cancel.paint( x, y, 'A', "PREVMENU" ); } //---- enable/disable view secret button ----// //### begin alex 20/3 ###// if( button_view_secret.init_flag && firm_menu_mode==FIRM_MENU_SPY) //#### end alex 20/3 ####// { Spy* spyPtr = spy_array[ spy_filter( browse_spy.recno() ) ]; if( spyPtr->spy_skill >= MIN_VIEW_SECRET_SPYING_SKILL ) button_view_secret.enable(); else button_view_secret.disable(); } //---- enable/disable assassinate button ----// if( button_assassinate.init_flag ) { if( overseer_recno && unit_array[overseer_recno]->true_nation_recno() != nation_array.player_recno ) // don't assassinate your own spy { button_assassinate.enable(); } else { button_assassinate.disable(); } } }