Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/QuestManager.cs
2026-03-04 10:03:45 +08:00

286 lines
11 KiB
C#

using UnityEngine;
using UnityEngine.UI;
public class QuestManager : Singleton<QuestManager>
{
[SerializeField]
private Image mainContentMaskImage;
[SerializeField]
private Camera mCamera;
[SerializeField]
private PlayerHeader playerHeader;
public Transform QuestContainer;
public Transform WeeklyQuestContainer;
public Transform MonthlyQuestContainer;
public GameObject[] QuestTypeContent;
public Sprite[] QuestTypeButtonSprites;
public Image[] QuestTypeButtonImage;
public AudioSource RewardAudioSource;
public GameObject[] QuestItemPrefabs;
public GameObject[] WeeklyQuestItemPrefabs;
public GameObject[] MonthlyQuestItemPrefabs;
public GameObject RewardPopUpPrefab;
public Text timerText;
public Text WeeklytimerText;
public Text MonthlytimerText;
public Text questpointsText;
public Text QuestPointsTitlelText;
public Text DailyCategoryText;
public Text WeeklyCategoryText;
public Text MonthlyCategoryText;
private int currentShowQuestIndex = -1;
private void Start()
{
if ((bool)FScriptsHandler.Instance)
{
playerHeader.gameObject.SetActive(value: true);
mainContentMaskImage.enabled = true;
FScriptsHandler.Instance.m_Canvas.gameObject.SetActive(value: false);
mCamera.transform.position = FScriptsHandler.Instance.m_PlayerMain.m_Camera.transform.position;
mCamera.transform.rotation = FScriptsHandler.Instance.m_PlayerMain.m_Camera.transform.rotation;
}
else if (Object.FindObjectOfType<Residence>() != null)
{
playerHeader.gameObject.SetActive(value: true);
mainContentMaskImage.enabled = true;
mCamera.transform.position = Camera.main.transform.position;
mCamera.transform.rotation = Camera.main.transform.rotation;
}
else
{
playerHeader.gameObject.SetActive(value: false);
mainContentMaskImage.enabled = false;
}
}
private void Update()
{
GameManager.Instance._playerData.QuestTimer();
GameManager.Instance._playerData.WeeklyQuestTimer();
GameManager.Instance._playerData.MonthlyQuestTimer();
ShowTimer();
}
private void OnEnable()
{
ChangeQuestConent(0);
}
private void OnDisable()
{
timerText.gameObject.SetActive(value: false);
WeeklytimerText.gameObject.SetActive(value: false);
MonthlytimerText.gameObject.SetActive(value: false);
currentShowQuestIndex = -1;
}
private void OnDestroy()
{
if (FScriptsHandler.Instance != null)
{
FScriptsHandler.Instance.m_Canvas.gameObject.SetActive(value: true);
}
}
private void InstantiateDailyQuest(int i, int cardindex)
{
QuestItem component = Object.Instantiate(QuestItemPrefabs[cardindex], QuestContainer).GetComponent<QuestItem>();
component.titleText.text = GameManager.Instance.GetQuestDescription(Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].gameQuest);
component.uid = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].uid;
component.SetProgress(Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].curentObjectiveProgress, Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].gameQuest.objectiveValue);
component.pointsText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].gameQuest.points.ToString();
component.indexOfPlayerQuest = i;
}
private void InstantiateWeeklyQuest(int i, int cardindex)
{
WeeklyQuestItem component = Object.Instantiate(WeeklyQuestItemPrefabs[cardindex], WeeklyQuestContainer).GetComponent<WeeklyQuestItem>();
component.QuestDescriptionText.text = GameManager.Instance.GetQuestDescription(Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].gameQuest);
component.QuestTypeText.text = GetQuestCategory(Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].gameQuest);
component.uid = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].uid;
component.RewardText.text = "$" + Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].gameQuest.reward;
component.SetProgress(Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].curentObjectiveProgress, Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].gameQuest.objectiveValue);
component.indexOfPlayerQuest = i;
}
private void InstantiateMonthlyQuest(int i, int cardindex)
{
MonthlyQuestItem component = Object.Instantiate(MonthlyQuestItemPrefabs[cardindex], MonthlyQuestContainer).GetComponent<MonthlyQuestItem>();
component.QuestDescriptionText.text = GameManager.Instance.GetQuestDescription(Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[i].gameQuest);
component.uid = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[i].uid;
component.QuestTypeText.text = GetQuestCategory(Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[i].gameQuest);
component.RewardText.text = "$" + Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[i].gameQuest.reward;
component.SetProgress(Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[i].curentObjectiveProgress, Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[i].gameQuest.objectiveValue);
component.indexOfPlayerQuest = i;
}
public void ShowQuests()
{
GameManager.TruncateContainer(QuestContainer);
GameManager.TruncateContainer(WeeklyQuestContainer);
GameManager.TruncateContainer(MonthlyQuestContainer);
switch (currentShowQuestIndex)
{
case 0:
{
for (int j = 0; j < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest.Count; j++)
{
switch (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[j].gameQuest.type)
{
case GameManager.GameQuest.Type.Common:
InstantiateDailyQuest(j, 0);
break;
case GameManager.GameQuest.Type.Epic:
InstantiateDailyQuest(j, 1);
break;
case GameManager.GameQuest.Type.Legendary:
InstantiateDailyQuest(j, 2);
break;
}
}
break;
}
case 1:
{
for (int k = 0; k < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest.Count; k++)
{
switch (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[k].gameQuest.questObjectiveType)
{
case GameManager.GameQuest.QuestObjectiveType.Catch_fish:
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_by_species:
InstantiateWeeklyQuest(k, 0);
break;
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_by_weight:
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_total_weight:
InstantiateWeeklyQuest(k, 1);
break;
case GameManager.GameQuest.QuestObjectiveType.Spend_time:
InstantiateWeeklyQuest(k, 2);
break;
}
}
break;
}
case 2:
{
for (int i = 0; i < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest.Count; i++)
{
switch (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[i].gameQuest.questObjectiveType)
{
case GameManager.GameQuest.QuestObjectiveType.Catch_fish:
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_total_weight:
InstantiateMonthlyQuest(i, 0);
break;
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_by_weight:
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_by_species:
InstantiateMonthlyQuest(i, 1);
break;
case GameManager.GameQuest.QuestObjectiveType.Spend_time:
InstantiateMonthlyQuest(i, 2);
break;
}
}
break;
}
}
}
public void ChangeQuest(int indexOfPlayerQuest)
{
GameManager.Instance._playerData.RandomAndChangeOneQuest(indexOfPlayerQuest);
ShowQuests();
}
private void ShowTimer()
{
timerText.text = GameManager.Instance._playerData.GetMidnightTime();
WeeklytimerText.text = GameManager.Instance._playerData.GetWeeklyMidnightTime();
MonthlytimerText.text = GameManager.Instance._playerData.GetMonthlyMidnightTime();
if (Singleton<SaveDataManager>.Instance.IsCurrentlySandbox())
{
questpointsText.text = "∞";
}
else
{
questpointsText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().QuestPoints + "/" + Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PointsCap;
}
QuestPointsTitlelText.text = LanguageManager.Instance.GetText("QUEST_POINTS");
DailyCategoryText.text = LanguageManager.Instance.GetText("DAILY_QUESTS");
WeeklyCategoryText.text = LanguageManager.Instance.GetText("WEEKLY_QUESTS");
MonthlyCategoryText.text = LanguageManager.Instance.GetText("MONTHLY_QUESTS");
timerText.gameObject.SetActive(value: true);
WeeklytimerText.gameObject.SetActive(value: true);
MonthlytimerText.gameObject.SetActive(value: true);
}
public void ChangeQuestConent(int index)
{
if (currentShowQuestIndex != index)
{
for (int i = 0; i < 3; i++)
{
QuestTypeContent[i].SetActive(value: false);
QuestTypeButtonImage[i].sprite = QuestTypeButtonSprites[0];
QuestTypeButtonImage[i].color = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
QuestTypeButtonImage[i].gameObject.GetComponentInChildren<Text>().color = new Color32(0, 0, 0, byte.MaxValue);
QuestTypeButtonImage[i].gameObject.GetComponentInChildren<Animator>().enabled = true;
}
QuestTypeContent[index].SetActive(value: true);
QuestTypeButtonImage[index].sprite = QuestTypeButtonSprites[0];
QuestTypeButtonImage[index].color = new Color32(58, 58, 58, byte.MaxValue);
QuestTypeButtonImage[index].gameObject.GetComponentInChildren<Text>().color = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
QuestTypeButtonImage[index].gameObject.GetComponentInChildren<Animator>().Rebind();
QuestTypeButtonImage[index].gameObject.GetComponentInChildren<Animator>().enabled = false;
currentShowQuestIndex = index;
ShowQuests();
}
}
private string GetQuestCategory(GameManager.GameQuest gamequest)
{
string result = "";
switch (gamequest.questObjectiveType)
{
case GameManager.GameQuest.QuestObjectiveType.Catch_fish:
result = LanguageManager.Instance.GetText("QUEST_CATCH_FISH_CATEGORY");
break;
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_by_species:
result = LanguageManager.Instance.GetText("QUEST_FISH_BY_SPECIES_CATEGORY");
break;
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_by_weight:
result = LanguageManager.Instance.GetText("QUEST_FISH_BY_WEIGHT_CATEGORY");
break;
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_total_weight:
result = LanguageManager.Instance.GetText("QUEST_FISH_TOTAL_WEIGHT_CATEGORY");
break;
case GameManager.GameQuest.QuestObjectiveType.Spend_time:
result = LanguageManager.Instance.GetText("QUEST_SPEND_TIME_CATEGORY");
break;
}
return result;
}
}