Example #1
0
        //结算
        public bool Settle(BetType winnerType)
        {
            WinnerType = winnerType;
            double WinnerTotalValue = winnerType == BetType.singular ? SingularTotalValue : DualTotalValue;

            foreach (var eachUserBetInfo in UserBetList)
            {
                if (eachUserBetInfo.UserBetType == winnerType)
                {
                    //赢得尸体计算
                    double temp = eachUserBetInfo.UserBetValue / WinnerTotalValue * TotalValue;
                    //10000瓜子折合1千克尸体
                    temp = temp / 10000;
                    var Collection = SingleInstanceHelper.Instance.DBHelper.DataBase.GetCollection <BsonDocument>(SingleInstanceHelper.Instance.DBHelper.UserRecordCoName);
                    FilterDefinition <BsonDocument> filter = Builders <BsonDocument> .Filter.Eq(x => x["UserId"], eachUserBetInfo.UserId);

                    List <BsonDocument> UserInDB = Collection.Find(filter).ToList();
                    if (UserInDB != null && UserInDB.Count > 0)
                    {
                        var tempUserRecord = new UserRecordModel();
                        tempUserRecord.FromBson(UserInDB[0]);
                        tempUserRecord.UserGetWeight += temp;
                        var TempBson = BsonSerializer.Deserialize <BsonDocument>(JsonHelper.getJsonByObject(tempUserRecord));
                        SingleInstanceHelper.Instance.DBHelper.Save(SingleInstanceHelper.Instance.DBHelper.UserRecordCoName, TempBson, "UserId");
                        //记录流水
                        UserGetWeightWaterRecordHelper.WaterRecord(tempUserRecord.UserName, tempUserRecord.UserId, temp, "增加", "竞猜获胜");
                    }
                }
            }
            DumpToDB();
            return(true);
        }
Example #2
0
        //获取用户排行榜
        public List <UserRecordModel> GetTopTenUserRecord()
        {
            var result             = new List <UserRecordModel>();
            var tempUserRecordList = SingleInstanceHelper.Instance.DBHelper.FindTopN(SingleInstanceHelper.Instance.DBHelper.UserRecordCoName, 10, "UserGetWeight");

            foreach (var eachUserRecord in tempUserRecordList)
            {
                var temp = new UserRecordModel();
                temp.FromBson(eachUserRecord);
                result.Add(temp);
            }
            return(result);
        }
Example #3
0
 //赢得沼泽
 public bool WinMarsh()
 {
     if (IsWin())
     {
         //计算本局沼泽的信息
         Winner       = CurrentRunner;
         WinnerId     = CurrentRunnerId;
         WinnerWeight = TotalWeight * 0.5;
         //更新所有用户的尸体信息
         var TempUserRecordList = SingleInstanceHelper.Instance.DBHelper.FindAll(SingleInstanceHelper.Instance.DBHelper.UserRecordCoName);
         List <UserRecordModel> UserRecordList = new List <UserRecordModel>();
         double AllUserTotalPower = 0.0;
         foreach (var eachUserRecord in TempUserRecordList)
         {
             var tempUserRecord = new UserRecordModel();
             tempUserRecord.FromBson(eachUserRecord);
             AllUserTotalPower += tempUserRecord.UserTotalPower;
             UserRecordList.Add(tempUserRecord);
         }
         foreach (var eachUserRecord in UserRecordList)
         {
             eachUserRecord.UserGetWeight += (TotalPower / 10000 * 0.5) / AllUserTotalPower * eachUserRecord.UserTotalPower;
             //记录尸体流水
             UserGetWeightWaterRecordHelper.WaterRecord(eachUserRecord.UserName, eachUserRecord.UserId, (TotalPower / 10000 * 0.5) / AllUserTotalPower * eachUserRecord.UserTotalPower, "增加", "沼泽分红");
             if (eachUserRecord.UserId == WinnerId)
             {
                 eachUserRecord.UserGetWeight += WinnerWeight;
                 UserGetWeightWaterRecordHelper.WaterRecord(eachUserRecord.UserName, eachUserRecord.UserId, WinnerWeight, "增加", "沼泽获胜");
             }
             var TempBson = BsonSerializer.Deserialize <BsonDocument>(JsonHelper.getJsonByObject(eachUserRecord));
             SingleInstanceHelper.Instance.DBHelper.Save(SingleInstanceHelper.Instance.DBHelper.UserRecordCoName, TempBson, "UserId");
         }
         return(true);
     }
     return(false);
 }
