diff Widgets/UnitDisplayWidget.cs @ 71:91354245218a

Fixes #305: Add abilities to GTK# UI * Add Abilities section to UnitDisplayWidget that shows list of required abilities
author IBBoard <dev@ibboard.co.uk>
date Sat, 06 Nov 2010 20:22:19 +0000
parents 7028e24b67ec
children f0cc295e883c
line wrap: on
line diff
--- a/Widgets/UnitDisplayWidget.cs	Sat Nov 06 17:03:13 2010 +0000
+++ b/Widgets/UnitDisplayWidget.cs	Sat Nov 06 20:22:19 2010 +0000
@@ -5,15 +5,15 @@
 using System;
 using Gtk;
 using IBBoard.Commands;
+using IBBoard.GtkSharp;
 using IBBoard.Lang;
 using IBBoard.WarFoundry.API;
-using WFObjects = IBBoard.WarFoundry.API.Objects;
 using IBBoard.WarFoundry.API.Commands;
-using IBBoard.WarFoundry.GUI.GTK.UIControl;
 using IBBoard.WarFoundry.API.Objects;
 using IBBoard.WarFoundry.API.Util;
-using IBBoard.GtkSharp;
+using IBBoard.WarFoundry.GUI.GTK.UIControl;
 using log4net;
+using WFObjects = IBBoard.WarFoundry.API.Objects;
 
 namespace IBBoard.WarFoundry.GTK.Widgets
 {
@@ -41,6 +41,7 @@
 			unit.UnitSizeChanged += UnitSizeChanged;
 			unit.UnitEquipmentAmountChanged += HandleUnitUnitEquipmentAmountChanged;
 			equipmentList.Selection.Changed += HandleEquipmentListSelectionChanged;
+			SetAbilities();
 			SetStats();
 			SetWeapons();
 		}
@@ -62,6 +63,33 @@
 		{
 			return (UnitEquipmentItem)TreeUtils.GetSelectedItem(equipmentList);
 		}
+		
+		private void SetAbilities()
+		{
+			CellRendererText renderer = new CellRendererText();
+			abilitiesList.AppendColumn("", renderer, new TreeCellDataFunc(RenderAbility));
+			
+			ListStore model = new ListStore(typeof(Ability));
+			
+			foreach (Ability ability in unit.UnitType.GetRequiredAbilities())
+			{
+				model.AppendValues(ability);
+			}
+			
+			abilitiesList.Model = model;
+		}
+		
+		public void RenderAbility(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
+		{
+			object o = model.GetValue(iter, 0);
+			
+			if (o is Ability)
+			{
+				Ability ability = (Ability)o;
+				(cell as CellRendererText).Text = ability.Name;
+			}			
+						
+		}
 
 		private void SetStats()
 		{