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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
207
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 using System;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 using System.Collections.Generic;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 using System.ComponentModel;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 using System.Data;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 using System.Drawing;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using System.Linq;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 using System.Text;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8 using System.Windows.Forms;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9 using IBBoard.WarFoundry.API.Objects;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 using IBBoard.WarFoundry.API;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 namespace IBBoard.WarFoundry.GUI.WinForms
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 {
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 public partial class FrmNewUnitFromTree : Form
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 {
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 public FrmNewUnitFromTree()
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 {
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 InitializeComponent();
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 WarFoundryCore.ArmyChanged += new ArmyChangedDelegate(ArmyChanged);
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 }
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
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
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23 {
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24 unitTypeTree.Nodes.Clear();
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26 if (newArmy != null)
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
27 {
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28 BuildTree(newArmy.Race);
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 }
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
30 }
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 private void BuildTree(Race race)
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 {
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
34 foreach (Category cat in race.Categories)
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
35 {
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36 UnitType[] unitTypes = race.GetUnitTypes(cat);
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37 TreeNode[] unitNodes = new TreeNode[unitTypes.Length];
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
38
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
39 for (int i = 0; i < unitTypes.Length; i++)
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
40 {
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
41 UnitType unitType = unitTypes[i];
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
42 TreeNode temp = new TreeNode(unitType.Name);
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
43 temp.Tag = unitType;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
44 unitNodes[i] = temp;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
45 }
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
46
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
47 TreeNode catTemp = new TreeNode(cat.Name, unitNodes);
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
48 catTemp.Tag = cat;
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
49 unitTypeTree.Nodes.Add(catTemp);
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
50 catTemp.ExpandAll();
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
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
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
73 }
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
74 }
53d79e1be712 Re #354: Single-button Add Unit
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
75 }