Beispiel #1
0
        public static bool CanJoin(this RaceDivision raceDivision, User user)
        {
            var count = user.Attentiveness + user.SpeedReaction + user.Cunning + user.Courage;

            if (user.Money < raceDivision.GetJoinCost())
            {
                return(false);
            }

            if (raceDivision == RaceDivision.Common)
            {
                return(true);
            }

            else if (raceDivision == RaceDivision.Newbie)
            {
                return(count < 40);
            }

            else if (raceDivision == RaceDivision.Pro)
            {
                return(count >= 40);
            }

            return(false);
        }
Beispiel #2
0
 /// <summary>
 /// Создать гонку
 /// </summary>
 public static void CreateRace(string channel, Bot bot, RaceDivision raceDivision)
 {
     using (var context = new AppDbContext())
     {
         var groupRace = context.GroupRaces.CreateAndAddGroupRace(raceDivision);
         context.SaveChanges();
     }
     GroupRaceInfo(channel, bot, 10);
 }
Beispiel #3
0
        /// <summary>
        /// Расчет награды для участников
        /// </summary>
        static void UpdateUsers(List <UserRaceResult> raceResults, RaceDivision raceDivision)
        {
            var count = raceResults.Count;
            var fond  = count * raceDivision.GetJoinCost();

            raceResults.ForEach(x =>
            {
                var place           = raceResults.IndexOf(x) + 1;
                var reward          = GetReward(count, place);
                x.Reward            = reward;
                x.Reward.Place      = place;
                x.Reward.Money      = (int)(fond * reward.Percent);
                x.Reward.Experience = new Random().Next(3000 + x.User.Luck * 30, 3100 + x.User.Luck * 50);
            });
        }
Beispiel #4
0
 public static int GetJoinCost(this RaceDivision raceDivision)
 {
     if (raceDivision == RaceDivision.Common)
     {
         return(1000);
     }
     else if (raceDivision == RaceDivision.Newbie)
     {
         return(1000);
     }
     else if (raceDivision == RaceDivision.Pro)
     {
         return(5000);
     }
     return(0);
 }
Beispiel #5
0
 public static string GetDisplayName(this RaceDivision raceDivision)
 {
     if (raceDivision == RaceDivision.Newbie)
     {
         return("Новички");
     }
     else if (raceDivision == RaceDivision.Common)
     {
         return("Общий");
     }
     else if (raceDivision == RaceDivision.Pro)
     {
         return("Профи");
     }
     return(null);
 }
Beispiel #6
0
        public static GroupRace CreateAndAddGroupRace(this DbSet <GroupRace> groupRaces, RaceDivision raceDivision)
        {
            var groupRace = new GroupRace
            {
                CreateDate   = DateTime.Now,
                RaceDivision = raceDivision
            };

            groupRaces.Add(groupRace);
            return(groupRace);
        }