public static Type GetTypeByName(string name) { int typeId = -1; try { typeId = CustomEntityManager.GetIdByTypeName(name); return(CustomEntityManager.GetTypeById(typeId)); } catch (HamstarException e) { //throw new HamstarException( "!ModHelpers.CustomEntityManager.GetTypeByName - No CustomEntity " + name, e ); throw new HamstarException("No CustomEntity " + name, e); } }
protected override void ReadStream(BinaryReader reader) { int typeId = (ushort)reader.ReadUInt16(); byte ownerWho = (byte)reader.ReadByte(); int who = (ushort)reader.ReadUInt16(); string displayName = (string)reader.ReadString(); var pos = new Vector2 { X = (float)reader.ReadSingle(), Y = (float)reader.ReadSingle() }; int dir = (short)reader.ReadInt16(); int wid = (ushort)reader.ReadUInt16(); int hei = (ushort)reader.ReadUInt16(); var vel = new Vector2 { X = (float)reader.ReadSingle(), Y = (float)reader.ReadSingle() }; Type entType = CustomEntityManager.GetTypeById(typeId); if (entType == null) { //throw new HamstarException( "!ModHelpers.CustomEntity.ReadStream - Invalid entity type id " + typeId ); throw new HamstarException("Invalid entity type id " + typeId); } Player plr = ownerWho == (byte)255 ? null : Main.player[ownerWho]; var myentTemplate = (CustomEntity)PacketProtocolData.CreateInstance(entType); //var myentTemplate = (CustomEntity)Activator.CreateInstance( entType, BindingFlags.NonPublic | BindingFlags.Instance, null, new object[] { }, null ); CustomEntityCore core = myentTemplate.CreateCoreTemplate(); IList <CustomEntityComponent> components = myentTemplate.CreateComponentsTemplate(); core.WhoAmI = who; core.DisplayName = displayName; core.Width = wid; core.Height = hei; core.Position = pos; core.Velocity = vel; core.Direction = dir; for (int i = 0; i < components.Count; i++) { components[i].ReadStreamForwarded(reader); components[i].InternalOnClone(); } this.MyTypeName = SerializableCustomEntity.GetTypeName(myentTemplate); this.CopyChangesFrom(core, components, plr); //LogHelpers.Log( "READ "+this ); }