ステージ選択修正対応
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 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,60 +85,36 @@ 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 (gameData.ScrollGameTodayPlayCount == 0)
|
||||||
if (i >= stageSelectView.ItemViewList.Length)
|
|
||||||
{
|
{
|
||||||
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(() =>
|
ScrollGameWatchVideoDialog.ShowDialog(() =>
|
||||||
{
|
{
|
||||||
gameData.ScrollGameLastPlayTime = DateTime.UtcNow.ToBinary();
|
gameData.ScrollGameLastPlayTime = DateTime.UtcNow.ToBinary();
|
||||||
gameData.ScrollGameTodayPlayCount++;
|
gameData.ScrollGameTodayPlayCount++;
|
||||||
// ステージ読み込み
|
// ステージ読み込み
|
||||||
stageManager.SetSky(stageData.Difficulty);
|
stageManager.SetSky(stageData.Difficulty);
|
||||||
stageManager.SetBeginStages(stageData.GetBeginStagePrefabs());
|
stageManager.SetBeginStages(stageData.GetBeginStagePrefabs());
|
||||||
ResetGame(levelPlaceList, stageData);
|
ResetGame(levelPlaceList, stageData);
|
||||||
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 =>
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue