备份CatanBuilding瘦身独立工程
This commit is contained in:
117
Assets/Scripts/UI/Appearance/AppearanceRodChangePanel.cs
Normal file
117
Assets/Scripts/UI/Appearance/AppearanceRodChangePanel.cs
Normal file
@@ -0,0 +1,117 @@
|
||||
using asap.core;
|
||||
using cfg;
|
||||
using GameCore;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class AppearanceRodChangePanel : MonoBehaviour
|
||||
{
|
||||
Button btn_back;
|
||||
Button mask;
|
||||
Button btn_confrim;
|
||||
GameObject item;
|
||||
Transform Content;
|
||||
List<SkinRodItemData> rodItemDatas = new List<SkinRodItemData>();
|
||||
private SkinRodItem currentRodItem;
|
||||
public Action<int> OnChangeRod;
|
||||
public int rodId;
|
||||
private void Awake()
|
||||
{
|
||||
mask = transform.Find("root/mask").GetComponent<Button>();
|
||||
btn_back = transform.Find("root/btn_back/btn_green").GetComponent<Button>();
|
||||
btn_confrim = transform.Find("root/btn_confrim/btn_green").GetComponent<Button>();
|
||||
Content = transform.Find("root/ScrollView/Viewport/Content");
|
||||
item = transform.Find("root/ScrollView/Viewport/Content/item").gameObject;
|
||||
item.SetActive(false);
|
||||
}
|
||||
void Start()
|
||||
{
|
||||
InitRodList();
|
||||
btn_back.onClick.AddListener(() =>
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
});
|
||||
mask.onClick.AddListener(() =>
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
});
|
||||
btn_confrim.onClick.AddListener(OnClickConfrim);
|
||||
}
|
||||
void OnClickConfrim()
|
||||
{
|
||||
OnChangeRod?.Invoke(currentRodItem.data.id);
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
void InitRodList()
|
||||
{
|
||||
var _tables = GContext.container.Resolve<Tables>();
|
||||
var dataList = _tables.TbRodData.DataList;
|
||||
int count = dataList.Count;
|
||||
RodData _rodData;
|
||||
PlayerFishData playerFishData = GContext.container.Resolve<PlayerFishData>();
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
_rodData = dataList[i];
|
||||
bool isLock = playerFishData.NotRod(dataList[i].ID);
|
||||
int level = playerFishData.GetRodLevel(_rodData.ID);
|
||||
int star = playerFishData.GetRodPiece(_rodData.ID);
|
||||
SkinRodItemData rodItemData = new SkinRodItemData()
|
||||
{
|
||||
id = _rodData.ID,
|
||||
quality = _rodData.Quality,
|
||||
isLock = isLock,
|
||||
level = level + 1,
|
||||
start = star,
|
||||
isEquiped = dataList[i].ID == rodId,
|
||||
ascendID = _rodData.AscendID,
|
||||
};
|
||||
int skindID = playerFishData.GetRodSkin(_rodData.ID);
|
||||
if (skindID > 0)
|
||||
{
|
||||
var fishRodSkinData = _tables.TbRodSkinData.GetOrDefault(skindID);
|
||||
if (fishRodSkinData != null)
|
||||
{
|
||||
rodItemData.avatar = fishRodSkinData.Avatar;
|
||||
}
|
||||
}
|
||||
rodItemDatas.Add(rodItemData);
|
||||
}
|
||||
rodItemDatas.Sort(Sort);
|
||||
//bool isCheck = true;
|
||||
for (int i = 0; i < rodItemDatas.Count; i++)
|
||||
{
|
||||
GameObject go = Instantiate(item, Content);
|
||||
go.SetActive(true);
|
||||
SkinRodItem rodItem = go.AddComponent<SkinRodItem>();
|
||||
rodItem.Init(rodItemDatas[i]);
|
||||
rodItem.onClick = OnRodItemClick;
|
||||
if (rodItemDatas[i].isEquiped)
|
||||
{
|
||||
currentRodItem = rodItem;
|
||||
rodItem.SetSelected(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
int Sort(SkinRodItemData a, SkinRodItemData b)
|
||||
{
|
||||
int levelA = a.isLock ? -1 : a.level;
|
||||
int levelB = b.isLock ? -1 : b.level;
|
||||
if (levelA == levelB)
|
||||
{
|
||||
return b.quality.CompareTo(a.quality);
|
||||
}
|
||||
return levelB.CompareTo(levelA);
|
||||
}
|
||||
void OnRodItemClick(SkinRodItem duelRodItem)
|
||||
{
|
||||
if (currentRodItem != null)
|
||||
{
|
||||
currentRodItem.SetSelected(false);
|
||||
}
|
||||
currentRodItem = duelRodItem;
|
||||
currentRodItem.SetSelected(true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user