void FirmMine::put_info(int refreshFlag) { // #### begin Gilbert 5/10 ######// if( !should_show_info() ) return; vga.active_buf->put_bitmap( INFO_X1, INFO_Y1, image_gameif.read("MIFABASE") ); FirmWork::put_info(refreshFlag); /* disp_basic_info(INFO_Y1, refreshFlag); if( !should_show_info() ) return; disp_mine_info(INFO_Y1+52, refreshFlag); disp_worker_list(INFO_Y1+127, refreshFlag); disp_worker_info(INFO_Y1+191, refreshFlag); //---------- display spy button ----------// disp_spy_button(INFO_X1, INFO_Y1+249, refreshFlag); */ }
//--------- Begin of function FirmWar::disp_main_menu ---------// // void FirmWar::disp_main_menu(int refreshFlag) { if( !should_show_info() ) return; vga.active_buf->put_bitmap( INFO_X1, INFO_Y1, image_gameif.read("WRFCBASE") ); // #### begin Gilbert 5/10 ######// FirmWork::put_info(refreshFlag); /* if( !should_show_info() ) return; disp_worker_list(INFO_Y1, refreshFlag); disp_firm_info(INFO_Y1, refreshFlag); if( selected_worker_id > worker_count ) selected_worker_id = worker_count; if( selected_worker_id ) disp_worker_info(INFO_Y1, refreshFlag); // int x1 = INFO_X1 +13; // int y1 = INFO_Y1 +235; int x2 = INFO_X1 +13; int y2 = INFO_Y1 +281; if( is_own() ) { button_select_build.create( x2, y2, 'A', "MAKEWEAP" ); button_select_build.paint(); } */ // #### end Gilbert 5/10 ######// }
//--------- Begin of function Firm::detect_worker_list ---------// // int Firm::detect_worker_list() { if( !should_show_info() ) return 0; //------- detect buttons on hiring firm workers -------// int i, x, y; int liveInTown = firm_res[firm_id]->live_in_town; for( i=0 ; i<worker_count ; i++ ) { x = INFO_X1+6+i%4*50; y = pop_disp_y1+1+i/4*29; switch( mouse.any_click(x, y, x+27, y+23, LEFT_BUTTON) ? 1 : (mouse.any_click(x, y, x+27, y+23, RIGHT_BUTTON) ? 2 : 0) ) { case 1: // left button to select worker selected_worker_id = i+1; return 1; case 2: if( own_firm() ) // only if this is our own firm { //--- if the town where the unit lives belongs to the nation of this firm ---// mobilize_worker(i+1, COMMAND_PLAYER); return 1; } break; } } return 0; }
//--------- Begin of function FirmBase::put_info ---------// // void FirmBase::put_info(int refreshFlag) { if( !should_show_info() ) return; vga.active_buf->put_bitmap( INFO_X1, INFO_Y1, image_gameif.read("GBBASE") ); FirmWork::put_info(refreshFlag); }
//----------- Begin of function FirmMarket::detect_market_info -------// // void FirmMarket::detect_market_info() { if( !should_show_info() ) { return; } int i = 0; MarketGoods *marketGoods = market_goods_array; for( ; i<MAX_MARKET_GOODS; ++i, ++marketGoods ) { int x = (i%3) * 72 + INFO_X1 + 18; int y = (i/3) * 89 + INFO_Y1 + 60; String str; if( marketGoods->raw_id ) { str = raw_res[marketGoods->raw_id]->name; } else if( marketGoods->product_raw_id ) { str = text_firm.str_product_name( marketGoods->product_raw_id ); } else { // empty continue; } // ------- detect sale ----------// if( !show_sale_debug_info ) help.set_help( x-4, y, x+56, y+18, "MK_SALES" ); else help.set_help( x, y+16, x+56, y+31, "MK_SALES" ); // ------- detect quantity -----// if( !show_sale_debug_info ) help.set_help( x, y+20, x+56, y+36, "MK_STOCK" ); else help.set_help( x, y, x+56, y+15, "MK_STOCK" ); // ------- detect demand ----------// if( show_sale_debug_info ) { help.set_help( x, y+32, x+56, y+47, "MK_DEMAN" ); } // ------ detect icon ---------// help.set_custom_help(x+6, y+48, x+50, y+79, str); } }
//--------- Begin of function FirmBase::put_info ---------// // void FirmBase::put_info(int refreshFlag) { disp_basic_info(INFO_Y1, refreshFlag); if( !should_show_info() ) return; disp_base_info(INFO_Y1+54, refreshFlag); disp_worker_list(INFO_Y1+104, refreshFlag); disp_worker_info(INFO_Y1+168, refreshFlag); disp_god_info(INFO_Y1+226, refreshFlag); //------ display button -------// int x, y=INFO_Y1+279; if( own_firm() ) { if( refreshFlag==INFO_REPAINT ) { button_invoke.paint( INFO_X1, y, 'A', "INVOKE" ); button_reward.paint( INFO_X1 + BUTTON_ACTION_WIDTH, y, 'A', "REWARDSP" ); button_vacate_firm.paint(INFO_X1 + BUTTON_ACTION_WIDTH * 2, y, 'A', "RECRUIT"); button_vacate_firm.set_help_code("MOBILIZE"); } if( can_invoke() ) button_invoke.enable(); else button_invoke.disable(); if( nation_array[nation_recno]->cash >= REWARD_COST && ( (overseer_recno && unit_array[overseer_recno]->rank_id != RANK_KING) || selected_worker_id ) ) { button_reward.enable(); } else { button_reward.disable(); } if( have_own_workers() ) button_vacate_firm.enable(); else button_vacate_firm.disable(); x=INFO_X1+BUTTON_ACTION_WIDTH * 3; } else x=INFO_X1; disp_spy_button(x, y, refreshFlag); }
void FirmIncubator::disp_main_menu(int refreshFlag) { Firm::put_info(refreshFlag); if( !should_show_info() ) return; vga.active_buf->put_bitmap( INFO_X1, INFO_Y1, image_gameif.read("WRFCBASE") ); disp_firm_info(INFO_Y1, refreshFlag); }
void FirmWork::detect_info() { detect_firm_info(); if( !should_show_info() ) return; if (is_own()) { detect_worker_list(); detect_worker_info(); } }
//--------- Begin of function FirmCamp::put_info ---------// // void FirmCamp::put_info(int refreshFlag) { disp_basic_info(INFO_Y1, refreshFlag); if( !should_show_info() ) return; disp_camp_info(INFO_Y1+54, refreshFlag); disp_worker_list(INFO_Y1+104, refreshFlag); disp_worker_info(INFO_Y1+168, refreshFlag); //------ display button -------// int x; if( own_firm() ) { if( refreshFlag==INFO_REPAINT ) { button_patrol.paint( INFO_X1, INFO_Y1+242, 'A', "PATROL" ); button_reward.paint( INFO_X1+BUTTON_ACTION_WIDTH, INFO_Y1+242, 'A', "REWARDCB" ); button_defense.paint( INFO_X2-BUTTON_ACTION_WIDTH, INFO_Y1+242, 'A', defense_flag ? (char*)"DEFENSE1" : (char*)"DEFENSE0" ); } if( overseer_recno || worker_count ) button_patrol.enable(); else button_patrol.disable(); if( nation_array[nation_recno]->cash >= REWARD_COST && ( (overseer_recno && unit_array[overseer_recno]->rank_id != RANK_KING) || selected_worker_id ) ) { button_reward.enable(); } else { button_reward.disable(); } x=INFO_X1+BUTTON_ACTION_WIDTH*2; } else x=INFO_X1; disp_spy_button(x, INFO_Y1+242, refreshFlag); #ifdef DEBUG if( sys.testing_session || sys.debug_session ) disp_debug_info(this, refreshFlag); #endif }
//--------- Begin of function FirmBase::disp_god_info ---------// // void FirmBase::disp_god_info(int dispY1, int refreshFlag) { //-------- display the icon of the mythical creature -------// int x=INFO_X1, y=INFO_Y1; if( refreshFlag == INFO_REPAINT ) { invoked_effect_text[0] = '\0'; // clear text not to show invoked effect text } String str; short* hitPointBitmap =NULL; int ratio = (int)pray_points *40 / (int)MAX_PRAY_POINTS; int size = (int)pray_points *76 / (int)MAX_PRAY_POINTS; //106 x 35 --- 15 to 90 ie. 0 to 40 hitPointBitmap = (short *)mem_add( BitmapW::size(15 +size, 35) ); if (ratio <11) vga.active_buf->put_bitmap_trans( INFO_X1 +80 -13, INFO_Y1 +49 +48, image_spict.read("MTR_10")); else if (ratio <40) vga.active_buf->put_bitmap_trans( INFO_X1 +80 -13, INFO_Y1 +49 +48, image_spict.read("MTR_39")); else vga.active_buf->put_bitmap_trans( INFO_X1 +80 -13, INFO_Y1 +49 +48, image_spict.read("MTR_40")); vga.active_buf->read_bitmapW( INFO_X1 +80 -13, INFO_Y1 +49 +48, INFO_X1 +94 +size -13, INFO_Y1 +80 +48, hitPointBitmap ); vga.active_buf->put_bitmap_trans( INFO_X1 +80 -13, INFO_Y1 +49 +48, image_spict.read("MTR_00")); vga.active_buf->put_bitmapW( INFO_X1 +80 -13, INFO_Y1 +49 +48, hitPointBitmap ); mem_del( hitPointBitmap ); /* str = (int)pray_points; str += " / "; str += (int)MAX_PRAY_POINTS; font_snds.center_put( INFO_X1 +80 -13, INFO_Y1 +46 +48, INFO_X1 +187 -13, INFO_Y1 +63 +48, str ); */ const char *baseDesc; if( should_show_info() && invoked_effect_text[0] ) { baseDesc = invoked_effect_text; } else { baseDesc = text_firm.str_base_prayer_effect( god_id ); } font_snds.center_put_paragraph( INFO_X1+33, INFO_Y1, INFO_X2-22, INFO_Y1+115, baseDesc, -2, 0, 0 ); }
void FirmOffensive::disp_main_menu(int refreshFlag) { Firm::put_info(refreshFlag); button_cast.create( INFO_X1 +13, INFO_Y1 +259, 'A', "GBA-1" ); if( !should_show_info() ) return; vga.active_buf->put_bitmap( INFO_X1, INFO_Y1, image_gameif.read("BLDGBASE") ); // display delay if( cast_delay > 0 ) { short* hitPointBitmap =NULL; int ratio = cast_delay *40 / cast_delay_max; int size = cast_delay *76 / cast_delay_max; //106 x 35 --- 15 to 90 ie. 0 to 40 int offsetX = -35; int offsetY = -40; hitPointBitmap = (short *)mem_add( BitmapW::size(15 +size, 35) ); if (ratio <11) vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_10")); else if (ratio <40) vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_39")); else vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_40")); vga.active_buf->read_bitmapW( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, INFO_X1 +94 +20 +size +offsetX, INFO_Y1 +80 +offsetY, hitPointBitmap ); vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_00")); vga.active_buf->put_bitmapW( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, hitPointBitmap ); mem_del( hitPointBitmap ); } if( !is_own() ) return; char fileName[] = "GBA-1"; if (button_cast.enable_flag) fileName[4] = '1' + (char) (sys.frame_count%3); button_cast.update_bitmap( fileName ); button_cast.enable_flag = can_cast(magic_id_upper_limit); button_cast.paint(); }
//--------- Begin of function FirmMine::put_info ---------// // void FirmMine::put_info(int refreshFlag) { disp_basic_info(INFO_Y1, refreshFlag); if( !should_show_info() ) return; disp_mine_info(INFO_Y1+52, refreshFlag); disp_worker_list(INFO_Y1+127, refreshFlag); disp_worker_info(INFO_Y1+191, refreshFlag); //---------- display spy button ----------// disp_spy_button(INFO_X1, INFO_Y1+249, refreshFlag); }
void FirmWork::put_info(int refreshFlag) { // vga.active_buf->put_bitmap( INFO_X1, INFO_Y1, image_gameif.read("MIFABASE") ); if( !should_show_info() ) return; disp_worker_list(INFO_Y1, refreshFlag); disp_firm_info(INFO_Y1, refreshFlag); if( selected_worker_id > worker_count ) selected_worker_id = worker_count; if( selected_worker_id ) disp_worker_info(INFO_Y1, refreshFlag); }
// ----- begin of function FirmMonsterFortress::put_info -----// // void FirmMonsterFortress::put_info(int refreshFlag) { Firm::put_info(refreshFlag); if( should_show_info() ) { vga.active_buf->put_bitmap( INFO_X1, INFO_Y1, image_gameif.read("STABBASE") ); disp_camp_info(INFO_Y1, refreshFlag); disp_soldier_list(INFO_Y1, refreshFlag, 0); disp_soldier_info(INFO_Y1+178, refreshFlag); // disp_debug_info(this, 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 FirmFactory::draw -----------// // // Draw product stocks. // void FirmFactory::draw(int displayLayer) { Firm::draw(displayLayer); if( !should_show_info() ) return; if( under_construction ) return; if( product_raw_id && displayLayer == 1 ) { int cargoCount = MAX_CARGO * (int)stock_qty / (int)max_stock_qty; draw_cargo( MAX(1,cargoCount), raw_res.small_product_icon(product_raw_id) ); } }
// ----- begin of function FirmMonsterFortress::detect_info -----// // void FirmMonsterFortress::detect_info() { // ##### patch begin Gilbert 7/8 #####// int firmRecno = firm_recno; // ##### patch end Gilbert 7/8 #####// Firm::detect_info(); if( should_show_info() ) { detect_camp_info(); // ##### patch begin Gilbert 7/8 #####// if( firm_array.is_deleted(firmRecno) ) // in case button_transform_grokken button is pressed return; // ##### patch end Gilbert 7/8 #####// detect_soldier_list(0); detect_soldier_info(); } }
//------- Begin of function FirmHarbor::should_show_harbor_info -------// // int FirmHarbor::should_show_harbor_info() { if( should_show_info() ) return 1; //--- if any of the ships in the harbor has the spies of the player ---// UnitMarine* unitMarine; for( int i=0 ; i<ship_count ; i++ ) { unitMarine = (UnitMarine*) unit_array[ ship_recno_array[i] ]; if( unitMarine->should_show_info() ) return 1; } return 0; }
//--------- Begin of function FirmResearch::disp_main_menu ---------// // void FirmResearch::disp_main_menu(int refreshFlag) { disp_basic_info(INFO_Y1, refreshFlag); if( !should_show_info() ) return; disp_research_info(INFO_Y1+54, refreshFlag); disp_worker_list(INFO_Y1+107, refreshFlag); disp_worker_info(INFO_Y1+171, refreshFlag); if( own_firm() ) { if( refreshFlag==INFO_REPAINT ) button_select_research.paint( INFO_X1, INFO_Y1+235, 'A', "RESEARCH" ); } disp_spy_button( INFO_X1+BUTTON_ACTION_WIDTH, INFO_Y1+235, refreshFlag ); }
// ------- begin of function FirmMonsterTrain::put_info -------// // void FirmMonsterTrain::put_info(int refreshFlag) { if( refreshFlag == INFO_REPAINT ) { firm_menu_mode = FIRM_MONS_TRAIN_MENU_MAIN; disp_combat_or_skill = 0; } Firm::put_info(refreshFlag); switch( firm_menu_mode ) { case FIRM_MONS_TRAIN_MENU_MAIN: if( !should_show_info() ) return; err_when(train_type_count <= 0); vga.active_buf->put_bitmap(INFO_X1, INFO_Y1, image_gameif.read("STABBASE")); disp_firm_info(INFO_Y1, refreshFlag); disp_trainee_list(INFO_Y1, refreshFlag ); if (train_type_count == 1 ) { int unitId = train_unit_id[0]; info.draw_unit_icon( INFO_X1+40, INFO_Y1+52, unitId, nation_recno, INFO_X1+15, INFO_Y1+5, INFO_X1+68, INFO_Y1+84, 1 ); font_snds.center_put( INFO_X1+88, INFO_Y1+15, INFO_X1+217, INFO_Y1+74, unit_res[unitId]->name, 0, 0 ); } if( selected_trainee_id > trainee_count ) selected_trainee_id = trainee_count; if( selected_trainee_id ) disp_trainee_info(INFO_Y1+178, refreshFlag ); break; } }
//--------- Begin of function Unit::disp_main_menu ---------// // void Unit::disp_main_menu(int refreshFlag) { disp_basic_info(INFO_Y1, refreshFlag); disp_unit_profile( INFO_Y1+52, refreshFlag ); if( !should_show_info() ) return; //---------------------------------// int y=INFO_Y1+98; if( race_id ) { disp_unit_info( y, refreshFlag ); y += 89; } //---------------------------------// if( is_own_spy() ) { disp_spy_menu(y, refreshFlag); y+=spy_menu_height()+3; } if( is_own() ) { if( refreshFlag == INFO_REPAINT ) disp_button(y); y+=BUTTON_ACTION_HEIGHT; } #ifdef DEBUG if( sys.debug_session || sys.testing_session ) disp_debug_info(this, INFO_Y2-68, refreshFlag); #endif }
//--------- Begin of function FirmFactory::put_info ---------// // void FirmFactory::put_info(int refreshFlag) { //---------- display info ------------// disp_basic_info(INFO_Y1, refreshFlag); if( !should_show_info() ) return; disp_factory_info(INFO_Y1+54, refreshFlag); disp_worker_list(INFO_Y1+126, refreshFlag); disp_worker_info(INFO_Y1+190, refreshFlag); //------ display mobilize button -------// int x = INFO_X1; if(own_firm()) { if (refreshFlag == INFO_REPAINT) { button_change_production.paint(INFO_X1, INFO_Y1 + 248, 'A', "CHGPROD"); button_vacate_firm.paint(INFO_X1 + BUTTON_ACTION_WIDTH, INFO_Y1 + 248, 'A', "RECRUIT"); button_vacate_firm.set_help_code("MOBILIZE"); } if (worker_count) button_vacate_firm.enable(); else button_vacate_firm.disable(); x += (BUTTON_ACTION_WIDTH * 2); } //---------- display spy button ----------// disp_spy_button(x, INFO_Y1+248, refreshFlag); }
//--------- Begin of function FirmWar::detect_main_menu ---------// // void FirmWar::detect_main_menu() { detect_firm_info(); if( !should_show_info() ) return; if( !is_own() ) return; //----------- detect worker -----------// detect_worker_list(); detect_worker_info(); //------ detect the select research button -------// // if( button_select_build.detect() ) // { // war_menu_mode = WAR_MENU_BUILD; // disable_refresh = 1; // static var for disp_info() only // info.disp(); // disable_refresh = 0; // } }
//--------- Begin of function Unit::disp_unit_profile ---------// // // <int> dispY1 - the top y coordination of the info area // <int> refreshFlag // void Unit::disp_unit_profile(int dispY1, int refreshFlag) { //--------- set help parameters --------// int x=INFO_X1+4; if( mouse.in_area(x, dispY1+3, x+UNIT_LARGE_ICON_WIDTH-1, dispY1+UNIT_LARGE_ICON_HEIGHT+2) ) help.set_unit_help( unit_id, rank_id, x, dispY1+3, x+UNIT_LARGE_ICON_WIDTH-1, dispY1+UNIT_LARGE_ICON_HEIGHT+2 ); //-----------------------------------------// if( refreshFlag != INFO_REPAINT ) // only display in repaint mode return; //-----------------------------------------// const char *str=NULL; if( race_id ) { if( rank_id == RANK_KING ) { str = _("King"); } else if( rank_id == RANK_GENERAL ) { // ##### patch begin Gilbert 17/2 #####// if( unit_mode == UNIT_MODE_REBEL ) str = _("Rebel Leader"); else str = _("General"); // ##### patch end Gilbert 17/2 #####// } else if( unit_mode == UNIT_MODE_DEFEND_TOWN ) { str = _("Defending Villager"); } else if( unit_mode == UNIT_MODE_REBEL ) { str = _("Rebel"); } else if( unit_res[unit_id]->unit_class == UNIT_CLASS_GOD ) { str = _("Greater Being"); } else { if( should_show_info() ) { switch( skill.skill_id ) { case SKILL_LEADING: str = _("Soldier"); break; case SKILL_CONSTRUCTION: str = _("Construction Worker"); break; case SKILL_MINING: str = _("Miner"); break; case SKILL_MFT: str = _("Worker"); break; case SKILL_RESEARCH: str = _("Scientist"); break; case SKILL_SPYING: str = _("Spy"); break; default: str = _("Peasant"); break; } } else //--- don't display too much info on enemy units ---// { if( skill.skill_id == SKILL_LEADING ) str = _("Soldier"); else if( is_civilian() ) str = _("Civilian"); } } } //---------------- paint the panel --------------// vga_util.d3_panel_up( INFO_X1, dispY1, INFO_X2, dispY1+44); vga_front.put_bitmap( x, dispY1+3, unit_res[unit_id]->get_large_icon_ptr(rank_id) ); //--------------------------------------// x += UNIT_LARGE_ICON_WIDTH; if( str ) { font_san.center_put( x, dispY1+4, INFO_X2-2, dispY1+21, str ); font_san.center_put( x, dispY1+22, INFO_X2-2, dispY1+40, unit_name(0) ); // 0-without title } else { font_san.center_put( x, dispY1, INFO_X2-2, dispY1+44, unit_name() ); // non-human units } }
//--------- Begin of function FirmMarket::put_market_info ---------// // void FirmMarket::disp_market_info(int dispY1, int refreshFlag) { if( !should_show_info() ) { font_snds.center_put_paragraph( INFO_X1+16, INFO_Y1+8, INFO_X2-10, INFO_Y1+42, text_firm.str_no_trade(), // "You're not permitted to trade with this market.", 1, 0, 0 ); return; } int i = 0; MarketGoods *marketGoods = market_goods_array; for( ; i<MAX_MARKET_GOODS; ++i, ++marketGoods ) { int x = (i%3) * 72 + 18 + INFO_X1; int y = (i/3) * 89 + 60 + INFO_Y1; if( marketGoods->raw_id ) { } else if( marketGoods->product_raw_id ) { } else { // empty continue; } // ------- disp sale ----------// if( !show_sale_debug_info ) { int yearSales = (int) marketGoods->sales_365days(); if( yearSales > 0 ) { int coinCount = yearSales / COIN_PER_SALES; coinCount = max( 1, coinCount ); coinCount = min( MAX_COIN, coinCount ); char bitmapName[] = "DOLLAR00"; bitmapName[6] = '0' + coinCount / 10; bitmapName[7] = '0' + coinCount % 10; vga.active_buf->put_bitmap_trans( x-4, y, image_gameif.read(bitmapName) ); } } else { font_snds.put( x, y+16, "Sales" ); font_snds.right_put( x+56, y+16, m.format((int)marketGoods->sales_365days()) ); } // ------- display quantity -----// if( !show_sale_debug_info ) { font_snds.center_put( x, y+20, x+56, y+36, m.format((int)marketGoods->stock_qty) ); } else { font_snds.put( x, y, "Stock" ); font_snds.right_put( x+56, y, m.format((int)marketGoods->stock_qty) ); } // -------- disp demand -------// if( show_sale_debug_info ) { font_snds.put( x, y+32, "Demand" ); font_snds.right_put( x+56, y+32, m.format((int)marketGoods->month_demand) ); } // ----- display "full" icon -------// if( marketGoods->stock_qty >= MAX_MARKET_STOCK-10 ) { char *fullBitmap = image_icon.read("FULLVILL"); vga.active_buf->put_bitmap(x+8, y+48+RAW_LARGE_ICON_HEIGHT-1- ((Bitmap *)fullBitmap)->get_height(), fullBitmap); } } }
void FirmOffensive::disp_magic_menu(int refreshFlag) { // ----- create cancel button -------// button_cancel.create( INFO_X1 +13, INFO_Y1 +235, 'A', "CANCEL" ); if( !should_show_info() ) return; vga.active_buf->put_bitmap(INFO_X1, INFO_Y1, image_gameif.read("BLDGBASE") ); if( !is_own() ) return; // display instruction // String str; switch( menu_mode ) { case FIRM_MAGIC_MENU_CAST: font_snds.center_put_paragraph( INFO_X1 +20 , INFO_Y1 +20, INFO_X2 -10, INFO_Y1 +60, text_firm.str_cast_magic_instruct(menu_mode_para), 2, 0, 0); break; case FIRM_MAGIC_MENU_UNIT: // str = "Select a Unit to Teleport"; font_snds.center_put_paragraph( INFO_X1 +20 , INFO_Y1 +20, INFO_X2 -10, INFO_Y1 +60, text_firm.str_cast_teleport_source(), 2, 0, 0); break; default: err_here(); } // display magic name // font_snds.center_put_paragraph( INFO_X1 +20 , INFO_Y1 +60, INFO_X2 -10, INFO_Y1 +80, // tech_res[magic_info_array[menu_mode_para-1].tech_id]->tech_des(), 2, 0, 0); // display cost if( menu_mode == FIRM_MAGIC_MENU_CAST ) { char mobileType; int pointedXLoc; int pointedYLoc; if( world.zoom_matrix->get_detect_location(mouse.cur_x, mouse.cur_y, &pointedXLoc, &pointedYLoc, &mobileType) ) { // int x2 = font_snds.put( INFO_X1+20, INFO_Y1+70, "Life Point Cost : "); // font_snds.put( x2, INFO_Y1+70, calc_live_point_cost( menu_mode_para, pointedXLoc, pointedYLoc, teleport_unit_recno) ); switch( menu_mode_para ) { case MAGIC_DESTROY_BUILDING: case MAGIC_FREEZE_UNIT: case MAGIC_DAMAGE_AREA: case MAGIC_GOD_POWER: font_snds.center_put_paragraph( INFO_X1 +20 , INFO_Y1 +80, INFO_X2 -10, INFO_Y1 +120, text_firm.str_cast_cost_cash(calc_cash_cost( menu_mode_para, pointedXLoc, pointedYLoc, 0)), 2, 0, 0); break; case MAGIC_TELEPORT: font_snds.center_put_paragraph( INFO_X1 +20 , INFO_Y1 +80, INFO_X2 -10, INFO_Y1 +120, text_firm.str_teleport_cost_cash(calc_cash_cost( menu_mode_para, pointedXLoc, pointedYLoc, teleport_unit_recno)), 2, 0, 0); break; } } } // display cancel button button_cancel.paint(); }
// ------- begin of function FirmMonsterTrain::detect_firm_info -------// // void FirmMonsterTrain::detect_firm_info() { int i; if( !should_show_info() ) return; // since both button_mobilize and button_spy_mobilize share the same place // if one button is enable, the other button detect() is not called at all to avoid incorrect help text if( button_mobilize.detect() && selected_trainee_id > 0 && selected_trainee_id <= trainee_count ) { // ####### begin Gilbert 26/1 #######// if( !trainee_array[selected_trainee_id-1].is_under_training() ) mobilize_trainee( selected_trainee_id, COMMAND_PLAYER ); else cancel_train_trainee( selected_trainee_id, COMMAND_PLAYER ); // ####### end Gilbert 26/1 #######// se_ctrl.immediate_sound("TURN_ON"); } else if( button_patrol.detect() && trainee_count > 0 ) { mobilize_trainee( -1, COMMAND_PLAYER ); // se_ctrl.immediate_sound("SORTIE"); if (trainee_count > 0) { MonsterTrainee *traineePtr = &trainee_array[0]; int unitId = traineePtr->unit_id; UnitInfo *unitInfo = unit_res[unitId]; se_res.sound( center_x, center_y, 1, 'S', unitInfo->sprite_id, "ACK"); } } else { for( i = 0; i < train_type_count; ++i ) { if( button_train[i].detect() ) { recruit_trainee( train_unit_id[i], COMMAND_PLAYER ); // se_ctrl.immediate_sound("TURN_ON"); se_ctrl.immediate_sound("ARM-ALRT"); break; } } } // ------- display rally points button ------// if( button_go_rally.detect() ) { world.go_loc( rally_dest_x, rally_dest_y, 0 ); se_ctrl.immediate_sound("TURN_ON"); } if( button_clear_rally.detect() ) { clear_rally_point(COMMAND_PLAYER); se_ctrl.immediate_sound("TURN_OFF"); } }
// ------- begin of function FirmMonsterTrain::disp_firm_info -------// // void FirmMonsterTrain::disp_firm_info(int dispY1, int refreshFlag ) { int i; if( refreshFlag == INFO_REPAINT ) { button_mobilize.create( INFO_X1+13, INFO_Y1+235, 'A', "MOBILIZE" ); button_mobilize.enable_flag = 0; if ((train_type_count == 1) && (train_unit_id[0] == UNIT_BEE)) button_patrol.create( INFO_X1+13+BUTTON_DISTANCE, INFO_Y1+235, 'A', "PATROL-B" ); else if ((train_type_count == 1) && (train_unit_id[0] == UNIT_TERMITE)) button_patrol.create( INFO_X1+13+BUTTON_DISTANCE, INFO_Y1+235, 'A', "PATROL-T" ); else button_patrol.create( INFO_X1+13+BUTTON_DISTANCE, INFO_Y1+235, 'A', "PATROL" ); button_patrol.enable_flag = 0; for( i = 0; i < train_type_count; ++i ) { if( i < 4 ) // 4 buttons at bottom line { if ((train_type_count == 1) && (train_unit_id[0] == UNIT_BEE)) button_train[i].create( INFO_X1+13+i*BUTTON_DISTANCE, INFO_Y1+281, 'A', "TRAIN-B" ); else if ((train_type_count == 1) && (train_unit_id[0] == UNIT_TERMITE)) button_train[i].create( INFO_X1+13+i*BUTTON_DISTANCE, INFO_Y1+281, 'A', "TRAIN-T" ); else button_train[i].create( INFO_X1+13+i*BUTTON_DISTANCE, INFO_Y1+281, 'A', "F_TRAIN" ); } else { if ((train_type_count == 1) && (train_unit_id[0] == UNIT_BEE)) button_train[i].create( INFO_X1+13+(7-i)*BUTTON_DISTANCE, INFO_Y1+235, 'A', "TRAIN-B" ); else if ((train_type_count == 1) && (train_unit_id[0] == UNIT_TERMITE)) button_train[i].create( INFO_X1+13+(7-i)*BUTTON_DISTANCE, INFO_Y1+235, 'A', "TRAIN-T" ); else button_train[i].create( INFO_X1+13+(7-i)*BUTTON_DISTANCE, INFO_Y1+235, 'A', "F_TRAIN" ); } button_train[i].enable_flag = 0; } // ###### begin Gilbert 11/3 ########// button_go_rally.create( INFO_X1+13+BUTTON_DISTANCE*2, INFO_Y1+235, 'A', "RALLY-GO" ); button_clear_rally.create( INFO_X1+13+BUTTON_DISTANCE*3, INFO_Y1+235, 'A', "RALLY-NO" ); // ###### end Gilbert 11/3 ########// } if( !should_show_info() ) return; // ------ display mobilize button -------// button_mobilize.enable_flag = 0; if( is_own() ) { if( selected_trainee_id > 0 && selected_trainee_id <= trainee_count ) { MonsterTrainee *traineePtr = trainee_array + selected_trainee_id - 1; button_mobilize.enable_flag = !traineePtr->is_under_training(); } button_mobilize.paint(); // ----- display mobilize all button -------// for( i = 0; i < trainee_count && trainee_array[i].is_under_training(); ++i ); button_patrol.enable_flag = i < trainee_count; button_patrol.paint(); // ----- display train button ----------// for( i = 0; i < train_type_count; ++i ) { button_train[i].enable_flag = can_recruit(train_unit_id[i]); button_train[i].paint(); } // ------- display rally points button ------// if( (button_go_rally.visible_flag = rally_enable_flag != 0) ) button_go_rally.paint(); if( (button_clear_rally.visible_flag = rally_enable_flag != 0) ) button_clear_rally.paint(); } }
//--------- Begin of function FirmBase::detect_info ---------// // void FirmBase::detect_info() { if( detect_basic_info() ) return; if( !should_show_info() ) return; //------ detect the overseer button -----// int rc = mouse.any_click(INFO_X1+6, INFO_Y1+58, INFO_X1+5+UNIT_LARGE_ICON_WIDTH, INFO_Y1+57+UNIT_LARGE_ICON_HEIGHT, LEFT_BUTTON) ? 1 : mouse.any_click(INFO_X1+6, INFO_Y1+58, INFO_X1+5+UNIT_LARGE_ICON_WIDTH, INFO_Y1+57+UNIT_LARGE_ICON_HEIGHT, RIGHT_BUTTON) ? 2 : 0; if( rc==1 ) // display this overseer's info { selected_worker_id = 0; disp_base_info(INFO_Y1+54, INFO_UPDATE); disp_worker_list(INFO_Y1+104, INFO_UPDATE); disp_worker_info(INFO_Y1+168, INFO_UPDATE); } //--------- detect soldier info ---------// if( detect_worker_list() ) { disp_base_info(INFO_Y1+54, INFO_UPDATE); disp_worker_list(INFO_Y1+104, INFO_UPDATE); disp_worker_info(INFO_Y1+168, INFO_UPDATE); } //---------- detect spy button ----------// detect_spy_button(); if( !own_firm() ) return; //------ detect the overseer button -----// if( rc==2 ) { if(remote.is_enable()) { // packet structure : <firm recno> short *shortPtr=(short *)remote.new_send_queue_msg(MSG_FIRM_MOBL_OVERSEER, sizeof(short)); shortPtr[0] = firm_recno; } else { assign_overseer(0); // the overseer quits the camp } } //----------- detect invoke -----------// if( button_invoke.detect() ) { if(remote.is_enable()) { // ##### begin Gilbert 14/10 #######// // packet structure : <firm recno> short *shortPtr=(short *)remote.new_send_queue_msg(MSG_F_BASE_INVOKE_GOD, sizeof(short)); shortPtr[0] = firm_recno; // ##### end Gilbert 14/10 #######// } else { invoke_god(); } } //----------- detect reward -----------// if( button_reward.detect() ) { reward(selected_worker_id, COMMAND_PLAYER); // ##### begin Gilbert 26/9 ########// se_ctrl.immediate_sound("TURN_ON"); // ##### end Gilbert 26/9 ########// } }
void FirmOffensive2::put_info(int refreshFlag) { if( !should_show_info() ) return; vga.active_buf->put_bitmap( INFO_X1, INFO_Y1, image_gameif.read("MISSBASE") ); int hitPoints; String str; int offsetX = 0; int offsetY = 0; if( hit_points > (float)0 && hit_points < (float)1 ) hitPoints = 1; // display 1 for value between 0 and 1 else hitPoints = (int) hit_points; if ( max_hit_points() ) { offsetX = -35; offsetY = -14; short* hitPointBitmap =NULL; int ratio = hitPoints *40 / (int)max_hit_points(); int size = hitPoints *76 / (int)max_hit_points(); //106 x 35 --- 15 to 90 ie. 0 to 40 hitPointBitmap = (short *)mem_add( BitmapW::size(15 +size, 35) ); if (ratio <11) vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_B2")); else if (ratio <40) vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_B3")); else vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_B4")); vga.active_buf->read_bitmapW( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, INFO_X1 +94 +20 +size +offsetX, INFO_Y1 +80 +offsetY, hitPointBitmap ); vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_B1")); vga.active_buf->put_bitmapW( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, hitPointBitmap ); mem_del( hitPointBitmap ); font_whbl.center_put( INFO_X1 +43, INFO_Y1 +45, INFO_X1 +65, INFO_Y1 +57, m.format((int)hitPoints,4)); font_whbl.center_put( INFO_X1 +169, INFO_Y1 +45, INFO_X1 +191, INFO_Y1 +57, m.format((int)max_hit_points(),4) ); } // font_whbl.center_put( INFO_X1 +12, INFO_Y1 +9, INFO_X2, INFO_Y1 +21, "Offensive Building 3", 0, 1 ); font_whbl.center_put( INFO_X1 +12, INFO_Y1 +9, INFO_X2, INFO_Y1 +21, firm_name(), 0, 1 ); FirmBuild* firmBuild = firm_res.get_build(firm_build_id); short *colorRemapTable = firmBuild->get_color_remap_table(nation_recno, firm_array.selected_recno == firm_recno); colorRemapTable = firm_res.calc_color_remap_table( colorRemapTable, 1.0f ); FirmBitmap* firmBitmap = firm_res.get_bitmap(firmBuild->first_bitmap(1)); if( firmBitmap ) { Bitmap* bitmapPtr = (Bitmap *) firmBuild->res_bitmap.read_imported(firmBitmap->bitmap_ptr); int x1; int y1; int srcX2; int srcY2; if (config.building_size == 1) { x1 = INFO_X1 +130; y1 = INFO_Y1 +140; } else { x1 = INFO_X1 +120; y1 = INFO_Y1 +142; } x1 += firmBitmap->offset_x; y1 += firmBitmap->offset_y; int x2 = x1 + bitmapPtr->get_width() -1; int y2 = y1 + bitmapPtr->get_height() -1; int srcX1 = max(x1, INFO_X1+15)-x1; int srcY1 = 0; if (config.building_size == 1) { srcX2 = min(x2, INFO_X2)-x1; srcY2 = min(y2, INFO_Y1+227)-y1; } else { srcX2 = min(x2, INFO_X2)-x1; srcY2 = min(y2, INFO_Y2)-y1; } vga.active_buf->put_bitmap_area_trans_remap_decompress(x1, y1, (char *) bitmapPtr, srcX1, srcY1, srcX2, srcY2, colorRemapTable); } /* if (config.building_size == 1) return; firmBitmap = firm_res.get_bitmap(firmBuild->first_bitmap(firm_cur_frame[0])); if( firmBitmap && firmBitmap->display_layer == 1 ) { Bitmap* bitmapPtr = (Bitmap *) firmBuild->res_bitmap.read_imported(firmBitmap->bitmap_ptr); int x1 = INFO_X1 +120 +firmBitmap->offset_x; int y1 = INFO_Y1 +142 +firmBitmap->offset_y; int x2 = x1 + bitmapPtr->get_width() -1; int y2 = y1 + bitmapPtr->get_height() -1; int srcX1 = max(x1, INFO_X1+15)-x1; int srcY1 = 0; int srcX2 = min(x2, INFO_X2)-x1; int srcY2 = min(y2, INFO_Y2)-y1; vga.active_buf->put_bitmap_area_trans_remap_decompress(x1, y1, (char *) bitmapPtr, srcX1, srcY1, srcX2, srcY2, colorRemapTable); // vga_back.put_bitmap_trans_remap_decompress(INFO_X1 +113 +firmBitmap->offset_x, // INFO_Y1 +158 +firmBitmap->offset_y, bitmapPtr, colorRemapTable); }*/ }