261 lines
7.2 KiB
C#
261 lines
7.2 KiB
C#
//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<string, TurretData> dic_Turrets=new Dictionary<string, TurretData>();
|
||
// public List<TurretData> list_Turrets=new List<TurretData>();
|
||
// 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<TurretState> 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<TurretData> list_Turrets = new List<TurretData>();
|
||
public Dictionary<string, TurretData> dic_Turrets = new Dictionary<string, TurretData>();
|
||
public int currentTurretIndex = 0;
|
||
public TurretData currentTurret;
|
||
|
||
// 状态机入口(GameMainPanel 调用)
|
||
public Action<TurretState> 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();
|
||
}
|
||
}
|