Mercurial > repos > IBDev-IBBoard.WarFoundry.API
annotate api/Objects/Stats.cs @ 67:e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
* Clean up stat loading for game systems and unit types
* Delete rogue character that stopped code compiling
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 25 Apr 2009 14:59:23 +0000 |
parents | 306558904c2a |
children | 10d14a7051d5 |
rev | line source |
---|---|
15 | 1 // This file (Stats.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2009 IBBoard. |
0 | 2 // |
15 | 3 // 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. |
0 | 4 |
5 using System; | |
6 using System.Collections.Generic; | |
7 using IBBoard.Lang; | |
8 | |
9 namespace IBBoard.WarFoundry.API.Objects | |
10 { | |
10 | 11 /// <summary> |
12 /// 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. | |
13 /// </summary> | |
0 | 14 public class Stats |
15 { | |
67
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
16 private List<Stat> stats; |
0 | 17 private SystemStats sysStats; |
18 | |
19 public Stats(SystemStats systemStats) | |
20 { | |
21 sysStats = systemStats; | |
67
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
22 stats = new List<Stat>(sysStats.SlotCount); |
0 | 23 } |
24 | |
25 public Stat[] StatsArray | |
26 { | |
67
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
27 get { return stats.ToArray(); } |
0 | 28 } |
67
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
29 |
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
30 public void SetStatValue(string statName, string statValue) |
0 | 31 { |
67
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
32 StatSlot slot = sysStats[statName]; |
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
33 |
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
34 if (slot!=null) |
0 | 35 { |
67
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
36 int pos = sysStats.GetStatSlotPosition(slot); |
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
37 |
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
38 if (pos > -1) |
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
39 { |
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
40 stats[pos] = new Stat(slot, statValue); |
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
41 } |
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
42 } |
0 | 43 } |
44 | |
45 public Stat this[string id] | |
46 { | |
47 get | |
48 { | |
67
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
49 StatSlot slot = sysStats[id]; |
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
50 int pos = sysStats.GetStatSlotPosition(slot); |
0 | 51 Stat stat = null; |
52 | |
53 try | |
54 { | |
55 stat = this[pos]; | |
56 } | |
57 catch (ArgumentException ex) | |
58 { | |
59 throw new ArgumentException(Translation.GetTranslation("InvalidStatPos", "Invalid statistic ID {0} for stats based on system stats set {1}", new object[]{id, sysStats.ID}), ex); | |
60 } | |
61 | |
62 return stat; | |
63 } | |
64 } | |
65 | |
66 public Stat this[int pos] | |
67 { | |
68 get | |
69 { | |
67
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
70 if (pos < stats.Count && pos >= 0) |
0 | 71 { |
72 return stats[pos]; | |
73 } | |
74 else | |
75 { | |
76 throw new ArgumentException(Translation.GetTranslation("InvalidStatPos", "Invalid statistic position {0} for stats based on system stats set {1}", new object[]{pos, sysStats.ID})); | |
77 } | |
78 } | |
79 } | |
80 | |
81 public int StatCount | |
82 { | |
67
e6200220ece3
Re #50 - Complete core loading of WarFoundry XML files
IBBoard <dev@ibboard.co.uk>
parents:
15
diff
changeset
|
83 get { return stats.Count; } |
0 | 84 } |
85 } | |
86 } |