//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, July 18, 2018 //-------------------------------------------------------- using Snxxz.UI; using System; using System.Collections.Generic; using LitJson; public class DayPackageItemClassModel : Model, IPlayerLoginOk, IOpenServerActivity, IBeforePlayerDataInitialize { int m_SelectIndex = 0; VipModel vipModel { get { return ModelCenter.Instance.GetModel(); } } public int selectIndex { get { return m_SelectIndex; } set { if (m_SelectIndex != value) { m_SelectIndex = value; if (selectUpdate != null) { selectUpdate(value); } } } } public class DayGift { public int getCount; // 已获得次数 public List items; public int money; public string orderInfo; } public List recordIDs = new List(); public Dictionary m_RechargeDict = new Dictionary(); public event Action selectUpdate; public event Action onStateUpdate; public event Action onDayGoodsUpdate; public override void Init() { OpenServerActivityCenter.Instance.Register(23, this); //recordIDs = ConfigParse.GetMultipleStr(FuncConfigConfig.Get("DayFreeGoldGift").Numerical2); //if (!m_RechargeDict.ContainsKey(0)) //{ // var _sortArray = JsonMapper.ToObject(FuncConfigConfig.Get("DayFreeGoldGift").Numerical1); // foreach (int recordID in recordIDs) // { // if (recordID == 0) // { // m_RechargeDict[recordID] = new DayGift() // { // title = "免费礼包", // items = _sortArray, // getCount = 0, // money = 0, // }; // } // else // { // var ctg = CTGConfig.Get(recordID); // OrderInfoConfig config; // vipModel.TryGetOrderInfo(recordID, out config); // m_RechargeDict[recordID] = new DayGift() // { // title = ctg.Title, // items = LitJson.JsonMapper.ToObject(ctg.GainItemList), // getCount = 0, // money = (int)config.PayRMBNum, // orderInfo = config.OrderInfo, // }; // } // } //} } private const int Redpoint_key1 = 20923; public Redpoint redPointStre1 = new Redpoint(209, Redpoint_key1); //每日免费礼包 public bool IsOpen { get { return FuncOpen.Instance.IsFuncOpen(185); } } public bool priorityOpen { get { return redPointStre1.state == RedPointState.Simple || redPointStre1.state == RedPointState.GetReward; } } public bool IsAdvance { get { return false; } } public void OnBeforePlayerDataInitialize() { m_RechargeDict.Clear(); recordIDs.Clear(); } public override void UnInit() { } public void OnPlayerLoginOk() { IsShowTip(); } public DayGift GetDayGift(int index) { return m_RechargeDict[recordIDs[index]]; } public void IsShowTip() { if (!FuncOpen.Instance.IsFuncOpen(185)) return; if (m_RechargeDict.ContainsKey(0) && m_RechargeDict[0].getCount == 0) redPointStre1.state = RedPointState.Simple; else redPointStre1.state = RedPointState.None; } //public void UpdateRechargeCount(HA110_tagMCCoinToGoldCountInfo package) //{ // for (int i = 0; i < package.RecordCount; i++) // { // var _data = package.CTGCountInfoList[i]; // if (m_RechargeDict.ContainsKey(_data.RecordID)) // m_RechargeDict[_data.RecordID].getCount = _data.TodayPayCount; // } // if (onStateUpdate != null) onStateUpdate(selectIndex); //} //public void FreeGoldGiftState(HAA24_tagMCDayFreeGoldGiftState package) //{ // m_RechargeDict[0].getCount = package.DayFreeGoldGiftState; // if (onStateUpdate != null) onStateUpdate(selectIndex); // IsShowTip(); //} public void DayGoodsInfo(HAA25_tagMCDailyGiftbagInfo pack) { recordIDs = new List(); foreach (var goods in pack.GiftbagInfo) { recordIDs.Add((int)goods.GiftID); List tmpItems = new List(); foreach (var itemInfo in goods.ItemInfo) { tmpItems.Add(new int[] { (int)itemInfo.ItemID, itemInfo.ItemCount }); } int count = 0; if (m_RechargeDict.ContainsKey((int)goods.GiftID)) { count = m_RechargeDict[(int)goods.GiftID].getCount; } m_RechargeDict[(int)goods.GiftID] = new DayGift() { getCount = count, money = (int)goods.RMB, orderInfo = goods.OrderInfo, items = tmpItems, }; } recordIDs.Sort(); if (onDayGoodsUpdate != null) onDayGoodsUpdate(); } public void DayGoodsPurchasing(HAA26_tagMCDailyGiftbagPlayerInfo pack) { //每次回报都会把所有已购买物品下发,先清空购买数量,再赋值 foreach(int giftID in m_RechargeDict.Keys) { m_RechargeDict[giftID].getCount = 0; } foreach (var goods in pack.BuyCountList) { if (m_RechargeDict.ContainsKey((int)goods.GiftbagID)) { m_RechargeDict[(int)goods.GiftbagID].getCount = goods.BuyCount; } else { m_RechargeDict[(int)goods.GiftbagID] = new DayGift() { getCount = goods.BuyCount, }; } } if (onDayGoodsUpdate != null) onDayGoodsUpdate(); IsShowTip(); } public void RequestReward() { var sendInfo = new CA504_tagCMPlayerGetReward(); sendInfo.RewardType = (int)GotServerRewardType.Def_RewardType_DayPackageFree; sendInfo.DataEx = 0; sendInfo.DataExStrLen = 0; sendInfo.DataExStr = string.Empty; GameNetSystem.Instance.SendInfo(sendInfo); } }