Example #4
0
        //有新的挑战者 Power为瓜子数量
        public int GetOneRunner(String RunnerName, double Power, int UserId, int addFollow)
        {
            if (IsWin())
            {
                return(0);
            }
            RunTimes += 1;

            //正常结束返回1
            int result = 1;

            if (BoomPercent > 0)
            {
                Random rd       = new Random();
                int    rdResult = rd.Next(0, 100);
                if (rdResult < BoomPercent)
                {
                    //沼气爆炸
                    result = 2;
                    double temp       = TotalWeight * 0.1;
                    var    Collection = SingleInstanceHelper.Instance.DBHelper.DataBase.GetCollection <BsonDocument>(SingleInstanceHelper.Instance.DBHelper.UserRecordCoName);
                    FilterDefinition <BsonDocument> filter = Builders <BsonDocument> .Filter.Eq(x => x["UserId"], UserId);

                    List <BsonDocument> UserInDB = Collection.Find(filter).ToList();
                    if (UserInDB != null && UserInDB.Count > 0)
                    {
                        var tempUserRecord = new UserRecordModel();
                        tempUserRecord.FromBson(UserInDB[0]);
                        tempUserRecord.UserGetWeight += temp;
                        var TempBson = BsonSerializer.Deserialize <BsonDocument>(JsonHelper.getJsonByObject(tempUserRecord));
                        SingleInstanceHelper.Instance.DBHelper.Save(SingleInstanceHelper.Instance.DBHelper.UserRecordCoName, TempBson, "UserId");
                        //记录流水
                        UserGetWeightWaterRecordHelper.WaterRecord(tempUserRecord.UserName, tempUserRecord.UserId, temp, "增加", "沼气爆炸");
                    }
                    TotalWeight = TotalWeight - temp;
                }
                //否则无事发生
            }



            if (LeftTime + 10 > 1800)
            {
                LeftTime = 1800;
            }
            else
            {
                LeftTime += 10;
            }

            LastRunnerLeftTime = LeftTime;
            TotalWeight       += Power / 10000 * 0.5;
            CurrentRunner      = RunnerName;
            CurrentRunnerPower = Power;
            TotalPower        += Power;
            CurrentRunnerId    = UserId;

            if (addFollow == 0)
            {
                IsFan = false;
            }
            else
            {
                IsFan = true;
            }
            return(result);
        }
Example #5
0
        //接受到弹幕
        public void ReceiveDanmu(object sender, ReceivedDanmakuArgs e)
        {
            if (e.Danmaku != null && (e.Danmaku.MsgType == MsgTypeEnum.GiftSend || e.Danmaku.MsgType == MsgTypeEnum.GuardBuy))
            {
                if (e.Danmaku.GiftCount > 0)
                {
                    //记录礼物价值
                    var            obj           = JObject.Parse(e.Danmaku.RawData);
                    GiftValueModel tempGiftValue = null;
                    if (GiftValueList.Count > 0)
                    {
                        tempGiftValue = GiftValueList.Find(r => r.GiftName.Equals(e.Danmaku.GiftName));
                    }
                    if (tempGiftValue == null)
                    {
                        tempGiftValue = new GiftValueModel()
                        {
                            GiftName  = e.Danmaku.GiftName,
                            Giftid    = obj["data"]["giftId"].ToObject <int>(),
                            GiftPrice = obj["data"]["price"].ToObject <double>(),
                        };
                        GiftValueList.Add(tempGiftValue);
                    }
                    //记录到数据库
                    var temp = BsonSerializer.Deserialize <BsonDocument>(e.Danmaku.RawData);
                    SingleInstanceHelper.Instance.DBHelper.Insert(SingleInstanceHelper.Instance.DBHelper.GiftRecordCoName, temp);
                    double Power = tempGiftValue.GiftPrice * e.Danmaku.GiftCount;

                    //增加用户的power数据到数据库顺便更新用户状态
                    var Collection = SingleInstanceHelper.Instance.DBHelper.DataBase.GetCollection <BsonDocument>(SingleInstanceHelper.Instance.DBHelper.UserRecordCoName);
                    FilterDefinition <BsonDocument> filter = Builders <BsonDocument> .Filter.Eq(x => x["UserId"], e.Danmaku.UserID);

                    List <BsonDocument> result = Collection.Find(filter).ToList();
                    var tempUserRecord         = new UserRecordModel();
                    int addFollow = obj["data"]["addFollow"].ToObject <int>();
                    if (result != null && result.Count > 0)
                    {
                        tempUserRecord.FromBson(result[0]);
                        tempUserRecord.UserTotalPower += Power;
                        tempUserRecord.UserName        = e.Danmaku.UserName;
                        if (addFollow == 0)
                        {
                            tempUserRecord.IsFan = false;
                        }
                        else
                        {
                            tempUserRecord.IsFan = true;
                        }
                    }
                    else
                    {
                        tempUserRecord.UserId         = e.Danmaku.UserID;
                        tempUserRecord.UserName       = e.Danmaku.UserName;
                        tempUserRecord.UserTotalPower = Power;
                        tempUserRecord.UserGetWeight  = 0;
                        if (addFollow == 0)
                        {
                            tempUserRecord.IsFan = false;
                        }
                        else
                        {
                            tempUserRecord.IsFan = true;
                        }
                    }
                    var TempBson = BsonSerializer.Deserialize <BsonDocument>(JsonHelper.getJsonByObject(tempUserRecord));
                    SingleInstanceHelper.Instance.DBHelper.Save(SingleInstanceHelper.Instance.DBHelper.UserRecordCoName, TempBson, "UserId");

                    if (Stop)
                    {
                        return;
                    }

                    //记录消息
                    Random rd       = new Random();
                    int    rdResult = rd.Next(1, 100);
                    if (rdResult < 50)
                    {
                        String NewRunnerMessage = NewRunnerMessages[rdResult % 11].Replace("挑战者", e.Danmaku.UserName);
                        WriteToFile(NewRunnerMessage);
                    }
                    //沼泽处理
                    if (CurrentMarsh.GetOneRunner(e.Danmaku.UserName, Power, e.Danmaku.UserID, addFollow) == 2)
                    {
                        String RealBoomMessage = BoomMessage.Replace("挑战者", e.Danmaku.UserName);
                        WriteToFile(RealBoomMessage);
                    }
                    //竞猜处理
                    if (CurrentBet != null)
                    {
                        if (CurrentBet.Status == BetStatus.betting)
                        {
                            CurrentBet.Bet(e.Danmaku.UserName, e.Danmaku.UserID, e.Danmaku.GiftCount, tempGiftValue.GiftPrice);
                        }
                    }
                }
            }
        }