From 4b8a300c0afaf41fa783a3febb1c3e62eab6fb3c Mon Sep 17 00:00:00 2001 From: hyperion51 Date: Tue, 31 Mar 2020 13:44:18 +0100 Subject: [PATCH] Better Zones Client/Server --- Assets/Resources/Elysium.asset | 4 +- Assets/Resources/Test Galaxy.asset | 4 +- Assets/Resources/Test Galaxy.asset.meta | 2 +- Assets/Scenes/Main.unity | 12 +- Assets/Scripts/Editor/GalaxyEditor.cs | 4 + Assets/Scripts/ServerShared/Extensions.cs | 122 ++++++++++++++++++ Assets/Scripts/ServerShared/GlobalData.cs | 7 +- Assets/Scripts/ServerShared/ZoneGenerator.cs | 4 +- Assets/Scripts/StrategyGameManager.cs | 78 ++++++++--- Assets/Scripts/ZoneGeneratorTest.cs | 8 +- .../Debug/netcoreapp3.1/Economy.Server.dll | 4 +- .../Debug/netcoreapp3.1/Economy.Shared.dll | 4 +- ...onomy.Server.csprojAssemblyReference.cache | Bin 118236 -> 108033 bytes .../Debug/netcoreapp3.1/Economy.Server.dll | 4 +- .../Debug/netstandard2.0/Economy.Shared.dll | 4 +- .../Debug/netstandard2.0/Economy.Shared.dll | 4 +- 16 files changed, 223 insertions(+), 42 deletions(-) diff --git a/Assets/Resources/Elysium.asset b/Assets/Resources/Elysium.asset index a0b0a5cd0..f53b5b69b 100644 --- a/Assets/Resources/Elysium.asset +++ b/Assets/Resources/Elysium.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7307338a03d4a6e6c7deb40795b9102c79160d498b25b4bfca94cc64fe866b23 -size 17581 +oid sha256:30c451432161fff5c202ce8217149ad255f4f3a66cd71aec2ce8722dd3f6d310 +size 7770 diff --git a/Assets/Resources/Test Galaxy.asset b/Assets/Resources/Test Galaxy.asset index cfbc229f9..f196e29f7 100644 --- a/Assets/Resources/Test Galaxy.asset +++ b/Assets/Resources/Test Galaxy.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:707784bc14567850c6f44adf99d2d802c050d0214a95c7941e64daca771a5b1d -size 16811 +oid sha256:5a3b71fa9248f9b9339a7a69762264af697a0df5983825fbe4540a1a5eac8180 +size 7774 diff --git a/Assets/Resources/Test Galaxy.asset.meta b/Assets/Resources/Test Galaxy.asset.meta index 9c51f200b..1d0fc56f2 100644 --- a/Assets/Resources/Test Galaxy.asset.meta +++ b/Assets/Resources/Test Galaxy.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ee668592f6b83e941906711e854fa7ae +guid: 70345ecc9f78fcb47b1f6f5afed2681a NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index 6a63fdadf..4741d5022 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -7880,7 +7880,7 @@ MonoBehaviour: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 435654366} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0ae6f9307731b8f469a018c69d95d2ba, type: 3} m_Name: @@ -21734,7 +21734,7 @@ MonoBehaviour: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1126386499} - m_Enabled: 0 + m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 1c1faf0a46b9cf24498cd5ec93c34c71, type: 3} m_Name: @@ -21749,6 +21749,8 @@ MonoBehaviour: GalaxyScale: 100 ZoneObjectPrefab: {fileID: 5321404118521994133, guid: f9521191d31952a42a76632d158de0d3, type: 3} + BeltPrefab: {fileID: 3696484618621710612, guid: de2171f0e78642f48ac4cb15f3c012c5, + type: 3} ZoneRoot: {fileID: 435654367} PlanetSprite: {fileID: 2800000, guid: 0d2acbd593b7fd349b0b26b4844733ef, type: 3} GasGiantSprite: {fileID: 2800000, guid: 39505115515c61f4db3c5c5397a5ba49, type: 3} @@ -21757,9 +21759,9 @@ MonoBehaviour: WormholeSprite: {fileID: 2800000, guid: 6d0b27330fdcc8347b1e09a2d17a0673, type: 3} SelectedColor: {r: 1, g: 0.44583336, b: 0.050000012, a: 1} UnselectedColor: {r: 0.20084397, g: 0.5982815, b: 0.797, a: 1} - ZoneSizeScale: 0.01 - ZoneMassScale: 0.5 - ZoneMassPower: 0.333 + ZoneSizeScale: 0.02 + ZoneMassScale: 10 + ZoneMassPower: 0.25 ZoneBackground: {fileID: 1956833085} ZoneBoundary: {fileID: 548600404} --- !u!4 &1126386501 diff --git a/Assets/Scripts/Editor/GalaxyEditor.cs b/Assets/Scripts/Editor/GalaxyEditor.cs index e8b29a325..f912a3049 100644 --- a/Assets/Scripts/Editor/GalaxyEditor.cs +++ b/Assets/Scripts/Editor/GalaxyEditor.cs @@ -122,6 +122,10 @@ public class GalaxyEditor : Editor { _currentLayer = resourceDensity; } + if (GUILayout.Button("Copy")) + { + galaxy.MapData.ResourceDensities.Add(resourceDensity.Copy()); + } EndHorizontal(); } EditorGUI.indentLevel--; diff --git a/Assets/Scripts/ServerShared/Extensions.cs b/Assets/Scripts/ServerShared/Extensions.cs index 590b4de17..8881887bb 100644 --- a/Assets/Scripts/ServerShared/Extensions.cs +++ b/Assets/Scripts/ServerShared/Extensions.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text.RegularExpressions; using LiteNetLib; using MessagePack; @@ -217,3 +218,124 @@ public static class Extensions return t * (t * (a * t + b) + c) + d; } } + +// https://github.com/Burtsev-Alexey/net-object-deep-copy +public static class ObjectExtensions +{ + private static readonly MethodInfo CloneMethod = typeof(Object).GetMethod("MemberwiseClone", BindingFlags.NonPublic | BindingFlags.Instance); + + public static bool IsPrimitive(this Type type) + { + if (type == typeof(String)) return true; + return (type.IsValueType & type.IsPrimitive); + } + + public static Object Copy(this Object originalObject) + { + return InternalCopy(originalObject, new Dictionary(new ReferenceEqualityComparer())); + } + private static Object InternalCopy(Object originalObject, IDictionary visited) + { + if (originalObject == null) return null; + var typeToReflect = originalObject.GetType(); + if (IsPrimitive(typeToReflect)) return originalObject; + if (visited.ContainsKey(originalObject)) return visited[originalObject]; + if (typeof(Delegate).IsAssignableFrom(typeToReflect)) return null; + var cloneObject = CloneMethod.Invoke(originalObject, null); + if (typeToReflect.IsArray) + { + var arrayType = typeToReflect.GetElementType(); + if (IsPrimitive(arrayType) == false) + { + Array clonedArray = (Array)cloneObject; + clonedArray.ForEach((array, indices) => array.SetValue(InternalCopy(clonedArray.GetValue(indices), visited), indices)); + } + + } + visited.Add(originalObject, cloneObject); + CopyFields(originalObject, visited, cloneObject, typeToReflect); + RecursiveCopyBaseTypePrivateFields(originalObject, visited, cloneObject, typeToReflect); + return cloneObject; + } + + private static void RecursiveCopyBaseTypePrivateFields(object originalObject, IDictionary visited, object cloneObject, Type typeToReflect) + { + if (typeToReflect.BaseType != null) + { + RecursiveCopyBaseTypePrivateFields(originalObject, visited, cloneObject, typeToReflect.BaseType); + CopyFields(originalObject, visited, cloneObject, typeToReflect.BaseType, BindingFlags.Instance | BindingFlags.NonPublic, info => info.IsPrivate); + } + } + + private static void CopyFields(object originalObject, IDictionary visited, object cloneObject, Type typeToReflect, BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.FlattenHierarchy, Func filter = null) + { + foreach (FieldInfo fieldInfo in typeToReflect.GetFields(bindingFlags)) + { + if (filter != null && filter(fieldInfo) == false) continue; + if (IsPrimitive(fieldInfo.FieldType)) continue; + var originalFieldValue = fieldInfo.GetValue(originalObject); + var clonedFieldValue = InternalCopy(originalFieldValue, visited); + fieldInfo.SetValue(cloneObject, clonedFieldValue); + } + } + public static T Copy(this T original) + { + return (T)Copy((Object)original); + } +} + +public class ReferenceEqualityComparer : EqualityComparer +{ + public override bool Equals(object x, object y) + { + return ReferenceEquals(x, y); + } + public override int GetHashCode(object obj) + { + if (obj == null) return 0; + return obj.GetHashCode(); + } +} +public static class ArrayExtensions +{ + public static void ForEach(this Array array, Action action) + { + if (array.LongLength == 0) return; + ArrayTraverse walker = new ArrayTraverse(array); + do action(array, walker.Position); + while (walker.Step()); + } +} + +internal class ArrayTraverse +{ + public int[] Position; + private int[] maxLengths; + + public ArrayTraverse(Array array) + { + maxLengths = new int[array.Rank]; + for (int i = 0; i < array.Rank; ++i) + { + maxLengths[i] = array.GetLength(i) - 1; + } + Position = new int[array.Rank]; + } + + public bool Step() + { + for (int i = 0; i < Position.Length; ++i) + { + if (Position[i] < maxLengths[i]) + { + Position[i]++; + for (int j = 0; j < i; j++) + { + Position[j] = 0; + } + return true; + } + } + return false; + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/GlobalData.cs b/Assets/Scripts/ServerShared/GlobalData.cs index bd4821d22..847be4f3b 100644 --- a/Assets/Scripts/ServerShared/GlobalData.cs +++ b/Assets/Scripts/ServerShared/GlobalData.cs @@ -89,12 +89,15 @@ public class GlobalData : DatabaseEntry [InspectableField] [JsonProperty("beltProbability")] [Key(25)] public float BeltProbability = .05f; - [InspectableField] [JsonProperty("beltMassCeiling")] [Key(25)] + [InspectableField] [JsonProperty("beltMassCeiling")] [Key(26)] public float BeltMassCeiling = 500f; - [InspectableField] [JsonProperty("beltMassRatio")] [Key(26)] + [InspectableField] [JsonProperty("beltMassRatio")] [Key(27)] public float BeltMassRatio = 100f; + [InspectableField] [JsonProperty("beltMassExponent")] [Key(28)] + public float BeltMassExponent = 100f; + public float PlanetRadius(float mass) { return pow(mass, 1 / RadiusPower); diff --git a/Assets/Scripts/ServerShared/ZoneGenerator.cs b/Assets/Scripts/ServerShared/ZoneGenerator.cs index 35d7a42bb..8584511cd 100644 --- a/Assets/Scripts/ServerShared/ZoneGenerator.cs +++ b/Assets/Scripts/ServerShared/ZoneGenerator.cs @@ -176,8 +176,8 @@ public class ZoneGenerator var beltCandidates = rosette ? root.AllPlanets().Where(p => p != root && p.Parent != root && p.Mass < global.BeltMassCeiling && !binaries.Contains(p)) : root.AllPlanets().Where(p => p != root && p.Mass < global.BeltMassCeiling && !binaries.Contains(p)); - foreach(var planet in beltCandidates) - if (random.NextFloat() < global.BeltProbability) + foreach(var planet in beltCandidates.Reverse()) + if (random.NextFloat() < global.BeltProbability && !planet.Parent.Children.Any(p=>p.Belt)) planet.Belt = true; return root.AllPlanets().ToArray(); diff --git a/Assets/Scripts/StrategyGameManager.cs b/Assets/Scripts/StrategyGameManager.cs index e4c726e57..49ed7ae93 100644 --- a/Assets/Scripts/StrategyGameManager.cs +++ b/Assets/Scripts/StrategyGameManager.cs @@ -18,6 +18,7 @@ public class StrategyGameManager : MonoBehaviour public MeshRenderer GalaxyBackground; public float GalaxyScale; public ZoneObject ZoneObjectPrefab; + public ParticleSystem BeltPrefab; public Transform ZoneRoot; public Texture2D PlanetSprite; public Texture2D GasGiantSprite; @@ -42,7 +43,9 @@ public class StrategyGameManager : MonoBehaviour private GalaxyZone _selectedGalaxyZone; private ZoneResponseMessage _zoneResponse; private Dictionary _galaxyResponseZones; + private Dictionary _galaxyZoneObjects = new Dictionary(); private Dictionary _zoneObjects = new Dictionary(); + private Dictionary _zoneBelts = new Dictionary(); private List _wormholes = new List(); private Dictionary _orbitPositions = new Dictionary(); private Vector3 _galaxyCameraPos = -Vector3.forward; @@ -117,6 +120,13 @@ public class StrategyGameManager : MonoBehaviour planet.Value.transform.position = (Vector2) GetOrbitPosition(planetData.Orbit) * ZoneSizeScale; } + + foreach (var belt in _zoneBelts) + { + var planetData = _cache.Get(belt.Key); + + belt.Value.transform.position = float3(GetOrbitPosition(_cache.Get(planetData.Orbit).Parent) * ZoneSizeScale, .15f); + } } } @@ -175,6 +185,7 @@ public class StrategyGameManager : MonoBehaviour var instance = GalaxyZonePrototype.Instantiate(); instance.position = float3((Vector2) zone.Position - Vector2.one * .5f,0) * GalaxyScale; var instanceZone = instance.GetComponent(); + _galaxyZoneObjects[zone.ZoneID] = instanceZone; instanceZone.Label.text = zone.Name; instanceZone.Background.GetComponent().OnClick += (_, pointer) => { @@ -208,6 +219,8 @@ public class StrategyGameManager : MonoBehaviour _zoneObjects.Clear(); foreach (var zoneObject in _wormholes) Destroy(zoneObject.gameObject); //zoneObject.GetComponent().ReturnToPool(); _wormholes.Clear(); + foreach (var belt in _zoneBelts.Values) Destroy(belt.gameObject); + _zoneBelts.Clear(); _populatedZone = _selectedZone; @@ -216,21 +229,42 @@ public class StrategyGameManager : MonoBehaviour { if (entry is PlanetData planet) { - var planetObject = Instantiate(ZoneObjectPrefab, ZoneRoot); - _zoneObjects[planet.ID] = planetObject; - planetObject.Label.text = planet.Name; - planetObject.GravityMesh.gameObject.SetActive(true); - planetObject.GravityMesh.transform.localScale = - Vector3.one * (pow(planet.Mass, _context.GlobalData.GravityRadiusExponent) * - _context.GlobalData.GravityRadiusMultiplier * ZoneSizeScale); - var depth = pow(planet.Mass, ZoneMassPower) * ZoneMassScale; - if (depth > zoneDepth) - zoneDepth = depth; - planetObject.GravityMesh.material.SetFloat("_Depth", depth); - planetObject.Icon.material.SetTexture("_MainTex", - planet.Mass > _context.GlobalData.SunMass ? SunSprite : - planet.Mass > _context.GlobalData.GasGiantMass ? GasGiantSprite : - PlanetSprite); + if (!planet.Belt) + { + var planetObject = Instantiate(ZoneObjectPrefab, ZoneRoot); + _zoneObjects[planet.ID] = planetObject; + planetObject.Label.text = planet.Name; + planetObject.GravityMesh.gameObject.SetActive(true); + planetObject.GravityMesh.transform.localScale = + Vector3.one * (pow(planet.Mass, _context.GlobalData.GravityRadiusExponent) * + _context.GlobalData.GravityRadiusMultiplier * 2 * ZoneSizeScale); + var depth = pow(planet.Mass, ZoneMassPower) * ZoneMassScale; + if (depth > zoneDepth) + zoneDepth = depth; + planetObject.GravityMesh.material.SetFloat("_Depth", depth); + planetObject.Icon.material.SetTexture("_MainTex", + planet.Mass > _context.GlobalData.SunMass ? SunSprite : + planet.Mass > _context.GlobalData.GasGiantMass ? GasGiantSprite : + PlanetSprite); + } + else + { + var beltObject = Instantiate(BeltPrefab, transform); + _zoneBelts[planet.ID] = beltObject; + var orbit = _cache.Get(planet.Orbit); + var beltEmission = beltObject.emission; + beltEmission.rateOverTime = + new ParticleSystem.MinMaxCurve( + pow(planet.Mass,_context.GlobalData.BeltMassExponent) + / _context.GlobalData.BeltMassRatio * orbit.Distance); + var beltShape = beltObject.shape; + beltShape.radius = orbit.Distance * ZoneSizeScale; + beltShape.donutRadius = orbit.Distance * ZoneSizeScale / 2; + var beltVelocity = beltObject.velocityOverLifetime; + beltVelocity.orbitalZ = orbit.Distance * ZoneSizeScale / orbit.Period; + beltObject.Simulate(60); + beltObject.Play(); + } } } var radius = (_zoneResponse.Zone.Radius * ZoneSizeScale * 2); @@ -248,6 +282,20 @@ public class StrategyGameManager : MonoBehaviour wormholeObject.GravityMesh.gameObject.SetActive(false); wormholeObject.Icon.material.SetTexture("_MainTex", WormholeSprite); wormholeObject.Label.text = otherZone.Name; + wormholeObject.Icon.GetComponent().OnClick += (_, pointer) => + { + // If the user double clicks on a wormhole, switch to that zone + if (pointer.clickCount == 2) + { + _selectedGalaxyZone.Background.material.SetColor("_TintColor", UnselectedColor); + if(_selectedZone != wormhole) + CultClient.Send(new ZoneRequestMessage{ZoneID = wormhole}); + _selectedZone = wormhole; + _selectedGalaxyZone = _galaxyZoneObjects[wormhole]; + _selectedGalaxyZone.Background.material.SetColor("_TintColor", SelectedColor); + + } + }; } } } diff --git a/Assets/Scripts/ZoneGeneratorTest.cs b/Assets/Scripts/ZoneGeneratorTest.cs index 5a0ceb9d6..8800c3915 100644 --- a/Assets/Scripts/ZoneGeneratorTest.cs +++ b/Assets/Scripts/ZoneGeneratorTest.cs @@ -75,7 +75,7 @@ public class ZoneGeneratorTest : MonoBehaviour { var planetData = _cache.Get(belt.Key); - belt.Value.transform.position = (Vector2) GetOrbitPosition(_cache.Get(planetData.Orbit).Parent) * ZoneSizeScale; + belt.Value.transform.position = float3(GetOrbitPosition(_cache.Get(planetData.Orbit).Parent) * ZoneSizeScale, .15f); } if (Input.GetKeyDown(KeyCode.Space)) { @@ -140,12 +140,14 @@ public class ZoneGeneratorTest : MonoBehaviour _zoneBelts[planet.ID] = beltObject; var orbit = _cache.Get(planet.Orbit); var beltEmission = beltObject.emission; - beltEmission.rateOverTime = new ParticleSystem.MinMaxCurve(planet.Mass / Galaxy.MapData.GlobalData.BeltMassRatio * orbit.Distance); + beltEmission.rateOverTime = new ParticleSystem.MinMaxCurve(pow(planet.Mass,Galaxy.MapData.GlobalData.BeltMassExponent) / Galaxy.MapData.GlobalData.BeltMassRatio * orbit.Distance); var beltShape = beltObject.shape; beltShape.radius = orbit.Distance * ZoneSizeScale; beltShape.donutRadius = orbit.Distance * ZoneSizeScale / 2; var beltVelocity = beltObject.velocityOverLifetime; - beltVelocity.orbitalZ = orbit.Distance * ZoneSizeScale * PI / orbit.Period * ZoneOrbitSpeed; + beltVelocity.orbitalZ = orbit.Distance * ZoneSizeScale / orbit.Period * ZoneOrbitSpeed; + beltObject.Simulate(60); + beltObject.Play(); } } diff --git a/Economy.Server/bin/Debug/netcoreapp3.1/Economy.Server.dll b/Economy.Server/bin/Debug/netcoreapp3.1/Economy.Server.dll index 101733837..250f89358 100644 --- a/Economy.Server/bin/Debug/netcoreapp3.1/Economy.Server.dll +++ b/Economy.Server/bin/Debug/netcoreapp3.1/Economy.Server.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36b135848d9adc1b16c5558ddde765953a2a5855c003529f9a9300739b4563ce -size 30208 +oid sha256:55362430e15cdc89c54b9cd50fbfa54e286a1cedc5f81dbd05a8d309c1c83f48 +size 28672 diff --git a/Economy.Server/bin/Debug/netcoreapp3.1/Economy.Shared.dll b/Economy.Server/bin/Debug/netcoreapp3.1/Economy.Shared.dll index 7d245bf64..037b6e0de 100644 --- a/Economy.Server/bin/Debug/netcoreapp3.1/Economy.Shared.dll +++ b/Economy.Server/bin/Debug/netcoreapp3.1/Economy.Shared.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2c12be4c0222ec2371a7772c208056fd4543f940240fc85d0b4ae38c2a73530 -size 1391104 +oid sha256:85174ebd9f2cf8d1d598bf287911aa15b1cdaca148a0a107a336a2118847ea63 +size 1397248 diff --git a/Economy.Server/obj/Debug/netcoreapp3.1/Economy.Server.csprojAssemblyReference.cache b/Economy.Server/obj/Debug/netcoreapp3.1/Economy.Server.csprojAssemblyReference.cache index 9cdb8e63f7c32bbf437c1931f037c83dc692a83a..32b2ddc17bcb535371ed57af14ce02224855c6fe 100644 GIT binary patch literal 108033 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

