ステージ選択画面の達成報酬のアイコン切り替え対応

This commit is contained in:
kimura 2022-08-12 15:50:35 +09:00
parent 950c9fe8f5
commit 3b2189996f
4 changed files with 165 additions and 26 deletions

View File

@ -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

View File

@ -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<Unit> 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<ShopData>(Const.ShopDataSheet);
var productDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(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<ProductData>(Const.ProductDataSheet);
var customizeDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopCustomizeData>(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}";
}
}
}

View File

@ -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}

View File

@ -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<ShopData>(ShopDataTag);
var data = LocalCacheManager.Load<Data>(ShopDataTag);
LocalCacheManager.Remove(ShopDataTag);
SetData(shopData);
SetData(data);
closeButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
LocalCacheManager.Load<Action>(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);
}
}