NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_VehicleChooseController.cs

203 lines
6.0 KiB
C#

using PhxhSDK;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using Button = UnityEngine.UI.Button;
using Image = UnityEngine.UI.Image;
public class UI_VehicleChooseController : UIWindow
{
//UI GameObj
///Auto Gen Start///
public Image Image_BG;
public Button Button_Back;
public TMP_Text Text_Back;
public Button Button_Home;
public Image Image_HeadPic;
public Image Image_BlackDown;
public Image Image_Job;
public TMP_Text Text_Lv;
public TMP_Text Text_PropertyValue;
public TMP_Text Text_Name;
public Image Image_LevelBG;
public Button Button_Level;
public TMP_Text Text_Level;
public Button Button_Team;
public TMP_Text Text_Team;
public Button Button_AllTerrian;
public TMP_Text Text_AllTerrian;
public Button Button_AllType;
public TMP_Text Text_AllType;
private GameObject mCurrentScrollViewContentObj = null;
List<VehicleCultivateData> mCurVehicles = new List<VehicleCultivateData>();
List<VehicleCultivateData> mShowList = new List<VehicleCultivateData>();
Dictionary<GameObject, VehicleCultivateData> mUIHeadGoDic = new Dictionary<GameObject, VehicleCultivateData>();
Framework.PhxhScrollView _mCurrentScrollView = null;
///Auto Gen End///
// Use this for initialization
public override void OnAwake()
{
//bind UI GameObj
UI_VehicleChooseBinder.GetComponents(this);
BindButton(Button_Back, OnBackClick);
BindButton(Button_Home, OnClickHome);
mCurrentScrollViewContentObj = FindObj("Image_BG/UI_Vehicle/ScrollView/Viewport/Content");
_mCurrentScrollView = GetComponent<Framework.PhxhScrollView>("Image_BG/UI_Vehicle/ScrollView");
mCurrentScrollViewContentObj = FindObj("Image_BG/UI_Vehicle/ScrollView/Viewport/Content");
}
private void OnClickHome()
{
UIManager.Instance.CloseAllNormalExcept(UINameConst.UI_MainPanel);
}
private void OnBackClick()
{
CloseWindow();
}
//invoke when open window
protected override void OnOpenWindow()
{
GetStorageData();
PreLoadAllVehicle();
RegisterEvent();
GetSelectedList();
CreateScrollView();
}
private void GetSelectedList()
{
mShowList = mCurVehicles;
}
private void CreateScrollView()
{
if (!ShowIfNull())
{
SetScrollViewAll();
}
}
private bool ShowIfNull()
{
if (mShowList.Count == 0)
{
FindObj("Nothing").SetActive(true);
return true;
}
else
{
FindObj("Nothing").SetActive(false);
return false;
}
}
private void SetScrollViewAll()
{
if (null != mCurrentScrollViewContentObj)
{
Utils.CommonUtils.DestoryAllChildGameObject(mCurrentScrollViewContentObj);
}
_mCurrentScrollView.SetUpdateFunc(RefreshItem);
_mCurrentScrollView.SetItemCountFunc(GetCountFunc);
_mCurrentScrollView.UpdateData(false);
_mCurrentScrollView.SetButton(SetScrollviewItemButton);
}
private void SetScrollviewItemButton(GameObject obj)
{
for (int i = 0; i < 4; i++)
{
GameObject singleObj = Utils.CommonUtils.GetGameObject(obj, (i + 1).ToString());
if (singleObj != null)
{
ClearBind(singleObj);
BindButton<GameObject>(singleObj, On2DPicClick, singleObj);
}
}
}
public class VehicleCultivateParam
{
public List<VehicleCultivateData> showList;
public VehicleCultivateData info;
}
private async void On2DPicClick(GameObject go)
{
VehicleCultivateData info = mUIHeadGoDic[go];
VehicleCultivateParam cultivateStruct = new VehicleCultivateParam();
cultivateStruct.showList = mShowList;
cultivateStruct.info = info;
await UIManager.Instance.OpenWindow(UINameConst.UI_VehicleCultivate, cultivateStruct);
}
private int GetCountFunc()
{
return mShowList.Count;
}
private void RefreshItem(int index, RectTransform item)
{
item.gameObject.SetActive(true);
for (int i = 0; i < 4; i++)
{
GameObject singleItem = Utils.CommonUtils.GetGameObject(item.gameObject, (i + 1).ToString());
if (index * 4 + i < mShowList.Count)
{
singleItem.SetActive(true);
VehicleCultivateData tempDataInfo = mShowList[index * 6 + i];
RefreshSingleItem(singleItem, tempDataInfo);
mUIHeadGoDic[singleItem] = tempDataInfo;
}
else
{
singleItem.SetActive(false);
}
}
}
private void RefreshSingleItem(GameObject singleItem, VehicleCultivateData tempVehcile)
{
Utils.CommonUtils.GetComponent<TMP_Text>(singleItem, "Image_BlackDown/Text_Lv").text = tempVehcile.SumPowerLevel().ToString();
Utils.CommonUtils.GetComponent<TMP_Text>(singleItem, "Image_BlackDown/Text_Name").text = tempVehcile.Cfg.Name.ToString();
Image img = Utils.CommonUtils.GetComponent<Image>(singleItem, "Image_HeadPic");
string imgPath = Utils.CommonUtils.GetVehiclePicPath(tempVehcile.Cfg.ID);
if (imgPath != null)
{
AssetManager.Instance.LoadAssetOnCallBack<Sprite>(imgPath, spr =>
{
img.sprite = spr;
img.gameObject.SetActive(true);
});
}
}
private void RegisterEvent()
{
}
//invoke when reload window
protected override void OnReloadWindow(object data = null)
{
}
void GetStorageData()
{
mCurVehicles.Clear();
mCurVehicles.AddRange(VehicleCultivateDataManager.Instance.DataList);
}
private void PreLoadAllVehicle()
{
for (int i = 0; i < mCurVehicles.Count; i++)
{
string strPath = Utils.CommonUtils.GetVehiclePicPath(mCurVehicles[i].Cfg.ID);
AssetManager.Instance.PostPreload<Sprite>(strPath);
}
}
}