本文整理汇总了C++中Sprite::GetID方法的典型用法代码示例。如果您正苦于以下问题:C++ Sprite::GetID方法的具体用法?C++ Sprite::GetID怎么用?C++ Sprite::GetID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sprite
的用法示例。
在下文中一共展示了Sprite::GetID方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Draw
/**\brief Draws the radar.
*/
void Radar::Draw( Camera* camera, SpriteManager* sprites ) {
short int radar_mid_x = RADAR_MIDDLE_X + Video::GetWidth() - 129;
short int radar_mid_y = RADAR_MIDDLE_Y + 5;
int radarSize;
Coordinate focus = camera->GetFocusCoordinate();
/*if(largeMode) {
if( visibility <= QUADRANTSIZE )
{
Map* map = (Map*)UI::Search( "/Map/" );
assert(map); // large mode should only be on when there is a map.
if(map) {
map->SetCenter( focus );
map->SetScale( 300.0 / (2*visibility) );
}
}
return;
}*/
list<Sprite*> *spriteList = sprites->GetSpritesNear(camera->GetFocusCoordinate(), (float)visibility);
for( list<Sprite*>::const_iterator iter = spriteList->begin(); iter != spriteList->end(); iter++)
{
Coordinate blip;
Sprite *sprite = *iter;
// Calculate the blip coordinate for this sprite
Coordinate wpos = sprite->GetWorldPosition();
WorldToBlip( focus, wpos, blip );
// Use the OpenGL Crop Rectangle to ensure that the blip is on the radar
/* Convert to screen coords */
blip.SetX( blip.GetX() + radar_mid_x );
blip.SetY( blip.GetY() + radar_mid_y );
radarSize = int((sprite->GetRadarSize() / float(visibility)) * (RADAR_HEIGHT / 4.0));
if( radarSize >= 1 ) {
if(sprite->GetID() == Hud::GetTarget() && Timer::GetTicks() % 1000 < 100)
Video::DrawCircle( blip, radarSize, 2, WHITE );
else
Video::DrawCircle( blip, radarSize, 1, sprite->GetRadarColor() );
} else {
if(sprite->GetID() == Hud::GetTarget() && Timer::GetTicks() % 1000 < 100)
Video::DrawCircle( blip, 1, 2, WHITE );
else
Video::DrawPoint( blip, sprite->GetRadarColor() );
}
}
delete spriteList;
}
示例2: Update
/**\brief Update the Projectile
*
* Projectiles do all the normal Sprite things like moving.
* Projectiles check for collisions with nearby Ships, and if they collide,
* they deal damage to that ship. Note that since each projectile knows which ship fired it and will never collide with them.
*
* Projectiles have a life time limit (in milli-seconds). Each tick they need
* to check if they've lived to long and need to disappear.
*
* Projectiles have the ability to track down a specific target. This only
* means that they will turn slightly to head towards their target.
*/
void Projectile::Update( void ) {
Sprite::Update(); // update momentum and other generic sprite attributes
SpriteManager *sprites = SpriteManager::Instance();
// Check for projectile collisions
Sprite* impact = sprites->GetNearestSprite( (Sprite*)this, 100,DRAW_ORDER_SHIP|DRAW_ORDER_PLAYER );
if( (impact != NULL) && (impact->GetID() != ownerID) && ((this->GetWorldPosition() - impact->GetWorldPosition()).GetMagnitude() < impact->GetRadarSize() )) {
((Ship*)impact)->Damage( (weapon->GetPayload())*damageBoost );
sprites->Delete( (Sprite*)this );
// Create a fire burst where this projectile hit the ship's shields.
// TODO: This shows how much we need to improve our collision detection.
Effect* hit = new Effect(this->GetWorldPosition(), "Resources/Animations/shield.ani", 0);
hit->SetAngle( -this->GetAngle() );
hit->SetMomentum( impact->GetMomentum() );
sprites->Add( hit );
}
// Expire the projectile after a time period
if (( Timer::GetTicks() > secondsOfLife + start )) {
sprites->Delete( (Sprite*)this );
}
// Track the target
Sprite* target = sprites->GetSpriteByID( targetID );
float tracking = weapon->GetTracking();
if( target != NULL && tracking > 0.00000001f ) {
float angleTowards = normalizeAngle( ( target->GetWorldPosition() - this->GetWorldPosition() ).GetAngle() - GetAngle() );
SetMomentum( GetMomentum().RotateBy( angleTowards*tracking ) );
SetAngle( GetMomentum().GetAngle() );
}
}
示例3: Draw
/**\brief Draws the radar.
*/
void Radar::Draw( void ) {
short int radar_mid_x = RADAR_MIDDLE_X + Video::GetWidth() - 129;
short int radar_mid_y = RADAR_MIDDLE_Y + 5;
int radarSize;
list<Sprite*> *spriteList = SpriteManager::Instance()->GetSpritesNear(Camera::Instance()->GetFocusCoordinate(), (float)visibility);
for( list<Sprite*>::const_iterator iter = spriteList->begin(); iter != spriteList->end(); iter++)
{
Coordinate blip;
Sprite *sprite = *iter;
//if( sprite->GetDrawOrder() == DRAW_ORDER_PLAYER ) continue;
// Calculate the blip coordinate for this sprite
Coordinate wpos = sprite->GetWorldPosition();
WorldToBlip( wpos, blip );
// Use the OpenGL Crop Rectangle to ensure that the blip is on the radar
/* Convert to screen coords */
blip.SetX( blip.GetX() + radar_mid_x );
blip.SetY( blip.GetY() + radar_mid_y );
radarSize = int((sprite->GetRadarSize() / float(visibility)) * (RADAR_HEIGHT/4.0));
if( radarSize >= 1 ) {
if(sprite->GetID() == Hud::GetTarget() && Timer::GetTicks() % 1000 < 100)
Video::DrawCircle( blip, radarSize, 2, WHITE );
else
Video::DrawCircle( blip, radarSize, 1, sprite->GetRadarColor() );
} else {
if(sprite->GetID() == Hud::GetTarget() && Timer::GetTicks() % 1000 < 100)
Video::DrawCircle( blip, 1, 2, WHITE );
else
Video::DrawPoint( blip, sprite->GetRadarColor() );
}
}
delete spriteList;
}
示例4: SetMessageFromInput
void GameWorld::SetMessageFromInput(UINT msg, int x, int y)
{
char szMessage[MsgLen]={0};
char szDebugMessage[DebugMsgLen]={0};
sprintf((char *)szDebugMessage,"click X:%d Y:%d",x,y);
SetWindowText(hwnd_window,szDebugMessage);
x += ViewportPos_x;
y += ViewportPos_y;
switch (msg)
{
case WM_LBUTTONDOWN:
if (spMainRole->AnimationBegin() || spMainRole->GetAction() == STAND)
{
FixToGrid(spMainRole, x, y);
Sprite* pTarget = haveSprite(x, y);
//typeid, id, statu, action, targetTypeID, targetid, x, y
if (pTarget)
{
sprintf(szMessage, "%d,%d,%d,%d,%d,%d,%d,%d",
spMainRole->GetTypeID() ,spMainRole->GetID(), spMainRole->GetStatu(), ATTACK,
pTarget->GetTypeID(), pTarget->GetID(), x, y);
}
else
{
sprintf(szMessage, "%d,%d,%d,%d,%d,%d,%d,%d",
spMainRole->GetTypeID(), spMainRole->GetID(), spMainRole->GetStatu(), WALK, 0, 0, x, y);
}
}
break;
default:
break;
}
SendMsg(szMessage);
}