Mercurial > repos > IBBoard.WarFoundry.API
view api/Objects/Stats.cs @ 10:607c3232d689
Re #11 - Documentation
* Document Stats and SystemStats at class level to explain the difference
* Document WarFoundryXmlFactory at class level
Re #13 - XPath for XML loading
* Load categories using XPath - needs fixing so we can do a proper "categories/cat" query
Re #10 - Refactoring for readability
* Fix method signature for getting number from attribute added in r19
* Refactor more code in to GetExtraData method
* Separate out loading of categories for GameSystem
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 04 Jan 2009 20:43:36 +0000 |
parents | 520818033bb6 |
children | 306558904c2a |
line wrap: on
line source
// Stats.cs // // Copyright (C) 2008 IBBoard // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License version 2.1 of the License as published by the Free // Software Foundation. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // 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; } } } }