Files
MinFt/Client/Assets/Scripts/UI/Home/HomeBtnRank.cs
Liubing\LB 3d8d4d18f3 first commit
先修复一下,错误的场景

删除不必要的钓场资产

修复into场景

update:更新meta文件,修复报错

update:修复资源

修复第一章节建造

修复建造第三章

update:删除多余内容

update:更新README.md

update:还原图标

update:更新README

update:更新配置
2026-04-28 02:17:22 +08:00

378 lines
14 KiB
C#

using asap.core;
using cfg;
using DG.Tweening;
using game;
using GameCore;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class HomeBtnRank : MonoBehaviour
{
Animation reward;
RectTransform layout;
Transform layout_bar;
Transform layout_reward;
GameObject rank_bar;
GameObject rank_reward;
RewardItemNew rank_rewardItem;
FishingEventData _fishingEventData;
PlayerItemData playerItemData;
Tables tables;
int curCount;
List<Image> bars;
List<RewardItemNew> rewards;
float time = 0.3f;
float width = 190f;
private void Awake()
{
tables = GContext.container.Resolve<Tables>();
playerItemData = GContext.container.Resolve<PlayerItemData>();
_fishingEventData = GContext.container.Resolve<FishingEventData>();
reward = transform.Find("reward").GetComponent<Animation>();
layout = reward.transform.Find("bg_bar/ScrollView/Viewport/layout").GetComponent<RectTransform>();
layout_bar = reward.transform.Find("bg_bar/ScrollView/Viewport/layout/layout_bar");
layout_reward = reward.transform.Find("bg_bar/ScrollView/Viewport/layout/layout_reward");
rank_bar = layout_bar.Find("bar1").gameObject;
rank_bar.SetActive(false);
rank_reward = layout_reward.Find("reward1").gameObject;
rank_reward.SetActive(false);
width = rank_bar.GetComponent<RectTransform>().rect.width;
rank_rewardItem = reward.transform.Find("btn_reward/reward").GetComponent<RewardItemNew>();
}
public void Init(int curCount)
{
var rankInit = _fishingEventData.rankInit;
var TargetList = rankInit.TargetList;
bool isUp = _fishingEventData.preRankTarget != null;
if (!isUp && _fishingEventData.rankTarget.TokenRequiredB <= curCount)
{
return;
}
var maxCollectingTarget = tables.TbRankTargets.GetOrDefault(TargetList[^1]);
var itemData = playerItemData.GetItemDataOneLureInflation(_fishingEventData.RankTargetInflation, maxCollectingTarget.DropID);
if (itemData != null)
{
rank_rewardItem.SetData(itemData);
}
this.curCount = curCount;
reward.gameObject.SetActive(true);
if (isUp)
{
SetUpData();
}
else
{
StartCoroutine(SetData());
}
}
/// <summary>
/// 有升级
/// </summary>
/// <returns></returns>
void SetUpData()
{
bars = new List<Image>();
rewards = new List<RewardItemNew>();
//分析几种情况
int dataCount = _fishingEventData.preRankTarget.Count;
if (dataCount < 3)
{
StartCoroutine(SetData1());
}
else
{
StartCoroutine(SetData2());
}
}
IEnumerator SetData2()
{
int dataCount = _fishingEventData.preRankTarget.Count;
int endCount = _fishingEventData.GetCurRankTarget();
RankTargets rankTarget = _fishingEventData.rankTarget;
var TargetList = _fishingEventData.rankInit.TargetList;
for (int i = 0; i < dataCount; i++)
{
AddItem(_fishingEventData.preRankTarget[i]);
}
AddItem(rankTarget);
//rewards[^1].canvasGroup.alpha = 0;
//显示间隔
yield return new WaitForSeconds(0.5f);
int index = 1;
for (int i = 0; i < dataCount - 2; i += 2)
{
if (i > 0)
{
layout.DOAnchorPosX(-i * width, time);
yield return new WaitForSeconds(time);
rewards[i - 1].canvasGroup.alpha = 0;
rewards[i - 2].canvasGroup.alpha = 0;
}
for (int j = 0; j < 2; j++)
{
index = i + j;
bars[index].DOFillAmount(1, time);
yield return new WaitForSeconds(time);
rewards[index].SetReceived(true);
rewards[index].ani.Play("rank_reward_change");
yield return new WaitForSeconds(time);
}
}
var last = _fishingEventData.preRankTarget[index + 1];
if (last.TaskID <= TargetList[^3])
{
layout.DOAnchorPosX(-(index + 1) * width, time);
yield return new WaitForSeconds(time);
rewards[index].canvasGroup.alpha = 0;
rewards[index - 1].canvasGroup.alpha = 0;
for (int i = index + 1; i < dataCount; i++)
{
bars[i].DOFillAmount(1, time);
yield return new WaitForSeconds(time);
rewards[i].SetReceived(true);
rewards[i].ani.Play("rank_reward_change");
yield return new WaitForSeconds(time);
}
if (dataCount > index + 2)
{
layout.DOAnchorPosX(-(index + 2) * width, time);
yield return new WaitForSeconds(time);
rewards[index + 1].canvasGroup.alpha = 0;
}
bars[dataCount].DOFillAmount(endCount / (float)rankTarget.TokenRequiredB, time);
}
else if (last.TaskID == TargetList[^1])
{
bars[index + 1].DOFillAmount(1, time);
yield return new WaitForSeconds(time);
rank_rewardItem.SetReceived(true);
rank_rewardItem.ani.Play("rank_reward_change");
}
else if (last.TaskID == TargetList[^2])
{
layout.anchoredPosition = Vector2.left * index * width;
yield return new WaitForSeconds(time);
rewards[index - 1].canvasGroup.alpha = 0;
for (int i = index + 1; i < dataCount; i++)
{
bars[i].DOFillAmount(1, time);
yield return new WaitForSeconds(time);
rewards[i].SetReceived(true);
rewards[i].ani.Play("rank_reward_change");
}
if (dataCount > index + 2)
{
rank_rewardItem.SetReceived(true);
rank_rewardItem.ani.Play("rank_reward_change");
}
else
{
bars[dataCount].DOFillAmount(endCount / (float)rankTarget.TokenRequiredB, time);
}
}
yield return new WaitForSeconds(time);
TaskOut();
}
/// <summary>
/// 有升级没有二次位移
/// </summary>
/// <returns></returns>
IEnumerator SetData1()
{
List<RankTargets> preRankTarget = _fishingEventData.preRankTarget;
int dataCount = preRankTarget.Count;
int endCount = _fishingEventData.GetCurRankTarget();
RankTargets rankTarget = _fishingEventData.rankTarget;
var last = preRankTarget[0];
var TargetList = _fishingEventData.rankInit.TargetList;
if (last.TaskID <= TargetList[^3])
{
for (int i = 0; i < 3; i++)
{
AddItem(last);
last = tables.TbRankTargets.GetOrDefault(last.NextTarget);
}
//显示间隔
yield return new WaitForSeconds(0.5f);
for (int i = 0; i < dataCount; i++)
{
bars[i].DOFillAmount(1, time);
yield return new WaitForSeconds(time);
rewards[i].SetReceived(true);
}
bars[dataCount].DOFillAmount(endCount / (float)rankTarget.TokenRequiredB, time);
}
else
{
var pre = tables.TbRankTargets.GetOrDefault(TargetList[^3]);
for (int i = 0; i < 3; i++)
{
AddItem(pre);
pre = tables.TbRankTargets.GetOrDefault(pre.NextTarget);
}
if (last.TaskID == TargetList[^1])
{
for (int i = 0; i < 2; i++)
{
bars[i].fillAmount = 1;
rewards[i].SetReceived(true);
}
//显示间隔
yield return new WaitForSeconds(0.5f);
bars[2].DOFillAmount(1, time);
yield return new WaitForSeconds(time);
rank_rewardItem.SetReceived(true);
}
else if (last.TaskID == TargetList[^2])
{
bars[0].fillAmount = 1;
rewards[0].SetReceived(true);
//显示间隔
yield return new WaitForSeconds(0.5f);
for (int i = 1; i < dataCount + 1; i++)
{
bars[i].DOFillAmount(1, time);
yield return new WaitForSeconds(time);
rewards[i].SetReceived(true);
}
if (dataCount == 2)
{
rank_rewardItem.SetReceived(true);
}
else
{
bars[dataCount + 1].DOFillAmount(endCount / (float)rankTarget.TokenRequiredB, time);
}
}
}
yield return new WaitForSeconds(time);
TaskOut();
}
void AddItem(RankTargets last)
{
Image image = Instantiate(rank_bar, layout_bar).GetComponent<Image>();
image.gameObject.SetActive(true);
image.fillAmount = 0;
bars.Add(image);
RewardItemNew rank_reward1 = Instantiate(rank_reward, layout_reward).GetComponent<RewardItemNew>();
rank_reward1.gameObject.SetActive(true);
rewards.Add(rank_reward1);
var itemData = playerItemData.GetItemDataOneLureInflation(_fishingEventData.RankTargetInflation, last.DropID);
rank_reward1.SetData(itemData);
}
/// <summary>
/// 没有升级的情况
/// </summary>
/// <returns></returns>
IEnumerator SetData()
{
var TargetList = _fishingEventData.rankInit.TargetList;
RankTargets rankTarget = _fishingEventData.rankTarget;
int endCount = _fishingEventData.GetCurRankTarget();
int curIndex = TargetList.IndexOf(rankTarget.TaskID);
ItemData itemData;
RankTargets rankTarge1;
RankTargets rankTarge2;
RankTargets rankTarge3;
Image rank_bar1 = Instantiate(rank_bar, layout_bar).GetComponent<Image>();
Image rank_bar2 = Instantiate(rank_bar, layout_bar).GetComponent<Image>();
Image rank_bar3 = Instantiate(rank_bar, layout_bar).GetComponent<Image>();
rank_bar1.gameObject.SetActive(true);
rank_bar2.gameObject.SetActive(true);
rank_bar3.gameObject.SetActive(true);
RewardItemNew rank_reward1 = Instantiate(rank_reward, layout_reward).GetComponent<RewardItemNew>();
RewardItemNew rank_reward2 = Instantiate(rank_reward, layout_reward).GetComponent<RewardItemNew>();
RewardItemNew rank_reward3 = Instantiate(rank_reward, layout_reward).GetComponent<RewardItemNew>();
rank_reward1.gameObject.SetActive(true);
rank_reward2.gameObject.SetActive(true);
rank_reward3.gameObject.SetActive(true);
if (rankTarget.NextTarget <= 0)
{
//最后一个
rankTarge1 = tables.TbRankTargets.GetOrDefault(TargetList[^2]);
rankTarge2 = tables.TbRankTargets.GetOrDefault(TargetList[^1]);
rankTarge3 = tables.TbRankTargets.GetOrDefault(TargetList[^1]);
rank_bar1.fillAmount = 1;
rank_bar2.fillAmount = 1;
rank_bar3.fillAmount = curCount / (float)rankTarget.TokenRequiredB;
}
else if (rankTarget.TaskID == TargetList[0])
{
//第一个
rankTarge1 = rankTarget;
rankTarge2 = tables.TbRankTargets.GetOrDefault(rankTarget.NextTarget);
rankTarge3 = tables.TbRankTargets.GetOrDefault(rankTarge2.NextTarget);
rank_bar1.fillAmount = curCount / (float)rankTarget.TokenRequiredB;
rank_bar2.fillAmount = 0;
rank_bar3.fillAmount = 0;
}
else
{
rankTarge1 = tables.TbRankTargets.GetOrDefault(TargetList[curIndex - 1]);
rankTarge2 = rankTarget;
rankTarge3 = tables.TbRankTargets.GetOrDefault(rankTarget.NextTarget);
rank_bar1.fillAmount = 1;
rank_bar2.fillAmount = curCount / (float)rankTarget.TokenRequiredB;
rank_bar3.fillAmount = 0;
}
itemData = playerItemData.GetItemDataOneLureInflation(_fishingEventData.RankTargetInflation, rankTarge1.DropID);
rank_reward1.SetData(itemData);
itemData = playerItemData.GetItemDataOneLureInflation(_fishingEventData.RankTargetInflation, rankTarge2.DropID);
rank_reward2.SetData(itemData);
itemData = playerItemData.GetItemDataOneLureInflation(_fishingEventData.RankTargetInflation, rankTarge3.DropID);
rank_reward3.SetData(itemData);
if (curCount >= rankTarget.TokenRequiredB)
{
rank_bar1.fillAmount = 1;
rank_bar2.fillAmount = 1;
rank_bar3.fillAmount = 1;
rank_rewardItem.SetReceived(true);
rank_reward1.SetReceived(true);
rank_reward2.SetReceived(true);
rank_reward3.SetReceived(true);
reward.Play("bubble_task_out");
yield break;
}
yield return new WaitForSeconds(0.5f);
if (rankTarget.NextTarget <= 0)
{
rank_bar3.DOFillAmount(endCount / (float)rankTarget.TokenRequiredB, time);
}
else if (rankTarget.TaskID == TargetList[0])
{
rank_bar1.DOFillAmount(endCount / (float)rankTarget.TokenRequiredB, time);
}
else
{
rank_bar2.DOFillAmount(endCount / (float)rankTarget.TokenRequiredB, time);
}
yield return new WaitForSeconds(time);
reward.Play("bubble_task_out");
}
void TaskOut()
{
reward.Play("bubble_task_out");
GContext.Publish(new ShowData());
}
private void OnDisable()
{
reward.Stop();
reward.gameObject.SetActive(false);
GContext.Publish(new ShowData());
}
}