diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset b/Assets/AddressableAssetsData/AddressableAssetSettings.asset index 3567f5748d..6696d4e2ad 100644 --- a/Assets/AddressableAssetsData/AddressableAssetSettings.asset +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset @@ -15,7 +15,7 @@ MonoBehaviour: m_DefaultGroup: 712e3991f28e549e7a56ee582a977810 m_currentHash: serializedVersion: 2 - Hash: db1ead3a8d606fcdea388a6b9aba1229 + Hash: 8b1cf1a0fcf68db7c872365ef6a9e916 m_OptimizeCatalogSize: 0 m_BuildRemoteCatalog: 0 m_CatalogRequestsTimeout: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset index 5546a72936..fe0009ebc7 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset +++ b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset @@ -15,6 +15,16 @@ MonoBehaviour: m_GroupName: Default Local Group m_GUID: 712e3991f28e549e7a56ee582a977810 m_SerializeEntries: + - m_GUID: 0a2f50f2fe381024996b30c94befd165 + m_Address: "InGame/\u5143\u795E" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 11d9820773784714ba7ed00226308680 + m_Address: "InGame/\u672A\u547D\u4E2D.tga" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 1b653230886be4009808803501ad7d7f m_Address: Assets/PerfectWorld/SO/TaskTemplContainerSO.asset m_ReadOnly: 0 @@ -30,16 +40,101 @@ MonoBehaviour: m_ReadOnly: 0 m_SerializedLabels: [] FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 2cea0a36514b40f4cbb2d93eb50fe97b + m_Address: "InGame/\u7ECF\u9A8C.tga" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 55f6d3d7b1dbf794fbaf5c8e8e057c31 + m_Address: "InGame/\u65E0\u6548" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 66d520355c8214d8ba4d37422bd27571 + m_Address: "InGame/GM\u6807\u5FD7" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 766835429f2a89f408d4786a3aa06363 + m_Address: "InGame/\u514D\u75AB" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 7b66d105afe110341a51b5043be89f45 + m_Address: "InGame/\u590D\u4EC7\u60E9\u6212" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 82bf5409dc0e9f34a9c114853cd8ee8d + m_Address: InGame/mp_warn.tga + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 8743a82a27870e5489e3bfca82cc3f0f + m_Address: "InGame/\u91D1\u94B1.tga" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 88e840e5dac12ed4383d994c7fadfef1 m_Address: "\u7A0B\u5E8F\u8054\u5165/\u51FB\u4E2D/\u62F3\u5957\u51FB\u4E2D" m_ReadOnly: 0 m_SerializedLabels: [] FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 89a51fc0532e7c244bd25d996a480d1e + m_Address: "InGame/\u72B6\u6001\u95EA\u907F" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: a7cdab13e3d9e6a4da14a7bb02481f35 + m_Address: "InGame/PK\u72B6\u6001\u6807\u8BB0" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: a81dab17b00ef4b4494a71ee88b10cc0 m_Address: "\u7A0B\u5E8F\u8054\u5165/\u89D2\u8272\u5347\u7EA7\u4EBA\u7C7B.gfx" m_ReadOnly: 0 m_SerializedLabels: [] FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: b0860cc78fedf454c8ebf35729998d70 + m_Address: "InGame/\u5931\u8D25" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: bd6cbd6a9c2ce8444a50a177bdfe77fd + m_Address: "InGame/\u7206\u51FB.tga" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: c1761dbd7108bf740a9fd5ee90d5e3de + m_Address: "InGame/\u53CD\u9707" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: ed347377914b065488cf5b42d4e8b5ab + m_Address: "InGame/\u5347\u7EA7\u4E86.tga" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: f55f5d3b9021e5d4daced587dbd48d9f + m_Address: "InGame/\u6210\u529F" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: f635ebcab3287284bb9e206ea8e13d51 + m_Address: "InGame/\u590D\u4EC7\u955C\u50CF" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: fa244579aed36fa4187a0667d52ab84b + m_Address: "InGame/\u5438\u8840" + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: fcbc44b68ce86c047bd67ea7a74d40c2 + m_Address: InGame/hp_warn + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 m_ReadOnly: 0 m_Settings: {fileID: 11400000, guid: 070edb522e6e54c14a99055900003890, type: 2} m_SchemaSet: diff --git a/Assets/PerfectWorld/Scripts/Managers/DamageTextManager.cs b/Assets/PerfectWorld/Scripts/Managers/DamageTextManager.cs deleted file mode 100644 index dc7f068c29..0000000000 --- a/Assets/PerfectWorld/Scripts/Managers/DamageTextManager.cs +++ /dev/null @@ -1,85 +0,0 @@ -using UnityEngine; -using System.Collections.Generic; -using TMPro; -using DG.Tweening; // cần DOTween - -public class DamageTextManager : MonoBehaviour -{ - public static DamageTextManager Instance { get; private set; } - - [Header("Prefab")] - [SerializeField] private TextMeshPro damageTextPrefab; - - [Header("Settings")] - [SerializeField] private int poolSize = 20; - [SerializeField] private Vector3 offset = new Vector3(0, 2f, 0); - [SerializeField] private float riseDistance = 1.5f; - [SerializeField] private float riseDuration = 0.8f; - - private readonly Queue pool = new(); - - private void Awake() - { - // Singleton - if (Instance != null && Instance != this) - { - Destroy(gameObject); - return; - } - Instance = this; - DontDestroyOnLoad(gameObject); - - // Tạo sẵn pool - for (int i = 0; i < poolSize; i++) - { - var textObj = Instantiate(damageTextPrefab, transform); - textObj.gameObject.SetActive(false); - pool.Enqueue(textObj); - } - } - - /// - /// Gọi để spawn text damage - /// - public void ShowDamageText(Vector3 worldPos, int damage, Color color = default, float scale = 1f) - { - var text = GetFromPool(); - text.text = damage.ToString(); - text.color = color; - text.fontSize = 6; - text.transform.localScale = Vector3.one * scale; - - Vector3 startPos = worldPos + offset; - text.transform.position = startPos; - text.gameObject.SetActive(true); - - // Hiệu ứng bay lên + mờ dần - text.transform.DOMoveY(startPos.y + riseDistance, riseDuration).SetEase(Ease.OutQuad); - text.DOFade(0f, riseDuration) - .SetEase(Ease.InQuad) - .OnComplete(() => - { - text.alpha = 1f; - text.gameObject.SetActive(false); - ReturnToPool(text); - }); - } - - private TextMeshPro GetFromPool() - { - if (pool.Count > 0) - { - return pool.Dequeue(); - } - - // Nếu hết pool, tạo thêm - var text = Instantiate(damageTextPrefab, transform); - text.gameObject.SetActive(false); - return text; - } - - private void ReturnToPool(TextMeshPro text) - { - pool.Enqueue(text); - } -} diff --git a/Assets/PerfectWorld/Scripts/Managers/DamageTextManager.cs.meta b/Assets/PerfectWorld/Scripts/Managers/DamageTextManager.cs.meta deleted file mode 100644 index e705cb5a3e..0000000000 --- a/Assets/PerfectWorld/Scripts/Managers/DamageTextManager.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: e7981b037b60f4a4989ff59265a308ad \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_Object.cs b/Assets/PerfectWorld/Scripts/Managers/EC_Object.cs index aa41a59a7f..0c0ae14c11 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_Object.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_Object.cs @@ -154,6 +154,7 @@ public partial class CECObject : MonoBehaviour { return EC_Utility.ToA3DVECTOR3(useTransform ? _objectTransform.position : objectPosition); } + public Vector3 GetPosVector3(bool useTransform = true) { diff --git a/Assets/PerfectWorld/Scripts/Managers/FLoatingTextManager.cs b/Assets/PerfectWorld/Scripts/Managers/FLoatingTextManager.cs new file mode 100644 index 0000000000..03ea6fc6e0 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Managers/FLoatingTextManager.cs @@ -0,0 +1,242 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.AddressableAssets; +using UnityEngine.ResourceManagement.AsyncOperations; +using TMPro; +using DG.Tweening; // cần DOTween +using BrewMonster.Scripts.UI.GamePlay; +public enum ImageResType + { + IMG_POPUPNUM = 0, + IMG_HITMISSED, + IMG_FACTION, + IMG_PATEQUEST, + IMG_LEVELUP, + IMG_GOTEXP, + IMG_GOTMONEY, + IMG_DEADLYSTRIKE, + IMG_GOTSP, + IMG_INVALIDHIT, + IMG_TEAMLEADER, + IMG_BOOTHBAR, + IMG_HPWARN, + IMG_MPWARN, + IMG_RETORT, + IMG_IMMUNE, + IMG_TEAMMATE, + IMG_PKSTATE, + IMG_GMFLAG, + IMG_ATTACKLOSE, + IMG_SUCCESS, + IMG_REBOUND, + IMG_BEAT_BACK, + IMG_ADD, + IMG_DODGE_DEBUFF, + IMG_KING, + NUM_IMAGE, + } +public class FLoatingTextManager : MonoBehaviour +{ + public static FLoatingTextManager Instance { get; private set; } + + [Header("Prefab")] + [SerializeField] private AUIFloatTextIcon floatTextIconPrefab; + + [Header("Settings")] + [SerializeField] private int poolSize = 20; + [SerializeField] private Vector3 offset = new Vector3(0, 2f, 0); + [SerializeField] private float riseDistance = 1.5f; + [SerializeField] private float riseDuration = 0.8f; + /// + /// Minimum spacing between floating texts for the same source object (seconds). + /// 同一来源物体连续飘字的最小间隔(秒)。 + /// + [SerializeField] private float staggerIntervalSeconds = 0.3f; + + private readonly Queue pool = new(); + /// + /// Per-source next allowed show time (Unity instance ID → Time.time). + /// + private readonly Dictionary _nextFloatingTextTimeBySourceId = new(); + + [Header("Sprite List")] + [SerializeField] private Dictionary imageDic = new Dictionary(); + + /// + /// Keeps Addressables handles alive so sprites in imageDic are not released. + /// 保留 Addressables 句柄,避免已加载的 Sprite 被卸载。 + /// + private readonly List> _spriteLoadHandles = new List>(); + + private void Awake() + { + // Singleton + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + Instance = this; + DontDestroyOnLoad(gameObject); + + // Tạo sẵn pool + for (int i = 0; i < poolSize; i++) + { + var textObj = Instantiate(floatTextIconPrefab, transform); + textObj.gameObject.SetActive(false); + pool.Enqueue(textObj); + } + LoadAllImages(); + } + + private void OnDestroy() + { + foreach (var h in _spriteLoadHandles) + { + if (h.IsValid()) + Addressables.Release(h); + } + _spriteLoadHandles.Clear(); + } + + /// + /// Gọi để spawn text damage + /// + /// If set, multiple calls for this object are spaced by . + public void ShowText(Vector3 worldPos, int damage, Color color = default, float scale = 1f, ImageResType imageResType = ImageResType.NUM_IMAGE, UnityEngine.Object sourceForStagger = null) + { + float delay = 0f; + UnityEngine.Object staggerSource = sourceForStagger; + if (staggerSource != null) + { + int key = staggerSource.GetInstanceID(); + float now = Time.time; + if (!_nextFloatingTextTimeBySourceId.TryGetValue(key, out float nextSlot)) + nextSlot = now; + float showAt = Mathf.Max(now, nextSlot); + delay = showAt - now; + _nextFloatingTextTimeBySourceId[key] = showAt + staggerIntervalSeconds; + } + + void DoShow() + { + if (staggerSource != null && !staggerSource) + return; + + var text = GetFromPool(); + var imageShow = imageResType == ImageResType.NUM_IMAGE ? null : imageDic[imageResType]; + if (damage > 0) + text.Show(worldPos, damage.ToString(), color, scale, riseDistance, riseDuration, imageShow, () => ReturnToPool(text)); + else + text.Show(worldPos, "", color, scale, riseDistance, riseDuration, imageShow, () => ReturnToPool(text)); + } + + if (delay <= 0f) + DoShow(); + else + DOVirtual.DelayedCall(delay, DoShow, false).SetTarget(this); + } + + private AUIFloatTextIcon GetFromPool() + { + if (pool.Count > 0) + { + return pool.Dequeue(); + } + + // Nếu hết pool, tạo thêm + var text = Instantiate(floatTextIconPrefab, transform); + text.gameObject.SetActive(false); + return text; + } + + private void ReturnToPool(AUIFloatTextIcon text) + { + pool.Enqueue(text); + } + public bool LoadAllImages() + { + LoadImage(ImageResType.IMG_HITMISSED, "InGame/未命中.tga"); + LoadImage(ImageResType.IMG_LEVELUP, "InGame/升级了.tga"); + LoadImage(ImageResType.IMG_GOTEXP, "InGame/经验.tga"); + LoadImage(ImageResType.IMG_GOTMONEY, "InGame/金钱.tga"); + LoadImage(ImageResType.IMG_DEADLYSTRIKE, "InGame/爆击.tga"); + LoadImage(ImageResType.IMG_GOTSP, "InGame/元神.tga"); + LoadImage(ImageResType.IMG_INVALIDHIT, "InGame/无效.tga"); + //LoadImage(ImageResType.IMG_TEAMLEADER, "Window/LeaderMark.tga"); + LoadImage(ImageResType.IMG_HPWARN, "InGame/hp_warn.tga"); + LoadImage(ImageResType.IMG_MPWARN, "InGame/mp_warn.tga"); + LoadImage(ImageResType.IMG_RETORT, "InGame/反震.tga"); + LoadImage(ImageResType.IMG_IMMUNE, "InGame/免疫.tga"); + //LoadImage(ImageResType.IMG_TEAMMATE, "Window/Teammate.tga"); + LoadImage(ImageResType.IMG_PKSTATE, "InGame/PK状态标记.tga"); + LoadImage(ImageResType.IMG_GMFLAG, "InGame/GM标志.dds"); + LoadImage(ImageResType.IMG_ATTACKLOSE, "InGame/失败.tga"); + LoadImage(ImageResType.IMG_SUCCESS, "InGame/成功.tga"); + LoadImage(ImageResType.IMG_REBOUND, "InGame/复仇惩戒.tga"); + LoadImage(ImageResType.IMG_BEAT_BACK, "InGame/复仇镜像.tga"); + LoadImage(ImageResType.IMG_ADD, "InGame/吸血.tga"); + LoadImage(ImageResType.IMG_DODGE_DEBUFF, "InGame/状态闪避.tga"); + //LoadImage(ImageResType.IMG_KING, "King/皇冠图标.tga"); + return false; + } + private void LoadImage(ImageResType type, string path) + { + if (string.IsNullOrEmpty(path)) + return; + + // Same normalization as skill/gfx paths (PC backslashes → Addressables-style slashes). + // 与技能 gfx 路径一致:反斜杠转为斜杠,便于与 Addressables 地址对齐。 + string normalized = path.Replace('\\', '/'); + IReadOnlyList candidates = BuildSpriteAddressCandidates(normalized); + + foreach (string address in candidates) + { + var handle = Addressables.LoadAssetAsync(address); + handle.WaitForCompletion(); + + if (handle.Status == AsyncOperationStatus.Succeeded && handle.Result != null) + { + imageDic[type] = handle.Result; + _spriteLoadHandles.Add(handle); + return; + } + + if (handle.IsValid()) + Addressables.Release(handle); + + } + Debug.Log($"[FLoatingTextManager] Sprite load failed for {type}. Addressables keys must match the catalog exactly; " + + $"tried: {string.Join("; ", candidates)}. " + + $"Similar file names are not auto-resolved (unlike fuzzy file search)."); + } + + /// + /// Addressables uses exact string addresses. Imported UI art may drop .tga/.dds in the key; try those variants. + /// Addressables 为精确字符串地址;导入后地址可能没有 .tga/.dds 等后缀,依次尝试这些候选。 + /// + private static List BuildSpriteAddressCandidates(string path) + { + var list = new List { path }; + + void addUnique(string s) + { + if (!string.IsNullOrEmpty(s) && !list.Contains(s)) + list.Add(s); + } + + string[] sourceExtensions = { ".tga", ".dds", ".bmp", ".png", ".jpg", ".jpeg" }; + foreach (string ext in sourceExtensions) + { + if (path.EndsWith(ext, StringComparison.OrdinalIgnoreCase)) + { + addUnique(path.Substring(0, path.Length - ext.Length)); + break; + } + } + + return list; + } + +} diff --git a/Assets/PerfectWorld/Scripts/Managers/FLoatingTextManager.cs.meta b/Assets/PerfectWorld/Scripts/Managers/FLoatingTextManager.cs.meta new file mode 100644 index 0000000000..d5e32a85cc --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Managers/FLoatingTextManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 8635fe618431341d796413e99407c5fc \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs index 70749e0773..3382c3ef21 100644 --- a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs @@ -2044,13 +2044,12 @@ namespace BrewMonster { if (nDamage == -2) { - // this message is caused by a help skill, so don't use a wounded action here - /* if (dwModifier & CECAttackEvent::MOD_IMMUNE) - BubbleText(BUBBLE_IMMUNE, 0); - else if (dwModifier & CECAttackEvent::MOD_NULLITY) - BubbleText(BUBBLE_INVALIDHIT, 0); - else if (dwModifier & CECAttackEvent::MOD_DODGE_DEBUFF) - BubbleText(BUBBLE_DODGE_DEBUFF, 0);*/ + if ((dwModifier & (uint)MOD.MOD_IMMUNE) != 0) + BubbleText((int)BubbleTextType.BUBBLE_IMMUNE, 0); + else if ((dwModifier & (uint)MOD.MOD_NULLITY) != 0) + BubbleText((int)BubbleTextType.BUBBLE_INVALIDHIT, 0); + else if ((dwModifier & (uint)MOD.MOD_DODGE_DEBUFF) != 0) + BubbleText((int)BubbleTextType.BUBBLE_DODGE_DEBUFF, 0); } else if (nDamage == -1) { @@ -2058,14 +2057,14 @@ namespace BrewMonster // Just play a wounded action if (!OnDamaged(skill)) { - // PlayAction((int)PLAYER_ACTION_TYPE.ACT_WOUNDED); + PlayAction((int)PLAYER_ACTION_TYPE.ACT_WOUNDED); } - /*if (dwModifier & CECAttackEvent::MOD_IMMUNE) - BubbleText(BUBBLE_IMMUNE, 0); - else if (dwModifier & CECAttackEvent::MOD_NULLITY) - BubbleText(BUBBLE_INVALIDHIT, 0); - else if (dwModifier & CECAttackEvent::MOD_DODGE_DEBUFF) - BubbleText(BUBBLE_DODGE_DEBUFF, 0);*/ + if ((dwModifier & (uint)MOD.MOD_IMMUNE) != 0) + BubbleText((int)BubbleTextType.BUBBLE_IMMUNE, 0); + else if ((dwModifier & (uint)MOD.MOD_NULLITY) != 0) + BubbleText((int)BubbleTextType.BUBBLE_INVALIDHIT, 0); + else if ((dwModifier & (uint)MOD.MOD_DODGE_DEBUFF) != 0) + BubbleText((int)BubbleTextType.BUBBLE_DODGE_DEBUFF, 0); } else { @@ -2073,34 +2072,178 @@ namespace BrewMonster if (nDamage > 0) { int p1 = 0; - /*if (dwModifier & CECAttackEvent::MOD_CRITICAL_STRIKE) + if ((dwModifier & (int)MOD.MOD_CRITICAL_STRIKE) != 0) p1 |= 0x0001; - - if (dwModifier & CECAttackEvent::MOD_RETORT) - p1 |= 0x0002;*/ + if ((dwModifier & (uint)MOD.MOD_RETORT) != 0) + p1 |= 0x0002; if (!OnDamaged(skill)) - // PlayAction((int)PLAYER_ACTION_TYPE.ACT_WOUNDED); + PlayAction((int)PLAYER_ACTION_TYPE.ACT_WOUNDED); - DamageTextManager.Instance.ShowDamageText( - transform.position, nDamage, Color.yellow, 1.0f); - /* if (dwModifier & CECAttackEvent::MOD_IMMUNE) - BubbleText(BUBBLE_IMMUNE, 0); - else if (dwModifier & CECAttackEvent::MOD_REBOUND) - BubbleText(BUBBLE_REBOUND, nDamage); - else if (dwModifier & CECAttackEvent::MOD_BEAT_BACK) - BubbleText(BUBBLE_BEAT_BACK, nDamage); - else - BubbleText(BUBBLE_DAMAGE, nDamage, p1);*/ + if ((dwModifier & (uint)MOD.MOD_IMMUNE) != 0) + BubbleText((int)BubbleTextType.BUBBLE_IMMUNE, 0); + else if ((dwModifier & (uint)MOD.MOD_REBOUND) != 0) + BubbleText((int)BubbleTextType.BUBBLE_REBOUND, (uint)nDamage); + else if ((dwModifier & (uint)MOD.MOD_BEAT_BACK) != 0) + BubbleText((int)BubbleTextType.BUBBLE_BEAT_BACK, (uint)nDamage); + else + BubbleText((int)BubbleTextType.BUBBLE_DAMAGE, (uint)nDamage, p1); } - /* else if (dwModifier & CECAttackEvent::MOD_IMMUNE) - BubbleText(BUBBLE_IMMUNE, 0); - else if (dwModifier & CECAttackEvent::MOD_NULLITY) - BubbleText(BUBBLE_INVALIDHIT, 0); + else if ((dwModifier & (uint)MOD.MOD_IMMUNE) != 0) + BubbleText((int)BubbleTextType.BUBBLE_IMMUNE, 0); + else if ((dwModifier & (uint)MOD.MOD_NULLITY) != 0) + BubbleText((int)BubbleTextType.BUBBLE_INVALIDHIT, 0); else - BubbleText(BUBBLE_HITMISSED, 0);*/ + BubbleText((int)BubbleTextType.BUBBLE_HITMISSED, 0); } } + + public void BubbleText(int iIndex, uint dwNum, int p1 = 0) + { + + bool bHost = IsHostPlayer(); + // if (iIndex == BUBBLE_EXP || iIndex == BUBBLE_SP) + // bHost = false; + + Color dwCol = new Color(255, 205, 75); + + if (bHost) + { + var pGameRun = EC_Game.GetGameRun(); + CECHostPlayer pHost = pGameRun?.GetHostPlayer(); + if (iIndex == (int)BubbleTextType.BUBBLE_EXP) + { + bool hasBookExp = pHost != null && pHost.IsReincarnationTomeActive; + int msgId = (int)dwNum > 0 + ? (hasBookExp ? (int)FixedMsg.FIXMSG_GOT_BOOKEXP : (int)FixedMsg.FIXMSG_GOTEXP) + : (int)FixedMsg.FIXMSG_LOSTEXP; + pGameRun?.AddFixedChannelMsg(msgId, (int)ChatChannel.GP_CHAT_FIGHT, (int)dwNum); + } + if (iIndex == (int)BubbleTextType.BUBBLE_SP) + pGameRun?.AddFixedChannelMsg((int)FixedMsg.FIXMSG_GOTSP, (int)ChatChannel.GP_CHAT_FIGHT, (int)dwNum); + if (iIndex == (int)BubbleTextType.BUBBLE_REALMEXP) + pGameRun?.AddFixedChannelMsg((int)FixedMsg.FIXMSG_GOT_REALMEXP, (int)ChatChannel.GP_CHAT_FIGHT, (int)dwNum); + } + + // Chariot / mount (C++): raise bubble by mount dummy AABB * 2.3f. IsInChariot() lives on CECHostPlayer; wire via override or protected hook when ready. + // if (IsInChariot()) + // { + // var dummy = GetDummyModel((int)PLAYERMODEL_TYPE.PLAYERMODEL_DUMMYTYPE2); + // if (dummy != null) + // vPos = GetPosVector3() + g_vAxisY * (dummy.GetModelAABB().Extents.y * 2.3f); + // else + // vPos = GetPosVector3() + g_vAxisY * (m_aabb.Extents.y * 2.5f); + // } + // else + // vPos = GetPosVector3() + g_vAxisY * (m_aabb.Extents.y * 2.5f); + Vector3 vPos = GetPosVector3() + g_vAxisY * (m_aabb.Extents.y * 2.5f); + + ImageResType bubbleTextType = ImageResType.NUM_IMAGE; + + switch (iIndex) + { + case (int)BubbleTextType.BUBBLE_DAMAGE: + + if (!bHost) + dwCol = new Color(237, 56, 0); + + if ((p1 & 0x0001) != 0) + bubbleTextType = ImageResType.IMG_DEADLYSTRIKE; + else if ((p1 & 0x0002) != 0) + bubbleTextType = ImageResType.IMG_RETORT; + break; + + case (int)BubbleTextType.BUBBLE_EXP: + + bubbleTextType = ImageResType.IMG_GOTEXP; + // pDecal->SetScreenPos(80, 70); + // pDecal->EnableScreenPos(true); + break; + + case (int)BubbleTextType.BUBBLE_SP: + + bubbleTextType = ImageResType.IMG_GOTSP; + // pDecal->SetScreenPos(80, 90); + // pDecal->EnableScreenPos(true); + break; + + case (int)BubbleTextType.BUBBLE_MONEY: + + bubbleTextType = ImageResType.IMG_GOTMONEY; + break; + + case (int)BubbleTextType.BUBBLE_LEVELUP: + + bubbleTextType = ImageResType.IMG_LEVELUP; + break; + + case (int)BubbleTextType.BUBBLE_HITMISSED: + + if (!bHost) + dwCol = new Color(237, 56, 0); + + bubbleTextType = ImageResType.IMG_HITMISSED; + break; + + case (int)BubbleTextType.BUBBLE_INVALIDHIT: + + if (!bHost) + dwCol = new Color(237, 56, 0); + + bubbleTextType = ImageResType.IMG_INVALIDHIT; + break; + + case (int)BubbleTextType.BUBBLE_IMMUNE: + + if (!bHost) + dwCol = new Color(237, 56, 0); + + bubbleTextType = ImageResType.IMG_IMMUNE; + break; + + case (int)BubbleTextType.BUBBLE_HPWARN: + + dwCol = new Color(255, 255, 255); + bubbleTextType = ImageResType.IMG_HPWARN; + break; + + case (int)BubbleTextType.BUBBLE_MPWARN: + + dwCol = new Color(255, 255, 255); + bubbleTextType = ImageResType.IMG_MPWARN; + break; + + case (int)BubbleTextType.BUBBLE_REBOUND: + + bubbleTextType = ImageResType.IMG_REBOUND; + break; + + case (int)BubbleTextType.BUBBLE_BEAT_BACK: + + bubbleTextType = ImageResType.IMG_BEAT_BACK; + break; + + case (int)BubbleTextType.BUBBLE_ADD: + + dwCol = new Color(126, 206, 244); + bubbleTextType = ImageResType.IMG_ADD; + break; + + case (int)BubbleTextType.BUBBLE_DODGE_DEBUFF: + + if (!bHost) + dwCol = new Color(237, 56, 0); + + bubbleTextType = ImageResType.IMG_DODGE_DEBUFF; + break; + + default: + bubbleTextType = ImageResType.NUM_IMAGE; + break; + } + + FLoatingTextManager.Instance.ShowText(vPos, (int)dwNum, dwCol, 1f, bubbleTextType, this); + } public void StopSkillAttackAction() { if (m_pActionController != null) @@ -3894,6 +4037,26 @@ namespace BrewMonster WINGTYPE_FLYSWORD, // 飞行器类型:飞剑 WINGTYPE_DOUBLEWHEEL, // 飞行器类型:双脚飞行器 }; + // Bubble text + public enum BubbleTextType + { + BUBBLE_DAMAGE = 0, + BUBBLE_EXP, + BUBBLE_SP, + BUBBLE_MONEY, + BUBBLE_LEVELUP, + BUBBLE_HITMISSED, + BUBBLE_INVALIDHIT, + BUBBLE_IMMUNE, + BUBBLE_HPWARN, + BUBBLE_MPWARN, + BUBBLE_REBOUND, // ���� + BUBBLE_BEAT_BACK, // ���� + BUBBLE_ADD, // ��Ѫ�ļӺ� + BUBBLE_DODGE_DEBUFF, + BUBBLE_REALMEXP, + BUBBLE_NUM, + }; public struct PVPINFO { public bool bEnable; // PVP switch diff --git a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs index 13bc6471e2..51d33888db 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs @@ -8,7 +8,6 @@ using System; using System.Threading.Tasks; using BrewMonster.Scripts.Chat; using UnityEngine; - public class CECNPC : CECObject { [SerializeField] protected INFO m_NPCInfo; @@ -824,58 +823,105 @@ public class CECNPC : CECObject // so if iDamage is -1 we will shoud the wounded animation if (iDamage == -1 && !m_bStartFight) PlayModelAction((int)NPCActionIndex.ACT_WOUNDED); - DamageTextManager.Instance.ShowDamageText(transform.position, iDamage, Color.red, 1.0f); + FLoatingTextManager.Instance.ShowText(transform.position, iDamage, Color.red, 1.0f, ImageResType.NUM_IMAGE, this); - /*if ((dwModifier & (uint)MOD.MOD_IMMUNE) != 0 *//* && !IsImmuneDisable()*//*) - textma - else if (dwModifier & CECAttackEvent::MOD_NULLITY) - BubbleText(BUBBLE_INVALIDHIT, 0); - else if (dwModifier & CECAttackEvent::MOD_ENCHANT_FAILED) - BubbleText(BUBBLE_LOSE, 0); - else if (dwModifier & CECAttackEvent::MOD_SUCCESS) - BubbleText(BUBBLE_SUCCESS, 0); - else if (dwModifier & CECAttackEvent::MOD_DODGE_DEBUFF) - BubbleText(BUBBLE_DODGE_DEBUFF, 0);*/ + if ((dwModifier & (uint)MOD.MOD_IMMUNE) != 0 /* && !IsImmuneDisable()*/) + BubbleText((int)MOD.MOD_IMMUNE, 0); + else if ((dwModifier & (uint)MOD.MOD_NULLITY) != 0) + BubbleText((int)MOD.MOD_NULLITY, 0); + else if ((dwModifier & (uint)MOD.MOD_ENCHANT_FAILED) != 0) + BubbleText((int)MOD.MOD_ENCHANT_FAILED, 0); + else if ((dwModifier & (uint)MOD.MOD_SUCCESS) != 0) + BubbleText((int)MOD.MOD_SUCCESS, 0); + else if ((dwModifier & (uint)MOD.MOD_DODGE_DEBUFF) != 0) + BubbleText((int)MOD.MOD_DODGE_DEBUFF, 0); } else { // this message is related to the host, so we should show a pop up message // Popup a damage decal - /* bool bDeadlyStrike = (dwModifier & CECAttackEvent::MOD_CRITICAL_STRIKE) ? true : false; - bool bRetort = (dwModifier & CECAttackEvent::MOD_RETORT) ? true : false;*/ + bool bDeadlyStrike = (dwModifier & (uint)MOD.MOD_CRITICAL_STRIKE) != 0; + bool bRetort = (dwModifier & (uint)MOD.MOD_RETORT) != 0; if (iDamage > 0) { if (!m_bStartFight) PlayModelAction((int)NPCActionIndex.ACT_WOUNDED); - DamageTextManager.Instance.ShowDamageText(transform.position, iDamage, Color.red, 1.0f); - /* int p1 = 0; - if (bDeadlyStrike) - p1 |= 0x0001; - else if (bRetort) - p1 |= 0x0002;*/ + // Damage number + tint/icons: BubbleText → ShowText only (avoid duplicate red plain text + orange BubbleText). + // 伤害数字与图标只走 BubbleText,避免先红字再橙字飘两次。 + int p1 = 0; + if (bDeadlyStrike) + p1 |= 0x0001; + else if (bRetort) + p1 |= 0x0002; - /* if (dwModifier & CECAttackEvent::MOD_REBOUND) - BubbleText(BUBBLE_REBOUND, (DWORD)iDamage); - else if (dwModifier & CECAttackEvent::MOD_BEAT_BACK) - BubbleText(BUBBLE_BEAT_BACK, (DWORD)iDamage); - else - BubbleText(BUBBLE_DAMAGE, (DWORD)iDamage, p1);*/ + if ((dwModifier & (uint)MOD.MOD_REBOUND) != 0) + BubbleText((int)BubbleTextType.BUBBLE_REBOUND, iDamage); + else if ((dwModifier & (uint)MOD.MOD_BEAT_BACK) != 0) + BubbleText((int)BubbleTextType.BUBBLE_BEAT_BACK, iDamage); + else + BubbleText((int)BubbleTextType.BUBBLE_DAMAGE, iDamage, p1); } - /* else if ((dwModifier & CECAttackEvent::MOD_IMMUNE) && !IsImmuneDisable()) - BubbleText(BUBBLE_IMMUNE, 0); - else if (dwModifier & CECAttackEvent::MOD_NULLITY) - BubbleText(BUBBLE_INVALIDHIT, 0); - else if (dwModifier & CECAttackEvent::MOD_ENCHANT_FAILED) - BubbleText(BUBBLE_LOSE, 0); - else if (dwModifier & CECAttackEvent::MOD_SUCCESS) - BubbleText(BUBBLE_SUCCESS, 0); + else if ((dwModifier & (uint)MOD.MOD_IMMUNE) != 0 /*&& !IsImmuneDisable()*/) + BubbleText((int)BubbleTextType.BUBBLE_IMMUNE, 0); + else if ((dwModifier & (uint)MOD.MOD_NULLITY) != 0) + BubbleText((int)BubbleTextType.BUBBLE_INVALIDHIT, 0); + else if ((dwModifier & (uint)MOD.MOD_ENCHANT_FAILED) != 0) + BubbleText((int)BubbleTextType.BUBBLE_LOSE, 0); + else if ((dwModifier & (uint)MOD.MOD_SUCCESS) != 0) + BubbleText((int)BubbleTextType.BUBBLE_SUCCESS, 0); else - BubbleText(BUBBLE_HITMISSED, 0);*/ + BubbleText((int)BubbleTextType.BUBBLE_HITMISSED, 0); } } - + public void BubbleText(int iIndex, int dwNum, int p1 = 0/* 0 */) + { + //FLoatingTextManager.Instance.ShowText(transform.position, dwNum, Color.red, 1.0f, (uint)iIndex); + Color displayColor = new Color(237, 56, 0); + ImageResType imageResType = ImageResType.NUM_IMAGE; + switch (iIndex) + { + case (int)BubbleTextType.BUBBLE_DAMAGE: + if ((p1 & 0x0001) != 0) + imageResType = ImageResType.IMG_DEADLYSTRIKE; + else if ((p1 & 0x0002) != 0) + imageResType = ImageResType.IMG_RETORT; + break; + + case (int)BubbleTextType.BUBBLE_HITMISSED: + imageResType = ImageResType.IMG_HITMISSED; + break; + case (int)BubbleTextType.BUBBLE_INVALIDHIT: + imageResType = ImageResType.IMG_INVALIDHIT; + break; + case (int)BubbleTextType.BUBBLE_IMMUNE: + imageResType = ImageResType.IMG_IMMUNE; + break; + case (int)BubbleTextType.BUBBLE_HPWARN: + imageResType = ImageResType.IMG_HPWARN; + break; + case (int)BubbleTextType.BUBBLE_LOSE: + imageResType = ImageResType.IMG_ATTACKLOSE; + break; + case (int)BubbleTextType.BUBBLE_SUCCESS: + imageResType = ImageResType.IMG_SUCCESS; + break; + case (int)BubbleTextType.BUBBLE_REBOUND: + imageResType = ImageResType.IMG_REBOUND; + break; + case (int)BubbleTextType.BUBBLE_BEAT_BACK: + imageResType = ImageResType.IMG_BEAT_BACK; + break; + case (int)BubbleTextType.BUBBLE_DODGE_DEBUFF: + imageResType = ImageResType.IMG_DODGE_DEBUFF; + break; + default: + imageResType = ImageResType.NUM_IMAGE; + break; + } + FLoatingTextManager.Instance.ShowText(transform.position, dwNum, displayColor, 1.0f, imageResType, this); + } public void WorkFinished(int iWorkID) { // Note: below judge can prevent many problems when we attempt to @@ -1710,6 +1756,19 @@ public class CECNPC : CECObject CECModel model = GetModel(); return model?.GetHook(hookName, recursive); } + public enum BubbleTextType + { + BUBBLE_DAMAGE = 0, + BUBBLE_HITMISSED, + BUBBLE_INVALIDHIT, + BUBBLE_IMMUNE, + BUBBLE_HPWARN, + BUBBLE_LOSE, + BUBBLE_SUCCESS, + BUBBLE_REBOUND, // ���� + BUBBLE_BEAT_BACK, // ���� + BUBBLE_DODGE_DEBUFF, + }; } public struct ClearComActFlagEvent { @@ -1777,6 +1836,8 @@ public enum NPCActionIndex ACT_WOUNDED2, ACT_MAX, }; +//BUBBLE TEXT TYPE FOR NPC. HOST IS DIFFERENT FROM NPC. + public ref struct ByteReader { private ReadOnlySpan _span; diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs index 1a6f3e0e73..cc75b72c48 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs @@ -2973,5 +2973,11 @@ namespace CSNetwork.GPDataType { public int id; // self id or pet id. }; + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_receive_exp + { + public int exp; + public int sp; + }; } diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs index 1ebfc44484..7850fde21f 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs @@ -1290,6 +1290,9 @@ namespace CSNetwork break; } + case CommandID.RECEIVE_EXP: + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_RECEIVEEXP, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); + break; case CommandID.LEVEL_UP: { cmd_level_up pCmdLevelUp = GPDataTypeHelper.FromBytes(pDataBuf); ; diff --git a/Assets/PerfectWorld/Scripts/Players/EC_HostMsg.cs b/Assets/PerfectWorld/Scripts/Players/EC_HostMsg.cs index f7d798cfe4..a954bab899 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_HostMsg.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_HostMsg.cs @@ -480,6 +480,7 @@ namespace BrewMonster } break; } + case CommandID.PET_REBUILD_INHERIT_START: case CommandID.PET_REBUILD_INHERIT_INFO: case CommandID.PET_REBUILD_INHERIT_END: @@ -568,6 +569,35 @@ namespace BrewMonster } } } + + void OnMsgHstReceiveExp (ECMSG Msg) + { + cmd_receive_exp pCmd = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1); + + if (m_ReincarnationTome.tome_active != 0) { + //dunno what it do "? + // m_ReincarnationTome.tome_exp += pCmd.exp; + // CECGameUIMan pGameUI = EC_Game.GetGameRun().GetUIManager().GetInGameUIMan(); + // CDlgReincarnationBook* pDlgBook = dynamic_cast(pGameUI->GetDialog("Win_ReincarnationBook")); + // if (pDlgBook && pDlgBook->IsShow()) pDlgBook->Update(); + // CDlgReincarnationRewrite* pDlgRewrite = dynamic_cast(pGameUI->GetDialog("Win_ReincarnationRewrite")); + // if (pDlgRewrite && pDlgRewrite->IsShow()) pDlgRewrite->Update(); + } + + if (pCmd.exp != 0) + { + // Print notify text + // g_pGame->GetGameRun()->AddFixedMessage(pCmd->exp > 0 ? FIXMSG_GOTEXP : FIXMSG_LOSTEXP, (int)pCmd->exp); + BubbleText((int)BubbleTextType.BUBBLE_EXP, (uint)pCmd.exp); + } + + if (pCmd.sp > 0) + { + // Print notify text + // g_pGame->GetGameRun()->AddFixedMessage(FIXMSG_GOTSP, (int)pCmd->sp); + BubbleText((int)BubbleTextType.BUBBLE_SP, (uint)pCmd.sp); + } + } } } diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIFloatTextIcon.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIFloatTextIcon.cs new file mode 100644 index 0000000000..947416d8b1 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIFloatTextIcon.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.AddressableAssets; +using UnityEngine.ResourceManagement.AsyncOperations; +using TMPro; +using DG.Tweening; // cần DOTween +using BrewMonster.Scripts.UI.GamePlay; +using UnityEngine.UI; +namespace BrewMonster.Scripts.UI.GamePlay +{ + public class AUIFloatTextIcon : MonoBehaviour + { + [SerializeField] TMP_Text text; + [SerializeField] SpriteRenderer ingameIcon; + public void Show(Vector3 worldPos, string damage, Color color = default, float scale = 1f, float riseDistance = 1f, float riseDuration = 1f, Sprite sprite = null, Action onComplete = null) + { + if(sprite != null) + { + ingameIcon.sprite = sprite; + ingameIcon.gameObject.SetActive(true); + } + else + { + ingameIcon.gameObject.SetActive(false); + } + text.text = damage; + text.color = color; + text.fontSize = 6; + text.transform.localScale = Vector3.one * scale; + text.transform.position = worldPos; + gameObject.SetActive(true); + + // Hiệu ứng bay lên + mờ dần + text.transform.DOMoveY(worldPos.y + riseDistance, riseDuration).SetEase(Ease.OutQuad); + text.DOFade(0f, riseDuration) + .SetEase(Ease.InQuad) + .OnComplete(() => + { + text.alpha = 1f; + text.gameObject.SetActive(false); + onComplete?.Invoke(); + }); + } + } + +} diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIFloatTextIcon.cs.meta b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIFloatTextIcon.cs.meta new file mode 100644 index 0000000000..c517fea9f2 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIFloatTextIcon.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0515aed5525ee47d4b5249804a555471 \ No newline at end of file diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/gm标志.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/gm标志.png.meta index 76684a00c5..3297f73e9e 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/gm标志.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/gm标志.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -139,7 +139,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/hp_warn.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/hp_warn.png.meta index 475c02fc44..0352016531 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/hp_warn.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/hp_warn.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/mp_warn.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/mp_warn.png.meta index d6978cef7d..7f3ec1fff2 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/mp_warn.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/mp_warn.png.meta @@ -40,10 +40,10 @@ TextureImporter: wrapU: 0 wrapV: 0 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/pk状态标记.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/pk状态标记.png.meta index 8b9a0cbfde..672cc68e9e 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/pk状态标记.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/pk状态标记.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/元神.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/元神.png.meta index 6c5a8037ba..09424a618f 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/元神.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/元神.png.meta @@ -40,10 +40,10 @@ TextureImporter: wrapU: 0 wrapV: 0 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/免疫.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/免疫.png.meta index fde6c05b73..1fd45012d1 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/免疫.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/免疫.png.meta @@ -40,10 +40,10 @@ TextureImporter: wrapU: 0 wrapV: 0 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/升级了.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/升级了.png.meta index 858a0efdd4..08f09e9fa2 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/升级了.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/升级了.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/反击.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/反击.png.meta index c633323f8a..03249a2230 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/反击.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/反击.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/反噬.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/反噬.png.meta index 57d490fa7f..4810bd1085 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/反噬.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/反噬.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/反弹.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/反弹.png.meta index 903edc85e2..29ffb0eb32 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/反弹.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/反弹.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/反震.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/反震.png.meta index dd16dc6cb4..d525f7a808 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/反震.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/反震.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/吸血.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/吸血.png.meta index 2ab7869925..46ee46aa3f 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/吸血.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/吸血.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/复仇反噬.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/复仇反噬.png.meta index 6166100242..e2d7413372 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/复仇反噬.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/复仇反噬.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/复仇封印.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/复仇封印.png.meta index 91348d48d5..14fe1408c9 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/复仇封印.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/复仇封印.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/复仇惩戒.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/复仇惩戒.png.meta index 50e6ff1de4..971f4b18ae 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/复仇惩戒.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/复仇惩戒.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/复仇镜像.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/复仇镜像.png.meta index 072e5aaa57..c20424c28f 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/复仇镜像.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/复仇镜像.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/复仇震荡.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/复仇震荡.png.meta index b5e77f0add..c0787053d8 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/复仇震荡.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/复仇震荡.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/失败.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/失败.png.meta index ab8cde9d99..40e28ac1cc 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/失败.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/失败.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/成功.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/成功.png.meta index eb6d01f5ee..09fce0bc84 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/成功.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/成功.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/无效.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/无效.png.meta index 05279ecc6a..c056eec18f 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/无效.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/无效.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/未命中.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/未命中.png.meta index 34c13365d9..cb8f8f5db5 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/未命中.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/未命中.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/爆击.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/爆击.png.meta index 44bc62a46c..032a19847d 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/爆击.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/爆击.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/状态闪避.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/状态闪避.png.meta index de46e73f5b..08a550779d 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/状态闪避.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/状态闪避.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/生命值过低.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/生命值过低.png.meta index 0e4598bc56..e56651c8a7 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/生命值过低.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/生命值过低.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/真气值过低.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/真气值过低.png.meta index b25a44911d..a00c5e770a 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/真气值过低.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/真气值过低.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/经验.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/经验.png.meta index fd876e29e3..3e8355da87 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/经验.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/经验.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/PerfectWorld/UI/surfaces/ingame/金钱.png.meta b/Assets/PerfectWorld/UI/surfaces/ingame/金钱.png.meta index f69c0ce847..727692c5e7 100644 --- a/Assets/PerfectWorld/UI/surfaces/ingame/金钱.png.meta +++ b/Assets/PerfectWorld/UI/surfaces/ingame/金钱.png.meta @@ -40,10 +40,10 @@ TextureImporter: wrapU: 0 wrapV: 0 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -54,7 +54,7 @@ TextureImporter: alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -126,7 +126,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 4ac473a19b..379fa530d5 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -101,6 +101,8 @@ namespace BrewMonster public A3DVECTOR3 m_vAccel; // Accelerate\ public byte m_RealmLevel; REINCARNATION_TOME m_ReincarnationTome; // תÉú + /// Used by for fight-channel EXP strings (book vs normal). + internal bool IsReincarnationTomeActive => m_ReincarnationTome.tome_active != 0; public bool m_bRushFly = false; // true, in rush fly mode private CECCounter m_IncantCnt; @@ -614,7 +616,7 @@ namespace BrewMonster case EC_MsgDef.MSG_PM_PLAYERCHGSHAPE : OnMsgPlayerChgShape(Msg); break; case EC_MsgDef.MSG_HST_SETMOVESTAMP: OnMsgHstSetMoveStamp(Msg); break; case EC_MsgDef.MSG_HST_SANCTUARY: OnMsgHstSanctuary(Msg); break; - + case EC_MsgDef.MSG_HST_RECEIVEEXP: OnMsgHstReceiveExp(Msg); break; default: // Uncomment to debug unhandled messages // Debug.LogWarning($"[CECHostPlayer] ProcessMessage: Unhandled message {msg}"); @@ -664,164 +666,6 @@ namespace BrewMonster AddMoneyAmount(-(int)pCmd.cost); } - private void BubbleText(int iIndex, uint dwNum, int p1 = 0) - { - bool isHost = IsHostPlayer(); - - if (isHost) - { - CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer(); - if (iIndex == (int)BubbleTextType.BUBBLE_EXP) - { - bool hasBookExp = pHost != null && pHost.m_ReincarnationTome.tome_active != 0; - int msgId = (int)dwNum > 0 ? - (hasBookExp ? (int)FixedMsg.FIXMSG_GOT_BOOKEXP : (int)FixedMsg.FIXMSG_GOTEXP) : - (int)FixedMsg.FIXMSG_LOSTEXP; - EC_Game.GetGameRun()?.AddFixedChannelMsg(msgId, (int)ChatChannel.GP_CHAT_FIGHT, (int)dwNum); - } - - if (iIndex == (int)BubbleTextType.BUBBLE_SP) - { - EC_Game.GetGameRun()?.AddFixedChannelMsg((int)FixedMsg.FIXMSG_GOTSP, (int)ChatChannel.GP_CHAT_FIGHT, (int)dwNum); - } - - if (iIndex == (int)BubbleTextType.BUBBLE_REALMEXP) - { - EC_Game.GetGameRun()?.AddFixedChannelMsg((int)FixedMsg.FIXMSG_GOT_REALMEXP, (int)ChatChannel.GP_CHAT_FIGHT, (int)dwNum); - } - } - - Vector3 vPos; - if (IsInChariot()) - { - var dummy = GetDummyModel((int)PLAYERMODEL_TYPE.PLAYERMODEL_DUMMYTYPE2); - if (dummy != null) - { - // TODO - //vPos = GetPos() + g_vAxisY * (dummy.GetModelAABB().Extents.y * 2.3f); - } - else - { - vPos = EC_Utility.ToVector3(GetPos()) + g_vAxisY * (m_aabb.Extents.y * 2.5f); - } - - //CECBubbleDecal* pBubbleDecal = m_pBubbleTexts->AddDecal(vPos, CECDecal::DCID_ICONDECAL); - //CECIconDecal* pDecal = (CECIconDecal*)pBubbleDecal->GetDecal(); - - //switch (iIndex) - //{ - // case BUBBLE_DAMAGE: - - // if (!bHost) - // dwCol = A3DCOLORRGB(237, 56, 0); - - // if (p1 & 0x0001) - // pDecal->AddIcon(CECImageRes::IMG_DEADLYSTRIKE, 0, dwCol); - // else if (p1 & 0x0002) - // pDecal->AddIcon(CECImageRes::IMG_RETORT, 0, dwCol); - - // pDecal->AddNumIcons(CECImageRes::IMG_POPUPNUM, dwNum, dwCol); - // break; - - // case BUBBLE_EXP: - - // pDecal->AddIcon(CECImageRes::IMG_GOTEXP, 0, dwCol); - // pDecal->AddNumIcons(CECImageRes::IMG_POPUPNUM, dwNum, dwCol); - // // pDecal->SetScreenPos(80, 70); - // // pDecal->EnableScreenPos(true); - // break; - - // case BUBBLE_SP: - - // pDecal->AddIcon(CECImageRes::IMG_GOTSP, 0, dwCol); - // pDecal->AddNumIcons(CECImageRes::IMG_POPUPNUM, dwNum, dwCol); - // // pDecal->SetScreenPos(80, 90); - // // pDecal->EnableScreenPos(true); - // break; - - // case BUBBLE_MONEY: - - // pDecal->AddIcon(CECImageRes::IMG_GOTMONEY, 0, dwCol); - // pDecal->AddNumIcons(CECImageRes::IMG_POPUPNUM, dwNum, dwCol); - // break; - - // case BUBBLE_LEVELUP: - - // pDecal->AddIcon(CECImageRes::IMG_LEVELUP, 0, dwCol); - // break; - - // case BUBBLE_HITMISSED: - - // if (!bHost) - // dwCol = A3DCOLORRGB(237, 56, 0); - - // pDecal->AddIcon(CECImageRes::IMG_HITMISSED, 0, dwCol); - // break; - - // case BUBBLE_INVALIDHIT: - - // if (!bHost) - // dwCol = A3DCOLORRGB(237, 56, 0); - - // pDecal->AddIcon(CECImageRes::IMG_INVALIDHIT, 0, dwCol); - // break; - - // case BUBBLE_IMMUNE: - - // if (!bHost) - // dwCol = A3DCOLORRGB(237, 56, 0); - - // pDecal->AddIcon(CECImageRes::IMG_IMMUNE, 0, dwCol); - // break; - - // case BUBBLE_HPWARN: - - // dwCol = A3DCOLORRGB(255, 255, 255); - // pDecal->AddIcon(CECImageRes::IMG_HPWARN, 0, dwCol); - // break; - - // case BUBBLE_MPWARN: - - // dwCol = A3DCOLORRGB(255, 255, 255); - // pDecal->AddIcon(CECImageRes::IMG_MPWARN, 0, dwCol); - // break; - - // case BUBBLE_REBOUND: - - // pDecal->AddIcon(CECImageRes::IMG_REBOUND, 0, dwCol); - // pDecal->AddNumIcons(CECImageRes::IMG_POPUPNUM, dwNum, dwCol); - // break; - - // case BUBBLE_BEAT_BACK: - - // pDecal->AddIcon(CECImageRes::IMG_BEAT_BACK, 0, dwCol); - // pDecal->AddNumIcons(CECImageRes::IMG_POPUPNUM, dwNum, dwCol); - // break; - - // case BUBBLE_ADD: - - // dwCol = A3DCOLORRGB(126, 206, 244); - // pDecal->AddIcon(CECImageRes::IMG_ADD, 0, dwCol); - // pDecal->AddNumIcons(CECImageRes::IMG_POPUPNUM, dwNum, dwCol); - // break; - - // case BUBBLE_DODGE_DEBUFF: - - // if (!bHost) - // dwCol = A3DCOLORRGB(237, 56, 0); - - // pDecal->AddIcon(CECImageRes::IMG_DODGE_DEBUFF, 0, dwCol); - // break; - - // default: - // return; - } - else - { - vPos = EC_Utility.ToVector3(GetPos()) + g_vAxisY * (m_aabb.Extents.y * 2.5f); - } - } - /// /// Sell to NPC: server sends ITEM_TO_MONEY. Removes sold items from pack and adds gained money. /// Payload layout differs across server builds, so we parse defensively. @@ -3084,7 +2928,7 @@ namespace BrewMonster EventBus.Publish(new HostPlayerLevelUpUIEvent()); // // Popup notify bubble text - // BubbleText(BUBBLE_LEVELUP, 0); + BubbleText((int)BubbleTextType.BUBBLE_LEVELUP, 0); // // // Notify my friends that my level changed // ACHAR szInfo[40];