From 3b2189996f2a1ec453d28e1d5c87c5134594ae3f Mon Sep 17 00:00:00 2001 From: kimura Date: Fri, 12 Aug 2022 15:50:35 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=B9=E3=83=86=E3=83=BC=E3=82=B8=E9=81=B8?= =?UTF-8?q?=E6=8A=9E=E7=94=BB=E9=9D=A2=E3=81=AE=E9=81=94=E6=88=90=E5=A0=B1?= =?UTF-8?q?=E9=85=AC=E3=81=AE=E3=82=A2=E3=82=A4=E3=82=B3=E3=83=B3=E5=88=87?= =?UTF-8?q?=E3=82=8A=E6=9B=BF=E3=81=88=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scenes/MiniGame/Prefabs/Selection.prefab | 4 +- .../MiniGame/Scripts/StageSelectView.cs | 69 ++++++++++++++----- .../Scenes/shopping/ExchangeAchievement.unity | 69 +++++++++++++++++++ .../shopping/Scripts/ShopItemExchangeView.cs | 49 +++++++++++-- 4 files changed, 165 insertions(+), 26 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Selection.prefab b/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Selection.prefab index 6fa1ab3e..0c643f08 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Selection.prefab +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Selection.prefab @@ -952,7 +952,9 @@ MonoBehaviour: totalScore: {fileID: 4559813505635939901} stageHiScore: {fileID: 2194698930219532777} selectButton: {fileID: 4061926086868555199} - recipeObject: {fileID: 1480716767542757334} + achievementObject: {fileID: 1480716767542757334} + recipeObject: {fileID: 4435066310782463576} + customizeObject: {fileID: 6775270207942942085} --- !u!1 &4559813504950302400 GameObject: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageSelectView.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageSelectView.cs index 61821c17..cb78e6b2 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageSelectView.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageSelectView.cs @@ -17,37 +17,70 @@ namespace MyGame.Scenes.MiniGame.Scripts [SerializeField] private Text totalScore; [SerializeField] private Text stageHiScore; [SerializeField] private Button selectButton; + [SerializeField] private GameObject achievementObject; [SerializeField] private GameObject recipeObject; + [SerializeField] private GameObject customizeObject; + private ScrollGamePlaceData[] sortedPlaceDataListByNeedScore; public IObservable OnClick => selectButton.OnClickAsObservable().TakeUntilDestroy(this); - - public void SetScore(int num) => totalScore.text = $"{LocalizationManager.GetTranslation("UI/TotalScore")}{num}"; - public void SetStageHiScore(int num) => stageHiScore.text = $"{LocalizationManager.GetTranslation("UI/HiScore")}{num}"; + public void SetTotalScore(int num) + { + totalScore.text = $"{LocalizationManager.GetTranslation("UI/TotalScore")}{num}"; + achievementObject.SetActive(num < sortedPlaceDataListByNeedScore.Max(data => data.NeedScore)); + UpdateAchievement(num); + } public void SetPlaceData(ScrollGamePlaceData[] placeDataList) { + sortedPlaceDataListByNeedScore = placeDataList.OrderBy(data => data.NeedScore).ToArray(); titleText.text = placeDataList[0].StageName; var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.ShopDataSheet); - var productDataList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.ProductDataSheet); - foreach (var placeData in placeDataList) + var placeData = placeDataList.First(data => data.itemId != 0); + var shopData = shopDataList.FirstOrDefault(data => data.itemId == placeData.itemId && data.Category == ItemCategory.Material); + itemText.text = $"{LocalizationManager.GetTranslation("UI/EarnItem")}{shopData.Name}"; + } + + private void UpdateAchievement(int score) + { + var placeData = GetCurrentAchievement(sortedPlaceDataListByNeedScore, score, true); + if (placeData is null) { - if (placeData.itemId != 0) - { - var shopData = shopDataList.FirstOrDefault(data => data.itemId == placeData.itemId && data.Category == ItemCategory.Material); - itemText.text = $"{LocalizationManager.GetTranslation("UI/EarnItem")}{shopData.Name}"; - // itemNeedScoreText.text = placeData.needScore.ToString(); - }else if (placeData.recipeId != 0) - { - var productData = productDataList.FirstOrDefault(data => data.id == placeData.recipeId); - recipeText.text = $"{LocalizationManager.GetTranslation("UI/RewardItem")}{productData.Name}"; - recipeNeedScoreText.text = $"{LocalizationManager.GetTranslation("UI/NeedScore")}{placeData.NeedScore}"; - } + return; + } + SetAchievement(placeData); + } + + private static ScrollGamePlaceData GetCurrentAchievement(ScrollGamePlaceData[] placeDataList, int score, bool sorted = false) + { + if (sorted) + { + return placeDataList.FirstOrDefault(data => data.itemId == 0 && data.NeedScore > score); + } + return placeDataList.OrderBy(data => data.NeedScore).FirstOrDefault(data => data.itemId == 0 && data.NeedScore > score); + } + + private void SetAchievement(ScrollGamePlaceData placeData) + { + recipeObject.SetActive(placeData.recipeId != 0); + customizeObject.SetActive(placeData.customizeId != 0); + var productDataList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.ProductDataSheet); + var customizeDataList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.ShopCustomizeDataSheet); + if (placeData.recipeId != 0) + { + var productData = productDataList.FirstOrDefault(data => data.id == placeData.recipeId); + SetAchievementText(productData.Name, placeData.NeedScore); + } + else if (placeData.customizeId != 0) + { + var customizeData = customizeDataList.FirstOrDefault(data => data.id == placeData.customizeId); + SetAchievementText(customizeData.Name, placeData.NeedScore); } } - public void SetRecipeActive(bool active) + private void SetAchievementText(string name, int score) { - recipeObject.SetActive(active); + recipeText.text = $"{LocalizationManager.GetTranslation("UI/RewardItem")}{name}"; + recipeNeedScoreText.text = $"{LocalizationManager.GetTranslation("UI/NeedScore")}{score}"; } } } \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/shopping/ExchangeAchievement.unity b/popcorn/Assets/MyGame/Scenes/shopping/ExchangeAchievement.unity index 8c1cb46c..2c160638 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/ExchangeAchievement.unity +++ b/popcorn/Assets/MyGame/Scenes/shopping/ExchangeAchievement.unity @@ -444,6 +444,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 497670574} + - component: {fileID: 497670575} m_Layer: 5 m_Name: icon m_TagString: Untagged @@ -472,6 +473,18 @@ RectTransform: m_AnchoredPosition: {x: -1, y: -31} m_SizeDelta: {x: 150, y: 150} m_Pivot: {x: 0.5, y: 0.5} +--- !u!225 &497670575 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 497670573} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 --- !u!1 &594261736 GameObject: m_ObjectHideFlags: 0 @@ -651,6 +664,7 @@ GameObject: - component: {fileID: 1056981901} - component: {fileID: 1056981903} - component: {fileID: 1056981902} + - component: {fileID: 1056981904} m_Layer: 5 m_Name: Image_text_Achievement m_TagString: Untagged @@ -716,6 +730,46 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1056981900} m_CullTransparentMesh: 0 +--- !u!114 &1056981904 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1056981900} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 344445a89b4f74a0e9a0a766903df87e, type: 3} + m_Name: + m_EditorClassIdentifier: + mTerm: minigame_result_Achievement_title_text + mTermSecondary: + PrimaryTermModifier: 0 + SecondaryTermModifier: 0 + TermPrefix: + TermSuffix: + LocalizeOnAwake: 1 + IgnoreRTL: 0 + MaxCharactersInRTL: 0 + IgnoreNumbersInRTL: 1 + CorrectAlignmentForRTL: 1 + AddSpacesToJoinedLanguages: 0 + AllowLocalizedParameters: 1 + AllowParameters: 1 + TranslatedObjects: + - {fileID: 21300000, guid: 09f8b2056e6b20b40ba0140433fb68d2, type: 3} + LocalizeEvent: + m_PersistentCalls: + m_Calls: [] + AlwaysForceLocalize: 0 + LocalizeCallBack: + Target: {fileID: 0} + MethodName: + mGUI_ShowReferences: 0 + mGUI_ShowTems: 1 + mGUI_ShowCallback: 0 + mLocalizeTarget: {fileID: 1914340860} + mLocalizeTargetName: I2.Loc.LocalizeTarget_UnityUI_Image --- !u!1 &1069986046 GameObject: m_ObjectHideFlags: 0 @@ -1492,6 +1546,8 @@ MonoBehaviour: name: {fileID: 1264740260} iconTarget: {fileID: 497670574} closeButton: {fileID: 1115920389} + titleRecipeObject: {fileID: 1193390268} + titleAchievementObject: {fileID: 1056981900} --- !u!114 &1797211015 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1650,3 +1706,16 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 1803163400} m_PrefabAsset: {fileID: 0} +--- !u!114 &1914340860 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bedef2aeaac8da04faa9a07b7241d0ad, type: 3} + m_Name: + m_EditorClassIdentifier: + mTarget: {fileID: 1056981902} diff --git a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs index cd7f6a2f..30360774 100644 --- a/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs +++ b/popcorn/Assets/MyGame/Scenes/shopping/Scripts/ShopItemExchangeView.cs @@ -15,13 +15,28 @@ public class ShopItemExchangeView : MonoBehaviour [SerializeField] private Text name; [SerializeField] private Transform iconTarget; [SerializeField] private Button closeButton; + [SerializeField] private GameObject titleRecipeObject; + [SerializeField] private GameObject titleAchievementObject; + private struct Data + { + public string Name; + public Transform Prefab; + public ImageType ImageType; + } + + private enum ImageType + { + ShopData, + Recipe, + Other + } private void Start() { // 表示データを受け取る - var shopData = LocalCacheManager.Load(ShopDataTag); + var data = LocalCacheManager.Load(ShopDataTag); LocalCacheManager.Remove(ShopDataTag); - SetData(shopData); + SetData(data); closeButton.OnClickAsObservable().Take(1).Subscribe(_ => { LocalCacheManager.Load(CloseCallbackTag, null)?.Invoke(); @@ -34,17 +49,37 @@ public class ShopItemExchangeView : MonoBehaviour }).AddTo(this); } - private void SetData(ShopData shopData) + private void SetData(Data data) { - name.text = shopData.Name; + titleRecipeObject.SetActive(data.ImageType == ImageType.ShopData); + titleAchievementObject.SetActive(data.ImageType != ImageType.ShopData); + name.text = data.Name; + var iconScale = data.ImageType switch + { + ImageType.ShopData => 1f, + ImageType.Recipe => .5f, + ImageType.Other => 1.15f, + _ => throw new ArgumentOutOfRangeException() + }; + iconTarget.SetLocalScale(iconScale); iconTarget.DestroyAllChildrens(); - Instantiate(shopData.GetPrefab(), iconTarget); + Instantiate(data.Prefab, iconTarget); } - public static void ShowDialog(ShopData shopData, Action onClose = null) + private static void ShowDialog(Data data, Action onClose = null) { - LocalCacheManager.Save(ShopDataTag, shopData); + LocalCacheManager.Save(ShopDataTag, data); LocalCacheManager.Save(CloseCallbackTag, onClose); TransitionManager.Instance.LoadSceneAdditive(GameScenes.ExchangeAchievement); } + + public static void ShowDialog(ShopData shopData, Action onClose = null) + { + ShowDialog(new Data { Name = shopData.Name, Prefab = shopData.GetPrefab(), ImageType = ImageType.ShopData}, onClose); + } + + public static void ShowDialog(string name, Transform prefab, bool isRecipe, Action onClose = null) + { + ShowDialog(new Data { Name = name, Prefab = prefab , ImageType = isRecipe ? ImageType.Recipe : ImageType.Other}, onClose); + } }