DRHPS/code-csharp/en_US/HypotheticalGoalManager.cs
2025-04-08 11:31:35 +08:00

118 lines
3.9 KiB
C#

using UnityEngine;
using UnityEngine.UI;
public class HypotheticalGoalManager : MonoBehaviour
{
private static HypotheticalGoalManager instance;
[SerializeField]
private Animator GoalCheckmarkAnimator;
[SerializeField]
private AudioSource GoalSource;
[SerializeField]
private AudioClip GoalCompleteSound;
[SerializeField]
private RawImage GoalCheckmark_LogPreview;
public static HypotheticalGoalManager Instance => instance;
public void CompleteGoal(HypothesisGoal goal, bool PlaySound = true)
{
int requiredTasks = goal.RequiredTasks;
string key = "HypothesisGoal_" + goal.GoalPlayprefName;
int @int = PlayerPrefs.GetInt(key, 0);
PlayerPrefs.SetInt(key, requiredTasks);
Debug.Log($"Goal: {goal.GoalPlayprefName}, Current: {@int}, Required: {requiredTasks}");
if (@int >= requiredTasks)
{
Debug.Log("Goal already completed.");
return;
}
bool flag = true;
HypothesisGoal[] hypothesisGoals = goal.ParentHypothesis.HypothesisGoals;
foreach (HypothesisGoal hypothesisGoal in hypothesisGoals)
{
int int2 = PlayerPrefs.GetInt("HypothesisGoal_" + hypothesisGoal.GoalPlayprefName, 0);
Debug.Log($"Checking goal {hypothesisGoal.GoalPlayprefName}: {int2}/{hypothesisGoal.RequiredTasks}");
if (int2 < hypothesisGoal.RequiredTasks)
{
flag = false;
}
}
if (flag)
{
Debug.Log("All goals completed!");
if (goal.ParentHypothesis.LogRewardedOnGoalsCompleted != null)
{
CollectibleLog logRewardedOnGoalsCompleted = goal.ParentHypothesis.LogRewardedOnGoalsCompleted;
PlayerPrefs.SetInt(logRewardedOnGoalsCompleted.LogPlayerPrefName, 1);
GoalCheckmark_LogPreview.texture = logRewardedOnGoalsCompleted.LogPreview.texture;
GoalCheckmark_LogPreview.rectTransform.sizeDelta = logRewardedOnGoalsCompleted.LogPreviewScale / 5f;
GoalCheckmarkAnimator.Play("ContextGoal_GoalComplete_NewLog", -1, 0f);
}
else
{
GoalCheckmarkAnimator.Play("ContextGoal_GoalComplete", -1, 0f);
}
}
else
{
Debug.Log("Not all goals completed.");
GoalCheckmarkAnimator.Play("ContextGoal_GoalComplete", -1, 0f);
}
if (PlaySound)
{
GoalSource.PlayOneShot(GoalCompleteSound);
}
}
public void IncrementGoal(HypothesisGoal goal, int amount)
{
int requiredTasks = goal.RequiredTasks;
int @int = PlayerPrefs.GetInt("HypothesisGoal_" + goal.GoalPlayprefName, 0);
int num = @int;
if (@int + amount >= requiredTasks)
{
num = requiredTasks;
CompleteGoal(goal);
}
else
{
num = @int + amount;
}
PlayerPrefs.SetInt("HypothesisGoal_" + goal.GoalPlayprefName, num);
}
public void IncrementGoal_Silent(HypothesisGoal goal, int amount)
{
int requiredTasks = goal.RequiredTasks;
int @int = PlayerPrefs.GetInt("HypothesisGoal_" + goal.GoalPlayprefName, 0);
int num = @int;
if (@int + amount >= requiredTasks)
{
num = requiredTasks;
CompleteGoal(goal, PlaySound: false);
}
else
{
num = @int + amount;
}
PlayerPrefs.SetInt("HypothesisGoal_" + goal.GoalPlayprefName, num);
}
private void Awake()
{
if (instance != null && instance != this)
{
Object.Destroy(base.gameObject);
}
else
{
instance = this;
}
}
}