Beispiel #1
0
 private void MoveSoldierToCraft(Soldier soldier, Craft soldierCraft)
 {
     if (craft.SpaceAvailable == 0)
         return;
     soldierCraft.SoldierIds.Remove(soldier.Id);
     craft.SoldierIds.Add(soldier.Id);
 }
Beispiel #2
0
        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));
        }
Beispiel #3
0
 private ColorScheme GetSoldierColor(Soldier soldier)
 {
     var soldierCraft = soldier.Craft;
     if (soldierCraft == null)
         return ColorScheme.Blue;
     return ReferenceEquals(craft, soldierCraft) ?
         ColorScheme.White :
         ColorScheme.Purple;
 }
Beispiel #4
0
 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);
 }
Beispiel #5
0
        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);
        }
Beispiel #6
0
 private void OnSelectSoldier(Soldier soldier)
 {
     new SelectArmor(soldier).DoModal(this);
 }
Beispiel #7
0
 private void RemoveSoldierFromCraft(Soldier soldier)
 {
     craft.SoldierIds.Remove(soldier.Id);
 }
Beispiel #8
0
 private ColorScheme GetSoldierColor(Soldier soldier)
 {
     return soldier.Craft == null ? ColorScheme.Blue :
         ReferenceEquals(craft, soldier.Craft) ? ColorScheme.White :
         ColorScheme.Purple;
 }
Beispiel #9
0
 private void AddSoldierToCraft(Soldier soldier)
 {
     if (craft.SpaceAvailable > 0)
         craft.SoldierIds.Add(soldier.Id);
 }
Beispiel #10
0
 private static void OnClickSoldier(Soldier soldier)
 {
     GameState.Current.SetScreen(new SoldierView(soldier));
 }
Beispiel #11
0
 private static ColorScheme GetSoldierColorScheme(Soldier soldier)
 {
     return soldier.Craft == null ?
         ColorScheme.Purple :
         ColorScheme.Blue;
 }