예제 #1
0
 public CrewMember(CrewMember baseCrewMember)
 {
     _id          = baseCrewMember.Id;
     Pilot        = baseCrewMember.Pilot;
     Fighter      = baseCrewMember.Fighter;
     Trader       = baseCrewMember.Trader;
     Engineer     = baseCrewMember.Engineer;
     _curSystemId = baseCrewMember.CurrentSystemId;
 }
예제 #2
0
 public CrewMember(CrewMemberId id, int pilot, int fighter, int trader, int engineer, StarSystemId curSystemId)
 {
     Id = id;
     Pilot = pilot;
     Fighter = fighter;
     Trader = trader;
     Engineer = engineer;
     CurrentSystemId = curSystemId;
 }
예제 #3
0
 public CrewMember(CrewMemberId id, int pilot, int fighter, int trader, int engineer, StarSystemId curSystemId)
 {
     _id          = id;
     Pilot        = pilot;
     Fighter      = fighter;
     Trader       = trader;
     Engineer     = engineer;
     _curSystemId = curSystemId;
 }
예제 #4
0
        public bool HasCrew(CrewMemberId id)
        {
            bool found = false;

            for (int i = 0; i < Crew.Length && !found; i++)
            {
                if (Crew[i] != null && Crew[i].Id == id)
                {
                    found = true;
                }
            }
            return(found);
        }
예제 #5
0
        public Ship(Hashtable hash) : base(hash)
        {
            _fuel     = (int)GetValueFromHash(hash, "_fuel");
            _hull     = (int)GetValueFromHash(hash, "_hull");
            _tribbles = (int)GetValueFromHash(hash, "_tribbles", _tribbles);
            _cargo    = (int[])GetValueFromHash(hash, "_cargo", _cargo);
            _weapons  = (Weapon[])ArrayListToArray((ArrayList)GetValueFromHash(hash, "_weapons"), "Weapon");
            _shields  = (Shield[])ArrayListToArray((ArrayList)GetValueFromHash(hash, "_shields"), "Shield");
            _gadgets  = (Gadget[])ArrayListToArray((ArrayList)GetValueFromHash(hash, "_gadgets"), "Gadget");
            _pod      = (bool)GetValueFromHash(hash, "_pod", _pod);

            int[] crewIds = (int[])GetValueFromHash(hash, "_crewIds");
            _crew = new CrewMember[crewIds.Length];
            for (int index = 0; index < _crew.Length; index++)
            {
                CrewMemberId id = (CrewMemberId)crewIds[index];
                _crew[index] = (id == CrewMemberId.NA ? null : Game.CurrentGame.Mercenaries[(int)id]);
            }
        }
예제 #6
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;
                    }
                }
            }
        }
예제 #7
0
 public CrewMember(Hashtable hash) : base(hash)
 {
     _id          = (CrewMemberId)GetValueFromHash(hash, "_id");
     _skills      = (int[])GetValueFromHash(hash, "_skills", _skills);
     _curSystemId = (StarSystemId)GetValueFromHash(hash, "_curSystemId", _curSystemId);
 }
예제 #8
0
 public bool HasCrew(CrewMemberId id)
 {
     bool found = false;
     for (int i = 0; i < Crew.Length && !found; i++)
     {
         if (Crew[i] != null && Crew[i].Id == id)
             found = true;
     }
     return found;
 }
예제 #9
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;
                }
            }
        }