예제 #1
0
 protected override void SaveConfig() => Config.WriteObject(FConfigFile);
예제 #2
0
 void SaveConfig(ConfigData config) => Config.WriteObject(config, true);
예제 #3
0
 protected override void SaveConfig() => Config.WriteObject(config);
예제 #4
0
 protected override void SaveConfig()
 {
     Log($"Configuration changes saved to {Name}.json");
     Config.WriteObject(_pluginConfig, true);
 }
예제 #5
0
 protected override void LoadDefaultConfig()
 {
     Config.WriteObject(GetDefaultConfig(), true);
 }
예제 #6
0
 protected override void LoadDefaultConfig()
 {
     PrintWarning("Creating a new configuration file ...");
     Config.WriteObject(Cfg, true);
 }
예제 #7
0
 void SaveData()
 {
     Config.WriteObject(data);
 }
예제 #8
0
 protected override void LoadDefaultConfig() => Config.WriteObject(DefaultConfig(), true);
예제 #9
0
 protected override void LoadDefaultConfig()
 {
     g_config = new CornuConfig();
     Config.WriteObject(g_config, true);
     Puts("New configuration file created.");
 }
 protected override void SaveConfig() => Config.WriteObject(configData, true);
예제 #11
0
        private bool CreateDefaultConfig()
        {
            Config.Clear();
            var lootSpawns     = Resources.FindObjectsOfTypeAll <LootSpawn>();
            var itemModReveals = Resources.FindObjectsOfTypeAll <ItemModReveal>();
            var itemModUnwraps = Resources.FindObjectsOfTypeAll <ItemModUnwrap>();
            var murderers      = Resources.FindObjectsOfTypeAll <NPCMurderer>();
            var workbenches    = Resources.FindObjectsOfTypeAll <Workbench>();

#if DEBUG
            var sb = new StringBuilder();
            foreach (var reveal in itemModReveals)
            {
                var items = new List <ItemAmount>();
                var stack = new Stack <LootSpawn>();
                stack.Push(reveal.revealList);
                while (stack.Count > 0)
                {
                    var lootSpawn = stack.Pop();
                    if (lootSpawn.subSpawn != null && lootSpawn.subSpawn.Length > 0)
                    {
                        foreach (var entry in lootSpawn.subSpawn)
                        {
                            stack.Push(entry.category);
                        }
                        continue;
                    }
                    if (lootSpawn.items != null)
                    {
                        items.AddRange(lootSpawn.items);
                    }
                }
                sb.Clear();
                sb.AppendLine(reveal.name);
                sb.AppendLine("Items:");
                foreach (var item in items)
                {
                    sb.AppendLine($"\t{item.itemDef.shortname}: {item.amount}");
                }
                Puts(sb.ToString());
            }
            Puts("LootContainer: {0} LootSpawn: {1} ItemModReveal: {2}", Resources.FindObjectsOfTypeAll <LootContainer>().Length, lootSpawns.Length, itemModReveals.Length);
#endif
            var caseInsensitiveComparer = new CaseInsensitiveComparer();
            Array.Sort(lootSpawns, (a, b) => caseInsensitiveComparer.Compare(a.name, b.name));
            Array.Sort(itemModReveals, (a, b) => caseInsensitiveComparer.Compare(a.name, b.name));
            Array.Sort(itemModUnwraps, (a, b) => caseInsensitiveComparer.Compare(a.name, b.name));
            Array.Sort(murderers, (a, b) => caseInsensitiveComparer.Compare(a.name, b.name));
            Array.Sort(workbenches, (a, b) => caseInsensitiveComparer.Compare(a.name, b.name));
            var spawnGroupsData = new Dictionary <string, Dictionary <string, LootContainer> >();
            var spawnGroups     = SpawnHandler.Instance.SpawnGroups;
            //var spawnGroups = (List<SpawnGroup>)SpawnGroupsField.GetValue(SpawnHandler.Instance);
            var monuments = Resources.FindObjectsOfTypeAll <MonumentInfo>();
            var indexes   = GetSpawnGroupIndexes(spawnGroups, monuments);
            foreach (var spawnGroup in spawnGroups)
            {
                var spawnGroupKey = GetSpawnGroupKey(spawnGroup, monuments, indexes);
                if (spawnGroup.prefabs == null)
                {
                    continue;
                }
                foreach (var entry in spawnGroup.prefabs)
                {
                    var container = entry.prefab?.Get()?.GetComponent <LootContainer>();
                    if (container?.lootDefinition == null)
                    {
                        continue;
                    }
                    Dictionary <string, LootContainer> spawnGroupData;
                    if (!spawnGroupsData.TryGetValue(spawnGroupKey, out spawnGroupData))
                    {
                        spawnGroupsData[spawnGroupKey] = spawnGroupData = new Dictionary <string, LootContainer>();
                    }
                    spawnGroupData[container.PrefabName] = container;
                }
            }
            var containerData = new Dictionary <string, LootContainer>();
            var allPrefabs    = GameManifest.Current.pooledStrings.ToList().ConvertAll(p => p.str).Where(p => _findLoot.IsMatch(p)).ToArray();
            Array.Sort(allPrefabs, (a, b) => caseInsensitiveComparer.Compare(a, b));
            foreach (var strPrefab in allPrefabs)
            {
                var container = GameManager.server.FindPrefab(strPrefab)?.GetComponent <LootContainer>();
                if (container == null || container.lootDefinition == null && (container.LootSpawnSlots == null || container.LootSpawnSlots.Length <= 0))
                {
                    continue;
                }
                containerData[strPrefab] = container;
            }

            /*foreach (var container in containers)
             * {
             *  if (container.gameObject.activeInHierarchy || container.GetComponent<SpawnPointInstance>() != null) continue; //skip spawned & spawn groups
             *  containerData[container.PrefabName] = container;
             * }*/
            /*foreach (var workbench in workbenches)
             * {
             *  Puts("{0} {1} {2}", workbench.name, workbench.isActiveAndEnabled, workbench.gameObject.activeInHierarchy);
             * }*/
            try
            {
                Config.Settings = new JsonSerializerSettings
                {
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                    Converters            = new List <JsonConverter>
                    {
                        new ItemAmountRangedConverter(),
                        new LootSpawnEntryConverter(),
                        new LootContainerConverter(),
                        new LootSpawnConverter(),
                        new LootSpawnSlotConverter(),
                        new ItemModRevealConverter(),
                        new ItemModUnwrapConverter(),
                        new MurdererConverter(),
                        new WorkbenchConverter(),
                        new StringEnumConverter(),
                    }
                };
                Config.WriteObject(new ExportData
                {
                    Version        = Protocol.network,
                    VersionConfig  = VersionConfig,
                    WorldSize      = World.Size,
                    WorldSeed      = World.Seed,
                    LootContainers = containerData,
                    SpawnGroups    = spawnGroupsData.OrderBy(l => l.Key).Distinct().Distinct().ToDictionary(l => l.Key, l => l.Value),
                    ItemModReveals = itemModReveals.Distinct().Distinct().ToDictionary(l => l.name),
                    ItemModUnwraps = itemModUnwraps.Where(l => l.revealList != null).Distinct().Distinct().ToDictionary(l => l.name),
                    Murderers      = murderers.Where(l => !l.gameObject.activeInHierarchy).Distinct().Distinct().ToDictionary(l => l.name),
                    Workbenches    = workbenches.Where(l => !l.gameObject.activeInHierarchy).Distinct().Distinct().ToDictionary(l => l.name),
                    Categories     = lootSpawns.Distinct().Distinct().ToDictionary(l => l.name)
                });
            }
            catch (Exception e)
            {
                Puts("Config save failed: {0}{1}{2}", e.Message, Environment.NewLine, e.StackTrace);
                return(false);
            }
            Puts("Created new config");
            return(LoadConfig());
        }
예제 #12
0
 protected override void SaveConfig()
 {
     Config.WriteObject(_config);
 }
예제 #13
0
 ////////////////////////////////////////////////////////////////////////
 /// <summary>
 /// load the default config for this plugin
 /// </summary>
 /// ////////////////////////////////////////////////////////////////////////
 protected override void LoadDefaultConfig()
 {
     Config.WriteObject(ConfigOrDefault(null), true);
 }
예제 #14
0
 void SaveConfig() => Config.WriteObject(configData, true);
예제 #15
0
 protected override void LoadDefaultConfig()
 {
     config = new PluginConfig();
     Config.WriteObject(config, true);
 }