using HISP.Game.Horse; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; namespace HISP.Game.Services { public class Pawneer { public Pawneer(int breedId, int basePrice) { BreedId = breedId; BasePrice = basePrice; } private static List pawneerPriceModels = new List(); private static Pawneer[] PawneerPriceModels { get { return pawneerPriceModels.ToArray(); } } public static void AddPawneerPriceModel(Pawneer pawneerPrice) { pawneerPriceModels.Add(pawneerPrice); } public int BreedId; public int BasePrice; public static int GetPawneerBasePriceForHorse(HorseInfo.Breed breed) { foreach (Pawneer ppm in PawneerPriceModels) { if (ppm.BreedId == breed.Id) { return ppm.BasePrice; } } throw new Exception("No pawneeer base price found >_> for breed #" + breed.Id + " " + breed.Name); } public static int CalculateTotalPrice(HorseInstance horse) { HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED); HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH); HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION); HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY); HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE); int basePrice = GetPawneerBasePriceForHorse(horse.Breed); int additionalPrice = speedStat.BreedOffset * 350; additionalPrice += strengthStat.BreedOffset * 350; additionalPrice += conformationStat.BreedOffset * 350; additionalPrice += agilityStat.BreedOffset * 350; additionalPrice += enduranceStat.BreedOffset * 350; additionalPrice += horse.BasicStats.Health * 40; additionalPrice += horse.BasicStats.Shoes * 20; int price = basePrice + additionalPrice; return price; } } }