44public class MapTileWeightController : MonoBehaviour , IPrimaryWindowElement , IMapEditingElement
55{
66 private MapTile mapTile ;
7- private bool mapTileIsSelected ;
8- private bool inputIsActive = true ;
9- private bool tilesCanBeHovered = true ;
7+ private bool hoveringTilesIsLocked ;
8+ private bool panelUIHoverWasDetected ;
109 private UserInputController userInputController ;
11- private VisualiserEventsManager visualiserEventsManager ;
10+ private HoveredMapTileManager hoveredMapTileManager ;
11+ private PanelUIHoverDetectionManager panelUIHoverDetectionManager ;
1212
1313 public void SetPrimaryWindowElementActive ( bool active )
1414 {
15- inputIsActive = active ;
15+ hoveringTilesIsLocked = ! active ;
16+ panelUIHoverWasDetected = false ;
17+ mapTile = null ;
1618 }
1719
1820 public void SetMapEditingElementActive ( bool active )
1921 {
20- tilesCanBeHovered = active ;
22+ hoveringTilesIsLocked = ! active ;
2123 }
2224
2325 private void Awake ( )
2426 {
2527 userInputController = FindFirstObjectByType < UserInputController > ( ) ;
26- visualiserEventsManager = FindFirstObjectByType < VisualiserEventsManager > ( ) ;
28+ hoveredMapTileManager = FindFirstObjectByType < HoveredMapTileManager > ( ) ;
29+ panelUIHoverDetectionManager = FindFirstObjectByType < PanelUIHoverDetectionManager > ( ) ;
2730
2831 RegisterToListeners ( true ) ;
2932 }
@@ -41,10 +44,15 @@ private void RegisterToListeners(bool register)
4144 {
4245 userInputController . wheelScrolledEvent . AddListener ( OnWheelScrolled ) ;
4346 }
44-
45- if ( visualiserEventsManager != null )
47+
48+ if ( hoveredMapTileManager != null )
49+ {
50+ hoveredMapTileManager . hoveredMapTileWasChangedEvent . AddListener ( OnHoveredMapTileWasChanged ) ;
51+ }
52+
53+ if ( panelUIHoverDetectionManager != null )
4654 {
47- visualiserEventsManager . eventReceivedEvent . AddListener ( OnEventReceived ) ;
55+ panelUIHoverDetectionManager . panelUIHoverDetectionStateWasChangedEvent . AddListener ( OnPanelUIHoverDetectionStateWasChanged ) ;
4856 }
4957 }
5058 else
@@ -53,17 +61,22 @@ private void RegisterToListeners(bool register)
5361 {
5462 userInputController . wheelScrolledEvent . RemoveListener ( OnWheelScrolled ) ;
5563 }
56-
57- if ( visualiserEventsManager != null )
64+
65+ if ( hoveredMapTileManager != null )
66+ {
67+ hoveredMapTileManager . hoveredMapTileWasChangedEvent . RemoveListener ( OnHoveredMapTileWasChanged ) ;
68+ }
69+
70+ if ( panelUIHoverDetectionManager != null )
5871 {
59- visualiserEventsManager . eventReceivedEvent . RemoveListener ( OnEventReceived ) ;
72+ panelUIHoverDetectionManager . panelUIHoverDetectionStateWasChangedEvent . RemoveListener ( OnPanelUIHoverDetectionStateWasChanged ) ;
6073 }
6174 }
6275 }
6376
6477 private void OnWheelScrolled ( Vector2 scrollVector )
6578 {
66- if ( ! inputIsActive )
79+ if ( hoveringTilesIsLocked || panelUIHoverWasDetected )
6780 {
6881 return ;
6982 }
@@ -74,12 +87,10 @@ private void OnWheelScrolled(Vector2 scrollVector)
7487 MapTileType . Impassable
7588 } ;
7689
77- if ( mapTileIsSelected || mapTile == null || ! allowedMapTileTypes . Contains ( mapTile . GetTileType ( ) ) )
90+ if ( mapTile != null && allowedMapTileTypes . Contains ( mapTile . GetTileType ( ) ) )
7891 {
79- return ;
92+ ModifyWeightOfMapTile ( Mathf . RoundToInt ( scrollVector . y ) ) ;
8093 }
81-
82- ModifyWeightOfMapTile ( Mathf . RoundToInt ( scrollVector . y ) ) ;
8394 }
8495
8596 private void ModifyWeightOfMapTile ( int weightValue )
@@ -90,44 +101,13 @@ private void ModifyWeightOfMapTile(int weightValue)
90101 }
91102 }
92103
93- private void OnEventReceived ( VisualiserEvent visualiserEvent )
104+ private void OnHoveredMapTileWasChanged ( MapTile mapTile )
94105 {
95- if ( ! tilesCanBeHovered || visualiserEvent is not MapTileBoolVisualiserEvent mapTileBoolVisualiserEvent )
96- {
97- return ;
98- }
99-
100- if ( mapTileBoolVisualiserEvent . GetVisualiserEventType ( ) != VisualiserEventType . MapTileHoverStateWasChanged || ! mapTileIsSelected )
101- {
102- UpdateMapTileReference ( mapTileBoolVisualiserEvent ) ;
103- }
104- }
105-
106- private void UpdateMapTileReference ( MapTileBoolVisualiserEvent mapTileBoolVisualiserEvent )
107- {
108- if ( MapTileShouldBeSelected ( mapTileBoolVisualiserEvent ) )
109- {
110- mapTile = mapTileBoolVisualiserEvent . GetMapTile ( ) ;
111- }
112- else if ( MapTileShouldBeDeselected ( mapTileBoolVisualiserEvent ) )
113- {
114- mapTile = null ;
115- }
116-
117- mapTileIsSelected = mapTileBoolVisualiserEvent . GetVisualiserEventType ( ) == VisualiserEventType . MapTileSelectionStateWasChanged && mapTileBoolVisualiserEvent . GetBoolValue ( ) ;
106+ this . mapTile = mapTile ;
118107 }
119108
120- private bool MapTileShouldBeSelected ( MapTileBoolVisualiserEvent mapTileBoolVisualiserEvent )
109+ private void OnPanelUIHoverDetectionStateWasChanged ( bool detected )
121110 {
122- var mapTileHoverStateIsSetAsSelected = mapTileBoolVisualiserEvent . GetVisualiserEventType ( ) == VisualiserEventType . MapTileHoverStateWasChanged && mapTileBoolVisualiserEvent . GetBoolValue ( ) ;
123-
124- return mapTile == null && mapTileHoverStateIsSetAsSelected ;
125- }
126-
127- private bool MapTileShouldBeDeselected ( MapTileBoolVisualiserEvent mapTileBoolVisualiserEvent )
128- {
129- var mapTileHoverStateIsSetAsNotSelected = mapTileBoolVisualiserEvent . GetVisualiserEventType ( ) == VisualiserEventType . MapTileHoverStateWasChanged && ! mapTileBoolVisualiserEvent . GetBoolValue ( ) ;
130-
131- return mapTile != null && mapTileHoverStateIsSetAsNotSelected ;
111+ panelUIHoverWasDetected = detected ;
132112 }
133113}
0 commit comments