diff --git a/Assets/Prefabs/UI/SelectCharacterUI.prefab b/Assets/Prefabs/UI/SelectCharacterUI.prefab index 99860d1007..384c711492 100644 --- a/Assets/Prefabs/UI/SelectCharacterUI.prefab +++ b/Assets/Prefabs/UI/SelectCharacterUI.prefab @@ -75,6 +75,127 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2335355260693615667 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4002267172184040261} + - component: {fileID: 2340503496181969335} + - component: {fileID: 2112208504970652693} + - component: {fileID: 5173447691193350084} + m_Layer: 5 + m_Name: enter_game_btn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4002267172184040261 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2335355260693615667} + 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: 5671343588912430135} + m_Father: {fileID: 8190183238285994582} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -230, y: 100} + m_SizeDelta: {x: 356, y: 99} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2340503496181969335 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2335355260693615667} + m_CullTransparentMesh: 1 +--- !u!114 &2112208504970652693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2335355260693615667} + 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: edd33299d4203c34e957ca4cc602468a, 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 &5173447691193350084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2335355260693615667} + 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: 2112208504970652693} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &2432735602217839019 GameObject: m_ObjectHideFlags: 0 @@ -485,6 +606,142 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_ShowMaskGraphic: 0 +--- !u!1 &4934455472919714949 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5671343588912430135} + - component: {fileID: 2419494351044922696} + - component: {fileID: 8755002905980993026} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5671343588912430135 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4934455472919714949} + 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: 4002267172184040261} + 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: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2419494351044922696 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4934455472919714949} + m_CullTransparentMesh: 1 +--- !u!114 &8755002905980993026 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4934455472919714949} + 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: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "V\xE0o game" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, 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: 40.04 + m_fontSizeBase: 40.04 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + 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 &6031041715831305634 GameObject: m_ObjectHideFlags: 0 @@ -516,6 +773,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6444858493086001938} + - {fileID: 4002267172184040261} m_Father: {fileID: 5968911800527563993} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -657,6 +915,7 @@ MonoBehaviour: addCharacterItemPrefab: {fileID: 5263746738484752443, guid: a0b31ed0940ec9942b243a0b8cec8ad3, type: 3} parentItems: {fileID: 2643174602035272289} createCharacterButton: {fileID: 2685968509838782728} + _btnEnterGame: {fileID: 5173447691193350084} createCharacterScreen: {fileID: 0} --- !u!1 &7510180475820570348 GameObject: @@ -816,7 +1075,7 @@ GameObject: - component: {fileID: 65697960061454470} - component: {fileID: 2685968509838782728} m_Layer: 5 - m_Name: enter_game_btn + m_Name: enter_game_btn?? m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Prefabs/role_1.prefab b/Assets/Prefabs/role_1.prefab index 749b13906d..eba6e82665 100644 --- a/Assets/Prefabs/role_1.prefab +++ b/Assets/Prefabs/role_1.prefab @@ -390,7 +390,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 7309247008755679928} m_Father: {fileID: 7908433956144043347} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} @@ -661,6 +662,81 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4596132992197834427 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7309247008755679928} + - component: {fileID: 6214481239893992401} + - component: {fileID: 1695895101203069456} + m_Layer: 5 + m_Name: FocusImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7309247008755679928 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4596132992197834427} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.1591, y: 1.1591, z: 1.1591} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5880582069126801893} + 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: 70.5, y: 3.8} + m_SizeDelta: {x: 112, y: 112} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6214481239893992401 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4596132992197834427} + m_CullTransparentMesh: 1 +--- !u!114 &1695895101203069456 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4596132992197834427} + 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: 360017f7378d2204da559134abb90341, 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!1 &4863950106461546000 GameObject: m_ObjectHideFlags: 0 @@ -949,6 +1025,8 @@ MonoBehaviour: m_EditorClassIdentifier: btnClick: {fileID: 2876940671243353215} nameCharacter: {fileID: 1254458684095285810} + _labelDetailInfo: {fileID: 5335385781983735630} + _goFocusImage: {fileID: 4596132992197834427} --- !u!1 &6227331727854863199 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/CharacterItemUI.cs b/Assets/Scripts/CharacterItemUI.cs index 3d8f42cff4..736401f416 100644 --- a/Assets/Scripts/CharacterItemUI.cs +++ b/Assets/Scripts/CharacterItemUI.cs @@ -1,8 +1,8 @@ using BrewMonster; using CSNetwork.Protocols.RPCData; using System; -using System.Data; using System.Text; +using BrewMonster.Network; using TMPro; using UnityEngine; using UnityEngine.UI; @@ -11,22 +11,30 @@ public class CharacterItemUI : MonoBehaviour { [SerializeField] private Button btnClick; [SerializeField] private TextMeshProUGUI nameCharacter; + [SerializeField] private TextMeshProUGUI _labelDetailInfo; + [SerializeField] private GameObject _goFocusImage; RoleInfo dataItem; - Action onClick; + public RoleInfo RoleInfo => dataItem; + Action onClick; + + private void OnEnable() + { + _goFocusImage.SetActive(false); + } + // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { btnClick.onClick.AddListener(OnClickBtn); } - public void InitItem(RoleInfo role, Action action) + public void InitItem(RoleInfo role, Action action) { dataItem = role; onClick = action; string roleName = "(Error decoding name)"; if (role.name != null && role.name.ByteArray != null) { - // Be careful with encoding, assume UTF8 is correct roleName = Encoding.Unicode.GetString( role.name.RawBuffer, @@ -35,10 +43,23 @@ public class CharacterItemUI : MonoBehaviour ); } nameCharacter.text = roleName; + if (EC_Game.GetGameRun() != null) + { + _labelDetailInfo.text =$"{EC_Game.GetGameRun().GetProfName(role.occupation)} Cấp {role.level.ToString()}"; + } + else + { + BMLogger.LogError("No game run found"); + } } public void OnClickBtn() { - onClick?.Invoke(dataItem); + onClick?.Invoke(this); + } + + public void SetFocus(bool focus) + { + _goFocusImage.SetActive(focus); } } diff --git a/Assets/Scripts/SelecScreenCharacter.cs b/Assets/Scripts/SelecScreenCharacter.cs index 05179aca0f..01ea439c40 100644 --- a/Assets/Scripts/SelecScreenCharacter.cs +++ b/Assets/Scripts/SelecScreenCharacter.cs @@ -13,11 +13,25 @@ namespace BrewMonster.UI [SerializeField] private GameObject addCharacterItemPrefab; [SerializeField] private RectTransform parentItems; [SerializeField] private Button createCharacterButton; + [SerializeField] private Button _btnEnterGame; [SerializeField] private CreateCharacterScreen createCharacterScreen; + private CharacterItemUI _selectingCharacterItemUI; private Action _onClickItemChar; private Action _onCreateCharacterComplete; + private void OnEnable() + { + _btnEnterGame.onClick.AddListener(OnClickedEnterGame); + _btnEnterGame.gameObject.SetActive(false); + } + + private void OnDisable() + { + _btnEnterGame.onClick.RemoveListener(OnClickedEnterGame); + _selectingCharacterItemUI = null; + } + private void Start() { if (createCharacterButton != null) @@ -48,7 +62,7 @@ namespace BrewMonster.UI if (characterItemPrefab != null && parentItems != null) { CharacterItemUI item = Instantiate(characterItemPrefab, parentItems).GetComponent(); - item.InitItem(info, OnClickItemChar); + item.InitItem(info, OnSelectCharacter); } } @@ -97,6 +111,23 @@ namespace BrewMonster.UI } } + private void OnSelectCharacter(CharacterItemUI characterItemUI) + { + if (_selectingCharacterItemUI == characterItemUI) + { + return; + + } + if(_selectingCharacterItemUI!=null) + { + _selectingCharacterItemUI.SetFocus(false); + } + + _selectingCharacterItemUI = characterItemUI; + _selectingCharacterItemUI.SetFocus(true); + _btnEnterGame.gameObject.SetActive(true); + } + private void OnCreateCharacterClicked() { if (createCharacterScreen != null) @@ -126,5 +157,17 @@ namespace BrewMonster.UI gameObject.SetActive(true); } + + private void OnClickedEnterGame() + { + if (_selectingCharacterItemUI != null) + { + _onClickItemChar?.Invoke(_selectingCharacterItemUI.RoleInfo); + } + else + { + BMLogger.LogError("No role selected"); + } + } } }