using System.Collections; using System.Collections.Generic; using System.Linq; using Cute; using UnityEngine; using Wizard.RoomMatch; namespace Wizard; public class GatheringRuleView : MonoBehaviour { [SerializeField] private UILabel _baseType; [SerializeField] private UILabel _baseRule; [SerializeField] private UILabel _memberCount; [SerializeField] private UILabel _ownerName; [SerializeField] private UILabel _ownerIsEntryBattle; [SerializeField] private UILabel _ownerWatchBattle; [SerializeField] private UILabel _timeTitle; [SerializeField] private UILabel _startTime; [SerializeField] private UILabel _endTime; [SerializeField] private UILabel _battlePeriodLabel; [SerializeField] private UILabel _battlePeriodLabelSingleLine; [SerializeField] private UILabel _isDeckEntryLabel; [SerializeField] private GameObject _isDeckEntryRoot; [SerializeField] private UILabel _id; [SerializeField] private UserPlateBase _ownerPlate; private List _loadResourcePath = new List(); public void SetGatheringInfo(GatheringInfo info) { SystemText systemText = Data.SystemText; SetRule(info.Rule, info.CurrentMemberCount); if (_baseType != null) { _baseType.text = GatheringUtility.GetGatheringTypeString(info); } if (_id != null) { _id.text = info.Id; } if (_ownerName != null) { _ownerName.text = info.OwnerInfo.Name; } if (_timeTitle != null) { _timeTitle.text = (info.Rule.IsTournament ? systemText.Get("Gathering_0009") : systemText.Get("Gathering_0012")); } if (_startTime != null) { _startTime.text = info.BattleStartTime; } if (_endTime != null) { _endTime.text = info.FinishTime; } if (_battlePeriodLabel != null && !info.Rule.IsTournament) { _battlePeriodLabel.text = systemText.Get("Gathering_Information_0005", info.BattleStartTime, info.FinishTime); } if (_battlePeriodLabelSingleLine != null && !info.Rule.IsTournament) { _battlePeriodLabelSingleLine.text = systemText.Get("Gathering_Information_0014", info.BattleStartTime, info.FinishTime); } if (_ownerWatchBattle != null) { switch (info.Rule.WatchSetting) { case GatheringRule.eWatchSetting.ALL_MEMBER: _ownerWatchBattle.text = systemText.Get("Gathering_0016"); break; case GatheringRule.eWatchSetting.OWNER_ONLY: _ownerWatchBattle.text = systemText.Get("Gathering_0015"); break; case GatheringRule.eWatchSetting.NONE: _ownerWatchBattle.text = systemText.Get("Gathering_0017"); break; } } List loadResourceList = info.OwnerInfo.GetUserAssetPathList().Except(_loadResourcePath).ToList(); UIManager.GetInstance().StartCoroutine(LoadResource(info, loadResourceList)); } private void OnDestroy() { Toolbox.ResourcesManager.RemoveAssetGroup(_loadResourcePath); _loadResourcePath.Clear(); } private IEnumerator LoadResource(GatheringInfo info, List loadResourceList) { yield return UIManager.GetInstance().StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(loadResourceList, delegate { _loadResourcePath.AddRange(loadResourceList); })); if (_ownerPlate != null) { _ownerPlate.InitializeSimplePlate(info.OwnerInfo); } } private void SetRule(GatheringRule rule, int memberCount) { SystemText systemText = Data.SystemText; _baseRule.text = RoomRuleSetting.GetWinTypeString(rule.BattleParameterInstance.Rule) + " " + FormatBehaviorManager.GetFormatName(rule.BattleParameterInstance.DeckFormat); _memberCount.text = systemText.Get("Gathering_Information_0003", memberCount.ToString(), rule.MaxMember.ToString()); if (_ownerIsEntryBattle != null) { _ownerIsEntryBattle.text = (rule.IsOwnerEntryBattle ? systemText.Get("Gathering_Information_0008") : systemText.Get("Gathering_Information_0009")); } if (_isDeckEntryRoot != null) { _isDeckEntryRoot.SetActive(!rule.IsTournament); } if (_isDeckEntryLabel != null) { _isDeckEntryLabel.text = (rule.IsEntryDeckOnly ? systemText.Get("Gathering_Information_0022") : systemText.Get("Gathering_Information_0023")); } } }