Exemple #1
0
            private void CheckAchievementsForCrew(ProtoCrewMember kerbal, bool hasToBeFirst)
            {
                if (kerbal == null)
                {
                    return;
                }
                // we want to check crew member only
                if (!kerbal.IsCrew())
                {
                    return;
                }
                // ok, lets check this kerbal
                HallOfFameEntry entry = HallOfFame.Instance().GetEntry(kerbal);

                if (entry != null)
                {
                    foreach (Ribbon ribbon in RibbonPool.Instance())
                    {
                        Achievement achievement = ribbon.GetAchievement();
                        if (achievement.HasToBeFirst() == hasToBeFirst)
                        {
                            if (achievement.Check(entry))
                            {
                                recorder.Record(ribbon, kerbal);
                            }
                        }
                    }
                }
                else
                {
                    Log.Warning("no entry for kerbal " + kerbal.name + " in hall of fame");
                }
            }
            private void DrawRevocationDialog()
            {
                GUILayout.BeginVertical();
                if (entry == null)
                {
                    return;
                }
                GUILayout.Label("Select ribbons for revocation", FFStyles.STYLE_STRETCHEDLABEL);
                scrollPosRevoRib = GUILayout.BeginScrollView(scrollPosRevoRib, FFStyles.STYLE_SCROLLVIEW);
                foreach (Ribbon ribbon in entry.GetRibbons())
                {
                    Achievement achievement = ribbon.GetAchievement();
                    GUIContent  content     = new GUIContent(ribbon.GetTexture(), customRibbonName);
                    GUILayout.BeginHorizontal();
                    if (GUILayout.Toggle(revocation.Contains(ribbon), "", FFStyles.STYLE_NARROW_TOGGLE))
                    {
                        revocation.Add(ribbon);
                    }
                    else
                    {
                        revocation.Remove(ribbon);
                    }
                    GUILayout.Label(content, FFStyles.STYLE_RIBBON_OFF5);
                    GUILayout.Label(achievement.GetName(), FFStyles.STYLE_LABEL_OFF5);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();
                }
                GUILayout.EndScrollView();
                //GUILayout.FlexibleSpace();
                // OK/CANCEL
                GUILayout.BeginHorizontal();
                //
                revocatioOfSupersededRibbons = GUILayout.Toggle(revocatioOfSupersededRibbons, "superseded ribbons",
                                                                FFStyles.STYLE_TOGGLE);
                GUILayout.FlexibleSpace();
                // OK/CANCEL
                if (revocation.Count > 0)
                {
                    if (GUILayout.Button("OK", FFStyles.STYLE_CONTROL_BUTTON))
                    {
                        ProtoCrewMember kerbal = entry.GetKerbal();
                        foreach (Ribbon ribbon in revocation)
                        {
                            HallOfFame.Instance().Revocation(kerbal, ribbon, revocatioOfSupersededRibbons);
                        }
                        revocation.Clear();
                        mode = MODE.DISPLAY;
                        Log.Trace("mark game as updated, because of revocation");
                        HighLogic.CurrentGame.Updated();
                    }
                }

                if (GUILayout.Button("CANCEL", FFStyles.STYLE_CONTROL_BUTTON))
                {
                    revocation.Clear();
                    mode = MODE.DISPLAY;
                }
                GUILayout.EndHorizontal();
                GUILayout.EndVertical();
            }
Exemple #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();
                            }
                        }
                    }
                }
            }
Exemple #4
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();
                }
            }
Exemple #5
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();
                }
            }
Exemple #6
0
            private void OnGameStateCreated(Game game)
            {
                Log.Detail("OnGameStateCreated ");
                // do not load a game while in MAIN-MENU or SETTINGS
                if (HighLogic.LoadedScene == GameScenes.MAINMENU || HighLogic.LoadedScene == GameScenes.SETTINGS)
                {
                    // clear the hall of fame to avoid new games with ribbons from previos loads...
                    HallOfFame.Instance().Clear();
                    Log.Detail("ignoring load because of game scene " + HighLogic.LoadedScene);
                    return;
                }

                // no game, no fun
                if (game == null)
                {
                    Log.Warning("no game");
                    return;
                }

                // we have to detect a closed orbit again...
                this.orbitClosed = false;

                ResetObserver();

                Log.Info("EventObserver:: OnGameStateCreated " + game.UniversalTime + ", game status: " + game.Status + ", scene " + HighLogic.LoadedScene);

                vesselObserver.Revert(game.UniversalTime);
            }
