本文整理汇总了C++中Firm::cast_to_FirmMine方法的典型用法代码示例。如果您正苦于以下问题:C++ Firm::cast_to_FirmMine方法的具体用法?C++ Firm::cast_to_FirmMine怎么用?C++ Firm::cast_to_FirmMine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Firm
的用法示例。
在下文中一共展示了Firm::cast_to_FirmMine方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void CampaignEastWest::plot_d1_create_game()
{
// reduce cash
(~nation_array)->cash = (~nation_array)->cash / 4;
// reduce mineral if the mine is owned by the player
for( int i = 1; i <= site_array.size(); ++i )
{
if( site_array.is_deleted(i) )
continue;
Site *sitePtr = site_array[i];
if( sitePtr->site_type == SITE_RAW && sitePtr->has_mine )
{
Location *locPtr = world.get_loc(sitePtr->map_x_loc, sitePtr->map_y_loc);
err_when( !locPtr->is_firm() );
Firm *firmPtr = firm_array[locPtr->firm_recno()];
if( firmPtr->is_own() )
{
sitePtr->reserve_qty = sitePtr->reserve_qty / 10;
if( firmPtr->cast_to_FirmMine() )
{
firmPtr->cast_to_FirmMine()->reserve_qty = (float)sitePtr->reserve_qty;
}
else if( firmPtr->cast_to_FirmMonsterAlchemy() )
{
firmPtr->cast_to_FirmMonsterAlchemy()->reserve_qty = (float)sitePtr->reserve_qty;
}
}
}
}
}
示例2: disp_stop
//--------- Begin of function UnitCaravan::disp_stop ---------//
//
void UnitCaravan::disp_stop(int dispY1, int refreshFlag)
{
int y = INFO_Y1 + 94;
int i, j;
for( i = 0; i < MAX_STOP_FOR_CARAVAN; ++i, y += 70 )
{
TradeStop *tradeStop = stop_array+i;
button_go_stop[i].create( INFO_X1+17, y+2, INFO_X1+167, y+35, i_button_go_stop,
ButtonCustomPara( this, tradeStop->firm_recno ) );
button_go_stop[i].set_help_code( "CGOSTOP" );
button_set_stop[i].create( INFO_X1+169, y+2, INFO_X1+215, y+20, i_button_set_stop,
ButtonCustomPara( NULL, 0 ) );
button_set_stop[i].set_help_code( "CSETSTOP" );
button_cancel_stop[i].create( INFO_X1+169, y+21, INFO_X1+215, y+39, i_button_cancel_stop,
ButtonCustomPara( NULL, 0 ) );
button_cancel_stop[i].set_help_code( "CDELSTOP" );
button_reset_stop[i].create( INFO_X1+169, y+42, INFO_X1+215, y+60, i_button_reset_stop,
ButtonCustomPara( NULL, 0 ) );
button_reset_stop[i].set_help_code( "CCLRSEL" );
for( j = 0; j < MAX_GOODS_SELECT_BUTTON; ++j )
button_select_array[i][j].create( INFO_X1+17+carv_gdd_x[j], y+34, INFO_X1+17+carv_gdd_x[j+1]-1, y+61,
i_disp_caravan_select_button, ButtonCustomPara( NULL, j ), 0 );
button_go_stop[i].custom_para = ButtonCustomPara( this, tradeStop->firm_recno );
button_go_stop[i].paint();
button_set_stop[i].paint();
button_cancel_stop[i].paint();
button_reset_stop[i].paint();
Firm *firmPtr = NULL;
if( !firm_array.is_deleted(tradeStop->firm_recno))
firmPtr = firm_array[tradeStop->firm_recno];
for( j = 0; j < MAX_GOODS_SELECT_BUTTON; ++j )
{
// display quantity on the firm
int rawId = j+FIRST_GOODS_SELECT_BUTTON-PICK_UP_RAW_FIRST+1;
if( rawId < 1 || rawId > MAX_RAW )
rawId = 0;
int productId = j+FIRST_GOODS_SELECT_BUTTON-PICK_UP_PRODUCT_FIRST+1;
if( productId < 1 || productId > MAX_PRODUCT )
productId = 0;
int stock = -1;
if( firmPtr )
{
if( firmPtr->cast_to_FirmMarket() )
{
MarketGoods *marketGoods;
if( rawId )
{
marketGoods = firmPtr->cast_to_FirmMarket()->market_raw_array(rawId);
err_when( marketGoods && marketGoods->raw_id != rawId );
}
else if( productId )
{
marketGoods = firmPtr->cast_to_FirmMarket()->market_product_array(productId);
err_when( marketGoods && marketGoods->product_raw_id != productId );
}
else
{
err_here();
marketGoods = NULL;
}
if( marketGoods )
stock = (int) marketGoods->stock_qty;
}
else if( firmPtr->cast_to_FirmMine() )
{
if( rawId && firmPtr->cast_to_FirmMine()->raw_id == rawId )
{
stock = (int) firmPtr->cast_to_FirmMine()->stock_qty;
}
}
else if( firmPtr->cast_to_FirmFactory() )
{
if( productId && firmPtr->cast_to_FirmFactory()->product_raw_id == productId )
{
stock = (int) firmPtr->cast_to_FirmFactory()->stock_qty;
}
//else if( rawId && firmPtr->cast_to_FirmFactory()->product_raw_id == rawId )
//{
// stock = (int) firmPtr->cast_to_FirmFactory()->raw_stock_qty;
//}
}
}
if( stock >= 0 )
//.........这里部分代码省略.........
示例3: draw_dot
//.........这里部分代码省略.........
{
// draw only caravan in trade mode
if( world.map_matrix->map_mode == MAP_MODE_TRADE && unitPtr->unit_id != UNIT_CARAVAN )
continue;
if( filterUnitClassId && unit_res[unitPtr->unit_id]->unit_class != filterUnitClassId )
continue;
// filter selected nation
if( world.map_matrix->filter_nation_flag && world.map_matrix->filter_nation_recno != unitPtr->nation_recno )
continue;
}
//---------------------------------//
if( world.map_matrix->map_mode != MAP_MODE_TRADE )
{
if( unitPtr->cur_action == SPRITE_ATTACK )
nationColor = excitedColorArray[unitPtr->nation_recno];
else if( unitPtr->selected_flag )
nationColor = slowExcitedColorArray[unitPtr->nation_recno];
else
nationColor = nationColorArray[unitPtr->nation_recno];
}
else
{
// if selected firm is mine, factory or market,
// caravan linked to it flashes
err_when( MAX_STOP_FOR_CARAVAN != 2 ); // current code check only two stops
Firm *firmPtr;
if( firm_array.selected_recno
&& (firmPtr = firm_array[firm_array.selected_recno])
&& (firmPtr->cast_to_FirmMine() || firmPtr->cast_to_FirmFactory() || firmPtr->cast_to_FirmMarket())
&& ( ((UnitCaravan *)unitPtr)->stop_array[0].firm_recno == firm_array.selected_recno
|| ((UnitCaravan *)unitPtr)->stop_array[1].firm_recno == firm_array.selected_recno) )
{
nationColor = slowExcitedColorArray[unitPtr->nation_recno];
}
else
{
nationColor = nationColorArray[unitPtr->nation_recno];
}
}
mapX = world.map_matrix->calc_loc_pos_x(unitPtr->cur_x_loc(), unitPtr->cur_y_loc()) + MAP_X1;
mapY = world.map_matrix->calc_loc_pos_y(unitPtr->cur_x_loc(), unitPtr->cur_y_loc()) + MAP_Y1;
dotSize = unitPtr->mobile_type == UNIT_LAND ? 2 : 3;
}
{ // minimize register variable at one time
register short *writePtr = vga_back.buf_ptr(mapX, mapY);
if( dotSize == 2 )
{
if( writePtr[0] != unexploredColor )
writePtr[0] = nationColor;
if( writePtr[1] != unexploredColor )
writePtr[1] = nationColor;
if( writePtr[vgaBufPitch] != unexploredColor )
writePtr[vgaBufPitch] = nationColor;
if( writePtr[vgaBufPitch+1] != unexploredColor )
writePtr[vgaBufPitch+1] = nationColor;
示例4: seek_mine
//--------- Begin of function Nation::seek_mine --------//
//
// <short&> xLoc, yLoc - reference vars for returning the building
// location.
// <short&> refXLoc, refYLoc - reference vars for returning the exact
// location of the raw material.
//
// return: <int> >0 the raw id. of the site.
// ==0 no suitable site found.
//
int Nation::seek_mine(short& xLoc, short& yLoc, short& refXLoc, short& refYLoc)
{
err_when( site_array.untapped_raw_count < 0 );
if( site_array.untapped_raw_count==0 )
return 0;
int raw_kind_mined[MAX_RAW], i;
Firm *firmPtr;
FirmMine *minePtr;
//-----------------------------------------------------------------//
// count each kind of raw material that is being mined
//-----------------------------------------------------------------//
memset(raw_kind_mined, 0, sizeof(int)*MAX_RAW);
for(i=0; i<ai_mine_count; i++)
{
firmPtr = firm_array[ai_mine_array[i]];
minePtr = firmPtr->cast_to_FirmMine();
if( minePtr->raw_id>=1 && minePtr->raw_id<=MAX_RAW )
raw_kind_mined[minePtr->raw_id-1]++;
}
//-------------------- define parameters ----------------------//
FirmInfo *firmInfo = firm_res[FIRM_MINE];
Location *locPtr, *siteLocPtr;
Site *sitePtr;
Town *townPtr;
int nearSite[MAX_RAW], minDist[MAX_RAW], townWithMine[MAX_RAW];
short buildXLoc[MAX_RAW], buildYLoc[MAX_RAW];
short dist;
int canBuild, connected, allHave;
int j, k, siteId;
int effectiveDis = world.effective_distance(FIRM_MINE,0);
memset(townWithMine, 0, sizeof(int)*MAX_RAW);
memset(nearSite, 0, sizeof(int)*MAX_RAW);
memset(buildXLoc, 0, sizeof(short)*MAX_RAW);
memset(buildYLoc, 0, sizeof(short)*MAX_RAW);
for(i=0; i<MAX_RAW; i++)
minDist[i] = 0x7FFFFF;
//--------------------------------------------//
// scan for the site array
//--------------------------------------------//
for(i=site_array.size(); i>0; i--)
{
if(site_array.is_deleted(i))
continue;
sitePtr = site_array[i];
if( sitePtr->site_type != SITE_RAW )
continue;
siteLocPtr = world.get_loc(sitePtr->map_x_loc, sitePtr->map_y_loc);
if(!siteLocPtr->can_build_firm())
continue;
siteId = sitePtr->object_id - 1;
err_when(siteId<0 || siteId>MAX_RAW);
if(townWithMine[siteId])
continue; // a site connected to town is found before
//--------------------------------------------//
// continue if action to this site already exist
//--------------------------------------------//
if(is_action_exist(-1, -1, sitePtr->map_x_loc, sitePtr->map_y_loc, ACTION_AI_BUILD_FIRM, FIRM_MINE))
continue;
for(j=0; j<ai_town_count; j++)
{
townPtr = town_array[ai_town_array[j]];
locPtr = world.get_loc(townPtr->loc_x1, townPtr->loc_y1);
//-********* codes to move to other territory ***********-//
if(siteLocPtr->region_id!=locPtr->region_id)
continue; // not on the same territory
dist = m.points_distance(sitePtr->map_x_loc, sitePtr->map_y_loc, townPtr->center_x, townPtr->center_y);
//-------------------------------------------------------------------------//
//.........这里部分代码省略.........