예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
            }
        }