ステージ選択修正対応
This commit is contained in:
parent
841e4040ee
commit
1853263785
File diff suppressed because it is too large
Load Diff
|
|
@ -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 =>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue