private void OnExportLocal() => SafeObtain((ref VehicleCityDataRuleXml x) =>
        {
            string targetFilename = null;
            switch (x.RuleCheckType)
            {
            case RuleCheckTypeVehicle.ASSET_NAME_OWNER:
                targetFilename = ACELoadedDataContainer.DEFAULT_XML_NAME_BUILDING_VEHICLES_GLOBAL;
                break;

            case RuleCheckTypeVehicle.ASSET_NAME_SELF:
                targetFilename = ACELoadedDataContainer.DEFAULT_XML_NAME_VEHICLE;
                break;
            }
            if (targetFilename != null)
            {
                FileUtils.EnsureFolderCreation(ACEController.FOLDER_PATH_GENERAL_CONFIG);
                string filename          = Path.Combine(ACEController.FOLDER_PATH_GENERAL_CONFIG, targetFilename);
                string currentDataSerial = GetRuleSerialized();
                VehicleAssetFolderRuleXml asAssetRule = XmlUtils.DefaultXmlDeserialize <VehicleAssetFolderRuleXml>(currentDataSerial);
                ACERulesetContainer <VehicleAssetFolderRuleXml> container = File.Exists(filename) ? XmlUtils.DefaultXmlDeserialize <ACERulesetContainer <VehicleAssetFolderRuleXml> >(File.ReadAllText(filename)) : new ACERulesetContainer <VehicleAssetFolderRuleXml>();
                container.m_dataArray = container.m_dataArray.Where(y => y.AssetName != asAssetRule.AssetName).Union(new VehicleAssetFolderRuleXml[] { asAssetRule }).ToArray();
                File.WriteAllText(filename, XmlUtils.DefaultXmlSerialize(container));
            }
        }
                                                   );
 private void RegisterBuildingVehicleConfig(VehicleAssetFolderRuleXml config, BuildingInfo info)
 {
     if (config.AssetName == null)
     {
         config.BuildingName = info.name;
         config.Source       = RuleSource.ASSET;
         m_colorConfigDataBuildingsVehiclesGlobal[info.name] = config;
     }
 }
 public void RegisterVehicleConfig(VehicleAssetFolderRuleXml config, VehicleInfo info)
 {
     if (config.AssetName?.Split(new char[] { '.' }, 2)?[1] == info.name?.Split(new char[] { '.' }, 2)?[1])
     {
         config.AssetName = info.name;
         config.Source    = RuleSource.ASSET;
         m_colorConfigDataVehicles[info.name] = config;
     }
 }
        private void OnExport() => SafeObtain((ref VehicleCityDataRuleXml x) =>
        {
            string targetAsset    = null;
            string targetFilename = null;
            switch (x.RuleCheckType)
            {
            case RuleCheckTypeVehicle.ASSET_NAME_OWNER:
                targetAsset    = (x.BuildingName);
                targetFilename = ACELoadedDataContainer.DEFAULT_XML_NAME_BUILDING_VEHICLES;
                break;

            case RuleCheckTypeVehicle.ASSET_NAME_SELF:
                targetAsset    = (x.AssetName);
                targetFilename = ACELoadedDataContainer.DEFAULT_XML_NAME_VEHICLE;
                break;
            }
            if (targetAsset != null)
            {
                FileUtils.DoInPrefabFolder(targetAsset,
                                           (folder) =>
                {
                    string targetDataSerial = GetRuleSerialized();
                    ACERulesetContainer <VehicleAssetFolderRuleXml> container;
                    if (File.Exists(Path.Combine(folder, targetFilename)))
                    {
                        try
                        {
                            container = XmlUtils.DefaultXmlDeserialize <ACERulesetContainer <VehicleAssetFolderRuleXml> >(File.ReadAllText(Path.Combine(folder, targetFilename)));
                        }
                        catch
                        {
                            container = new ACERulesetContainer <VehicleAssetFolderRuleXml>();
                        }
                    }
                    else
                    {
                        container = new ACERulesetContainer <VehicleAssetFolderRuleXml>();
                    }

                    VehicleAssetFolderRuleXml asAssetRule = XmlUtils.DefaultXmlDeserialize <VehicleAssetFolderRuleXml>(targetDataSerial);
                    container.m_dataArray = container.m_dataArray.Where(x => x.AssetName != asAssetRule.AssetName).Union(new VehicleAssetFolderRuleXml[] { asAssetRule }).ToArray();
                    string targetData     = XmlUtils.DefaultXmlSerialize(container);
                    File.WriteAllText(Path.Combine(folder, targetFilename), targetData);
                });
            }
        });