本文整理汇总了C#中Actor.GetPrimaryWeapon方法的典型用法代码示例。如果您正苦于以下问题:C# Actor.GetPrimaryWeapon方法的具体用法?C# Actor.GetPrimaryWeapon怎么用?C# Actor.GetPrimaryWeapon使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Actor
的用法示例。
在下文中一共展示了Actor.GetPrimaryWeapon方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetSelectionShares
public override int GetSelectionShares(Actor collector)
{
if (collector.GetPrimaryWeapon() == null && collector.GetSecondaryWeapon() == null)
return 0;
return base.GetSelectionShares(collector);
}
示例2: Tick
public IActivity Tick(Actor self)
{
if (target == null || target.IsDead)
return NextActivity;
var limitedAmmo = self.traits.GetOrDefault<LimitedAmmo>();
if (limitedAmmo != null && !limitedAmmo.HasAmmo())
return NextActivity;
var unit = self.traits.Get<Unit>();
if (unit.Altitude != CruiseAltitude)
{
unit.Altitude += Math.Sign(CruiseAltitude - unit.Altitude);
return this;
}
var range = self.GetPrimaryWeapon().Range - 1;
var dist = target.CenterLocation - self.CenterLocation;
var desiredFacing = Util.GetFacing(dist, unit.Facing);
Util.TickFacing(ref unit.Facing, desiredFacing, self.Info.Traits.Get<UnitInfo>().ROT);
if (!float2.WithinEpsilon(float2.Zero, dist, range * Game.CellSize))
{
var rawSpeed = .2f * Util.GetEffectiveSpeed(self);
self.CenterLocation += (rawSpeed / dist.Length) * dist;
self.Location = ((1 / 24f) * self.CenterLocation).ToInt2();
}
/* todo: maintain seperation wrt other helis */
return this;
}
示例3: AttackBase
public AttackBase(Actor self)
{
var primaryWeapon = self.GetPrimaryWeapon();
var secondaryWeapon = self.GetSecondaryWeapon();
primaryBurst = primaryWeapon != null ? primaryWeapon.Burst : 1;
secondaryBurst = secondaryWeapon != null ? secondaryWeapon.Burst : 1;
}
示例4: FireDelay
public override int FireDelay( Actor self, AttackBaseInfo info )
{
primaryFireDelay = 8;
timeToRecharge = self.GetPrimaryWeapon().ROF;
--charges;
if( target != sameTarget )
{
sameTarget = target;
self.traits.Get<RenderBuildingCharge>().PlayCharge( self );
return base.FireDelay( self, info );
}
else
return 3;
}
示例5: Detonate
public void Detonate(Actor self, Actor detonatedBy)
{
var unit = self.traits.GetOrDefault<Unit>();
var info = self.Info.Traits.Get<AttackBaseInfo>();
var altitude = unit != null ? unit.Altitude : 0;
int2 detonateLocation = self.CenterLocation.ToInt2();
self.World.AddFrameEndTask( w =>
{
Combat.DoExplosion(self, info.PrimaryWeapon, detonateLocation, altitude);
var report = self.GetPrimaryWeapon().Report;
if (report != null)
Sound.Play(report + ".aud");
// Remove from world
self.Health = 0;
detonatedBy.Owner.Kills++;
w.Remove(self);
} );
}
示例6: GetMaximumRange
public static float GetMaximumRange(Actor self)
{
return new[] { self.GetPrimaryWeapon(), self.GetSecondaryWeapon() }
.Where(w => w != null).Max(w => w.Range);
}
示例7: QueueAttack
protected virtual void QueueAttack(Actor self, Order order)
{
/* todo: choose the appropriate weapon, when only one works against this target */
var weapon = self.GetPrimaryWeapon() ?? self.GetSecondaryWeapon();
self.QueueActivity(new Activities.Attack(order.TargetActor,
Math.Max(0, (int)weapon.Range)));
}
示例8: IssueOrder
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button == MouseButton.Left || underCursor == null || underCursor.Owner == null) return null;
if (self == underCursor) return null;
var isHeal = self.GetPrimaryWeapon().Warheads.First().Damage < 0;
var forceFire = mi.Modifiers.HasModifier(Modifiers.Ctrl);
if (isHeal)
{
if (underCursor.Owner == null)
return null;
if (self.Owner.Stances[ underCursor.Owner ] != Stance.Ally && !forceFire)
return null;
if (underCursor.Health >= underCursor.GetMaxHP())
return null; // don't allow healing of fully-healed stuff!
}
else
if ((self.Owner.Stances[ underCursor.Owner ] != Stance.Enemy) && !forceFire)
return null;
if (!Combat.HasAnyValidWeapons(self, underCursor)) return null;
return new Order(isHeal ? "Heal" : "Attack", self, underCursor);
}