rise-and-swine/Assets/Scripts/Assembly-CSharp/VisibilityCondition.cs
2023-02-25 23:04:03 -05:00

140 lines
2.9 KiB
C#

using System;
using UnityEngine;
public class VisibilityCondition : WPFMonoBehaviour
{
private void Awake()
{
this.m_renderer = base.gameObject.GetComponent<Renderer>();
this.m_collider = base.gameObject.GetComponent<Collider>();
this.m_transform = base.gameObject.transform;
if (Singleton<VisibilityConditionManager>.IsInstantiated())
{
Singleton<VisibilityConditionManager>.Instance.SubscribeToConditionChange(new VisibilityConditionManager.ConditionChange(this.SetEnabled), this.condition);
}
}
private void OnDestroy()
{
if (Singleton<VisibilityConditionManager>.IsInstantiated())
{
Singleton<VisibilityConditionManager>.Instance.UnsubscribeToConditionChange(new VisibilityConditionManager.ConditionChange(this.SetEnabled), this.condition);
}
}
public void UpdateState()
{
if (Singleton<VisibilityConditionManager>.IsInstantiated())
{
this.SetEnabled(this.condition, Singleton<VisibilityConditionManager>.Instance.GetState(this.condition));
}
}
private void SetEnabled(Condition condition, bool enabled)
{
if (condition != this.condition)
{
return;
}
bool flag = false;
if (this.not)
{
enabled = !enabled;
}
if (this.m_renderer && this.m_renderer.enabled != enabled)
{
flag = true;
this.m_renderer.enabled = enabled;
}
if (this.m_collider && this.m_collider.enabled != enabled)
{
flag = true;
this.m_collider.enabled = enabled;
}
if (flag || !this.m_renderer)
{
int childCount = this.m_transform.childCount;
for (int i = 0; i < childCount; i++)
{
Transform child = this.m_transform.GetChild(i);
Renderer component = child.GetComponent<Renderer>();
if (component && component.enabled != enabled)
{
component.enabled = enabled;
}
}
}
if (this.disableGameObject)
{
base.gameObject.SetActive(enabled);
}
}
public Condition condition;
public bool not;
[SerializeField]
private bool disableGameObject;
private Renderer m_renderer;
private Collider m_collider;
private Transform m_transform;
[Serializable]
public struct ConditionStruct
{
public Condition condition;
public bool not;
}
public enum Condition
{
None,
HasValidContraption,
ShowEngineButton,
HasRockets,
IsPausedWhileRunning,
HasContraption,
QuestModeCanBuild,
IsPuzzleMode,
ShowPauseMenuReplayButton,
HasMotorWheels,
HasFans,
HasPropellers,
HasRotors,
ShowBuyBluePrintButton,
ShowAutoBuildButton,
ShowTutorialButton,
IsAutoBuilding,
CanClearContraption,
IsNotAutoBuilding,
ShowBuildModeButtons,
IAPEnabled,
ChiefPigExploded,
ShowSuperMechanicSwitch,
IsSandbox,
ShowSchematicsButton,
EveryPlayAvailable,
EveryPlayAvailableAndRecorded,
EveryPlayRecording,
GameCenterAvailable,
IsFreeVersion,
IsHDVersion,
IsOdyssey,
IsIOS,
CheatsEnabled,
IsDebugBuild,
CollectedFreeShopLootcrate,
HasNewParts,
LessCheats,
HasNetwork,
BoughtFieldOfDreams,
DailyChallengeComplete,
IsCakeRaceMode,
IsDecember
}
}