Merge branch 'develop' of bitbucket.org:usaya/popcorn into develop

This commit is contained in:
koya_15 2021-09-10 20:14:24 +09:00
commit 219913a3f6
3 changed files with 206 additions and 33 deletions

View File

@ -1,5 +1,154 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2895484395707725730
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1272573749203266507}
- component: {fileID: 4707019036817275407}
- component: {fileID: 5887917383623105892}
m_Layer: 5
m_Name: Image_text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1272573749203266507
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2895484395707725730}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 7070062469376303877}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 2.9, y: 4}
m_SizeDelta: {x: 66, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4707019036817275407
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2895484395707725730}
m_CullTransparentMesh: 0
--- !u!114 &5887917383623105892
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2895484395707725730}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 1ed7a6eade5a3af4c962706dec098104, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &7845949066005219734
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7070062469376303877}
- component: {fileID: 1561612110923996906}
- component: {fileID: 7043889385648676325}
m_Layer: 5
m_Name: Button_Purchase_Off
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &7070062469376303877
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7845949066005219734}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1272573749203266507}
m_Father: {fileID: 9133304336500199661}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
m_AnchoredPosition: {x: 140, y: 125.10004}
m_SizeDelta: {x: 240, y: 98}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1561612110923996906
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7845949066005219734}
m_CullTransparentMesh: 0
--- !u!114 &7043889385648676325
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7845949066005219734}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 8539f0168ede4654dbdbe738754bdb2f, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &9133304335139982201
GameObject:
m_ObjectHideFlags: 0
@ -134,7 +283,8 @@ MonoBehaviour:
subCountButton: {fileID: 5919954079663981596}
addCountButton: {fileID: 5919954079471528431}
closeButton: {fileID: 9133304335940276437}
purchaseButton: {fileID: 9133304335268316946}
purchaseOnButton: {fileID: 9133304335268316946}
purchaseOffButton: {fileID: 7845949066005219734}
--- !u!1 &9133304335268316944
GameObject:
m_ObjectHideFlags: 0
@ -148,7 +298,7 @@ GameObject:
- component: {fileID: 9133304335268316949}
- component: {fileID: 9133304335268316946}
m_Layer: 5
m_Name: Button_Purchase
m_Name: Button_Purchase_On
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -569,7 +719,7 @@ RectTransform:
- {fileID: 9133304336181127573}
- {fileID: 9133304337054428178}
m_Father: {fileID: 9133304336500199661}
m_RootOrder: 4
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@ -1597,6 +1747,7 @@ RectTransform:
m_Children:
- {fileID: 9133304335940276434}
- {fileID: 9133304335268316947}
- {fileID: 7070062469376303877}
- {fileID: 9133304337032816943}
- {fileID: 9133304336675516546}
- {fileID: 9133304335380453066}
@ -1899,7 +2050,7 @@ RectTransform:
- {fileID: 9133304335893567655}
- {fileID: 9133304335334808081}
m_Father: {fileID: 9133304336500199661}
m_RootOrder: 3
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
@ -2166,7 +2317,7 @@ RectTransform:
- {fileID: 9133304336883555446}
- {fileID: 9133304336944246770}
m_Father: {fileID: 9133304336500199661}
m_RootOrder: 2
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}

View File

