Mercurial > repos > IBDev-IBBoard.WarFoundry.API
view api/Objects/Stats.cs @ 34:b28be912adab
Re #32 - Migrate to schema
* Remove use of Categories (now just has a single category)
* Fix infinite loop of trying to load files by adding a "is loading" flag
* Fix invalid setting of MinSize to MaxNumber when we're testing if MinSize > MaxSize
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 15 Mar 2009 16:07:52 +0000 |
parents | 306558904c2a |
children | e6200220ece3 |
line wrap: on
line source
// This file (Stats.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2009 IBBoard. // // The file and the library/program it is in are licensed under the GNU LGPL license, either version 3 of the License or (at your option) any later version. Please see COPYING.LGPL for more information and the full license. using System; using System.Collections.Generic; using IBBoard.Lang; namespace IBBoard.WarFoundry.API.Objects { /// <summary> /// Stats defines the statistic/attribute values for an entity (for example a unit or any of their equipment that has a stat line) paired against a <see cref=" SystemStats"/> stat line definition. /// </summary> public class Stats { private Stat[] stats; private List<string> statOrder; private SystemStats sysStats; public Stats(SystemStats systemStats) { sysStats = systemStats; } public Stat[] StatsArray { get { return (Stat[])stats.Clone(); } } protected internal void SetStats(List<Stat> statList) { stats = statList.ToArray(); statOrder = new List<string>(); foreach (Stat stat in statList) { statOrder.Add(stat.ParentSlot.Name); } } public Stat this[string id] { get { Stat stat = null; int pos = statOrder.IndexOf(id); try { stat = this[pos]; } catch (ArgumentException ex) { throw new ArgumentException(Translation.GetTranslation("InvalidStatPos", "Invalid statistic ID {0} for stats based on system stats set {1}", new object[]{id, sysStats.ID}), ex); } return stat; } } public Stat this[int pos] { get { if (pos < stats.Length && pos >= 0) { return stats[pos]; } else { throw new ArgumentException(Translation.GetTranslation("InvalidStatPos", "Invalid statistic position {0} for stats based on system stats set {1}", new object[]{pos, sysStats.ID})); } } } public int StatCount { get { return stats.Length; } } } }