public UIHintManager() { //load stuff //shown hints try { using (var str = File.Open(Path.Combine(FSOEnvironment.UserDir, "readhints.json"), FileMode.Open, FileAccess.Read, FileShare.Read)) { var reader = new StreamReader(str); var hints = JsonConvert.DeserializeObject <UIHintRead>(reader.ReadToEnd()); if (hints?.ShownGUIDs != null) { ShownGUIDs = hints.ShownGUIDs; } } } catch (Exception) { //hint read list missing or couldn't parse } var langdir = GlobalSettings.Default.CurrentLang.ToLowerInvariant() + ".dir"; HintDir = "Content/UI/hints/" + langdir + "/"; if (!Directory.Exists(HintDir)) { HintDir = "Content/UI/hints/english.dir/"; } //scan hints var dir = Directory.GetFiles(HintDir); foreach (var file in dir) { var fn = Path.GetFileName(file); var hint = LoadHint(fn); if (hint != null) { //register this hint hint.Filename = fn; var r = new UIHintRef() { Filename = fn, GUID = hint.GUID }; AllHints.Add(r); List <UIHintRef> trigger = null; if (!TriggerToHints.TryGetValue(hint.Trigger, out trigger)) { trigger = new List <UIHintRef>(); TriggerToHints[hint.Trigger] = trigger; } trigger.Add(r); } } }
public void TryShowHint(UIHintRef r) { if (ShownGUIDs.Contains(r.GUID)) { return; } ShownGUIDs.Add(r.GUID); SaveRead(); var hint = LoadHint(r.Filename); if (hint != null) { ShowHint(hint); } }