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); }
/// <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); }
/// <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); }); }
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); }
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); }
public static GroupRace CreateAndAddGroupRace(this DbSet <GroupRace> groupRaces, RaceDivision raceDivision) { var groupRace = new GroupRace { CreateDate = DateTime.Now, RaceDivision = raceDivision }; groupRaces.Add(groupRace); return(groupRace); }