本文整理汇总了C++中Shot::SetFuse方法的典型用法代码示例。如果您正苦于以下问题:C++ Shot::SetFuse方法的具体用法?C++ Shot::SetFuse怎么用?C++ Shot::SetFuse使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Shot
的用法示例。
在下文中一共展示了Shot::SetFuse方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
Shot*
Weapon::FireBarrel(int n)
{
const Point& base_vel = ship->Velocity();
Shot* shot = 0;
SimRegion* region = ship->GetRegion();
if (!region || n < 0 || n >= nbarrels || Game::Paused())
return 0;
firing = 1;
Aim();
Camera rail_cam;
rail_cam.Clone(aim_cam);
Point shotpos = muzzle_pts[n];
if (design->length > 0)
shotpos = shotpos + aim_cam.vpn() * design->length;
// guns may be slewed towards target:
if (design->primary) {
shot = CreateShot(shotpos, aim_cam, design, ship);
if (shot) {
shot->SetVelocity(shot->Velocity() + base_vel);
}
}
// missiles always launch in rail direction:
else {
// unless they are on a mobile launcher
if (turret && design->self_aiming) {
shot = CreateShot(shotpos, aim_cam, design, ship);
shot->SetVelocity(base_vel);
}
else {
shot = CreateShot(shotpos, rail_cam, design, ship);
if (shot /* && !turret */) {
Matrix orient = ship->Cam().Orientation();
if (aim_azimuth != 0) orient.Yaw(aim_azimuth);
if (aim_elevation != 0) orient.Pitch(aim_elevation);
Point eject = design->eject * orient;
shot->SetVelocity(base_vel + eject);
}
}
if (shot && visible_stores[n]) {
GRAPHIC_DESTROY(visible_stores[n]);
}
}
if (shot) {
if (ammo > 0)
ammo--;
if (guided && target)
shot->SeekTarget(target, subtarget);
float shot_load;
if (energy > design->charge)
shot_load = design->charge;
else
shot_load = energy;
energy -= shot_load;
shot->SetCharge(shot_load * availability);
if (target && design->flak && !design->guided) {
double speed = shot->Velocity().length();
double range = (target->Location() - shot->Location()).length();
if (range > design->min_range && range < design->max_range) {
shot->SetFuse(range / speed);
}
}
region->InsertObject(shot);
if (beams) {
beams[n] = shot;
Observe(beams[n]);
// aim beam at target:
SetBeamPoints(true);
}
if (ship) {
ShipStats* stats = ShipStats::Find(ship->Name());
if (design->primary)
stats->AddGunShot();
else if (design->decoy_type == 0 && design->damage > 0)
stats->AddMissileShot();
}
}
return shot;
}