ステージ選択画面の達成報酬のアイコン切り替え対応
This commit is contained in:
parent
950c9fe8f5
commit
3b2189996f
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue