Merge remote-tracking branch 'origin/develop' into feature/chat_01

This commit is contained in:
CuongNV
2026-04-07 15:31:57 +07:00
37 changed files with 8762 additions and 810 deletions
+3 -3
View File
@@ -4834,7 +4834,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &7306104429597638794
RectTransform:
m_ObjectHideFlags: 0
@@ -7774,7 +7774,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!4 &330835371656537333
Transform:
m_ObjectHideFlags: 0
@@ -11321,7 +11321,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &5823843793071880086
RectTransform:
m_ObjectHideFlags: 0
@@ -12,8 +12,8 @@ RenderTexture:
Hash: 00000000000000000000000000000000
m_IsAlphaChannelOptional: 0
serializedVersion: 6
m_Width: 512
m_Height: 512
m_Width: 1024
m_Height: 1024
m_AntiAliasing: 1
m_MipCount: -1
m_DepthStencilFormat: 90
@@ -146,7 +146,6 @@ namespace BrewMonster
pEvent.SetDelay(dwDelayTime);
pEvent.SetReverse(bReverse);
pEvent.SetParam(param);
BMLogger.LogError("[HoangDev] bTraceTarget=" + bTraceTarget);
pEvent.SetTraceTarget(bTraceTarget);
pEvent.SetModifier(dwModifier);
pEvent.SetIsCluster(bCluster);
@@ -49,6 +49,9 @@ namespace BrewMonster.Scripts.Managers
[SerializeField] private Button splitDecreaseButton;
[SerializeField] private Button splitMaxButton;
[Header("Stack combine — merge into another stack (C++ inventory drag-merge, assign in Inspector)")]
[SerializeField] private Button combineStackButton;
private int _splitAmount = 1;
private int _splitMaxAmount = 1;
@@ -126,6 +129,7 @@ namespace BrewMonster.Scripts.Managers
view = new InventoryView();
WireBagTabButtons();
WireSplitUI();
WireCombineUI();
//if (currentDragImage == null)
//{
@@ -207,10 +211,21 @@ namespace BrewMonster.Scripts.Managers
}
}
private void WireCombineUI()
{
if (combineStackButton != null)
{
combineStackButton.onClick.RemoveAllListeners();
combineStackButton.onClick.AddListener(() => CombineSelectedStack());
}
}
private void ShowSplitPanel(bool show)
{
if (splitPanelRoot != null)
splitPanelRoot.SetActive(show);
if (IsSplitCloseButtonOnModal() && splitCloseButton != null)
splitCloseButton.gameObject.SetActive(show);
}
/// <summary>
@@ -775,6 +790,100 @@ namespace BrewMonster.Scripts.Managers
return true;
}
/// <summary>
/// Merge from the selected slot into another stack of the same template (C++ <c>CDlgInventory::ExchangeItem</c>
/// branch that calls <c>c2s_CmdMoveIvtrItem</c> when dest matches and pile limit allows).
/// Picks the lowest-index compatible destination with free stack space.
/// </summary>
public bool CombineSelectedStack()
{
if (currentSelectedItem == null)
{
Debug.LogWarning("[InventoryUI] CombineSelectedStack: no item selected");
return false;
}
if (currentSelectedPackage != PKG_INVENTORY)
{
Debug.LogWarning($"[InventoryUI] CombineSelectedStack: unsupported package {currentSelectedPackage} (only PKG_INVENTORY supported)");
return false;
}
if (!TryGetInventoryMergeTarget(currentSelectedSlot, currentSelectedItem, out int dstSlot, out int moveAmount))
{
Debug.LogWarning("[InventoryUI] CombineSelectedStack: no merge target with free stack space");
return false;
}
UnityGameSession.RequestMoveIvtrItem((byte)currentSelectedSlot, (byte)dstSlot, (uint)moveAmount);
RefreshAll();
return true;
}
/// <summary>
/// Pile cap for stacking: instance <see cref="EC_IvtrItem.m_iPileLimit"/> (from essence <c>pile_num_max</c>) is authoritative;
/// <see cref="EC_IvtrItem.GetPileLimit"/> may still be 1 if element reflection misses field names.
/// </summary>
private static int GetEffectivePileLimitForStack(int tid, EC_IvtrItem a, EC_IvtrItem b)
{
int p = Math.Max(1, EC_IvtrItem.GetPileLimit(tid));
if (a != null)
p = Math.Max(p, Math.Max(1, a.GetPileLimitInstance()));
if (b != null)
p = Math.Max(p, Math.Max(1, b.GetPileLimitInstance()));
return p;
}
/// <summary>First eligible slot (lowest index) that can accept part or all of <paramref name="srcItem"/>.</summary>
private static bool TryGetInventoryMergeTarget(int srcSlot, EC_IvtrItem srcItem, out int dstSlot, out int moveAmount)
{
dstSlot = -1;
moveAmount = 0;
if (srcItem == null || srcItem.IsFrozen())
return false;
int tid = srcItem.GetTemplateID();
int srcCount = srcItem.GetCount();
if (srcCount < 1)
return false;
var host = CECGameRun.Instance?.GetHostPlayer();
var inv = host?.GetInventory(PKG_INVENTORY);
if (inv == null)
return false;
int size = inv.GetSize();
for (int i = 0; i < size; i++)
{
if (i == srcSlot)
continue;
var dst = inv.GetItem(i, false);
if (dst == null || dst.IsFrozen())
continue;
if (dst.GetTemplateID() != tid)
continue;
int pile = GetEffectivePileLimitForStack(tid, srcItem, dst);
if (pile <= 1)
continue;
int room = pile - dst.GetCount();
if (room <= 0)
continue;
int move = Math.Min(srcCount, room);
if (move <= 0)
continue;
dstSlot = i;
moveAmount = move;
return true;
}
return false;
}
private int FindEmptySlotInPackage(byte package)
{
var host = CECGameRun.Instance?.GetHostPlayer();
@@ -1197,6 +1306,67 @@ namespace BrewMonster.Scripts.Managers
private void ShowDetailPanel(bool show)
{
EC_UIUtility.ShowPanel(detailPanelRoot.gameObject, show);
if (!show)
{
RefreshSplitControlsVisibility(0, null);
RefreshCombineControlsVisibility(0, null);
}
}
/// <summary>
/// Split affordance only for main bag stacks (same as <see cref="SeparateSelectedStack"/>).
/// If <c>splitCloseButton</c> is parented under <c>splitPanelRoot</c>, its visibility follows the modal (not this rule).
/// </summary>
private bool IsSplitCloseButtonOnModal()
{
return splitPanelRoot != null && splitCloseButton != null &&
splitCloseButton.transform.IsChildOf(splitPanelRoot.transform);
}
private bool CanShowSplitControls(byte package, EC_IvtrItem item)
{
if (item == null)
return false;
if (package != PKG_INVENTORY)
return false;
int n = item.GetCount();
if (n < 2 && item.m_iCount >= 2)
n = item.m_iCount;
return n >= 2;
}
/// <summary>
/// <c>splitOpenButton</c>: show only when a splittable main-bag stack is selected (detail panel).
/// <c>splitCloseButton</c>: if it lives on the split modal, show only when modal is open; else same as open (detail-placed cancel).
/// </summary>
private void RefreshSplitControlsVisibility(byte package, EC_IvtrItem item)
{
bool canSplit = CanShowSplitControls(package, item);
if (splitOpenButton != null)
splitOpenButton.gameObject.SetActive(canSplit);
if (splitCloseButton != null)
{
if (IsSplitCloseButtonOnModal())
splitCloseButton.gameObject.SetActive(splitPanelRoot != null && splitPanelRoot.activeSelf);
else
splitCloseButton.gameObject.SetActive(canSplit);
}
}
private bool CanShowCombineControls(byte package, EC_IvtrItem item)
{
if (item == null || package != PKG_INVENTORY)
return false;
return TryGetInventoryMergeTarget(currentSelectedSlot, item, out _, out _);
}
private void RefreshCombineControlsVisibility(byte package, EC_IvtrItem item)
{
bool canCombine = CanShowCombineControls(package, item);
if (combineStackButton != null)
combineStackButton.gameObject.SetActive(canCombine);
}
private Button GetButtonForSlot(byte package, int slot)
@@ -1297,6 +1467,9 @@ namespace BrewMonster.Scripts.Managers
// Show panel first
// 先显示面板
ShowDetailPanel(true);
// After detail root is active so child buttons actually appear (fixes split controls under inactive parents).
RefreshSplitControlsVisibility(package, item);
RefreshCombineControlsVisibility(package, item);
//Refresh the position of the description text. Used for UI logic purpose.
descriptionText.tmp.gameObject.GetComponent<ItemInfoText>()?.RefreshLayout();
@@ -505,7 +505,7 @@ namespace BrewMonster.Scripts
// Common field/property names across item essences
string[] names = new[]
{
"pilelimit", "pile_limit", "pileLimit", "stack", "stack_max", "stackMax", "max_stack", "maxStack"
"pile_num_max", "pilelimit", "pile_limit", "pileLimit", "stack", "stack_max", "stackMax", "max_stack", "maxStack"
};
foreach (var name in names)
{
@@ -3159,6 +3159,8 @@ namespace BrewMonster
try
{
await SetPlayerModel((byte)m_iProfession, (byte)m_iGender);
// load all equipments
}
catch (Exception ex)
{
+116 -14
View File
@@ -6,12 +6,16 @@ using BrewMonster.Scripts;
using CSNetwork.GPDataType;
using ModelRenderer.Scripts.Common;
using PerfectWorld.Scripts.Managers;
using TMPro;
using UnityEngine;
namespace PerfectWorld.Scripts
{
public class CECMatter : CECObject
{
private static Mesh s_itemNameQuadMesh;
private static Material s_itemNameBgMaterial;
// Matter information got from server
public struct INFO
{
@@ -118,12 +122,12 @@ namespace PerfectWorld.Scripts
public static async Task<CECMatter> Init(info_matter Info)
{
INFO matterInfo = new INFO();
matterInfo.mid = Info.mid;
matterInfo.mid = Info.mid;
matterInfo.tid = Info.tid & 0x0000ffff;
// get the matter template from elementdataman
DATA_TYPE DataType = DATA_TYPE.DT_INVALID;
var matterData = ElementDataManProvider.GetElementDataMan().get_data_ptr((uint)matterInfo.tid, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
// Determine matter type based on DataType / Determine matter type based on DataType
uint dwMatterType = MATTER_UNKNOWN;
if (DataType == DATA_TYPE.DT_MINE_ESSENCE)
@@ -142,7 +146,7 @@ namespace PerfectWorld.Scripts
{
dwMatterType = MATTER_MONEY;
}
if (matterData != null)
{
var matterDataType = matterData.GetType();
@@ -179,8 +183,8 @@ namespace PerfectWorld.Scripts
collider.size = size;
}
// Create text object to display item name above the cube
// CreateItemNameText(matterObject, info.tid);
CreateItemNameText(matterObject, Info.tid);
// Add a script to handle click events
// MatterCubeClickHandler clickHandler = matterObject.AddComponent<MatterCubeClickHandler>();
// clickHandler.Initialize(Info.mid, this);
@@ -189,7 +193,7 @@ namespace PerfectWorld.Scripts
matterScript.m_iCID = Class_ID.OCID_MATTER;
matterScript.SetMatterInfo(matterInfo);
matterScript.m_dwMatterType = dwMatterType; // Set matter type / Set matter type
// Set level requirement and gather distance for mines / Set level requirement and gather distance for mines
if (dwMatterType == MATTER_MINE && DataType == DATA_TYPE.DT_MINE_ESSENCE)
{
@@ -214,11 +218,11 @@ namespace PerfectWorld.Scripts
// For non-mine items, set a default pickup distance / For non-mine items, set a default pickup distance
matterScript.m_fGatherDist = 3.0f; // Default pickup distance / Default pickup distance
}
matterScript.SetUpCECObject(); // This will reset m_iCID, so we set it again after / This will reset m_iCID, so we set it again after
// Force set CID again after SetUpCECObject (which resets it to OCID_OBJECT) / Force set CID again after SetUpCECObject (which resets it to OCID_OBJECT)
matterScript.m_iCID = Class_ID.OCID_MATTER;
// Store reference to the cube
// matterGameObjects[info.mid] = matterObject;
@@ -237,10 +241,108 @@ namespace PerfectWorld.Scripts
return null;
}
private static void CreateItemNameText(GameObject matterObject, int tid)
{
if (matterObject == null)
return;
// Avoid duplicating if prefab already contains it (or Init called twice).
if (matterObject.transform.Find("ItemNameText") != null)
return;
var textObject = new GameObject("ItemNameText");
textObject.transform.SetParent(matterObject.transform, false);
textObject.transform.localPosition = new Vector3(0f, 0.6f, 0f);
var textMesh = textObject.AddComponent<TextMeshPro>();
string itemName = null;
if (EC_IvtrItemUtils.Instance != null)
itemName = EC_IvtrItemUtils.Instance.ResolveItemName(tid);
if (string.IsNullOrEmpty(itemName))
itemName = $"Item {tid}";
textMesh.text = itemName;
textMesh.fontSize = 3f;
textMesh.color = Color.white;
textMesh.alignment = TextAlignmentOptions.Center;
textMesh.textWrappingMode = TextWrappingModes.NoWrap;
textMesh.overflowMode = TextOverflowModes.Overflow;
textObject.AddComponent<Billboard>();
var background = new GameObject("TextBackground");
background.transform.SetParent(textObject.transform, false);
background.transform.localPosition = Vector3.zero;
background.transform.localScale = new Vector3(2f, 0.8f, 0.1f);
var bgRenderer = background.AddComponent<MeshRenderer>();
var bgFilter = background.AddComponent<MeshFilter>();
bgFilter.sharedMesh = GetOrCreateItemNameQuadMesh();
bgRenderer.sharedMaterial = GetOrCreateItemNameBgMaterial();
}
private static Mesh GetOrCreateItemNameQuadMesh()
{
if (s_itemNameQuadMesh != null)
return s_itemNameQuadMesh;
var quadMesh = new Mesh { name = "CECMatter_ItemNameQuad" };
quadMesh.vertices = new[]
{
new Vector3(-0.5f, -0.5f, 0),
new Vector3(0.5f, -0.5f, 0),
new Vector3(0.5f, 0.5f, 0),
new Vector3(-0.5f, 0.5f, 0)
};
quadMesh.triangles = new[] { 0, 1, 2, 0, 2, 3 };
quadMesh.uv = new[]
{
new Vector2(0, 0),
new Vector2(1, 0),
new Vector2(1, 1),
new Vector2(0, 1)
};
quadMesh.RecalculateNormals();
quadMesh.RecalculateBounds();
s_itemNameQuadMesh = quadMesh;
return s_itemNameQuadMesh;
}
private static Material GetOrCreateItemNameBgMaterial()
{
if (s_itemNameBgMaterial != null)
return s_itemNameBgMaterial;
var shader = Shader.Find("Unlit/Color");
if (shader == null)
shader = Shader.Find("Sprites/Default");
if (shader == null)
shader = Shader.Find("Standard");
if (shader == null)
return null;
var mat = new Material(shader) { name = "CECMatter_ItemNameBg" };
mat.color = new Color(0f, 0f, 0f, 0.7f);
// Best-effort: make it transparent if the shader supports it.
if (mat.HasProperty("_Mode"))
mat.SetFloat("_Mode", 3f);
if (mat.HasProperty("_Surface"))
mat.SetFloat("_Surface", 1f);
s_itemNameBgMaterial = mat;
return s_itemNameBgMaterial;
}
private new void Update()
{
base.Update();
// Recovery: after Unity domain reload, manager dictionaries reset but scene objects persist.
// Keep trying until we successfully register.
if (!m_registeredToManMatter)
@@ -269,17 +371,17 @@ namespace PerfectWorld.Scripts
// return;
//
// Ray ray = mainCamera.ScreenPointToRay(screenPosition);
//
//
// RaycastHit[] hits = Physics.RaycastAll(ray);
//
//
// foreach (RaycastHit hit in hits)
// {
// if (hit.collider.gameObject == this.gameObject ||
// if (hit.collider.gameObject == this.gameObject ||
// hit.collider.transform.IsChildOf(this.transform))
// {
// Debug.Log($"CECMatter::RaycastHit():: mid: {m_MatterInfo.mid}");
// UnityGameSession.RequestPickupItem(m_MatterInfo.mid, m_MatterInfo.tid);
// break;
// break;
// }
// }
// }
@@ -290,4 +392,4 @@ namespace PerfectWorld.Scripts
return m_MatterInfo.mid;
}
}
}
}
@@ -506,14 +506,14 @@ namespace BrewMonster
// TODO: implement other shortcut types
switch ((CECShortcut.ShortcutType)pSC.GetType())
{
/* case CECShortcut.ShortcutType.SCT_COMMAND:
{
CECSCCommand cmdSC = (CECSCCommand)pSC;
data.AddRange(BitConverter.GetBytes(cmdSC.GetCommandID()));
data.AddRange(BitConverter.GetBytes((int)cmdSC.GetParam()));
break;
}
*/
case CECShortcut.ShortcutType.SCT_COMMAND:
{
CECSCCommand cmdSC = (CECSCCommand)pSC;
data.AddRange(BitConverter.GetBytes(cmdSC.GetCommandID()));
data.AddRange(BitConverter.GetBytes((int)cmdSC.GetParam()));
break;
}
case CECShortcut.ShortcutType.SCT_SKILL:
{
CECSCSkill skillSC = (CECSCSkill)pSC;
@@ -600,7 +600,7 @@ namespace BrewMonster
switch ((CECShortcut.ShortcutType)iSCType)
{
/*case CECShortcut.ShortcutType.SCT_COMMAND:
case CECShortcut.ShortcutType.SCT_COMMAND:
{
int iCommand = BitConverter.ToInt32(pDataBuf, offset);
offset += sizeof(int);
@@ -612,17 +612,15 @@ namespace BrewMonster
offset += sizeof(int);
}
CECSCCommand pCmdSC = null;
if (iCommand == CECSCCommand.CMD_PLAYPOSE)
pCmdSC = pGameRun.GetPoseCmdShortcut(iParam);
else
pCmdSC = pGameRun.GetCmdShortcut(iCommand);
if (pCmdSC != null)
CreateClonedShortcut(iSlot, pCmdSC);
// Recreate command shortcut from serialized command id + param.
// This is required so "action/command" shortcuts on quickbar persist after relog.
var cmd = new CECSCCommand(iCommand);
if (dwVer >= 2)
cmd.SetParam((uint)iParam);
SetShortcut(iSlot, cmd);
break;
}*/
}
case CECShortcut.ShortcutType.SCT_SKILL:
{
@@ -935,6 +933,8 @@ namespace BrewMonster
}
public CECSCCommand(CECSCCommand src)
{
// Keep shortcut type when cloning
m_iSCType = src.m_iSCType;
m_iCommand = src.m_iCommand;
m_dwParam = src.m_dwParam;
}
@@ -1,7 +1,7 @@
using BrewMonster.Scripts;
using System.Threading.Tasks;
using UnityEngine;
using CSNetwork.GPDataType;
using Cysharp.Threading.Tasks;
namespace BrewMonster
{
public class CECClonePlayer : CECPlayer
@@ -37,6 +37,7 @@ namespace BrewMonster
}
return false;
}
protected async Task<bool> LoadFrom(CECHostPlayer player, bool atOnce)
{
int i = 0;
@@ -87,6 +88,7 @@ namespace BrewMonster
return await Load(player, atOnce);
}
protected async Task<bool> LoadFrom(EC_ElsePlayer player, bool atOnce){
// Create equipments
for (int i=0; i < InventoryConst.SIZE_ALL_EQUIPIVTR; i++){
@@ -97,6 +99,7 @@ namespace BrewMonster
}
return await Load(player, atOnce);
}
protected async Task<bool> Load(CECPlayer player, bool atOnce){
player.CloneSimplePropertyTo(this);
OnCloneSimpleProperty();
@@ -104,24 +107,205 @@ namespace BrewMonster
BMLogger.LogError("CECCloneElsePlayer::Load, Failed to load skeleton.");
return false;
}
await LoadAllPlayerEquipments();
SetNewExtendStates(0, m_aExtStates, OBJECT_EXT_STATE_COUNT);
if (player.GetOriginalShapeID() != 0){
await TransformShape(player.GetShapeMask(), true);
}
return true;
}
}
protected virtual bool ShouldLoadEquipment(int index)
{
return true;
}
protected virtual void OnCloneSimpleProperty(){}
public virtual CECModel GetRenderModel(){
return m_pPlayerCECModel; //m_pPetModel ? m_pPetModel : m_pPlayerModel;
//Todo: add pet model when implement pet? system
}
public void PlayActionByName(string szActName){
m_pActionController.PlayNonSkillActionWithName((int)PLAYER_ACTION_TYPE.ACT_MAX, szActName);
}
private async UniTask LoadAllPlayerEquipments()
{
var elemendataman = BrewMonster.ElementDataManProvider.GetElementDataMan();
DATA_TYPE DataType = default;
bool useDefaultUpper = true;
bool useDefaultLower = true;
bool useDefaultWrist = true;
bool useDefaultFoot = true;
int equipment = 0;
for(int i = 0; i < m_aEquips.Length; i++)
{
equipment = m_aEquips[i];
var equipData = elemendataman.get_data_ptr((uint)equipment, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
if (equipData == null)
{
switch (i)
{
case InventoryConst.EQUIPIVTR_BODY:
useDefaultUpper = true;
break;
case InventoryConst.EQUIPIVTR_LEG:
useDefaultLower = true;
break;
case InventoryConst.EQUIPIVTR_WRIST:
useDefaultWrist = true;
break;
case InventoryConst.EQUIPIVTR_FOOT:
useDefaultFoot = true;
break;
}
continue;
}
switch (DataType)
{
case DATA_TYPE.DT_WEAPON_ESSENCE:
var weaponData = (WEAPON_ESSENCE)equipData;
string fileModelRight = AFile.NormalizePath(weaponData.FileModelRight, true).ToLower();
string fileModelLeft = AFile.NormalizePath(weaponData.FileModelLeft, true).ToLower();
GameObject weaponPrefab = null;
if (!string.IsNullOrEmpty(fileModelRight))
{
weaponPrefab = await AddressableManager.Instance.LoadPrefabAsync(fileModelRight);
var weaponObject = Instantiate(weaponPrefab);
if (weaponObject != null)
{
weaponObject.transform.SetParent(FindChildObjectRecursive(transform, _hh_right_hand_weapon).transform);
weaponObject.transform.localPosition = weaponPrefab.transform.localPosition;
weaponObject.transform.localRotation = weaponPrefab.transform.localRotation;
weaponObject.transform.localScale = Vector3.one;
weaponObject.SetActive(true);
}
}
if (!string.IsNullOrEmpty(fileModelLeft))
{
weaponPrefab = await AddressableManager.Instance.LoadPrefabAsync(fileModelLeft);
var weaponObject = Instantiate(weaponPrefab);
if (weaponObject != null)
{
weaponObject.transform.SetParent(FindChildObjectRecursive(transform, _hh_left_hand_weapon).transform);
weaponObject.transform.localPosition = weaponPrefab.transform.localPosition;
weaponObject.transform.localRotation = weaponPrefab.transform.localRotation;
weaponObject.transform.localScale = Vector3.one;
weaponObject.SetActive(true);
}
}
break;
case DATA_TYPE.DT_ARMOR_ESSENCE:
var pArmor = (ARMOR_ESSENCE)equipData;
var nLocation = pArmor.equip_location;
// BMLogger.Log($"ShowEquipments():: Armor Essence: {pArmor.RealName}");
var armorSkinPath = _GenEquipmentSkinPath(m_iProfession, m_iGender, pArmor.RealName);
if (!armorSkinPath.EndsWith(".ecm"))
{
armorSkinPath += ".ecm";
}
var armorPrefab = await AddressableManager.Instance.LoadPrefabAsync(armorSkinPath);
if (armorPrefab != null)
{
var armorObject = Instantiate(armorPrefab);
armorObject.transform.SetParent(GetSkeletonBuilder()?.transform);
armorObject.transform.localPosition = Vector3.zero;
armorObject.transform.localRotation = Quaternion.identity;
armorObject.transform.localScale = Vector3.one;
var skinnedMeshRenderer = armorObject.GetComponent<SkinnedMeshRenderer>();
var skinnedMeshRenderereFromDataList = armorObject.GetComponentsInChildren<SkinnedMeshRenderFromData>();
foreach (var skinnedMeshRenderereFromData in skinnedMeshRenderereFromDataList)
{
if (skinnedMeshRenderereFromData != null)
{
skinnedMeshRenderereFromData._skinnedMeshRenderer.bones = GetSkeletonBuilder().GetBones(skinnedMeshRenderereFromData.BoneNames);
skinnedMeshRenderereFromData._skinnedMeshRenderer.rootBone = skinnedMeshRenderereFromData._skinnedMeshRenderer.bones[^1];
}
}
// disable/enable the default equipment
switch (nLocation)
{
case (uint)CECPlayer.SkinIndex.SKIN_UPPER_BODY_INDEX:
useDefaultUpper = false;
break;
case (uint)CECPlayer.SkinIndex.SKIN_LOWER_INDEX:
useDefaultLower = false;
break;
case (uint)CECPlayer.SkinIndex.SKIN_WRIST_INDEX:
useDefaultWrist = false;
break;
case (uint)CECPlayer.SkinIndex.SKIN_FOOT_INDEX:
useDefaultFoot = false;
break;
}
}
break;
//TODO: Handle Wings later
// case DATA_TYPE.DT_WINGMANWING_ESSENCE:
// m_wingType = enumWingType.WINGTYPE_WING;
// //ChangeWing(pResult, static_cast<const WINGMANWING_ESSENCE*>(pEquip)->file_model);
// var pWingData = (WINGMANWING_ESSENCE)equipData;
// //string path1 = "models/players/通用装备/翅膀/天鹅之翼/天鹅之翼_Test.ecm";
// //var pWingPrefab = await AddressableManager.Instance.LoadPrefabAsync(path1);
// var pWingPrefab = await AddressableManager.Instance.LoadPrefabAsync(pWingData.FileModel.ToLower().Replace('\\', '/'));
// //Transform parentWing = FindChildRecursive(_pPlayerModel.transform, "HH_chibang");
// if(pWingPrefab != null)
// {
// var pflySwordObject = Instantiate(pWingPrefab).transform;
// pflySwordObject.parent = m_pPlayerCECModel.m_skeletonBuilder.GetHook("HH_chibang").transform;
// pflySwordObject.localPosition = Vector3.zero;
// pflySwordObject.localRotation = Quaternion.identity;
// pflySwordObject.localScale = Vector3.one;
// m_Wing = pflySwordObject.transform;
// m_Wing.gameObject.SetActive(false);
// }
// BMLogger.Log($"ShowEquipments():: Wingman Wing Essence: {pWingData.id} {pWingData.Name} -- {pWingData.FileModel}");
// break;
default:
break;
switch (i)
{
case InventoryConst.EQUIPIVTR_BODY:
useDefaultUpper = false;
break;
case InventoryConst.EQUIPIVTR_LEG:
useDefaultLower = false;
break;
case InventoryConst.EQUIPIVTR_WRIST:
useDefaultWrist = false;
break;
case InventoryConst.EQUIPIVTR_FOOT:
useDefaultFoot = false;
break;
}
}
}
PlayerDefaultEquipments.DefaultUpper.SetActive(useDefaultUpper);
PlayerDefaultEquipments.DefaultLower.SetActive(useDefaultLower);
PlayerDefaultEquipments.DefaultWirst.SetActive(useDefaultWrist);
PlayerDefaultEquipments.DefaultFoot.SetActive(useDefaultFoot);
}
}
}
@@ -19,6 +19,9 @@ using PerfectWorld.Scripts.Managers;
using UnityEngine;
using BrewMonster.Scripts.Managers;
using System.Collections.Generic;
using static BrewMonster.CECHostPlayer;
using TMPro;
using BrewMonster.PerfectWorld.Scripts.UI;
namespace BrewMonster
{
@@ -995,6 +998,7 @@ namespace BrewMonster
m_bBaseInfoReady = true;
SetPlayerName(szName ?? "");
EC_Game.GetGameRun().AddPlayerName(m_PlayerInfo.cid, szName, true);
GetComponentInChildren<UIPlayer>().RefreshName();
}
// Level up
public void LevelUp()
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using BrewMonster.Scripts.Managers;
using CSNetwork.Protocols.RPCData;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BrewMonster.Scripts
@@ -42,7 +43,10 @@ namespace BrewMonster.Scripts
for (int i = 0; i < roleInfos.Count; i++)
{
RoleInfo role = roleInfos[i];
GameObject model = await NPCManager.Instance.GetModelPlayer(role.occupation, role.gender);
GameObject model = await LoadPlayerModel(role);
if (model == null)
continue;
if (version != _loadVersion)
{
@@ -104,5 +108,202 @@ namespace BrewMonster.Scripts
playerModels.Clear();
playerModelIds.Clear();
}
private async UniTask<GameObject> LoadPlayerModel(RoleInfo role)
{
var elemendataman = BrewMonster.ElementDataManProvider.GetElementDataMan();
GameObject prefab = await NPCManager.Instance.GetModelPlayer(role.occupation, role.gender);
if (prefab == null)
{
return null;
}
GameObject model = Instantiate(prefab);
var playerDefaultEquipments = model.GetComponentInChildren<PlayerDefaultEquipments>();
if (playerDefaultEquipments == null)
{
return null;
}
DATA_TYPE DataType = default;
bool useDefaultUpper = true;
bool useDefaultLower = true;
bool useDefaultWrist = true;
bool useDefaultFoot = true;
GRoleInventory equipment;
for(int i = 0; i < role.equipment.Count; i++)
{
equipment = role.equipment[i];
var equipData = elemendataman.get_data_ptr((uint)equipment.id, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
switch (DataType)
{
case DATA_TYPE.DT_WEAPON_ESSENCE:
var weaponData = (WEAPON_ESSENCE)equipData;
string fileModelRight = AFile.NormalizePath(weaponData.FileModelRight, true).ToLower();
string fileModelLeft = AFile.NormalizePath(weaponData.FileModelLeft, true).ToLower();
GameObject weaponPrefab = null;
if (!string.IsNullOrEmpty(fileModelRight))
{
weaponPrefab = await AddressableManager.Instance.LoadPrefabAsync(fileModelRight);
var weaponObject = Instantiate(weaponPrefab);
if (weaponObject != null)
{
weaponObject.transform.SetParent(FindChildObjectRecursive(model.transform, CECPlayer._hh_right_hand_weapon).transform);
weaponObject.transform.localPosition = weaponPrefab.transform.localPosition;
weaponObject.transform.localRotation = weaponPrefab.transform.localRotation;
weaponObject.transform.localScale = Vector3.one;
weaponObject.SetActive(true);
}
}
if (!string.IsNullOrEmpty(fileModelLeft))
{
weaponPrefab = await AddressableManager.Instance.LoadPrefabAsync(fileModelLeft);
var weaponObject = Instantiate(weaponPrefab);
if (weaponObject != null)
{
weaponObject.transform.SetParent(FindChildObjectRecursive(model.transform, CECPlayer._hh_left_hand_weapon).transform);
weaponObject.transform.localPosition = weaponPrefab.transform.localPosition;
weaponObject.transform.localRotation = weaponPrefab.transform.localRotation;
weaponObject.transform.localScale = Vector3.one;
weaponObject.SetActive(true);
}
}
break;
case DATA_TYPE.DT_ARMOR_ESSENCE:
var pArmor = (ARMOR_ESSENCE)equipData;
var nLocation = pArmor.equip_location;
// BMLogger.Log($"ShowEquipments():: Armor Essence: {pArmor.RealName}");
var armorSkinPath = CECPlayer._GenEquipmentSkinPath(role.occupation, role.gender, pArmor.RealName);
if (!armorSkinPath.EndsWith(".ecm"))
{
armorSkinPath += ".ecm";
}
var armorPrefab = await AddressableManager.Instance.LoadPrefabAsync(armorSkinPath);
if (armorPrefab != null)
{
var armorObject = Instantiate(armorPrefab);
armorObject.transform.SetParent(GetSkeletonBuilder(model)?.transform);
armorObject.transform.localPosition = Vector3.zero;
armorObject.transform.localRotation = Quaternion.identity;
armorObject.transform.localScale = Vector3.one;
var skinnedMeshRenderer = armorObject.GetComponent<SkinnedMeshRenderer>();
var skinnedMeshRenderereFromDataList = armorObject.GetComponentsInChildren<SkinnedMeshRenderFromData>();
foreach (var skinnedMeshRenderereFromData in skinnedMeshRenderereFromDataList)
{
if (skinnedMeshRenderereFromData != null)
{
skinnedMeshRenderereFromData._skinnedMeshRenderer.bones = GetSkeletonBuilder(model).GetBones(skinnedMeshRenderereFromData.BoneNames);
skinnedMeshRenderereFromData._skinnedMeshRenderer.rootBone = skinnedMeshRenderereFromData._skinnedMeshRenderer.bones[^1];
}
}
// disable/enable the default equipment
switch (nLocation)
{
case (uint)CECPlayer.SkinIndex.SKIN_UPPER_BODY_INDEX:
useDefaultUpper = false;
break;
case (uint)CECPlayer.SkinIndex.SKIN_LOWER_INDEX:
useDefaultLower = false;
break;
case (uint)CECPlayer.SkinIndex.SKIN_WRIST_INDEX:
useDefaultWrist = false;
break;
case (uint)CECPlayer.SkinIndex.SKIN_FOOT_INDEX:
useDefaultFoot = false;
break;
}
}
break;
//TODO: Handle Wings later
// case DATA_TYPE.DT_WINGMANWING_ESSENCE:
// m_wingType = enumWingType.WINGTYPE_WING;
// //ChangeWing(pResult, static_cast<const WINGMANWING_ESSENCE*>(pEquip)->file_model);
// var pWingData = (WINGMANWING_ESSENCE)equipData;
// //string path1 = "models/players/通用装备/翅膀/天鹅之翼/天鹅之翼_Test.ecm";
// //var pWingPrefab = await AddressableManager.Instance.LoadPrefabAsync(path1);
// var pWingPrefab = await AddressableManager.Instance.LoadPrefabAsync(pWingData.FileModel.ToLower().Replace('\\', '/'));
// //Transform parentWing = FindChildRecursive(_pPlayerModel.transform, "HH_chibang");
// if(pWingPrefab != null)
// {
// var pflySwordObject = Instantiate(pWingPrefab).transform;
// pflySwordObject.parent = m_pPlayerCECModel.m_skeletonBuilder.GetHook("HH_chibang").transform;
// pflySwordObject.localPosition = Vector3.zero;
// pflySwordObject.localRotation = Quaternion.identity;
// pflySwordObject.localScale = Vector3.one;
// m_Wing = pflySwordObject.transform;
// m_Wing.gameObject.SetActive(false);
// }
// BMLogger.Log($"ShowEquipments():: Wingman Wing Essence: {pWingData.id} {pWingData.Name} -- {pWingData.FileModel}");
// break;
default:
break;
switch (equipment.pos)
{
case InventoryConst.EQUIPIVTR_BODY:
useDefaultUpper = false;
break;
case InventoryConst.EQUIPIVTR_LEG:
useDefaultLower = false;
break;
case InventoryConst.EQUIPIVTR_WRIST:
useDefaultWrist = false;
break;
case InventoryConst.EQUIPIVTR_FOOT:
useDefaultFoot = false;
break;
}
}
}
playerDefaultEquipments.DefaultUpper.SetActive(useDefaultUpper);
playerDefaultEquipments.DefaultLower.SetActive(useDefaultLower);
playerDefaultEquipments.DefaultWirst.SetActive(useDefaultWrist);
playerDefaultEquipments.DefaultFoot.SetActive(useDefaultFoot);
return model;
}
private GameObject FindChildObjectRecursive(Transform parent, string name)
{
foreach (Transform child in parent)
{
if (child.name == name)
{
return child.gameObject;
}
var childObject = FindChildObjectRecursive(child, name);
if (childObject != null)
{
return childObject;
}
}
return null;
}
private SkeletonBuilder GetSkeletonBuilder(GameObject characterModel)
{
if (characterModel == null)
{
return null;
}
SkeletonBuilder skeletonBuilder = null;
if (skeletonBuilder == null)
{
skeletonBuilder = characterModel.GetComponentInChildren<SkeletonBuilder>();
}
return skeletonBuilder;
}
}
}
@@ -86,9 +86,9 @@ namespace BrewMonster
public Skill88Stub() : base(88)
{
cls = 1;
name = "ӿȪ";
nativename = "ӿȪ";
icon = "ӿȪ";
name = "涌泉";
nativename = "涌泉";
icon = "涌泉";
max_level = 10;
type = 1;
apcost = 0;
@@ -109,11 +109,40 @@ namespace BrewMonster
long_range = 0;
restrict_corpse = 0;
allow_forms = 1;
effect = "ӿȪ";
effect = "涌泉";
doenchant = 1;
dobless = 0;
commoncooldown = 0;
commoncooldowntime = 0;
m_szFlyGfxPath = string.Empty;
m_szHitGrndGfxPath = string.Empty;
m_szHitGfxPath = "策划联入/人物技能/飞行/涌泉中招.gfx";
// GFX Movement and Behavior Parameters / GFX移动和行为参数
m_MoveMode = (GfxMoveMode)0;
m_TargetMode = (GfxTargetMode)0;
m_AttFlyMode = (GfxAttackMode)0;
m_AttHitMode = (GfxAttackMode)0;
m_dwFlyTime = 0;
m_bTraceTarget = false;
m_FlyClusterCount = 1;
m_FlyClusterInterval = 0;
m_HitClusterCount = 1;
m_HitClusterInterval = 0;
m_bOneHit = true;
m_bFadeOut = false;
m_bRelScl = true;
m_fDefTarScl = 1.5f;
// Area parameters (commented out) / 区域参数(已注释)
// m_bArea = false;
// m_Shape = (EmitShape)0;
// m_vSize = new Vector3(0.0f, 0.0f, 0.0f);
// Param (commented out) / 参数(已注释)
// m_paramType = (GfxSkillValType)1;
// m_param = new GFX_SKILL_PARAM();
// m_param.nVal = 0;
restrict_weapons.Add(0);
restrict_weapons.Add(292);
range = new Range();
@@ -86,9 +86,9 @@ namespace BrewMonster
public Skill150Stub() : base(150)
{
cls = 4;
name = "˺ҧ";
nativename = "˺ҧ";
icon = "˺ҧ";
name = "撕咬";
nativename = "撕咬";
icon = "撕咬";
max_level = 10;
type = 1;
apcost = 20;
@@ -109,11 +109,40 @@ namespace BrewMonster
long_range = 0;
restrict_corpse = 0;
allow_forms = 2;
effect = "˺ҧ";
effect = "撕咬";
doenchant = 1;
dobless = 0;
commoncooldown = 0;
commoncooldowntime = 0;
m_szFlyGfxPath = string.Empty;
m_szHitGrndGfxPath = string.Empty;
m_szHitGfxPath = "策划联入/人物技能/击中/撕咬击中.gfx";
// GFX Movement and Behavior Parameters / GFX移动和行为参数
m_MoveMode = (GfxMoveMode)0;
m_TargetMode = (GfxTargetMode)0;
m_AttFlyMode = (GfxAttackMode)0;
m_AttHitMode = (GfxAttackMode)0;
m_dwFlyTime = 0;
m_bTraceTarget = false;
m_FlyClusterCount = 1;
m_FlyClusterInterval = 0;
m_HitClusterCount = 1;
m_HitClusterInterval = 0;
m_bOneHit = true;
m_bFadeOut = false;
m_bRelScl = true;
m_fDefTarScl = 1.5f;
// Area parameters (commented out) / 区域参数(已注释)
// m_bArea = false;
// m_Shape = (EmitShape)0;
// m_vSize = new Vector3(0.0f, 0.0f, 0.0f);
// Param (commented out) / 参数(已注释)
// m_paramType = (GfxSkillValType)1;
// m_param = new GFX_SKILL_PARAM();
// m_param.nVal = 0;
restrict_weapons.Add(9);
restrict_weapons.Add(0);
range = new Range();
@@ -37,7 +37,7 @@ namespace BrewMonster
OnShowDialog();
}
public void Init()
private void Init()
{
int[] objCount = { 8, 2, 2, 27 };
@@ -53,17 +53,17 @@ namespace BrewMonster
image = orderTP,
pLabel = orderTP.GetComponentInChildren<TextMeshProUGUI>()
});
}
}
for (int j = 0; j < 27; j++)
{
var actionTP = Instantiate(actionTemplate, actionContain);
actionTP.gameObject.SetActive(true);
// Set up click handler for action items / 为动作项设置点击处理程序
SetupActionClickHandler(actionTP);
m_aActionInfo.Add(new ActionInfo
{
image = actionTP,
@@ -73,7 +73,7 @@ namespace BrewMonster
//force refresh layout orderContain anc actionContain
//then refresh layout of this gameobject
}
public void OnShowDialog()
private void OnShowDialog()
{
AUIImagePicture pImage;
TextMeshProUGUI pLabel;
@@ -129,14 +129,14 @@ namespace BrewMonster
Debug.Log($"CDlgSkillSubAction::SetupActionClickHandler():: Setting up click handler for action item: {actionImage.name}");
// Get the button component / 获取按钮组件
var button = actionImage.GetComponentInChildren<UnityEngine.UI.Button>();
if (button == null)
if (button == null)
return;
// Remove existing listeners and add our custom handler / 移除现有监听器并添加我们的自定义处理程序
button.onClick.RemoveAllListeners();
button.onClick.AddListener(() => OnActionClicked(actionImage));
}
/// <summary>
/// Handle action icon click, similar to wave hand logic / 处理动作图标点击,类似于挥手逻辑
/// </summary>
@@ -147,7 +147,7 @@ namespace BrewMonster
// Get the shortcut from the action image / 从动作图像获取快捷方式
actionImage.Execute();
}
[Serializable]
public struct ActionInfo
{
@@ -1,3 +1,4 @@
using BrewMonster;
using BrewMonster.UI;
using System;
using System.Collections;
@@ -74,7 +75,7 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay
{
var rectTransform = GetComponent<RectTransform>();
int skillID = int.Parse(this.name.Split('_')[1]);
uiManager.ShowSkillTooltip(m_hintText, rectTransform, () => EventBus.Publish(new OpenAssignSkillEvent(skillID)));
uiManager.ShowSkillTooltip(m_hintText, rectTransform, () => EventBus.Publish(new AssignSkillSelectionChangedEvent(skillID, true)));
}
}
}
@@ -32,38 +32,33 @@ namespace BrewMonster
}
}
public struct OpenAssignSkillEvent
/// <summary>Merged open/close skill selection for assign UI (replaces OpenAssignSkillEvent + CloseAssignSkillEvent).</summary>
public struct AssignSkillSelectionChangedEvent
{
public int skillID;
public OpenAssignSkillEvent(int id)
public bool selected;
public AssignSkillSelectionChangedEvent(int skillId, bool selected)
{
skillID = id;
}
}
public struct CloseAssignSkillEvent
{
public int skillID;
public CloseAssignSkillEvent(int id)
{
skillID = id;
}
}
public struct OpenAssignSlotEvent
{
public int slotIndex;
public OpenAssignSlotEvent(int index)
{
slotIndex = index;
}
}
public struct CloseAssignSlotEvent
{
public int slotIndex;
public CloseAssignSlotEvent(int index)
{
slotIndex = index;
skillID = skillId;
this.selected = selected;
}
}
// public struct OpenAssignSlotEvent
// {
// public int slotIndex;
// public OpenAssignSlotEvent(int index)
// {
// slotIndex = index;
// }
// }
// public struct CloseAssignSlotEvent
// {
// public int slotIndex;
// public CloseAssignSlotEvent(int index)
// {
// slotIndex = index;
// }
// }
public struct OnAssignSkillEvent
{
public int skillID;
@@ -74,4 +69,32 @@ namespace BrewMonster
this.slotIndex = slotIndex;
}
}
/// <summary>Action palette row selection for quickbar assign (same order as CDlgSkillSubAction shortcut sets).</summary>
public struct AssignActionSelectionChangedEvent
{
public int actionSetIndex;
public int shortcutIndexInSet;
public bool selected;
public AssignActionSelectionChangedEvent(int actionSetIndex, int shortcutIndexInSet, bool selected)
{
this.actionSetIndex = actionSetIndex;
this.shortcutIndexInSet = shortcutIndexInSet;
this.selected = selected;
}
}
/// <summary>Published after an action shortcut is written to the assign cache; palette uses indices to UncheckAfterAssign.</summary>
public struct OnAssignActionEvent
{
public int actionSetIndex;
public int shortcutIndexInSet;
public int quickbarSlotIndex;
public OnAssignActionEvent(int actionSetIndex, int shortcutIndexInSet, int quickbarSlotIndex)
{
this.actionSetIndex = actionSetIndex;
this.shortcutIndexInSet = shortcutIndexInSet;
this.quickbarSlotIndex = quickbarSlotIndex;
}
}
}
@@ -0,0 +1,62 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace BrewMonster
{
/// <summary>Assign UI row for command/action shortcuts; toggle only — does not Execute().</summary>
public class AUIToggleActionAssign : AUIToggle
{
[Header("ActionAssign")]
[SerializeField] private int actionSetIndex;
[SerializeField] private int shortcutIndexInSet;
/// <summary>bool: isOn, int: actionSetIndex, int: shortcutIndexInSet</summary>
public event Action<bool, int, int> OnActionAssignToggleChanged;
public override void Awake()
{
UnSubscribeEvents();
SubscribeEvents();
}
public void OnDestroy()
{
UnSubscribeEvents();
}
private void UnSubscribeEvents()
{
if (uiToggle != null)
uiToggle.onValueChanged.RemoveAllListeners();
}
private void SubscribeEvents()
{
if (uiToggle != null)
uiToggle.onValueChanged.AddListener(OnToggleValueChanged);
}
private void OnToggleValueChanged(bool isOn)
{
OnActionAssignToggleChanged?.Invoke(isOn, actionSetIndex, shortcutIndexInSet);
}
public void SetActionSlotIndices(int setIndex, int indexInSet)
{
actionSetIndex = setIndex;
shortcutIndexInSet = indexInSet;
}
public int GetActionSetIndexForAssign() => actionSetIndex;
public int GetShortcutIndexInSetForAssign() => shortcutIndexInSet;
public Toggle GetUIToggle() => uiToggle;
public void UncheckAfterAssign()
{
if (uiToggle != null)
uiToggle.isOn = false;
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b8e4d32c9f5c56dab2e3f45678901bcd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,13 +1,12 @@
using BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay;
using System;
using UnityEngine;
using BrewMonster.UI;
using BrewMonster.Network;
namespace BrewMonster
{
public class AUIToggleAssignSlot : AUIToggle
{
// [Header("AssignSlotToggleUI")]
// [SerializeField] int slotIndex;
public event Action<bool, int> OnSetSlot;
public override void Awake()
{
UnSubscribeEvents();
@@ -21,31 +20,21 @@ namespace BrewMonster
private void UnSubscribeEvents()
{
uiToggle.onValueChanged.RemoveAllListeners();
EventBus.Unsubscribe<OnAssignSkillEvent>(OnAssignSlotEvent);
}
private void SubscribeEvents()
{
Debug.Log($"HoangDev: SubscribeEvents: AssignSlots");
uiToggle.onValueChanged.AddListener(OnToggleValueChanged);
EventBus.Subscribe<OnAssignSkillEvent>(OnAssignSlotEvent);
}
private void OnToggleValueChanged(bool isOn)
{
if (isOn)
{
EventBus.Publish(new OpenAssignSlotEvent(slotIndex));
}else{
EventBus.Publish(new CloseAssignSlotEvent(slotIndex));
}
OnSetSlot?.Invoke(isOn, slotIndex);
}
private void OnAssignSlotEvent(OnAssignSkillEvent @event)
public int GetSlotIndexForAssign() => slotIndex;
public void UncheckAfterAssign()
{
if(@event.slotIndex == slotIndex)
{
var processSkill = CECGameRun.Instance.GetHostPlayer().GetPositiveSkillByID(@event.skillID);
EC_Game.GetGameRun().GetUIManager().GetInGameUIMan().SetCover(this, processSkill.GetIconFile(), EC_GAMEUI_ICONS.ICONS_SKILL);
uiToggle.isOn = false;
}
uiToggle.isOn = false;
}
}
}
@@ -1,11 +1,13 @@
using BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay;
using System;
using UnityEngine;
using UnityEngine.UI;
namespace BrewMonster
{
public class AUIToggleSkillAssign : AUIToggle
{
/// <summary>bool: isOn, int: skillID</summary>
public event Action<bool, int> OnAssignToggleChanged;
public override void Awake()
{
UnSubscribeEvents();
@@ -19,29 +21,21 @@ namespace BrewMonster
private void UnSubscribeEvents()
{
uiToggle.onValueChanged.RemoveAllListeners();
EventBus.Unsubscribe<OnAssignSkillEvent>(OnAssignSkillEvent);
}
private void SubscribeEvents()
{
Debug.Log($"HoangDev: SubscribeEvents: Slot");
uiToggle.onValueChanged.AddListener(OnToggleValueChanged);
EventBus.Subscribe<OnAssignSkillEvent>(OnAssignSkillEvent);
}
private void OnToggleValueChanged(bool isOn)
{
if (isOn)
{
EventBus.Publish(new OpenAssignSkillEvent(skillID));
}else{
EventBus.Publish(new CloseAssignSkillEvent(skillID));
}
OnAssignToggleChanged?.Invoke(isOn, skillID);
}
private void OnAssignSkillEvent(OnAssignSkillEvent @event)
public int GetSkillIdForAssign() => skillID;
/// <summary>Used when assignment completes — unchecks row (fires AssignSkillSelectionChangedEvent via DlgAssignSub).</summary>
public void UncheckAfterAssign()
{
if(@event.skillID != skillID)
{
return;
}
uiToggle.isOn = false;
}
}
@@ -260,7 +260,7 @@ namespace BrewMonster
pClock.SetColor(new Color32(0, 0, 0, 128));
}
}
//if (pSCItem.GetInventory == InventoryConst.IVTRTYPE_EQUIPPACK)
//{
// pCell.SetColor(new Color(128, 128, 255, 128));
@@ -271,6 +271,35 @@ namespace BrewMonster
string itemIcon = pItem.GetIconFile();
GetGameUIMan().SetCover(pCell, itemIcon, EC_GAMEUI_ICONS.ICONS_INVENTORY);
}
}
else if (pSC.GetType() == (int)CECShortcut.ShortcutType.SCT_COMMAND)
{
iIconFile = (int)EC_GAMEUI_ICONS.ICONS_ACTION;
if (pSC.GetType() == (int)CECShortcut.ShortcutType.SCT_COMMAND)
{
CECSCCommand pCommandSC = (CECSCCommand)pSC;
if (pHost.IsInvisible())
{
if (pCommandSC.GetCommandID() == (int)CECSCCommand.CommandID.CMD_STARTTRADE ||
pCommandSC.GetCommandID() == (int)CECSCCommand.CommandID.CMD_SELLBOOTH ||
pCommandSC.GetCommandID() == (int)CECSCCommand.CommandID.CMD_BINDBUDDY)
{
pCell.SetColor(new Color(128, 128, 128, 255));
}
else
{
pCell.SetColor(new Color(255, 255, 255, 255));
}
}
else
{
pCell.SetColor(new Color(255, 255, 255, 255));
}
pCell.SetInteract(true);
}
}
//else if(pSC.GetType() == (int)CECShortcut.ShortcutType.SCT_PET)
//{
@@ -374,6 +403,10 @@ namespace BrewMonster
// fix later now haven't skill group icon yet
GetGameUIMan().SetCover(pCell, "unknown", EC_GAMEUI_ICONS.ICONS_SKILL);
}
else if (pSC.GetType() == (int)CECShortcut.ShortcutType.SCT_COMMAND)
{
GetGameUIMan().SetCover(pCell, ((CECSCCommand)pSC).GetIconFile(), EC_GAMEUI_ICONS.ICONS_ACTION);
}
else
{
if (pSkill != null)
@@ -98,7 +98,6 @@ namespace BrewMonster
if(hostPlayer == null)
return;
var iconStates = hostPlayer.m_aIconStates;
Debug.LogError($"UpdateBuffIcons: iconStates.Count = {iconStates.Count}");
if(buffIcons.Count < iconStates.Count)
{
for(int i = buffIcons.Count; i < iconStates.Count; i++)
@@ -23,7 +23,6 @@ namespace BrewMonster
actionButton.onClick.AddListener(OnActionButtonClicked);
itemSkillButton.onClick.AddListener(OnItemButtonClicked);
buttonClose.onClick.AddListener(OnCloseButtonClicked);
actionButton.interactable = false;
itemSkillButton.interactable = false;
}
void OnEnable()
@@ -10,6 +10,7 @@ using CSNetwork.GPDataType;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
using static BrewMonster.PET_EGG_ESSENCE;
@@ -20,7 +21,7 @@ namespace BrewMonster
//[SerializeField] List<Image> m_aSkillImage = new List<Image>();
//[SerializeField] List<Button> m_aSkillButton = new List<Button>();
public const int MAX_SKILL_GROUP = 4;
[SerializeField] List<AUIToggle> AUIImagePictureList = new List<AUIToggle>();
[SerializeField] List<AUIToggleAssignSlot> _actionSlots = new List<AUIToggleAssignSlot>();
[SerializeField] Toggle[] toggleGroup = new Toggle[MAX_SKILL_GROUP];
[SerializeField] Button acceptButton;
public int m_nCurPanel1 = 1;
@@ -30,6 +31,8 @@ namespace BrewMonster
int currentOffsetIndex = 0;
int currentSelectedSlotIndex = -1;
CECSkill assignedSkill = null;
private int _pendingActionSetIndex = -1;
private int _pendingActionShortcutIndex = -1;
private bool _subscribed;
/// <summary>
/// Apply for a license remove later
@@ -50,6 +53,7 @@ namespace BrewMonster
currentListIndex = panelIndex;
UpdateShortcuts();
}
public override void Awake()
{
SwitchShowSkillShortcut(0);
@@ -76,7 +80,7 @@ namespace BrewMonster
int nCurPanel9 = GetCurPanel1();
int nCurPanel8 = GetCurPanel2();
CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer();
if (pHost == null)
if (pHost == null)
return false;
a_pSCS = new List<CECShortcutSet>();
var a_pSCSTemp = new List<CECShortcutSet>();
@@ -91,14 +95,74 @@ namespace BrewMonster
}
public void CreateSkillShortcut()
{
ClearPendingActionAssign();
// Debug.Log("HoangDev: CreateSkillShortcut: " + currentSelectedSlotIndex + " : " + assignedSkill.GetSkillID());
//CECShortcutSet pSCS = CECGameRun.Instance.GetHostPlayer().GetShortcutSet1(0);
a_pSCS[currentListIndex].CreateSkillShortcut(currentSelectedSlotIndex, assignedSkill);
EventBus.Publish(new OnAssignSkillEvent(assignedSkill.GetSkillID(), currentSelectedSlotIndex));
currentSelectedSlotIndex = -1;
assignedSkill = null;
}
private bool IsPendingActionAssign()
{
return _pendingActionSetIndex >= 0 && _pendingActionShortcutIndex >= 0;
}
private void ClearPendingActionAssign()
{
_pendingActionSetIndex = -1;
_pendingActionShortcutIndex = -1;
}
/// <summary>Resolves shortcut from CECGameRun command sets (same order as CDlgSkillSubAction).</summary>
public static CECShortcut GetActionPaletteShortcut(int setIndex, int indexInSet)
{
var run = CECGameRun.Instance;
if (run == null) return null;
CECShortcutSet set = setIndex switch
{
0 => run.GetGenCmdShortcuts(),
1 => run.GetTeamCmdShortcuts(),
2 => run.GetTradeCmdShortcuts(),
3 => run.GetPoseCmdShortcuts(),
_ => null
};
if (set == null || indexInSet < 0 || indexInSet >= set.GetShortcutNum())
return null;
return set.GetShortcut(indexInSet);
}
private void CreateActionShortcut()
{
if (!IsPendingActionAssign() || currentSelectedSlotIndex < 0)
return;
if (a_pSCS == null || currentListIndex < 0 || currentListIndex >= a_pSCS.Count)
return;
var src = GetActionPaletteShortcut(_pendingActionSetIndex, _pendingActionShortcutIndex);
if (src == null)
{
BMLogger.LogError("DlgAssignSlots::CreateActionShortcut: source shortcut null");
return;
}
var clone = src.Clone();
if (clone == null)
{
BMLogger.LogError("DlgAssignSlots::CreateActionShortcut: Clone() returned null");
return;
}
a_pSCS[currentListIndex].SetShortcut(currentSelectedSlotIndex, clone);
int slotIdx = currentSelectedSlotIndex;
int setIdx = _pendingActionSetIndex;
int scIdx = _pendingActionShortcutIndex;
EventBus.Publish(new OnAssignActionEvent(setIdx, scIdx, slotIdx));
currentSelectedSlotIndex = -1;
ClearPendingActionAssign();
UpdateShortcuts();
}
public bool UpdateShortcuts()
{
CECShortcut pSC;
@@ -108,7 +172,7 @@ namespace BrewMonster
if (a_pSCS == null || a_pSCS.Count < 2)
return false;
if(currentListIndex >= a_pSCS.Count )
{
currentListIndex = 0;
@@ -123,17 +187,16 @@ namespace BrewMonster
// }
// currentOffsetIndex += a_pSCS[i].GetShortcutNum();
// }
int nSlots = Mathf.Min(a_pSCS[currentListIndex].GetShortcutNum(), AUIImagePictureList.Count);
int nSlots = Mathf.Min(a_pSCS[currentListIndex].GetShortcutNum(), _actionSlots.Count);
for (int j = 0; j < nSlots; j++)
{
pCell = AUIImagePictureList[j];
{
pCell = _actionSlots[j];
pCell.SetSlotIndex(j);
if (pCell == null || !pCell.gameObject.activeInHierarchy)
if (pCell == null || !pCell.gameObject.activeInHierarchy)
continue;
pSC = a_pSCS[currentListIndex].GetShortcut(j);
if (pSC != null)
{
if (pSC.GetType() == (int)CECShortcut.ShortcutType.SCT_SKILL)
{
pSCSkill = (CECSCSkill)pSC;
@@ -292,6 +355,10 @@ namespace BrewMonster
// fix later now haven't skill group icon yet
GetGameUIMan().SetCover(pCell, "unknown", EC_GAMEUI_ICONS.ICONS_SKILL);
}
else if (pSC.GetType() == (int)CECShortcut.ShortcutType.SCT_COMMAND)
{
GetGameUIMan().SetCover(pCell, ((CECSCCommand)pSC).GetIconFile(), EC_GAMEUI_ICONS.ICONS_ACTION);
}
else
{
if (pSkill != null)
@@ -362,7 +429,7 @@ namespace BrewMonster
pszPanel.Add(dlgName);
}*/
}
public int GetCurPanel1()
{
return m_nCurPanel1;
@@ -371,61 +438,131 @@ namespace BrewMonster
{
return m_nCurPanel2;
}
public void OnOpenAssignSlotEvent(OpenAssignSlotEvent obj)
public void OnAssignSkillSelectionChanged(AssignSkillSelectionChangedEvent obj)
{
currentSelectedSlotIndex = obj.slotIndex;
Debug.Log($"HoangDev: OnOpenAssignSlotEvent: assignedSkillIsNull={(assignedSkill == null)} slotIndex={currentSelectedSlotIndex}");
if (assignedSkill != null)
if (obj.selected)
{
CreateSkillShortcut();
Debug.Log($"HoangDev: OnOpenAssignSlotEvent: After CreateSkillShortcut: assignedSkillIsNull={(assignedSkill == null)} slotIndex={currentSelectedSlotIndex}");
ClearPendingActionAssign();
assignedSkill = CECGameRun.Instance.GetHostPlayer().GetPositiveSkillByID(obj.skillID);
Debug.Log($"HoangDev: OnAssignSkillSelectionChanged: skillID={obj.skillID} currentSelectedSlotIndex={currentSelectedSlotIndex}");
if (currentSelectedSlotIndex != -1)
{
CreateSkillShortcut();
Debug.Log($"HoangDev: OnAssignSkillSelectionChanged: AfterCreateSkillShortcut: assignedSkillIsNull={(assignedSkill == null)} slotIndex={currentSelectedSlotIndex}");
}
}
else
{
assignedSkill = null;
}
}
public void OnOpenAssignSkillEvent(OpenAssignSkillEvent obj)
public void OnAssignActionSelectionChanged(AssignActionSelectionChangedEvent obj)
{
assignedSkill = CECGameRun.Instance.GetHostPlayer().GetPositiveSkillByID(obj.skillID);
Debug.Log($"HoangDev: OnOpenAssignSkillEvent: skillID={obj.skillID} currentSelectedSlotIndex={currentSelectedSlotIndex}");
if (currentSelectedSlotIndex != -1)
if (obj.selected)
{
CreateSkillShortcut();
Debug.Log($"HoangDev: OnOpenAssignSkillEvent: AfterCreateSkillShortcut: assignedSkillIsNull={(assignedSkill == null)} slotIndex={currentSelectedSlotIndex}");
assignedSkill = null;
_pendingActionSetIndex = obj.actionSetIndex;
_pendingActionShortcutIndex = obj.shortcutIndexInSet;
if (currentSelectedSlotIndex != -1)
CreateActionShortcut();
}
else
{
ClearPendingActionAssign();
}
}
public void OnCloseAssignSlotEvent(CloseAssignSlotEvent obj)
private void OnAssignSkillCommitted(OnAssignSkillEvent e)
{
currentSelectedSlotIndex = -1;
foreach (var slot in _actionSlots)
{
if (slot == null) continue;
if (slot.GetSlotIndexForAssign() != e.slotIndex) continue;
var host = CECGameRun.Instance.GetHostPlayer();
if (host == null) return;
var processSkill = host.GetPositiveSkillByID(e.skillID);
if (processSkill == null) return;
EC_Game.GetGameRun().GetUIManager().GetInGameUIMan().SetCover(slot, processSkill.GetIconFile(), EC_GAMEUI_ICONS.ICONS_SKILL);
slot.UncheckAfterAssign();
return;
}
}
public void OnCloseAssignSkillEvent(CloseAssignSkillEvent obj)
private void OnAssignActionCommitted(OnAssignActionEvent e)
{
assignedSkill = null;
if (a_pSCS == null || currentListIndex < 0 || currentListIndex >= a_pSCS.Count)
return;
var sc = a_pSCS[currentListIndex].GetShortcut(e.quickbarSlotIndex);
foreach (var slot in _actionSlots)
{
if (slot == null) continue;
if (slot.GetSlotIndexForAssign() != e.quickbarSlotIndex) continue;
if (sc != null)
EC_Game.GetGameRun().GetUIManager().GetInGameUIMan().SetCover(slot, sc.GetIconFile(), EC_GAMEUI_ICONS.ICONS_ACTION);
slot.UncheckAfterAssign();
return;
}
}
private void UnSubscribeEvents()
{
acceptButton.onClick.RemoveListener(AcceptSkillChange);
EventBus.Unsubscribe<OpenAssignSlotEvent>(OnOpenAssignSlotEvent);
EventBus.Unsubscribe<OpenAssignSkillEvent>(OnOpenAssignSkillEvent);
EventBus.Unsubscribe<CloseAssignSlotEvent>(OnCloseAssignSlotEvent);
EventBus.Unsubscribe<CloseAssignSkillEvent>(OnCloseAssignSkillEvent);
EventBus.Unsubscribe<AssignSkillSelectionChangedEvent>(OnAssignSkillSelectionChanged);
EventBus.Unsubscribe<AssignActionSelectionChangedEvent>(OnAssignActionSelectionChanged);
EventBus.Unsubscribe<OnAssignSkillEvent>(OnAssignSkillCommitted);
EventBus.Unsubscribe<OnAssignActionEvent>(OnAssignActionCommitted);
for(int i = 0; i < MAX_SKILL_GROUP; i++)
{
toggleGroup[i].onValueChanged.RemoveAllListeners();
}
foreach (var auiToggle in _actionSlots)
{
auiToggle.OnSetSlot -= OnClickedAssignSlot;
}
}
private void SubscribeEvents()
{
acceptButton.onClick.AddListener(AcceptSkillChange);
EventBus.Subscribe<OpenAssignSlotEvent>(OnOpenAssignSlotEvent);
EventBus.Subscribe<OpenAssignSkillEvent>(OnOpenAssignSkillEvent);
EventBus.Subscribe<CloseAssignSlotEvent>(OnCloseAssignSlotEvent);
EventBus.Subscribe<CloseAssignSkillEvent>(OnCloseAssignSkillEvent);
EventBus.Subscribe<AssignSkillSelectionChangedEvent>(OnAssignSkillSelectionChanged);
EventBus.Subscribe<AssignActionSelectionChangedEvent>(OnAssignActionSelectionChanged);
EventBus.Subscribe<OnAssignSkillEvent>(OnAssignSkillCommitted);
EventBus.Subscribe<OnAssignActionEvent>(OnAssignActionCommitted);
for(int i = 0; i < MAX_SKILL_GROUP; i++)
{
int capturedIndex = i; // avoid closure capturing loop variable
if (toggleGroup[capturedIndex] == null) continue;
toggleGroup[capturedIndex].onValueChanged.AddListener((bool value) => OnToggleValueChanged(capturedIndex, value));
toggleGroup[capturedIndex].onValueChanged.AddListener((bool value) => OnToggleSkillGroupChanged(capturedIndex, value));
}
foreach (var auiToggle in _actionSlots)
{
auiToggle.OnSetSlot += OnClickedAssignSlot;
}
}
private void OnToggleValueChanged(int index, bool value)
private void OnClickedAssignSlot(bool isActive, int slotIndex)
{
if (isActive)
{
currentSelectedSlotIndex = slotIndex;
if (assignedSkill != null)
{
CreateSkillShortcut();
}
else if (IsPendingActionAssign())
{
CreateActionShortcut();
}
}
else
{
currentSelectedSlotIndex = -1;
}
}
private void OnToggleSkillGroupChanged(int index, bool value)
{
if (index < 0 || index >= MAX_SKILL_GROUP) return;
if(value)
@@ -12,24 +12,32 @@ namespace BrewMonster
private readonly SortedSet<int> m_skills = new();
[SerializeField] private Transform ptSkillContainer;
[SerializeField] private Transform psSkillContainer;
[SerializeField] private List<AUIToggle> psSkillSlotList;
[SerializeField] private List<AUIToggle> ptSkillSlotList;
[SerializeField] private List<AUIToggleSkillAssign> psSkillSlotList;
[SerializeField] private List<AUIToggleSkillAssign> ptSkillSlotList;
private void Awake()
public override void Awake()
{
base.Awake();
SetUp();
}
public override void OnDisable()
{
UnsubscribeAssignEvents();
UnhookAssignSkillToggles();
base.OnDisable();
}
private void SetUp()
{
LoadChildToList(ptSkillContainer, ptSkillSlotList);
LoadChildToList(psSkillContainer, psSkillSlotList);
}
private void LoadChildToList(Transform parentTF, List<AUIToggle> slotList)
private void LoadChildToList(Transform parentTF, List<AUIToggleSkillAssign> slotList)
{
foreach (Transform child in parentTF)
{
AUIToggle img = child.GetComponent<AUIToggle>();
AUIToggleSkillAssign img = child.GetComponent<AUIToggleSkillAssign>();
if (img != null)
{
slotList.Add(img);
@@ -38,7 +46,63 @@ namespace BrewMonster
}
public override void OnEnable()
{
base.OnEnable();
UpdateView();
SubscribeAssignEvents();
HookAssignSkillToggles();
}
private void SubscribeAssignEvents()
{
EventBus.Unsubscribe<OnAssignSkillEvent>(OnAssignSkillBusEvent);
EventBus.Subscribe<OnAssignSkillEvent>(OnAssignSkillBusEvent);
}
private void UnsubscribeAssignEvents()
{
EventBus.Unsubscribe<OnAssignSkillEvent>(OnAssignSkillBusEvent);
}
private void HookAssignSkillToggles()
{
UnhookAssignSkillToggles();
foreach (var slot in ptSkillSlotList)
{
if (slot == null) continue;
var assign = slot.GetComponent<AUIToggleSkillAssign>();
if (assign != null)
assign.OnAssignToggleChanged += OnSkillAssignToggleChanged;
}
}
private void UnhookAssignSkillToggles()
{
foreach (var slot in ptSkillSlotList)
{
if (slot == null) continue;
var assign = slot.GetComponent<AUIToggleSkillAssign>();
if (assign != null)
assign.OnAssignToggleChanged -= OnSkillAssignToggleChanged;
}
}
private void OnSkillAssignToggleChanged(bool isOn, int skillId)
{
EventBus.Publish(new AssignSkillSelectionChangedEvent(skillId, isOn));
}
private void OnAssignSkillBusEvent(OnAssignSkillEvent @event)
{
foreach (var slot in ptSkillSlotList)
{
if (slot == null) continue;
var assign = slot.GetComponent<AUIToggleSkillAssign>();
if (assign == null) continue;
if (assign.GetSkillIdForAssign() != @event.skillID)
continue;
assign.UncheckAfterAssign();
return;
}
}
private void UpdateView()
@@ -78,14 +142,13 @@ namespace BrewMonster
// m_skills.Add(pHost.GetPassiveSkillByIndex(i).GetSkillID());
// }
}
private void SetImage(CECSkill cECSkill, AUIToggle learnedSkillUI)
private void SetImage(CECSkill cECSkill, AUIToggleSkillAssign learnedSkillUI)
{
if(cECSkill == null)
{
BMLogger.LogError("CDlgSkillSubPool::SetImage cECSkill is null");
return;
}
BMLogger.Log($"CDlgSkillSubPool::SetImage SkillID={cECSkill.GetSkillID()} SkillName={cECSkill.GetName()} IconFile={cECSkill.GetIconFile()}");
GetGameUIMan().SetCover(learnedSkillUI, cECSkill.GetIconFile(), EC_GAMEUI_ICONS.ICONS_SKILL);
}
}
@@ -0,0 +1,188 @@
using BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay;
using BrewMonster.UI;
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace BrewMonster
{
/// <summary>Action/command palette for quickbar assign; same data layout as CDlgSkillSubAction, toggle selection only.</summary>
public class DlgAssignSubAction : AUIDialog
{
private static readonly int[] ObjCount = { 8, 2, 2, 27 };
private readonly List<ActionAssignRow> m_rows = new List<ActionAssignRow>();
[SerializeField] private Transform orderContain;
[SerializeField] private AUIToggleActionAssign orderTemplate;
[SerializeField] private AUIToggleActionAssign actionTemplate;
[SerializeField] private Transform actionContain;
[Serializable]
public struct ActionAssignRow
{
public AUIToggleActionAssign toggle;
public TextMeshProUGUI label;
}
public override void Awake()
{
base.Awake();
if (orderContain == null || actionContain == null || orderTemplate == null || actionTemplate == null)
{
BMLogger.LogError("DlgAssignSubAction: assign orderContain, actionContain, orderTemplate, actionTemplate.");
return;
}
orderTemplate.gameObject.SetActive(false);
actionTemplate.gameObject.SetActive(false);
InitRows();
}
private void InitRows()
{
m_rows.Clear();
for (int setIdx = 0; setIdx < 3; setIdx++)
{
for (int j = 0; j < ObjCount[setIdx]; j++)
{
var tp = Instantiate(orderTemplate, orderContain);
tp.gameObject.SetActive(true);
WireRow(tp, setIdx, j);
}
}
for (int j = 0; j < ObjCount[3]; j++)
{
var tp = Instantiate(actionTemplate, actionContain);
tp.gameObject.SetActive(true);
WireRow(tp, 3, j);
}
}
private void WireRow(AUIToggleActionAssign tp, int setIndex, int indexInSet)
{
tp.SetActionSlotIndices(setIndex, indexInSet);
var tgl = tp.GetUIToggle();
m_rows.Add(new ActionAssignRow
{
toggle = tp,
label = tp.GetComponentInChildren<TextMeshProUGUI>()
});
}
public override void OnEnable()
{
base.OnEnable();
UpdateView();
SubscribeAssignEvents();
HookActionToggles();
}
public override void OnDisable()
{
UnhookActionToggles();
UnsubscribeAssignEvents();
base.OnDisable();
}
private void SubscribeAssignEvents()
{
EventBus.Unsubscribe<OnAssignActionEvent>(OnAssignActionBusEvent);
EventBus.Subscribe<OnAssignActionEvent>(OnAssignActionBusEvent);
}
private void UnsubscribeAssignEvents()
{
EventBus.Unsubscribe<OnAssignActionEvent>(OnAssignActionBusEvent);
}
private void HookActionToggles()
{
UnhookActionToggles();
foreach (var row in m_rows)
{
if (row.toggle == null) continue;
row.toggle.OnActionAssignToggleChanged += OnActionAssignToggleChanged;
}
}
private void UnhookActionToggles()
{
foreach (var row in m_rows)
{
if (row.toggle == null) continue;
row.toggle.OnActionAssignToggleChanged -= OnActionAssignToggleChanged;
}
}
private void OnActionAssignToggleChanged(bool isOn, int actionSetIndex, int shortcutIndexInSet)
{
EventBus.Publish(new AssignActionSelectionChangedEvent(actionSetIndex, shortcutIndexInSet, isOn));
}
private void OnAssignActionBusEvent(OnAssignActionEvent e)
{
foreach (var row in m_rows)
{
if (row.toggle == null) continue;
if (row.toggle.GetActionSetIndexForAssign() != e.actionSetIndex) continue;
if (row.toggle.GetShortcutIndexInSetForAssign() != e.shortcutIndexInSet) continue;
row.toggle.UncheckAfterAssign();
return;
}
}
private void UpdateView()
{
var gameUIMan = CECUIManager.Instance?.GetInGameUIMan();
if (gameUIMan == null) return;
var pGameRun = CECGameRun.Instance;
if (pGameRun == null) return;
CECShortcutSet[] a_pSC =
{
pGameRun.GetGenCmdShortcuts(),
pGameRun.GetTeamCmdShortcuts(),
pGameRun.GetTradeCmdShortcuts(),
pGameRun.GetPoseCmdShortcuts()
};
int count = 0;
for (int i = 0; i < a_pSC.Length; i++)
{
for (int j = 0; j < ObjCount[i]; j++)
{
if (count >= m_rows.Count) return;
var row = m_rows[count];
var tp = row.toggle;
var pLabel = row.label;
count++;
if (tp == null) continue;
if (j < a_pSC[i].GetShortcutNum())
{
var pSCThis = a_pSC[i].GetShortcut(j);
tp.SetDataPtr(pSCThis, "ptr_CECShortcut");
string strFile = pSCThis != null ? pSCThis.GetIconFile() : "";
gameUIMan.SetCover(tp, strFile, EC_GAMEUI_ICONS.ICONS_ACTION);
if (pLabel != null)
pLabel.SetText(pSCThis != null ? pSCThis.GetDesc() : "");
tp.gameObject.SetActive(true);
}
else
{
tp.Clear();
if (pLabel != null)
pLabel.SetText("");
tp.gameObject.SetActive(false);
}
}
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a7f3c21d8e4b45c9b1d2e3f4567890ab
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -24,8 +24,6 @@ namespace BrewMonster
/// </summary>
public override void StartMove(Vector3 vHost, Vector3 vTarget)
{
BMLogger.LogError("CGfxOnTargetMove StartMove");
m_vPos = vTarget;
/*m_vMoveDir = vTarget - vHost;
m_vMoveDir.y = 0; // C++: zero out Y before normalize
File diff suppressed because it is too large Load Diff
+75 -7
View File
@@ -12581,6 +12581,7 @@ MonoBehaviour:
splitIncreaseButton: {fileID: 8779682634462917281}
splitDecreaseButton: {fileID: 4996709440620641399}
splitMaxButton: {fileID: 1013848439096781118}
combineStackButton: {fileID: 4438583262695563174}
autoRefresh: 1
refreshInterval: 1
showEquipmentDetails: 1
@@ -20106,7 +20107,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1546246053547542409, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_SizeDelta.y
value: 948.02
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1546246053547542409, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_LocalPosition.x
@@ -20156,16 +20157,72 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4552886554498063383, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_text
value: "T\xE1ch"
- target: {fileID: 1900527214026617767, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1900527214026617767, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1900527214026617767, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1900527214026617767, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4313766541946487796, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4313766541946487796, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4313766541946487796, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4313766541946487796, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4639188770757162324, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4639188770757162324, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4639188770757162324, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4639188770757162324, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6830833846243993097, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_Name
value: item_info
objectReference: {fileID: 0}
- target: {fileID: 6830833846243993097, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_IsActive
- target: {fileID: 6900679650323527362, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6900679650323527362, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6900679650323527362, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6900679650323527362, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7209086543831860202, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
@@ -20194,7 +20251,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8894405194986632892, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_SizeDelta.y
value: 928.02
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8894405194986632892, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
propertyPath: m_AnchoredPosition.x
@@ -20242,6 +20299,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: fc26b8fa93aea49b4abb8fe5455e51fe, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &4438583262695563174 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5409539377616897825, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
m_PrefabInstance: {fileID: 8542071282636773511}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &6020258894941961325 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 2668322321768899818, guid: c56ed80641ff74ce49f91401e3eb8367, type: 3}
+273 -243
View File
@@ -365,10 +365,10 @@ RectTransform:
- {fileID: 6913810588620795676}
m_Father: {fileID: 3123930244098203053}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 38, y: -140.39}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5889574211483133077
CanvasRenderer:
@@ -728,10 +728,10 @@ RectTransform:
- {fileID: 1609651149174304326}
m_Father: {fileID: 3123930244098203053}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 38, y: -242.78}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &521924147895834695
CanvasRenderer:
@@ -1019,7 +1019,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 335.91, y: -507.53912}
m_SizeDelta: {x: 651.82, y: 418.6261}
m_SizeDelta: {x: 651.82, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2731969899170380074
CanvasRenderer:
@@ -1615,10 +1615,10 @@ RectTransform:
- {fileID: 1704697067466645826}
m_Father: {fileID: 3123930244098203053}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 38, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3604148096459499892
CanvasRenderer:
@@ -2282,7 +2282,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 117.99603, y: 0}
m_SizeDelta: {x: 143.9446, y: 91.87}
m_SizeDelta: {x: 143.9446, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6858302016506942629
CanvasRenderer:
@@ -2433,7 +2433,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 117.99603, y: 0}
m_SizeDelta: {x: 143.9446, y: 91.87}
m_SizeDelta: {x: 143.9446, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7562352963284824378
CanvasRenderer:
@@ -2751,10 +2751,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3449045492221331241}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 210, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8358568677657722128
CanvasRenderer:
@@ -3364,10 +3364,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3449045492221331241}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 382, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7646717020914693947
CanvasRenderer:
@@ -3515,7 +3515,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &6723345811351538777
RectTransform:
m_ObjectHideFlags: 0
@@ -3889,7 +3889,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -0.000061035, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!222 &1284569044815026349
CanvasRenderer:
@@ -4111,9 +4111,9 @@ RectTransform:
- {fileID: 5885063335678115690}
m_Father: {fileID: 1263498971758389975}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 127, y: -18.5}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 254, y: 37}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1887848967215853843
@@ -4274,7 +4274,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 309.47, y: -95}
m_SizeDelta: {x: 618.94, y: 76}
m_SizeDelta: {x: 618.94, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2264175676541462108
CanvasRenderer:
@@ -4384,10 +4384,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3490841402936291418}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 554, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1725305811772317814
CanvasRenderer:
@@ -4760,10 +4760,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3490841402936291418}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 468, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3765304872596771789
CanvasRenderer:
@@ -5047,10 +5047,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3449045492221331241}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 296, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &9207107349168631693
CanvasRenderer:
@@ -5207,7 +5207,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -322.47, y: 365.44547}
m_SizeDelta: {x: 644.94, y: 703.38}
m_SizeDelta: {x: 644.94, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!222 &8275541816169387879
CanvasRenderer:
@@ -5296,10 +5296,10 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 8581668835000776391}
- component: {fileID: 3433136721833273868}
- component: {fileID: 6710103663631289946}
- component: {fileID: 523329600507644709}
- component: {fileID: 912173140299320127}
- component: {fileID: 6034688251073174200}
m_Layer: 5
m_Name: icon
m_TagString: Untagged
@@ -5325,9 +5325,57 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 38, y: -38}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 76, y: 76}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 1}
--- !u!114 &3433136721833273868
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3331107676278791390}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1}
m_PressedColor: {r: 1, g: 1, b: 1, a: 1}
m_SelectedColor: {r: 1, g: 1, b: 1, a: 1}
m_DisabledColor: {r: 1, g: 1, b: 1, a: 0.5}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 912173140299320127}
toggleTransition: 0
graphic: {fileID: 0}
m_Group: {fileID: 0}
onValueChanged:
m_PersistentCalls:
m_Calls: []
m_IsOn: 0
--- !u!114 &6710103663631289946
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -5337,16 +5385,15 @@ MonoBehaviour:
m_GameObject: {fileID: 3331107676278791390}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 67fd391520cbfd44f84a1c6bb57673c0, type: 3}
m_Script: {fileID: 11500000, guid: b8e4d32c9f5c56dab2e3f45678901bcd, type: 3}
m_Name:
m_EditorClassIdentifier:
slotIndex: -1
disPlayImage: {fileID: 79341390793448853}
skillbutton: {fileID: 6034688251073174200}
borderImage: {fileID: 5124956242307597890}
cooldownTime: 0
m_ClockCounter: {fileID: 0}
isNotCastSkill: 0
skillID: 0
uiToggle: {fileID: 3433136721833273868}
actionSetIndex: 0
shortcutIndexInSet: 0
--- !u!222 &523329600507644709
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -5385,50 +5432,6 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &6034688251073174200
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3331107676278791390}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 0}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &3406708742645219522
GameObject:
m_ObjectHideFlags: 0
@@ -6028,9 +6031,9 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 341.445, y: -64.8}
m_AnchoredPosition: {x: 0, y: -64.8}
m_SizeDelta: {x: 682.89, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 1}
--- !u!222 &1694261480392943793
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -6776,10 +6779,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3490841402936291418}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 124, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1291961236682885550
CanvasRenderer:
@@ -6852,11 +6855,11 @@ RectTransform:
- {fileID: 5918073574760109704}
m_Father: {fileID: 1285542512886306091}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 127, y: -18.5}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 254, y: 37}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 1}
--- !u!222 &1257159900126729527
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -6927,10 +6930,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3449045492221331241}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 38, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2268981575541439631
CanvasRenderer:
@@ -7009,7 +7012,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 335.47, y: -98.4}
m_SizeDelta: {x: 618.94, y: 140.8}
m_SizeDelta: {x: 618.94, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2124054608285479539
CanvasRenderer:
@@ -7680,10 +7683,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3449045492221331241}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 468, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &897642746592729160
CanvasRenderer:
@@ -7968,7 +7971,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 149.24545, y: 0.00000023857865}
m_AnchoredPosition: {x: 149.24545, y: 0}
m_SizeDelta: {x: 154.1473, y: 37}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4146939938247199045
@@ -8197,10 +8200,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3490841402936291418}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 210, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7412806809519503430
CanvasRenderer:
@@ -8393,10 +8396,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3449045492221331241}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 124, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8958294640541543931
CanvasRenderer:
@@ -8829,7 +8832,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 117.99603, y: 0}
m_SizeDelta: {x: 143.9446, y: 91.87}
m_SizeDelta: {x: 143.9446, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5438050072468631381
CanvasRenderer:
@@ -9436,7 +9439,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 117.99603, y: 0}
m_SizeDelta: {x: 143.9446, y: 91.87}
m_SizeDelta: {x: 143.9446, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3044764523714620351
CanvasRenderer:
@@ -9853,10 +9856,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3490841402936291418}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 382, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8292637089760855876
CanvasRenderer:
@@ -9929,11 +9932,11 @@ RectTransform:
- {fileID: 3666972851124413242}
m_Father: {fileID: 1244895283146852732}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 127, y: -18.5}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 254, y: 37}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 1}
--- !u!222 &4852245878945746775
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -10005,10 +10008,10 @@ RectTransform:
- {fileID: 7544910809585033678}
m_Father: {fileID: 3123930244098203053}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 382.5, y: -242.78}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2164606938053553701
CanvasRenderer:
@@ -10298,10 +10301,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3490841402936291418}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 38, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4804628498516101234
CanvasRenderer:
@@ -10374,9 +10377,9 @@ RectTransform:
- {fileID: 7738777691134633714}
m_Father: {fileID: 332864778784360512}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 127, y: -18.5}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 254, y: 37}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8557376726661632322
@@ -10459,7 +10462,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0.000068665, y: 0}
m_AnchoredPosition: {x: 0.000061035156, y: 0}
m_SizeDelta: {x: 2160, y: 1215}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &9187303627305850692
@@ -10527,7 +10530,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 335.47, y: -263.3}
m_SizeDelta: {x: 618.94, y: 133}
m_SizeDelta: {x: 618.94, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5943966890611580968
CanvasRenderer:
@@ -11320,10 +11323,10 @@ RectTransform:
- {fileID: 7759567721800243228}
m_Father: {fileID: 3123930244098203053}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 382.5, y: -140.39}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2464100607009156610
CanvasRenderer:
@@ -12126,7 +12129,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 335.47, y: -530.58997}
m_SizeDelta: {x: 618.94, y: 345.58002}
m_SizeDelta: {x: 618.94, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &9030098628201859511
CanvasRenderer:
@@ -12438,9 +12441,9 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 341.445, y: -64.8}
m_AnchoredPosition: {x: 0, y: -64.80002}
m_SizeDelta: {x: 682.89, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 1}
--- !u!222 &876649880404097046
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -13049,10 +13052,10 @@ RectTransform:
- {fileID: 1335544207958730177}
m_Father: {fileID: 3123930244098203053}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 382.5, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3020341225908238861
CanvasRenderer:
@@ -13135,7 +13138,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 309.47, y: -205.19}
m_SizeDelta: {x: 618.94, y: 280.78}
m_SizeDelta: {x: 618.94, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3138218988396077083
CanvasRenderer:
@@ -13226,6 +13229,7 @@ GameObject:
- component: {fileID: 8825692119004300265}
- component: {fileID: 8185515932270884534}
- component: {fileID: 420981767915672567}
- component: {fileID: 7661205641906674001}
m_Layer: 5
m_Name: left
m_TagString: Untagged
@@ -13251,7 +13255,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -361.27, y: 365.44547}
m_SizeDelta: {x: 722.5344, y: 0}
m_SizeDelta: {x: 722.5344, y: 28}
m_Pivot: {x: 0, y: 1}
--- !u!222 &7853130943468561016
CanvasRenderer:
@@ -13331,6 +13335,28 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 2
--- !u!114 &7661205641906674001
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7756056173452171977}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7304a7aa2183ad34babf66894ed22f7e, type: 3}
m_Name:
m_EditorClassIdentifier:
skillNameText: {fileID: 0}
imageProgress: {fileID: 0}
m_pSubRank: {fileID: 1851903413579782982}
m_pSubSkill: {fileID: 7688900625148083785}
m_contentRoot: {fileID: 8302858527499935758}
m_contentRootSkill: {fileID: 0}
m_scrollRect: {fileID: 0}
m_windowScale: 1
totalSPText: {fileID: 0}
m_isEvil: 0
--- !u!1 &7758409605357852732
GameObject:
m_ObjectHideFlags: 0
@@ -13375,7 +13401,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 309.47, y: -102.8}
m_SizeDelta: {x: 618.94, y: 76}
m_SizeDelta: {x: 618.94, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &965625795563076259
CanvasRenderer:
@@ -13650,9 +13676,9 @@ RectTransform:
- {fileID: 8641794091682467561}
m_Father: {fileID: 4902026760249267287}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 127, y: -18.5}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 254, y: 37}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7759539851022153828
@@ -13702,10 +13728,10 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 1920078254568205968}
- component: {fileID: 3433136721833273871}
- component: {fileID: 6897593266829550523}
- component: {fileID: 6263047871981887699}
- component: {fileID: 8452392559284459496}
- component: {fileID: 5320015828055191291}
m_Layer: 5
m_Name: icon
m_TagString: Untagged
@@ -13731,9 +13757,57 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 38, y: -38}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 76, y: 76}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 1}
--- !u!114 &3433136721833273871
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033079540058746360}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1}
m_PressedColor: {r: 1, g: 1, b: 1, a: 1}
m_SelectedColor: {r: 1, g: 1, b: 1, a: 1}
m_DisabledColor: {r: 1, g: 1, b: 1, a: 0.5}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 8452392559284459496}
toggleTransition: 0
graphic: {fileID: 0}
m_Group: {fileID: 0}
onValueChanged:
m_PersistentCalls:
m_Calls: []
m_IsOn: 0
--- !u!114 &6897593266829550523
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -13743,16 +13817,15 @@ MonoBehaviour:
m_GameObject: {fileID: 8033079540058746360}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 67fd391520cbfd44f84a1c6bb57673c0, type: 3}
m_Script: {fileID: 11500000, guid: b8e4d32c9f5c56dab2e3f45678901bcd, type: 3}
m_Name:
m_EditorClassIdentifier:
slotIndex: -1
disPlayImage: {fileID: 4930055916587000086}
skillbutton: {fileID: 5320015828055191291}
borderImage: {fileID: 3406708742645219522}
cooldownTime: 0
m_ClockCounter: {fileID: 0}
isNotCastSkill: 0
skillID: 0
uiToggle: {fileID: 3433136721833273871}
actionSetIndex: 0
shortcutIndexInSet: 0
--- !u!222 &6263047871981887699
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -13791,50 +13864,6 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &5320015828055191291
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033079540058746360}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 8452392559284459496}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &8090171231683763887
GameObject:
m_ObjectHideFlags: 0
@@ -13871,10 +13900,10 @@ RectTransform:
- {fileID: 1285542512886306091}
m_Father: {fileID: 4034490343029093160}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -361.27, y: 365.44547}
m_SizeDelta: {x: 722.5344, y: 185.6}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 722.5344, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!222 &74166521354270119
CanvasRenderer:
@@ -13990,7 +14019,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 117.99603, y: 0}
m_SizeDelta: {x: 143.9446, y: 91.87}
m_SizeDelta: {x: 143.9446, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8934459415203184979
CanvasRenderer:
@@ -14367,11 +14396,11 @@ RectTransform:
- {fileID: 4034490343029093160}
m_Father: {fileID: 4958559450723387948}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -330.91, y: 0.0011292}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 16, y: 0}
m_SizeDelta: {x: 722.53, y: 730.89}
m_Pivot: {x: 0.5, y: 0.5}
m_Pivot: {x: 0, y: 1}
--- !u!222 &4523968316434418202
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -14834,10 +14863,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3490841402936291418}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 296, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8186299737150272153
CanvasRenderer:
@@ -14941,7 +14970,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!224 &4958559450723387948
RectTransform:
m_ObjectHideFlags: 0
@@ -15010,10 +15039,11 @@ MonoBehaviour:
m_GameObject: {fileID: 8632042110259137603}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1eda03e6b4326e14b95d57bf324b96bb, type: 3}
m_Script: {fileID: 11500000, guid: a7f3c21d8e4b45c9b1d2e3f4567890ab, type: 3}
m_Name:
m_EditorClassIdentifier:
m_aActionInfo: []
skillNameText: {fileID: 0}
imageProgress: {fileID: 0}
orderContain: {fileID: 4081610106255437587}
orderTemplate: {fileID: 6897593266829550523}
actionTemplate: {fileID: 6710103663631289946}
@@ -15054,7 +15084,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 117.99603, y: 0}
m_SizeDelta: {x: 143.9446, y: 45.94}
m_SizeDelta: {x: 143.9446, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8300893254371079820
CanvasRenderer:
@@ -15207,9 +15237,9 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 368.81186, y: -153.20001}
m_SizeDelta: {x: 685.6237, y: 64.8}
m_Pivot: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 26, y: -120.8}
m_SizeDelta: {x: 685.6237, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!222 &8076001380599592139
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -15320,10 +15350,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 3449045492221331241}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 554, y: -38}
m_SizeDelta: {x: 76, y: 76}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4341901141596287823
CanvasRenderer:
@@ -15401,9 +15431,9 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 368.81186, y: -60.4}
m_SizeDelta: {x: 685.6237, y: 64.8}
m_Pivot: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 26, y: -28}
m_SizeDelta: {x: 685.6237, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!222 &8659649200798903193
CanvasRenderer:
m_ObjectHideFlags: 0
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 92350a534636b7843a064b89c342bd00
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e979a0a9805458f4ba1954a31b336650
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 64d66264a3dc1924b80d4ec040740e7d
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+337 -16
View File
@@ -208,11 +208,11 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6102967088919909530}
m_Father: {fileID: 636299721907915661}
m_Father: {fileID: 7354526701707789086}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 547.334, y: -28.5943}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 171, y: 64}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7968706394531223960
@@ -584,6 +584,142 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &4520835691801872487
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2762093655722117295}
- component: {fileID: 7397135334222285542}
- component: {fileID: 1042238210249658224}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2762093655722117295
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4520835691801872487}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4313766541946487796}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 2.5}
m_SizeDelta: {x: -16, y: -15}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7397135334222285542
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4520835691801872487}
m_CullTransparentMesh: 1
--- !u!114 &1042238210249658224
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4520835691801872487}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "G\u1ED9p"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_sharedMaterial: {fileID: 2100000, guid: 31b77628c21b17e45a6577a3d3d5aef0, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 8192
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &5176462084121257164
GameObject:
m_ObjectHideFlags: 0
@@ -616,11 +752,11 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 902438409941943524}
m_Father: {fileID: 636299721907915661}
m_Father: {fileID: 7354526701707789086}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 547.334, y: -173}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 171, y: 64}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6199238498013377944
@@ -770,7 +906,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Button
m_text: "T\xE1ch"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_sharedMaterial: {fileID: 2100000, guid: 31b77628c21b17e45a6577a3d3d5aef0, type: 2}
@@ -873,11 +1009,11 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5110498948200012487}
m_Father: {fileID: 636299721907915661}
m_Father: {fileID: 7354526701707789086}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 547.334, y: -101}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 171, y: 64}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7060942486687674079
@@ -1126,9 +1262,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1900527214026617767}
- {fileID: 4639188770757162324}
- {fileID: 6900679650323527362}
- {fileID: 7354526701707789086}
m_Father: {fileID: 1546246053547542409}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
@@ -1385,3 +1519,190 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &7621586952601299671
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7354526701707789086}
- component: {fileID: 8748979396776069184}
m_Layer: 5
m_Name: btn_container
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7354526701707789086
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7621586952601299671}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1900527214026617767}
- {fileID: 4639188770757162324}
- {fileID: 6900679650323527362}
- {fileID: 4313766541946487796}
m_Father: {fileID: 636299721907915661}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 182.83, y: 0}
m_SizeDelta: {x: 171, y: 276}
m_Pivot: {x: 1, y: 1}
--- !u!114 &8748979396776069184
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7621586952601299671}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 0
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1 &7929745160647323600
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4313766541946487796}
- component: {fileID: 487728384897798726}
- component: {fileID: 2279133206410533808}
- component: {fileID: 5409539377616897825}
m_Layer: 5
m_Name: Button (3)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4313766541946487796
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7929745160647323600}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2762093655722117295}
m_Father: {fileID: 7354526701707789086}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 171, y: 64}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &487728384897798726
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7929745160647323600}
m_CullTransparentMesh: 1
--- !u!114 &2279133206410533808
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7929745160647323600}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 8f24853d9cfea43389e8fb3101ffaae1, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &5409539377616897825
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7929745160647323600}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 2279133206410533808}
m_OnClick:
m_PersistentCalls:
m_Calls: []
+3 -3
View File
@@ -127,7 +127,7 @@ namespace BrewMonster
// Track instantiated weapon objects
private GameObject _currentRightHandWeapon;
private GameObject _currentLeftHandWeapon;
private PlayerDefaultEquipments PlayerDefaultEquipments
protected PlayerDefaultEquipments PlayerDefaultEquipments
{
get
{
@@ -534,7 +534,7 @@ namespace BrewMonster
}
#region Helper Methods
private GameObject FindChildObjectRecursive(Transform parent, string name)
protected GameObject FindChildObjectRecursive(Transform parent, string name)
{
foreach (Transform child in parent)
{
@@ -551,7 +551,7 @@ namespace BrewMonster
return null;
}
private SkeletonBuilder GetSkeletonBuilder()
protected SkeletonBuilder GetSkeletonBuilder()
{
if (_skeletonBuilder == null)
{