ステージ選択修正対応

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 levelStageList = stageList.Where(data => data.placeId == placeId).ToArray();
var stageData = levelStageList[0];
var scoreUpdate = new Subject<Unit>().AddTo(this);
stageSelectView.SetPlaceData(levelPlaceList);
scoreUpdate.Subscribe(_ =>
@ -84,60 +85,36 @@ namespace MyGame.Scenes.MiniGame.Scripts
// スコア更新
var placeScore = gameData.ScrollGamePlaceScoreList.FirstOrDefault(data => data.Id == placeId)?.Score ?? 0;
stageSelectView.SetScore(placeScore);
stageSelectView.SetStageHiScore(gameData.ScrollGameStageScoreList.FirstOrDefault(data => data.Id == stageData.id)?.Score ?? 0);
// 達成報酬更新
stageSelectView.SetRecipeActive(placeScore < levelPlaceList[1].NeedScore);
}).AddTo(this);
for (var i = 0; i < levelStageList.Length; i++)
stageSelectView.OnClick.Subscribe(_ =>
{
var stageData = levelStageList[i];
if (i >= stageSelectView.ItemViewList.Length)
if (gameData.ScrollGameTodayPlayCount == 0)
{
break;
gameData.ScrollGameLastPlayTime = DateTime.UtcNow.ToBinary();
gameData.ScrollGameTodayPlayCount++;
// ステージ読み込み
stageManager.SetSky(stageData.Difficulty);
stageManager.SetBeginStages(stageData.GetBeginStagePrefabs());
ResetGame(levelPlaceList, stageData);
menuState.Value = MenuState.Game;
return;
}
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)
{
gameData.ScrollGameLastPlayTime = DateTime.UtcNow.ToBinary();
gameData.ScrollGameTodayPlayCount++;
// ステージ読み込み
stageManager.SetSky(stageData.Difficulty);
stageManager.SetBeginStages(stageData.GetBeginStagePrefabs());
ResetGame(levelPlaceList, stageData);
menuState.Value = MenuState.Game;
return;
}
// ポップアップ ビデオ視聴表示
ScrollGameWatchVideoDialog.ShowDialog(() =>
{
gameData.ScrollGameLastPlayTime = DateTime.UtcNow.ToBinary();
gameData.ScrollGameTodayPlayCount++;
// ステージ読み込み
stageManager.SetSky(stageData.Difficulty);
stageManager.SetBeginStages(stageData.GetBeginStagePrefabs());
ResetGame(levelPlaceList, stageData);
menuState.Value = MenuState.Game;
});
}).AddTo(this);
}
// ポップアップ ビデオ視聴表示
ScrollGameWatchVideoDialog.ShowDialog(() =>
{
gameData.ScrollGameLastPlayTime = DateTime.UtcNow.ToBinary();
gameData.ScrollGameTodayPlayCount++;
// ステージ読み込み
stageManager.SetSky(stageData.Difficulty);
stageManager.SetBeginStages(stageData.GetBeginStagePrefabs());
ResetGame(levelPlaceList, stageData);
menuState.Value = MenuState.Game;
});
}).AddTo(this);
scoreUpdate.OnNext(Unit.Default);
menuState.Subscribe(x =>

View File

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