public virtual void Load(VMMultitileGroupMarshal input, VMContext context) { MultiTile = input.MultiTile; Name = input.Name; InitialPrice = input.Price; SalePrice = input.SalePrice; if (SalePrice == 0) { SalePrice = -1; } Objects = new List <VMEntity>(); for (int i = 0; i < input.Objects.Length; i++) { var id = input.Objects[i]; var obj = context.VM.GetObjectById(id); if (obj == null) { continue; } Objects.Add(obj); Offsets.Add(input.Offsets[i]); obj.MultitileGroup = this; } if (VM.UseWorld && (BaseObject?.PlatformState as VMTSOObjectState)?.Broken == true) { for (int i = 0; i < input.Objects.Length; i++) { ((VMGameObject)Objects[i]).EnableParticle(256); } } }
public void LoadGhost(VMMultitileGroupMarshal input, VMContext context, VMEntity[] objs) { MultiTile = input.MultiTile; Name = input.Name; InitialPrice = input.Price; SalePrice = input.SalePrice; if (SalePrice == 0) { SalePrice = -1; } Objects = new List <VMEntity>(); for (int i = 0; i < input.Objects.Length; i++) { var obj = objs[i]; if (obj == null) { continue; } Objects.Add(obj); Offsets.Add(input.Offsets[i]); if (VM.UseWorld && obj is VMGameObject) { var component = (ObjectComponent)obj.WorldUI; WorldGroup.Objects.Add(component); component.MultitileGroup = WorldGroup; } obj.MultitileGroup = this; } }
public virtual void Load(VMMultitileGroupMarshal input, VMContext context) { MultiTile = input.MultiTile; Objects = new List <VMEntity>(); foreach (var id in input.Objects) { var obj = context.VM.GetObjectById(id); Objects.Add(obj); obj.MultitileGroup = this; } foreach (var pos in input.Offsets) { Offsets.Add(pos); } }
public void LoadGhost(VMMultitileGroupMarshal input, VMContext context, VMEntity[] objs) { MultiTile = input.MultiTile; Name = input.Name; Objects = new List <VMEntity>(); for (int i = 0; i < input.Objects.Length; i++) { var obj = objs[i]; if (obj == null) { continue; } Objects.Add(obj); Offsets.Add(input.Offsets[i]); obj.MultitileGroup = this; } }
public void Deserialize(BinaryReader reader) { if (new string(reader.ReadChars(4)) != "FSOh") { return; } Version = reader.ReadInt32(); Compressed = reader.ReadBoolean(); var uReader = reader; MemoryStream cStream = null; GZipStream zipStream = null; if (Compressed) { var length = reader.ReadInt32(); cStream = new MemoryStream(reader.ReadBytes(length)); zipStream = new GZipStream(cStream, CompressionMode.Decompress); reader = new BinaryReader(zipStream); } Context = new VMContextMarshal(Version); Context.Deserialize(reader); int ents = reader.ReadInt32(); Entities = new VMHollowGameObjectMarshal[ents]; for (int i = 0; i < ents; i++) { var ent = new VMHollowGameObjectMarshal(Version); ent.Deserialize(reader); Entities[i] = ent; } int mtgN = reader.ReadInt32(); MultitileGroups = new VMMultitileGroupMarshal[mtgN]; for (int i = 0; i < mtgN; i++) { MultitileGroups[i] = new VMMultitileGroupMarshal(Version); MultitileGroups[i].Deserialize(reader); } }
public virtual void Load(VMMultitileGroupMarshal input, VMContext context) { MultiTile = input.MultiTile; Name = input.Name; Price = input.Price; SalePrice = input.SalePrice; if (SalePrice == 0) { SalePrice = -1; } Objects = new List <VMEntity>(); for (int i = 0; i < input.Objects.Length; i++) { var id = input.Objects[i]; var obj = context.VM.GetObjectById(id); if (obj == null) { continue; } Objects.Add(obj); Offsets.Add(input.Offsets[i]); obj.MultitileGroup = this; } }
public VMMultitileGroup(VMMultitileGroupMarshal input, VMContext context) { Load(input, context); }