先修复一下,错误的场景 删除不必要的钓场资产 修复into场景 update:更新meta文件,修复报错 update:修复资源 修复第一章节建造 修复建造第三章 update:删除多余内容 update:更新README.md update:还原图标 update:更新README update:更新配置
275 lines
11 KiB
C#
275 lines
11 KiB
C#
using asap.core;
|
|
using cfg;
|
|
using GameCore;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
/*
|
|
UI_FishingRodHonorlevelPanel_1 精英荣耀等级 Elite Honor Level
|
|
UI_FishingRodHonorlevelPanel_2 专家荣耀等级 Expert Honor Level
|
|
UI_FishingRodHonorlevelPanel_3 大师荣耀等级 Master Honor Level
|
|
UI_FishingRodHonorlevelPanel_4 精英荣耀属性 Elite Honor Attributes
|
|
UI_FishingRodHonorlevelPanel_5 专家荣耀属性 Expert Honor Attributes
|
|
UI_FishingRodHonorlevelPanel_6 大师荣耀属性 Master Honor Attributes
|
|
UI_FishingRodHonorlevelPanel_7 对所有精英鱼竿生效 Applies to all Elite Rods
|
|
UI_FishingRodHonorlevelPanel_8 对所有专家鱼竿生效 Applies to all Expert Rods
|
|
UI_FishingRodHonorlevelPanel_9 对所有大师鱼竿生效 Applies to all Master Rods
|
|
*/
|
|
public class FishingRodHonorlevelPanel : MonoBehaviour
|
|
{
|
|
RodItem rod;
|
|
TMP_Text text_level;
|
|
Image honor;
|
|
RodAttributeInfo rodAttribute;
|
|
Button btn_levelup;
|
|
Button btn_levelup_gray;
|
|
Button btn_questionmark;
|
|
GameObject icon_cost_2;
|
|
TMP_Text icon_cost_1_num;
|
|
TMP_Text icon_cost_2_num;
|
|
TMP_Text icon_cost_3_num;
|
|
Image icon_ticket_2;
|
|
Image icon_ticket_3;
|
|
|
|
TMP_Text text_title;
|
|
TMP_Text text_info_title;
|
|
TMP_Text text_info;
|
|
|
|
GameObject tips_honorrod;
|
|
GameObject item_rod;
|
|
Button btn_close;
|
|
FishingRodUpSystem upSystem;
|
|
PlayerFishData playerFishData;
|
|
Tables _tables;
|
|
RodItemData data;
|
|
RodAscend curRodAscend;
|
|
RodRodLevelPeak rodLevelPeak;
|
|
GameObject fx_rodpanel_honorlevel_upgrade;
|
|
RawImage rawImageRod;
|
|
IUIService uIService;
|
|
string toastKey = "UI_ToastPanel_66";
|
|
private void Awake()
|
|
{
|
|
uIService = GContext.container.Resolve<IUIService>();
|
|
rawImageRod = transform.Find("root/RawImageRod").GetComponent<RawImage>();
|
|
|
|
_tables = GContext.container.Resolve<Tables>();
|
|
playerFishData = GContext.container.Resolve<PlayerFishData>();
|
|
upSystem = GContext.container.Resolve<FishingRodUpSystem>();
|
|
text_level = transform.Find("root/honor/text_level").GetComponent<TMP_Text>();
|
|
honor = transform.Find("root/honor").GetComponent<Image>();
|
|
rodAttribute = transform.Find("root/info/attribute1").GetComponent<RodAttributeInfo>();
|
|
btn_levelup = transform.Find("root/btn_levelup/btn_green").GetComponent<Button>();
|
|
btn_levelup_gray = transform.Find("root/btn_levelup_gray/btn_green").GetComponent<Button>();
|
|
btn_questionmark = transform.Find("root/info/text_info/btn_questionmark").GetComponent<Button>();
|
|
rod = transform.Find("root/rod").GetComponent<RodItem>();
|
|
icon_cost_1_num = transform.Find("root/cost/icon_cost_1/text_num").GetComponent<TMP_Text>();
|
|
icon_cost_2_num = transform.Find("root/cost/icon_cost_2/text_num").GetComponent<TMP_Text>();
|
|
icon_cost_2 = transform.Find("root/cost/icon_cost_2").gameObject;
|
|
icon_ticket_2 = transform.Find("root/cost/icon_cost_2/icon_ticket").GetComponent<Image>();
|
|
icon_cost_3_num = transform.Find("root/cost/icon_cost_3/text_num").GetComponent<TMP_Text>();
|
|
icon_ticket_3 = transform.Find("root/cost/icon_cost_3/icon_ticket").GetComponent<Image>();
|
|
tips_honorrod = transform.Find("root/tips_honorrod").gameObject;
|
|
item_rod = transform.Find("root/tips_honorrod/item_rod").gameObject;
|
|
btn_close = transform.Find("bottom/btn_close").GetComponent<Button>();
|
|
item_rod.SetActive(false);
|
|
fx_rodpanel_honorlevel_upgrade = transform.Find("root/honor/fx_rodpanel_honorlevel_upgrade").gameObject;
|
|
text_title = transform.Find("top/title/text_title").GetComponent<TMP_Text>();
|
|
text_info_title = transform.Find("root/info/text_title").GetComponent<TMP_Text>();
|
|
text_info = transform.Find("root/info/text_info").GetComponent<TMP_Text>();
|
|
}
|
|
private void Start()
|
|
{
|
|
btn_close.onClick.AddListener(OnClose);
|
|
btn_levelup.onClick.AddListener(OnClickUp);
|
|
btn_levelup_gray.onClick.AddListener(OnClickUpGray);
|
|
btn_questionmark.onClick.AddListener(ShowHonorRod);
|
|
data = upSystem.GetCurrentRodItemData();
|
|
rod.Init(data);
|
|
rawImageRod.gameObject.SetActive(true);
|
|
rawImageRod.texture = upSystem.bagPanel.rt;
|
|
RodData rodData = data.config;
|
|
rodLevelPeak = _tables.TbRodRodLevelPeak.GetOrDefault(rodData.Quality);
|
|
var dataMap = _tables.TbRodBasicStats.DataMap;
|
|
|
|
curRodAscend = _tables.TbRodAscend.GetOrDefault(rodData.AscendID);
|
|
SetEnhance();
|
|
|
|
Item item = _tables.TbItem.GetOrDefault(curRodAscend.FragmentID);
|
|
icon_ticket_3.sprite = uIService.GetSprite(item.Icon);
|
|
RodFragmentExchange rodFragmentExchange = _tables.TbRodFragmentExchange.GetOrDefault(data.config.Quality);
|
|
if (rodFragmentExchange != null)
|
|
{
|
|
item = _tables.TbItem.GetOrDefault(rodFragmentExchange.GeneralFragmentID);
|
|
icon_ticket_2.sprite = uIService.GetSprite(item.Icon);
|
|
}
|
|
text_title.text = LocalizationMgr.GetText($"UI_FishingRodHonorlevelPanel_{rodData.Quality - 1}");
|
|
text_info_title.text = LocalizationMgr.GetText($"UI_FishingRodHonorlevelPanel_{rodData.Quality + 2}");
|
|
text_info.text = LocalizationMgr.GetText($"UI_FishingRodHonorlevelPanel_{rodData.Quality + 5}");
|
|
honor.sprite = uIService.GetSprite(rodLevelPeak.Icon);
|
|
InitHonorRod();
|
|
}
|
|
void InitHonorRod()
|
|
{
|
|
var idList = upSystem.HasRodID(data.config.Quality);
|
|
var rodItemDatas = new List<RodItemData>();
|
|
RodData _rodData;
|
|
RodAscend _rodAscend;
|
|
for (int i = 0; i < idList.Count; i++)
|
|
{
|
|
_rodData = _tables.TbRodData.DataMap[idList[i]];
|
|
bool isLock = playerFishData.NotRod(_rodData.ID);
|
|
_rodAscend = _tables.TbRodAscend.GetOrDefault(_rodData.AscendID);
|
|
|
|
int level = playerFishData.GetRodLevel(_rodData.ID);
|
|
int star = playerFishData.GetRodPiece(_rodData.ID);
|
|
bool isMax = star >= _rodAscend.MaxAscent;
|
|
RodItemData rodItemData = new RodItemData()
|
|
{
|
|
config = _rodData,
|
|
isLock = isLock,
|
|
level = level + 1,
|
|
star = star,
|
|
isMax = isMax,
|
|
};
|
|
int skindID = playerFishData.GetRodSkin(_rodData.ID);
|
|
rodItemData.skin = _tables.TbRodSkinData.GetOrDefault(skindID);
|
|
rodItemData.SetRodPower();
|
|
rodItemDatas.Add(rodItemData);
|
|
}
|
|
rodItemDatas.Sort(RodItemData.Sort);
|
|
//弹出界面
|
|
for (int i = 0; i < rodItemDatas.Count; i++)
|
|
{
|
|
GameObject go = Instantiate(item_rod, tips_honorrod.transform);
|
|
go.SetActive(true);
|
|
go.GetComponent<RodItem>().Init(rodItemDatas[i]);
|
|
}
|
|
}
|
|
void ShowHonorRod()
|
|
{
|
|
tips_honorrod.SetActive(!tips_honorrod.activeSelf);
|
|
}
|
|
void OnClickUpGray()
|
|
{
|
|
ToastPanel.Show(LocalizationMgr.GetText(toastKey));
|
|
}
|
|
void OnClickUp()
|
|
{
|
|
///判断 材料是否足够
|
|
playerFishData.HonorLevelUp(data.config);
|
|
SetEnhance();
|
|
fx_rodpanel_honorlevel_upgrade.SetActive(false);
|
|
fx_rodpanel_honorlevel_upgrade.SetActive(true);
|
|
}
|
|
void ShowCost()
|
|
{
|
|
RodData rodData = data.config;
|
|
if (rodLevelPeak == null)
|
|
{
|
|
Debug.LogError($"[FishingRodHonorlevelPanel]OnClickUpGray: No RodRodLevelPeak data found for Quality {data.config.Quality}");
|
|
return;
|
|
}
|
|
int currentHonorLevel = playerFishData.GetHonorLevel(rodData.Quality);
|
|
if (currentHonorLevel >= rodLevelPeak.ItemConsume.Count)
|
|
{
|
|
currentHonorLevel = rodLevelPeak.ItemConsume.Count - 1;
|
|
}
|
|
int requiredItems = rodLevelPeak.ItemConsume[currentHonorLevel];
|
|
int fragmentItems = rodLevelPeak.FragmentConsume[currentHonorLevel];
|
|
bool isUp = false;
|
|
double consumeCount = GContext.container.Resolve<PlayerData>().pearl;
|
|
if (consumeCount < requiredItems)
|
|
{
|
|
toastKey = "UI_ToastPanel_12";
|
|
icon_cost_1_num.text = $"<color=red>{consumeCount}</color>/{requiredItems}";
|
|
}
|
|
else
|
|
{
|
|
toastKey = "UI_ToastPanel_66";
|
|
isUp = true;
|
|
icon_cost_1_num.text = $"<color=green>{consumeCount}</color>/{requiredItems}";
|
|
}
|
|
|
|
|
|
int fragment = GContext.container.Resolve<PlayerFishData>().GetRodPiece(curRodAscend.FragmentID);
|
|
bool fraUp = false;
|
|
|
|
if (fragment < fragmentItems)
|
|
{
|
|
icon_cost_2.SetActive(true);
|
|
fragmentItems -= fragment;
|
|
fragmentItems = ShowCost(fragmentItems);
|
|
if (fragmentItems <= 0)
|
|
{
|
|
fraUp = true;
|
|
icon_cost_3_num.text = $"<color=green>{fragment}</color>/{fragment}";
|
|
}
|
|
else
|
|
{
|
|
icon_cost_3_num.text = $"<color=red>{fragment}</color>/{fragment + fragmentItems}";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
icon_cost_2.SetActive(false);
|
|
icon_cost_3_num.text = $"<color=green>{fragment}</color>/{fragmentItems}";
|
|
fraUp = true;
|
|
}
|
|
|
|
isUp &= fraUp;
|
|
btn_levelup.gameObject.SetActive(isUp);
|
|
btn_levelup_gray.gameObject.SetActive(!isUp);
|
|
}
|
|
int ShowCost(int rquiredFragments)
|
|
{
|
|
RodFragmentExchange rodFragmentExchange = _tables.TbRodFragmentExchange.GetOrDefault(data.config.Quality);
|
|
int fragment = GContext.container.Resolve<PlayerFishData>().GetRodPiece(rodFragmentExchange.GeneralFragmentID) / rodFragmentExchange.ExchangeRate;
|
|
if (fragment == 0)
|
|
{
|
|
icon_cost_2.SetActive(false);
|
|
return rquiredFragments;
|
|
}
|
|
int count;
|
|
if (fragment >= rquiredFragments)
|
|
{
|
|
count = rquiredFragments * rodFragmentExchange.ExchangeRate;
|
|
}
|
|
else
|
|
{
|
|
count = fragment * rodFragmentExchange.ExchangeRate;
|
|
}
|
|
icon_cost_2_num.text = $"<color=green>{fragment * rodFragmentExchange.ExchangeRate}</color>/{count}";
|
|
return rquiredFragments - fragment;
|
|
}
|
|
void SetEnhance()
|
|
{
|
|
ShowCost();
|
|
RodData rodData = data.config;
|
|
text_level.text = LocalizationMgr.GetFormatTextValue("UI_PlayerGradePopupPanel_1", playerFishData.GetHonorLevel(rodData.Quality));
|
|
var values = playerFishData.GetHonorLevelAttribute(rodData.Quality);
|
|
var values2 = playerFishData.GetHonorLevelAttribute(rodData.Quality, starAdd: 1);
|
|
|
|
var curValue = values;
|
|
rodAttribute.text_num.text = curValue.ToString();
|
|
var nextValue = values2;
|
|
if (curValue != nextValue)
|
|
{
|
|
rodAttribute.text_after.text = nextValue.ToString();
|
|
rodAttribute.text_after.gameObject.SetActive(true);
|
|
rodAttribute.arrow.gameObject.SetActive(true);
|
|
}
|
|
else
|
|
{
|
|
rodAttribute.text_after.gameObject.SetActive(false);
|
|
rodAttribute.arrow.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
private async void OnClose()
|
|
{
|
|
await UIManager.Instance.ShowUI(UITypes.FishingRodPanel);
|
|
UIManager.Instance.DestroyUI(gameObject.name);
|
|
}
|
|
}
|