This commit is contained in:
MuHua-123
2025-09-29 17:58:53 +08:00
parent 153e254d33
commit a18bea561a
180 changed files with 1325 additions and 189 deletions
@@ -0,0 +1,59 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
using MuHua;
namespace MuHuaEditor {
/// <summary>
/// 装备枚举
/// </summary>
public class UIEquipmentEnum<T> : ModuleUIPanel where T : Enum {
public Action<T> callback;
public ModuleUIItems<UIItem, T> items;
public UIEquipmentEnum(VisualElement element, VisualTreeAsset templateAsset, Action<T> callback) : base(element) {
this.callback = callback;
items = new ModuleUIItems<UIItem, T>(element, templateAsset,
(data, element) => new UIItem(data, element, this));
}
/// <summary> 释放资源 </summary>
public void Release() => items.Release();
/// <summary> 初始化 </summary>
public void Initial() {
items.Create(EnumToList());
items.SelectFirst();
}
/// <summary> 设置值 </summary>
public void Settings(T value) => callback?.Invoke(value);
private List<T> EnumToList() {
var list = new List<T>();
foreach (var name in Enum.GetValues(typeof(T))) { list.Add((T)name); }
return list;
}
/// <summary> UI项 </summary>
public class UIItem : ModuleUIItem<T> {
public readonly UIEquipmentEnum<T> parent;
public Button Button => Q<Button>("Button");
public UIItem(T value, VisualElement element, UIEquipmentEnum<T> parent) : base(value, element) {
this.parent = parent;
Button.text = value.ToString();
Button.clicked += Select;
}
public override void DefaultState() {
Button.EnableInClassList("button-s", false);
}
public override void SelectState() {
parent.Settings(value);
Button.EnableInClassList("button-s", true);
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1a27a9357cd2dfb46b03783e745821ff
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,58 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
using MuHua;
namespace MuHuaEditor {
/// <summary>
/// 装备 - UI列表
/// </summary>
public class UIEquipmentList : ModuleUIPanel, UIControl {
public Action<EquipmentConst> callback;
public UIScrollViewListV<UIItem, EquipmentConst> items;
public VisualElement ScrollView => Q<VisualElement>("ScrollView");
public UIEquipmentList(VisualElement element, VisualElement canvas, VisualTreeAsset templateAsset, Action<EquipmentConst> callback) : base(element) {
this.callback = callback;
items = new UIScrollViewListV<UIItem, EquipmentConst>(ScrollView, canvas, templateAsset,
(data, element) => new UIItem(data, element, this));
}
public void Update() => items.Update();
public void Dispose() => items.Dispose();
/// <summary> 初始化 </summary>
public void Initial(List<EquipmentConst> equipments) {
items.Create(equipments);
items.SelectFirst();
}
/// <summary> 设置值 </summary>
public void Settings(EquipmentConst value) => callback?.Invoke(value);
/// <summary> UI项 </summary>
public class UIItem : ModuleUIItem<EquipmentConst> {
public readonly UIEquipmentList parent;
public Button Button => Q<Button>("Button");
public UIItem(EquipmentConst value, VisualElement element, UIEquipmentList parent) : base(value, element) {
this.parent = parent;
Button.text = value.name;
Button.clicked += Select;
}
public override void DefaultState() {
Button.EnableInClassList("button-s", false);
}
public override void SelectState() {
parent.Settings(value);
Button.EnableInClassList("button-s", true);
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ea8d2198def9909448f54d619cfc65aa
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: