using Obvious.Soap; using SoapCustomVariable; using UnityEngine; public class PhoneController : MonoBehaviour { [SerializeField] private BoolVariable isPhoneEnabled; [SerializeField] private UI_PlayerGeoPoint playerGeoPoint; [SerializeField] private FSMVariable playerState; [SerializeField] private BoolVariable isPhoneButtonPress; private void OnEnable() { isPhoneEnabled.OnValueChanged += IsPhoneEnabled_OnValueChanged; isPhoneButtonPress.OnValueChanged += IsPhoneButtonPressOnOnValueChanged; playerState.OnValueChanged += PlayerStateOnOnValueChanged; } private void OnDisable() { isPhoneEnabled.OnValueChanged -= IsPhoneEnabled_OnValueChanged; isPhoneButtonPress.OnValueChanged -= IsPhoneButtonPressOnOnValueChanged; playerState.OnValueChanged -= PlayerStateOnOnValueChanged; } private void PlayerStateOnOnValueChanged(State obj) { if (obj != State.idle) { isPhoneEnabled.Value = false; } } private void IsPhoneButtonPressOnOnValueChanged(bool isPressed) { State value = playerState.Value; if ((value == State.idle || value == State.vehicle || value == State.vehicleFishing) && isPressed) { isPhoneEnabled.Value = !isPhoneEnabled.Value; } } private void IsPhoneEnabled_OnValueChanged(bool value) { base.transform.GetChild(0).gameObject.SetActive(value); playerGeoPoint.UpdatePlayerPosition(); } }