update ui for dialogProduce.prefab

This commit is contained in:
VuNgocHaiC7
2026-04-02 17:57:25 +07:00
parent 12c2c51f0f
commit a33c35722b
4 changed files with 3841 additions and 16363 deletions
@@ -28,7 +28,7 @@ namespace BrewMonster
[SerializeField] private GameObject itemPb;
[Header("Quantity")]
[SerializeField] private List<TextMeshProUGUI> quantityText;
[SerializeField] private TextMeshProUGUI quantityText;
[SerializeField] private Button quantityIncreaseBtn;
[SerializeField] private Button quantityDecreaseBtn;
[SerializeField] private Button quantityMaxBtn;
@@ -42,7 +42,7 @@ namespace BrewMonster
[SerializeField] private List<Transform> materialSlots = new List<Transform>();
[Header("Result Slot")]
[SerializeField] private Transform itemResult;
[SerializeField] private Image itemResult;
[Header("Item Info Panel")]
public Transform itemInfoRoot;
@@ -56,6 +56,9 @@ namespace BrewMonster
[SerializeField] private TextMeshProUGUI weponDescInfoText;
[SerializeField] private TextMeshProUGUI weponExtraInfoText;
[Header("Default")]
[SerializeField] private Sprite khung_item;
private NPC_MAKE_SERVICE? cachedMakeService = null;
private int currentTabIndex = 0;
private uint selectedRecipeId = 0; // Track the currently selected recipe
@@ -79,8 +82,7 @@ namespace BrewMonster
public override void Start()
{
quantityText[0].text = currentQuantity.ToString();
quantityText[1].text = currentQuantity.ToString();
quantityText.text = currentQuantity.ToString();
quantityDecreaseBtn.onClick.AddListener(OnClickDecreaseBtn);
quantityIncreaseBtn.onClick.AddListener(OnClickIncreaseBtn);
quantityMaxBtn.onClick.AddListener(OnClickMaxBtn);
@@ -309,8 +311,15 @@ namespace BrewMonster
btn.onClick.RemoveAllListeners();
btn.onClick.AddListener(() =>
{
ShowItemInfoByRecipe(recipeId);
bool isNewRecipe = selectedRecipeId != recipeId;
selectedRecipeId = recipeId;
if (isNewRecipe)
{
currentQuantity = 1;
UpdateQuantityText(currentQuantity);
}
ShowRecipeMaterials(recipeId);
ShowItemInfoByRecipe(recipeId);
});
}
@@ -331,14 +340,12 @@ namespace BrewMonster
{
if (slot == null) continue;
slot.gameObject.SetActive(false);
Transform iconTf = slot.Find("item");
if (iconTf != null)
{
Image img = iconTf.GetComponent<Image>();
if (img != null)
img.sprite = null;
img.sprite = khung_item;
}
Transform qtyTf = slot.Find("text_quantity");
@@ -352,30 +359,14 @@ namespace BrewMonster
if (itemResult != null)
{
itemResult.gameObject.SetActive(false);
Transform iconTf = itemResult.Find("item");
if (iconTf != null)
{
Image img = iconTf.GetComponent<Image>();
if (img != null)
img.sprite = null;
}
Transform qtyTf = itemResult.Find("text_quantity");
if (qtyTf != null)
{
TextMeshProUGUI txt = qtyTf.GetComponent<TextMeshProUGUI>();
if (txt != null)
txt.text = "";
}
itemResult.sprite = khung_item;
}
}
public void ShowRecipeMaterials(uint recipeId)
{
selectedRecipeId = recipeId; // Track the selected recipe
selectedRecipeId = recipeId;
ClearMaterialSlots();
var edm = ElementDataManProvider.GetElementDataMan();
@@ -395,32 +386,20 @@ namespace BrewMonster
{
uint outputItemId = recipe.targets[0].id_to_make;
itemResult.gameObject.SetActive(true);
Transform iconTf = itemResult.Find("item");
if (iconTf != null)
if (itemResult != null)
{
Image img = iconTf.GetComponent<Image>();
if (img != null)
if (itemResult != null)
{
Sprite sp = EC_IvtrItemUtils.Instance.ResolveItemIconSprite((int)outputItemId);
if (sp != null)
{
img.sprite = sp;
img.enabled = true;
img.preserveAspect = true;
itemResult.sprite = sp;
itemResult.enabled = true;
itemResult.preserveAspect = true;
}
}
}
Transform qtyTf = itemResult.Find("text_quantity");
if (qtyTf != null)
{
TextMeshProUGUI txt = qtyTf.GetComponent<TextMeshProUGUI>();
if (txt != null)
txt.text = "1";
}
Button resultBtn = itemResult.GetComponent<Button>();
if (resultBtn == null)
{
@@ -450,8 +429,11 @@ namespace BrewMonster
if (mat.id == 0 || mat.num <= 0)
continue;
// compute required amount for the currently selected quantity
int requiredAmount = mat.num * Mathf.Max(1, currentQuantity);
int owned = GetInventoryItemCount(mat.id);
bool enough = owned >= mat.num;
bool enough = owned >= requiredAmount;
if (!enough)
allEnough = false;
@@ -468,9 +450,9 @@ namespace BrewMonster
btn.onClick.RemoveAllListeners();
btn.onClick.AddListener(() =>
{
EC_IvtrItem matItem = EC_IvtrItem.CreateItem((int)mat.id, 0, 1);
EC_IvtrItem matItem = EC_IvtrItem.CreateItem((int)capturedMatId, 0, 1);
matItem?.GetDetailDataFromLocal();
ShowMaterialItemInfo(matItem, mat.id);
ShowMaterialItemInfo(matItem, capturedMatId);
});
Transform iconTf = slot.Find("item");
@@ -492,12 +474,12 @@ namespace BrewMonster
{
var tmp = qtyTf.GetComponent<TMPro.TextMeshProUGUI>();
if (tmp != null)
tmp.text = $"{mat.num}";
tmp.text = $"{requiredAmount}/{owned}";
else
{
TextMeshProUGUI txt = qtyTf.GetComponent<TextMeshProUGUI>();
if (txt != null)
txt.text = $"{mat.num}";
txt.text = $"{requiredAmount}/{owned}";
}
}
@@ -506,18 +488,10 @@ namespace BrewMonster
if (itemResult != null)
{
Transform iconTf = itemResult.Find("item");
if (iconTf != null)
{
Image img = iconTf.GetComponent<Image>();
if (img != null)
{
img.color = allEnough ? COLOR_ENOUGH : COLOR_NOT_ENOUGH;
}
}
itemResult.color = allEnough ? COLOR_ENOUGH : COLOR_NOT_ENOUGH;
}
if(startProduceBtn != null)
if (startProduceBtn != null)
{
startProduceBtn.interactable = allEnough;
}
@@ -703,15 +677,24 @@ namespace BrewMonster
{
if (quantityText != null)
{
quantityText[0].text = quantity.ToString();
quantityText[1].text = quantity.ToString();
quantityText.text = quantity.ToString();
}
}
private void OnClickIncreaseBtn()
{
currentQuantity++;
if (selectedRecipeId != 0)
{
int max = CalculateMaxProduceCount(selectedRecipeId);
if (max > 0 && currentQuantity > max)
currentQuantity = max;
}
UpdateQuantityText(currentQuantity);
if (selectedRecipeId != 0)
ShowRecipeMaterials(selectedRecipeId);
}
private void OnClickDecreaseBtn()
@@ -720,6 +703,9 @@ namespace BrewMonster
{
currentQuantity--;
UpdateQuantityText(currentQuantity);
if(selectedRecipeId != 0)
ShowRecipeMaterials(selectedRecipeId);
}
}
@@ -1,6 +1,7 @@
using BrewMonster;
using BrewMonster;
using BrewMonster.Scripts.Managers;
using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using static CSNetwork.Common.ExpTypes;
@@ -9,6 +10,8 @@ public class ProduceItemPanel : MonoBehaviour
{
[Header("UI")]
public Image icon;
public TextMeshProUGUI text_name;
public TextMeshProUGUI text_level;
private uint recipeId;
private Coroutine loadIconCoroutine;
@@ -90,6 +93,8 @@ public class ProduceItemPanel : MonoBehaviour
icon.enabled = true;
icon.color = Color.white;
icon.preserveAspect = true;
text_level.text = $"Cấp {recipe.recipe_level}";
text_name.text = EC_IvtrItemUtils.Instance.ResolveItemName((int)outputItemId);
}
}
File diff suppressed because it is too large Load Diff
+322 -6
View File
@@ -1,5 +1,277 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &851204893380652402
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6386748335874685460}
- component: {fileID: 7946999949603485279}
- component: {fileID: 2886587176569489585}
m_Layer: 0
m_Name: text_name
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6386748335874685460
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 851204893380652402}
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: 7551350917878394023}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 45.674377, y: -24}
m_SizeDelta: {x: 417.155, y: 36.8281}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7946999949603485279
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 851204893380652402}
m_CullTransparentMesh: 1
--- !u!114 &2886587176569489585
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 851204893380652402}
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: "\u0110\u1EC1 L\xF4 Th\u01B0\u01A1ng"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4284139250
m_fontColor: {r: 0.9490197, g: 0.77647066, b: 0.3529412, 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: 1
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 &1424488726156281035
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4178062133704160544}
- component: {fileID: 7306123447282167467}
- component: {fileID: 4203029938913939562}
m_Layer: 0
m_Name: text_level
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4178062133704160544
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424488726156281035}
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: 7551350917878394023}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -32, y: -62}
m_SizeDelta: {x: 261.8062, y: 36.828094}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7306123447282167467
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424488726156281035}
m_CullTransparentMesh: 1
--- !u!114 &4203029938913939562
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424488726156281035}
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: "C\u1EA5p 7"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4291032063
m_fontColor: {r: 1, g: 0.95294124, b: 0.76470596, 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: 1
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 &3478571236783653060
GameObject:
m_ObjectHideFlags: 0
@@ -11,6 +283,8 @@ GameObject:
- component: {fileID: 7551350917878394023}
- component: {fileID: 2586856635111866746}
- component: {fileID: 3227995981941927}
- component: {fileID: 8854345712968641074}
- component: {fileID: 5027840373017527106}
m_Layer: 0
m_Name: itemProduce
m_TagString: Untagged
@@ -31,12 +305,14 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5438773728966160586}
- {fileID: 6386748335874685460}
- {fileID: 4178062133704160544}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 42, y: -42}
m_SizeDelta: {x: 84, y: 84}
m_AnchoredPosition: {x: 266.4845, y: -43.5}
m_SizeDelta: {x: 532.969, y: 87}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2586856635111866746
MonoBehaviour:
@@ -95,6 +371,46 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
icon: {fileID: 7716303670266317094}
text_name: {fileID: 2886587176569489585}
text_level: {fileID: 4203029938913939562}
--- !u!222 &8854345712968641074
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3478571236783653060}
m_CullTransparentMesh: 1
--- !u!114 &5027840373017527106
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3478571236783653060}
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: 1155570752, guid: a1097094c53b98a479e5d92364473a8d, type: 3}
m_Type: 1
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 &5714852699199745934
GameObject:
m_ObjectHideFlags: 0
@@ -127,10 +443,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 7551350917878394023}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: -42}
m_SizeDelta: {x: 84, y: 84}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 9.6, y: 0}
m_SizeDelta: {x: 76.233, y: 74.4407}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &7941037763135429874
CanvasRenderer: