From 2e238980028c201331f40a135e5a311c5b7f0fe1 Mon Sep 17 00:00:00 2001 From: Arkioner Date: Sun, 18 Apr 2021 21:59:38 +0200 Subject: [PATCH] now buildings have colliders to controll if will be builded over something. Resources also have a collider now. Not minimum space yet configured between buildings just not overlaping --- .../Prefabs/Building/pfGoldHarvester.prefab | 27 +++ .../Prefabs/Building/pfStoneHarvester.prefab | 27 +++ .../Prefabs/Building/pfWoodHarvester.prefab | 27 +++ .../ResourceNode/pfGoldResourceNode.prefab | 29 +++- .../ResourceNode/pfStoneResourceNode.prefab | 16 +- Assets/Scenes/GameScene.unity | 158 +++++++++++++++++- Assets/Scrips/PBuilding/BuildingManager.cs | 13 +- .../PResource/PGenerator/ResourceGenerator.cs | 1 + .../Building/GoldHarvester.asset | 4 +- 9 files changed, 288 insertions(+), 14 deletions(-) diff --git a/Assets/Prefabs/Building/pfGoldHarvester.prefab b/Assets/Prefabs/Building/pfGoldHarvester.prefab index 226693e..a908960 100644 --- a/Assets/Prefabs/Building/pfGoldHarvester.prefab +++ b/Assets/Prefabs/Building/pfGoldHarvester.prefab @@ -12,6 +12,7 @@ GameObject: - component: {fileID: -5483501673927468613} - component: {fileID: 7121943037289172064} - component: {fileID: 5510354153519514294} + - component: {fileID: 8435505857811125823} m_Layer: 0 m_Name: pfGoldHarvester m_TagString: Untagged @@ -72,6 +73,32 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: staticEntity: 1 +--- !u!61 &8435505857811125823 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3517734329355596235} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 6.2, y: 5.2} + m_EdgeRadius: 0 --- !u!1 &7123165971616880015 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Building/pfStoneHarvester.prefab b/Assets/Prefabs/Building/pfStoneHarvester.prefab index 2cbbabe..2f40f9f 100644 --- a/Assets/Prefabs/Building/pfStoneHarvester.prefab +++ b/Assets/Prefabs/Building/pfStoneHarvester.prefab @@ -12,6 +12,7 @@ GameObject: - component: {fileID: -66247911382887460} - component: {fileID: -2112022716432522367} - component: {fileID: -4197449892386486031} + - component: {fileID: 3549194431606082666} m_Layer: 0 m_Name: pfStoneHarvester m_TagString: Untagged @@ -72,6 +73,32 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: staticEntity: 1 +--- !u!61 &3549194431606082666 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3517734329355596235} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 6.2, y: 5.2} + m_EdgeRadius: 0 --- !u!1 &7123165971616880015 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Building/pfWoodHarvester.prefab b/Assets/Prefabs/Building/pfWoodHarvester.prefab index 912d31b..ec3f358 100644 --- a/Assets/Prefabs/Building/pfWoodHarvester.prefab +++ b/Assets/Prefabs/Building/pfWoodHarvester.prefab @@ -12,6 +12,7 @@ GameObject: - component: {fileID: -5483501673927468613} - component: {fileID: 7121943037289172064} - component: {fileID: 2001307258709095567} + - component: {fileID: 746458151841036994} m_Layer: 0 m_Name: pfWoodHarvester m_TagString: Untagged @@ -72,6 +73,32 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: staticEntity: 1 +--- !u!61 &746458151841036994 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3517734329355596235} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 6.2, y: 5.2} + m_EdgeRadius: 0 --- !u!1 &7123165971616880015 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/ResourceNode/pfGoldResourceNode.prefab b/Assets/Prefabs/ResourceNode/pfGoldResourceNode.prefab index 9e1c15f..3e73d33 100644 --- a/Assets/Prefabs/ResourceNode/pfGoldResourceNode.prefab +++ b/Assets/Prefabs/ResourceNode/pfGoldResourceNode.prefab @@ -12,8 +12,9 @@ GameObject: - component: {fileID: 6489814578582050358} - component: {fileID: 2704560025984618176} - component: {fileID: 9178035131945299688} + - component: {fileID: -1118847016100195170} m_Layer: 0 - m_Name: GoldResourceNode + m_Name: pfGoldResourceNode m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -76,6 +77,32 @@ CircleCollider2D: m_Offset: {x: -0.05, y: 0} serializedVersion: 2 m_Radius: 0.5 +--- !u!61 &-1118847016100195170 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5270378484136657655} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 --- !u!1 &6788625525579398857 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/ResourceNode/pfStoneResourceNode.prefab b/Assets/Prefabs/ResourceNode/pfStoneResourceNode.prefab index f1a0cb7..220e3fb 100644 --- a/Assets/Prefabs/ResourceNode/pfStoneResourceNode.prefab +++ b/Assets/Prefabs/ResourceNode/pfStoneResourceNode.prefab @@ -92,9 +92,9 @@ GameObject: - component: {fileID: 2663199901599497863} - component: {fileID: 2663199901599497862} - component: {fileID: 2663199901599497857} - - component: {fileID: 2663199901599497856} + - component: {fileID: 3308966918667719786} m_Layer: 0 - m_Name: StoneResourceNode + m_Name: pfStoneResourceNode m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -141,8 +141,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: AvailableResources: 01000000 ---- !u!58 &2663199901599497856 -CircleCollider2D: +--- !u!70 &3308966918667719786 +CapsuleCollider2D: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -151,12 +151,12 @@ CircleCollider2D: m_Enabled: 1 m_Density: 1 m_Material: {fileID: 0} - m_IsTrigger: 1 + m_IsTrigger: 0 m_UsedByEffector: 0 m_UsedByComposite: 0 - m_Offset: {x: 0.15, y: -0.15} - serializedVersion: 2 - m_Radius: 0.5 + m_Offset: {x: 0.1, y: 0.03} + m_Size: {x: 2.3, y: 1.15} + m_Direction: 1 --- !u!1 &2663199902348674213 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/GameScene.unity b/Assets/Scenes/GameScene.unity index 0d745c0..4981560 100644 --- a/Assets/Scenes/GameScene.unity +++ b/Assets/Scenes/GameScene.unity @@ -1773,12 +1773,12 @@ PrefabInstance: - target: {fileID: 1433657386246857203, guid: cbf1b08779e480548a481d6ad59c97df, type: 3} propertyPath: m_LocalPosition.x - value: 2.483 + value: 2.294 objectReference: {fileID: 0} - target: {fileID: 1433657386246857203, guid: cbf1b08779e480548a481d6ad59c97df, type: 3} propertyPath: m_LocalPosition.y - value: 0 + value: 0.007 objectReference: {fileID: 0} - target: {fileID: 1433657386246857203, guid: cbf1b08779e480548a481d6ad59c97df, type: 3} @@ -1835,6 +1835,11 @@ PrefabInstance: propertyPath: m_SortingOrder value: 0 objectReference: {fileID: 0} + - target: {fileID: 2542324283749245366, guid: cbf1b08779e480548a481d6ad59c97df, + type: 3} + propertyPath: m_SortingOrder + value: 0 + objectReference: {fileID: 0} - target: {fileID: 3562459056459611400, guid: cbf1b08779e480548a481d6ad59c97df, type: 3} propertyPath: m_SortingOrder @@ -1911,3 +1916,152 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 1dffbccb1338e3141af5f652e7224264, type: 3} +--- !u!1001 &2663199901850048242 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2663199901348565754, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_SortingOrder + value: 160 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497859, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_Name + value: StoneResourceNode + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_LocalPosition.x + value: -3.152 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_LocalPosition.y + value: -1.604 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_RootOrder + value: 13 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2663199901599497863, guid: 6db101028cb49164a9d167bc480228d9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6db101028cb49164a9d167bc480228d9, type: 3} +--- !u!1001 &6203125430293430537 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_LocalPosition.x + value: 6.052 + objectReference: {fileID: 0} + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_LocalPosition.y + value: -2.779 + objectReference: {fileID: 0} + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_RootOrder + value: 14 + objectReference: {fileID: 0} + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4410099384192478908, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5270378484136657655, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_Name + value: GoldResourceNode + objectReference: {fileID: 0} + - target: {fileID: 6397114592151128435, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, + type: 3} + propertyPath: m_SortingOrder + value: 277 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: -1118847016100195170, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 28d2eb7516b7fd1479d1666ecc0bba2f, type: 3} diff --git a/Assets/Scrips/PBuilding/BuildingManager.cs b/Assets/Scrips/PBuilding/BuildingManager.cs index 8734b14..b31dd5b 100644 --- a/Assets/Scrips/PBuilding/BuildingManager.cs +++ b/Assets/Scrips/PBuilding/BuildingManager.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using UnityEngine; using UnityEngine.EventSystems; @@ -53,7 +54,11 @@ private void Update() if (HasSelectedBuildingToBuild && Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject()) { - Instantiate(_activeBuildingType.Prefab, UIUtils.GetMouseWorldPosition(), Quaternion.identity); + Vector3 mouseWorldPosition = UIUtils.GetMouseWorldPosition(); + if (CanBuildHere(_activeBuildingType, mouseWorldPosition)) + { + Instantiate(_activeBuildingType.Prefab, mouseWorldPosition, Quaternion.identity); + } } } @@ -68,5 +73,11 @@ public void UnsetActiveBuildingType() _activeBuildingType = null; OnActiveBuildingTypeChanged?.Invoke(this, new OnActiveBuildingTypeChangedEvent(null)); } + + private bool CanBuildHere(BuildingTypeSO buildingType, Vector3 position) + { + BoxCollider2D boxCollider2D = buildingType.Prefab.GetComponent(); + return Physics2D.OverlapBoxAll(position + (Vector3) boxCollider2D.offset, boxCollider2D.size, 0).Length == 0; + } } } \ No newline at end of file diff --git a/Assets/Scrips/PResource/PGenerator/ResourceGenerator.cs b/Assets/Scrips/PResource/PGenerator/ResourceGenerator.cs index 9e77c75..d68bad8 100644 --- a/Assets/Scrips/PResource/PGenerator/ResourceGenerator.cs +++ b/Assets/Scrips/PResource/PGenerator/ResourceGenerator.cs @@ -33,6 +33,7 @@ private void Start() _resourceAmountGeneratedXTick = Physics2D.OverlapCircleAll(transform.position, 5f) .ToList() .Select(item => item.GetComponent()) + .Where(item => item != null) .SelectMany(resourceNode => resourceNode.AvailableResources.Intersect(_resourceGeneratorDataHolder.GetResourceIds)) .GroupBy(id => id, id => id) .ToDictionary( diff --git a/Assets/ScriptableObjects/Building/GoldHarvester.asset b/Assets/ScriptableObjects/Building/GoldHarvester.asset index b367fad..5546818 100644 --- a/Assets/ScriptableObjects/Building/GoldHarvester.asset +++ b/Assets/ScriptableObjects/Building/GoldHarvester.asset @@ -18,6 +18,6 @@ MonoBehaviour: resourcesData: m_keys: 00000000 m_values: - - amount: 15 - generationSpan: 30 + - amount: 1 + generationSpan: 5 icon: {fileID: 21300000, guid: 8ead931dd91bff8489e75de9c414f17f, type: 3}