@ -21,16 +21,17 @@ public class ShopItemPurchaseView : MonoBehaviour
[SerializeField] private Button subCountButton;
[SerializeField] private Button addCountButton;
[SerializeField] private Button closeButton;
[SerializeField] private Button purchaseButton;
public IObservable<Unit> PurchaseButtonObservable => purchaseButton.OnClickAsObservable().TakeUntilDestroy(this);
[SerializeField] private Button purchaseOnButton;
[SerializeField] private GameObject purchaseOffButton;
private Color defaultColor;
private readonly IntReactiveProperty currentCount = new IntReactiveProperty();
private void Start()
{
currentCount.AddTo(this);
var data = LocalCacheManager.Load<(ShopData shopData, int stockCount)>(ItemPurchaseTag);
defaultColor = totalPrice.color;
var data = LocalCacheManager.Load<(ShopData shopData, int stockCount, Action<int> callback)>(ItemPurchaseTag);
LocalCacheManager.Remove(ItemPurchaseTag);
SetData(data.shopData, data.stockCount);
closeButton.OnClickAsObservable().Subscribe(_ =>
{
@ -41,8 +42,9 @@ public class ShopItemPurchaseView : MonoBehaviour
TransitionManager.Instance.UnloadScene(GameScenes.Purchase);
});
}).AddTo(this);
purchaseButton.OnClickAsObservable().Subscribe(_ =>
purchaseOnButton.OnClickAsObservable().Subscribe(_ =>
{
data.callback.Invoke(currentCount.Value);
transform.SetLocalScale(0);
backgroundAnimator.SetTrigger(CloseTrigger);
this.CallWaitForSeconds(.25f, () =>
@ -54,16 +56,25 @@ public class ShopItemPurchaseView : MonoBehaviour
currentCount.Value = MinPurchaseCount;
currentCount.Subscribe(x =>
{
var total = data.shopData.price * x;
SetButtonActive(total <= CoinManager.Instance.OwnCoin);
totalPrice.color = total <= CoinManager.Instance.OwnCoin ? defaultColor : Color.red;
totalPrice.text = $"{total}";
purchaseCount.text = $"{x}";
totalPrice.text = $"{data.shopData.price * x}";
}).AddTo(this);
addCountButton.OnClickAsObservable().Select(_ => 1)
.Merge(subCountButton.OnClickAsObservable().Select(_ => -1))
.Subscribe(x =>
{
currentCount.Value = Mathf.Clamp(currentCount.Value + x, MinPurchaseCount, MaxPurchaseCount);
}).AddTo(this);
if (data.shopData.ConsumeType == ShopItemType.Consumable)
{
addCountButton.OnClickAsObservable().Select(_ => 1)
.Merge(subCountButton.OnClickAsObservable().Select(_ => -1))
.Subscribe(x =>
{
currentCount.Value = Mathf.Clamp(currentCount.Value + x, MinPurchaseCount, MaxPurchaseCount);
}).AddTo(this);
}
else
{
currentCount.Value = 1;
}
}
private void SetData(ShopData shopData, int count)
@ -72,4 +83,10 @@ public class ShopItemPurchaseView : MonoBehaviour
price.text = $"{shopData.price}";
stockCount.text = $"所持数 :{count}";
}
private void SetButtonActive(bool active)
{
purchaseOnButton.gameObject.SetActive(active);
purchaseOffButton.SetActive(!active);
}
}

View File

@ -27,19 +27,26 @@ public class Shopping : MonoBehaviour
{
itemView.SetItemActive(shopData.price <= ownCoin);
}).AddTo(this);
var purchaseSubject = new Subject<int>();
purchaseSubject.AddTo(itemView);
purchaseSubject.Subscribe(amount =>
{
// アイテムを増やす
AddItem(shopData, amount);
itemView.SetStockCount(GetItemAmount(shopData));
CoinManager.Instance.SubCoin(shopData.price * amount);
gameData.coin = CoinManager.Instance.OwnCoin;
changeCoinSubject.OnNext(gameData.coin);
GameDataManager.SaveGameData();
}).AddTo(itemView);
// アイテム購入クリック購読
itemView.PurchaseButtonObservable
.Where(_ => shopData.price <= CoinManager.Instance.OwnCoin)
.Subscribe(_ =>
{
// アイテムを増やす
AddItem(shopData);
itemView.SetStockCount(GetItemAmount(shopData));
CoinManager.Instance.SubCoin(shopData.price);
gameData.coin = CoinManager.Instance.OwnCoin;
changeCoinSubject.OnNext(gameData.coin);
GameDataManager.SaveGameData();
}).AddTo(itemView);
LocalCacheManager.Save(ShopItemPurchaseView.ItemPurchaseTag, (shopData, GetItemAmount(shopData), new Action<int>(x => purchaseSubject.OnNext(x))));
TransitionManager.Instance.LoadSceneAdditive(GameScenes.Purchase);
}).AddTo(itemView);
}
changeCoinSubject.OnNext(CoinManager.Instance.OwnCoin);
}
@ -60,7 +67,7 @@ public class Shopping : MonoBehaviour
}
}
private void AddItem(ShopData shopData)
private void AddItem(ShopData shopData, int amount)
{
var gameData = GameDataManager.GameData;
switch (shopData.Category)
@ -69,16 +76,14 @@ public class Shopping : MonoBehaviour
var index = gameData.Material.FindIndex(x => x.Id == shopData.itemId);
if (index == -1)
{
index = gameData.Material.Count;
gameData.Material.Add(new MaterialData
{
Id = shopData.itemId,
Amount = 1
Amount = 0
});
}
else
{
gameData.Material[index].Amount++;
}
gameData.Material[index].Amount += amount;
break;
case ItemCategory.Recipe:
if (!gameData.MyRecipes.Contains(shopData.itemId))