Esempio n. 1
0
        private bool LoadFromJson(JsonParser.ObjectValue jsonOb)
        {
            bool hasLoaded = false;

            try
            {
                FontSize = (JsonParser.FloatValue)jsonOb["fontSize"];
                MaxDistanceFromCenter = (JsonParser.FloatValue)jsonOb["maxCenterDist"];
                MaxDistanceFromCamera = (JsonParser.FloatValue)jsonOb["maxCameraDist"];

                FilterNearbyActors = jsonOb.entries.ContainsKey("filterNearby") ? (JsonParser.BoolValue)jsonOb["filterNearby"] : false;

                JsonParser.ArrayValue arrPresets = (JsonParser.ArrayValue)jsonOb["presets"];
                foreach (JsonParser.Value v in arrPresets.entries)
                {
                    JsonParser.ObjectValue presetJsonOb = (JsonParser.ObjectValue)v;
                    ActorFilterPreset      presetOb     = new ActorFilterPreset();

                    bool loadedPreset = presetOb.LoadFromJson(presetJsonOb);
                    if (loadedPreset)
                    {
                        Presets.Add(presetOb);
                    }
                }

                hasLoaded = true;
            }
            catch (Exception ex)
            {
                Logger.WriteLine("Failed to load settings, exception:" + ex);
            }

            return(hasLoaded);
        }
Esempio n. 2
0
        private void MergeOnlinePresets(List <string> onlinePresets)
        {
            PlayerSettings settings   = PlayerSettings.Get();
            bool           hasChanges = false;

            for (int importIdx = 0; importIdx < onlinePresets.Count; importIdx++)
            {
                ActorFilterPreset testPreset = new ActorFilterPreset();
                bool isValid = false;
                try
                {
                    JsonParser.ObjectValue rootOb = JsonParser.ParseJson(onlinePresets[importIdx]);
                    isValid = testPreset.LoadFromJson(rootOb);
                }
                catch (Exception ex)
                {
                    Logger.WriteLine("Failed to merge synced preset #" + importIdx + ": " + ex);
                }

                if (isValid)
                {
                    ActorFilterPreset existingPreset = settings.Presets.Find(x => x.Name == testPreset.Name);
                    if (existingPreset != null && existingPreset.version >= testPreset.version)
                    {
                        Logger.WriteLine("Ignoring online preset #" + importIdx + ": " + testPreset.Name + " (v" + testPreset.version + ") => local version: " + existingPreset.version);
                        continue;
                    }

                    if (existingPreset != null)
                    {
                        settings.Presets.Remove(existingPreset);
                    }

                    Logger.WriteLine("Using online preset #" + importIdx + ": " + testPreset.Name + " (v" + testPreset.version + ")");
                    settings.Presets.Add(testPreset);
                    hasChanges = true;
                }
            }

            if (hasChanges)
            {
                UpdatePresetList();
            }
        }
Esempio n. 3
0
        private void buttonImportPreset_Click(object sender, EventArgs e)
        {
            ActorFilterPreset loadedPreset = null;

            string importText = Clipboard.GetText();

            if (!string.IsNullOrEmpty(importText) && importText.Length > 2 && importText[0] == '{')
            {
                ActorFilterPreset preset = new ActorFilterPreset();
                try
                {
                    JsonParser.ObjectValue jsonOb = JsonParser.ParseJson(importText);
                    bool hasLoaded = preset.LoadFromJson(jsonOb);
                    if (hasLoaded)
                    {
                        loadedPreset = preset;
                    }
                }
                catch (Exception ex)
                {
                    Logger.WriteLine("Import failed text:'" + importText + "', exception:" + ex);
                }
            }

            if (loadedPreset != null)
            {
                PlayerSettings    settings       = PlayerSettings.Get();
                ActorFilterPreset existingPreset = settings.Presets.Find(x => (x.Name == loadedPreset.Name));
                bool bCanAdd = false;

                if (existingPreset != null)
                {
                    DialogResult dr = MessageBox.Show("Preset '" + existingPreset.Name + "' already exists, do you want to merge it?", Text, MessageBoxButtons.YesNoCancel);
                    if (dr == DialogResult.Yes)
                    {
                        // merge
                        existingPreset.Filters.AddRange(loadedPreset.Filters);
                    }
                    else if (dr == DialogResult.No)
                    {
                        // keep separate, create new name

                        string UseName = existingPreset.Name;
                        int    sepIdx  = UseName.LastIndexOf('#');
                        if (sepIdx > 0)
                        {
                            UseName = UseName.Substring(0, sepIdx);
                        }

                        for (int Idx = 2; Idx < 10000; Idx++)
                        {
                            string UniqueName    = UseName + "#" + Idx;
                            bool   alreadyExists = settings.Presets.Find(x => (x.Name == UniqueName)) != null;
                            if (!alreadyExists)
                            {
                                loadedPreset.Name = UniqueName;
                                bCanAdd           = true;
                                break;
                            }
                        }
                    }
                }
                else
                {
                    bCanAdd = true;
                }

                if (bCanAdd)
                {
                    settings.Presets.Add(loadedPreset);

                    ListViewItem lvi = new ListViewItem(loadedPreset.Name);
                    lvi.Tag = loadedPreset;
                    listViewPresetManage.Items.Add(lvi);

                    int itemIdx = comboBoxPreset.Items.Add(loadedPreset);
                    comboBoxPreset.SelectedIndex = itemIdx;
                }
            }
        }