public int UpdateV3(AvatarState avatarState, ArenaInfo enemyInfo, BattleLog.Result result) { switch (result) { case BattleLog.Result.Win: ArenaRecord.Win++; break; case BattleLog.Result.Lose: ArenaRecord.Lose++; break; case BattleLog.Result.TimeOver: ArenaRecord.Draw++; return(0); default: throw new ArgumentOutOfRangeException(nameof(result), result, null); } var score = ArenaScoreHelper.GetScoreV1(Score, enemyInfo.Score, result); var calculated = Score + score; var current = Score; Score = Math.Max(1000, calculated); DailyChallengeCount--; ArmorId = avatarState.GetArmorId(); Level = avatarState.level; return(Score - current); }
public void GetScoreV1() { const int challengerRating = 10000; var defenderRating = challengerRating + Math.Abs(ArenaScoreHelper.DifferLowerLimit); var score = ArenaScoreHelper.GetScoreV1(challengerRating, defenderRating, Result.Win); Assert.Equal(ArenaScoreHelper.WinScoreMax, score); score = ArenaScoreHelper.GetScoreV1(challengerRating, defenderRating, Result.Lose); Assert.Equal(ArenaScoreHelper.LoseScoreMin, score); defenderRating++; score = ArenaScoreHelper.GetScoreV1(challengerRating, defenderRating, Result.Win); Assert.Equal(ArenaScoreHelper.WinScoreMax, score); score = ArenaScoreHelper.GetScoreV1(challengerRating, defenderRating, Result.Lose); Assert.Equal(ArenaScoreHelper.LoseScoreMin, score); defenderRating = challengerRating - Math.Abs(ArenaScoreHelper.DifferUpperLimit); score = ArenaScoreHelper.GetScoreV1(challengerRating, defenderRating, Result.Win); Assert.Equal(ArenaScoreHelper.WinScoreMin, score); score = ArenaScoreHelper.GetScoreV1(challengerRating, defenderRating, Result.Lose); Assert.Equal(ArenaScoreHelper.LoseScoreMax, score); defenderRating--; score = ArenaScoreHelper.GetScoreV1(challengerRating, defenderRating, Result.Win); Assert.Equal(ArenaScoreHelper.WinScoreMin, score); score = ArenaScoreHelper.GetScoreV1(challengerRating, defenderRating, Result.Lose); Assert.Equal(ArenaScoreHelper.LoseScoreMax, score); }