private void UpdateAll()
        {
            selectedCrewMember = null;

            UpdateForHire();
            UpdateCurrentCrew();
            UpdateInfo();
        }
Пример #2
0
 public CrewMember(CrewMember baseCrewMember)
 {
     _id          = baseCrewMember.Id;
     Pilot        = baseCrewMember.Pilot;
     Fighter      = baseCrewMember.Fighter;
     Trader       = baseCrewMember.Trader;
     Engineer     = baseCrewMember.Engineer;
     _curSystemId = baseCrewMember.CurrentSystemId;
 }
Пример #3
0
        private void UpdateMercs()
        {
            lblMercIds.Text            = "";
            lblMercNames.Text          = "";
            lblMercSkillsPilot.Text    = "";
            lblMercSkillsFighter.Text  = "";
            lblMercSkillsTrader.Text   = "";
            lblMercSkillsEngineer.Text = "";
            lblMercSystems.Text        = "";
            lblMercSystems2.Text       = "";
            lblMercSystems.Links.Clear();
            lblMercSystems2.Links.Clear();

            for (int i = 0; i < mercIds.Length; i++)
            {
                CrewMember merc = game.Mercenaries[mercIds[i]];
                bool       link = merc.CurrentSystem != null && !game.Commander.Ship.HasCrew(merc.Id);

                lblMercIds.Text            += ((int)merc.Id).ToString() + Environment.NewLine;
                lblMercNames.Text          += merc.Name + Environment.NewLine;
                lblMercSkillsPilot.Text    += merc.Pilot.ToString() + Environment.NewLine;
                lblMercSkillsFighter.Text  += merc.Fighter.ToString() + Environment.NewLine;
                lblMercSkillsTrader.Text   += merc.Trader.ToString() + Environment.NewLine;
                lblMercSkillsEngineer.Text += merc.Engineer.ToString() + Environment.NewLine;

                if (i < SplitSystems)
                {
                    int start = lblMercSystems.Text.Length;
                    lblMercSystems.Text += CurrentSystemDisplay(merc) + Environment.NewLine;
                    if (link)
                    {
                        lblMercSystems.Links.Add(start, merc.CurrentSystem.Name.Length, merc.CurrentSystem.Name);
                    }
                }
                else
                {
                    int start = lblMercSystems2.Text.Length;
                    lblMercSystems2.Text += CurrentSystemDisplay(merc) + Environment.NewLine;
                    if (link)
                    {
                        lblMercSystems2.Links.Add(start, merc.CurrentSystem.Name.Length, merc.CurrentSystem.Name);
                    }
                }
            }

            lblMercIds.Text            = lblMercIds.Text.Trim();
            lblMercNames.Text          = lblMercNames.Text.Trim();
            lblMercSkillsPilot.Text    = lblMercSkillsPilot.Text.Trim();
            lblMercSkillsFighter.Text  = lblMercSkillsFighter.Text.Trim();
            lblMercSkillsTrader.Text   = lblMercSkillsTrader.Text.Trim();
            lblMercSkillsEngineer.Text = lblMercSkillsEngineer.Text.Trim();
            lblMercSystems.Text        = lblMercSystems.Text.Trim();
            lblMercSystems2.Text       = lblMercSystems2.Text.Trim();
        }
Пример #4
0
        public void Fire(CrewMemberId crewId)
        {
            int        skill = Trader;
            bool       found = false;
            CrewMember merc  = null;

            for (int i = 0; i < Crew.Length; i++)
            {
                if (Crew[i] != null && Crew[i].Id == crewId)
                {
                    found = true;
                    merc  = Crew[i];
                }

                if (found)
                {
                    Crew[i] = (i < Crew.Length - 1) ? Crew[i + 1] : null;
                }
            }

            if (Trader != skill)
            {
                Game.CurrentGame.RecalculateBuyPrices(Game.CurrentGame.Commander.CurrentSystem);
            }

            if (merc != null && !Consts.SpecialCrewMemberIds.Contains(merc.Id))
            {
                StarSystem[] universe = Game.CurrentGame.Universe;

                // The leaving Mercenary travels to a nearby random system.
                merc.CurrentSystemId = StarSystemId.NA;
                while (merc.CurrentSystemId == StarSystemId.NA)
                {
                    StarSystem system = universe[Functions.GetRandom(universe.Length)];
                    if (Functions.Distance(system, Game.CurrentGame.Commander.CurrentSystem) < Consts.MaxRange)
                    {
                        merc.CurrentSystemId = system.Id;
                    }
                }
            }
        }
        private void SelectedIndexChanged(object sender, System.EventArgs e)
        {
            if (!handlingSelect)
            {
                handlingSelect = true;

                object obj = ((ListBox)sender).SelectedItem;
                DeselectAll();

                if (typeof(CrewMember).IsInstanceOfType(obj))
                {
                    ((ListBox)sender).SelectedItem = obj;
                    selectedCrewMember             = (CrewMember)obj;
                }
                else
                {
                    selectedCrewMember = null;
                }

                handlingSelect = false;
                UpdateInfo();
            }
        }
