diff --git a/Game/CourierOld/Assets/Code/App/AppStates/GameOverState.cs b/Game/CourierOld/Assets/Code/App/AppStates/GameOverState.cs index 1f7def8..d02257d 100644 --- a/Game/CourierOld/Assets/Code/App/AppStates/GameOverState.cs +++ b/Game/CourierOld/Assets/Code/App/AppStates/GameOverState.cs @@ -1,6 +1,8 @@ using Code.App.StateMachine; +using Code.Scenes; using Code.StateMachine; using Code.UI; +using UnityEngine; namespace Code.App.AppStates { @@ -8,20 +10,32 @@ namespace Code.App.AppStates { public GameOverState(AppStateMachineContext context) : base(context) { } + + private float damnTimer = 3f; public override void EnterState() { - Context.UIService.LoadingScreen.Show(); Context.UIService.SwitchPanelTo(UIPanel.GameOver); base.EnterState(); } + + private void ToMainMenu() + { + Context.StateMachine.SwitchState(AppState.MainMenu) + .AllowStateTransition(AppState.Gameplay); + } public override void Tick() - { } - + { + damnTimer -= Time.deltaTime; + if (damnTimer <= float.Epsilon) ToMainMenu(); + } public override void ExitState() { + damnTimer = 5f; + + Context.UIService.LoadingScreen.Show(); base.ExitState(); } } diff --git a/Game/CourierOld/Assets/Code/App/AppStates/GameplayState.cs b/Game/CourierOld/Assets/Code/App/AppStates/GameplayState.cs index 0c14f2f..75639a8 100644 --- a/Game/CourierOld/Assets/Code/App/AppStates/GameplayState.cs +++ b/Game/CourierOld/Assets/Code/App/AppStates/GameplayState.cs @@ -52,16 +52,12 @@ namespace Code.App.AppStates // Debug private void GiveHealth(InputAction.CallbackContext context) { - UnityEngine.Debug.Log("Giving health"); _playerHealth.GetDamage(-1); - UnityEngine.Debug.Log(_playerHealth.HealthPoints); } private void LooseHealth(InputAction.CallbackContext context) { - UnityEngine.Debug.Log("Losing health"); _playerHealth.GetDamage(1); - UnityEngine.Debug.Log(_playerHealth.HealthPoints); } private void GiveMoney(InputAction.CallbackContext context) @@ -80,7 +76,8 @@ namespace Code.App.AppStates private void EndGame() { - Context.StateMachine.SwitchState(AppState.GameOver); + Context.StateMachine.SwitchState(AppState.GameOver) + .AllowStateTransition(AppState.MainMenu); } public override void ExitState() diff --git a/Game/CourierOld/Assets/Code/App/AppStates/MainMenuState.cs b/Game/CourierOld/Assets/Code/App/AppStates/MainMenuState.cs index 67b1a19..4ac3e69 100644 --- a/Game/CourierOld/Assets/Code/App/AppStates/MainMenuState.cs +++ b/Game/CourierOld/Assets/Code/App/AppStates/MainMenuState.cs @@ -20,10 +20,10 @@ namespace Code.App.AppStates public override void EnterState() { + Context.UIService.LoadingScreen.Show(); Context.SceneLoaderService.LoadScene((int)SceneIds.MainMenu, SceneLoaded); Context.InputService.EnableMap(ActionMappings.MainMenu); - Context.UIService.LoadingScreen.Show(); Context.UIService.SwitchPanelTo(UIPanel.MainMenu); ((MainMenuPanel)Context.UIService.CurrentPanel).startButton.onClick.AddListener(StartGame); ((MainMenuPanel)Context.UIService.CurrentPanel).exitButton.onClick.AddListener(ExitGame); diff --git a/Game/CourierOld/Assets/Code/Configs/UIConfig.cs b/Game/CourierOld/Assets/Code/Configs/UIConfig.cs index b91934e..92f6b06 100644 --- a/Game/CourierOld/Assets/Code/Configs/UIConfig.cs +++ b/Game/CourierOld/Assets/Code/Configs/UIConfig.cs @@ -1,5 +1,4 @@ using Code.UI; -using Code.UI.GameplayElements; using UnityEngine; using UnityEngine.Serialization; @@ -10,10 +9,5 @@ namespace Code.Configs { [FormerlySerializedAs("uiElements")] public UIElement[] uiElementsPrefabs; [FormerlySerializedAs("canvas")] public Canvas canvasPrefab; - - [Header("GameplayPanel")] - public HealthBar healthBarPrefab; - public MoneyBar moneyBarPrefab; - } } \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/UI/GameOverPanel.cs b/Game/CourierOld/Assets/Code/UI/GameOverPanel.cs new file mode 100644 index 0000000..58dc898 --- /dev/null +++ b/Game/CourierOld/Assets/Code/UI/GameOverPanel.cs @@ -0,0 +1,19 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Code.UI +{ + public class GameOverPanel : UIElement + { + [SerializeField] private Image _background; + + public void Hide() + { + _background.enabled = false; + } + public void Show() + { + _background.enabled = true; + } + } +} \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/UI/GameOverPanel.cs.meta b/Game/CourierOld/Assets/Code/UI/GameOverPanel.cs.meta new file mode 100644 index 0000000..15eb20c --- /dev/null +++ b/Game/CourierOld/Assets/Code/UI/GameOverPanel.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ecbe291069244405ac22e5470f3ba62b +timeCreated: 1761948692 \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/UI/GameplayElements.meta b/Game/CourierOld/Assets/Code/UI/GameplayElements.meta deleted file mode 100644 index 8415bdd..0000000 --- a/Game/CourierOld/Assets/Code/UI/GameplayElements.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 271d8609b0d94575a2e61c48d3b46d63 -timeCreated: 1761917025 \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/UI/GameplayElements/HealthBar.cs b/Game/CourierOld/Assets/Code/UI/GameplayElements/HealthBar.cs deleted file mode 100644 index 06c57d3..0000000 --- a/Game/CourierOld/Assets/Code/UI/GameplayElements/HealthBar.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Code.Gameplay.Player; -using UnityEngine; -using UnityEngine.UI; - -namespace Code.UI.GameplayElements -{ - public class HealthBar : MonoBehaviour - { - [SerializeField] private Image healthBar; - - public void HealthUpdate(int count, PlayerHealth health) - { - // TODO Анимация потери - float fillAmount = (float)health.HealthPoints / health.MaxHealthPoints; - healthBar.fillAmount = fillAmount; - } - } -} \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/UI/GameplayElements/HealthBar.cs.meta b/Game/CourierOld/Assets/Code/UI/GameplayElements/HealthBar.cs.meta deleted file mode 100644 index 088c00a..0000000 --- a/Game/CourierOld/Assets/Code/UI/GameplayElements/HealthBar.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: ddb267271c834c6697caff23709d30a2 -timeCreated: 1761917038 \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/UI/GameplayElements/MoneyBar.cs b/Game/CourierOld/Assets/Code/UI/GameplayElements/MoneyBar.cs deleted file mode 100644 index 3cc4801..0000000 --- a/Game/CourierOld/Assets/Code/UI/GameplayElements/MoneyBar.cs +++ /dev/null @@ -1,16 +0,0 @@ -using TMPro; -using UnityEngine; - -namespace Code.UI.GameplayElements -{ - public class MoneyBar : MonoBehaviour - { - [SerializeField] private TMP_Text moneyText; - - public void MoneyUpdate(int count, int money) - { - // TODO Анимация получения\потери - moneyText.text = money.ToString(); - } - } -} \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/UI/GameplayElements/MoneyBar.cs.meta b/Game/CourierOld/Assets/Code/UI/GameplayElements/MoneyBar.cs.meta deleted file mode 100644 index 9961afe..0000000 --- a/Game/CourierOld/Assets/Code/UI/GameplayElements/MoneyBar.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 02373b82fefd4812ac1d6d97d65fc9f0 -timeCreated: 1761917491 \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/UI/GameplayPanel.cs b/Game/CourierOld/Assets/Code/UI/GameplayPanel.cs index 40e4da5..96f640b 100644 --- a/Game/CourierOld/Assets/Code/UI/GameplayPanel.cs +++ b/Game/CourierOld/Assets/Code/UI/GameplayPanel.cs @@ -1,5 +1,4 @@ using Code.Gameplay.Player; -using Code.UI.GameplayElements; using TMPro; using UnityEngine; using UnityEngine.UI; diff --git a/Game/CourierOld/Assets/Code/UI/IUIFactory.cs b/Game/CourierOld/Assets/Code/UI/IUIFactory.cs index 986f99f..9f20544 100644 --- a/Game/CourierOld/Assets/Code/UI/IUIFactory.cs +++ b/Game/CourierOld/Assets/Code/UI/IUIFactory.cs @@ -1,4 +1,3 @@ -using Code.UI.GameplayElements; using UnityEngine; namespace Code.UI diff --git a/Game/CourierOld/Assets/Resources/Configs/App/UIConfig.asset b/Game/CourierOld/Assets/Resources/Configs/App/UIConfig.asset index c363a8b..da67571 100644 --- a/Game/CourierOld/Assets/Resources/Configs/App/UIConfig.asset +++ b/Game/CourierOld/Assets/Resources/Configs/App/UIConfig.asset @@ -16,4 +16,5 @@ MonoBehaviour: - {fileID: 3884205628991346111, guid: f23b9fce9594618e5b75845f1cae50de, type: 3} - {fileID: 6346323538546406952, guid: c566fc932edefbbee9e53271eac3c560, type: 3} - {fileID: 1153528220012302015, guid: 23e11d2c8a4f12f4ea9a7a43d1118464, type: 3} + - {fileID: 1024894541486592765, guid: b2e8dc2aeb0311cd8a826b51cf8e94dc, type: 3} canvasPrefab: {fileID: 1289568913299077295, guid: 48aebfe8826dc0df79d047b5afbf8f5b, type: 3} diff --git a/Game/CourierOld/Assets/Resources/UI/GameOver.prefab b/Game/CourierOld/Assets/Resources/UI/GameOver.prefab new file mode 100644 index 0000000..fdfc510 --- /dev/null +++ b/Game/CourierOld/Assets/Resources/UI/GameOver.prefab @@ -0,0 +1,228 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7216240920911255732 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6611561882260570556} + - component: {fileID: 3854552811963077917} + - component: {fileID: 838910581382061681} + m_Layer: 5 + m_Name: GameOverText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6611561882260570556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7216240920911255732} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2606207159731526013} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3854552811963077917 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7216240920911255732} + m_CullTransparentMesh: 1 +--- !u!114 &838910581382061681 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7216240920911255732} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: GAMEOVER + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: a3ba170dcd95c5776a5c39de19dff119, type: 2} + m_sharedMaterial: {fileID: 8532510215145708138, guid: a3ba170dcd95c5776a5c39de19dff119, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 360 + m_fontSizeBase: 360 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8491848320201537683 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2606207159731526013} + - component: {fileID: 2416919790455574494} + - component: {fileID: 7415774796514587984} + - component: {fileID: 1024894541486592765} + m_Layer: 5 + m_Name: GameOver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2606207159731526013 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8491848320201537683} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6611561882260570556} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2416919790455574494 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8491848320201537683} + m_CullTransparentMesh: 1 +--- !u!114 &7415774796514587984 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8491848320201537683} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.69411767} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &1024894541486592765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8491848320201537683} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ecbe291069244405ac22e5470f3ba62b, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Code.UI.GameOverPanel + _background: {fileID: 7415774796514587984} diff --git a/Game/CourierOld/Assets/Resources/UI/GameOver.prefab.meta b/Game/CourierOld/Assets/Resources/UI/GameOver.prefab.meta new file mode 100644 index 0000000..bb81b8f --- /dev/null +++ b/Game/CourierOld/Assets/Resources/UI/GameOver.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b2e8dc2aeb0311cd8a826b51cf8e94dc +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: