ステージ選択画面の達成報酬のアイコン切り替え対応
This commit is contained in:
parent
950c9fe8f5
commit
3b2189996f
|
|
@ -952,7 +952,9 @@ MonoBehaviour:
|
||||||
totalScore: {fileID: 4559813505635939901}
|
totalScore: {fileID: 4559813505635939901}
|
||||||
stageHiScore: {fileID: 2194698930219532777}
|
stageHiScore: {fileID: 2194698930219532777}
|
||||||
selectButton: {fileID: 4061926086868555199}
|
selectButton: {fileID: 4061926086868555199}
|
||||||
recipeObject: {fileID: 1480716767542757334}
|
achievementObject: {fileID: 1480716767542757334}
|
||||||
|
recipeObject: {fileID: 4435066310782463576}
|
||||||
|
customizeObject: {fileID: 6775270207942942085}
|
||||||
--- !u!1 &4559813504950302400
|
--- !u!1 &4559813504950302400
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
|
||||||
|
|
@ -17,37 +17,70 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
||||||
[SerializeField] private Text totalScore;
|
[SerializeField] private Text totalScore;
|
||||||
[SerializeField] private Text stageHiScore;
|
[SerializeField] private Text stageHiScore;
|
||||||
[SerializeField] private Button selectButton;
|
[SerializeField] private Button selectButton;
|
||||||
|
[SerializeField] private GameObject achievementObject;
|
||||||
[SerializeField] private GameObject recipeObject;
|
[SerializeField] private GameObject recipeObject;
|
||||||
|
[SerializeField] private GameObject customizeObject;
|
||||||
|
private ScrollGamePlaceData[] sortedPlaceDataListByNeedScore;
|
||||||
public IObservable<Unit> OnClick => selectButton.OnClickAsObservable().TakeUntilDestroy(this);
|
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 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)
|
public void SetPlaceData(ScrollGamePlaceData[] placeDataList)
|
||||||
{
|
{
|
||||||
|
sortedPlaceDataListByNeedScore = placeDataList.OrderBy(data => data.NeedScore).ToArray();
|
||||||
titleText.text = placeDataList[0].StageName;
|
titleText.text = placeDataList[0].StageName;
|
||||||
var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet);
|
var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet);
|
||||||
var productDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet);
|
var placeData = placeDataList.First(data => data.itemId != 0);
|
||||||
foreach (var placeData in placeDataList)
|
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)
|
return;
|
||||||
{
|
}
|
||||||
var shopData = shopDataList.FirstOrDefault(data => data.itemId == placeData.itemId && data.Category == ItemCategory.Material);
|
SetAchievement(placeData);
|
||||||
itemText.text = $"{LocalizationManager.GetTranslation("UI/EarnItem")}{shopData.Name}";
|
}
|
||||||
// itemNeedScoreText.text = placeData.needScore.ToString();
|
|
||||||
}else if (placeData.recipeId != 0)
|
private static ScrollGamePlaceData GetCurrentAchievement(ScrollGamePlaceData[] placeDataList, int score, bool sorted = false)
|
||||||
{
|
{
|
||||||
var productData = productDataList.FirstOrDefault(data => data.id == placeData.recipeId);
|
if (sorted)
|
||||||
recipeText.text = $"{LocalizationManager.GetTranslation("UI/RewardItem")}{productData.Name}";
|
{
|
||||||
recipeNeedScoreText.text = $"{LocalizationManager.GetTranslation("UI/NeedScore")}{placeData.NeedScore}";
|
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}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -444,6 +444,7 @@ GameObject:
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 497670574}
|
- component: {fileID: 497670574}
|
||||||
|
- component: {fileID: 497670575}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: icon
|
m_Name: icon
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
|
|
@ -472,6 +473,18 @@ RectTransform:
|
||||||
m_AnchoredPosition: {x: -1, y: -31}
|
m_AnchoredPosition: {x: -1, y: -31}
|
||||||
m_SizeDelta: {x: 150, y: 150}
|
m_SizeDelta: {x: 150, y: 150}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
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
|
--- !u!1 &594261736
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -651,6 +664,7 @@ GameObject:
|
||||||
- component: {fileID: 1056981901}
|
- component: {fileID: 1056981901}
|
||||||
- component: {fileID: 1056981903}
|
- component: {fileID: 1056981903}
|
||||||
- component: {fileID: 1056981902}
|
- component: {fileID: 1056981902}
|
||||||
|
- component: {fileID: 1056981904}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: Image_text_Achievement
|
m_Name: Image_text_Achievement
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
|
|
@ -716,6 +730,46 @@ CanvasRenderer:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1056981900}
|
m_GameObject: {fileID: 1056981900}
|
||||||
m_CullTransparentMesh: 0
|
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
|
--- !u!1 &1069986046
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -1492,6 +1546,8 @@ MonoBehaviour:
|
||||||
name: {fileID: 1264740260}
|
name: {fileID: 1264740260}
|
||||||
iconTarget: {fileID: 497670574}
|
iconTarget: {fileID: 497670574}
|
||||||
closeButton: {fileID: 1115920389}
|
closeButton: {fileID: 1115920389}
|
||||||
|
titleRecipeObject: {fileID: 1193390268}
|
||||||
|
titleAchievementObject: {fileID: 1056981900}
|
||||||
--- !u!114 &1797211015
|
--- !u!114 &1797211015
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -1650,3 +1706,16 @@ RectTransform:
|
||||||
type: 3}
|
type: 3}
|
||||||
m_PrefabInstance: {fileID: 1803163400}
|
m_PrefabInstance: {fileID: 1803163400}
|
||||||
m_PrefabAsset: {fileID: 0}
|
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}
|
||||||
|
|
|
||||||
|
|
@ -15,13 +15,28 @@ public class ShopItemExchangeView : MonoBehaviour
|
||||||
[SerializeField] private Text name;
|
[SerializeField] private Text name;
|
||||||
[SerializeField] private Transform iconTarget;
|
[SerializeField] private Transform iconTarget;
|
||||||
[SerializeField] private Button closeButton;
|
[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()
|
private void Start()
|
||||||
{
|
{
|
||||||
// 表示データを受け取る
|
// 表示データを受け取る
|
||||||
var shopData = LocalCacheManager.Load<ShopData>(ShopDataTag);
|
var data = LocalCacheManager.Load<Data>(ShopDataTag);
|
||||||
LocalCacheManager.Remove(ShopDataTag);
|
LocalCacheManager.Remove(ShopDataTag);
|
||||||
SetData(shopData);
|
SetData(data);
|
||||||
closeButton.OnClickAsObservable().Take(1).Subscribe(_ =>
|
closeButton.OnClickAsObservable().Take(1).Subscribe(_ =>
|
||||||
{
|
{
|
||||||
LocalCacheManager.Load<Action>(CloseCallbackTag, null)?.Invoke();
|
LocalCacheManager.Load<Action>(CloseCallbackTag, null)?.Invoke();
|
||||||
|
|
@ -34,17 +49,37 @@ public class ShopItemExchangeView : MonoBehaviour
|
||||||
}).AddTo(this);
|
}).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();
|
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);
|
LocalCacheManager.Save(CloseCallbackTag, onClose);
|
||||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.ExchangeAchievement);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue