Exemplo n.º 1
0
 public Contrail(Actor self, ContrailInfo info)
 {
     contrailTurret = new Turret(info.ContrailOffset);
     history = new ContrailHistory(info.TrailLength,
         info.UsePlayerColor ? ContrailHistory.ChooseColor(self) : info.Color);
     facing = self.Trait<IFacing>();
     move = self.Trait<IMove>();
 }
Exemplo n.º 2
0
        public Contrail(Actor self, ContrailInfo info)
        {
            Info = info;

            ContrailTurret = new Turret(Info.ContrailOffset);

            TrailLength = Info.TrailLength;

            if (Info.UsePlayerColor)
            {
                var ownerColor = Color.FromArgb(255, self.Owner.Color);
                TrailColor = PlayerColorRemap.ColorLerp(0.5f, ownerColor, Color.White);
            }
        }
Exemplo n.º 3
0
        public Turret Turret; // where this weapon is mounted -- possibly shared

        #endregion Fields

        #region Constructors

        public Weapon(string weaponName, Turret turret, int[] localOffset)
        {
            Info = Rules.Weapons[weaponName.ToLowerInvariant()];
            Burst = Info.Burst;
            Turret = turret;

            var barrels = new List<Barrel>();
            for (var i = 0; i < localOffset.Length / 3; i++)
                barrels.Add(new Barrel
                {
                    Position = new int2(localOffset[3 * i], localOffset[3 * i + 1]),
                    Facing = localOffset[3 * i + 2]
                });

            // if no barrels specified, the default is "turret position; turret facing".
            if (barrels.Count == 0)
                barrels.Add(new Barrel { Position = int2.Zero, Facing = 0 });

            Barrels = barrels.ToArray();
        }
Exemplo n.º 4
0
        public Turret Turret; // where this weapon is mounted -- possibly shared

        #endregion Fields

        #region Constructors

        public Weapon(string weaponName, Turret turret, int[] localOffset, int recoil)
        {
            Info = Rules.Weapons[weaponName.ToLowerInvariant()];
            Burst = Info.Burst;
            Turret = turret;
            Recoil = recoil;

            var barrels = new List<Barrel>();
            for (var i = 0; i < localOffset.Length / 5; i++)
                barrels.Add(new Barrel
                {
                    TurretSpaceOffset = new PVecInt(localOffset[5 * i], localOffset[5 * i + 1]),
                    ScreenSpaceOffset = new PVecInt(localOffset[5 * i + 2], localOffset[5 * i + 3]),
                    Facing = localOffset[5 * i + 4]
                });

            // if no barrels specified, the default is "turret position; turret facing".
            if (barrels.Count == 0)
                barrels.Add(new Barrel { TurretSpaceOffset = PVecInt.Zero, ScreenSpaceOffset = PVecInt.Zero, Facing = 0 });

            Barrels = barrels.ToArray();
        }
Exemplo n.º 5
0
 public SmokeTrailWhenDamaged(Actor self, SmokeTrailWhenDamagedInfo info)
 {
     smokeTurret = new Turret(info.Offset);
     interval = info.Interval;
 }
Exemplo n.º 6
0
 public Contrail(Actor self, ContrailInfo info)
 {
     Info = info;
     ContrailTurret = new Turret(Info.ContrailOffset);
     history = new ContrailHistory(Info.TrailLength, Info.UsePlayerColor ? ContrailHistory.ChooseColor(self) : Info.Color);
 }
Exemplo n.º 7
0
        public static float2 GetTurretPosition(Actor self, IFacing facing, Turret turret)
        {
            if(facing == null) return turret.ScreenSpacePosition;	/* things that don't have a rotating base don't need the turrets repositioned */

            var ru = self.TraitOrDefault<RenderUnit>();
            var numDirs = (ru != null) ? ru.anim.CurrentSequence.Facings : 8;
            var bodyFacing = facing.Facing;
            var quantizedFacing = Util.QuantizeFacing(bodyFacing, numDirs) * (256 / numDirs);

            return (Util.RotateVectorByFacing(turret.UnitSpacePosition, quantizedFacing, .7f)
                + GetRecoil(self, turret.Recoil))
                + turret.ScreenSpacePosition;
        }
Exemplo n.º 8
0
        // gets the screen-space position of a barrel.
        public static float2 GetBarrelPosition(Actor self, IFacing facing, Turret turret, Barrel barrel)
        {
            var turreted = self.TraitOrDefault<Turreted>();

            if (turreted == null && facing == null)
                return float2.Zero;

            var turretFacing = turreted != null  ? turreted.turretFacing : facing.Facing;

            return Util.RotateVectorByFacing(barrel.Position, turretFacing, .7f);
        }
Exemplo n.º 9
0
        // gets the screen-space position of a barrel.
        public static PVecInt GetBarrelPosition(Actor self, IFacing facing, Turret turret, Barrel barrel)
        {
            var turreted = self.TraitOrDefault<Turreted>();

            if (turreted == null && facing == null)
                return PVecInt.Zero;

            var turretFacing = turreted != null  ? turreted.turretFacing : facing.Facing;

            return GetTurretPosition(self, facing, turret) + barrel.ScreenSpaceOffset
                + (PVecInt)(PVecFloat)Util.RotateVectorByFacing(barrel.TurretSpaceOffset.ToFloat2(), turretFacing, .7f);
        }
Exemplo n.º 10
0
        static PVecInt GetUnitspaceBarrelOffset(Actor self, IFacing facing, Turret turret, Barrel barrel)
        {
            var turreted = self.TraitOrDefault<Turreted>();
            if (turreted == null && facing == null)
                return PVecInt.Zero;

            var turretFacing = turreted != null  ? turreted.turretFacing : facing.Facing;
            return (PVecInt)(PVecFloat)Util.RotateVectorByFacing(barrel.TurretSpaceOffset.ToFloat2(), turretFacing, .7f);
        }
Exemplo n.º 11
0
 // gets the screen-space position of a barrel.
 public static PVecInt GetBarrelPosition(Actor self, IFacing facing, Turret turret, Barrel barrel)
 {
     return GetTurretPosition(self, facing, turret) + barrel.ScreenSpaceOffset
         + GetUnitspaceBarrelOffset(self, facing, turret, barrel);
 }
Exemplo n.º 12
0
 // gets the screen-space position of a barrel.
 public static PVecInt GetBarrelPosition(Actor self, IFacing facing, Turret turret, Barrel barrel)
 {
     return(GetTurretPosition(self, facing, turret) + barrel.ScreenSpaceOffset
            + GetUnitspaceBarrelOffset(self, facing, turret, barrel));
 }