C
C#2mo ago
RedFox3D

Private bool gets changed

C++

using System;
using System.Collections;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Serialization;

public class OverlayManager : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
private GameObject _pressedObject;
private bool _isHolding;
public float timetoWaitForNewRightClick = 1f;

public DeckManager deckManager;
public DiscardManager discardManager;

private bool _isAreaOverlayOpen = false;
private bool _isOverlayOpen = false;

public void OnPointerDown(PointerEventData eventData)
{
if (eventData.button == PointerEventData.InputButton.Right)
{
_pressedObject = gameObject;
_isHolding = true;

if (!_isOverlayOpen)
{
StartCoroutine(HoldCheck());
}
}
}

public void OnPointerUp(PointerEventData eventData)
{
if (eventData.button == PointerEventData.InputButton.Right)
{

Debug.LogWarning("Rechtsklick losgelassen"+_isOverlayOpen);

if (_isOverlayOpen)
{
Debug.LogWarning("Schließe Overlay! Und änder Zustand zu false!");
CardOverlayManager.Instance.CloseOverlay();
_isOverlayOpen = false;
return;
}

if (_isAreaOverlayOpen && !gameObject.CompareTag("Card"))
{
_areaOverlayManager.CloseDeckOverlay();
_isAreaOverlayOpen = false;
return;
}

if (_isHolding)
{
_isHolding = false;
if (_pressedObject == gameObject)
{
OpenOverlay();

Debug.LogWarning(_isOverlayOpen);
}
}
}
}
C++

using System;
using System.Collections;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Serialization;

public class OverlayManager : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
private GameObject _pressedObject;
private bool _isHolding;
public float timetoWaitForNewRightClick = 1f;

public DeckManager deckManager;
public DiscardManager discardManager;

private bool _isAreaOverlayOpen = false;
private bool _isOverlayOpen = false;

public void OnPointerDown(PointerEventData eventData)
{
if (eventData.button == PointerEventData.InputButton.Right)
{
_pressedObject = gameObject;
_isHolding = true;

if (!_isOverlayOpen)
{
StartCoroutine(HoldCheck());
}
}
}

public void OnPointerUp(PointerEventData eventData)
{
if (eventData.button == PointerEventData.InputButton.Right)
{

Debug.LogWarning("Rechtsklick losgelassen"+_isOverlayOpen);

if (_isOverlayOpen)
{
Debug.LogWarning("Schließe Overlay! Und änder Zustand zu false!");
CardOverlayManager.Instance.CloseOverlay();
_isOverlayOpen = false;
return;
}

if (_isAreaOverlayOpen && !gameObject.CompareTag("Card"))
{
_areaOverlayManager.CloseDeckOverlay();
_isAreaOverlayOpen = false;
return;
}

if (_isHolding)
{
_isHolding = false;
if (_pressedObject == gameObject)
{
OpenOverlay();

Debug.LogWarning(_isOverlayOpen);
}
}
}
}
1 Reply
RedFox3D
RedFox3DOP2mo ago
C++


private IEnumerator HoldCheck()
{
yield return new WaitForSeconds(timetoWaitForNewRightClick);
_isHolding = false;
_pressedObject = null;
}

private void OpenOverlay()
{
switch (gameObject.tag)
{
case "Card":
CardOverlayManager.Instance.OpenOverlay(gameObject);
_isOverlayOpen = true;
Debug.LogWarning("Öffne das KartenOverlay Und änder Zustand zu true!" + _isOverlayOpen);
break;
case "Deck":
_areaOverlayManager.OpenDeckOverlay(deckManager.GetContent());
_isAreaOverlayOpen = true;
Debug.Log("Öffne das DeckOverlay");
break;
case "Discard":
_areaOverlayManager.OpenDiscardOverlay(discardManager.GetContent());
_isAreaOverlayOpen = true;
Debug.Log("Öffne das Discard Overlay");
break;
case "Tile":
Debug.Log("Öffne das Tile Overlay");
break;
case "UnitIcon":
Debug.Log("Öffne das Tile Overlay");
break;
default:
Debug.Log("Kein bekanntes Overlay vorhanden");
break;
}
}

public bool IsOverlayOpen()
{
return _isOverlayOpen && _isAreaOverlayOpen;
}
}
C++


private IEnumerator HoldCheck()
{
yield return new WaitForSeconds(timetoWaitForNewRightClick);
_isHolding = false;
_pressedObject = null;
}

private void OpenOverlay()
{
switch (gameObject.tag)
{
case "Card":
CardOverlayManager.Instance.OpenOverlay(gameObject);
_isOverlayOpen = true;
Debug.LogWarning("Öffne das KartenOverlay Und änder Zustand zu true!" + _isOverlayOpen);
break;
case "Deck":
_areaOverlayManager.OpenDeckOverlay(deckManager.GetContent());
_isAreaOverlayOpen = true;
Debug.Log("Öffne das DeckOverlay");
break;
case "Discard":
_areaOverlayManager.OpenDiscardOverlay(discardManager.GetContent());
_isAreaOverlayOpen = true;
Debug.Log("Öffne das Discard Overlay");
break;
case "Tile":
Debug.Log("Öffne das Tile Overlay");
break;
case "UnitIcon":
Debug.Log("Öffne das Tile Overlay");
break;
default:
Debug.Log("Kein bekanntes Overlay vorhanden");
break;
}
}

public bool IsOverlayOpen()
{
return _isOverlayOpen && _isAreaOverlayOpen;
}
}
After a single Frame (i tested it with update) _isOverlayOpen gets set to "false" If i open a Overlay, i wanna disable it with my next right click For some reason, that i dont understand, it doesnt work

Did you find this page helpful?