コード例 #1
0
ファイル: of_minei.cpp プロジェクト: 112212/7k2
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);
	*/

}
コード例 #2
0
ファイル: of_wari.cpp プロジェクト: 112212/7k2
//--------- 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 ######//
}
コード例 #3
0
ファイル: OFIRMIF.cpp プロジェクト: LibreGames/7kaa
//--------- 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;
}
コード例 #4
0
ファイル: of_basei.cpp プロジェクト: 112212/7k2
//--------- 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);
}
コード例 #5
0
ファイル: of_marki.cpp プロジェクト: mecirt/7k2
//----------- 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);
	}
}
コード例 #6
0
ファイル: OF_BASE.cpp プロジェクト: the3dfxdude/7kaa
//--------- 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);
}
コード例 #7
0
ファイル: of_incui.cpp プロジェクト: 112212/7k2
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);
}
コード例 #8
0
ファイル: of_worki.cpp プロジェクト: 112212/7k2
void FirmWork::detect_info()
{
	detect_firm_info();
	if( !should_show_info() )
		return;
	
	if (is_own())
	{
		detect_worker_list();
		detect_worker_info();
	}
}
コード例 #9
0
ファイル: OF_CAMP.cpp プロジェクト: spippolatore/7kaa
//--------- 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
}
コード例 #10
0
ファイル: of_basei.cpp プロジェクト: 112212/7k2
//--------- 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 );
}
コード例 #11
0
ファイル: of_offi.cpp プロジェクト: mecirt/7k2
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();
}
コード例 #12
0
ファイル: OF_MINE.cpp プロジェクト: Stummi/7kaa
//--------- 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);
}
コード例 #13
0
ファイル: of_worki.cpp プロジェクト: 112212/7k2
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);
}
コード例 #14
0
ファイル: of_mfori.cpp プロジェクト: 112212/7k2
// ----- 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);
	}
}
コード例 #15
0
ファイル: OF_INN.cpp プロジェクト: MicroVirus/7kaa
//--------- 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);
}
コード例 #16
0
ファイル: OF_FACT.cpp プロジェクト: MicroVirus/7kaa
//------- 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) );
	}
}
コード例 #17
0
ファイル: of_mfori.cpp プロジェクト: 112212/7k2
// ----- 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();
	}
}
コード例 #18
0
ファイル: OF_HARB.cpp プロジェクト: Stummi/7kaa
//------- 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;
}
コード例 #19
0
ファイル: OF_RESE.cpp プロジェクト: spippolatore/7kaa
//--------- 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 );
}
コード例 #20
0
ファイル: of_mtrni.cpp プロジェクト: 112212/7k2
// ------- 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;
	}
}
コード例 #21
0
ファイル: OUNITIF.cpp プロジェクト: AMDmi3/7kaa
//--------- 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
}
コード例 #22
0
ファイル: OF_FACT.cpp プロジェクト: MicroVirus/7kaa
//--------- 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);
}
コード例 #23
0
ファイル: of_wari.cpp プロジェクト: 112212/7k2
//--------- 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;
//	}
}
コード例 #24
0
ファイル: OUNITIF.cpp プロジェクト: AMDmi3/7kaa
//--------- 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
	}
}
コード例 #25
0
ファイル: of_marki.cpp プロジェクト: mecirt/7k2
//--------- 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);
		}
	}
}
コード例 #26
0
ファイル: of_offi.cpp プロジェクト: mecirt/7k2
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();
}
コード例 #27
0
ファイル: of_mtrni.cpp プロジェクト: 112212/7k2
// ------- 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");
	}
}
コード例 #28
0
ファイル: of_mtrni.cpp プロジェクト: 112212/7k2
// ------- 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();
	}
}
コード例 #29
0
ファイル: OF_BASE.cpp プロジェクト: LibreGames/7kaa
//--------- 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 ########//
	}
}
コード例 #30
0
ファイル: of_off2i.cpp プロジェクト: mecirt/7k2
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);
    	}*/
}