Mercurial > repos > IBBoard.WarFoundry.API
view api/Objects/Stats.cs @ 0:520818033bb6
Initial commit of WarFoundry code
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Fri, 19 Dec 2008 15:57:51 +0000 |
parents | |
children | 607c3232d689 |
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 { 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; } } } }