96 lines
3.4 KiB
C#
96 lines
3.4 KiB
C#
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<ModLoadTab> modTabs = new List<ModLoadTab>();
|
|
public List<IModInfo> selectedMods = new List<IModInfo>();
|
|
|
|
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(RulesCollectionBase));
|
|
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));
|
|
|
|
|
|
string manifestName = host.CurrentMod.NameInfo.ModName + "_Manifest";
|
|
ModManifest manifest = host.Assets.Load<ModManifest>(manifestName);
|
|
manifest.SaveToDatabase(host);
|
|
List<TextAsset> 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<ModLoadTab>();
|
|
modTab.Initialize(mod);
|
|
modTabs.Add(modTab);
|
|
}
|
|
|
|
private void GetAllSelectedMods()
|
|
{
|
|
selectedMods = modTabs.FindAll(t => t.isSelected).ConvertAll(t => t.modInfo);
|
|
}
|
|
}
|
|
} |