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>(); }
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); } }
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(); }
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(); }
public SmokeTrailWhenDamaged(Actor self, SmokeTrailWhenDamagedInfo info) { smokeTurret = new Turret(info.Offset); interval = info.Interval; }
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); }
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; }
// 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); }
// 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); }
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); }
// 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); }
// 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)); }