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 barShake = new Dictionary(); FishingUpdateSys fishingUpdateSys; public void InitPanel(FishingUpdateSys fishingUpdateSys) { this.fishingUpdateSys = fishingUpdateSys; _tables = GContext.container.Resolve(); start = transform.Find("start").gameObject; combo = transform.Find("combo").gameObject; blood = transform.Find("blood").gameObject; distance = transform.Find("distance").gameObject; distance_ani = distance.GetComponent(); textDistance = transform.Find("distance/text_distance").GetComponent(); text_distance_tips = transform.Find("distance/text_distance_tips").GetComponent(); textDistanceWarning = transform.Find("distance/text_distance_warning").GetComponent(); textDistanceRod = transform.Find("distance/text_distance_warning/text_distance_rod").GetComponent(); fishingBarRoot = transform.Find("combo/barRoot").GetComponent(); textDistanceWarning.transform.localScale = Vector3.one * 1.8f; _comboText = transform.Find("combo/text_combo").GetComponent(); 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(); 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; // 设置位置 } /// /// 距离显示 /// /// 远端 /// 近端 /// 鱼线长度 /// 最大长度 /// 红色警告 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 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); } }