diff --git a/Assets/Scenes/NewMainMenu.unity b/Assets/Scenes/NewMainMenu.unity index 1045a4b3..e2f3f424 100644 --- a/Assets/Scenes/NewMainMenu.unity +++ b/Assets/Scenes/NewMainMenu.unity @@ -7924,7 +7924,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 319, y: -226} + m_AnchoredPosition: {x: 294, y: -126} m_SizeDelta: {x: 482.9315, y: 577.5637} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &92667329 @@ -20077,10 +20077,10 @@ RectTransform: m_Father: {fileID: 1844323541} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 408.28363, y: -279.12} - m_SizeDelta: {x: 816.56726, y: 180} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 180} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &223373605 GameObject: @@ -21943,7 +21943,7 @@ RectTransform: m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0.427, y: 1} + m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} @@ -22033,10 +22033,10 @@ RectTransform: m_Father: {fileID: 1844323541} m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 408.28363, y: -657.36} - m_SizeDelta: {x: 816.56726, y: 180} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 180} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &323737875 GameObject: @@ -26924,10 +26924,10 @@ RectTransform: m_Father: {fileID: 1844323541} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 408.28363, y: -373.68} - m_SizeDelta: {x: 816.56726, y: 4} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 4} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &329939466 MonoBehaviour: @@ -57570,7 +57570,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &644244602 RectTransform: m_ObjectHideFlags: 0 @@ -57590,9 +57590,9 @@ RectTransform: m_Father: {fileID: 2102651775} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 270, y: -153.85} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 490, y: 130.7746} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &644244603 @@ -74941,9 +74941,9 @@ RectTransform: m_Father: {fileID: 1342282033} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: -1797, y: -291} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 389, y: -85} m_SizeDelta: {x: 761.9927, y: 761.9927} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &744371852 @@ -80794,10 +80794,10 @@ RectTransform: m_Father: {fileID: 1844323541} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 408.28363, y: -90} - m_SizeDelta: {x: 816.56726, y: 180} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 180} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &831510121 GameObject: @@ -80831,10 +80831,10 @@ RectTransform: m_Father: {fileID: 1844323541} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 408.28363, y: -184.56} - m_SizeDelta: {x: 816.56726, y: 4} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 4} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &831510123 MonoBehaviour: @@ -81916,6 +81916,7 @@ MonoBehaviour: type: 3} grid: {fileID: 1361972682} dataFilePath: ChosenWeapon.json + chosenWeapon: {fileID: 0} --- !u!114 &936591823 MonoBehaviour: m_ObjectHideFlags: 0 @@ -88697,7 +88698,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &1013893794 RectTransform: m_ObjectHideFlags: 0 @@ -88777,8 +88778,10 @@ MonoBehaviour: musicOnSprite: {fileID: 21300000, guid: eb165af05aa2e4ab2bcad217611774b8, type: 3} musicOffSprite: {fileID: 21300000, guid: b1f42bbbfffc44202b66381ab8b622ee, type: 3} sfxImage: {fileID: 1844205148} - sfxOnSprite: {fileID: 21300000, guid: 901d64fc6ad9d44799c2ad0fd4f182d2, type: 3} - sfxOffSprite: {fileID: 21300000, guid: 78757b0623f3b4309b7cc69c4769ae37, type: 3} + sfxOnSprite: {fileID: -9015007665768789201, guid: 4121167a6423ec74381c7b130b40092b, + type: 3} + sfxOffSprite: {fileID: -8419751542767139993, guid: 4121167a6423ec74381c7b130b40092b, + type: 3} --- !u!1 &1014179672 GameObject: m_ObjectHideFlags: 0 @@ -101175,10 +101178,10 @@ RectTransform: m_Father: {fileID: 1844323541} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 408.28363, y: -468.24} - m_SizeDelta: {x: 816.56726, y: 180} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 180} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1151852833 GameObject: @@ -108557,7 +108560,7 @@ RectTransform: m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} @@ -109146,10 +109149,10 @@ RectTransform: m_Father: {fileID: 1037253823} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 549, y: -386} - m_SizeDelta: {x: -3240, y: 772} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -540, y: 439} + m_SizeDelta: {x: -1080, y: 873.5664} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &1342282034 CanvasRenderer: @@ -133324,6 +133327,7 @@ GameObject: - component: {fileID: 1547182935} - component: {fileID: 1547182937} - component: {fileID: 1547182936} + - component: {fileID: 1547182938} m_Layer: 5 m_Name: Attack m_TagString: Untagged @@ -133393,6 +133397,21 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1547182934} m_CullTransparentMesh: 1 +--- !u!114 &1547182938 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1547182934} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a2920b048f18f5946b93c003a602952b, type: 3} + m_Name: + m_EditorClassIdentifier: + attackText: {fileID: 1033038899} + reloadText: {fileID: 985521934} + chosenWeaponDataPath: ChosenWeapon.json --- !u!1 &1550290323 GameObject: m_ObjectHideFlags: 0 @@ -134211,7 +134230,7 @@ RectTransform: m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} @@ -134449,10 +134468,10 @@ RectTransform: m_Father: {fileID: 1844323541} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 408.28363, y: -562.8} - m_SizeDelta: {x: 816.56726, y: 4} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 4} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1579181538 MonoBehaviour: @@ -138844,7 +138863,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 464.06} - m_SizeDelta: {x: 816.56726, y: 747.36} + m_SizeDelta: {x: 816.56726, y: 0} m_Pivot: {x: 0.5, y: 1} --- !u!114 &1844323542 MonoBehaviour: @@ -139210,8 +139229,8 @@ RectTransform: m_Father: {fileID: 597565997} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.427, y: 0} - m_AnchorMax: {x: 0.427, y: 1} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} @@ -140304,7 +140323,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -434, y: -47} + m_AnchoredPosition: {x: -453, y: 200} m_SizeDelta: {x: 177, y: 188} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1936347083 @@ -141647,7 +141666,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &2008867880 RectTransform: m_ObjectHideFlags: 0 @@ -141667,9 +141686,9 @@ RectTransform: m_Father: {fileID: 2102651775} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 270, y: -198.275} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 490, y: 130.7746} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2008867881 @@ -142631,7 +142650,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &2102651775 RectTransform: m_ObjectHideFlags: 0 @@ -142650,7 +142669,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 270, y: 0} + m_AnchoredPosition: {x: -562, y: -44} m_SizeDelta: {x: 540, y: 663.1} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2102651776 @@ -142671,7 +142690,7 @@ MonoBehaviour: m_Top: 0 m_Bottom: 0 m_ChildAlignment: 4 - m_Spacing: -130 + m_Spacing: 0 m_ChildForceExpandWidth: 1 m_ChildForceExpandHeight: 1 m_ChildControlWidth: 0 diff --git a/Assets/Scripts/HexFiled/PaintedController.cs b/Assets/Scripts/HexFiled/PaintedController.cs index 1dedc362..c8bb829f 100644 --- a/Assets/Scripts/HexFiled/PaintedController.cs +++ b/Assets/Scripts/HexFiled/PaintedController.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using Data; using UnityEngine; @@ -27,44 +28,28 @@ namespace HexFiled var hexByColorDict = DifferentHexByColor(cells); foreach (var item in hexByColorDict) { - if (item.Value.Count > 0 && item.Key != UnitColor.GREY && item.Key != cell.Color) - { - foreach (var cellNeighbour in item.Value) - { - if (UnitCurrentCell.ContainsKey(item.Key)) - { - var path = HasPath(cellNeighbour, UnitCurrentCell[item.Key].curent); - if (!path.hasPath) - { - path.field.ForEach(x => x.PaintHex(UnitColor.GREY)); - } - } - } - } if (item.Key == cell.Color && item.Value.Count >= 2 && item.Value.Count < 6 && - UnitCurrentCell.ContainsKey(cell.Color)) + UnitCurrentCell.ContainsKey(cell.Color)) { HexDirection direction = new HexDirection(); - HexDirection openDirection = new HexDirection(); - HexDirection closeDirection = new HexDirection(); for (int i = 0; i < 6; i++) { var neighbour = UnitCurrentCell[cell.Color].previos.GetNeighbor((HexDirection)i); - + if (neighbour == UnitCurrentCell[cell.Color].curent) { direction = (HexDirection)i; } } - - openDirection = direction.PlusSixtyDeg(); - closeDirection = direction.MinusSixtyDeg(); - - var path = HasPath( + var openDirection = direction.PlusSixtyDeg(); + var closeDirection = direction.MinusSixtyDeg(); + + + var path = Round( UnitCurrentCell[cell.Color].previos.GetNeighbor(closeDirection), UnitCurrentCell[cell.Color].previos.GetNeighbor(openDirection) - ); + ); if (!path.hasPath) { @@ -72,7 +57,7 @@ namespace HexFiled } else { - path = HasPath( + path = Round( UnitCurrentCell[cell.Color].previos.GetNeighbor(openDirection), UnitCurrentCell[cell.Color].previos.GetNeighbor(closeDirection) ); @@ -82,9 +67,23 @@ namespace HexFiled } } } + + if (item.Value.Count > 0 && item.Key != UnitColor.GREY && item.Key != cell.Color) + { + foreach (var path in from cellNeighbour in item.Value + where UnitCurrentCell.ContainsKey(item.Key) + select HasPath(cellNeighbour, UnitCurrentCell[item.Key].curent) + into path + where !path.hasPath + select path) + { + path.field.ForEach(x => x.PaintHex(UnitColor.GREY)); + } + } } } + private Dictionary> DifferentHexByColor(List cellsList) { Dictionary> resultDict = new Dictionary>(); @@ -102,59 +101,40 @@ namespace HexFiled return resultDict; } - private ( bool hasPath, List field ) HasPath(HexCell start, HexCell end) + private (bool hasPath, List field) Round(HexCell start, HexCell end) { + if (start.Color == _cell.Color || end.Color == _cell.Color) + { + return (true, null); + } + List closedList = new List(); HexCell currentCell = start; - Stack stackIteators = new Stack(); - stackIteators.Push(currentCell); + Stack stackIterators = new Stack(); + stackIterators.Push(currentCell); closedList.Add(currentCell); - - while (stackIteators.Count >= 0) + while (stackIterators.Count >= 0) { if (currentCell == end) return (true, closedList); List openList = new List(); - if(end.Color != UnitColor.GREY) + + foreach (var neighbour in currentCell.GetListNeighbours()) { - if (end.Color != start.Color) + if (neighbour == null) { return (true, null); } - for (int i = 0; i < 6; i++) - { - HexCell neighbour = currentCell.GetNeighbor((HexDirection)i); - if (neighbour == null) - { - return (true, null); - } - if (!closedList.Contains(neighbour) && neighbour.Color == start.Color) - { - openList.Add(neighbour); - } - } - } - else - { - - for (int i = 0; i < 6; i++) + if (closedList.Contains(neighbour) || neighbour.Color == _cell.Color) continue; + openList.Add(neighbour); + if (neighbour.GetListNeighbours().Contains(end)) { - HexCell neighbour = currentCell.GetNeighbor((HexDirection)i); - if (neighbour == null) - { - return (true, null); - } - - if (!closedList.Contains(neighbour) && - neighbour.Color != _cell.Color) - { - openList.Add(neighbour); - } + return (true, null); } } @@ -162,16 +142,81 @@ namespace HexFiled { currentCell = openList[Random.Range(0, openList.Count - 1)]; closedList.Add(currentCell); - stackIteators.Push(currentCell); + stackIterators.Push(currentCell); } else { - if (stackIteators.Count == 0) + if (stackIterators.Count == 0) { return (false, closedList); } - currentCell = stackIteators.Pop(); + currentCell = stackIterators.Pop(); + } + + if (currentCell.GetListNeighbours().Contains(end)) + { + return (true, null); + } + } + + return (false, closedList); + } + + private ( bool hasPath, List field ) HasPath(HexCell start, HexCell end) + { + if (start.Color == _cell.Color || end.Color == _cell.Color) + { + return (true, null); + } + + List closedList = new List(); + HexCell currentCell = start; + + Stack stackIterators = new Stack(); + stackIterators.Push(currentCell); + + closedList.Add(currentCell); + + + while (stackIterators.Count >= 0) + { + if (currentCell == end) + return (true, null); + + List openList = new List(); + + foreach (var neighbour in currentCell.GetListNeighbours()) + { + if (neighbour == null) + { + return (true, null); + } + + + if (closedList.Contains(neighbour) || neighbour.Color != start.Color) continue; + openList.Add(neighbour); + if (neighbour.GetListNeighbours().Contains(end)) + { + return (true, null); + } + } + + + if (openList.Count > 0) + { + currentCell = openList[Random.Range(0, openList.Count - 1)]; + closedList.Add(currentCell); + stackIterators.Push(currentCell); + } + else + { + if (stackIterators.Count == 0) + { + return (false, closedList); + } + + currentCell = stackIterators.Pop(); } if (currentCell.GetListNeighbours().Contains(end))