//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(); } }