140 lines
4.6 KiB
C#
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);
|
|
}
|
|
}
|