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(); }
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(); } } } } }
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(); } }
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(); } }
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); }
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(); }
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")); }
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(); }
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(); }
public void NextDirection() { sortingDirection++; if ((int)sortingDirection > 2) { sortingDirection = SortDirection.Ascending; } HallOfFame.Instance().Sort(); }
public void NextMode() { sortMode++; if ((int)sortMode > 2) { sortMode = SortMode.Stat; } HallOfFame.Instance().Sort(); }
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(); }
public double GetResearchForKerbal(ProtoCrewMember kerbal) { HallOfFameEntry entry = HallOfFame.Instance().GetEntry(kerbal); if (entry != null) { return(entry.Research); } return(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)); }
public int GetDockingsForKerbal(ProtoCrewMember kerbal) { HallOfFameEntry entry = HallOfFame.Instance().GetEntry(kerbal); if (entry != null) { return(entry.Dockings); } return(0); }
public int GetMissionsFlownForKerbal(ProtoCrewMember kerbal) { HallOfFameEntry entry = HallOfFame.Instance().GetEntry(kerbal); if (entry != null) { return(entry.MissionsFlown); } return(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; }
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 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)); }
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); }