using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
///
/// 玩家技能系统(召唤师技能)
/// 依据 PlayerData 中 equippedSummonerSkills 动态初始化图标与释放相匹配的技能效果
///
public class PlayerSkillSystem : MonoBehaviour
{
public static PlayerSkillSystem Instance { get; private set; }
[Header("战术增益加成倍率")]
public float cooldownMultiplier = 1f; // 冷却缩减倍率
public float powerMultiplier = 1f; // 威力加成倍率
[Header("技能1组件绑定")]
public Button skill1Button;
public Image skill1CooldownMask;
public Text skill1CooldownText;
public string skill1CurrentName = "神圣赞歌";
public float skill1Cooldown = 25f;
private float skill1RemainingCooldown = 0f;
[Header("技能2组件绑定")]
public Button skill2Button;
public Image skill2CooldownMask;
public Text skill2CooldownText;
public string skill2CurrentName = "天雷狂轰";
public float skill2Cooldown = 20f;
private float skill2RemainingCooldown = 0f;
[Header("通用特效预制体引用")]
public GameObject cureBallPrefab; // 飞球预制体 (Assets/Prefabs/特效/飞球/cureBall.prefab)
public GameObject healNovaPrefab; // 治疗冲击波 (Assets/TJGeneratorLibEffects/Prefabs/Interactive/Healing/HealNova.prefab)
public GameObject lightningStrikePrefab; // 落雷击中 (Assets/TJGeneratorLibEffects/Prefabs/Combat/Explosions/LightningExplosion/LightningExplosionBlue.prefab)
public GameObject lightningNovaPrefab; // 雷暴全屏光环 (Assets/TJGeneratorLibEffects/Prefabs/Combat/Nova/Lightning/NovaLightningBlue.prefab)
public Transform castStartTransform; // 施法起始点
private void Awake()
{
Instance = this;
}
private void Start()
{
EnsureSkillUIReferences();
LoadEquippedSkillIcons();
if (skill1Button != null)
{
skill1Button.onClick.RemoveAllListeners();
skill1Button.onClick.AddListener(UseSkill1);
}
if (skill2Button != null)
{
skill2Button.onClick.RemoveAllListeners();
skill2Button.onClick.AddListener(UseSkill2);
}
}
private void EnsureSkillUIReferences()
{
var canvas = GameObject.Find("TowerDefenseCanvas");
if (canvas == null) return;
var skillsPanel = canvas.transform.Find("BottomUI/SkillsPanel");
if (skillsPanel == null) return;
if (skillsPanel.childCount > 0)
{
var item1 = skillsPanel.GetChild(0);
if (skill1Button == null)
{
skill1Button = item1.GetComponent