Пример #6
0
        public void Hire(CrewMember merc)
        {
            int skill = Trader;

            int slot = -1;

            for (int i = 0; i < Crew.Length && slot == -1; i++)
            {
                if (Crew[i] == null)
                {
                    slot = i;
                }
            }

            if (slot >= 0)
            {
                Crew[slot] = merc;
            }

            if (Trader != skill)
            {
                Game.CurrentGame.RecalculateBuyPrices(Game.CurrentGame.Commander.CurrentSystem);
            }
        }
        private int[] _priceCargo      = new int[10];                                                                                                   // Total price paid for trade goods

        #endregion

        #region Methods

        public Commander(CrewMember baseCrewMember) : base(baseCrewMember)
        {
            // Start off with a crew of only the commander and a Pulse Laser.
            Ship.Crew[0] = this;
            Ship.AddEquipment(Consts.Weapons[(int)WeaponType.PulseLaser]);
        }
Пример #8
0
        /*
         * Types currently supported:
         * CrewMember
         * Gadget
         * HighScoreRecord
         * Shield
         * StarSystem
         * Weapon
         *
         * If an array of a type not listed is converted using ArrayToArrayList, the type
         * needs to be added here.
         */
        public static STSerializableObject[] ArrayListToArray(ArrayList list, string type)
        {
            STSerializableObject[] array = null;

            if (list != null)
            {
                switch (type)
                {
                case "CrewMember":
                    array = new CrewMember[list.Count];
                    break;

                case "Gadget":
                    array = new Gadget[list.Count];
                    break;

                case "HighScoreRecord":
                    array = new HighScoreRecord[list.Count];
                    break;

                case "Shield":
                    array = new Shield[list.Count];
                    break;

                case "StarSystem":
                    array = new StarSystem[list.Count];
                    break;

                case "Weapon":
                    array = new Weapon[list.Count];
                    break;
                }

                for (int index = 0; index < list.Count; index++)
                {
                    Hashtable            hash = (Hashtable)list[index];
                    STSerializableObject obj  = null;

                    if (hash != null)
                    {
                        switch (type)
                        {
                        case "CrewMember":
                            obj = new CrewMember(hash);
                            break;

                        case "Gadget":
                            obj = new Gadget(hash);
                            break;

                        case "HighScoreRecord":
                            obj = new HighScoreRecord(hash);
                            break;

                        case "Shield":
                            obj = new Shield(hash);
                            break;

                        case "StarSystem":
                            obj = new StarSystem(hash);
                            break;

                        case "Weapon":
                            obj = new Weapon(hash);
                            break;
                        }
                    }

                    array[index] = obj;
                }
            }

            return(array);
        }
Пример #9
0
 private string CurrentSystemDisplay(CrewMember merc)
 {
     return(merc.CurrentSystem == null ? Strings.Unknown : (game.Commander.Ship.HasCrew(merc.Id) ?
                                                            Functions.StringVars(Strings.MercOnBoard, merc.CurrentSystem.Name) : merc.CurrentSystem.Name));
 }
Пример #10
0
        private int Compare(int a, int b, string sortWhat, string sortBy)
        {
            int compareVal = 0;

            if (sortWhat == "M")             // Mercenaries
            {
                CrewMember A = game.Mercenaries[a];
                CrewMember B = game.Mercenaries[b];

                bool   strCompare = false;
                object valA       = null;
                object valB       = null;

                switch (sortBy)
                {
                case "I":                                                                                                                       // Id
                    valA = (int)A.Id;
                    valB = (int)B.Id;
                    break;

                case "N":                                                                                                                       // Name
                    valA       = A.Name;
                    valB       = B.Name;
                    strCompare = true;
                    break;

                case "P":                                                                                                                       // Pilot
                    valA = A.Pilot;
                    valB = B.Pilot;
                    break;

                case "F":                                                                                                                       // Fighter
                    valA = A.Fighter;
                    valB = B.Fighter;
                    break;

                case "T":                                                                                                                       // Trader
                    valA = A.Trader;
                    valB = B.Trader;
                    break;

                case "E":                                                                                                                       // Engineer
                    valA = A.Engineer;
                    valB = B.Engineer;
                    break;

                case "S":                                                                                                                       // System
                    valA       = CurrentSystemDisplay(A);
                    valB       = CurrentSystemDisplay(B);
                    strCompare = true;
                    break;
                }

                if (strCompare)
                {
                    compareVal = ((string)valA).CompareTo((string)valB);
                }
                else
                {
                    compareVal = ((int)valA).CompareTo(valB);
                }

                // Secondary sort by Name
                if (compareVal == 0 && sortBy != "N")
                {
                    compareVal = A.Name.CompareTo(B.Name);
                }
            }
            else
            {
                StarSystem A = game.Universe[a];
                StarSystem B = game.Universe[b];

                if (sortBy == "D")                 // Description
                {
                    string nameA = "";
                    string nameB = "";

                    switch (sortWhat)
                    {
                    case "Q":                             // Quests
                        nameA = A.SpecialEvent.Title;
                        nameB = B.SpecialEvent.Title;
                        break;

                    case "S":                             // Shipyards
                        nameA = A.Shipyard.Name;
                        nameB = B.Shipyard.Name;
                        break;
                    }

                    compareVal = nameA.CompareTo(nameB);
                }

                if (compareVal == 0)                 // Default sort - System Name
                {
                    compareVal = A.Name.CompareTo(B.Name);
                }
            }

            return(compareVal);
        }