public override int GetHashCode() { int hashCode = 0; unchecked { hashCode += 1000000007 * Scale1.GetHashCode(); hashCode += 1000000009 * CameraHeight.GetHashCode(); hashCode += 1000000021 * CameraAngle.GetHashCode(); hashCode += 1000000033 * Background.GetHashCode(); hashCode += 1000000087 * FogDistance.GetHashCode(); hashCode += 1000000093 * MaxLightStrength.GetHashCode(); hashCode += 1000000097 * Scale2.GetHashCode(); hashCode += 1000000103 * ViewDistance.GetHashCode(); if (Objects != null) { hashCode += 1000000123 * Objects.GetHashCode(); } if (Floors != null) { hashCode += 1000000181 * Floors.GetHashCode(); } if (ObjectInfos != null) { hashCode += 1000000207 * ObjectInfos.GetHashCode(); } if (Walls != null) { hashCode += 1000000223 * Walls.GetHashCode(); } } return(hashCode); }
public void Parse(AssetsReader reader) { Version = reader.ReadCStr(); Platform = reader.ReadInt32(); HasTypeTrees = reader.ReadBoolean(); int numTypes = reader.ReadInt32(); for (int i = 0; i < numTypes; i++) { Types.Add(new AssetsType(reader, HasTypeTrees)); } int numObj = reader.ReadInt32(); for (int i = 0; i < numObj; i++) { reader.AlignTo(4); var obj = ObjectInfo <AssetsObject> .Parse(ParentFile, reader); ObjectInfos.Add(obj); } int numAdds = reader.ReadInt32(); for (int i = 0; i < numAdds; i++) { reader.AlignTo(4); Adds.Add(new RawPtr(reader)); } int numExt = reader.ReadInt32(); for (int i = 0; i < numExt; i++) { ExternalFiles.Add(new ExternalFile(reader)); } reader.ReadCStr(); }
/// <summary> Creates an xMap-1 map object. </summary> /// <param name="objectInfos">Set of object infos returned by xMap-1.</param> /// <param name="layerObject">XServer layer object.</param> public XMap1MapObject(ObjectInfos objectInfos, LayerObject layerObject) : base( (((long)layerObject.hiId << 32) + layerObject.loId).ToString(), objectInfos.name, new Point(layerObject.pixel.x, layerObject.pixel.y), new Point([email protected], [email protected]), () => new[] { new KeyValuePair <string, string>("description", GetDescription(layerObject)) } ) { Source = layerObject; }
public void Parse(AssetsReader reader) { Version = reader.ReadCStr(); Platform = reader.ReadInt32(); HasTypeTrees = reader.ReadBoolean(); int numTypes = reader.ReadInt32(); for (int i = 0; i < numTypes; i++) { Types.Add(new AssetsType(reader, HasTypeTrees)); } List <ObjectRecord> records = new List <ObjectRecord>(); int numObj = reader.ReadInt32(); for (int i = 0; i < numObj; i++) { reader.AlignTo(4); var obj = new ObjectRecord(reader); records.Add(obj); } int numAdds = reader.ReadInt32(); for (int i = 0; i < numAdds; i++) { reader.AlignTo(4); Adds.Add(new RawPtr(reader)); } int numExt = reader.ReadInt32(); for (int i = 0; i < numExt; i++) { ExternalFiles.Add(new ExternalFile(reader)); } reader.ReadCStr(); //load the object infos in order based on their type foreach (var record in records.OrderBy(x => PreloadObjectOrder(x)).ThenBy(x => x.ObjectID)) { var obj = ObjectInfo <AssetsObject> .Parse(ParentFile, record); ObjectInfos.Add(obj); if (ShouldForceLoadObject(record)) { var o = obj.Object; } } }
public void Write(AssetsWriter writer) { writer.WriteCString(Version); writer.Write(Platform); writer.Write(HasTypeTrees); writer.Write(Types.Count()); Types.ForEach(x => x.Write(writer)); writer.Write(ObjectInfos.Count()); ObjectInfos.ForEach(x => { writer.AlignTo(4); x.Write(writer); }); writer.Write(Adds.Count()); Adds.ForEach(x => x.Write(writer)); writer.Write(ExternalFiles.Count()); ExternalFiles.ForEach(x => x.Write(writer)); writer.WriteCString(""); }
protected override void ProcessRecord() => WriteObject( ObjectInfos .Where(o => ObjectType.Contains(o.ObjectType)), true );