You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

493 lines
15 KiB

using IVDataFormat;
using IVServerFormat;
using TMPro;
using UnityEngine;
public class AttendMgr : Singleton<AttendMgr>
{
public enum AttendType
{
AttendTen = 0,
AttendRepeat = 1,
AttendSeven = 2
}
#region UI
[SerializeField]
Canvas canvasAttendRepeatUI;
[SerializeField]
TextMeshProUGUI txtMain;
GameObject attendBox;
GoodsAttendItem[] attendList;
TextMeshProUGUI title;
TextMeshProUGUI timeExplain;
[SerializeField]
GameObject canvasAttendSevenUI;
GameObject attendBoxSeven;
GoodsAttendItem[] attendListSeven;
[SerializeField]
GameObject canvasAttendTenUI;
GameObject attendBoxTen;
GoodsAttendItem[] attendListTen;
[SerializeField]
GameObject attendBedge;
#endregion
private int iLoading = 1;
private bool bReLocalize = true;
private bool bInitNeed = true;
bool bInitNeedRepeat = true;
private bool iAttendRepeatOpen = false;
private bool iAttendTenOpen = false;
private bool iAttendSevenOpen = false;
private AttendType currentAttendType;
public static AttendType CurrentAttendType => Instance.currentAttendType;
public static void AttendReckeck()
{
Instance.iAttendRepeatOpen = false;
Instance.iAttendTenOpen = false;
Instance.iAttendSevenOpen = false;
}
#region Base
public static void SLocalize(bool bmain)
{
if (Instance != null)
Instance.Localize(bmain);
}
private void Localize(bool bmain)
{
if (bmain)
{
txtMain.text = LocalizationText.GetText("attend_title");
}
else
{
bReLocalize = false;
title.text = LocalizationText.GetText("attend_title");
txtMain.text = LocalizationText.GetText("attend_title");
timeExplain.text = LocalizationText.GetText("reset_day_explain");
for (int i = 0; i < attendList.Length; i++)
{
attendList[i].SetDay(i + 1);
}
for (int i = 0; i < attendListSeven.Length; i++)
{
attendListSeven[i].SetDay(i + 1);
}
for (int i = 0; i < attendListTen.Length; i++)
{
attendListTen[i].SetDay(i + 1);
}
}
}
// 설정에서 언어 변경 시 처리.
public static void SReLocalize()
{
Instance.Localize(true);
Instance.bReLocalize = true;
}
// 백버튼 처리.
public static bool SCloseMenu()
{
return Instance.CloseMenu();
}
private bool CloseMenu()
{
// 게임 시작 후 열린적 없음.
if (!bInitNeedRepeat && canvasAttendRepeatUI.enabled)
{
CloseAttendRepeat();
return true;
}
return false;
}
private void Awake()
{
_instance = this;
}
void Start()
{
iLoading--;
OpenAttendRepeat();
}
private void Init()
{
bInitNeed = false;
attendBox = canvasAttendRepeatUI.transform.Find("attendanceBox").gameObject;
attendList = new GoodsAttendItem[14];
attendList[0] = attendBox.transform.Find("GoodsItemAttent").GetComponent<GoodsAttendItem>();
for (int i = 1; i < 14; i++)
{
attendList[i] = attendBox.transform.Find(FormatString.CombineAllString("GoodsItemAttent (", i.ToString(), ")")).GetComponent<GoodsAttendItem>();
}
title = canvasAttendRepeatUI.transform.Find("txtT").GetComponent<TextMeshProUGUI>();
timeExplain = canvasAttendRepeatUI.transform.Find("txtExplain").GetComponent<TextMeshProUGUI>();
attendBoxSeven = canvasAttendSevenUI.transform.Find("attendBox").gameObject;
attendListSeven = new GoodsAttendItem[7];
attendListSeven[0] = attendBoxSeven.transform.Find("GoodsItemEventAttent").GetComponent<GoodsAttendItem>();
for (int i = 1; i < 7; i++)
{
attendListSeven[i] = attendBoxSeven.transform.Find(FormatString.CombineAllString("GoodsItemEventAttent (", i.ToString(), ")")).GetComponent<GoodsAttendItem>();
}
attendBoxTen = canvasAttendTenUI.transform.Find("attendBox").gameObject;
attendListTen = new GoodsAttendItem[10];
attendListTen[0] = attendBoxTen.transform.Find("GoodsItemEventAttent").GetComponent<GoodsAttendItem>();
for (int i = 1; i < 10; i++)
{
attendListTen[i] = attendBoxTen.transform.Find(FormatString.CombineAllString("GoodsItemEventAttent (", i.ToString(), ")")).GetComponent<GoodsAttendItem>();
}
}
#endregion Base
#region AttendOnOff
public static void SMoveAttend(eEventMoveType content)
{
switch (content)
{
case eEventMoveType.Attend:
Instance.OpenAttendRepeat();
break;
}
}
public void OpenAttendRepeat()
{
if (iLoading > 0)
return;
iLoading++;
currentAttendType = AttendType.AttendRepeat;
if (bInitNeed)
Init();
if (bReLocalize)
Localize(false);
if (bInitNeedRepeat)
bInitNeedRepeat = false;
if (!iAttendRepeatOpen)
{
iAttendRepeatOpen = true;
TrySvAttendCheck(AttendType.AttendRepeat);
}
else
{
OpenAttendRepeatReward();
}
for (int i = 0; i < attendList.Length; i++)
{
if (!attendList[i].gameObject.activeSelf)
{
attendList[i].gameObject.SetActive(true);
}
}
iLoading--;
}
public void CloseAttendRepeat()
{
if (Instance.iLoading > 0)
return;
Instance.iLoading++;
MissionMgr.SRefreshMission();
for (int i = 0; i < attendList.Length; i++)
{
if (attendList[i].GetBadge())
{
attendList[i].gameObject.SetActive(false);
}
}
Instance.canvasAttendRepeatUI.enabled = false;
Instance.iLoading--;
}
public static void OpenAttendTen()
{
if (Instance.iLoading > 0)
return;
Instance.iLoading++;
Instance.currentAttendType = AttendType.AttendTen;
if (Instance.bInitNeed)
Instance.Init();
if (Instance.bReLocalize)
Instance.Localize(false);
if (Instance.bInitNeedRepeat)
{
Instance.bInitNeedRepeat = false;
}
if (!Instance.iAttendTenOpen)
{
Instance.iAttendTenOpen = true;
TrySvAttendCheck(AttendType.AttendTen);
}
else
{
EventMgr.OpenEventWindow();
Instance.canvasAttendTenUI.SetActive(true);
}
Instance.iLoading--;
}
public static void CloseAttendTen()
{
if (Instance.iLoading > 0)
return;
Instance.iLoading++;
Instance.canvasAttendTenUI.SetActive(false);
Instance.iLoading--;
}
public static void OpenAttendSeven()
{
if (Instance.iLoading > 0)
return;
Instance.iLoading++;
Instance.currentAttendType = AttendType.AttendSeven;
if (Instance.bInitNeed)
Instance.Init();
if (Instance.bReLocalize)
Instance.Localize(false);
if (Instance.bInitNeedRepeat)
{
Instance.bInitNeedRepeat = false;
}
if (!Instance.iAttendSevenOpen)
{
Instance.iAttendSevenOpen = true;
TrySvAttendCheck(AttendType.AttendSeven);
}
else
{
EventMgr.OpenEventWindow();
Instance.canvasAttendSevenUI.SetActive(true);
}
Instance.iLoading--;
}
public static void CloseAttendSeven()
{
if (Instance.iLoading > 0)
return;
Instance.iLoading++;
Instance.canvasAttendSevenUI.SetActive(false);
Instance.iLoading--;
}
public void SettingAttendRepeatReward(bool isNotCkeck, int day)
{
switch (currentAttendType)
{
case AttendType.AttendTen:
for (int i = 0; i < attendListTen.Length; i++)
{
attendListTen[i].gameObject.SetActive(false);
if (i < DataHandler.GetSysAttend()[(int)AttendType.AttendTen].rewards.Length)
{
Instance.attendListTen[i].SetGoods(DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[0].rewardType,
DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[0].rewardId, DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[0].rewardCount);
if (DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards.Length > 1)
{
if (DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[1] != null)
{
Instance.attendListTen[i].SetSecendGoods(DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[1].rewardType,
DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[1].rewardId,
DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[1].rewardCount);
}
}
Instance.attendListTen[i].SetIconWithDay(isNotCkeck, day);//출석여부 판별
attendListTen[i].gameObject.SetActive(true);
EventMgr.OpenEventWindow();
canvasAttendTenUI.SetActive(true);
}
}
break;
case AttendType.AttendRepeat:
int notCheck = 0;
for (int i = 0; i < attendList.Length; i++)
{
attendList[i].gameObject.SetActive(false);
if (i < DataHandler.GetSysAttend()[(int)AttendType.AttendRepeat].rewards.Length)
{
var currentAttendReward = DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i];
Instance.attendList[i].SetGoods(
currentAttendReward.rewards[0].rewardType,
currentAttendReward.rewards[0].rewardId,
currentAttendReward.rewards[0].rewardCount);
if (currentAttendReward.rewards.Length > 1 && currentAttendReward.rewards[1] != null)
{
Instance.attendList[i].SetSecendGoods(
currentAttendReward.rewards[1].rewardType,
currentAttendReward.rewards[1].rewardId,
currentAttendReward.rewards[1].rewardCount);
}
//출석여부 판별
Instance.attendList[i].SetIconWithDay(isNotCkeck, day);
if (isNotCkeck)
{
notCheck++;
}
attendList[i].gameObject.SetActive(true);
}
}
if (notCheck > 0)
attendBedge.SetActive(true);
else
attendBedge.SetActive(false);
canvasAttendRepeatUI.enabled = true;
CloseAttendRepeat();
break;
case AttendType.AttendSeven:
for (int i = 0; i < attendListSeven.Length; i++)
{
attendListSeven[i].gameObject.SetActive(false);
if (i < DataHandler.GetSysAttend()[(int)AttendType.AttendSeven].rewards.Length)
{
Instance.attendListSeven[i].SetGoods(DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[0].rewardType,
DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[0].rewardId, DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[0].rewardCount);
if (DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards.Length > 1)
{
if (DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[1] != null)
{
Instance.attendListSeven[i].SetSecendGoods(DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[1].rewardType,
DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[1].rewardId,
DataHandler.GetSysAttend()[(int)currentAttendType].rewards[i].rewards[1].rewardCount);
}
}
Instance.attendListSeven[i].SetIconWithDay(isNotCkeck, day);//출석여부 판별
attendListSeven[i].gameObject.SetActive(true);
EventMgr.OpenEventWindow();
canvasAttendSevenUI.SetActive(true);
}
}
break;
default:
break;
}
}
public static void AttendBadgeOff()
{
Instance.attendBedge.SetActive(false);
}
public void OpenAttendRepeatReward()
{
canvasAttendRepeatUI.enabled = true;
}
#endregion
#region Request to server
public static void TrySvAttendCheck(AttendType type)
{
var attendKind = new AttendTypeRequest();
attendKind.attendType = (int)type + 1;
CoverCamera.Hold();
SvConnectManager.Instance.RequestSvPost(true, 0, UrlApi.GetUrl(UrlApi.Attend), typeof(AttendInfoReturn), AAttendCheckSucc, AAttendCheckFail, attendKind, true);
}
private static void AAttendCheckSucc(object result, object request)
{
AttendInfoReturn data = result as AttendInfoReturn;
if (data == null)
{
AAttendCheckFail(new SvError(eErrorCode.NULL_OR_EMPTY), request);
return;
}
data.playAttend.OnAfterDeserialize();
Instance.SettingAttendRepeatReward(data.attend, data.playAttend.day);
CoverCamera.Release();
}
private static void AAttendCheckFail(SvError error, object request)
{
CoverCamera.Release();
}
public static void TrySvAttendBadgeCheck(AttendType type)
{
var badge = new AttendTypeRequest();
badge.attendType = (int)type + 1;
CoverCamera.Hold();
SvConnectManager.Instance.RequestSvPost(true, 0, UrlApi.GetUrl(UrlApi.Attend), typeof(AttendInfoReturn), AAttendBadgeCheckSucc, AAttendBadgeCheckFail, badge, true);
}
private static void AAttendBadgeCheckSucc(object result, object request)
{
AttendInfoReturn data = result as AttendInfoReturn;
AttendTypeRequest badge = request as AttendTypeRequest;
if (data == null)
{
AAttendBadgeCheckFail(new SvError(eErrorCode.NULL_OR_EMPTY), request);
return;
}
data.playAttend.OnAfterDeserialize();
EventMgr.BadgeEventAttendCheck(data.attend, (AttendType)badge.attendType - 1);
CoverCamera.Release();
}
private static void AAttendBadgeCheckFail(SvError error, object request)
{
CoverCamera.Release();
}
#endregion
}