Mercurial > repos > IBDev-IBBoard.WarFoundry.API
view api/Objects/Stats.cs @ 14:0770e5cbba7c
Closes #21 - File loading in order
* Reworked LoadFiles to smaller methods for readability (also re #10) and structure
* Now determine expected load return before loading then load all "expected GameSystem" before "expected Race"
* Make "can load as race/game system/army" methods public in interface
Re #22 - Get errored file loading
* Created FileLoadFailure class and made LoadFiles return a list of them
Also
* Some code cleanup
* Change to DictionaryUtils calls
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 25 Jan 2009 14:03:20 +0000 |
parents | 607c3232d689 |
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; } } } }