106 lines
2.6 KiB
C#
106 lines
2.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
// takie same jak w bonusach itemow
|
|
public enum ItemBonusEnum
|
|
{
|
|
None,
|
|
Strenght,
|
|
Enduration,
|
|
Vitality,
|
|
Inteligence,
|
|
Speed
|
|
}
|
|
|
|
public abstract class PlayerPramCalcullator
|
|
{
|
|
protected virtual List<EquipmentTypeEnum> EQUIPMENT_TYPE => new List<EquipmentTypeEnum>();
|
|
protected virtual ItemBonusEnum BONUS_TYPE => ItemBonusEnum.None;
|
|
|
|
|
|
public virtual float Calculate(int itemValue)
|
|
{
|
|
var skillPoints = GetSkillPoints();
|
|
|
|
var bonusSum = CalculateBonusByType();
|
|
|
|
return Pattern(itemValue, skillPoints, bonusSum);
|
|
}
|
|
|
|
public virtual float CalculateWithoutItem()
|
|
{
|
|
var skillPoints = GetSkillPoints();
|
|
|
|
var bonusSum = CalculateBonusByType();
|
|
|
|
return WithoutItemPattern(skillPoints, bonusSum);
|
|
}
|
|
|
|
protected abstract float Pattern(int itemValue, int SkillPoints, int BonusSum);
|
|
|
|
protected abstract float WithoutItemPattern(int SkillPoints, int BonusSum);
|
|
|
|
public abstract int GetSkillPoints();
|
|
|
|
public int CalculateBonusByType()
|
|
{
|
|
var bonusSum = 0;
|
|
|
|
if (EquipmentUIManager.Instance.GetList().Count() == 0)
|
|
return bonusSum;
|
|
|
|
// Every equipped item by player with mached type
|
|
foreach(var equipmentType in EQUIPMENT_TYPE)
|
|
{
|
|
var machedEquippedItems = EquipmentUIManager
|
|
.Instance
|
|
.GetList()
|
|
.Where(slot => (slot.Value != null && slot.Value.EquipmentType == equipmentType))
|
|
.Select(slot => slot.Value)
|
|
.ToList()
|
|
;
|
|
|
|
foreach(var equippedItem in machedEquippedItems)
|
|
{
|
|
bonusSum += GetBonusFromItem(equippedItem, BONUS_TYPE);
|
|
}
|
|
}
|
|
|
|
return bonusSum;
|
|
}
|
|
|
|
protected int GetBonusFromItem(EquippableItem item, ItemBonusEnum itemBonus)
|
|
{
|
|
switch(itemBonus)
|
|
{
|
|
case ItemBonusEnum.Strenght:
|
|
{
|
|
return item.StrengthBonus;
|
|
}
|
|
case ItemBonusEnum.Enduration:
|
|
{
|
|
return item.EnduranceBonus;
|
|
}
|
|
case ItemBonusEnum.Vitality:
|
|
{
|
|
return item.VitalityBonus;
|
|
}
|
|
case ItemBonusEnum.Inteligence:
|
|
{
|
|
return item.InteligenceBonus;
|
|
}
|
|
case ItemBonusEnum.Speed:
|
|
{
|
|
return item.SpeedBonus;
|
|
}
|
|
default:
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
}
|