using System.Collections.Generic; using proto; namespace MoleMole { public class CGModule : BaseModule { public static int BASE_CG_ID = 40000; private List _finishCGList; public CGModule() { Singleton.Instance.RegisterModule(this); _finishCGList = new List(); } public override bool OnPacket(NetPacketV1 pkt) { switch (pkt.getCmdId()) { case 128: return OnGetFinishGuideDataRsp(pkt.getData()); case 130: return OnFinishGuideReportRsp(pkt.getData()); default: return false; } } private bool OnGetFinishGuideDataRsp(GetFinishGuideDataRsp rsp) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if ((int)rsp.retcode == 0) { foreach (uint item in rsp.guide_id_list) { UpdateFinishCGID((int)item); } } return false; } private bool OnFinishGuideReportRsp(FinishGuideReportRsp rsp) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if ((int)rsp.retcode == 0) { List guide_id_list = rsp.guide_id_list; foreach (uint item in guide_id_list) { UpdateFinishCGID((int)item); } } return false; } private bool IsLevelPlotID(int cgID) { return cgID > BASE_CG_ID; } private void UpdateFinishCGID(int cgID) { if (!_finishCGList.Contains(cgID) && IsLevelPlotID(cgID)) { _finishCGList.Add(cgID); } } public bool IsCGFinished(int plotID) { return _finishCGList.Contains(plotID); } public List GetUnFinishedCGIDList(int levelID) { List list = new List(); if (levelID != 0) { List list2 = CgMetaDataReader.GetItemList().FindAll((CgMetaData x) => !_finishCGList.Contains(x.CgID)); foreach (CgMetaData item in list2) { if (!list.Contains(item.CgID) && item.levelID == levelID) { list.Add(item.CgID); } } } return list; } public List GetAllCGIDList() { List list = new List(); List itemList = CgMetaDataReader.GetItemList(); foreach (CgMetaData item in itemList) { list.Add(item.CgID); } return list; } public List GetFinishedCGIDList() { List list = new List(); List itemList = CgMetaDataReader.GetItemList(); List list2 = itemList.FindAll((CgMetaData x) => _finishCGList.Contains(x.CgID)); if (list2 != null) { foreach (CgMetaData item in list2) { list.Add(item.CgID); } } return list; } public List GetUnFinishedCGIDList() { List list = new List(); List list2 = CgMetaDataReader.GetItemList().FindAll((CgMetaData x) => !_finishCGList.Contains(x.CgID)); foreach (CgMetaData item in list2) { list.Add(item.CgID); } return list; } public void MarkCGIDFinish(int cgID) { if (!_finishCGList.Contains(cgID)) { Singleton.Instance.RequestFinishGuideReport((uint)cgID, true); UpdateFinishCGID(cgID); } } public CgDataItem GetCgDataItem(int cgId) { CgMetaData cgMetaData = CgMetaDataReader.TryGetCgMetaDataByKey(cgId); if (cgMetaData != null) { return new CgDataItem(cgMetaData); } return null; } public List GetCgDataItemList() { List list = new List(); List itemList = CgMetaDataReader.GetItemList(); foreach (CgMetaData item in itemList) { list.Add(new CgDataItem(item)); } return list; } public List GetFinishedCgDataItemList() { List list = new List(); List itemList = CgMetaDataReader.GetItemList(); foreach (CgMetaData item in itemList) { if (item != null && _finishCGList.Contains(item.CgID)) { list.Add(new CgDataItem(item)); } } return list; } } }