| | |
| | |
|
| | | namespace Snxxz.UI
|
| | | {
|
| | | public class VipInvestModel : Model,IBeforePlayerDataInitialize, IPlayerLoginOk
|
| | | public class VipInvestModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
|
| | | {
|
| | | private Dictionary<string, Dictionary<string, List<InvestReward>>> vipInvestDict = new Dictionary<string, Dictionary<string, List<InvestReward>>>();
|
| | | private Dictionary<int, List<InvestConfig>> investCycleDict = new Dictionary<int, List<InvestConfig>>(); //每周期数据
|
| | | private Dictionary<string, int[]> vipInvestLvlimitDict = new Dictionary<string, int[]>();
|
| | | private Dictionary<int, int[]> investGoldDict = new Dictionary<int, int[]>();
|
| | | private Dictionary<int, int> investMaxDayDict = new Dictionary<int, int>();
|
| | | public int NeedVipLv { get; private set;}
|
| | | public int NeedVipLv { get; private set; }
|
| | | private bool IsOkBool = false;
|
| | | public bool IsRedpoint = false;
|
| | |
|
| | | private int DisplayLevel = 0;//显示等级
|
| | | private int DisplayDays = 0;//显示天数
|
| | | //----
|
| | | private bool IsOneRedPoint = true;
|
| | | public override void Init()
|
| | | {
|
| | | vipInvestDict.Clear();
|
| | |
| | | FuncConfigConfig vipInvestLv = Config.Instance.Get<FuncConfigConfig>("VIPInvest");
|
| | | NeedVipLv = int.Parse(vipInvestLv.Numerical2);
|
| | | JsonData vipInvestData = JsonMapper.ToObject(vipInvestLv.Numerical1);
|
| | | foreach(var index in vipInvestData.Keys)
|
| | | foreach (var index in vipInvestData.Keys)
|
| | | {
|
| | | if (vipInvestData[index].IsArray)
|
| | | {
|
| | | int[] lvs = new int[vipInvestData[index].Count];
|
| | | vipInvestLvlimitDict.Add(index,lvs);
|
| | | for(int i = 0; i < vipInvestData[index].Count;i++)
|
| | | vipInvestLvlimitDict.Add(index, lvs);
|
| | | for (int i = 0; i < vipInvestData[index].Count; i++)
|
| | | {
|
| | | lvs[i] = int.Parse(vipInvestData[index][i].ToString());
|
| | | }
|
| | |
| | | }
|
| | | FuncConfigConfig InvestGold = Config.Instance.Get<FuncConfigConfig>("InvestCost");
|
| | | JsonData goldData = JsonMapper.ToObject(InvestGold.Numerical1);
|
| | | foreach(var type in goldData.Keys)
|
| | | foreach (var type in goldData.Keys)
|
| | | {
|
| | | if (goldData[type].IsArray)
|
| | | {
|
| | | int[] golds = new int[goldData[type].Count];
|
| | | investGoldDict.Add(int.Parse(type),golds);
|
| | | investGoldDict.Add(int.Parse(type), golds);
|
| | | for (int i = 0; i < goldData[type].Count; i++)
|
| | | {
|
| | | golds[i] = int.Parse(goldData[type][i].ToString());
|
| | |
| | | }
|
| | |
|
| | | List<InvestConfig> investlist = Config.Instance.GetAllValues<InvestConfig>();
|
| | | if(investlist != null)
|
| | | if (investlist != null)
|
| | | {
|
| | | for (int i = 0; i < investlist.Count; i++)
|
| | | {
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | public void OnBeforePlayerDataInitialize()
|
| | | {
|
| | | IsRedpoint = false;
|
| | |
| | | VipInvestWin.VipInvestRedPointEvent += VipInvestRedPointEvent;
|
| | | PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= Updatefighting;
|
| | | PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;
|
| | | if (TimeUtility.CreateDays <= DisplayDays && redPointStre1.state==RedPointState.None)
|
| | | {
|
| | | IsRedpoint = true;
|
| | | if (PlayerDatas.Instance.baseData.LV >= DisplayLevel)
|
| | | {
|
| | | RedPointSate();
|
| | | } |
| | | }
|
| | | IsShowRedPointSimple();
|
| | | }
|
| | |
|
| | | private void Updatefighting(PlayerDataRefresh _tCDBPlayerRefresh)
|
| | | {
|
| | | if (_tCDBPlayerRefresh == PlayerDataRefresh.LV)
|
| | | {
|
| | | if (TimeUtility.CreateDays <= DisplayDays && redPointStre1.state == RedPointState.None && PlayerDatas.Instance.baseData.LV >= DisplayLevel)
|
| | | {
|
| | | if (IsRedpoint)
|
| | | {
|
| | | RedPointSate();
|
| | | }
|
| | | }
|
| | | IsShowRedPointSimple();
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | InvestType type = (InvestType)config.type;
|
| | | if (type != InvestType.Vip) return;
|
| | |
|
| | | string key = StringUtility.Contact(config.id,config.type,config.needDay);
|
| | | string key = StringUtility.Contact(config.id, config.type, config.needDay);
|
| | | int cycle = GetInvestCycle(config.needDay);
|
| | |
|
| | | if(!investCycleDict.ContainsKey(cycle))
|
| | | if (!investCycleDict.ContainsKey(cycle))
|
| | | {
|
| | | List<InvestConfig> list = new List<InvestConfig>();
|
| | | list.Add(config);
|
| | | investCycleDict.Add(cycle,list);
|
| | | investCycleDict.Add(cycle, list);
|
| | | }
|
| | | else
|
| | | {
|
| | | investCycleDict[cycle].Add(config);
|
| | | }
|
| | |
|
| | | if(!vipInvestDict.ContainsKey(key))
|
| | | if (!vipInvestDict.ContainsKey(key))
|
| | | {
|
| | | Dictionary<string, List<InvestReward>> rewardDict = new Dictionary<string, List<InvestReward>>();
|
| | | vipInvestDict.Add(key,rewardDict);
|
| | | vipInvestDict.Add(key, rewardDict);
|
| | | JsonData jsonData = JsonMapper.ToObject(config.award);
|
| | | foreach(var index in jsonData.Keys)
|
| | | foreach (var index in jsonData.Keys)
|
| | | {
|
| | | List<InvestReward> rewardlist = new List<InvestReward>();
|
| | | rewardDict.Add(index,rewardlist);
|
| | | rewardDict.Add(index, rewardlist);
|
| | | if (jsonData[index].IsArray)
|
| | | {
|
| | | for(int i= 0; i < jsonData[index].Count; i++)
|
| | | for (int i = 0; i < jsonData[index].Count; i++)
|
| | | {
|
| | | JsonData itemData = jsonData[index][i];
|
| | | if(itemData.IsArray)
|
| | | if (itemData.IsArray)
|
| | | {
|
| | | InvestReward reward = new InvestReward(int.Parse(itemData[0].ToString()),ulong.Parse(itemData[1].ToString())
|
| | | InvestReward reward = new InvestReward(int.Parse(itemData[0].ToString()), ulong.Parse(itemData[1].ToString())
|
| | | , int.Parse(itemData[2].ToString()));
|
| | | rewardlist.Add(reward);
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | public List<InvestReward> GetInvestRewardlistByID(int id,int type,int day,string index)
|
| | | public List<InvestReward> GetInvestRewardlistByID(int id, int type, int day, string index)
|
| | | {
|
| | | List<InvestReward> rewardlist = null;
|
| | | string key = StringUtility.Contact(id,type,day);
|
| | | if(vipInvestDict.ContainsKey(key))
|
| | | string key = StringUtility.Contact(id, type, day);
|
| | | if (vipInvestDict.ContainsKey(key))
|
| | | {
|
| | | vipInvestDict[key].TryGetValue(index,out rewardlist);
|
| | | vipInvestDict[key].TryGetValue(index, out rewardlist);
|
| | | }
|
| | | return rewardlist;
|
| | | }
|
| | |
| | | return list;
|
| | | }
|
| | |
|
| | | public int GetInvestGold(int type,int index)
|
| | | public int GetInvestGold(int type, int index)
|
| | | {
|
| | | if(investGoldDict.ContainsKey(type))
|
| | | if (investGoldDict.ContainsKey(type))
|
| | | {
|
| | | return investGoldDict[type][index];
|
| | | }
|
| | |
| | | public string GetVipInvestIndex()
|
| | | {
|
| | | int playeLv = PlayerDatas.Instance.baseData.LV;
|
| | | foreach(var index in vipInvestLvlimitDict.Keys)
|
| | | foreach (var index in vipInvestLvlimitDict.Keys)
|
| | | {
|
| | | int[] lvs = vipInvestLvlimitDict[index];
|
| | | if(lvs[lvs.Length - 1] >= playeLv)
|
| | | if (lvs[lvs.Length - 1] >= playeLv)
|
| | | {
|
| | | return index;
|
| | | }
|
| | |
| | | public int GetMaxDay(InvestType type)
|
| | | {
|
| | | int day = 0;
|
| | | investMaxDayDict.TryGetValue((int)type,out day);
|
| | | investMaxDayDict.TryGetValue((int)type, out day);
|
| | | return day;
|
| | | }
|
| | |
|
| | |
| | | investInfo.type = info.InvestType;
|
| | | investInfo.curDay = (int)info.CurDay;
|
| | | investInfo.investGold = (int)info.InvestGold;
|
| | | |
| | |
|
| | | if (info.RewardRecordCnt > 1)
|
| | | {
|
| | | investInfo.recordlist = new List<RewardRecord>();
|
| | |
| | | }
|
| | | }
|
| | | else
|
| | | { |
| | | if (((int)info.CurDay - 1) < investInfo.recordlist.Count)
|
| | | {
|
| | | RewardRecord RewardRecord = new RewardRecord();
|
| | | RewardRecord.rewardIndex = info.InvestRewardList[0].RewardIndex;
|
| | | RewardRecord.rewardRecord = info.InvestRewardList[0].RewardValue;
|
| | | investInfo.recordlist[((int)info.CurDay - 1)] = RewardRecord;
|
| | | }
|
| | | {
|
| | | if (((int)info.CurDay - 1) < investInfo.recordlist.Count)
|
| | | {
|
| | | RewardRecord RewardRecord = new RewardRecord();
|
| | | RewardRecord.rewardIndex = info.InvestRewardList[0].RewardIndex;
|
| | | RewardRecord.rewardRecord = info.InvestRewardList[0].RewardValue;
|
| | | investInfo.recordlist[((int)info.CurDay - 1)] = RewardRecord;
|
| | | }
|
| | | }
|
| | | serverInvestDict.Add(info.InvestType, investInfo);
|
| | | }
|
| | |
| | | }
|
| | | else
|
| | | {
|
| | | if (((int)info.CurDay - 1) < serverInvest.recordlist.Count)
|
| | | {
|
| | | RewardRecord RewardRecord = new RewardRecord();
|
| | | RewardRecord.rewardIndex = info.InvestRewardList[0].RewardIndex;
|
| | | RewardRecord.rewardRecord = info.InvestRewardList[0].RewardValue;
|
| | | serverInvest.recordlist[((int)info.CurDay - 1)] = RewardRecord;
|
| | | }
|
| | | if (((int)info.CurDay - 1) < serverInvest.recordlist.Count)
|
| | | {
|
| | | RewardRecord RewardRecord = new RewardRecord();
|
| | | RewardRecord.rewardIndex = info.InvestRewardList[0].RewardIndex;
|
| | | RewardRecord.rewardRecord = info.InvestRewardList[0].RewardValue;
|
| | | serverInvest.recordlist[((int)info.CurDay - 1)] = RewardRecord;
|
| | | }
|
| | | }
|
| | | serverInvestDict[info.InvestType] = serverInvest;
|
| | | }
|
| | | |
| | |
|
| | | }
|
| | | if (RefreshInvestAct != null)
|
| | | {
|
| | |
| | | public ServerInvestInfo GetInvestInfoByType(int type)
|
| | | {
|
| | | ServerInvestInfo investInfo = default(ServerInvestInfo);
|
| | | serverInvestDict.TryGetValue(type,out investInfo);
|
| | | serverInvestDict.TryGetValue(type, out investInfo);
|
| | | return investInfo;
|
| | | }
|
| | |
|
| | | public void SendGetInvestRewardQuest(int type,int index)
|
| | | public void SendGetInvestRewardQuest(int type, int index)
|
| | | {
|
| | | CA541_tagCMGetInvestReward investReward = new CA541_tagCMGetInvestReward();
|
| | | investReward.InvestType = (byte)type;
|
| | |
| | | {
|
| | | int gold = GetInvestGold(type, index);
|
| | | DebugEx.Log("SendInvestQuest:" + gold);
|
| | | CA540_tagCMGoldInvest investGold= new CA540_tagCMGoldInvest();
|
| | | CA540_tagCMGoldInvest investGold = new CA540_tagCMGoldInvest();
|
| | | investGold.InvestType = (byte)type;
|
| | | investGold.InvestGold = (uint)gold;
|
| | | GameNetSystem.Instance.SendInfo(investGold);
|
| | | }
|
| | | #endregion
|
| | |
|
| | | public RewardRecordState GetRecordByIndex(int type,int day)
|
| | | public RewardRecordState GetRecordByIndex(int type, int day)
|
| | | {
|
| | | ServerInvestInfo investInfo = GetInvestInfoByType(type);
|
| | | if (investInfo.investGold <= 0) return RewardRecordState.None;
|
| | |
| | | else if (investInfo.curDay < day)
|
| | | {
|
| | | return RewardRecordState.NoShow;
|
| | | } |
| | | }
|
| | | return RewardRecordState.NoReceive;
|
| | | }
|
| | | }
|
| | |
| | | redPointStre1_v3.state = RedPointState.None;
|
| | | redPointStre1_v4.state = RedPointState.None;
|
| | | redPointStre1.state = RedPointState.None;
|
| | | InvestInfo =GetInvestInfoByType((int)InvestType.Vip);
|
| | | InvestInfo = GetInvestInfoByType((int)InvestType.Vip);
|
| | | cycle = GetInvestCycle(InvestInfo.curDay);
|
| | | if (InvestInfo.investGold <= 0)
|
| | | {
|
| | | cycle = 1;
|
| | | }
|
| | | configlist = GetInvestConfiglistByCycle(cycle);
|
| | | if (configlist ==null)
|
| | | if (configlist == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | for (int i = 0; i < configlist.Count; i++)
|
| | | {
|
| | | InvestConfig config = configlist[i];
|
| | | RewardRecordState recordState =GetRecordByIndex((int)InvestType.Vip, config.needDay);
|
| | | RewardRecordState recordState = GetRecordByIndex((int)InvestType.Vip, config.needDay);
|
| | | if (recordState == RewardRecordState.NoReceive)
|
| | | {
|
| | | switch (cycle)
|
| | |
| | | default:
|
| | | break;
|
| | | }
|
| | | // redPointStre1.state = RedPointState.Simple;
|
| | | // redPointStre1.state = RedPointState.Simple;
|
| | | JumpIndex = i;
|
| | | return;
|
| | | }
|
| | |
| | | }
|
| | | if (IsRedpoint)
|
| | | {
|
| | | if (IsOneRedPoint)
|
| | | {
|
| | | redPointStre1.state = RedPointState.Simple;
|
| | | IsOneRedPoint = false;
|
| | | } |
| | | redPointStre1.state = RedPointState.Simple;
|
| | | }
|
| | | else
|
| | | {
|
| | | VipInvestRedPoint();
|
| | | }
|
| | | }
|
| | |
|
| | | private void IsShowRedPointSimple()
|
| | | {
|
| | | int GetDayOfYear = DateTime.Now.DayOfYear;
|
| | | string strKey = "IsOpenVipRedPoint" + PlayerDatas.Instance.baseData.LV;
|
| | | int day = LocalSave.GetInt(strKey);
|
| | | if (day != GetDayOfYear)
|
| | | {
|
| | | if (TimeUtility.CreateDays <= DisplayDays && redPointStre1.state == RedPointState.None
|
| | | && PlayerDatas.Instance.baseData.LV >= DisplayLevel)
|
| | | {
|
| | | LocalSave.SetInt(strKey, GetDayOfYear);
|
| | | IsRedpoint = true;
|
| | | RedPointSate();
|
| | | }
|
| | |
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | public struct InvestReward
|
| | | {
|
| | | public int id { get; private set; }
|