Esempio n. 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);
        }
Esempio n. 2
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);
 }
Esempio n. 3
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);
        }