public void NetFire(ProjectileID ProjectileId, int Firer, Vector3 Position, Vector3 Rotation, Vector3 Momentum, string NameArg) { var Instance = (IProjectile)Data[ProjectileId].Scene.Instance(); Instance.FirerId = Firer; Instance.Translation = Position; Instance.RotationDegrees = Rotation; Instance.Momentum = Momentum; Instance.Name = NameArg; World.EntitiesRoot.AddChild((Node)Instance); }
private void SetupExplosivesDictionary() { InterestingExplosives = new Dictionary <short, string>(); ProjectileID projectileId = new ProjectileID(); Type type = projectileId.GetType(); foreach (string explosive in ExplosivesConfig.Explosives) { short id = (short)type.GetField(explosive).GetValue(projectileId); InterestingExplosives.Add(id, explosive); } }
public static void Initialize() { BaseTypes = new List <Type>(); List <Type> TypeList = Assembly.GetExecutingAssembly().GetTypes() .Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(ProjectileBase)) && t.Namespace == "ProjectMove.Content.Projectile.ProjectileTypes") .ToList(); for (ushort i = 0; i < TypeList.Count; i++) { Type type = TypeList[i]; BaseTypes.Add(type); ProjectileID.Add(type, i); } }
public static void Fire(ProjectileID ProjectileId, Player UsingPlayer) { int Firer = UsingPlayer.Id; Vector3 Position = UsingPlayer.ProjectileEmitter.GlobalTransform.origin; Vector3 Rotation = new Vector3(-UsingPlayer.IntendedLookVertical, UsingPlayer.LookHorizontal, 0); Vector3 Momentum = new Vector3(0, 0, Data[ProjectileId].InitialSpeed) .Rotated(new Vector3(1, 0, 0), Deg2Rad(Rotation.x)) .Rotated(new Vector3(0, 1, 0), Deg2Rad(Rotation.y)); string NameArg = System.Guid.NewGuid().ToString(); if (Net.Work.IsNetworkServer()) { Self.NonStaticFire(ProjectileId, Firer, Position, Rotation, Momentum, NameArg); } else { Self.RpcId(Net.ServerId, nameof(NonStaticFire), ProjectileId, Firer, Position, Rotation, Momentum, NameArg); } }
public void ActualFire(ProjectileID ProjectileId, int Firer, Vector3 Position, Vector3 Rotation, Vector3 Momentum, string NameArg) { if (World.EntitiesRoot.HasNode(NameArg)) { return; } var Instance = (IProjectile)Data[ProjectileId].Scene.Instance(); Instance.ProjectileId = ProjectileId; Instance.FirerId = Firer; Instance.Translation = Position; Instance.RotationDegrees = Rotation; Instance.Momentum = Momentum; Instance.Name = NameArg; World.EntitiesRoot.AddChild((Node)Instance); if (Net.Work.IsNetworkServer()) { Entities.SendCreate(Instance); } }
public void Load(TagCompound tag) { type = (Type)tag.Get <int>("Type"); uniqueKey = tag.GetString("UniqueKey"); switch (type) { case Type.Item: id = ItemID.TypeFromUniqueKey(uniqueKey); break; case Type.NPC: id = NPCID.TypeFromUniqueKey(uniqueKey); break; case Type.Projectile: id = ProjectileID.TypeFromUniqueKey(uniqueKey); break; } animation = new DrawAnimationVertical(tag.Get <int>("TicksPerFrame"), tag.Get <int>("FrameCount")); }
public IconData(Type type, int id) { this.type = type; this.id = id; switch (type) { case Type.Item: uniqueKey = ItemID.GetUniqueKey(id); animation = Main.itemAnimations[id] as DrawAnimationVertical ?? new DrawAnimationVertical(0, 1); break; case Type.NPC: uniqueKey = NPCID.GetUniqueKey(id); animation = new DrawAnimationVertical(5, Main.npcFrameCount[id]); break; case Type.Projectile: uniqueKey = ProjectileID.GetUniqueKey(id); animation = new DrawAnimationVertical(5, Main.projFrames[id]); break; } }
public ProjectileDefinition(int type) : base(ProjectileID.GetUniqueKey(type)) { }
private void NonStaticFire(ProjectileID ProjectileId, int Firer, Vector3 Position, Vector3 Rotation, Vector3 Momentum, string NameArg) { NetFire(ProjectileId, Firer, Position, Rotation, Momentum, NameArg); Net.SteelRpc(this, nameof(NetFire), ProjectileId, Firer, Position, Rotation, Momentum, NameArg); }