public static AchievementLevelInfo GetNextClaimableAchievementLevelInfo(this IAchievementService achievementService, Type levelBaseType) { int index = achievementService.GetAchievementClaimedIndex(levelBaseType) + 1; AchievementInfo achievementInfo = InfoResolver.Resolve <FortInfo>().Achievement.AchievementTypes[levelBaseType]; Array value = (Array)levelBaseType.GetProperty("LevelInfo").GetValue(achievementInfo, new object[0]); if (index >= value.Length) { return(null); } return((AchievementLevelInfo)value.GetValue(index)); }
public static int GetAchievementClaimedIndex <T>(this IAchievementService achievementService) where T : LevelBaseAchievementInfo { return(achievementService.GetAchievementClaimedIndex(typeof(T))); }