Example #1
0
    public void QueryLotteryEntry(RichDataEntry entry)
    {
        JsonData result;

        if (!m_resultEntryMap.TryGetValue(entry.m_Issue, out result))
        {
            if (m_lastedIssue > entry.m_Issue)
            {
                entry.m_isExpired = true;
            }
            return;
        }


        string[] strArr = result["opencode"].ToString().Replace('+', ',').Split(',');
        entry.m_LotteryNumbers = new int[strArr.Length];
        for (int i = 0; i < strArr.Length; i++)
        {
            entry.m_LotteryNumbers[i] = int.Parse(strArr[i]);
        }

        //entry.m_Date = JsonMapper.ToObject<DateTime>(result["opentime"].ToJson());
        entry.m_Date = DateTime.Parse(result["opentime"].ToString());


        ILotteryRule rule = LotteryRuleFactory.GetLotteryRule(m_curType);

        rule.Compare(entry);

        entry.m_hasResult = true;
    }
    public void SetRandomSeed(RichDataEntry seed)
    {
        TimeSpan deltaT = seed.m_Date - DateTime.Now;
        double   var_T  = Mathf.Pow((deltaT.Seconds + 1) * (deltaT.Minutes + 1), (deltaT.Hours + 1) * deltaT.Days);

        double ms = deltaT.TotalMilliseconds * seed.m_Issue;

        var byte_T  = BitConverter.GetBytes(var_T);
        var byte_ms = BitConverter.GetBytes(ms);

        byte t = 0;
        byte m = 0;

        foreach (var b in byte_T)
        {
            t ^= b;
        }
        foreach (var b in byte_ms)
        {
            m ^= b;
        }

        m_seed = (byte)(m & t);

        m_rnd = new System.Random(m_seed);
    }
Example #3
0
    public RichDataEntry GetNextIssue(RichDataEntry data)
    {
        //throw new NotImplementedException();
        RichDataEntry nextData = new RichDataEntry();

        nextData.m_RandNumbers    = null;
        nextData.m_KeepNumbers    = RichEngine.Instance.m_dataCenter.GetRecordOf(GetLotteryType()).m_KeepNumbers;
        nextData.m_LotteryNumbers = null;
        nextData.m_hasBuy         = false;
        nextData.m_HitLevel_Rand  = -1;
        nextData.m_HitLevel_Keep  = -1;
        nextData.m_hasResult      = false;

        if ((int)data.m_Date.DayOfWeek == 3)
        {
            nextData.m_Date = data.m_Date.AddDays(3);
        }
        else
        {
            nextData.m_Date = data.m_Date.AddDays(2);
        }

        if (data.m_Date.Year < nextData.m_Date.Year)
        {
            int _remainder = nextData.m_Date.Year % 100;
            nextData.m_Issue = (ulong)_remainder * 1000 + 1;
        }
        else
        {
            nextData.m_Issue = data.m_Issue + 1;
        }

        return(nextData);
    }
Example #4
0
    //随机列表

    //获取随机
    public int[] GetRandNumbers(string lotteryType, ulong issue, string randType)
    {
        RichLotteryRecord record = m_dataCenter.GetRecordOf(lotteryType);
        RichDataEntry     entry  = m_dataCenter.GetEntryOf(record, issue);

        //找到随机
        IRandom rand = RandomFactory.GetRandom(randType);

        rand.SetRandomSeed(entry);

        //获取规则
        int count = m_setting.m_LottryTypes[lotteryType].totalNum;
        var seg   = m_setting.m_LottryTypes[lotteryType].segments;

        int[] result = new int[count];
        int   pos    = 0;

        foreach (var s in seg)
        {
            int[] r = rand.GetRandNum(s.max, s.min, s.count);
            r.CopyTo(result, pos);
            pos += s.count;
        }

        return(result);
    }
Example #5
0
 public void SetItemData(RichDataEntry data, ListItemUI listItem)
 {
     m_richDataEntry = data;
     mListItemUI     = listItem;
     if (data.m_RandNumbers == null)
     {
         txt_RandNumbers.text = "";
     }
     else
     {
         txt_RandNumbers.text = UIController.Instance.IntConvertString(data.m_RandNumbers);
     }
 }
