lcy
2026-06-10 1adf0932629c4154f6e2ff854e75c48019a3972b
Main/System/Guild/GuildBaseWin.cs
@@ -27,6 +27,23 @@
    [SerializeField] Button requestBtn;
    [SerializeField] ImageEx guildBattleLockImg;
    [SerializeField] Text guildBattleTitleText;
    [SerializeField] Button guildBattleBtn;
    [SerializeField] Text guildBattleState;
    [SerializeField] Image guildBattleStateImg;
    [SerializeField] Text GuildBattleCountDownTime;
    [SerializeField] ImageEx guildBattleImg;
    [SerializeField] UIEffectPlayer guildBattleEffect;
    [SerializeField] Color32 guildBattleState1;//未参战
    [SerializeField] Color32 guildBattleState2;//对战失败
    [SerializeField] Color32 guildBattleState3;//备战中
    [SerializeField] Color32 guildBattleState4;//激战中
    [SerializeField] Color32 guildBattleState5;//对战胜利
    //NPC对话相关
    [Header("行商必须放第一个")]
    [SerializeField] HeroSkinModel[] funcNPCs;
@@ -61,6 +78,12 @@
        {
            UIManager.Instance.OpenWindow<GuildRankWin>();
        });
        guildBattleBtn.AddListener(() =>
        {
            if (!GuildAtkDefBatManager.Instance.IsOpen(true))
                return;
            UIManager.Instance.OpenWindowAsync<GuildAtkDefBatWin>().Forget();
        });
        InitHawker();
        talkBtn.AddListener(OnClickTalkButton);
        talkBtn1.AddListener(OnClickTalkButton);
@@ -71,11 +94,12 @@
    {
        if (PlayerDatas.Instance.fairyData.fairy == null)
            return;
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        GlobalTimeEvent.Instance.fiveSecondEvent += OnFiveSecondEvent;
        ChatManager.Instance.OnUpdateTalkEvent += OnUpdateTalkEvent;
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
        GuildAtkDefBatManager.Instance.OnUpdateAtkDefBatInfoEvent += OnUpdateAtkDefBatInfoEvent;
        Display();
    }
@@ -85,6 +109,18 @@
        GlobalTimeEvent.Instance.fiveSecondEvent -= OnFiveSecondEvent;
        ChatManager.Instance.OnUpdateTalkEvent -= OnUpdateTalkEvent;
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
        GuildAtkDefBatManager.Instance.OnUpdateAtkDefBatInfoEvent -= OnUpdateAtkDefBatInfoEvent;
    }
    private void OnUpdateAtkDefBatInfoEvent()
    {
        ShowGuildBattleInfo();
    }
    private void OnFuncStateChangeEvent(int funcId)
    {
        if (funcId == (int)FuncOpenEnum.GuildAtkDefBat)
            ShowGuildBattleInfo();
    }
    void OnRefreshFairyInfo()
@@ -104,11 +140,72 @@
        ShowGuildInfo();
        ShowHawkerTime();
        ShowTalkInfo();
        ShowGuildBattleInfo();
    }
    void OnSecondEvent()
    {
        ShowHawkerTime(true);
        UpdateGuildBattleCountdown();
    }
    /// <summary>
    /// 刷新攻防战的当前状态及对应描边颜色
    /// </summary>
    void ShowGuildBattleInfo()
    {
        bool isOpen = GuildAtkDefBatManager.Instance.IsOpen();
        guildBattleLockImg.SetActive(!isOpen);
        guildBattleTitleText.color = isOpen ? new Color32(222, 212, 200, 255) : UIHelper.GetUIColor(TextColType.Gray);
        guildBattleStateImg.SetActive(isOpen);
        guildBattleImg.SetActive(isOpen);
        guildBattleEffect.SetActive(false);
        if (!isOpen)
            return;
        // 状态标识:1-未参战, 2-备战中, 3-激战中, 4-胜利(休战中), 5-失败(休战中)
        int displayState = GuildAtkDefBatManager.Instance.GetGuildBattleDisplayState();
        switch (displayState)
        {
            case 1: // 未参战
                guildBattleState.text = Language.Get("GuildAtkDefBat27");
                guildBattleState.color = guildBattleState1;
                break;
            case 2: // 备战中
                guildBattleState.text = Language.Get("GuildAtkDefBat25");
                guildBattleState.color = guildBattleState3;
                break;
            case 3: // 激战中
                guildBattleState.text = Language.Get("GuildAtkDefBat24");
                guildBattleState.color = guildBattleState4;
                guildBattleImg.SetActive(false);
                guildBattleEffect.SetActive(true);
                break;
            case 4: // 胜利(休战中)
                guildBattleState.text = Language.Get("GuildAtkDefBat23");
                guildBattleState.color = guildBattleState5;
                break;
            case 5: // 失败(休战中)
                guildBattleState.text = Language.Get("GuildAtkDefBat26");
                guildBattleState.color = guildBattleState2;
                break;
        }
        UpdateGuildBattleCountdown();
    }
    /// <summary>
    /// 刷新倒计时文本 (每秒调用), 仅备战期/激战期显示
    /// </summary>
    void UpdateGuildBattleCountdown()
    {
        int state = GuildAtkDefBatManager.Instance.BatState;
        bool show = state == 2 || state == 3;
        GuildBattleCountDownTime.SetActive(show);
        if (!show) return;
        GuildBattleCountDownTime.text = GuildAtkDefBatManager.Instance.GetGetCountdownToCurrentPeriodEndString();
    }
    void ShowGuildInfo()