pkmn-classic-framework/library/Structures/StatValues.cs

54 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PkmnFoundations.Structures
{
public class StatValues<T> : StatValuesBase<T> where T : struct
{
public StatValues(T hp, T attack, T defense, T speed, T special_attack, T special_defense)
: base(hp, attack, defense, speed, special_attack, special_defense)
{
}
public StatValues(IEnumerable<T> s) : base(s)
{
}
public T Hp { get { return Stats[0]; } set { Stats[0] = value; } }
public T Attack { get { return Stats[1]; } set { Stats[1] = value; } }
public T Defense { get { return Stats[2]; } set { Stats[2] = value; } }
public T Speed { get { return Stats[3]; } set { Stats[3] = value; } }
public T SpecialAttack { get { return Stats[4]; } set { Stats[4] = value; } }
public T SpecialDefense { get { return Stats[5]; } set { Stats[5] = value; } }
public static int StatsIndex(Stats stat)
{
return (int)stat - 1;
}
public virtual T this[Stats stat]
{
get
{
int index = StatsIndex(stat);
if (index < 0 || index >= 6) throw new ArgumentException();
return Stats[index];
}
set
{
int index = StatsIndex(stat);
if (index < 0 || index >= 6) throw new ArgumentException();
Stats[index] = value;
}
}
public override string ToString()
{
return String.Format("{0}/{1}/{2}/{4}/{5}/{3}", Hp, Attack, Defense, Speed, SpecialAttack, SpecialDefense);
}
}
}