Example #6
0
    public void SetItemData(RichDataEntry data, int index)
    {
        m_richDataEntry = data;
        m_index         = index;
        txt_Issue.text  = "第" + m_richDataEntry.m_Issue.ToString() + "期";
        txt_Data.text   = m_richDataEntry.m_Date.ToString() + "开奖";
        refreshKeepText();
        refreshRandomText();
        refreshBuy();

        if (m_richDataEntry.m_LotteryNumbers == null)
        {
            txt_LotteryNumbers.text = "";
        }
        else
        {
            txt_LotteryNumbers.text = UIController.Instance.IntConvertString(m_richDataEntry.m_LotteryNumbers);
        }

        if (m_richDataEntry.m_hasBuy)
        {
            if (!m_richDataEntry.m_hasResult)
            {
                txt_HitLevel_Rand.text = "未开奖";
                txt_HitLevel_Keep.text = "未开奖";
            }
            else
            {
                txt_HitLevel_Rand.text = returnChinese(m_richDataEntry.m_HitLevel_Rand);
                txt_HitLevel_Keep.text = returnChinese(m_richDataEntry.m_HitLevel_Keep);
            }
        }
        else
        {
            txt_HitLevel_Rand.text = "未购买";
            txt_HitLevel_Keep.text = "未购买";
        }

        if (m_richDataEntry.m_hasResult || m_richDataEntry.m_isExpired || m_richDataEntry.m_hasBuy)
        {
            btn_Random.enabled = false;
            btn_Keep.enabled   = false;
        }
        else
        {
            btn_Random.enabled = true;
            btn_Keep.enabled   = true;
        }
    }
Example #7
0
    void CompareLottery(ILotteryResultQuery query, RichLotteryRecord record)
    {
        List <RichDataEntry> removeList = new List <RichDataEntry>();
        bool hasNew = false;

        foreach (var entry in record.m_RichList)
        {
            if (entry.m_Issue > query.GetLastestIssueNo())
            {
                hasNew = true;
                continue;
            }

            //没有买
            if (!entry.m_hasBuy)
            {
                //并且不是最新一期时候 删除数据
                if (entry.m_Issue <= query.GetLastestIssueNo())
                {
                    removeList.Add(entry);
                }
                continue;
            }


            //没有超期 并且 没有结果 就查询
            if (!entry.m_isExpired && !entry.m_hasResult)
            {
                query.QueryLotteryEntry(entry);
            }
        }
        //删除需要删除的
        foreach (var rm in removeList)
        {
            record.m_RichList.Remove(rm);
        }

        //没有最新,要创建最新
        if (!hasNew)
        {
            RichDataEntry lastestEntry = query.GetLatestIssueInfo();

            var rule = LotteryRuleFactory.GetLotteryRule(record.m_LotteryType);

            var newEntry = rule.GetNextIssue(lastestEntry);

            record.m_RichList.Add(newEntry);
        }
    }
Example #8
0
    public RichDataEntry GetLatestIssueInfo()
    {
        RichDataEntry entry = new RichDataEntry();

        JsonData lastedResult = m_resultEntryMap[m_lastedIssue];

        entry.m_Issue = ulong.Parse(lastedResult["expect"].ToString());

        string[] strArr = lastedResult["opencode"].ToString().Replace('+', ',').Split(',');
        entry.m_LotteryNumbers = new int[strArr.Length];
        for (int i = 0; i < strArr.Length; i++)
        {
            entry.m_LotteryNumbers[i] = int.Parse(strArr[i]);
        }

        //entry.m_Date = JsonMapper.ToObject<DateTime>(lastedResult["opentime"].ToJson());
        entry.m_Date      = DateTime.Parse(lastedResult["opentime"].ToString());
        entry.m_hasResult = true;

        return(entry);
    }
Example #9
0
    public void SetItemData(RichDataEntry data, ListItemUI listItem)
    {
        m_richDataEntry = data;
        mListItemUI     = listItem;
        if (data.m_KeepNumbers == null)
        {
            txt_KeepNunbers.text = "";
        }
        else
        {
            txt_KeepNunbers.text = UIController.Instance.IntConvertString(data.m_KeepNumbers);
        }

        if (data.m_RandNumbers == null)
        {
            txt_RandNumbers.text = "";
        }
        else
        {
            txt_RandNumbers.text = UIController.Instance.IntConvertString(data.m_RandNumbers);
        }

        txt_LotteryType.text = "请帮我购买" + UIController.Instance.mLottryType;
    }
 public void SetRandomSeed(RichDataEntry seed)
 {
 }
Example #11
0
 public void Compare(RichDataEntry data)
 {
     //throw new NotImplementedException();
     data.m_HitLevel_Rand = Winning(data.m_RandNumbers, data.m_LotteryNumbers);
     data.m_HitLevel_Keep = Winning(data.m_KeepNumbers, data.m_LotteryNumbers);
 }