獲得処理追加
This commit is contained in:
parent
20079e7fab
commit
0895a13e15
|
|
@ -103,6 +103,7 @@ GameObject:
|
|||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2377818822852436376}
|
||||
- component: {fileID: 7948284479330041018}
|
||||
m_Layer: 5
|
||||
m_Name: Window
|
||||
m_TagString: Untagged
|
||||
|
|
@ -132,6 +133,24 @@ RectTransform:
|
|||
m_AnchoredPosition: {x: 0, y: 145}
|
||||
m_SizeDelta: {x: 900, y: 1020}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &7948284479330041018
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2377818822852436379}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 97711eafafff465ebe1223e7ed0ab2e7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
backgroundAnimator: {fileID: 2377818822785157575}
|
||||
closeButton: {fileID: 2377818823238410848}
|
||||
heartText: {fileID: 2377818823370329765}
|
||||
coinText: {fileID: 2377818823929203721}
|
||||
bonusCoinText: {fileID: 2377818823802633425}
|
||||
messageText: {fileID: 2377818823780007094}
|
||||
--- !u!1 &2377818823009469882
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
|
|||
|
|
@ -1,18 +1,20 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class BulkOrderProgressData
|
||||
public class BulkOrderResultData
|
||||
{
|
||||
public int orderId;
|
||||
public ProductRarity rarity;
|
||||
public int Number;
|
||||
public ProductRarity Rarity;
|
||||
}
|
||||
public class BulkOrder : MonoBehaviour
|
||||
{
|
||||
public static readonly string DataTag = "BulkOrderData";
|
||||
public static readonly string CancelCallbackTag = "BulkOrderCancelCallback";
|
||||
public static readonly string AchievedCallbackTag = "BulkOrderAchievedCallback";
|
||||
private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger");
|
||||
private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger");
|
||||
[SerializeField] private Animator backgroundAnimator;
|
||||
|
|
@ -49,7 +51,7 @@ public class BulkOrder : MonoBehaviour
|
|||
messageText.text = messageList.First(data => data.id == gameData.OrderTextId).requestText;
|
||||
coinText.text = bulkOrderData.rewardCoin.ToString();
|
||||
heartText.text = bulkOrderData.rewardHeart.ToString();
|
||||
// cache
|
||||
|
||||
LocalCacheManager.Save(DataTag, bulkOrderData);
|
||||
cancelButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
|
||||
{
|
||||
|
|
@ -59,7 +61,7 @@ public class BulkOrder : MonoBehaviour
|
|||
gameData.CancelOrderId = gameData.OrderIdInProgress;
|
||||
// カウントリセット
|
||||
gameData.OrderConditionCount = 0;
|
||||
|
||||
GameDataManager.SaveGameData();
|
||||
// キャンセルと同時に閉じる
|
||||
transform.parent.SetLocalScale(0);
|
||||
backgroundAnimator.SetTrigger(CloseTrigger);
|
||||
|
|
@ -71,19 +73,68 @@ public class BulkOrder : MonoBehaviour
|
|||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.BulkOrderCancel);
|
||||
}).AddTo(this);
|
||||
|
||||
// 納品チェック
|
||||
var orderList = new List<int>
|
||||
{
|
||||
bulkOrderData.productId1,
|
||||
bulkOrderData.productId2,
|
||||
bulkOrderData.productId3,
|
||||
};
|
||||
|
||||
// 納品する
|
||||
var achieved = gameData.CompletedOrderList.Count == orderList.Count(x => x != 0);
|
||||
achievedObject.SetActive(achieved);
|
||||
deliveredButton.interactable = achieved;
|
||||
deliveredButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
|
||||
{
|
||||
// カウントリセット
|
||||
gameData.OrderConditionCount = 0;
|
||||
LocalCacheManager.Save(AchievedCallbackTag, new Action(() =>
|
||||
{
|
||||
// 獲得
|
||||
var rarityList = SpreadsheetDataManager.Instance.GetBaseDataList<RarityData>(Const.RarityDataSheet);
|
||||
var bonus = CalcBonus(rarityList, gameData.CompletedOrderList, bulkOrderData.shopLevel);
|
||||
gameData.Coin = CoinManager.Instance.OwnCoin;
|
||||
CoinManager.Instance.AddCoinWithEffect(bulkOrderData.rewardCoin + bonus);
|
||||
gameData.Heart += bulkOrderData.rewardHeart;
|
||||
HeartMeter.Instance.AddHeart(bulkOrderData.rewardHeart);
|
||||
|
||||
// カウントリセット
|
||||
gameData.OrderConditionCount = 0;
|
||||
gameData.CurrentLevelOrderCount++;
|
||||
#if UNITY_EDITOR
|
||||
Debug.Log($"current:{gameData.CurrentLevelOrderCount} max:{bulkOrderData.maxOrder}");
|
||||
#endif
|
||||
// オーダー上限を超えるとそのLevelでの注文終了
|
||||
if (gameData.CurrentLevelOrderCount == bulkOrderData.maxOrder)
|
||||
{
|
||||
gameData.CurrentLevelOrderCount = 0;
|
||||
gameData.AchievedOrderLevel = bulkOrderData.shopLevel;
|
||||
}
|
||||
GameDataManager.SaveGameData();
|
||||
// キャンセルと同時に閉じる
|
||||
transform.parent.SetLocalScale(0);
|
||||
backgroundAnimator.SetTrigger(CloseTrigger);
|
||||
this.CallWaitForSeconds(.25f, () =>
|
||||
{
|
||||
TransitionManager.Instance.UnloadScene(GameScenes.BulkOrder);
|
||||
});
|
||||
}));
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.BulkOrderAchievement);
|
||||
}).AddTo(this);
|
||||
|
||||
|
||||
var productList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet);
|
||||
if (productList.FirstOrDefault(data => data.id == bulkOrderData.productId1) is ProductData data1)
|
||||
{
|
||||
itemView1.SetData(data1, bulkOrderData.count1);
|
||||
itemView1.SetButtonActive(itemView1.CheckAmount(data1));
|
||||
if (gameData.CompletedOrderList.FirstOrDefault(data => data.Number == 1) is BulkOrderResultData resultData)
|
||||
{
|
||||
itemView1.SetCooked(resultData.Rarity);
|
||||
}
|
||||
itemView1.gameObject.SetActive(true);
|
||||
itemView1.CookingButton.ThrottleFirst(TimeSpan.FromSeconds(1f)).Subscribe(_ =>
|
||||
{
|
||||
gameData.CompletedOrderList.Add(new BulkOrderResultData(){Number = 1, Rarity = ProductRarity.Copper});
|
||||
}).AddTo(itemView1);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -93,6 +144,10 @@ public class BulkOrder : MonoBehaviour
|
|||
{
|
||||
itemView2.SetData(data2, bulkOrderData.count2);
|
||||
itemView2.SetButtonActive(itemView2.CheckAmount(data2));
|
||||
if (gameData.CompletedOrderList.FirstOrDefault(data => data.Number == 2) is BulkOrderResultData resultData)
|
||||
{
|
||||
itemView2.SetCooked(resultData.Rarity);
|
||||
}
|
||||
itemView2.gameObject.SetActive(true);
|
||||
}
|
||||
else
|
||||
|
|
@ -103,6 +158,10 @@ public class BulkOrder : MonoBehaviour
|
|||
{
|
||||
itemView3.SetData(data3, bulkOrderData.count3);
|
||||
itemView3.SetButtonActive(itemView3.CheckAmount(data3));
|
||||
if (gameData.CompletedOrderList.FirstOrDefault(data => data.Number == 3) is BulkOrderResultData resultData)
|
||||
{
|
||||
itemView3.SetCooked(resultData.Rarity);
|
||||
}
|
||||
itemView3.gameObject.SetActive(true);
|
||||
}
|
||||
else
|
||||
|
|
@ -110,4 +169,20 @@ public class BulkOrder : MonoBehaviour
|
|||
itemView3.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
public static int CalcBonus(List<RarityData> rarityList, List<BulkOrderResultData> resultData, int shopLevel)
|
||||
{
|
||||
var totalBonus = 0;
|
||||
var hasRarityList = resultData.Where(data => data.Rarity != ProductRarity.Normal).ToList();
|
||||
if (hasRarityList.Count == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
foreach (var progressData in hasRarityList)
|
||||
{
|
||||
var bonusRate = rarityList.FirstOrDefault(data => data.Rarity == progressData.Rarity)?.bulkOrderBonus ?? 0;
|
||||
totalBonus += bonusRate * shopLevel;
|
||||
}
|
||||
return Mathf.CeilToInt((float) totalBonus / hasRarityList.Count);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,47 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class BulkOrderAchievedView : MonoBehaviour
|
||||
{
|
||||
private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger");
|
||||
private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger");
|
||||
[SerializeField] private Animator backgroundAnimator;
|
||||
[SerializeField] private Button closeButton;
|
||||
|
||||
[SerializeField] private Text heartText;
|
||||
[SerializeField] private Text coinText;
|
||||
[SerializeField] private Text bonusCoinText;
|
||||
[SerializeField] private Text messageText;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (LocalCacheManager.Load<BulkOrderData>(BulkOrder.DataTag, null) is BulkOrderData orderData)
|
||||
{
|
||||
var gameData = GameDataManager.GameData;
|
||||
var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet);
|
||||
var rarityList = SpreadsheetDataManager.Instance.GetBaseDataList<RarityData>(Const.RarityDataSheet);
|
||||
var bonus = BulkOrder.CalcBonus(rarityList, gameData.CompletedOrderList, orderData.shopLevel);
|
||||
heartText.text = orderData.rewardHeart.ToString();
|
||||
coinText.text = orderData.rewardCoin.ToString();
|
||||
bonusCoinText.text = bonus.ToString();
|
||||
messageText.text = messageList.First(data => data.id == gameData.OrderTextId).thanksText;
|
||||
}
|
||||
closeButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
if (LocalCacheManager.Load<Action>(BulkOrder.AchievedCallbackTag, null) is Action callback)
|
||||
{
|
||||
callback.Invoke();
|
||||
}
|
||||
transform.parent.SetLocalScale(0);
|
||||
backgroundAnimator.SetTrigger(CloseTrigger);
|
||||
this.CallWaitForSeconds(.25f, () =>
|
||||
{
|
||||
TransitionManager.Instance.UnloadScene(GameScenes.BulkOrderAchievement);
|
||||
TransitionManager.Instance.UnloadScene(GameScenes.BulkOrder);
|
||||
});
|
||||
}).AddTo(this);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ public class KitchenManager : MonoBehaviour
|
|||
orderIndicatorView.TappedPhone.ThrottleFirst(TimeSpan.FromSeconds(1f)).Take(1).Subscribe(_ =>
|
||||
{
|
||||
// タップで更新
|
||||
gameData.CompletedOrderList.Clear();
|
||||
gameData.OrderIdInProgress = result.nextOrderId;
|
||||
if (nextMessageList.Exists(data => data.id == gameData.OrderTextId))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -102,9 +102,9 @@ public sealed class GameData {
|
|||
|
||||
// [DataMember(Name = "Data27")]
|
||||
|
||||
// BulkOrder
|
||||
[DataMember(Name = "Data28")]
|
||||
public int OrderIdInProgress;
|
||||
|
||||
[DataMember(Name = "Data29")]
|
||||
public int OrderTextId;
|
||||
[DataMember(Name = "Data30")]
|
||||
|
|
@ -113,9 +113,10 @@ public sealed class GameData {
|
|||
public int CancelOrderId;
|
||||
[DataMember(Name = "Data32")]
|
||||
public int AchievedOrderLevel;
|
||||
// 進捗
|
||||
[DataMember(Name = "Data33")]
|
||||
public List<BulkOrderProgressData> OrderProgressList;
|
||||
public List<BulkOrderResultData> CompletedOrderList;
|
||||
[DataMember(Name = "Data34")]
|
||||
public int CurrentLevelOrderCount;
|
||||
|
||||
// mission
|
||||
[DataMember(Name = "Data1001")]
|
||||
|
|
@ -234,7 +235,7 @@ public sealed class GameData {
|
|||
Pans = Pans ?? new int[0];
|
||||
TotalSalesList = TotalSalesList ?? new List<ProductStockData>();
|
||||
AchievedMission = achievedMission?.ToList() ?? new List<int>();
|
||||
OrderProgressList = OrderProgressList ?? new List<BulkOrderProgressData>();
|
||||
CompletedOrderList = CompletedOrderList ?? new List<BulkOrderResultData>();
|
||||
}
|
||||
private Dictionary<int, int> ArrayToDictionary(KeyValueOfintint[] array){
|
||||
var dictionary = new Dictionary<int, int>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue