annotate Widgets/UnitDisplayWidget.cs @ 113:4a33b3012100 WarFoundry_v0.1RC1

* Tag v0.1RC1 release no-open-ticket
author IBBoard <dev@ibboard.co.uk>
date Mon, 17 Jan 2011 19:43:47 +0000
parents a35c8be46006
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
a191d0655f55 Re #121: Migrate to AGPL license
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
1 // This file (UnitDisplayWidget.cs) is a part of the IBBoard.WarFoundry.GTK project and is copyright 2008, 2009 IBBoard.
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 //
19
a191d0655f55 Re #121: Migrate to AGPL license
IBBoard <dev@ibboard.co.uk>
parents: 15
diff changeset
3 // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license.
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 using System;
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using Gtk;
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 using IBBoard.Commands;
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
8 using IBBoard.GtkSharp;
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9 using IBBoard.Lang;
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 using IBBoard.WarFoundry.API;
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
11 using IBBoard.WarFoundry.API.Commands;
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 using IBBoard.WarFoundry.API.Objects;
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
13 using IBBoard.WarFoundry.API.Util;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
14 using IBBoard.WarFoundry.GUI.GTK.UIControl;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
15 using log4net;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
16 using WFObjects = IBBoard.WarFoundry.API.Objects;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
17 using System.Collections.Generic;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
18 using IBBoard.GtkSharp.Translatable;
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
20 namespace IBBoard.WarFoundry.GUI.GTK.Widgets
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21 {
5
65279b85446f Re #1 - LGPL license all code
IBBoard <dev@ibboard.co.uk>
parents: 0
diff changeset
22 [System.ComponentModel.Category("WarFoundry GTK# GUI")]
65279b85446f Re #1 - LGPL license all code
IBBoard <dev@ibboard.co.uk>
parents: 0
diff changeset
23 [System.ComponentModel.ToolboxItem(true)]
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24 public partial class UnitDisplayWidget : Gtk.Bin
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
25 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
26 private static ILog log = LogManager.GetLogger(typeof(UnitDisplayWidget));
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
27 private WFObjects.Unit unit;
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28 private CommandStack stack;
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
29 private Dictionary<string, NodeView> statsViews = new Dictionary<string, NodeView>();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
30
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
31 public UnitDisplayWidget(WFObjects.Unit sourceUnit, CommandStack commandStack)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 {
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 this.Build();
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
34 stack = commandStack;
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
35 unit = sourceUnit;
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36 unitName.Text = unit.Name;
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37 unitSize.Value = unit.Size;
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
38 int maxSize = (unit.UnitType.MaxSize == WarFoundryCore.INFINITY ? int.MaxValue : unit.UnitType.MaxSize);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
39 int minSize = unit.UnitType.MinSize;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
40 unitSize.SetRange(minSize, maxSize);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
41 unitSize.Sensitive = (maxSize != minSize);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
42 notesView.Buffer.Text = unit.UnitType.Notes;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
43 unit.NameChanged += UnitNameChanged;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
44 unit.UnitSizeChanged += UnitSizeChanged;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
45 unit.UnitEquipmentAmountChanged += HandleUnitUnitEquipmentAmountChanged;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
46 equipmentList.Selection.Changed += HandleEquipmentListSelectionChanged;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
47 SetAbilities();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
48 SetStats();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
49 SetWeapons();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
50 SetAddButtonEnabledState();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
51 ControlTranslator.TranslateWidget(this);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
52 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
53
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
54 private void HandleEquipmentListSelectionChanged(object sender, EventArgs e)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
55 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
56 SetButtonsEnabledState();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
57 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
58
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
59 private void SetButtonsEnabledState()
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
60 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
61 UnitEquipmentItem equipItem = GetSelectedEquipmentItem();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
62 bttnReplaceWeapon.Sensitive = (equipItem != null && equipItem.HasAlternatives());
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
63 bttnEditWeapon.Sensitive = (UnitEquipmentUtil.CanEditEquipmentAmount(unit, equipItem));
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
64 bttnRemoveWeapon.Sensitive = (equipItem != null && !equipItem.IsRequired);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
65 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
66
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
67 private void SetAddButtonEnabledState()
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
68 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
69 bttnAddWeapon.Sensitive = AddEquipmentUIControl.HasEquipmentToAdd(unit);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
70 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
71
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
72 private UnitEquipmentItem GetSelectedEquipmentItem()
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
73 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
74 return (UnitEquipmentItem)TreeUtils.GetSelectedItem(equipmentList);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
75 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
76
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
77 private void SetAbilities()
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
78 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
79 CellRendererText renderer = new CellRendererText();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
80 abilitiesList.AppendColumn("", renderer, new TreeCellDataFunc(RenderAbility));
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
81
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
82 ListStore model = new ListStore(typeof(Ability));
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
83
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
84 foreach (Ability ability in unit.UnitType.GetRequiredAbilities())
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
85 {
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
86 model.AppendValues(ability);
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
87 }
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
88
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
89 abilitiesList.Model = model;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
90 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
91
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
92 public void RenderAbility(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
93 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
94 object o = model.GetValue(iter, 0);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
95
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
96 if (o is Ability)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
97 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
98 Ability ability = (Ability)o;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
99 (cell as CellRendererText).Text = ability.Name;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
100 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
101
13
6b2c8e55564a * Fix line terminators
IBBoard <dev@ibboard.co.uk>
parents: 11
diff changeset
102 }
6b2c8e55564a * Fix line terminators
IBBoard <dev@ibboard.co.uk>
parents: 11
diff changeset
103
6b2c8e55564a * Fix line terminators
IBBoard <dev@ibboard.co.uk>
parents: 11
diff changeset
104 private void SetStats()
6b2c8e55564a * Fix line terminators
IBBoard <dev@ibboard.co.uk>
parents: 11
diff changeset
105 {
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
106 Stat[][] stats = unit.UnitStatsArraysWithName;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
107 string[] statsIDs = unit.UnitStatsArrayIDs;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
108 int statsCount = stats.Length;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
109 log.DebugFormat("Unit {0} has {1} stats arrays", unit.UnitType.Name, statsCount);
13
6b2c8e55564a * Fix line terminators
IBBoard <dev@ibboard.co.uk>
parents: 11
diff changeset
110
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
111 for (int i = 0; i < statsCount; i++)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
112 {
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
113 NodeView statsGrid = GetStatsView(statsIDs[i]);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
114 TreeStore model = (TreeStore)statsGrid.Model;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
115 log.DebugFormat("Adding row to data table for {0}", statsIDs[i]);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
116 log.DebugFormat("TreeStore supports {0} columns", model.NColumns);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
117 model.AppendValues((object)stats[i]);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
118 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
119 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
120
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
121 private NodeView GetStatsView(string statsID)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
122 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
123 NodeView statsView;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
124
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
125 if (statsViews.ContainsKey(statsID))
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
126 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
127 statsView = DictionaryUtils.GetValue(statsViews, statsID);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
128 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
129 else
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
130 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
131 statsView = CreateStatsView(statsID);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
132 statsViews[statsID] = statsView;
13
6b2c8e55564a * Fix line terminators
IBBoard <dev@ibboard.co.uk>
parents: 11
diff changeset
133 }
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
134
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
135 return statsView;
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
136 }
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
137
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
138 private NodeView CreateStatsView(string statsID)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
139 {
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
140 log.DebugFormat("Create NodeView for stats ID {0}", statsID);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
141 SystemStats sysStats = unit.Race.GameSystem.GetSystemStatsForID(statsID);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
142 StatSlot[] sysStatSlots = sysStats.StatSlots;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
143 int statsCount = sysStatSlots.Length;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
144 NodeView statsGrid = CreateNodeView();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
145 CellRendererText renderer = new CellRendererText();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
146 statsGrid.AppendColumn(Translation.GetTranslation("UnitNameColumn", "Unit Type", null), renderer, RenderUnitStat);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
147
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
148 for (int i = 0; i < statsCount; i++)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
149 {
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
150 StatSlot stat = sysStatSlots[i];
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
151 string slotName = stat.Name;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
152 statsGrid.AppendColumn(slotName, renderer, RenderUnitStat);
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
153 }
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
154
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
155 statsGrid.Model = new TreeStore(typeof(Stat[]));
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
156 return statsGrid;
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
157 }
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
158
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
159 private NodeView CreateNodeView()
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
160 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
161 NodeView nodeView = new NodeView();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
162 statsRepeatBox.Add(nodeView);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
163 return nodeView;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
164 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
165
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
166 private void RenderUnitStat(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
167 {
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
168 object o = model.GetValue(iter, 0);
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
169
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
170 if (o is Stat[])
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
171 {
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
172 Stat[] stats = (Stat[])o;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
173 (cell as CellRendererText).Text = stats[GetStatColumnIndex(column)].SlotValueString;
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
174 }
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
175 }
15
85db2c9a1546 Fixes #95: Can't re-open GTK# tabs
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
176
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
177 private int GetStatColumnIndex(TreeViewColumn column)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
178 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
179 int idx = -1;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
180 TreeViewColumn[] cols = ((TreeView)column.TreeView).Columns;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
181 int colCount = cols.Length;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
182
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
183 for (int i = 0; i < colCount; i++)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
184 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
185 if (cols[i] == column)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
186 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
187 idx = i;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
188 break;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
189 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
190 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
191
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
192 return idx;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
193 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
194
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
195 private void SetWeapons()
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
196 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
197 CellRendererText renderer = new CellRendererText();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
198 equipmentList.AppendColumn("", renderer, new TreeCellDataFunc(RenderEquipmentLine));
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
199
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
200 ListStore model = new ListStore(typeof(UnitEquipmentItem));
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
201
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
202 foreach (UnitEquipmentItem item in unit.GetEquipment())
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
203 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
204 model.AppendValues(item);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
205 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
206
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
207 equipmentList.Model = model;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
208 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
209
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
210 public void RenderEquipmentLine(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
211 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
212 object o = model.GetValue(iter, 0);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
213
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
214 if (o is UnitEquipmentItem)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
215 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
216 UnitEquipmentItem item = (UnitEquipmentItem)o;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
217 (cell as CellRendererText).Text = GetUnitEquipmentText(item);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
218 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
219
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
220 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
221
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
222 private string GetUnitEquipmentText(UnitEquipmentItem item)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
223 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
224 string translation = "";
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
225
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
226 if (item.Cost == 0)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
227 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
228 translation = Translation.GetTranslation("equipmentAmountWithZeroCost", "{0} ({1} - free)", item.Name, GetAmountString(item));
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
229 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
230 else
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
231 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
232 translation = Translation.GetTranslation("equipmentAmountWithCost", "{0} ({1} at {2}pts each)", item.Name, GetAmountString(item), item.Cost);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
233 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
234
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
235 return translation;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
236 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
237
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
238 private string GetAmountString(UnitEquipmentItem item)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
239 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
240 double amount = UnitEquipmentUtil.GetEquipmentAmount(unit, item);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
241 string amountString = "";
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
242
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
243 if (UnitEquipmentUtil.GetEquipmentAmountIsRatio(unit, item))
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
244 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
245 int number = UnitEquipmentUtil.GetEquipmentAmountTaken(unit, item);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
246
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
247 if (amount == 100)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
248 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
249 amountString = Translation.GetTranslation("equipmentChoiceAmountAll", "all ({1})", amount, number);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
250 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
251 else
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
252 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
253 amountString = Translation.GetTranslation("equipmentChoiceAmountPercentage", "{0}% ({1})", amount, number);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
254 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
255 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
256 else
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
257 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
258 amountString = Translation.GetTranslation("equipmentChoiceAmountNumber", "{0}", amount);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
259 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
260
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
261 return amountString;
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
262 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
263
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
264 public WFObjects.Unit Unit
15
85db2c9a1546 Fixes #95: Can't re-open GTK# tabs
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
265 {
85db2c9a1546 Fixes #95: Can't re-open GTK# tabs
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
266 get { return unit; }
85db2c9a1546 Fixes #95: Can't re-open GTK# tabs
IBBoard <dev@ibboard.co.uk>
parents: 13
diff changeset
267 }
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
268
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
269 private void UnitNameChanged(WarFoundryObject obj, string oldValue, string newValue)
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
270 {
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
271 unitName.Text = newValue;
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
272 }
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
273
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
274 private void UnitSizeChanged(WarFoundryObject obj, int oldValue, int newValue)
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
275 {
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
276 unitSize.Value = newValue;
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
277 }
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
278
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
279 private void HandleUnitUnitEquipmentAmountChanged(WarFoundryObject obj, double oldValue, double newValue)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
280 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
281 if (oldValue == 0)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
282 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
283 ((ListStore)equipmentList.Model).AppendValues(obj);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
284 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
285 else
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
286 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
287 if (newValue == 0)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
288 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
289 TreeIter treeIter = TreeUtils.GetItemIter(equipmentList, obj);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
290 ((ListStore)equipmentList.Model).Remove(ref treeIter);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
291 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
292 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
293
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
294 SetAddButtonEnabledState();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
295 equipmentList.QueueDraw();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
296 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
297
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
298 protected virtual void OnUnitSizeFocusOut(object o, Gtk.FocusOutEventArgs args)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
299 {
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
300 SetNewUnitSize();
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
301 }
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
302
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
303 [GLib.ConnectBefore ()]
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
304
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
305 protected virtual void OnUnitSizeKeyPress(object o, Gtk.KeyPressEventArgs args)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
306 {
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
307 if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
308 {
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
309 SetNewUnitSize();
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
310 }
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
311 }
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
312
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
313 private void SetNewUnitSize()
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
314 {
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
315 if (unitSize.Value != unit.Size)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
316 {
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
317 SetUnitSizeCommand cmd = new SetUnitSizeCommand(unit, (int)Math.Round(unitSize.Value));
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
318 stack.Execute(cmd);
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
319 }
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
320 }
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
321
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
322 protected virtual void OnUnitNameFocusOut(object o, Gtk.FocusOutEventArgs args)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
323 {
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
324 SetNewUnitName();
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
325 }
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
326
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
327 [GLib.ConnectBefore ()]
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
328
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
329 protected virtual void OnUnitNameKeyPress(object o, Gtk.KeyPressEventArgs args)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
330 {
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
331 if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
332 {
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
333 SetNewUnitName();
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
334 }
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
335 }
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
336
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
337 private void SetNewUnitName()
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
338 {
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
339 if (unitName.Text != unit.Name)
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
340 {
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
341 SetNameCommand cmd = new SetNameCommand(unit, unitName.Text);
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
342 stack.Execute(cmd);
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
343 }
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
344 }
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
345
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
346 private void OnBttnAddEquipmentClicked(object sender, System.EventArgs e)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
347 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
348 AddEquipment();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
349 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
350
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
351 private void AddEquipment()
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
352 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
353 AddEquipmentUIControl addEquipment = new AddEquipmentUIControl(unit, stack);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
354 addEquipment.Show();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
355 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
356
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
357 protected virtual void HandleRemoveButtonActivated(object sender, System.EventArgs e)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
358 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
359 UnitEquipmentItem item = GetSelectedEquipmentItem();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
360 log.Debug("Remove " + item);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
361
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
362 if (item != null)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
363 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
364 SetUnitEquipmentNumericAmountCommand cmd = new SetUnitEquipmentNumericAmountCommand(unit, item, 0);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
365 stack.Execute(cmd);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
366 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
367 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
368
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
369 protected virtual void HandleEditButtonClicked(object sender, System.EventArgs e)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
370 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
371 UnitEquipmentItem item = GetSelectedEquipmentItem();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
372 log.Debug("Edit " + item);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
373
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
374 if (item != null)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
375 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
376 EditEquipmentUIControl editEquipment = new EditEquipmentUIControl(unit, item, stack);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
377 editEquipment.Show();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
378 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
379 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
380
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
381 protected virtual void HandleReplaceButtonClicked(object sender, System.EventArgs e)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
382 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
383 UnitEquipmentItem item = GetSelectedEquipmentItem();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
384 log.Debug("Replace " + item);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
385
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
386 if (item != null)
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
387 {
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
388 ReplaceEquipmentUIControl addEquipment = new ReplaceEquipmentUIControl(unit, item, stack);
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
389 addEquipment.Show();
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
390 }
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
391 }
0
1bb28f84d567 Initial commit of WarFoundry code
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
392 }
113
4a33b3012100 * Tag v0.1RC1 release
IBBoard <dev@ibboard.co.uk>
parents: 34
diff changeset
393 }