本文整理汇总了C++中HousePtr::getHealthLevel方法的典型用法代码示例。如果您正苦于以下问题:C++ HousePtr::getHealthLevel方法的具体用法?C++ HousePtr::getHealthLevel怎么用?C++ HousePtr::getHealthLevel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HousePtr
的用法示例。
在下文中一共展示了HousePtr::getHealthLevel方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onMidTile
void WalkerPrefect::onMidTile()
{
ReachedBuildings reachedBuildings;
TilePos firePos;
bool haveBurningRuinsNear = _looks4Fire( reachedBuildings, firePos );
bool isDestination = _getPathway().isDestination();
switch( _d->action )
{
case Impl::doNothing:
break;
case Impl::patrol:
{
if( haveBurningRuinsNear )
{
//tell our prefecture that need send prefect with water to fight with fire
//on next deliverService
//found fire, no water, go prefecture
getBase().as<Prefecture>()->fireDetect( firePos );
_back2Prefecture();
Walker::onNewDirection();
}
else
{
foreach( BuildingPtr building, reachedBuildings )
{
building->applyService( ServiceWalkerPtr( this ) );
HousePtr house = building.as<House>();
if( house.isValid() && house->getHealthLevel() < 1 )
{
house->deleteLater();
GameEventMgr::append( DisasterEvent::create( house->getTilePos(), DisasterEvent::plague ) );
}
}
}
if( isDestination )
{
_back2Prefecture();
}
Walker::onMidTile();
}
break;
case Impl::back2Prefecture:
{
if( haveBurningRuinsNear )
{
//tell our prefecture that need send prefect with water to fight with fire
//on next deliverService
getBase().as<Prefecture>()->fireDetect( firePos );
}
if( isDestination )
{
deleteLater();
_d->action = Impl::doNothing;
}
Walker::onMidTile();
}
break;
case Impl::gotoFire:
{
if( _getPathway().getDestination().getIJ().distanceFrom( getIJ() ) < 1.5f )
{
LandOverlayPtr overlay = _getPathway().getDestination().getOverlay();
if( overlay.isValid() && overlay->getType() == B_BURNING_RUINS )
{
_d->action = Impl::fightFire;
_setGraphic( WG_PREFECT_FIGHTS_FIRE );
Walker::onNewDirection();
isDestination = false;
}
}
if( isDestination )
{
if( !haveBurningRuinsNear || _d->water == 0 )
{
_back2Prefecture();
}
else
{
_setGraphic( WG_PREFECT_DRAG_WATER );
_d->action = Impl::gotoFire;
_checkPath2NearestFire( reachedBuildings );
Walker::onNewDirection();
}
}
Walker::onMidTile();
//.........这里部分代码省略.........
示例2: drawTile
void LayerHealth::drawTile(GfxEngine& engine, Tile& tile, Point offset)
{
Point screenPos = tile.getXY() + offset;
tile.setWasDrawn();
bool needDrawAnimations = false;
if( tile.getOverlay().isNull() )
{
//draw background
engine.drawPicture( tile.getPicture(), screenPos );
}
else
{
TileOverlayPtr overlay = tile.getOverlay();
int healthLevel = -1;
switch( overlay->getType() )
{
//fire buildings and roads
case construction::road:
case construction::B_PLAZA:
needDrawAnimations = true;
engine.drawPicture( tile.getPicture(), screenPos );
break;
case building::B_DOCTOR:
case building::B_HOSPITAL:
case building::B_BARBER:
case building::B_BATHS:
needDrawAnimations = _flags.count( overlay->getType() );
if( needDrawAnimations )
{
engine.drawPicture( tile.getPicture(), screenPos );
}
else
{
CityHelper helper( _city );
drawArea( engine, helper.getArea( overlay ), offset, ResourceGroup::foodOverlay, OverlayPic::base );
}
break;
//houses
case building::house:
{
HousePtr house = overlay.as< House >();
if( _flags.count( building::B_DOCTOR ) ) { healthLevel = house->getHealthLevel(); }
else if( _flags.count( building::B_HOSPITAL ) ) { healthLevel = house->getServiceValue( Service::hospital ); }
else if( _flags.count( building::B_BARBER ) ) { healthLevel = house->getServiceValue( Service::barber ); }
else if( _flags.count( building::B_BATHS ) ) { healthLevel = house->getServiceValue( Service::baths ); }
needDrawAnimations = (house->getSpec().getLevel() == 1) && (house->getHabitants().size() == 0);
CityHelper helper( _city );
drawArea( engine, helper.getArea( overlay ), offset, ResourceGroup::foodOverlay, OverlayPic::inHouseBase );
}
break;
//other buildings
default:
{
CityHelper helper( _city );
drawArea( engine, helper.getArea( overlay ), offset, ResourceGroup::foodOverlay, OverlayPic::base );
}
break;
}
if( needDrawAnimations )
{
_renderer->registerTileForRendering( tile );
}
else if( healthLevel > 0 )
{
drawColumn( engine, screenPos, 9, healthLevel );
}
}
}