Skip to content

Commit 6d3acbd

Browse files
author
JasonNumberThirteen
committed
Rework a flow of events related to map tiles
1 parent 23cbcc3 commit 6d3acbd

9 files changed

Lines changed: 356 additions & 135 deletions

Assets/Project/Scenes/AStarVisualiserScene.unity

Lines changed: 138 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Project/Scripts/Game Objects/HoveredMapTileIndicator.cs

Lines changed: 37 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,20 @@ public class HoveredMapTileIndicator : MonoBehaviour, IMapEditingElement
66

77
private static readonly float ANIMATION_TRANSITION_MINIMUM_SCALE = 0.8f;
88

9-
private VisualiserEventsManager visualiserEventsManager;
10-
private MapTile mapTile;
11-
private bool mapTileIsSelected;
12-
private bool indicatorCanBeShown = true;
9+
private MapTile currentMapTile;
10+
private MapTile previousMapTile;
11+
private HoveredMapTileManager hoveredMapTileManager;
12+
private SelectedMapTileManager selectedMapTileManager;
1313

1414
public void SetMapEditingElementActive(bool active)
1515
{
16-
indicatorCanBeShown = active;
16+
gameObject.SetActive(active);
1717
}
1818

1919
private void Awake()
2020
{
21-
visualiserEventsManager = FindFirstObjectByType<VisualiserEventsManager>();
21+
hoveredMapTileManager = FindFirstObjectByType<HoveredMapTileManager>();
22+
selectedMapTileManager = FindFirstObjectByType<SelectedMapTileManager>();
2223

2324
RegisterToListeners(true);
2425
}
@@ -30,26 +31,36 @@ private void OnDestroy()
3031

3132
private void OnEnable()
3233
{
33-
if(mapTile != null)
34+
if(currentMapTile != null)
3435
{
35-
transform.position = mapTile.transform.position;
36+
transform.position = currentMapTile.transform.position;
3637
}
3738
}
3839

3940
private void RegisterToListeners(bool register)
4041
{
4142
if(register)
4243
{
43-
if(visualiserEventsManager != null)
44+
if(hoveredMapTileManager != null)
4445
{
45-
visualiserEventsManager.eventReceivedEvent.AddListener(OnEventReceived);
46+
hoveredMapTileManager.hoveredMapTileWasChangedEvent.AddListener(OnHoveredMapTileWasChanged);
47+
}
48+
49+
if(selectedMapTileManager != null)
50+
{
51+
selectedMapTileManager.selectedMapTileWasChangedEvent.AddListener(OnSelectedMapTileWasChanged);
4652
}
4753
}
4854
else
4955
{
50-
if(visualiserEventsManager != null)
56+
if(hoveredMapTileManager != null)
57+
{
58+
hoveredMapTileManager.hoveredMapTileWasChangedEvent.RemoveListener(OnHoveredMapTileWasChanged);
59+
}
60+
61+
if(selectedMapTileManager != null)
5162
{
52-
visualiserEventsManager.eventReceivedEvent.RemoveListener(OnEventReceived);
63+
selectedMapTileManager.selectedMapTileWasChangedEvent.RemoveListener(OnSelectedMapTileWasChanged);
5364
}
5465
}
5566
}
@@ -59,48 +70,32 @@ private void Start()
5970
gameObject.SetActive(false);
6071
}
6172

62-
private void OnEventReceived(VisualiserEvent visualiserEvent)
73+
private void OnHoveredMapTileWasChanged(MapTile mapTile)
6374
{
64-
if(!indicatorCanBeShown || visualiserEvent is not MapTileBoolVisualiserEvent mapTileBoolVisualiserEvent)
75+
if(previousMapTile != null)
6576
{
6677
return;
6778
}
68-
69-
UpdateMapTileReference(mapTileBoolVisualiserEvent);
70-
UpdateIndicatorState(mapTileBoolVisualiserEvent);
79+
80+
currentMapTile = mapTile;
81+
82+
gameObject.SetActive(currentMapTile != null);
7183
}
7284

73-
private void UpdateMapTileReference(MapTileBoolVisualiserEvent mapTileBoolVisualiserEvent)
85+
private void OnSelectedMapTileWasChanged(MapTile mapTile)
7486
{
75-
var mapTile = mapTileBoolVisualiserEvent.GetMapTile();
76-
var mapTileIsDefined = mapTile != null;
77-
var eventType = mapTileBoolVisualiserEvent.GetVisualiserEventType();
78-
var stateIsEnabled = mapTileBoolVisualiserEvent.GetBoolValue();
79-
80-
switch (eventType)
87+
if(mapTile != null)
8188
{
82-
case VisualiserEventType.MapTileHoverStateWasChanged:
83-
this.mapTile = mapTileIsDefined && stateIsEnabled ? mapTile : null;
84-
break;
85-
86-
case VisualiserEventType.MapTileSelectionStateWasChanged:
87-
this.mapTile = mapTileIsDefined && !stateIsEnabled ? mapTile : null;
88-
break;
89+
previousMapTile = mapTile;
90+
currentMapTile = null;
8991
}
90-
}
91-
92-
private void UpdateIndicatorState(MapTileBoolVisualiserEvent mapTileBoolVisualiserEvent)
93-
{
94-
var eventType = mapTileBoolVisualiserEvent.GetVisualiserEventType();
95-
96-
if(eventType == VisualiserEventType.MapTileHoverStateWasChanged && mapTileIsSelected)
92+
else
9793
{
98-
return;
94+
currentMapTile = previousMapTile;
95+
previousMapTile = null;
9996
}
100-
101-
mapTileIsSelected = eventType == VisualiserEventType.MapTileSelectionStateWasChanged && mapTileBoolVisualiserEvent.GetBoolValue();
10297

103-
gameObject.SetActive(mapTile != null);
98+
gameObject.SetActive(currentMapTile != null);
10499
}
105100

106101
private void Update()

0 commit comments

Comments
 (0)