Exemple #7
0
            private void OnVesselRecovered(ProtoVessel vessel)
            {
                if (vessel == null)
                {
                    Log.Warning("vessel recover without a valid vessel detected");
                    return;
                }

                Log.Info("EventObserver:: OnVesselRecovered " + vessel.vesselName);
                // record recover of vessel
                recorder.RecordVesselRecovered(vessel);
                // check for kerbal specific achiements
                HallOfFame.Instance().BeginArwardOfRibbons();
                foreach (ProtoCrewMember member in vessel.GetVesselCrew())
                {
                    CheckAchievementsForCrew(member);
                }
                HallOfFame.Instance().EndArwardOfRibbons();
                //
                // ------ MissionSummary ------
                if (HighLogic.LoadedScene == GameScenes.SPACECENTER)
                {
                    if (FinalFrontier.configuration.IsMissionSummaryEnabled())
                    {
                        double technicalMissionEndTime            = Planetarium.GetUniversalTime();
                        MissionSummaryWindow missionSummaryWindow = new MissionSummaryWindow();
                        missionSummaryWindow.SetSummaryForVessel(vessel, technicalMissionEndTime);
                        missionSummaryWindow.SetVisible(true);
                    }
                }
                //
                // refresh roster status
                HallOfFame.Instance().Refresh();
            }
