226 lines
6.2 KiB
C#
Raw Normal View History

2025-05-18 01:04:31 +08:00
// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2020-09-07
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
// <copyright file= "ChaPanel" company="Kimch"></copyright>
// <summary></summary>
// ***********************************************************************
using PureMVC.Interfaces;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace G.UI
{
partial class ChaPanel : KUIWidget
{
#region Field
#pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null
[KUIFlag]
ToggleGroup __goPageType;
[KUIFlag]
Button _btnClose;
[KUIFlag]
GameObject __goEquipmentSlotPage;
[KUIFlag]
GameObject __goBagPage;
[KUIFlag]
GameObject __goUpgradePage;
[KUIFlag]
GameObject __goCompose;
[KUIFlag]
TextMeshProUGUI _tmpCombatValue;
[KUIFlag]
Button _btnDetails;
[KUIFlag]
GameObject _goChaRoot;
[KUIFlag]
KUIToggleGroup _goPages;
[KUIFlag]
Button _btnSkin;
#pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null
/// <summary>
///
/// </summary>
ChaWidget _chaWidget;
/// <summary>
///
/// </summary>
private EquipmentSlotPage __equipmentSlotPage;
/// <summary>
///
/// </summary>
private BagPage __bagPage;
#endregion
#region Method
public override void Refresh()
{
RefreshEquipment();
RefreshBag();
PostNotification(GlobalDefine.EVENT_WINDOW_OPENED, 3, "");
}
/// <summary>
///
/// </summary>
void RefreshEquipment(bool set = true)
{
SetCombatValue();
var slots = PlayerProxy.Instance.GetEquipmentSlots();
for (int i = 0; i < slots.Length; i++)
{
__equipmentSlotPage.SetEquipmentSlot(slots[i]);
}
if (set)
{
var weapon = slots[0].equipment;
if (weapon != null)
{
SetEquipment(weapon);
}
}
}
/// <summary>
///
/// </summary>
void RefreshBag()
{
if (!_goPages.toggles[0].isOn)
{
_goPages.toggles[0].isOn = true;
_goPages.toggles[1].isOn = false;
}
}
void SetEquipment(EntityItemEquipment equipment)
{
if (equipment.isWeapon)
{
int kind = equipment.weaponKind;
var skin = ChaSkinProxy.Instance.GetCurrentSkin(0).item;
_chaWidget.Show(skin.GetUIAssetByWeapon(kind), $"{equipment.assets}_ui", null);
}
}
void SetCombatValue()
{
_tmpCombatValue.text = PlayerProxy.Instance.combatValue.ToString();
}
public void OnCloseBtnClick()
{
//this.transform.parent.gameObject.SetActive(false);
}
void OnSkinBtnClick()
{
KUIWindow.OpenWindow<SkinWindow>();
SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND);
}
public void OnDetailBtnClick()
{
KUIWindow.OpenWindow<ChaDetailBox>();
SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND);
}
private void OnPageSelect(int index)
{
__bagPage.ShowPage(index);
SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND);
}
#endregion
// Start is called before the first frame update
private void Awake()
{
SetViewData();
__equipmentSlotPage = __goEquipmentSlotPage.GetComponent<EquipmentSlotPage>();
__bagPage = __goBagPage.AddComponent<BagPage>();
_goPages.onToggleSelected.AddListener(this.OnPageSelect);
//
_btnDetails.onClick.AddListener(this.OnDetailBtnClick);
//if (_btnClose)
//{
// _btnClose.onClick.AddListener(this.OnCloseBtnClick);
//}
_btnSkin.gameObject.SetActive(true);
_btnSkin.onClick.AddListener(this.OnSkinBtnClick);
_chaWidget = _goChaRoot.AddComponent<ChaWidget>();
}
private void OnEnable()
{
if (!_start)
return;
this.RegisterThis();
this.Refresh();
}
private void OnDisable()
{
this.UnregisterThis();
}
private bool _start;
private System.Collections.IEnumerator Start()
{
if (!_start)
{
_start = true;
OnEnable();
}
yield return null;
}
private readonly int[] _notificationInterests = new int[] {
GlobalDefine.EVENT_PLAYER_EQUIPMENT_CHANGED,
GlobalDefine.EVENT_EQUIPMENT_SUIT,
};
public override IList<int> ListNotificationInterests()
{
return _notificationInterests;
}
public override void HandleNotification(INotification notification)
{
if (notification.Name == GlobalDefine.EVENT_PLAYER_EQUIPMENT_CHANGED)
{
if (notification.Type == "set" || notification.Type == "sets")
{
RefreshEquipment(true);
SoundProxy.PlayFxAsync("Sounds/main_equipment_btn.mp3");
}
else if (notification.Type == "upgrade")
{
RefreshEquipment(false);
SoundProxy.PlayFxAsync("Sounds/voice_eq_up.mp3");
}
}
else if (notification.Name == GlobalDefine.EVENT_EQUIPMENT_SUIT)
{
RefreshEquipment(false);
SoundProxy.PlayFxAsync("Sounds/voice_eq_up.mp3");
}
}
}
}