using System;
using System.Collections.Generic;
using System.Text;
namespace Game
{
/// <summary>
/// Действия героя
/// </summary>
interface IHero
{
/// <summary>
/// Нанесение удара
/// </summary>
/// <param name="apponent">Аппонент которому наносится удар</param>
/// <returns>Возвращается аппонент с нанесенным ударом</returns>
Hero Strike(Hero apponent);
}
/// <summary>
/// Герой
/// </summary>
abstract class Hero : IHero
{
/// <summary>
/// Показатель здоровья
/// </summary>
private int health;
abstract public int Health { get; set; }
/// <summary>
/// Показатель маны
/// </summary>
private int manna;
abstract public int Manna { get; set; }
/// <summary>
/// Знания и навыки которые имеет герой
/// </summary>
private List<Knowledge> heroKnowledge;
abstract public List<Noledge> HeroKnowledge { get; set; }
/// <summary>
/// Знания и навыки действующие в данный момент
/// </summary>
private List<Knowledge> activeKnowledge;
abstract public List<Knowledge> ActiveKnowledge { get; set; }
/// <summary>
/// Нанесение удара
/// </summary>
/// <param name="apponent">Аппонент которому наносится удар</param>
/// <returns>Возвращается аппонент с нанесенным ударом</returns>
abstract public Hero Strike(Hero apponent);
}
/// <summary>
/// Возможность героя
/// </summary>
abstract class Knowledge
{
#region Незнаю нужно ли???
/// <summary>
/// Определяет на кого применено знание
/// </summary>
private int onYourself;
abstract public int OnYourself { get; set; }
#endregion
/// <summary>
/// Название навыка
/// </summary>
private int name;
abstract public int Name { get; set; }
/// <summary>
/// Тип навыка
/// <example>(Огонь,Вода,Хак)</example>
/// </summary>
private TypesOfKnowledge knowledgeType;
abstract public TypesOfKnowledge KnowledgeType { get; set; }
/// <summary>
/// Размер наносимого ущерба если положительный то защита, если отрицательный то атака
/// </summary>
private int value;
abstract public int Value { get; set; }
/// <summary>
/// Промежуток времени активности навыка.
/// <example>Если навык защита от огня работает 10 раундов значение равно 10, если все время значение -1 и если это удар огнем "разовый" равно 0</example>
/// </summary>
private int activeTime;
abstract public int ActiveTime { get; set; }
}
/// <summary>
/// Типы возможностей героя
/// </summary>
enum TypesOfKnowledge
{
/// <summary>
/// Огненый удар
/// </summary>
FireBolt = 0
}
}