@@ -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