using asap.core; using cfg; using GameCore; using System; using TMPro; using UnityEngine; using UnityEngine.UI; public class GradeMapItem : MonoBehaviour { public Button button; [SerializeField] GameObject go_lock, pts, redpoints; [SerializeField] Image img_bg; [SerializeField] TMP_Text txt_levelRequired, txt_mapName, text_pts; public MapData mapData; Action _action; int allPTS; bool isLock; private void Start() { button.onClick.AddListener(OnClick); } public void SetData(MapData mapData, int requiredLevel, Action action) { _action = action; this.mapData = mapData; gameObject.SetActive(true); txt_mapName.text = LocalizationMgr.GetText(mapData.Name_l10n_key); allPTS = GContext.container.Resolve().GetAllPTSByMap(mapData.ID); GContext.container.Resolve().SetImageSprite(img_bg, mapData.Bg); isLock = GContext.container.Resolve().lv < requiredLevel; if (isLock) { redpoints.SetActive(false); go_lock.SetActive(true); pts.SetActive(false); txt_levelRequired.text = requiredLevel.ToString(); } else { text_pts.text = allPTS.ToString(); go_lock.SetActive(false); pts.SetActive(true); Refresh(); } } //刷新 public void Refresh() { int progress = GContext.container.Resolve().GetMapProgress(mapData.ID); var pointsRequire = mapData.PointsRequire; if (progress >= pointsRequire.Count) { redpoints.SetActive(false); } else { redpoints.SetActive(allPTS >= pointsRequire[progress]); } } void OnClick() { if (isLock) { var mapdata = GContext.container.Resolve().TbMapData.GetOrDefault(mapData.ID - 1); if (mapdata != null) { ToastPanel.Show(LocalizationMgr.GetFormatTextValue("UI_ToastPanel_4", mapdata.LevelRequired)); } } else { _action?.Invoke(this); } } }