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); }
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); }
//随机列表 //获取随机 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); }
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); } }
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; } }
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); } }
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); }
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) { }
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); }