タンク購入不可時の表示対応

This commit is contained in:
kimura 2021-12-07 15:31:35 +09:00
parent da06a21ca8
commit c85a448129
3 changed files with 22 additions and 66 deletions

View File

@ -754,8 +754,6 @@ GameObject:
- component: {fileID: 4519309666120766310}
- component: {fileID: 1012908116377367962}
- component: {fileID: 3674398196704257451}
- component: {fileID: 6306209999279485786}
- component: {fileID: 7205822850874278242}
m_Layer: 5
m_Name: Button_purchase_off
m_TagString: Untagged
@ -820,65 +818,6 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &6306209999279485786
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3466150383814718663}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 3674398196704257451}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &7205822850874278242
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3466150383814718663}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5e732834936f04d48be0ff3fa358563d, type: 3}
m_Name:
m_EditorClassIdentifier:
onClickPlaySEFilename: se_ButtonTap
randomPlaySEFilenames: []
randomPlayVoiceFilenames: []
vibrationType: 0
--- !u!1 &4441046490384227346
GameObject:
m_ObjectHideFlags: 0
@ -1649,7 +1588,7 @@ MonoBehaviour:
lockedTankNumber: {fileID: 8175998083386752690}
price: {fileID: 8175998083146003101}
purchaseButton: {fileID: 8175998083657673474}
buttonSubImage: {fileID: 8175998082971778653}
purchaseButtonDisabledObject: {fileID: 3466150383814718663}
--- !u!1 &8175998082772346535
GameObject:
m_ObjectHideFlags: 0
@ -2468,7 +2407,7 @@ MonoBehaviour:
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_Interactable: 0
m_TargetGraphic: {fileID: 8175998083657673473}
m_OnClick:
m_PersistentCalls:

View File

@ -103,6 +103,9 @@ public class ProductManagement : MonoBehaviour
consumeType = 2,
prefabName = "tank"
};
// 購入可否
tankView.SetCanBuy(shopData.price <= CoinManager.Instance.OwnCoin);
tankView.PurchaseButtonObservable
.Where(_ => shopData.price <= CoinManager.Instance.OwnCoin)
.TakeWhile(_ => tankView.State.Value == TankState.Lock || tankView.State.Value == TankState.Unavailable)
@ -121,6 +124,7 @@ public class ProductManagement : MonoBehaviour
if (tankView.TankNumber + 1 <= tankList.Count)
{
tankList[tankView.TankNumber].SetState(TankState.Lock);
tankList[tankView.TankNumber].SetCanBuy(PriceList[tankView.TankNumber] <= CoinManager.Instance.OwnCoin);
}
};
ShopItemPurchaseView.ShowDialog((shopData, 0), purchaseAction);

View File

@ -26,12 +26,16 @@ public class ProductManagementTankView : MonoBehaviour
[SerializeField] private TankRarityView rarityView;
[SerializeField] private Button detailButton;
[SerializeField] private GameObject arrow;
// 未購入
[SerializeField] private GameObject lockedTankObject;
[SerializeField] private Text lockedTankNumber;
[SerializeField] private Text price;
[SerializeField] private Button purchaseButton;
[SerializeField] private Image buttonSubImage;
[SerializeField] private GameObject purchaseButtonDisabledObject;
private Color redColor;
private Color defaultColor;
private bool canBuy;
private List<ProductData> productList;
private int tankNumberInt;
private readonly BoolReactiveProperty isEmply = new BoolReactiveProperty();
@ -49,6 +53,8 @@ public class ProductManagementTankView : MonoBehaviour
{
var eventTrigger = gameObject.AddComponent<ObservableEventTrigger>();
TankClickObservable = eventTrigger.OnPointerClickAsObservable().TakeUntilDestroy(this).AsUnitObservable();
defaultColor = price.color;
ColorUtility.TryParseHtmlString(Const.RedColorString, out redColor);
}
private void Start()
@ -57,7 +63,7 @@ public class ProductManagementTankView : MonoBehaviour
detailButtonActive.AddTo(this);
state.Subscribe(x =>
{
tankObject.SetActive(x != TankState.Lock && x != TankState.Unavailable);
tankObject.SetActive(!(x == TankState.Lock || x == TankState.Unavailable));
lockedTankObject.SetActive(x == TankState.Lock || x == TankState.Unavailable);
purchaseButton.gameObject.SetActive(x == TankState.Lock);
selectedIndicateObject.SetActive(x == TankState.Selected);
@ -115,6 +121,13 @@ public class ProductManagementTankView : MonoBehaviour
public void SetPurchaseButtonActive(bool active)
{
purchaseButton.interactable = active;
buttonSubImage.color = active ? Color.white : purchaseButton.colors.disabledColor;
purchaseButtonDisabledObject.SetActive(state.Value == TankState.Lock && (!active || !canBuy));
}
public void SetCanBuy(bool active)
{
canBuy = active;
price.color = active ? defaultColor : Color.red;
SetPurchaseButtonActive(active);
}
}