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

215 lines
7.1 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UI;
public class WeeklyQuestItem : MonoBehaviour
{
public int uid;
public int indexOfPlayerQuest;
public float maxProgress;
public float currentProgress;
public int PointsCost = 5;
public Sprite WeeklyQuestShowSprite;
private Animator WeeklyQuestShowCardAnim;
private AudioSource audiosource;
public AudioClip[] audios;
public Text PointsText;
public Text QuestTypeText;
public Text RewardText;
public Text QuestDescriptionText;
public Text ProgressText;
public Text InProgressText;
public Button RewardButton;
public Image ProgressBorderImage;
public Image ProgressBarImage;
public GameObject OtwartaKartaItems;
private Image BackgroundCardImage;
private QuestManager questManager;
public static event Action OnUnlockCardQuestErrorGlobal;
public static event Action OnUnlockCardQuestGlobal;
private void Start()
{
audiosource = GetComponent<AudioSource>();
questManager = UnityEngine.Object.FindObjectOfType<QuestManager>();
WeeklyQuestShowCardAnim = GetComponent<Animator>();
PointsText.text = PointsCost.ToString();
BackgroundCardImage = GetComponent<Image>();
if (isShowed())
{
GetComponent<Image>().sprite = WeeklyQuestShowSprite;
PointsText.gameObject.SetActive(value: false);
QuestTypeText.gameObject.SetActive(value: false);
OtwartaKartaItems.SetActive(value: true);
}
}
public bool isShowed()
{
for (int i = 0; i < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest.Count; i++)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].uid == uid)
{
return Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].isShowed;
}
}
return false;
}
public void ShowCardButton()
{
if (isShowed())
{
return;
}
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().QuestPoints < PointsCost)
{
WeeklyQuestItem.OnUnlockCardQuestErrorGlobal?.Invoke();
WeeklyQuestShowCardAnim.SetTrigger("InsufficientPoints");
return;
}
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().QuestPoints -= PointsCost;
WeeklyQuestItem.OnUnlockCardQuestGlobal?.Invoke();
WeeklyQuestShowCardAnim.SetTrigger("Show");
for (int i = 0; i < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest.Count; i++)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].uid == uid)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].isShowed = true;
}
}
}
public void ShowWeeklyQuest()
{
GetComponent<Image>().sprite = WeeklyQuestShowSprite;
PointsText.gameObject.SetActive(value: false);
QuestTypeText.gameObject.SetActive(value: false);
OtwartaKartaItems.SetActive(value: true);
}
public void SetProgress(float progress, float fullprogress)
{
currentProgress = progress;
maxProgress = fullprogress;
ProgressText.text = SetProgressTextValue(currentProgress, maxProgress);
float fillAmount = SetProgressValue(progress, maxProgress);
ProgressBarImage.fillAmount = fillAmount;
}
private float SetProgressValue(float progress, float fullprogress)
{
GameManager.GameQuest.QuestObjectiveType questObjectiveType = GameManager.GameQuest.QuestObjectiveType.Catch_fish;
for (int i = 0; i < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest.Count; i++)
{
Debug.Log(uid);
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].uid == uid)
{
questObjectiveType = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].gameQuest.questObjectiveType;
}
}
switch (questObjectiveType)
{
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_by_weight:
if (progress >= fullprogress)
{
return progress;
}
return 0f;
case GameManager.GameQuest.QuestObjectiveType.Catch_fish:
case GameManager.GameQuest.QuestObjectiveType.Spend_time:
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_total_weight:
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_by_species:
return progress / maxProgress;
default:
return progress / maxProgress;
}
}
private string SetProgressTextValue(float progress, float fullprogress)
{
GameManager.GameQuest.QuestObjectiveType questObjectiveType = GameManager.GameQuest.QuestObjectiveType.Catch_fish;
for (int i = 0; i < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest.Count; i++)
{
Debug.Log(uid);
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].uid == uid)
{
questObjectiveType = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].gameQuest.questObjectiveType;
}
}
Debug.Log(questObjectiveType);
switch (questObjectiveType)
{
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_by_weight:
if (progress >= fullprogress)
{
return GameManager.Instance.ConvertWeightWithoutUnit(fullprogress) + "/" + GameManager.Instance.ConvertWeightWithoutUnit(fullprogress).ToString("F1");
}
return GameManager.Instance.ConvertWeightWithoutUnit(0f).ToString("F1") + "/" + GameManager.Instance.ConvertWeightWithoutUnit(fullprogress).ToString("F1");
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_total_weight:
case GameManager.GameQuest.QuestObjectiveType.Catch_fish_by_species:
return GameManager.Instance.ConvertWeightWithoutUnit(progress).ToString("F2") + "/" + GameManager.Instance.ConvertWeightWithoutUnit(fullprogress).ToString("F2");
case GameManager.GameQuest.QuestObjectiveType.Catch_fish:
case GameManager.GameQuest.QuestObjectiveType.Spend_time:
return Mathf.Clamp(progress, 0f, fullprogress).ToString("F0") + "/" + fullprogress;
default:
return GameManager.Instance.ConvertWeightWithoutUnit(progress).ToString("F2") + "/" + GameManager.Instance.ConvertWeightWithoutUnit(fullprogress).ToString("F2");
}
}
public void GetRewardButton()
{
for (int i = 0; i < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest.Count; i++)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].uid == uid)
{
questManager.RewardAudioSource.Play();
RewardPopUpItem component = UnityEngine.Object.Instantiate(questManager.RewardPopUpPrefab, questManager.transform).GetComponent<RewardPopUpItem>();
component.id = uid;
component.rewardText.text = "$" + Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].gameQuest.reward;
component.type = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[i].gameQuest.type;
UnityEngine.Object.Destroy(base.gameObject);
}
}
}
private void ButtonController()
{
if (currentProgress >= maxProgress && maxProgress > 0f)
{
RewardButton.gameObject.SetActive(value: true);
ProgressBorderImage.gameObject.SetActive(value: false);
InProgressText.gameObject.SetActive(value: false);
ProgressText.gameObject.SetActive(value: false);
ProgressBarImage.gameObject.SetActive(value: false);
}
}
private void Update()
{
ButtonController();
}
}