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> 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); }); }