CutePet/Assets/Scripts/GameScene/Panel/MailPanel.cs

157 lines
3.7 KiB
C#
Raw Normal View History

2024-10-25 11:10:04 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using LitJson;
using UnityEngine;
using UnityEngine.UI;
public class MailPanel : BasePanel
{
//<2F>ر<EFBFBD>
public Button btnClose;
//һ<><D2BB>ɾ<EFBFBD><C9BE>
public Button btnOneKeyDel;
//һ<><D2BB><EFBFBD><EFBFBD>ȡ
public Button btnOneKeyGet;
public ScrollRect sv;
public GameObject obj;
private string filePath;
public List<MailInfo> info;
private List<GameObject> mailObjects;
void Awake()
{
filePath = Path.Combine(Application.persistentDataPath, GameDataMgr.Instance.player.openId);
mailObjects=new List<GameObject>();
}
public override void Init()
{
Debug.Log(Application.persistentDataPath);
LoadMailData();
UpdatePanel();
btnClose.onClick.AddListener(() =>
{
UIManager.Instance.HidePanel<MailPanel>(false);
});
btnOneKeyGet.onClick.AddListener(()=>
{
if (info!=null&&info.Count>0)
{
GetAllMail();
}
});
btnOneKeyDel.onClick.AddListener(() =>
{
OneKeyDelMail();
});
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public void UpdatePanel()
{
if (info.Count>0)
{
GameObject go;
for (int i = 0; i < info.Count; i++)
{
go = Instantiate(obj);
go.transform.SetParent(sv.content, false);
go.GetComponent<MailObject>().UpdatePanel(info[i]);
mailObjects.Add(go);
}
}
}
// <20><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>
private void LoadMailData()
{
if (File.Exists(filePath))
{
string json = File.ReadAllText(filePath);
info = JsonMgr.Instance.LoadData<List<MailInfo>>(json);
}
else
{
info = new List<MailInfo>();
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ʼ<EFBFBD>
public bool CanClaimMail(MailInfo mail)
{
DateTime now = DateTime.Now;
DateTime sendEnd;
if (DateTime.TryParse(mail.mailData.send_end, out sendEnd))
{
return now <= sendEnd && !mail.isOpen;
}
return false;
}
// һ<><D2BB>ɾ<EFBFBD><C9BE><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ʼ<EFBFBD>
public void OneKeyDelMail()
{
for (int i = 0; i < info.Count; i++)
{
if (info[i] != null && info[i].isOpen)
{
info.Remove(info[i]);
}
if (mailObjects[i].GetComponent<MailObject>().imgGet.activeSelf)
{
Destroy(mailObjects[i]);
mailObjects.Remove(mailObjects[i]);
}
}
SaveMailData();
}
// <20><>ȡȫ<C8A1><C8AB><EFBFBD>ʼ<EFBFBD>
public void GetAllMail()
{
for (int i = 0; i < info.Count; i++)
{
if (info[i] != null && CanClaimMail(info[i]))
{
info[i].isOpen = true; // <20><><EFBFBD>±<EFBFBD><C2B1><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ȡ
SaveMailData(); // <20><><EFBFBD><EFBFBD>״̬
GameDataMgr.Instance.player.gold += info[i].mailData.gold;
}
}
StartCoroutine(NetMgr.Instance.ChangeDataPost(GameDataMgr.Instance.player));
}
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>
public void ClaimMail(int mailId)
{
MailInfo mail = info.Find(m => m.mailData.id == mailId);
if (mail != null && CanClaimMail(mail))
{
mail.isOpen = true; // <20><><EFBFBD>±<EFBFBD><C2B1><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ȡ
SaveMailData(); // <20><><EFBFBD><EFBFBD>״̬
Debug.Log("<22><>ȡ<EFBFBD>ɹ<EFBFBD>");
}
else
{
Debug.Log("<22>޷<EFBFBD><DEB7><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ʼ<EFBFBD><CABC>ѹ<EFBFBD><D1B9>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD>ȡ");
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>
public void SaveMailData()
{
string json = JsonMapper.ToJson(info);
File.WriteAllText(filePath, json);
}
}