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
493 lines
15 KiB
using IVDataFormat;
|
|
using IVServerFormat;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
|
|
|
|
public class AttendMgr : MonoSingleton<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
|
|
}
|