public bool AddObjective(Objective objective, int order, bool alertPlayer, out string result) { if (!this.AddObjectiveData(objective, ref order, out result)) { return(false); } // var myplayer = CustomPlayerData.GetPlayerData <ObjectivesCustomPlayer>(Main.myPlayer); // Load data bool isPrevComplete = myplayer?.IsObjectiveByNameComplete(objective.Title) ?? false; objective.Initialize(isPrevComplete); ObjectivesMod.Instance .ObjectivesTabUI .AddObjective(objective, order); // Initializes objective if (!objective.IsComplete.Value && alertPlayer) { UtilityPanelsTabs.AddTabAlert(ObjectivesMod.UtilityPanelsName, true); Main.NewText("New objective added: " + objective.Title, Color.Yellow); Main.PlaySound(SoundID.Chat, Main.LocalPlayer.MountedCenter); } this.NotifySubscribers(objective, true); return(true); }
//////////////// /// <summary> /// Indicates if an objective is complete. Objective does not need to be currently declared for player to remember /// having finished it previously. /// </summary> /// <param name="title"></param> /// <returns></returns> public static bool HasRecordedObjectiveByNameAsFinished(string title) { if (Main.netMode == NetmodeID.Server) { throw new ModLibsException("Server objectives not allowed."); } var myplayer = CustomPlayerData.GetPlayerData <ObjectivesCustomPlayer>(Main.myPlayer); return(myplayer.IsObjectiveByNameComplete(title)); }
public void ClearObjectives(bool forceIncomplete) { this.ClearObjectivesData(); if (forceIncomplete) { var myplayer = CustomPlayerData.GetPlayerData <ObjectivesCustomPlayer>(Main.myPlayer); myplayer?.ClearCompletedObjectives(); } ObjectivesMod.Instance .ObjectivesTabUI .ClearObjectives(); }
public bool RemoveObjectiveIf(string title, bool forceIncomplete) { this.RemoveObjectiveData(title); if (forceIncomplete) { var myplayer = CustomPlayerData.GetPlayerData <ObjectivesCustomPlayer>(Main.myPlayer); myplayer.ForgetCompletedObjective(title); } return(ObjectivesMod.Instance .ObjectivesTabUI .RemoveObjective(title)); }
/// <summary> /// Indicates if the current, local player has their objectives loaded. /// </summary> /// <returns></returns> public static bool AreObjectivesLoadedForCurrentPlayer() { if (Main.netMode == NetmodeID.Server) { throw new ModLibsException("Server has no player."); } if (Main.gameMenu) { return(false); } var myplayer = CustomPlayerData.GetPlayerData <ObjectivesCustomPlayer>(Main.myPlayer); return(myplayer != null); }
//////////////// internal bool Update_Internal() { bool isNewlyCompleted = false; if (!this.IsComplete.HasValue || !this.IsComplete.Value) { this.PercentComplete = this.ComputeCompletionPercent(); } if (this.IsComplete.Value) { var myplayer = CustomPlayerData.GetPlayerData <ObjectivesCustomPlayer>(Main.myPlayer); isNewlyCompleted = myplayer.RecordCompletedObjective(this.Title); if (!this.HasAlerted) { Main.NewText("Completed objective: " + this.Title, Color.Lime); this.HasAlerted = true; } } return(isNewlyCompleted); }