# HG changeset patch
# User snowblizz
# Date 1295887831 0
# Node ID 1ca23c47345a33d1afec28717ee02037cbdc2e59
# Parent cb86380cbf610758d214ed1263e2c0e1df03736b
Re #327: Point names used in the GUI
diff -r cb86380cbf61 -r 1ca23c47345a FrmArmyTree.cs
--- a/FrmArmyTree.cs Sun Dec 12 17:30:53 2010 +0000
+++ b/FrmArmyTree.cs Mon Jan 24 16:50:31 2011 +0000
@@ -1,462 +1,472 @@
-// This file (FrmArmyTree.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2009 IBBoard.
-//
-// 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.
-
-using System;
-using System.Drawing;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Windows.Forms;
-using IBBoard.Commands;
-using IBBoard.Lang;
-using IBBoard.Windows.Forms.I18N;
-using IBBoard.Windows.Forms;
-using IBBoard.WarFoundry.API;
-using IBBoard.WarFoundry.API.Commands;
-using IBBoard.WarFoundry.API.Objects;
-
-namespace IBBoard.WarFoundry.GUI.WinForms
-{
- ///
- /// Summary description for FrmArmyTree.
- ///
- public class FrmArmyTree : IBBoard.Windows.Forms.IBBForm
- {
- private System.Windows.Forms.TreeView treeView;
- private IContainer components;
- private Dictionary nodes;
- private System.Windows.Forms.ContextMenu contextMenu;
- private IBBMenuItem miDeleteUnit;
- private IBBMenuItem miEditUnit;
-
- private ObjectAddDelegate UnitAddedMethod;
- private ObjectRemoveDelegate UnitRemovedMethod;
- private StringValChangedDelegate UnitNameChangedMethod, ArmyNameChangedMethod, TreeNameChangedMethod;
- private ToolBar toolBar;
- private IBBToolBarButton bttnEdit;
- private IBBToolBarButton bttnDelete;
- private ImageList imageList;
- private CommandStack commandStack;
-
- public FrmArmyTree(CommandStack cmdStack)
- {
- commandStack = cmdStack;
- InitializeComponent();
- UnitAddedMethod = new ObjectAddDelegate(UnitAdded);
- UnitRemovedMethod = new ObjectRemoveDelegate(UnitRemoved);
- UnitNameChangedMethod = new StringValChangedDelegate(UpdateUnitName);
- ArmyNameChangedMethod = new StringValChangedDelegate(UpdateArmyName);
- TreeNameChangedMethod = new StringValChangedDelegate(FrmArmyTree_TreeNameChanged);
- nodes = new Dictionary();
- this.Name = "ArmyTree";
- WarFoundryCore.ArmyChanged+= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged);
- TranslateForm();
- Translation.TranslationChanged += new MethodInvoker(TranslateForm);
- }
-
- private void TranslateForm()
- {
- ControlTranslator.TranslateControl(this);
-
- foreach (Component comp in components.Components)
- {
- ControlTranslator.TranslateComponent(comp);
- }
-
- foreach (IBBMenuItem mi in contextMenu.MenuItems)
- {
- ControlTranslator.TranslateComponent(mi);
- }
- }
-
- ///
- /// Clean up any resources being used.
- ///
- protected override void Dispose( bool disposing )
- {
- if( disposing )
- {
- if(components != null)
- {
- components.Dispose();
- }
- }
- base.Dispose( disposing );
- Translation.TranslationChanged -= new MethodInvoker(TranslateForm);
- WarFoundryCore.ArmyChanged -= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged);
- }
-
- #region Windows Form Designer generated code
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmArmyTree));
- this.contextMenu = new System.Windows.Forms.ContextMenu();
- this.miEditUnit = new IBBoard.Windows.Forms.IBBMenuItem();
- this.miDeleteUnit = new IBBoard.Windows.Forms.IBBMenuItem();
- this.imageList = new System.Windows.Forms.ImageList(this.components);
- this.toolBar = new System.Windows.Forms.ToolBar();
- this.bttnEdit = new IBBoard.Windows.Forms.IBBToolBarButton();
- this.bttnDelete = new IBBoard.Windows.Forms.IBBToolBarButton();
- this.treeView = new System.Windows.Forms.TreeView();
- this.SuspendLayout();
- //
- // contextMenu
- //
- this.contextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
- this.miEditUnit,
- this.miDeleteUnit});
- this.contextMenu.Popup += new System.EventHandler(this.contextMenu_Popup);
- //
- // miEditUnit
- //
- this.miEditUnit.Index = 0;
- this.miEditUnit.Text = "&edit unit";
- this.miEditUnit.Click += new System.EventHandler(this.miEdit_Click);
- this.miEditUnit.Name = "miEditUnit";
- //
- // miDeleteUnit
- //
- this.miDeleteUnit.Index = 1;
- this.miDeleteUnit.Text = "&delete unit";
- this.miDeleteUnit.Click += new System.EventHandler(this.miDelete_Click);
- this.miDeleteUnit.Name = "miDeleteUnit";
- //
- // imageList
- //
- this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer) (resources.GetObject("imageList.ImageStream")));
- this.imageList.TransparentColor = System.Drawing.Color.Transparent;
- this.imageList.Images.SetKeyName(0, "gtk-edit.png");
- this.imageList.Images.SetKeyName(1, "edit-delete.png");
- //
- // toolBar
- //
- this.toolBar.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] {
- this.bttnEdit,
- this.bttnDelete});
- this.toolBar.ButtonSize = new System.Drawing.Size(16, 16);
- this.toolBar.DropDownArrows = true;
- this.toolBar.ImageList = this.imageList;
- this.toolBar.Location = new System.Drawing.Point(0, 0);
- this.toolBar.Name = "toolBar";
- this.toolBar.ShowToolTips = true;
- this.toolBar.Size = new System.Drawing.Size(240, 28);
- this.toolBar.TabIndex = 3;
- this.toolBar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.toolBar_ButtonClick);
- //
- // bttnEdit
- //
- this.bttnEdit.Enabled = false;
- this.bttnEdit.ImageIndex = 0;
- this.bttnEdit.Name = "bttnEdit";
- //
- // bttnDelete
- //
- this.bttnDelete.Enabled = false;
- this.bttnDelete.ImageIndex = 1;
- this.bttnDelete.Name = "bttnDelete";
- //
- // treeView
- //
- this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles) ((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.treeView.ContextMenu = this.contextMenu;
- this.treeView.FullRowSelect = true;
- this.treeView.Location = new System.Drawing.Point(0, 28);
- this.treeView.Name = "treeView";
- this.treeView.Size = new System.Drawing.Size(240, 250);
- this.treeView.TabIndex = 0;
- this.treeView.DoubleClick += new System.EventHandler(this.treeView_DoubleClick);
- this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect);
- this.treeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView_MouseDown);
- //
- // FrmArmyTree
- //
- this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
- this.ClientSize = new System.Drawing.Size(240, 277);
- this.ControlBox = false;
- this.Controls.Add(this.toolBar);
- this.Controls.Add(this.treeView);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "FrmArmyTree";
- this.Text = "FrmArmyTree";
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
- #endregion
-
- private void ClearArmy()
- {
- nodes.Clear();
- treeView.Nodes.Clear();
- }
-
- private void SetArmy(Army army)
- {
- ClearArmy();
-
- if (army != null)
- {
- ArmyCategory[] cats = army.Categories;
- TreeNode[] catNodes = new TreeNode[cats.Length];
- Unit[] units;
-
- for (int i = 0; i < cats.Length; i++)
- {
- ArmyCategory cat = cats[i];
- units = army.GetUnits(cat);
- cat.NameChanged += TreeNameChangedMethod;
- cat.PointsValueChanged += NodePointsValueChanged;
- TreeNode[] unitNodes = new TreeNode[units.Length];
- TreeNode temp;
-
- for (int j = 0; j < units.Length; j++)
- {
- unitNodes[j] = CreateTreeNode(units[j]);
- }
-
- temp = new TreeNode(CreateNodeName(cat), unitNodes);
- temp.Tag = cat;
- catNodes[i] = temp;
- nodes[cat.ID] = temp;
- }
-
- TreeNode root = new TreeNode(CreateNodeName(army), catNodes);
- root.Tag = army;
- army.PointsValueChanged += NodePointsValueChanged;
- nodes[army.ID] = root;
- treeView.Nodes.Add(root);
- root.ExpandAll();
- }
- }
-
- private string CreateNodeName(ICostedWarFoundryObject obj)
- {
- return Translation.GetTranslation("treeNodeText", "{0} ({1}pts)", obj.Name, obj.Points);
- }
-
- private void NodePointsValueChanged(WarFoundryObject obj, double oldValue, double newValue)
- {
- if (obj is ICostedWarFoundryObject)
- {
- SetNodeName(obj);
- }
- }
-
- private void SetNodeName(WarFoundryObject obj)
- {
- TreeNode node = nodes[obj.ID];
-
- if (node != null)
- {
- node.Text = CreateNodeName((ICostedWarFoundryObject)obj);
- }
- }
-
- private TreeNode CreateTreeNode(Unit unit)
- {
- TreeNode temp = new TreeNode(CreateNodeName(unit));
- temp.Tag = unit;
- unit.NameChanged+= UnitNameChangedMethod;
- unit.PointsValueChanged += NodePointsValueChanged;
- nodes[unit.ID] = temp;
- return temp;
- }
-
- public void FrmArmyTree_ArmyChanged(Army oldArmy, Army newArmy)
- {
- if (oldArmy != null)
- {
- oldArmy.UnitAdded -= UnitAddedMethod;
- oldArmy.UnitRemoved -= UnitRemovedMethod;
- oldArmy.PointsValueChanged -= NodePointsValueChanged;
- }
-
- if (newArmy != null)
- {
- newArmy.UnitAdded += UnitAddedMethod;
- newArmy.UnitRemoved += UnitRemovedMethod;
- newArmy.PointsValueChanged += NodePointsValueChanged;
- }
-
- SetArmy(newArmy);
- }
-
- private void UnitAdded(WarFoundryObject obj)
- {
- if (obj is Unit)
- {
- Unit unit = (Unit)obj;
- ArmyCategory cat = unit.Category;
- TreeNode parent = nodes[cat.ID];
- TreeNode unitNode = CreateTreeNode(unit);
- parent.Nodes.Add(unitNode);
- parent.Expand(); //make sure it's expanded
- }
- }
-
- public new FrmMain MdiParent
- {
- get { return (FrmMain) base.MdiParent; }
- set { base.MdiParent = value; }
- }
-
- private void UnitRemoved(WarFoundryObject obj)
- {
- if (obj is Unit)
- {
- Unit unit = (Unit)obj;
- RemoveUnitFromTree(unit);
- }
- }
-
- private void RemoveUnitFromTree(Unit unit)
- {
- TreeNode unitNode = nodes[unit.ID];
- unit.NameChanged-= UnitNameChangedMethod;
-
- if (unitNode!=null)
- {
- unitNode.Remove();
- nodes.Remove(unit.ID);
- }
- }
-
-
- private void contextMenu_Popup(object sender, System.EventArgs e)
- {
- TreeNode node = treeView.SelectedNode;
-
- if (node!=null && node.Tag is Unit)
- {
- foreach(MenuItem item in contextMenu.MenuItems)
- {
- item.Visible = true;
- }
- }
- else
- {
- foreach(MenuItem item in contextMenu.MenuItems)
- {
- item.Visible = false;
- }
- }
- }
-
- private void treeView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
- {
- if (e.Button == MouseButtons.Right)
- {
- TreeNode tn = treeView.GetNodeAt(e.X, e.Y);
-
- if (tn!=null)
- {
- treeView.SelectedNode = tn;
- }
- else
- {
- treeView.SelectedNode = null;
- }
- }
- }
-
- private void miDelete_Click(object sender, System.EventArgs e)
- {
- DeleteUnit();
- }
-
- private void DeleteUnit()
- {
-
- TreeNode selected = treeView.SelectedNode;
-
- if (selected.Tag != null && selected.Tag is Unit)
- {
- Unit unit = (Unit) selected.Tag;
- commandStack.Execute(new RemoveUnitCommand(unit));
- }
- }
-
- private void miEdit_Click(object sender, System.EventArgs e)
- {
- EditUnit();
- }
-
- private void treeView_DoubleClick(object sender, System.EventArgs e)
- {
- EditUnit();
- }
-
- private void EditUnit()
- {
- TreeNode selected = treeView.SelectedNode;
- object tagData = selected.Tag;
-
- if (tagData is Unit)
- {
- Unit unit = (Unit) tagData;
- MdiParent.OpenUnitDialog(unit);
- }
- }
-
- private void UpdateUnitName(WarFoundryObject obj, string oldValue, string newValue)
- {
- if (obj is ICostedWarFoundryObject)
- {
- SetNodeName(obj);
- }
- }
-
- private void UpdateArmyName(WarFoundryObject obj, string oldValue, string newValue)
- {
- if (obj is Army)
- {
- Army army = (Army)obj;
- TreeNode node = treeView.Nodes[0];
-
- if (node!=null)
- {
- node.Text = army.Name;
- }
- }
- }
-
- private void FrmArmyTree_TreeNameChanged(WarFoundryObject obj, string oldValue, string newValue)
- {
- TreeNode node = nodes[obj.ID];
-
- if (node!=null)
- {
- node.Text = obj.Name;
- }
- }
-
- private void toolBar_ButtonClick(object sender, ToolBarButtonClickEventArgs e)
- {
- if (e.Button == bttnDelete)
- {
- DeleteUnit();
- }
- else if (e.Button == bttnEdit)
- {
- EditUnit();
- }
- }
-
- private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
- {
- TreeNode node = treeView.SelectedNode;
-
- bttnDelete.Enabled = (node != null && node.Tag is Unit);
- bttnEdit.Enabled = bttnDelete.Enabled;
- }
- }
-}
+// This file (FrmArmyTree.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2009 IBBoard.
+//
+// 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.
+
+using System;
+using System.Drawing;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Windows.Forms;
+using IBBoard.Commands;
+using IBBoard.Lang;
+using IBBoard.Windows.Forms.I18N;
+using IBBoard.Windows.Forms;
+using IBBoard.WarFoundry.API;
+using IBBoard.WarFoundry.API.Commands;
+using IBBoard.WarFoundry.API.Objects;
+
+namespace IBBoard.WarFoundry.GUI.WinForms
+{
+ ///
+ /// Summary description for FrmArmyTree.
+ ///
+ public class FrmArmyTree : IBBoard.Windows.Forms.IBBForm
+ {
+ private System.Windows.Forms.TreeView treeView;
+ private IContainer components;
+ private Dictionary nodes;
+ private System.Windows.Forms.ContextMenu contextMenu;
+ private IBBMenuItem miDeleteUnit;
+ private IBBMenuItem miEditUnit;
+
+ private ObjectAddDelegate UnitAddedMethod;
+ private ObjectRemoveDelegate UnitRemovedMethod;
+ private StringValChangedDelegate UnitNameChangedMethod, ArmyNameChangedMethod, TreeNameChangedMethod;
+ private ToolBar toolBar;
+ private IBBToolBarButton bttnEdit;
+ private IBBToolBarButton bttnDelete;
+ private ImageList imageList;
+ private CommandStack commandStack;
+ public GameSystem CurrentGameSystem
+ {
+ get { return WarFoundryCore.CurrentGameSystem; }
+ set { WarFoundryCore.CurrentGameSystem = value; }
+ }
+
+ public FrmArmyTree(CommandStack cmdStack)
+ {
+ commandStack = cmdStack;
+ InitializeComponent();
+ UnitAddedMethod = new ObjectAddDelegate(UnitAdded);
+ UnitRemovedMethod = new ObjectRemoveDelegate(UnitRemoved);
+ UnitNameChangedMethod = new StringValChangedDelegate(UpdateUnitName);
+ ArmyNameChangedMethod = new StringValChangedDelegate(UpdateArmyName);
+ TreeNameChangedMethod = new StringValChangedDelegate(FrmArmyTree_TreeNameChanged);
+ nodes = new Dictionary();
+ this.Name = "ArmyTree";
+ WarFoundryCore.ArmyChanged+= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged);
+ TranslateForm();
+ Translation.TranslationChanged += new MethodInvoker(TranslateForm);
+ }
+
+ private void TranslateForm()
+ {
+ ControlTranslator.TranslateControl(this);
+
+ foreach (Component comp in components.Components)
+ {
+ ControlTranslator.TranslateComponent(comp);
+ }
+
+ foreach (IBBMenuItem mi in contextMenu.MenuItems)
+ {
+ ControlTranslator.TranslateComponent(mi);
+ }
+ foreach (TreeNode node in nodes.Values)
+ {
+ node.Text = CreateNodeName((ICostedWarFoundryObject)node.Tag);
+ }
+ }
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ protected override void Dispose( bool disposing )
+ {
+ if( disposing )
+ {
+ if(components != null)
+ {
+ components.Dispose();
+ }
+ }
+ base.Dispose( disposing );
+ Translation.TranslationChanged -= new MethodInvoker(TranslateForm);
+ WarFoundryCore.ArmyChanged -= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged);
+ }
+
+ #region Windows Form Designer generated code
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmArmyTree));
+ this.contextMenu = new System.Windows.Forms.ContextMenu();
+ this.miEditUnit = new IBBoard.Windows.Forms.IBBMenuItem();
+ this.miDeleteUnit = new IBBoard.Windows.Forms.IBBMenuItem();
+ this.imageList = new System.Windows.Forms.ImageList(this.components);
+ this.toolBar = new System.Windows.Forms.ToolBar();
+ this.bttnEdit = new IBBoard.Windows.Forms.IBBToolBarButton();
+ this.bttnDelete = new IBBoard.Windows.Forms.IBBToolBarButton();
+ this.treeView = new System.Windows.Forms.TreeView();
+ this.SuspendLayout();
+ //
+ // contextMenu
+ //
+ this.contextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
+ this.miEditUnit,
+ this.miDeleteUnit});
+ this.contextMenu.Popup += new System.EventHandler(this.contextMenu_Popup);
+ //
+ // miEditUnit
+ //
+ this.miEditUnit.Index = 0;
+ this.miEditUnit.Text = "&edit unit";
+ this.miEditUnit.Click += new System.EventHandler(this.miEdit_Click);
+ //
+ // miDeleteUnit
+ //
+ this.miDeleteUnit.Index = 1;
+ this.miDeleteUnit.Text = "&delete unit";
+ this.miDeleteUnit.Click += new System.EventHandler(this.miDelete_Click);
+ //
+ // imageList
+ //
+ this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
+ this.imageList.TransparentColor = System.Drawing.Color.Transparent;
+ this.imageList.Images.SetKeyName(0, "gtk-edit.png");
+ this.imageList.Images.SetKeyName(1, "edit-delete.png");
+ //
+ // toolBar
+ //
+ this.toolBar.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] {
+ this.bttnEdit,
+ this.bttnDelete});
+ this.toolBar.ButtonSize = new System.Drawing.Size(16, 16);
+ this.toolBar.DropDownArrows = true;
+ this.toolBar.ImageList = this.imageList;
+ this.toolBar.Location = new System.Drawing.Point(0, 0);
+ this.toolBar.Name = "toolBar";
+ this.toolBar.ShowToolTips = true;
+ this.toolBar.Size = new System.Drawing.Size(240, 28);
+ this.toolBar.TabIndex = 3;
+ this.toolBar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.toolBar_ButtonClick);
+ //
+ // bttnEdit
+ //
+ this.bttnEdit.Enabled = false;
+ this.bttnEdit.ImageIndex = 0;
+ this.bttnEdit.Name = "bttnEdit";
+ //
+ // bttnDelete
+ //
+ this.bttnDelete.Enabled = false;
+ this.bttnDelete.ImageIndex = 1;
+ this.bttnDelete.Name = "bttnDelete";
+ //
+ // treeView
+ //
+ this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.treeView.ContextMenu = this.contextMenu;
+ this.treeView.FullRowSelect = true;
+ this.treeView.ImageIndex = 0;
+ this.treeView.ImageList = this.imageList;
+ this.treeView.Location = new System.Drawing.Point(0, 28);
+ this.treeView.Name = "treeView";
+ this.treeView.SelectedImageIndex = 0;
+ this.treeView.Size = new System.Drawing.Size(240, 250);
+ this.treeView.TabIndex = 0;
+ this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect);
+ this.treeView.DoubleClick += new System.EventHandler(this.treeView_DoubleClick);
+ this.treeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView_MouseDown);
+ //
+ // FrmArmyTree
+ //
+ this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
+ this.ClientSize = new System.Drawing.Size(240, 277);
+ this.ControlBox = false;
+ this.Controls.Add(this.toolBar);
+ this.Controls.Add(this.treeView);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "FrmArmyTree";
+ this.Text = "FrmArmyTree";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ #endregion
+
+ private void ClearArmy()
+ {
+ nodes.Clear();
+ treeView.Nodes.Clear();
+ }
+
+ private void SetArmy(Army army)
+ {
+ ClearArmy();
+
+ if (army != null)
+ {
+ ArmyCategory[] cats = army.Categories;
+ TreeNode[] catNodes = new TreeNode[cats.Length];
+ Unit[] units;
+
+ for (int i = 0; i < cats.Length; i++)
+ {
+ ArmyCategory cat = cats[i];
+ units = army.GetUnits(cat);
+ cat.NameChanged += TreeNameChangedMethod;
+ cat.PointsValueChanged += NodePointsValueChanged;
+ TreeNode[] unitNodes = new TreeNode[units.Length];
+ TreeNode temp;
+
+ for (int j = 0; j < units.Length; j++)
+ {
+ unitNodes[j] = CreateTreeNode(units[j]);
+ }
+
+ temp = new TreeNode(CreateNodeName(cat), unitNodes);
+ temp.Tag = cat;
+ catNodes[i] = temp;
+ nodes[cat.ID] = temp;
+ }
+
+ TreeNode root = new TreeNode(CreateNodeName(army), catNodes);
+ root.Tag = army;
+ army.PointsValueChanged += NodePointsValueChanged;
+ nodes[army.ID] = root;
+ treeView.Nodes.Add(root);
+ root.ExpandAll();
+ }
+ }
+
+ private string CreateNodeName(ICostedWarFoundryObject obj)
+ {
+ return Translation.GetTranslation("treeNodeText", "{0} ({1} pts)", obj.Name, obj.Points, CurrentGameSystem.UsePointsAbbrev(obj.Points));
+ }
+
+ private void NodePointsValueChanged(WarFoundryObject obj, double oldValue, double newValue)
+ {
+ if (obj is ICostedWarFoundryObject)
+ {
+ SetNodeName(obj);
+ }
+ }
+
+ private void SetNodeName(WarFoundryObject obj)
+ {
+ TreeNode node = nodes[obj.ID];
+
+ if (node != null)
+ {
+ node.Text = CreateNodeName((ICostedWarFoundryObject)obj);
+ }
+ }
+
+ private TreeNode CreateTreeNode(Unit unit)
+ {
+ TreeNode temp = new TreeNode(CreateNodeName(unit));
+ temp.Tag = unit;
+ unit.NameChanged+= UnitNameChangedMethod;
+ unit.PointsValueChanged += NodePointsValueChanged;
+ nodes[unit.ID] = temp;
+ return temp;
+ }
+
+ public void FrmArmyTree_ArmyChanged(Army oldArmy, Army newArmy)
+ {
+ if (oldArmy != null)
+ {
+ oldArmy.UnitAdded -= UnitAddedMethod;
+ oldArmy.UnitRemoved -= UnitRemovedMethod;
+ oldArmy.PointsValueChanged -= NodePointsValueChanged;
+ }
+
+ if (newArmy != null)
+ {
+ newArmy.UnitAdded += UnitAddedMethod;
+ newArmy.UnitRemoved += UnitRemovedMethod;
+ newArmy.PointsValueChanged += NodePointsValueChanged;
+ }
+
+ SetArmy(newArmy);
+ }
+
+ private void UnitAdded(WarFoundryObject obj)
+ {
+ if (obj is Unit)
+ {
+ Unit unit = (Unit)obj;
+ ArmyCategory cat = unit.Category;
+ TreeNode parent = nodes[cat.ID];
+ TreeNode unitNode = CreateTreeNode(unit);
+ parent.Nodes.Add(unitNode);
+ parent.Expand(); //make sure it's expanded
+ }
+ }
+
+ public new FrmMain MdiParent
+ {
+ get { return (FrmMain) base.MdiParent; }
+ set { base.MdiParent = value; }
+ }
+
+ private void UnitRemoved(WarFoundryObject obj)
+ {
+ if (obj is Unit)
+ {
+ Unit unit = (Unit)obj;
+ RemoveUnitFromTree(unit);
+ }
+ }
+
+ private void RemoveUnitFromTree(Unit unit)
+ {
+ TreeNode unitNode = nodes[unit.ID];
+ unit.NameChanged-= UnitNameChangedMethod;
+
+ if (unitNode!=null)
+ {
+ unitNode.Remove();
+ nodes.Remove(unit.ID);
+ }
+ }
+
+
+ private void contextMenu_Popup(object sender, System.EventArgs e)
+ {
+ TreeNode node = treeView.SelectedNode;
+
+ if (node!=null && node.Tag is Unit)
+ {
+ foreach(MenuItem item in contextMenu.MenuItems)
+ {
+ item.Visible = true;
+ }
+ }
+ else
+ {
+ foreach(MenuItem item in contextMenu.MenuItems)
+ {
+ item.Visible = false;
+ }
+ }
+ }
+
+ private void treeView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Right)
+ {
+ TreeNode tn = treeView.GetNodeAt(e.X, e.Y);
+
+ if (tn!=null)
+ {
+ treeView.SelectedNode = tn;
+ }
+ else
+ {
+ treeView.SelectedNode = null;
+ }
+ }
+ }
+
+ private void miDelete_Click(object sender, System.EventArgs e)
+ {
+ DeleteUnit();
+ }
+
+ private void DeleteUnit()
+ {
+
+ TreeNode selected = treeView.SelectedNode;
+
+ if (selected.Tag != null && selected.Tag is Unit)
+ {
+ Unit unit = (Unit) selected.Tag;
+ commandStack.Execute(new RemoveUnitCommand(unit));
+ }
+ }
+
+ private void miEdit_Click(object sender, System.EventArgs e)
+ {
+ EditUnit();
+ }
+
+ private void treeView_DoubleClick(object sender, System.EventArgs e)
+ {
+ EditUnit();
+ }
+
+ private void EditUnit()
+ {
+ TreeNode selected = treeView.SelectedNode;
+ object tagData = selected.Tag;
+
+ if (tagData is Unit)
+ {
+ Unit unit = (Unit) tagData;
+ MdiParent.OpenUnitDialog(unit);
+ }
+ }
+
+ private void UpdateUnitName(WarFoundryObject obj, string oldValue, string newValue)
+ {
+ if (obj is ICostedWarFoundryObject)
+ {
+ SetNodeName(obj);
+ }
+ }
+
+ private void UpdateArmyName(WarFoundryObject obj, string oldValue, string newValue)
+ {
+ if (obj is Army)
+ {
+ Army army = (Army)obj;
+ TreeNode node = treeView.Nodes[0];
+
+ if (node!=null)
+ {
+ node.Text = army.Name;
+ }
+ }
+ }
+
+ private void FrmArmyTree_TreeNameChanged(WarFoundryObject obj, string oldValue, string newValue)
+ {
+ TreeNode node = nodes[obj.ID];
+
+ if (node!=null)
+ {
+ node.Text = obj.Name;
+ }
+ }
+
+ private void toolBar_ButtonClick(object sender, ToolBarButtonClickEventArgs e)
+ {
+ if (e.Button == bttnDelete)
+ {
+ DeleteUnit();
+ }
+ else if (e.Button == bttnEdit)
+ {
+ EditUnit();
+ }
+ }
+
+ private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
+ {
+ TreeNode node = treeView.SelectedNode;
+
+ bttnDelete.Enabled = (node != null && node.Tag is Unit);
+ bttnEdit.Enabled = bttnDelete.Enabled;
+ }
+ }
+}
diff -r cb86380cbf61 -r 1ca23c47345a FrmMain.cs
--- a/FrmMain.cs Sun Dec 12 17:30:53 2010 +0000
+++ b/FrmMain.cs Mon Jan 24 16:50:31 2011 +0000
@@ -24,6 +24,7 @@
using IBBoard.WarFoundry.API.Commands;
using IBBoard.WarFoundry.API.Exporters;
using IBBoard.WarFoundry.API.Objects;
+using IBBoard.WarFoundry.API.Util;
using IBBoard.WarFoundry.API.Savers;
using IBBoard.WarFoundry.API.Factories;
using IBBoard.WarFoundry.API.Factories.Xml;
@@ -38,6 +39,12 @@
private static readonly string AppTitle = "WarFoundry";
internal static readonly string VERSION = "0.1";
const string DefaultDataDir = "data";
+ /* public static string pointsAbbrevSingle;
+ public static string pointsAbbrevPlural;
+ public static string pointsAbbreviation;
+ public static string pointsNameSingle;
+ public static string pointsNamePlural;
+ public static string pointsName;*/
private Preferences preferences;
private readonly ILog log = LogManager.GetLogger(typeof(FrmMain));
@@ -94,6 +101,7 @@
private IBBToolStripMenuItem miPreferences;
private IBBToolStripMenuItem miAbout;
+
///
/// The main entry point for the application.
///
@@ -146,8 +154,9 @@
PointsValueChangedMethod = new DoubleValChangedDelegate(FrmMain_PointsValueChangedMethod);
//FailedUnitRequirementMethod = new FailedUnitRequirementDelegate(FrmMain_FailedUnitRequirement);
+
sbErrorPanel.Color = Color.Red;
- sbPointsPanel.ToolTipText = Translation.GetTranslation("statusPanelPointsToolTip", "total points value");
+ SetPointsPanelToolTipText();
// hack to load default files
WarFoundryLoader.GetDefault().AddLoadDirectory(new DirectoryInfo(Constants.ExecutablePath + Constants.DirectoryString + DefaultDataDir));
@@ -180,7 +189,15 @@
ControlTranslator.TranslateComponents(components.Components);
ControlTranslator.TranslateComponent(openArmyDialog);
ControlTranslator.TranslateComponent(saveArmyDialog);
- }
+ //make sure translations exist for gamesystem pointsnames
+ if (CurrentGameSystem != null)
+ {
+ CurrentGameSystem.LoadPointsSystemNames();
+ }
+ //translate pointspanel and tooltip
+ SetPointsPanelToolTipText();
+ SetPointsPanelText();
+ }
void TranslationChanged()
{
@@ -868,6 +885,7 @@
{
SetAppTitle();
RemoveCategoryButtons();
+ newSystem.LoadPointsSystemNames();
}
private void FrmMain_ArmyChanged(Army oldArmy, Army newArmy)
@@ -1274,8 +1292,104 @@
SetPointsPanelText();
}
}
+/*
+ public static string UsePointsAbbrev(double pointTemp)
+ {
+ if (pointTemp == 1)
+ {
+ pointsAbbreviation = pointsAbbrevSingle;
+ }
+ else
+ {
+ pointsAbbreviation = pointsAbbrevPlural;
+ }
+ return pointsAbbreviation;
+ }
- private void SetPointsPanelText()
+ public static string UsePointsName(double pointTemp)
+ {
+
+ if (pointTemp == 1)
+ {
+ pointsName = pointsNameSingle;
+ }
+ else
+ {
+ pointsName = pointsNamePlural;
+ }
+ return pointsName;
+ }
+
+ private void LoadPointsSystemNames()
+ {
+ LoadPointsAbbrevPlural();
+ LoadPointsAbbrevSingle();
+ LoadPointsNamePlural();
+ LoadPointsNameSingle();
+ }
+ private void LoadPointsAbbrevPlural()
+ {
+ // Use this before calling on pointsAbbreviationPlural to "populate" the variable
+ if (CurrentGameSystem != null )
+ {
+ if (CurrentGameSystem.SystemPtsAbbrevPlural == "")
+ {
+ pointsAbbrevPlural = String.Format(Translation.GetTranslation("PointsLocalisationAbbrevPlural"));
+ }
+ else
+ {
+ pointsAbbrevPlural = CurrentGameSystem.SystemPtsAbbrevPlural;
+ }
+ }
+ }
+ private void LoadPointsAbbrevSingle()
+ {
+ // Use this before calling on pointsAbbreviationSingle to "populate" the variable
+ if (CurrentGameSystem != null )
+ {
+ if (CurrentGameSystem.SystemPtsAbbrevSingle == "")
+ {
+ pointsAbbrevSingle = String.Format(Translation.GetTranslation("PointsLocalisationAbbrevSingle"));
+ }
+ else
+ {
+ pointsAbbrevSingle = CurrentGameSystem.SystemPtsAbbrevSingle;
+ }
+ }
+ }
+ private void LoadPointsNamePlural()
+ {
+ if (CurrentGameSystem != null )
+ {
+ // Use this before calling on pointsNamePlural to "populate" the variable
+ if (CurrentGameSystem.SystemPtsNamePlural == "")
+ {
+ pointsNamePlural = String.Format(Translation.GetTranslation("PointsLocalisationNamePlural"));
+ }
+ else
+ {
+ pointsNamePlural = CurrentGameSystem.SystemPtsNamePlural;
+ }
+ }
+ }
+
+ private void LoadPointsNameSingle()
+ {
+ if (CurrentGameSystem != null )
+ {
+ // Use this before calling on pointsNameSingle to "populate" the variable
+ if (CurrentGameSystem.SystemPtsNameSingle == "")
+ {
+ pointsNameSingle = String.Format(Translation.GetTranslation("PointsLocalisationNameSingle"));
+ }
+ else
+ {
+ pointsNameSingle = CurrentGameSystem.SystemPtsNameSingle;
+ }
+ }
+ }
+ */
+ private void SetPointsPanelText()
{
if (CurrentArmy==null)
{
@@ -1284,7 +1398,8 @@
}
else
{
- sbPointsPanel.Text = String.Format(Translation.GetTranslation("statusPanelPoints"), CurrentArmy.Points, CurrentArmy.MaxPoints);
+ string pointsPanelText = String.Format(Translation.GetTranslation("statusPanelPoints"), CurrentArmy.Points, CurrentGameSystem.UsePointsName(CurrentArmy.Points), CurrentArmy.MaxPoints, CurrentGameSystem.UsePointsName(CurrentArmy.MaxPoints));
+ sbPointsPanel.Text = pointsPanelText;
if (CurrentArmy.Points>CurrentArmy.MaxPoints)
{
@@ -1297,6 +1412,11 @@
}
}
+ private void SetPointsPanelToolTipText()
+ {
+ sbPointsPanel.ToolTipText = Translation.GetTranslation("statusPanelPointsToolTip", "total points value");
+ }
+
private void redoMenu_Click(object sender, EventArgs e)
{
if (sender is ToolStripDropDownItem)
diff -r cb86380cbf61 -r 1ca23c47345a FrmNewArmy.cs
--- a/FrmNewArmy.cs Sun Dec 12 17:30:53 2010 +0000
+++ b/FrmNewArmy.cs Mon Jan 24 16:50:31 2011 +0000
@@ -357,7 +357,7 @@
txtArmyName.Text = "";
txtArmyName.Enabled = false;
lstRaces.Items.Clear();
- armySize.Value = (decimal)selected.SystemArmyDefaultSize;
+ armySize.Value = selected.SystemArmyDefaultSize;
if (selected != null)
{
diff -r cb86380cbf61 -r 1ca23c47345a FrmUnit.cs
--- a/FrmUnit.cs Sun Dec 12 17:30:53 2010 +0000
+++ b/FrmUnit.cs Mon Jan 24 16:50:31 2011 +0000
@@ -47,7 +47,13 @@
private TextBox notes;
private ListBox abilitiesList;
private IBBLabel lblAbilities;
- private FlowLayoutPanel statsPanel;
+ private FlowLayoutPanel statsPanel;
+ public GameSystem CurrentGameSystem
+ {
+ get { return WarFoundryCore.CurrentGameSystem; }
+ set { WarFoundryCore.CurrentGameSystem = value; }
+ }
+
///
/// Required designer variable.
///
@@ -101,7 +107,7 @@
private void SetPointsValueText()
{
- lblPoints.Text = "(" + unit.Points + " pts)";
+ lblPoints.Text = Translation.GetTranslation("FrmUnitlblPoints", "(" + unit.Points + " pts)", unit.Points, CurrentGameSystem.UsePointsAbbrev(unit.Points));
}
private void SetStats()
diff -r cb86380cbf61 -r 1ca23c47345a Util/UnitEquipmentChoice.cs
--- a/Util/UnitEquipmentChoice.cs Sun Dec 12 17:30:53 2010 +0000
+++ b/Util/UnitEquipmentChoice.cs Mon Jan 24 16:50:31 2011 +0000
@@ -6,6 +6,7 @@
using IBBoard.Lang;
using IBBoard.WarFoundry.API.Objects;
using IBBoard.WarFoundry.API.Util;
+using IBBoard.WarFoundry.API;
namespace IBBoard.WarFoundry.GUI.WinForms.Util
{
@@ -17,6 +18,11 @@
{
private Unit unit;
private UnitEquipmentItem item;
+ public GameSystem CurrentGameSystem
+ {
+ get { return WarFoundryCore.CurrentGameSystem; }
+ set { WarFoundryCore.CurrentGameSystem = value; }
+ }
public UnitEquipmentChoice(Unit unit, UnitEquipmentItem unitItem)
{
@@ -34,7 +40,7 @@
}
else
{
- translation = Translation.GetTranslation("equipmentAmountWithCost", "{0} ({1} at {2}pts each)", item.Name, GetAmountString(), item.Cost);
+ translation = Translation.GetTranslation("equipmentAmountWithCost", "{0} ({1} at {2}pts each)", item.Name, GetAmountString(), item.Cost, CurrentGameSystem.UsePointsAbbrev(item.Cost));
}
return translation;
diff -r cb86380cbf61 -r 1ca23c47345a translations/en.translation
--- a/translations/en.translation Sun Dec 12 17:30:53 2010 +0000
+++ b/translations/en.translation Mon Jan 24 16:50:31 2011 +0000
@@ -29,7 +29,11 @@
Open Army
Save Army
WarFoundry Army Files (*.army)
- {0} pts / {1} pts
+ pt
+ pts
+ point
+ points
+ {0} {1} / {2} {3}
Current army points value
Unit of {0} {1}
Create new army
@@ -66,6 +70,7 @@
Developers:
Thanks to:
{0} ({1})
+ ({0} {1})
Unit size:
Type Name
Equipment:
@@ -75,7 +80,7 @@
Remove
Replace
Edit
- {0} ({1} at {2}pts each)
+ {0} ({1} at {2}{3} each)
{0} ({1} for free)
For all ({1})
For {0}% ({1})
@@ -123,4 +128,6 @@
Language:
Language
Game system and race files reloaded
+ {0} ({1} {2})
+ ( {0} {1} each)
\ No newline at end of file
diff -r cb86380cbf61 -r 1ca23c47345a translations/sv.translation
--- a/translations/sv.translation Sun Dec 12 17:30:53 2010 +0000
+++ b/translations/sv.translation Mon Jan 24 16:50:31 2011 +0000
@@ -1,127 +1,134 @@
-
+
-
-
-
- &Skapa ny armé
- &Öppna sparad armé
- &Spara armé
- Spara armé &som...
- &Exportera armé
- Normal HTML
- &Stäng armé
- &Läs in filer på nytt
- A&vsluta
- &Återställ
- &Gör om
- &Inställningar
- &Om
+ WarFoundry arméfiler (*.army)
+ alla ({1})
+ {0}
+ {0}% ({1})
+ {0} för {1}
+ {0} - {1}poäng
+
+
+
+ Arméöversikt
+ Lägg till
+ Avbryt
+ Redigera
+ Skapa ny armé
OK
- Avbryt
- Skapa ny armé
Öppna sparad armé
- Spara armé
- Återställ
Gör om
- Arméöversikt
- &Ta bort enhet
- &Redigera enhet
- Öppna armé
- Spara armé
- WarFoundry arméfiler (*.army)
- {0} poäng / {1} poäng
- Aktuellt poängvärde för armé
+ Ta bort
+ Ersätt
+ Spara armé
+ Skapa armé
+ Skapa enhet
+ Återställ
+ Lägg till enhet av {0}
+ Ta bort enhet av {0}
Enhet av {0} {1}
- Skapa ny armé
- Spelsystem:
- Raser:
- Arménamn:
- Arméstorlek:
- Skapa armé
- WarFoundry kunde inte hitta data för spel system.
-Vänligen kontrollera felmeddelanden i loggen och se till att du har datafielr för spelsystme i "data" mappen.
- Lägg till en ny {0}
- Enheter:
- Skapa enhet
- Ny utrustning för {0}
- Ersätt {0} med ny utrustning
- Antal:
- Utrustning:
- Utrusta alla
+ alla ({1})
+ {0}
+ {0}% ({1})
+ {0} ({1} för {2} {3} var)
+ {0} ({1} gratis)
+ För alla ({1})
+ {0}
+ För {0}% ({1})
+ Det nuvarande antalet ({0}) är större än det maximalt tillåtna antalet för utrustningen ({1}). Det maximala antalet kommer att användas istället.
+ Utrustningens antal för stort
+ Det nuvarande antalet ({0}) är mindre än det tillåtna minimiantalet för utrustningen({1}). Minimivärdet kommer att användas istället.
+ Utrustningens antal för litet
Den numvarande procenten ({0}%) är större än det maximala tillåtna värdet för utrustningen ({1}%). Det maximala värdet kommer att användas istället.
Utrustningsprocenten för stor
Den numvarande procenten ({0}%) är mindre än det tillåtna minimivärdet för utrustningen ({1}%). Minimivärdet kommer att användas istället.
Utrustningsprocenten för liten
- Det nuvarande antalet ({0}) är större än det maximalt tillåtna antalet för utrustningen ({1}). Det maximala antalet kommer att användas istället.
- Utrustningens antal för stort
- Det nuvarande antalet ({0}) är mindre än det tillåtna minimiantalet för utrustningen({1}). Minimivärdet kommer att användas istället.
- Utrustningens antal för litet
+ Om WarFoundry
Ändra {0} för {1}
- Utrustningen är obligatorisk och kan inte tas bort. Det måste finnas minst en, eller ersättas med ett alternativ.
- Kan inte ta bort obligatorisk utrustnign
+ Skapa ny armé
+ Lägg till en ny {0}
+ Ny utrustning för {0}
+ Inställningar
+ Ersätt {0} med ny utrustning
+ {0}
+ System och ras filer har laddats in.
+ Ogiltig arméfil
+ Ogiltig rasfil
+ Språk
+ Språk
+ Förmågor:
+ Antal:
+ Arménamn:
+ Arméstorlek:
+ Utvecklare:
+ Utrustning:
+ Spelsystem:
+ Utrustning:
+ Språk:
+ Anteckningar:
+ ({0} {1})
+ Raser:
+ Tack till:
+ Enheter:
+ Storlek:
+ Version: {0}
+
+
+
+ &Om
+ &Stäng armé
+ &Ta bort enhet
+ &Redigera enhet
+ A&vsluta
+ &Exportera armé
+ Normal HTML
+ &Skapa ny armé
+ &Öppna sparad armé
+ &Inställningar
+ &Gör om
+ &Läs in filer på nytt
+ &Spara armé
+ Spara armé &som...
+ &Återställ
+ WarFoundry kunde inte hitta data för spel system.
+ Vänligen kontrollera felmeddelanden i loggen och se till att du har datafiler för spelsystemet i "data" mappen.
+ Öppna armé
+ png
+ png
+ poäng
+ poäng
+ Utrusta alla
Utrustningen kommer att tas bort. Fortsätt?
Bekräfta byte av utrustning
- Om WarFoundry
- Version: {0}
- Utvecklare:
- Tack till:
- {0}
- Storlek:
- Typ
- Utrustning:
- Lägg till
- Förmågor:
- Anteckningar:
- Ta bort
- Ersätt
- Redigera
- {0} ({1} för {2} poäng var)
- {0} ({1} gratis)
- För alla ({1})
- För {0}% ({1})
- {0}
- Ogiltig rasfil
- Ogiltig arméfil
- Armén "{0}" har ändrats.
-Vill du spara ändringarna innan armén stängs?
-
- Osparade förändringar
- WarFoundry kunde inte spara filen. Var god och kontrollera loggen för mera detaljer.
- Filen kunde inte sparas
- {0} - {1}poäng
-
-
-
- alla ({1})
- {0}% ({1})
- {0}
- {0} för {1}
- alla ({1})
- {0}% ({1})
- {0}
- ändra {0} amount för {1} till {2}
- ändra {0} amount för {1} till {2}
+ Utrustningen är obligatorisk och kan inte tas bort. Det måste finnas minst en, eller ersättas med ett alternativ.
+ Kan inte ta bort obligatorisk utrustnign
+ Ta bort {0}
+ Lägg till på nytt {0}
Ersätt {0} med {1} för {2}
Ersätt {0} med {1} för {2}
- Lägg till enhet av {0}
- Ta bort enhet av {0}
- Ta bort {0}
- Lägg till på nytt {0}
- Byt namn från "{0}" till "{1}"
- Byt namn från "{0}" till "{1}"
- ändra storleken på {0} till {1}
- ändra storleken på {0} till {1}
{0}; och {1}
{0}; eller {1}
{0} kan bara väljas om ingen av följande har valts: {1}
{1} kan bara väljas {0} gånger
{1} måste väljas minst {0} gånger
- {1} {0}
+ {0} kan bara väljas om följande har valts: {1}
{0}, {1}
- {0} kan bara väljas om följande har valts: {1}
- Inställningar
- Språk
- Språk:
- Språk
- System och ras filer har laddats in.
+ {1} {0}
+ Spara armé
+ Armén "{0}" har ändrats.
+ Vill du spara ändringarna innan armén stängs?
+ Osparade förändringar
+ WarFoundry kunde inte spara filen. Var god och kontrollera loggen för mera detaljer.
+ Filen kunde inte sparas
+ ändra {0} amount för {1} till {2}
+ ändra {0} amount för {1} till {2}
+ Byt namn från "{0}" till "{1}"
+ Byt namn från "{0}" till "{1}"
+ ändra storleken på {0} till {1}
+ ändra storleken på {0} till {1}
+ Typ
+ {0} {1} / {2} {3}
+ Aktuellt poängvärde för armé
+ {0} ({1} {2})
+ ( {0} {1} var)
+