219 lines
8.4 KiB
C#
219 lines
8.4 KiB
C#
using asap.core;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using GameCore;
|
|
using cfg;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine.AddressableAssets;
|
|
|
|
public class FishingFishInfo : MonoBehaviour
|
|
{
|
|
|
|
private TMP_Text _comboText;
|
|
|
|
public GameObject FX_info_weakly;
|
|
public GameObject FX_info_powerful;
|
|
public GameObject fx_ui_fishingpanelbar_warm;
|
|
public GameObject fx_ui_barlianji_full;
|
|
public ParticleSystem fx_ui_hightligt_loop;
|
|
|
|
public Animation distance_ani;
|
|
|
|
GameObject start;
|
|
|
|
GameObject blood;
|
|
GameObject fishing_mouse;
|
|
GameObject distance;
|
|
GameObject combo;
|
|
public TMP_Text textDistance;
|
|
TMP_Text text_distance_tips;
|
|
public TMP_Text textDistanceWarning;
|
|
public TMP_Text textDistanceRod;
|
|
BarRoot fishingBarRoot;
|
|
Tables _tables;
|
|
Dictionary<string, bool> barShake = new Dictionary<string, bool>();
|
|
FishingUpdateSys fishingUpdateSys;
|
|
public void InitPanel(FishingUpdateSys fishingUpdateSys)
|
|
{
|
|
this.fishingUpdateSys = fishingUpdateSys;
|
|
_tables = GContext.container.Resolve<Tables>();
|
|
start = transform.Find("start").gameObject;
|
|
combo = transform.Find("combo").gameObject;
|
|
blood = transform.Find("blood").gameObject;
|
|
distance = transform.Find("distance").gameObject;
|
|
distance_ani = distance.GetComponent<Animation>();
|
|
|
|
textDistance = transform.Find("distance/text_distance").GetComponent<TMP_Text>();
|
|
text_distance_tips = transform.Find("distance/text_distance_tips").GetComponent<TMP_Text>();
|
|
textDistanceWarning = transform.Find("distance/text_distance_warning").GetComponent<TMP_Text>();
|
|
textDistanceRod = transform.Find("distance/text_distance_warning/text_distance_rod").GetComponent<TMP_Text>();
|
|
fishingBarRoot = transform.Find("combo/barRoot").GetComponent<BarRoot>();
|
|
textDistanceWarning.transform.localScale = Vector3.one * 1.8f;
|
|
_comboText = transform.Find("combo/text_combo").GetComponent<TMP_Text>();
|
|
fx_ui_barlianji_full = transform.Find("combo/barRoot/bar_lianji/fx_ui_barlianji_full").gameObject;
|
|
FX_info_weakly = transform.Find("combo/FX_info_weakly").gameObject;
|
|
FX_info_powerful = transform.Find("combo/FX_info_powerful").gameObject;
|
|
fx_ui_fishingpanelbar_warm = transform.Find("combo/barRoot/fx_ui_fishingpanelbar_warm").gameObject;
|
|
fx_ui_hightligt_loop = transform.Find("combo/barRoot/highlight/fx_ui_hightligt_loop/1").GetComponent<ParticleSystem>();
|
|
combo.SetActive(false);
|
|
}
|
|
|
|
public void SetTensionBarScale(float MaxZoneScale)
|
|
{
|
|
fishingBarRoot.SetTensionBarScale(MaxZoneScale);
|
|
}
|
|
|
|
public void ShowTensionBar()
|
|
{
|
|
barShake.Clear();
|
|
FX_info_weakly.SetActive(false);
|
|
FX_info_powerful.SetActive(false);
|
|
_comboText.text = "";
|
|
fishingBarRoot.ShowTensionBar();
|
|
fx_ui_barlianji_full.SetActive(false);
|
|
fx_ui_hightligt_loop.Stop();
|
|
}
|
|
|
|
public void ShowState(int value)
|
|
{
|
|
start.SetActive(value == 0);
|
|
combo.SetActive(value == 1);
|
|
blood.SetActive(value == 1);
|
|
distance.SetActive(value > 0);
|
|
if (value == 2)
|
|
{
|
|
ShowMouse();
|
|
}
|
|
else if (fishing_mouse != null)
|
|
{
|
|
fishing_mouse.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
async void ShowMouse()
|
|
{
|
|
if (fishing_mouse == null)
|
|
{
|
|
fishing_mouse = await Addressables.InstantiateAsync("fishing_mouse", transform).Task;
|
|
}
|
|
fishing_mouse.gameObject.SetActive(true);
|
|
}
|
|
public void UpdateTensionBar(int type, float power)
|
|
{
|
|
if (type == 1)
|
|
{
|
|
fx_ui_hightligt_loop.Play();
|
|
}
|
|
else
|
|
{
|
|
fx_ui_hightligt_loop.Stop();
|
|
}
|
|
bool isWeakly = power <= fishingUpdateSys.FishingFailProgressLeft;
|
|
bool isPowerful = power >= 1 - fishingUpdateSys.FishingFailProgressRight && fishingUpdateSys.NeverOvertensionToCrit <= 0;
|
|
FX_info_weakly.SetActive(isWeakly);
|
|
FX_info_powerful.SetActive(isPowerful);
|
|
fx_ui_fishingpanelbar_warm.SetActive(isWeakly || isPowerful);
|
|
//_comboText.gameObject.SetActive(!isWeakly && !isPowerful);
|
|
//_comboText.gameObject.SetActive(!isWeakly && !isPowerful);
|
|
fishingBarRoot.UpdateTensionBar(power);
|
|
}
|
|
|
|
public void UpdateComboMultiplayer(float _curComboMultiplayer)
|
|
{
|
|
//string comboText = "";
|
|
if (_curComboMultiplayer > 0)
|
|
{
|
|
fishingBarRoot.SetBarCombo(_curComboMultiplayer);
|
|
//if (_curComboMultiplayer < 0.99f)
|
|
// comboText = LocalizationMgr.GetFormatTextValue("UI_FishingPanel_Advanced_101001", ((int)(_curComboMultiplayer * 100)).ToString());
|
|
//else
|
|
// comboText = LocalizationMgr.GetText("UI_FishingPanel_Advanced_101002");
|
|
}
|
|
//_comboText.text = comboText;
|
|
}
|
|
public void ShowComboTips(bool isShow)
|
|
{
|
|
fishingBarRoot.arrow_guidance.SetActive(isShow);
|
|
}
|
|
public void ShowFishInfoPos(Vector3 bobber)
|
|
{
|
|
Vector3 targetPos = ConvertTools.WorldToScreenPoint(bobber);
|
|
float offset = 250.0f;
|
|
targetPos.y += offset;
|
|
transform.localPosition = targetPos; // 设置位置
|
|
}
|
|
/// <summary>
|
|
/// 距离显示
|
|
/// </summary>
|
|
/// <param name="fishSwimAreaZFar">远端</param>
|
|
/// <param name="fishSwimAreaZNear">近端</param>
|
|
/// <param name="curDistance">鱼线长度</param>
|
|
/// <param name="maxDistance">最大长度</param>
|
|
/// <param name="warning">红色警告</param>
|
|
public void OnDrawFishingLine(float fishSwimAreaZFar, float fishSwimAreaZNear, float curDistance, float maxDistance, float warningLineLengthRatio)
|
|
{
|
|
float warningLine = maxDistance * warningLineLengthRatio;
|
|
|
|
if (curDistance >= warningLine)
|
|
{
|
|
textDistanceWarning.gameObject.SetActive(true);
|
|
text_distance_tips.gameObject.SetActive(false);
|
|
textDistance.gameObject.SetActive(false);
|
|
if (curDistance > maxDistance)
|
|
{
|
|
curDistance = maxDistance;
|
|
}
|
|
textDistanceWarning.text = LocalizationMgr.GetFormatTextValue("UI_FishingPanel_Advanced_101009", curDistance.ToString("0"));
|
|
textDistanceRod.text = LocalizationMgr.GetFormatTextValue("UI_FishingPanel_Advanced_101009", maxDistance.ToString("0"));
|
|
}
|
|
else if (curDistance > fishSwimAreaZFar)
|
|
{
|
|
//橙色警告
|
|
text_distance_tips.text = LocalizationMgr.GetFormatTextValue("UI_FishingPanel_Advanced_101009", curDistance.ToString("0"));
|
|
text_distance_tips.gameObject.SetActive(true);
|
|
text_distance_tips.transform.localScale = Vector3.one *
|
|
(0.4f * ((curDistance - fishSwimAreaZFar) / (warningLine - fishSwimAreaZFar)) + 1.4f);
|
|
textDistance.gameObject.SetActive(false);
|
|
textDistanceWarning.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
if (warningLine > fishSwimAreaZFar)
|
|
{
|
|
warningLine = fishSwimAreaZFar;
|
|
}
|
|
|
|
textDistance.text = LocalizationMgr.GetFormatTextValue("UI_FishingPanel_Advanced_101009", curDistance.ToString("0"));
|
|
textDistance.gameObject.SetActive(true);
|
|
textDistance.transform.localScale = Vector3.one *
|
|
(0.4f * ((curDistance - fishSwimAreaZNear) / (warningLine - fishSwimAreaZNear)) + 1f);
|
|
text_distance_tips.gameObject.SetActive(false);
|
|
textDistanceWarning.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
public void EndFull(bool isStart, float comboTime)
|
|
{
|
|
_comboText.gameObject.SetActive(!isStart);
|
|
_comboText.text = "";
|
|
if (isStart)
|
|
{
|
|
fishingBarRoot.BarComboBack(comboTime);
|
|
}
|
|
}
|
|
|
|
public void PlayBarAni(string aniName, bool isShake, float barShakeAmp)
|
|
{
|
|
barShake[aniName] = isShake;
|
|
List<string> BarShakePriority = _tables.TbGlobalConfig.BarShakePriority;
|
|
for (int i = 0; i < BarShakePriority.Count; i++)
|
|
{
|
|
if (barShake.ContainsKey(BarShakePriority[i]) && barShake[BarShakePriority[i]])
|
|
{
|
|
fishingBarRoot.PlayAni(BarShakePriority[i], barShakeAmp);
|
|
return;
|
|
}
|
|
}
|
|
fishingBarRoot.PlayAni(BarShakePriority[^1], barShakeAmp);
|
|
}
|
|
}
|