using System; using System.Collections.Generic; using Continentis.MainGame; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using Continentis.MainGame.Equipment; using Continentis.MainGame.Rules; using Continentis.Mods; using I2.Loc; using SLSFramework.General; using UMod; using UnityEngine; using UnityEngine.UI; namespace SLSFramework.UModAssistance { public partial class ModBrowser : MonoBehaviour { // Public public bool persistent = true; public Button loadButton; public RectTransform modButtonContainer; public GameObject modLoadTabPrefab; public List modTabs = new List(); public List selectedMods = new List(); private void Awake() { #if UNITY_EDITOR Mod.DefaultDirectory = new ModDirectory(Application.dataPath + "/ExportedMods"); #else Mod.DefaultDirectory = new ModDirectory(Application.dataPath + "/Mods"); #endif loadButton.onClick.AddListener(OnLoadClicked); GenerateUIList(); } } public partial class ModBrowser { private void OnLoadClicked() { GetAllSelectedMods(); foreach (IModInfo mod in selectedMods) { ModHost host = ModManager.LoadMod(mod); ModManager.RegisterTypesFromMod(host, typeof(CharacterBase)); ModManager.RegisterTypesFromMod(host, typeof(CardLogicBase)); ModManager.RegisterTypesFromMod(host, typeof(EquipmentBase)); ModManager.RegisterTypesFromMod(host,typeof(CardCombatBuffBase)); ModManager.RegisterTypesFromMod(host,typeof(CharacterCombatBuffBase)); ModManager.RegisterTypesFromMod(host, typeof(RulesCollectionBase)); string manifestName = host.CurrentMod.NameInfo.ModName + "_Manifest"; ModManifest manifest = host.Assets.Load(manifestName); manifest.SaveToDatabase(host); List localizationFiles = manifest.localizationFiles; foreach (TextAsset localizationFile in localizationFiles) { LanguageSourceData sourceData = new LanguageSourceData(); sourceData.Import_CSV(string.Empty, localizationFile.text, eSpreadsheetUpdateMode.Merge, ','); LocalizationManager.AddSource(sourceData); } } LocalizationManager.LocalizeAll(); } private void GenerateUIList() { // Destroy all cells modButtonContainer.DestroyAllChildren(); // Create new cells foreach (IModInfo info in Mod.DefaultDirectory.GetMods())// ModDirectory.GetMods()) { CreateUICell(info, modButtonContainer); } } private void CreateUICell(IModInfo mod, RectTransform container) { ModLoadTab modTab = Instantiate(modLoadTabPrefab, container).GetComponent(); modTab.Initialize(mod); modTabs.Add(modTab); } private void GetAllSelectedMods() { selectedMods = modTabs.FindAll(t => t.isSelected).ConvertAll(t => t.modInfo); } } }