Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.WinForms
annotate FrmNewUnitFromTree.cs @ 208:19a88383dfa7
Re #354: Single-button Add Unit
* Pull out re-usable method for adding unit
* Make double-click add unit
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 20 Aug 2011 16:12:15 +0100 |
parents | 53d79e1be712 |
children | a11faa64c333 |
rev | line source |
---|---|
207 | 1 using System; |
2 using System.Collections.Generic; | |
3 using System.ComponentModel; | |
4 using System.Data; | |
5 using System.Drawing; | |
6 using System.Linq; | |
7 using System.Text; | |
8 using System.Windows.Forms; | |
9 using IBBoard.WarFoundry.API.Objects; | |
10 using IBBoard.WarFoundry.API; | |
11 | |
12 namespace IBBoard.WarFoundry.GUI.WinForms | |
13 { | |
14 public partial class FrmNewUnitFromTree : Form | |
15 { | |
16 public FrmNewUnitFromTree() | |
17 { | |
18 InitializeComponent(); | |
19 WarFoundryCore.ArmyChanged += new ArmyChangedDelegate(ArmyChanged); | |
20 } | |
21 | |
208
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
22 private void ArmyChanged(Army oldArmy, Army newArmy) |
207 | 23 { |
24 unitTypeTree.Nodes.Clear(); | |
25 | |
26 if (newArmy != null) | |
27 { | |
28 BuildTree(newArmy.Race); | |
29 } | |
30 } | |
31 | |
32 private void BuildTree(Race race) | |
33 { | |
34 foreach (Category cat in race.Categories) | |
35 { | |
36 UnitType[] unitTypes = race.GetUnitTypes(cat); | |
37 TreeNode[] unitNodes = new TreeNode[unitTypes.Length]; | |
38 | |
39 for (int i = 0; i < unitTypes.Length; i++) | |
40 { | |
41 UnitType unitType = unitTypes[i]; | |
42 TreeNode temp = new TreeNode(unitType.Name); | |
43 temp.Tag = unitType; | |
44 unitNodes[i] = temp; | |
45 } | |
46 | |
47 TreeNode catTemp = new TreeNode(cat.Name, unitNodes); | |
48 catTemp.Tag = cat; | |
49 unitTypeTree.Nodes.Add(catTemp); | |
50 catTemp.ExpandAll(); | |
51 } | |
208
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
52 |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
53 unitTypeTree.Show(); |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
54 } |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
55 |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
56 private void unitTypeTree_DoubleClick(object sender, EventArgs e) |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
57 { |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
58 TreeNode selected = unitTypeTree.SelectedNode; |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
59 object tagData = selected.Tag; |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
60 |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
61 if (tagData is UnitType) |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
62 { |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
63 UnitType unit = (UnitType)tagData; |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
64 Category cat = (Category)selected.Parent.Tag; |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
65 MdiParent.CreateUnitInCategory(unit, cat); |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
66 } |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
67 } |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
68 |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
69 public new FrmMain MdiParent |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
70 { |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
71 get { return (FrmMain)base.MdiParent; } |
19a88383dfa7
Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
207
diff
changeset
|
72 set { base.MdiParent = value; } |
207 | 73 } |
74 } | |
75 } |