畑強化周り追加

This commit is contained in:
kimura 2021-08-03 16:22:38 +09:00
parent 52381b065f
commit 559162dc8a
5 changed files with 2148 additions and 3 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,62 @@
using System;
using System.Linq;
using UniRx;
using UnityEngine;
using UnityEngine.UI;
public class FacilityExpantion : MonoBehaviour
{
[SerializeField] private GameObject content;
[SerializeField] private Button menuButton;
[SerializeField] private Button closeButton;
private void Start()
{
content.transform.parent.gameObject.SetActive(false);
menuButton.OnClickAsObservable().Subscribe(_ =>
{
content.transform.parent.gameObject.SetActive(true);
});
closeButton.OnClickAsObservable().Subscribe(_ =>
{
content.transform.parent.gameObject.SetActive(false);
});
// 設備一覧を表示
var items = content.GetComponentsInChildren<FacilityExpantionItem>();
// 適用できるかどうか判定
foreach (var item in items)
{
if (!GameDataManager.GameData.PlantLineTypes.Exists(x => x.type == item.Type))
{
item.SetItem(false, CornFieldRank.Rank1);
return;
}
item.SetItem(true, GameDataManager.GameData.PlantLineTypes.First(x => x.type == item.Type).level);
item.ClickObservable.Subscribe(_ =>
{
// 購入時コイン比較後、コイン減算ここコイン増加と処理がかぶるとややこしいBatchとかで処理するといいかも
// 購入した設備はセーブする(設備ごとの処理int増やすなど
}).AddTo(this);
}
}
public int GetPrice(bool hasField, CornFieldRank level)
{
if (!hasField)
{
return 500;
}
switch (level)
{
case CornFieldRank.Rank1:
return 500;
case CornFieldRank.Rank2:
return 500;
case CornFieldRank.Rank3:
return 500;
default:
throw new ArgumentOutOfRangeException(nameof(level), level, null);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2737c6833764451799b01f31c062873d
timeCreated: 1627964670

View File

@ -0,0 +1,69 @@
using System;
using UniRx;
using UnityEngine;
using UnityEngine.UI;
public class FacilityExpantionItem : MonoBehaviour
{
[SerializeField] private PlantLineType type;
[SerializeField] private Text text;
[SerializeField] private Text buttonText;
[SerializeField] private Button button;
public PlantLineType Type => type;
public IObservable<Unit> ClickObservable => button.OnClickAsObservable();
private readonly ReactiveProperty<bool> isAvailable = new ReactiveProperty<bool>();
private void Start()
{
isAvailable.AddTo(this);
isAvailable.SubscribeToInteractable(button);
}
public void SetItem(bool hasField, CornFieldRank level)
{
if (hasField)
{
// 強化
buttonText.text = GetButtonText(level);
text.text = GetLevelUpText(level);
}
else
{
// 畑の拡張
buttonText.text = $"購入";
text.text = $"畑を拡張します\n収穫できる株がつ増えます";
}
}
public void SetCoin(int coin)
{
}
private string GetButtonText(CornFieldRank level)
{
switch (level)
{
case CornFieldRank.Rank1:
case CornFieldRank.Rank2:
case CornFieldRank.Rank3:
return $"購入";
default:
throw new ArgumentOutOfRangeException(nameof(level), level, null);
}
}
private string GetLevelUpText(CornFieldRank level)
{
switch (level)
{
case CornFieldRank.Rank1:
return $"畑の質を強化\nx1 -> x2";
case CornFieldRank.Rank2:
return $"畑の質を強化\nx2 -> x3";
case CornFieldRank.Rank3:
return $"最大値です";
default:
throw new ArgumentOutOfRangeException(nameof(level), level, null);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 902f2e4f44b64ff59cc3aca9a5ff89e5
timeCreated: 1627970679