From e59375bbe6f78a44ee734743837f608ad8713353 Mon Sep 17 00:00:00 2001 From: henriquenakashima Date: Sat, 19 Sep 2020 00:10:02 -0400 Subject: [PATCH] Energy works --- Assets/Battle/BattleController.cs | 38 +++++- Assets/Battle/BattleParticipantSprite.cs | 1 - Assets/Battle/BattlePlayerControls.cs | 4 +- Assets/Battle/BattleScene.unity | 141 +++++++++++++++-------- Assets/EnergyUI.cs | 33 ++++++ Assets/EnergyUI.cs.meta | 11 ++ 6 files changed, 178 insertions(+), 50 deletions(-) create mode 100644 Assets/EnergyUI.cs create mode 100644 Assets/EnergyUI.cs.meta diff --git a/Assets/Battle/BattleController.cs b/Assets/Battle/BattleController.cs index 286c51c..8482387 100644 --- a/Assets/Battle/BattleController.cs +++ b/Assets/Battle/BattleController.cs @@ -6,7 +6,8 @@ public class BattleController : MonoBehaviour { public HeroId[] heroIds; public MonsterId[] monsterIds; - + public int maxEnergy = 6; + public HeroInfoUI heroUIPrefab; public GameObject uiCanvas; public BattlePlayerControls battlePlayerControls; @@ -19,6 +20,12 @@ public class BattleController : MonoBehaviour private GameObject[] monsterSprites; private HeroInfoUI[] monsterUIs; + private int energy; + + void Awake() { + this.energy = this.maxEnergy; + } + // Start is called before the first frame update void Start() { @@ -74,11 +81,36 @@ public class BattleController : MonoBehaviour } public void OnCardUsed(BaseCard card) { - Debug.Log("OnCardClicked " + card); - StartCoroutine(card.Use(battlePlayerControls)); + Debug.Log("OnCardUsed " + card); + if (!CanUseCard(card)) { + throw new System.InvalidOperationException("Cannot use card " + card.GetDisplayName()); + } + StartCoroutine(UseCard(card)); + } + + public IEnumerator UseCard(BaseCard card) { + yield return card.Use(battlePlayerControls); + PayCardCost(card); } public void OnTurnPassed() { Debug.Log("OnTurnPassed"); + this.energy = this.maxEnergy; + } + + public bool CanUseCard(BaseCard card) { + return this.energy >= card.GetCost(); + } + + private void PayCardCost(BaseCard card) { + this.energy -= card.GetCost(); + } + + public int GetEnergy() { + return this.energy; + } + + public int GetMaxEnergy() { + return this.maxEnergy; } } diff --git a/Assets/Battle/BattleParticipantSprite.cs b/Assets/Battle/BattleParticipantSprite.cs index 3dea462..0b758b3 100644 --- a/Assets/Battle/BattleParticipantSprite.cs +++ b/Assets/Battle/BattleParticipantSprite.cs @@ -28,7 +28,6 @@ public class BattleParticipantSprite : MonoBehaviour } void OnMouseDown() { - Debug.Log("Clicked " + this.name); OnSpriteClicked(participant); } diff --git a/Assets/Battle/BattlePlayerControls.cs b/Assets/Battle/BattlePlayerControls.cs index 1fcab68..89ff11b 100644 --- a/Assets/Battle/BattlePlayerControls.cs +++ b/Assets/Battle/BattlePlayerControls.cs @@ -56,7 +56,9 @@ public class BattlePlayerControls : MonoBehaviour private void OnCardClicked(BaseCard card) { if (!this.waitingForTarget) { - OnCardUsed(card); + if (this.battleController.CanUseCard(card)) { + OnCardUsed(card); + } } } diff --git a/Assets/Battle/BattleScene.unity b/Assets/Battle/BattleScene.unity index f6068f3..ec722dc 100644 --- a/Assets/Battle/BattleScene.unity +++ b/Assets/Battle/BattleScene.unity @@ -121,6 +121,57 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &24180899 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 24180900} + - component: {fileID: 24180901} + m_Layer: 5 + m_Name: EnergyUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &24180900 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 24180899} + 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: 527589754} + m_Father: {fileID: 35522592} + m_RootOrder: 1 + 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: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &24180901 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 24180899} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7045cd41e530ab440bda43353370773b, type: 3} + m_Name: + m_EditorClassIdentifier: + text: {fileID: 527589755} + battleController: {fileID: 359124400} --- !u!1 &35522588 GameObject: m_ObjectHideFlags: 0 @@ -211,8 +262,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} m_Children: - - {fileID: 527589754} - - {fileID: 1281365532} + - {fileID: 1415908914} + - {fileID: 24180900} m_Father: {fileID: 0} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -252,6 +303,7 @@ MonoBehaviour: m_EditorClassIdentifier: heroIds: 010000000000000002000000 monsterIds: 000000000100000000000000 + maxEnergy: 6 heroUIPrefab: {fileID: 6641511084601005557, guid: ef1b469b45cedee418e4c4adf577cd00, type: 3} uiCanvas: {fileID: 35522588} @@ -365,7 +417,7 @@ GameObject: - component: {fileID: 527589756} - component: {fileID: 527589755} m_Layer: 5 - m_Name: Text + m_Name: EnergyText m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -378,17 +430,17 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 527589753} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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: 35522592} + m_Father: {fileID: 24180900} 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: -490, y: -279} - m_SizeDelta: {x: 160, y: 30} + m_AnchoredPosition: {x: -467.1, y: -316} + m_SizeDelta: {x: 171.60992, y: 30} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &527589755 MonoBehaviour: @@ -403,7 +455,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_Color: {r: 0.93333334, g: 0.93333334, b: 0.93333334, a: 1} m_RaycastTarget: 1 m_Maskable: 1 m_OnCullStateChanged: @@ -411,10 +463,10 @@ MonoBehaviour: m_Calls: [] m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 + m_FontSize: 20 + m_FontStyle: 1 m_BestFit: 0 - m_MinSize: 10 + m_MinSize: 2 m_MaxSize: 40 m_Alignment: 3 m_AlignByGeometry: 0 @@ -497,7 +549,7 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1281365531 +--- !u!1 &1415908913 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -505,44 +557,44 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1281365532} - - component: {fileID: 1281365535} - - component: {fileID: 1281365534} - - component: {fileID: 1281365533} + - component: {fileID: 1415908914} + - component: {fileID: 1415908917} + - component: {fileID: 1415908916} + - component: {fileID: 1415908915} m_Layer: 5 - m_Name: Button + m_Name: PassButton m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &1281365532 +--- !u!224 &1415908914 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1281365531} + m_GameObject: {fileID: 1415908913} 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: 1529429807} + - {fileID: 2141503600} m_Father: {fileID: 35522592} - m_RootOrder: 1 + 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: 490, y: -279} + m_AnchoredPosition: {x: 480.5, y: -314.1} m_SizeDelta: {x: 160, y: 30} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1281365533 +--- !u!114 &1415908915 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1281365531} + m_GameObject: {fileID: 1415908913} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} @@ -575,12 +627,12 @@ MonoBehaviour: m_SelectedTrigger: Selected m_DisabledTrigger: Disabled m_Interactable: 1 - m_TargetGraphic: {fileID: 1281365534} + m_TargetGraphic: {fileID: 1415908916} m_OnClick: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 359124400} - m_MethodName: HitRandomParticipant + - m_Target: {fileID: 1436154611} + m_MethodName: PassTurnButtonClicked m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} @@ -590,13 +642,13 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 ---- !u!114 &1281365534 +--- !u!114 &1415908916 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1281365531} + m_GameObject: {fileID: 1415908913} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} @@ -619,13 +671,13 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1281365535 +--- !u!222 &1415908917 CanvasRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1281365531} + m_GameObject: {fileID: 1415908913} m_CullTransparentMesh: 0 --- !u!1 &1436154610 GameObject: @@ -656,6 +708,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9b4d50dd7247d784d9402c81c0d7259d, type: 3} m_Name: m_EditorClassIdentifier: + battleController: {fileID: 359124400} uiCanvas: {fileID: 35522588} cardPrefab: {fileID: 2477879196625076711, guid: a2a8de873e36bee42af5fda3c7299574, type: 3} @@ -673,7 +726,7 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1529429806 +--- !u!1 &2141503599 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -681,9 +734,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1529429807} - - component: {fileID: 1529429809} - - component: {fileID: 1529429808} + - component: {fileID: 2141503600} + - component: {fileID: 2141503602} + - component: {fileID: 2141503601} m_Layer: 5 m_Name: Text m_TagString: Untagged @@ -691,18 +744,18 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &1529429807 +--- !u!224 &2141503600 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1529429806} + m_GameObject: {fileID: 2141503599} 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: 1281365532} + m_Father: {fileID: 1415908914} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -710,13 +763,13 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1529429808 +--- !u!114 &2141503601 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1529429806} + m_GameObject: {fileID: 2141503599} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} @@ -742,14 +795,12 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 'Hit random participant - -' ---- !u!222 &1529429809 + m_Text: Pass Turn +--- !u!222 &2141503602 CanvasRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1529429806} + m_GameObject: {fileID: 2141503599} m_CullTransparentMesh: 0 diff --git a/Assets/EnergyUI.cs b/Assets/EnergyUI.cs new file mode 100644 index 0000000..087d73c --- /dev/null +++ b/Assets/EnergyUI.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class EnergyUI : MonoBehaviour +{ + public Text text; + public BattleController battleController; + + private int renderedEnergy = -1; + private int renderedMaxEnergy = -1; + + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + if (this.renderedEnergy != battleController.GetEnergy() || this.renderedMaxEnergy != battleController.GetMaxEnergy()) { + string currentEnergyString = "" + battleController.GetEnergy(); + if (battleController.GetEnergy() == 0) { + currentEnergyString = "" + currentEnergyString + ""; + } + text.text = "Energy: " + currentEnergyString + " / " + battleController.GetMaxEnergy(); + this.renderedEnergy = battleController.GetEnergy(); + this.renderedMaxEnergy = battleController.GetMaxEnergy(); + } + } +} diff --git a/Assets/EnergyUI.cs.meta b/Assets/EnergyUI.cs.meta new file mode 100644 index 0000000..fa790a5 --- /dev/null +++ b/Assets/EnergyUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7045cd41e530ab440bda43353370773b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: