157 lines
3.7 KiB
C#
157 lines
3.7 KiB
C#
|
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);
|
|||
|
}
|
|||
|
}
|