private void MoveSoldierToCraft(Soldier soldier, Craft soldierCraft) { if (craft.SpaceAvailable == 0) return; soldierCraft.SoldierIds.Remove(soldier.Id); craft.SoldierIds.Add(soldier.Id); }
public SelectArmor(Soldier soldier) { this.soldier = soldier; AddControl(new Border(40, 64, 192, 134, ColorScheme.Blue, Backgrounds.EquipCraft, 10)); AddControl(new Label(48, Label.Center, "SELECT ARMOR FOR", Font.Normal, ColorScheme.DarkYellow)); AddControl(new Label(56, Label.Center, soldier.Name, Font.Normal, ColorScheme.DarkYellow)); AddControl(new Label(72, 96, "TYPE", Font.Normal, ColorScheme.DarkYellow)); AddControl(new Label(72, 176, "QUANTITY", Font.Normal, ColorScheme.DarkYellow)); AddControl(new Button(88, 80, 100, 14, "NONE", ColorScheme.DarkYellow, Font.Normal, OnNone)); var nextTopRow = 104; foreach (var armorType in new[]{ ArmorType.PersonalArmor, ArmorType.PowerSuit, ArmorType.FlyingSuit }) { var metadata = armorType.Metadata(); var count = GameState.SelectedBase.Stores[metadata.Item]; if (count <= 0) continue; var localArmorType = armorType; var topRow = nextTopRow; nextTopRow += 16; AddControl(new Button(topRow, 80, 100, 14, metadata.Name, ColorScheme.DarkYellow, Font.Normal, () => OnEquipArmor(localArmorType))); AddControl(new Label(topRow, 216, count.FormatNumber(), Font.Large, ColorScheme.White)); } AddControl(new Button(154, 135, 50, 12, "CANCEL", ColorScheme.DarkYellow, Font.Normal, EndModal)); }
private ColorScheme GetSoldierColor(Soldier soldier) { var soldierCraft = soldier.Craft; if (soldierCraft == null) return ColorScheme.Blue; return ReferenceEquals(craft, soldierCraft) ? ColorScheme.White : ColorScheme.Purple; }
private void OnClickSoldier(Soldier soldier) { if (soldier.IsWounded) return; if (soldier.Craft == null) AddSoldierToCraft(soldier); else if (!ReferenceEquals(craft, soldier.Craft)) MoveSoldierToCraft(soldier, soldier.Craft); else RemoveSoldierFromCraft(soldier); }
public SoldierView(Soldier soldier) { this.soldier = soldier; AddControl(new Background(Backgrounds.InfoSoldier, 1)); AddControl(new Picture(4, 4, soldier.Rank.Image())); AddControl(new ClickToEdit(9, 40, 176, soldier.Name, Font.Large, ColorScheme.Blue, OnEditName)); AddControl(new Button(33, 0, 28, 14, "<<", ColorScheme.Purple, Font.Normal, OnPreviousSoldier)); AddControl(new Button(33, 30, 48, 14, "OK", ColorScheme.Purple, Font.Normal, OnOk)); AddControl(new Button(33, 80, 28, 14, ">>", ColorScheme.Purple, Font.Normal, OnNextSoldier)); AddControl(new Button(33, 130, 60, 14, "ARMOR", ColorScheme.Purple, Font.Normal, OnEditArmor)); AddControl(new DynamicLabel(38, 194, () => soldier.ArmorName, Font.Normal, ColorScheme.Purple)); AddControl(new Label(48, 0, "RANK>", Font.Normal, ColorScheme.Blue)); AddControl(new Label(48, 29, $"{soldier.Rank}", Font.Normal, ColorScheme.White)); AddControl(new Label(48, 130, "MISSIONS>", Font.Normal, ColorScheme.Blue)); AddControl(new Label(48, 178, soldier.MissionCount.FormatNumber(), Font.Normal, ColorScheme.White)); AddControl(new Label(48, 230, "KILLS>", Font.Normal, ColorScheme.Blue)); AddControl(new Label(48, 261, soldier.KillCount.FormatNumber(), Font.Normal, ColorScheme.White)); AddControl(new Label(56, 0, "CRAFT>", Font.Normal, ColorScheme.Blue)); AddControl(new Label(56, 34, soldier.CraftName, Font.Normal, ColorScheme.White)); if (soldier.DaysUntilRecovered > 0) { AddControl(new Label(56, 130, "WOUND RECOVERY>", Font.Normal, ColorScheme.Blue)); AddControl(new Label(56, 211, $"{soldier.DaysUntilRecovered} days", Font.Normal, ColorScheme.White)); } if (soldier.InPsiTraining) AddControl(new Label(66, 0, "In Psionic Training", Font.Normal, ColorScheme.LightMagenta)); AddRow(82, "TIME UNITS", statistics => statistics.TimeUnits, 48); AddRow(94, "STAMINA", statistics => statistics.Stamina, 144); AddRow(106, "HEALTH", statistics => statistics.Health, 32); AddRow(118, "BRAVERY", statistics => statistics.Bravery, 64); AddRow(130, "REACTIONS", statistics => statistics.Reactions, 96); AddRow(142, "FIRING ACCURACY", statistics => statistics.FiringAccuracy, 128); AddRow(154, "THROWING ACCURACY", statistics => statistics.ThrowingAccuracy, 160); AddRow(166, "STRENGTH", statistics => statistics.Strength, 80); if (!soldier.HasPsiSkill) return; AddRow(178, "PSIONIC STRENGTH", statistics => statistics.PsionicStrength, 176); AddRow(190, "PSIONIC SKILL", statistics => statistics.PsionicSkill, 176); }
private void OnSelectSoldier(Soldier soldier) { new SelectArmor(soldier).DoModal(this); }
private void RemoveSoldierFromCraft(Soldier soldier) { craft.SoldierIds.Remove(soldier.Id); }
private ColorScheme GetSoldierColor(Soldier soldier) { return soldier.Craft == null ? ColorScheme.Blue : ReferenceEquals(craft, soldier.Craft) ? ColorScheme.White : ColorScheme.Purple; }
private void AddSoldierToCraft(Soldier soldier) { if (craft.SpaceAvailable > 0) craft.SoldierIds.Add(soldier.Id); }
private static void OnClickSoldier(Soldier soldier) { GameState.Current.SetScreen(new SoldierView(soldier)); }
private static ColorScheme GetSoldierColorScheme(Soldier soldier) { return soldier.Craft == null ? ColorScheme.Purple : ColorScheme.Blue; }