ステージ選択修正対応

This commit is contained in:
kimura 2022-07-20 18:23:07 +09:00
parent 841e4040ee
commit 1853263785
3 changed files with 45 additions and 1892 deletions

File diff suppressed because it is too large Load Diff

View File

@ -77,6 +77,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
var levelPlaceList = placeList.Where(data => data.placeId == placeId).ToArray(); var levelPlaceList = placeList.Where(data => data.placeId == placeId).ToArray();
var levelStageList = stageList.Where(data => data.placeId == placeId).ToArray(); var levelStageList = stageList.Where(data => data.placeId == placeId).ToArray();
var stageData = levelStageList[0];
var scoreUpdate = new Subject<Unit>().AddTo(this); var scoreUpdate = new Subject<Unit>().AddTo(this);
stageSelectView.SetPlaceData(levelPlaceList); stageSelectView.SetPlaceData(levelPlaceList);
scoreUpdate.Subscribe(_ => scoreUpdate.Subscribe(_ =>
@ -84,34 +85,11 @@ namespace MyGame.Scenes.MiniGame.Scripts
// スコア更新 // スコア更新
var placeScore = gameData.ScrollGamePlaceScoreList.FirstOrDefault(data => data.Id == placeId)?.Score ?? 0; var placeScore = gameData.ScrollGamePlaceScoreList.FirstOrDefault(data => data.Id == placeId)?.Score ?? 0;
stageSelectView.SetScore(placeScore); stageSelectView.SetScore(placeScore);
stageSelectView.SetStageHiScore(gameData.ScrollGameStageScoreList.FirstOrDefault(data => data.Id == stageData.id)?.Score ?? 0);
// 達成報酬更新 // 達成報酬更新
stageSelectView.SetRecipeActive(placeScore < levelPlaceList[1].NeedScore); stageSelectView.SetRecipeActive(placeScore < levelPlaceList[1].NeedScore);
}).AddTo(this); }).AddTo(this);
for (var i = 0; i < levelStageList.Length; i++) stageSelectView.OnClick.Subscribe(_ =>
{
var stageData = levelStageList[i];
if (i >= stageSelectView.ItemViewList.Length)
{
break;
}
var itemView = stageSelectView.ItemViewList[i];
itemView.SetData(stageData);
var isFirstStage = i == 0;
var prevStageData = isFirstStage ? default : levelStageList[i - 1];
if (prevStageData != null)
{
itemView.SetPrevStageData(prevStageData);
}
scoreUpdate.Subscribe(_ =>
{
// ハイスコア更新
itemView.SetStageHiScore(gameData.ScrollGameStageScoreList
.FirstOrDefault(data => data.Id == stageData.id)?.Score ?? 0);
// ステージロック解除判定
itemView.SetStageActive(isFirstStage || prevStageData.needScore <= (gameData.ScrollGameStageScoreList
.FirstOrDefault(data => data.Id == prevStageData.id)?.Score ?? 0));
}).AddTo(this);
itemView.OnClick.ThrottleFirst(TimeSpan.FromSeconds(.2f)).Subscribe(_ =>
{ {
if (gameData.ScrollGameTodayPlayCount == 0) if (gameData.ScrollGameTodayPlayCount == 0)
{ {
@ -137,7 +115,6 @@ namespace MyGame.Scenes.MiniGame.Scripts
menuState.Value = MenuState.Game; menuState.Value = MenuState.Game;
}); });
}).AddTo(this); }).AddTo(this);
}
scoreUpdate.OnNext(Unit.Default); scoreUpdate.OnNext(Unit.Default);
menuState.Subscribe(x => menuState.Subscribe(x =>

View File

@ -1,6 +1,8 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using I2.Loc; using I2.Loc;
using UniRx;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@ -11,18 +13,17 @@ namespace MyGame.Scenes.MiniGame.Scripts
[SerializeField] private Text titleText; [SerializeField] private Text titleText;
[SerializeField] private Text itemText; [SerializeField] private Text itemText;
[SerializeField] private Text recipeText; [SerializeField] private Text recipeText;
// [SerializeField] private Text itemNeedScoreText;
[SerializeField] private Text recipeNeedScoreText; [SerializeField] private Text recipeNeedScoreText;
[SerializeField] private Text totalScore; [SerializeField] private Text totalScore;
[SerializeField] private Text stageHiScore;
[SerializeField] private Button selectButton;
[SerializeField] private GameObject recipeObject; [SerializeField] private GameObject recipeObject;
[SerializeField] private ScrollRect scrollRect; public IObservable<Unit> OnClick => selectButton.OnClickAsObservable().TakeUntilDestroy(this);
[SerializeField] private StageSelectItemView[] itemViewList;
public ScrollRect ScrollRect => scrollRect;
public StageSelectItemView[] ItemViewList => itemViewList;
public void SetScore(int num) => totalScore.text = $"{LocalizationManager.GetTranslation("UI/TotalScore")}{num}"; 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 SetPlaceData(ScrollGamePlaceData[] placeDataList) public void SetPlaceData(ScrollGamePlaceData[] placeDataList)
{ {
titleText.text = placeDataList[0].StageName; titleText.text = placeDataList[0].StageName;