Esempio n. 1
0
            private void OnContractCompleted(Contract contract)
            {
                Vessel vessel = FlightGlobals.ActiveVessel;

                if (vessel == null)
                {
                    return;
                }
                HallOfFame halloffame = HallOfFame.Instance();

                //
                halloffame.BeginArwardOfRibbons();
                try
                {
                    foreach (ProtoCrewMember kerbal in vessel.GetVesselCrew())
                    {
                        halloffame.RecordContract(kerbal);
                        CheckAchievementsForCrew(kerbal, false);
                        CheckAchievementsForContracts(kerbal, contract);
                    }
                }
                finally
                {
                    halloffame.EndArwardOfRibbons();
                }
            }
Esempio n. 2
0
            private void OnScienceReceived(float science, ScienceSubject subject, ProtoVessel vessel, bool flag)
            {
                Log.Detail("EventObserver::OnScienceReceived: " + science + ", flag=" + flag);
                if (vessel == null)
                {
                    return;
                }
                HallOfFame halloffame = HallOfFame.Instance();

                //
                halloffame.BeginArwardOfRibbons();
                try
                {
                    foreach (ProtoCrewMember kerbal in vessel.GetVesselCrew())
                    {
                        if (!kerbal.IsTourist())
                        {
                            halloffame.RecordScience(kerbal, science);
                            CheckAchievementsForCrew(kerbal, false);
                        }
                    }
                }
                finally
                {
                    // commit ribbons
                    halloffame.EndArwardOfRibbons();
                }
            }
Esempio n. 3
0
            private void CheckAchievementsForProgress(ProgressNode node)
            {
                Vessel     vessel     = FlightGlobals.ActiveVessel;
                HallOfFame halloffame = HallOfFame.Instance();

                if (vessel != null)
                {
                    foreach (Ribbon ribbon in RibbonPool.Instance())
                    {
                        Achievement achievement = ribbon.GetAchievement();
                        if (achievement.Check(node))
                        {
                            halloffame.BeginArwardOfRibbons();
                            try
                            {
                                foreach (ProtoCrewMember member in vessel.GetVesselCrew())
                                {
                                    // record crew member only
                                    if (member.IsCrew())
                                    {
                                        recorder.Record(ribbon, member);
                                    }
                                }
                            }
                            finally
                            {
                                halloffame.EndArwardOfRibbons();
                            }
                        }
                    }
                }
            }
Esempio n. 4
0
            public void Record(Ribbon ribbon, Vessel vessel)
            {
                if (vessel == null)
                {
                    Log.Warning("no vessel for recorded ribbon " + ribbon.GetName());
                    return;
                }
                if (Log.IsLogable(Log.LEVEL.DETAIL))
                {
                    Log.Detail("recording ribbon " + ribbon.GetName() + " for vessel " + vessel.GetName());
                }
                List <ProtoCrewMember> crew = vessel.GetVesselCrew();

                if (crew != null)
                {
                    hallOfFame.BeginArwardOfRibbons();
                    foreach (ProtoCrewMember member in crew)
                    {
                        if (!member.IsTourist())
                        {
                            Record(ribbon, member);
                        }
                    }
                    hallOfFame.EndArwardOfRibbons();
                }
            }
Esempio n. 5
0
        public void AwardRibbonToKerbals(object ribbon, ProtoCrewMember[] kerbals)
        {
            HallOfFame halloffame = HallOfFame.Instance();

            halloffame.BeginArwardOfRibbons();
            foreach (ProtoCrewMember kerbal in kerbals)
            {
                halloffame.Record(kerbal, (Ribbon)ribbon);
            }
            halloffame.EndArwardOfRibbons();
        }
            public void Record(Ribbon ribbon, Vessel vessel)
            {
                List <ProtoCrewMember> crew = vessel.GetVesselCrew();
                CelestialBody          body = vessel.mainBody;

                if (body != null)
                {
                    hallOfFame.BeginArwardOfRibbons();
                    foreach (ProtoCrewMember member in crew)
                    {
                        // record crew member only
                        if (member.IsCrew())
                        {
                            Record(ribbon, member);
                        }
                    }
                    hallOfFame.EndArwardOfRibbons();
                }
            }