当前位置: 首页>>代码示例>>C#>>正文


C# Actor.GetPrimaryWeapon方法代码示例

本文整理汇总了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);
        }
开发者ID:comradpara,项目名称:OpenRA,代码行数:7,代码来源:FirepowerUpgradeCrateAction.cs

示例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;
        }
开发者ID:comradpara,项目名称:OpenRA,代码行数:33,代码来源:HeliAttack.cs

示例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;
        }
开发者ID:comradpara,项目名称:OpenRA,代码行数:8,代码来源:AttackBase.cs

示例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;
        }
开发者ID:comradpara,项目名称:OpenRA,代码行数:15,代码来源:AttackTesla.cs

示例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);
            } );
        }
开发者ID:comradpara,项目名称:OpenRA,代码行数:20,代码来源:DemoTruck.cs

示例6: GetMaximumRange

 public static float GetMaximumRange(Actor self)
 {
     return new[] { self.GetPrimaryWeapon(), self.GetSecondaryWeapon() }
         .Where(w => w != null).Max(w => w.Range);
 }
开发者ID:comradpara,项目名称:OpenRA,代码行数:5,代码来源:Util.cs

示例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)));
        }
开发者ID:comradpara,项目名称:OpenRA,代码行数:8,代码来源:AttackBase.cs

示例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);
        }
开发者ID:comradpara,项目名称:OpenRA,代码行数:25,代码来源:AttackBase.cs


注:本文中的Actor.GetPrimaryWeapon方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。