Files
back_cantanBuilding/Assets/Scripts/Aquarium/UI/AquariumRandomMapPanel.cs
2026-05-26 16:15:54 +08:00

140 lines
4.6 KiB
C#

using asap.core;
using cfg;
using DG.Tweening;
using GameCore;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class AquariumRandomMapPanel : MonoBehaviour
{
AquariumManager AM;
RectTransform Content;
GameObject img_map;
int allCount = 5;
float height;
int maIndex = 2;
IUIService uIService;
GameObject result;
TMP_Text text_map;
TMP_Text text_level;
AquariumDetectEgg[] aquariumDetectEggs;
Transform eggRoot;
Tables _tables;
Transform door;
private void Awake()
{
_tables = GContext.container.Resolve<Tables>();
uIService = GContext.container.Resolve<IUIService>();
AM = GContext.container.Resolve<AquariumManager>();
Content = transform.Find("Viewport/Content").GetComponent<RectTransform>();
img_map = transform.Find("Viewport/Content/Item").gameObject;
height = img_map.GetComponent<RectTransform>().rect.height;
img_map.SetActive(false);
result = transform.Find("result").gameObject;
text_map = transform.Find("result/text_map").GetComponent<TMP_Text>();
text_level = transform.Find("result/fishcard/text_level").GetComponent<TMP_Text>();
eggRoot = transform.Find("eggRoot");
aquariumDetectEggs = eggRoot.GetComponentsInChildren<AquariumDetectEgg>();
//eggRoot.gameObject.SetActive(false);
door = transform.Find("door");
}
//private void Start()
//{
// result.SetActive(false);
//}
public void SetMap()
{
PlayerData playerData = GContext.container.Resolve<PlayerData>();
AM.GetRandmMap();
var lastMapID = playerData.lastMapId;
List<MapData> mapDatas = _tables.TbMapData.DataList;
List<int> indexs = new List<int>();
for (int i = 0; i < mapDatas.Count; i++)
{
if (mapDatas[i].ID <= lastMapID)
{
indexs.Add(i);
}
else
{
break;
}
}
while (indexs.Count < allCount)
{
indexs.AddRange(indexs);
}
List<int> newIDs = new List<int>();
for (int i = 0; i < allCount; i++)
{
int mapIDIndex = indexs[Random.Range(0, indexs.Count)];
newIDs.Add(mapIDIndex);
indexs.Remove(mapIDIndex);
}
newIDs.AddRange(newIDs);
for (int i = 0; i < allCount + maIndex; i++)
{
SetMapBg(mapDatas[newIDs[i]].Bg);
}
var mapData = _tables.TbMapData.DataMap[AM.MapId];
SetMapBg(mapData.Bg);
SetMapBg(mapDatas[newIDs[0]].Bg);
text_map.text = LocalizationMgr.GetText(mapData.Name_l10n_key);
string levelLV = LocalizationMgr.GetText("UI_FishingMapPanel_101006");
int fishCardLevel = GContext.container.Resolve<PlayerFishData>().GetFishLevelByMap(AM.MapId);
text_level.text = levelLV + fishCardLevel.ToString();
var sequence = DOTween.Sequence();
sequence.Append(door.DOLocalMoveX(900, 0.5f).SetEase(Ease.Linear));
sequence.Append(Content.DOAnchorPosY(allCount * height, 0.8f).SetLoops(2, LoopType.Restart).SetEase(Ease.Linear));
//跑马灯动画
float index2 = allCount + maIndex + Random.Range(-0.5f, 0.5f);
sequence.Append(Content.DOAnchorPosY(index2 * height, 0.2f).SetEase(Ease.Linear));
sequence.Append(Content.DOAnchorPosY((allCount + maIndex) * height, 0.2f).SetEase(Ease.InSine));
sequence.Play();
}
void SetMapBg(string bg)
{
GameObject go = Instantiate(img_map, Content);
Image image = go.transform.GetChild(0).GetComponent<Image>();
go.SetActive(true);
uIService.SetImageSprite(image, bg);
}
public void InitEgg()
{
//开始随机蛋蛋
for (int i = 0; i < aquariumDetectEggs.Length; i++)
{
if (i < AM.Slot)
{
AquariumEgg aquariumEgg = _tables.TbAquariumEgg.GetOrDefault(AM.data.slotDatas[i].eggId);
aquariumDetectEggs[i].SetIcon(AM.eggNames, aquariumEgg.Icon, i);
}
else
{
aquariumDetectEggs[i].gameObject.SetActive(false);
}
}
}
public void PlayEgg()
{
//开始随机蛋蛋
for (int i = 0; i < aquariumDetectEggs.Length; i++)
{
if (i < AM.Slot)
{
AquariumEgg aquariumEgg = _tables.TbAquariumEgg.GetOrDefault(AM.data.slotDatas[i].eggId);
aquariumDetectEggs[i].Play();
}
}
}
public void HideMap()
{
Content.gameObject.SetActive(false);
}
}