view api/Objects/SystemStats.cs @ 38:548cfc776f54

Fixes #34 - Remove "Choices" and "Base/Increment" from Category * Remove Choices and Base/Increment from code Re #47: Remove magic numbers * Replace "-1" magic number with WarFoundryCore.INFINITY * Use INFINITY instead of -1 in code * Use INF in schemas instead of -1 * Handle and parse INF as a special value in XML Factory
author IBBoard <dev@ibboard.co.uk>
date Thu, 19 Mar 2009 20:11:07 +0000
parents 306558904c2a
children e6200220ece3
line wrap: on
line source

// This file (SystemStats.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;

namespace IBBoard.WarFoundry.API.Objects
{
	/// <summary>
	/// SystemStats defines the available statistics/attributes that entity types can use (either a unit or an equipment item that has a stats line). Statistic/attribute values will be defined by a <see cref="Stats"/> object.
	/// </summary>
	public class SystemStats
	{
		private Dictionary<string, StatSlot> stats;
		private string id;

		public SystemStats(string statsID, StatSlot[] statSlots)
		{
			id = statsID;
			stats = new Dictionary<string, StatSlot>();
			
			foreach (StatSlot slot in statSlots)
			{
				slot.SystemStats = this;
				stats[slot.Name] = slot;
			}
		}

		public StatSlot[] StatSlots
		{
			get
			{
				StatSlot[] slots = new StatSlot[stats.Count];
				stats.Values.CopyTo(slots, 0);
				return slots;
			}
		}
		
		public StatSlot this[string key]
		{
			get 
			{
				StatSlot slot = null;
				stats.TryGetValue(key, out slot);
				return slot;
			}
		}
		
        public int SlotCount
        {
            get { return stats.Count; }
        }
		
		public string ID
		{
			get { return id; }
		}
	}
}