private void OnModAdded(GameMod mod) { ModListItemData modListItemData = new ModListItemData(); UICommonList.CommonListItem newItem = modList.AddItem(); newItem.id = mod.Uid; newItem.itemObject.name = mod.PackageName; newItem.data = modListItemData; modListItemData.Mod = mod; modListItemData.Title = newItem.itemObject.transform.Find("Title").GetComponent <Text>(); modListItemData.Text = newItem.itemObject.transform.Find("Text").GetComponent <Text>(); modListItemData.TextFailed = newItem.itemObject.transform.Find("TextFailed").GetComponent <Text>(); modListItemData.TextStatus = newItem.itemObject.transform.Find("TextStatus").GetComponent <Text>(); modListItemData.Unload = newItem.itemObject.transform.Find("Unload").GetComponent <Button>(); modListItemData.Image = newItem.itemObject.transform.Find("Image").GetComponent <Image>(); modListItemData.EnableStatus = newItem.itemObject.transform.Find("EnableStatus").GetComponent <Toggle>(); modListItemData.ImageSmall = newItem.itemObject.transform.Find("ImageSmall").GetComponent <Image>(); modListItemData.EnableStatusText = newItem.itemObject.transform.Find("EnableStatus/Label").GetComponent <Text>(); //Events modListItemData.Unload.onClick.AddListener(() => OnUnloadModClicked(mod)); EventTriggerListener.Get(modListItemData.EnableStatus.gameObject).onClick = (b) => OnEnableStatusClicked(mod, newItem); UpdateModListItemInfos(newItem, mod); UpdateModListCountInfos(); }
private void OnModRemoved(GameMod mod) { UICommonList.CommonListItem oldItem = modList.GetItemById(mod.Uid); if (oldItem != null) { modList.RemoveItem(oldItem); } oldItem.data = null; UpdateModListCountInfos(); }
private void OnEnableStatusClicked(GameMod mod, UICommonList.CommonListItem newItem) { modEnableStatusListSaved = false; if (((ModListItemData)newItem.data).EnableStatus.isOn) { modEnableStatusList.Add(mod.PackageName); } else { modEnableStatusList.Remove(mod.PackageName); } }
private void UpdateModListItemInfos(UICommonList.CommonListItem newItem, GameMod mod) { ModListItemData modListItemData = (ModListItemData)newItem.data; modListItemData.EnableStatus.isOn = IsModEnabled(mod); modListItemData.Text.text = mod.ModInfo.Introduction + "\n作者:" + mod.ModInfo.Author + " 版本:" + mod.ModInfo.Version; modListItemData.Title.text = mod.ModInfo.Name + "\n( " + mod.PackageName + "/" + mod.ModType + ")"; modListItemData.Image.sprite = mod.ModLogo == null ? mod_icon_default : mod.ModLogo; if (mod.IsModInitByGameinit) { modListItemData.EnableStatus.isOn = true; modListItemData.EnableStatus.interactable = false; modListItemData.EnableStatusText.text = "基础模块"; } switch (mod.LoadStatus) { case GameModStatus.InitializeFailed: modListItemData.Image.sprite = mod_icon_failed; modListItemData.TextFailed.gameObject.SetActive(true); modListItemData.TextFailed.text = mod.LoadFriendlyErrorExplain; modListItemData.TextStatus.text = "初始化失败"; modListItemData.ImageSmall.sprite = mod_icon_failed; modListItemData.ImageSmall.gameObject.SetActive(true); break; case GameModStatus.BadMod: modListItemData.ImageSmall.sprite = mod_icon_bad; modListItemData.ImageSmall.gameObject.SetActive(true); modListItemData.TextFailed.gameObject.SetActive(true); modListItemData.EnableStatus.gameObject.SetActive(false); modListItemData.TextStatus.text = ""; modListItemData.TextFailed.text = "此模组与当前游戏版本不兼容"; break; case GameModStatus.InitializeSuccess: modListItemData.TextFailed.gameObject.SetActive(false); modListItemData.ImageSmall.sprite = null; modListItemData.TextStatus.text = "加载成功,已初始化"; if (mod.IsModInitByGameinit) { modListItemData.ImageSmall.gameObject.SetActive(true); modListItemData.ImageSmall.sprite = mod_icon_default; } else { modListItemData.ImageSmall.gameObject.SetActive(false); } break; case GameModStatus.NotInitialize: modListItemData.ImageSmall.sprite = mod_icon_not_load; modListItemData.ImageSmall.gameObject.SetActive(true); modListItemData.TextStatus.text = "模组还未初始化"; modListItemData.TextFailed.gameObject.SetActive(false); break; case GameModStatus.Loading: modListItemData.ImageSmall.sprite = mod_icon_not_load; modListItemData.ImageSmall.gameObject.SetActive(true); modListItemData.TextStatus.text = "模组正在加载中"; modListItemData.TextFailed.gameObject.SetActive(false); break; } UpdateModListCountInfos(); }