////using Assets.MyGame.Scripts.Net.API; ////using Spine.Unity; ////using System; ////using System.Collections; ////using System.Collections.Generic; ////using System.Linq; ////using TMPro; ////using Unity.VisualScripting; ////using UnityEngine; ////using UnityEngine.UI; ////public class SitPosData : MonoBehaviour ////{ //// [Header("用户id")] //// public string user; //// [Header("座位id")] //// public int posID; //// [Header("金币")] //// public TextMeshProUGUI tMP_TurretConsumeNum; //// public TextMeshProUGUI tMP_GoldNum; //// public Button btn_TurretAdd; //// public Button btn_TurretMinus; //// public long goldNum; //// public long consumeGoldNum; //// [Header("炮台")] //// public Dictionary dic_Turrets=new Dictionary(); //// public List list_Turrets=new List(); //// public int currentTurretIndex = 0; //// public string currentTurretID = ""; //// public TurretData currentTurret; //// [Header("锁定")] //// public MonsterContral monCotl_Lock; //// public Transform monCotl_Lock_Position; //// public bool isLock=false; //// public GameObject lockFX; //// [Header("当前炮塔")] //// public Transform tra_CurrTurret; //// public Transform tra_CurrFly; //星际迷航特有 //// public GameObject changeTurretList; //// public Action OnStateChange; //// public void ChangeState(TurretState state) //// { //// OnStateChange?.Invoke(state); //// } //// public void Awake() //// { //// //list_Turrets.Sort((td1,td2) => //// //{ //// // return td1.turretID.CompareTo(td2.turretLevel); //// //}); //// dic_Turrets = list_Turrets.ToDictionary(td => td.turretID); //// btn_TurretAdd.onClick.AddListener(() => //// { //// ChangeTurretAddConsumeNum(1000); //// }); //// btn_TurretMinus.onClick.AddListener(() => //// { //// ChangeTurretMinusConsumeNum(1000); //// }); //// } //// public void Update() //// { //// } //// public void ChangeTurret(int n=0) //// { //// if (currentTurretIndex>list_Turrets.Count|| currentTurretIndex<0) //// { //// //currentTurretIndex = currentTurretIndex; //// } //// else //// { //// currentTurretIndex = n; //// } //// if (currentTurret != null) //// { //// currentTurret.gameObject.SetActive(false); //// } //// currentTurretID = list_Turrets[currentTurretIndex].turretID; //dic_Turrets[currentTurretID]; //// currentTurret=dic_Turrets[currentTurretID]; //// currentTurret.gameObject.SetActive(true); //// // ⭐ 关键:把状态机入口绑定到当前炮台 //// OnStateChange = currentTurret.ChangeState; //// gameObject.SetActive(true); //// tra_CurrTurret =currentTurret.transform.GetChild(0); //// tra_CurrFly = currentTurret.transform.GetChild(1); //// } //// public void ChangeTurretConsumeNum(int n = 0) //// { //// consumeGoldNum = n; //// tMP_TurretConsumeNum.text = consumeGoldNum.ToString(); //// } //// public void ChangeTurretAddConsumeNum(int n = 0) //// { //// consumeGoldNum += n; //// tMP_TurretConsumeNum.text = consumeGoldNum.ToString(); //// } //// public void ChangeTurretMinusConsumeNum(int n = 0) //// { //// consumeGoldNum -= n; //// tMP_TurretConsumeNum.text = consumeGoldNum.ToString(); //// } //// public bool ConsumeGold(int bl=1) //// { //// long temp = goldNum - consumeGoldNum*bl; //// if (temp > 0) //// { //// goldNum = temp; //// tMP_GoldNum.text = goldNum.ToString(); //// return true; //// } //// return false; //// } ////} //using System; //using System.Collections.Generic; //using System.Linq; //using TMPro; //using UnityEngine; //using UnityEngine.UI; //public class SitPosData : MonoBehaviour //{ // // ------------------------- // // 玩家信息 // // ------------------------- // public string user; // public int posID; // [Header("金币")] // public long goldNum; // public long consumeGoldNum; // public TextMeshProUGUI tMP_TurretConsumeNum; // public TextMeshProUGUI tMP_GoldNum; // // ------------------------- // // 炮台管理 // // ------------------------- // public List list_Turrets = new List(); // public Dictionary dic_Turrets = new Dictionary(); // public int currentTurretIndex = 0; // public TurretData currentTurret; // // 状态机入口(GameMainPanel 调用) // public Action OnStateChange; // // ------------------------- // // 炮台旋转 // // ------------------------- // public Transform tra_CurrTurret; // public float currentAngle; // // ------------------------- // // 锁定系统 // // ------------------------- // public MonsterContral monCotl_Lock; // public Transform monCotl_Lock_Position; // public bool isLock; // public GameObject lockFX; // // ------------------------- // // UI // // ------------------------- // public Button btn_TurretAdd; // public Button btn_TurretMinus; // public GameObject changeTurretList; // private void Awake() // { // dic_Turrets = list_Turrets.ToDictionary(t => t.turretID); // btn_TurretAdd.onClick.AddListener(() => ChangeTurretAddConsumeNum(1000)); // btn_TurretMinus.onClick.AddListener(() => ChangeTurretMinusConsumeNum(1000)); // } // // ------------------------- // // 切换炮台 // // ------------------------- // public void ChangeTurret(int index) // { // if (currentTurret != null) // currentTurret.gameObject.SetActive(false); // currentTurretIndex = Mathf.Clamp(index, 0, list_Turrets.Count - 1); // currentTurret = list_Turrets[currentTurretIndex]; // currentTurret.gameObject.SetActive(true); // // 绑定状态机入口 // OnStateChange = currentTurret.ChangeState; // // 缓存旋转点 // tra_CurrTurret = currentTurret.transform.GetChild(0); // } // // ------------------------- // // 切换状态(GameMainPanel 调用) // // ------------------------- // public void ChangeState(TurretState state) // { // OnStateChange?.Invoke(state); // } // // ------------------------- // // 炮台旋转 // // ------------------------- // public void SetRotation(float angle) // { // currentAngle = angle; // tra_CurrTurret.rotation = Quaternion.Euler(0, 0, angle); // } // // ------------------------- // // 获取发射点(给 GameMainPanel) // // ------------------------- // public Vector2 GetBulletStartPos() // { // return currentTurret.GetBulletStartWorldPos(); // } // // ------------------------- // // 金币消耗 // // ------------------------- // public bool ConsumeGold(int mul = 1) // { // long temp = goldNum - consumeGoldNum * mul; // if (temp < 0) return false; // goldNum = temp; // tMP_GoldNum.text = goldNum.ToString(); // return true; // } // public void ChangeTurretAddConsumeNum(int n) // { // consumeGoldNum += n; // tMP_TurretConsumeNum.text = consumeGoldNum.ToString(); // } // public void ChangeTurretMinusConsumeNum(int n) // { // consumeGoldNum -= n; // tMP_TurretConsumeNum.text = consumeGoldNum.ToString(); // } //} using System; using System.Collections.Generic; using System.Linq; using TMPro; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.UI; public class SitPosData : MonoBehaviour { // ------------------------- // 玩家基础信息 // ------------------------- [Header("玩家信息")] public string user; public int posID; [Header("金币")] public long goldNum; public long consumeGoldNum; public TextMeshProUGUI tMP_GoldNum; public TextMeshProUGUI tMP_TurretConsumeNum; // ------------------------- // 炮台管理 // ------------------------- [Header("炮台")] public List list_Turrets = new List(); public Dictionary dic_Turrets = new Dictionary(); public int currentTurretIndex = 0; public string currentTurretID = ""; public TurretData currentTurret; // 状态机入口(GameMainPanel 调用) public Action OnStateChange; // ------------------------- // 炮台旋转 // ------------------------- [Header("炮台旋转")] public Transform tra_CurrTurret; public float currentAngle; // ------------------------- // 锁定系统 // ------------------------- [Header("锁定系统")] public MonsterContral monCotl_Lock; public Transform monCotl_Lock_Position; public bool isLock = false; public GameObject lockFX; // ------------------------- // UI // ------------------------- [Header("UI")] public Button btn_TurretAdd; public Button btn_TurretMinus; public GameObject changeTurretList; private void Awake() { btn_TurretAdd.onClick.AddListener(() => ChangeTurretAddConsumeNum()); btn_TurretMinus.onClick.AddListener(() => ChangeTurretMinusConsumeNum()); // 构建字典 dic_Turrets = list_Turrets.ToDictionary(t => t.turretID); // 炮台倍率按钮 } // ------------------------- // 切换炮台 // ------------------------- public void ChangeTurret(int index) { // 关闭旧炮台 if (currentTurret != null) currentTurret.gameObject.SetActive(false); // 计算新索引 currentTurretIndex = Mathf.Clamp(index, 0, list_Turrets.Count - 1); // 获取新炮台 currentTurret = list_Turrets[currentTurretIndex]; currentTurretID = currentTurret.turretID; currentTurret.gameObject.SetActive(true); // 绑定状态机入口 OnStateChange = currentTurret.ChangeState; // 缓存旋转点 tra_CurrTurret = currentTurret.transform.GetChild(0); if (CreateFishManager.Instance.currGameType != null) { // 如果当前处于狂暴状态,切换炮台后也要继续倍速 bool frenzy = CreateFishManager.Instance.currGameType.isFrenzy; currentTurret.SetFrenzy(frenzy); } } // ------------------------- // 切换状态(GameMainPanel 调用) // ------------------------- public void ChangeState(TurretState state) { OnStateChange?.Invoke(state); } // ------------------------- // 炮台旋转(GameMainPanel 调用) // ------------------------- public void SetRotation(float angle) { currentAngle = angle; if (tra_CurrTurret != null) tra_CurrTurret.rotation = Quaternion.Euler(0, 0, angle); } // ------------------------- // 获取发射点(给 GameMainPanel) // ------------------------- public Vector2 GetBulletStartPos() { return currentTurret.GetBulletStartWorldPos(); } // ------------------------- // 金币消耗 // ------------------------- public bool ConsumeGold(int mul = 1) { long temp = goldNum - consumeGoldNum * mul; if (temp < 0) return false; goldNum = temp; tMP_GoldNum.text = goldNum.ToString(); return true; } int indexConsume=0; public void ChangeTurretAddConsumeNum() { if (CreateFishManager.Instance.currGameType.paoBeiList.Count-1> indexConsume) { indexConsume++; } else { indexConsume = 0; } consumeGoldNum = CreateFishManager.Instance.currGameType.paoBeiList[indexConsume]; tMP_TurretConsumeNum.text = consumeGoldNum.ToString(); } public void ChangeTurretMinusConsumeNum() { if (indexConsume>0) { indexConsume--; } else { indexConsume = CreateFishManager.Instance.currGameType.paoBeiList.Count - 1; } consumeGoldNum = CreateFishManager.Instance.currGameType.paoBeiList[indexConsume]; tMP_TurretConsumeNum.text = consumeGoldNum.ToString(); } // ------------------------- // 锁定系统(本地) // ------------------------- public void SetLockTarget(MonsterContral monster, Transform hitPos) { monCotl_Lock = monster; monCotl_Lock_Position = hitPos; isLock = monster != null; lockFX.SetActive(isLock); } public void ClearLock() { monCotl_Lock = null; monCotl_Lock_Position = null; isLock = false; lockFX.SetActive(false); ChangeState(TurretState.Idle); } }