3IA(DYcDyq>6h2# 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 Nl7NFwhjv11|3Al%gogkC diff --git a/Economy.Server/obj/Debug/netcoreapp3.1/Economy.Server.dll b/Economy.Server/obj/Debug/netcoreapp3.1/Economy.Server.dll index 101733837..250f89358 100644 --- a/Economy.Server/obj/Debug/netcoreapp3.1/Economy.Server.dll +++ b/Economy.Server/obj/Debug/netcoreapp3.1/Economy.Server.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36b135848d9adc1b16c5558ddde765953a2a5855c003529f9a9300739b4563ce -size 30208 +oid sha256:55362430e15cdc89c54b9cd50fbfa54e286a1cedc5f81dbd05a8d309c1c83f48 +size 28672 diff --git a/Economy.Shared/bin/Debug/netstandard2.0/Economy.Shared.dll b/Economy.Shared/bin/Debug/netstandard2.0/Economy.Shared.dll index 7d245bf64..037b6e0de 100644 --- a/Economy.Shared/bin/Debug/netstandard2.0/Economy.Shared.dll +++ b/Economy.Shared/bin/Debug/netstandard2.0/Economy.Shared.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2c12be4c0222ec2371a7772c208056fd4543f940240fc85d0b4ae38c2a73530 -size 1391104 +oid sha256:85174ebd9f2cf8d1d598bf287911aa15b1cdaca148a0a107a336a2118847ea63 +size 1397248 diff --git a/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.dll b/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.dll index 7d245bf64..037b6e0de 100644 --- a/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.dll +++ b/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2c12be4c0222ec2371a7772c208056fd4543f940240fc85d0b4ae38c2a73530 -size 1391104 +oid sha256:85174ebd9f2cf8d1d598bf287911aa15b1cdaca148a0a107a336a2118847ea63 +size 1397248