Exemple #8
0
        public async Task <IHttpActionResult> PutHallOfFame(int id, HallOfFame hallOfFame)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != hallOfFame.Id)
            {
                return(BadRequest());
            }

            db.Entry(hallOfFame).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!HallOfFameExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        private void OnDataGridSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var viewModel = MainGrid.DataContext as SeuratExtensionWindowViewModel;

            if (e.AddedItems.Count > 0)
            {
                _study = e.AddedItems[0] as StudyInfo;

                // Display the options pane with automatic height

                TaskOptions.Visibility = Visibility.Visible;
                //TaskOptions.Height = double.NaN;
                //TaskOptions.Margin = new Thickness(10);

                if (_study != null && viewModel != null)
                {
                    _hof      = viewModel.GetHallOfFame(_study);
                    _complete = viewModel.GetHallOfFame(_study); // Get it twice to avoid cloning
                    //_complete = viewModel.GetComplete(_study, _complete);
                    viewModel.InitProperties(_hof.solutions.Length, _complete.solutions.Length, viewModel.UseComplete);

                    //DisplayOrHideControls(true, true);
                }
            }
        }
        public IActionResult DeleteConfirmed(int id)
        {
            HallOfFame HallOfFame = _context.HallOfFame.Single(m => m.ID == id);

            _context.HallOfFame.Remove(HallOfFame);
            _context.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemple #11
0
 private void OnKerbalAdded(ProtoCrewMember kerbal)
 {
     Log.Info("kerbal added: " + kerbal.name);
     // just make sure this kerbal is in the hall of fame
     HallOfFame.Instance().GetEntry(kerbal);
     // and refresh
     HallOfFame.Instance().Refresh();
 }
Exemple #12
0
 public void NextStatistic()
 {
     sortingStat++;
     if ((int)sortingStat > 9)
     {
         sortingStat = SortableStats.Name;
     }
     HallOfFame.Instance().Sort();
 }
 public void NextDirection()
 {
     direction++;
     if ((int)direction > 2)
     {
         direction = DIRECTION.ASCENDING;
     }
     HallOfFame.Instance().Sort();
 }
 public void NextMode()
 {
     mode++;
     if ((int)mode > 2)
     {
         mode = SORT_MODE.STATISTIC;
     }
     HallOfFame.Instance().Sort();
 }
Exemple #15
0
 public void NextDirection()
 {
     sortingDirection++;
     if ((int)sortingDirection > 2)
     {
         sortingDirection = SortDirection.Ascending;
     }
     HallOfFame.Instance().Sort();
 }
Exemple #16
0
 public void NextMode()
 {
     sortMode++;
     if ((int)sortMode > 2)
     {
         sortMode = SortMode.Stat;
     }
     HallOfFame.Instance().Sort();
 }
Exemple #17
0
 public void NextSkill()
 {
     sortingSkill++;
     if ((int)sortingSkill > 4)
     {
         sortingSkill = SortableSkills.Specialist;
     }
     HallOfFame.Instance().Sort();
 }
 public void NextStatistic()
 {
     stats_sorting++;
     if ((int)stats_sorting > 9)
     {
         stats_sorting = STATS_SORTING.NAME;
     }
     HallOfFame.Instance().Sort();
 }
 public void NextSkill()
 {
     skill_sorting++;
     if ((int)skill_sorting > 4)
     {
         skill_sorting = SKILL_SORTING.SPECIALIST;
     }
     HallOfFame.Instance().Sort();
 }
Exemple #20
0
        public double GetResearchForKerbal(ProtoCrewMember kerbal)
        {
            HallOfFameEntry entry = HallOfFame.Instance().GetEntry(kerbal);

            if (entry != null)
            {
                return(entry.Research);
            }
            return(0);
        }
Exemple #21
0
        public double GetTotalMissionTimeForKerbal(ProtoCrewMember kerbal)
        {
            HallOfFameEntry entry = HallOfFame.Instance().GetEntry(kerbal);

            if (entry != null)
            {
                return(entry.TotalMissionTime);
            }
            return(0);
        }
 public IActionResult Create(HallOfFame HallOfFame)
 {
     if (ModelState.IsValid)
     {
         _context.HallOfFame.Add(HallOfFame);
         _context.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(HallOfFame));
 }
Exemple #23
0
        public int GetDockingsForKerbal(ProtoCrewMember kerbal)
        {
            HallOfFameEntry entry = HallOfFame.Instance().GetEntry(kerbal);

            if (entry != null)
            {
                return(entry.Dockings);
            }
            return(0);
        }
Exemple #24
0
        public int GetMissionsFlownForKerbal(ProtoCrewMember kerbal)
        {
            HallOfFameEntry entry = HallOfFame.Instance().GetEntry(kerbal);

            if (entry != null)
            {
                return(entry.MissionsFlown);
            }
            return(0);
        }
Exemple #25
0
        public int GetContractsCompletedForKerbal(ProtoCrewMember kerbal)
        {
            HallOfFameEntry entry = HallOfFame.Instance().GetEntry(kerbal);

            if (entry != null)
            {
                return(entry.ContractsCompleted);
            }
            return(0);
        }
 protected override void OnOpen()
 {
     Log.Info("hall of fame browser opened");
     base.OnOpen();
     HallOfFame.Instance().Refresh();
     if (toolbarButton != null)
     {
         toolbarButton.TexturePath = toolbarButtonTextureOn;
     }
 }
        public SeuratExtensionWindow()
        {
            InitializeComponent();

            // Hide the options pane until something is selected

            //TaskOptions.Visibility = Visibility.Hidden;
            //TaskOptions.Height = 0;
            _study = null;
            _hof   = null;
        }
Exemple #28
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();
        }
Exemple #29
0
        public bool IsRibbonAwardedToKerbal(object ribbon, ProtoCrewMember kerbal)
        {
            HallOfFame      halloffame = HallOfFame.Instance();
            HallOfFameEntry entry      = halloffame.GetEntry(kerbal);

            if (entry == null)
            {
                return(false);
            }
            return(entry.HasRibbon((Ribbon)ribbon));
        }
Exemple #30
0
        public async Task <IHttpActionResult> GetHallOfFame(int id)
        {
            HallOfFame hallOfFame = await db.HallOfFames.FindAsync(id);

            if (hallOfFame == null)
            {
                return(NotFound());
            }

            return(Ok(hallOfFame));
        }
 public AchievementRecorder()
 {
     hallOfFame = HallOfFame.Instance();
 }
 public static HallOfFame CreateHallOfFame(string hofID, short yearid)
 {
     HallOfFame hallOfFame = new HallOfFame();
     hallOfFame.hofID = hofID;
     hallOfFame.yearid = yearid;
     return hallOfFame;
 }
 public void AddToHallOfFames(HallOfFame hallOfFame)
 {
     base.AddObject("HallOfFames", hallOfFame);
 }