//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, September 27, 2018 //-------------------------------------------------------- using LitJson; using System; using System.Collections.Generic; using TableConfig; using UnityEngine; namespace Snxxz.UI { [XLua.LuaCallCSharp] public class WheelOfFortuneModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public class AngleClass { public float AngleStart; public float AngleEnd; } public int Lattice = -1;//格子 public int Number = 0;//次数(当日已转次数) public int NeedJade = 0;//需要仙玉 public float AngleSave = 0f;//角度记录 public Dictionary AngleDic = new Dictionary(); private double[][] AngleList; public event Action WheelOfFortuneUpdate; private string StrKey = string.Empty; private bool IsOk = false; private const int Redpoint_key1 = 20106;//幸运转盘红点 public Redpoint redPointStre1 = new Redpoint(201, Redpoint_key1); VipModel m_Vipmodel; VipModel vipmodel { get { return m_Vipmodel ?? (m_Vipmodel = ModelCenter.Instance.GetModel()); } } public override void Init() { var BindJadewheel = Config.Instance.Get("BindJadeWheelCfg"); NeedJade = int.Parse(BindJadewheel.Numerical1); AngleList = JsonMapper.ToObject(BindJadewheel.Numerical5); if (AngleDic.Count <= 0) { for (int i = 0; i < AngleList.Length; i++) { int Type = i + 1; AngleClass angleClass = new AngleClass(); angleClass.AngleStart = (float)AngleList[i][0]; angleClass.AngleEnd = (float)AngleList[i][1]; AngleDic.Add(Type, angleClass); } } } public override void UnInit() { } public void OnBeforePlayerDataInitialize() { IsOk = false; } public void OnPlayerLoginOk() { PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= Updatefighting;//数据的刷新(h0418) PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;//数据的刷新(h0418) FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; IsOk = true; StrKey = "IsOpenFiaryJadeRedPoint" + PlayerDatas.Instance.baseData.PlayerID; AngleSave = LocalSave.GetFloat(StrKey); RedPoint(); } private void OnFuncStateChangeEvent(int obj) { if (obj == 144) { RedPoint(); } } public void BindJadeWheelResult(HA324_tagMCBindJadeWheelResult Info) { Lattice = Info.Index; Number = Info.Cnt; if (IsOk && Info.Index!=0) { if (AngleDic.ContainsKey(Lattice)) { float flo = UnityEngine.Random.Range(AngleDic[Lattice].AngleStart + 1f, AngleDic[Lattice].AngleEnd - 1f); flo = (float)Math.Round((double)flo, 2); if (flo > 360f) { flo = flo - 360f; } if (Math.Abs(flo- AngleSave)<=0.2) { if ((flo + 1f )> (AngleDic[Lattice].AngleStart + 1f) && (flo + 1f) < (AngleDic[Lattice].AngleEnd - 1f)) { flo += 1; } else if ((flo - 1f) > (AngleDic[Lattice].AngleStart + 1f) && (flo - 1f) < (AngleDic[Lattice].AngleEnd - 1f)) { flo -= 1; } } LocalSave.SetFloat(StrKey, flo); AngleSave = LocalSave.GetFloat(StrKey); } if (WheelOfFortuneUpdate != null) { WheelOfFortuneUpdate(AngleSave); } RedPoint(); } } public void StartTheDraw()//开始抽奖 { CA517_tagCMStartBindJadeWheel _tagC517 = new CA517_tagCMStartBindJadeWheel(); GameNetSystem.Instance.SendInfo(_tagC517); } private void Updatefighting(PlayerDataRefresh obj)//红点 { if (obj == PlayerDataRefresh.VIPLv) { RedPoint(); } } private void RedPoint() { if (!FuncOpen.Instance.IsFuncOpen(144)) { return; } int GetDayOfYear = DateTime.Now.DayOfYear; string strKey = "WheelOfRedPoint" + PlayerDatas.Instance.baseData.PlayerID; int day = LocalSave.GetInt(strKey); if (day != GetDayOfYear) { redPointStre1.state = RedPointState.Simple; } else { redPointStre1.state = RedPointState.None; } } public int GetTheGrid(float angle) { foreach (var key in AngleDic.Keys) { if (angle > AngleDic[key].AngleStart && angle < AngleDic[key].AngleEnd) { return key; } } return 0; } } }