mirror of
https://github.com/ryzij/Cube-Tower-Defense.git
synced 2026-07-14 10:06:58 +00:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 48c5daa91f | |||
| 761193089f | |||
| a9b985cfd4 |
+66
-24
@@ -2289,7 +2289,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 275.93143, y: -111.049545}
|
m_AnchoredPosition: {x: 265.00195, y: -120.02109}
|
||||||
m_SizeDelta: {x: 130, y: 130}
|
m_SizeDelta: {x: 130, y: 130}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &289746861
|
--- !u!114 &289746861
|
||||||
@@ -2336,7 +2336,7 @@ MonoBehaviour:
|
|||||||
m_OnClick:
|
m_OnClick:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls:
|
m_Calls:
|
||||||
- m_Target: {fileID: 473347667}
|
- m_Target: {fileID: 359661414}
|
||||||
m_TargetAssemblyTypeName: GameOverMenu, Assembly-CSharp
|
m_TargetAssemblyTypeName: GameOverMenu, Assembly-CSharp
|
||||||
m_MethodName: RestartGame
|
m_MethodName: RestartGame
|
||||||
m_Mode: 1
|
m_Mode: 1
|
||||||
@@ -2733,6 +2733,57 @@ Transform:
|
|||||||
m_CorrespondingSourceObject: {fileID: 5368672011475721328, guid: 8dd20c91f0d7a7b419f6bedcd1870cba, type: 3}
|
m_CorrespondingSourceObject: {fileID: 5368672011475721328, guid: 8dd20c91f0d7a7b419f6bedcd1870cba, type: 3}
|
||||||
m_PrefabInstance: {fileID: 352804702}
|
m_PrefabInstance: {fileID: 352804702}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1 &359661412
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 359661413}
|
||||||
|
- component: {fileID: 359661414}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: GameOverMenu
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &359661413
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 359661412}
|
||||||
|
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: 473347664}
|
||||||
|
m_Father: {fileID: 1678567591}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &359661414
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 359661412}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 79c22679605c9274ab2a50d6c80e2b19, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::GameOverMenu
|
||||||
|
_tower: {fileID: 1739395621}
|
||||||
|
_menuPanel: {fileID: 473347664}
|
||||||
--- !u!1001 &360688809
|
--- !u!1001 &360688809
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -3258,7 +3309,6 @@ GameObject:
|
|||||||
- component: {fileID: 473347664}
|
- component: {fileID: 473347664}
|
||||||
- component: {fileID: 473347666}
|
- component: {fileID: 473347666}
|
||||||
- component: {fileID: 473347665}
|
- component: {fileID: 473347665}
|
||||||
- component: {fileID: 473347667}
|
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: GameOverPanel
|
m_Name: GameOverPanel
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -3273,19 +3323,19 @@ RectTransform:
|
|||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 473347663}
|
m_GameObject: {fileID: 473347663}
|
||||||
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_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 1168350718}
|
- {fileID: 1168350718}
|
||||||
- {fileID: 2107886998}
|
- {fileID: 2107886998}
|
||||||
m_Father: {fileID: 1678567591}
|
m_Father: {fileID: 359661413}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 0, y: 0}
|
m_SizeDelta: {x: 1370.4474, y: 1052.4272}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &473347665
|
--- !u!114 &473347665
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@@ -3325,18 +3375,6 @@ CanvasRenderer:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 473347663}
|
m_GameObject: {fileID: 473347663}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
--- !u!114 &473347667
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 473347663}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 79c22679605c9274ab2a50d6c80e2b19, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::GameOverMenu
|
|
||||||
--- !u!1001 &477181437
|
--- !u!1001 &477181437
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -4188,6 +4226,7 @@ MonoBehaviour:
|
|||||||
_sandPathBuildService: {fileID: 305503}
|
_sandPathBuildService: {fileID: 305503}
|
||||||
_turretShop: {fileID: 1311268619}
|
_turretShop: {fileID: 1311268619}
|
||||||
_spawnDeathControl: {fileID: 694046010}
|
_spawnDeathControl: {fileID: 694046010}
|
||||||
|
_tower: {fileID: 1739395621}
|
||||||
--- !u!1 &645921916
|
--- !u!1 &645921916
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -6579,7 +6618,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 115.93143, y: -111.049545}
|
m_AnchoredPosition: {x: 105.00195, y: -120.02109}
|
||||||
m_SizeDelta: {x: 130, y: 130}
|
m_SizeDelta: {x: 130, y: 130}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1000965056
|
--- !u!114 &1000965056
|
||||||
@@ -6626,7 +6665,7 @@ MonoBehaviour:
|
|||||||
m_OnClick:
|
m_OnClick:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls:
|
m_Calls:
|
||||||
- m_Target: {fileID: 473347667}
|
- m_Target: {fileID: 359661414}
|
||||||
m_TargetAssemblyTypeName: GameOverMenu, Assembly-CSharp
|
m_TargetAssemblyTypeName: GameOverMenu, Assembly-CSharp
|
||||||
m_MethodName: MainMenu
|
m_MethodName: MainMenu
|
||||||
m_Mode: 1
|
m_Mode: 1
|
||||||
@@ -8116,7 +8155,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 1}
|
m_AnchorMin: {x: 0.5, y: 1}
|
||||||
m_AnchorMax: {x: 0.5, y: 1}
|
m_AnchorMax: {x: 0.5, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: -138}
|
m_AnchoredPosition: {x: 2.5155, y: -315}
|
||||||
m_SizeDelta: {x: 364.973, y: 93.34039}
|
m_SizeDelta: {x: 364.973, y: 93.34039}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1168350719
|
--- !u!114 &1168350719
|
||||||
@@ -11302,7 +11341,7 @@ RectTransform:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 1789632538}
|
- {fileID: 1789632538}
|
||||||
- {fileID: 844851690}
|
- {fileID: 844851690}
|
||||||
- {fileID: 473347664}
|
- {fileID: 359661413}
|
||||||
m_Father: {fileID: 424609984}
|
m_Father: {fileID: 424609984}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
@@ -11684,6 +11723,9 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 49451834470586d42a0a0039b348f818, type: 3}
|
m_Script: {fileID: 11500000, guid: 49451834470586d42a0a0039b348f818, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Tower
|
m_EditorClassIdentifier: Assembly-CSharp::Tower
|
||||||
|
_onGameOver:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
--- !u!4 &1739395622
|
--- !u!4 &1739395622
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -13354,8 +13396,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0.000061035156, y: 0}
|
||||||
m_SizeDelta: {x: -427.8111, y: -363.4996}
|
m_SizeDelta: {x: -1000.4435, y: -812.3851}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &2107886999
|
--- !u!114 &2107886999
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ public class Debugger : MonoBehaviour
|
|||||||
[SerializeField] private SandPathBuildService _sandPathBuildService;
|
[SerializeField] private SandPathBuildService _sandPathBuildService;
|
||||||
[SerializeField] private TurretsShop _turretShop;
|
[SerializeField] private TurretsShop _turretShop;
|
||||||
[SerializeField] private SpawnDeathEnemyController _spawnDeathControl;
|
[SerializeField] private SpawnDeathEnemyController _spawnDeathControl;
|
||||||
|
[SerializeField] private Tower _tower;
|
||||||
|
|
||||||
private void OnEnable()
|
private void OnEnable()
|
||||||
{
|
{
|
||||||
@@ -14,6 +15,7 @@ public class Debugger : MonoBehaviour
|
|||||||
_turretShop.OnTurretSelected += OnTurretSelected;
|
_turretShop.OnTurretSelected += OnTurretSelected;
|
||||||
_turretShop.OnTurretDeselected += OnTurretDeselected;
|
_turretShop.OnTurretDeselected += OnTurretDeselected;
|
||||||
_spawnDeathControl.OnLastEnemyDestroyed += OnLastEnemyDestroyed;
|
_spawnDeathControl.OnLastEnemyDestroyed += OnLastEnemyDestroyed;
|
||||||
|
_tower.OnGameOver += OnGameOver;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDisable()
|
private void OnDisable()
|
||||||
@@ -23,6 +25,7 @@ public class Debugger : MonoBehaviour
|
|||||||
_turretShop.OnTurretSelected -= OnTurretSelected;
|
_turretShop.OnTurretSelected -= OnTurretSelected;
|
||||||
_turretShop.OnTurretDeselected -= OnTurretDeselected;
|
_turretShop.OnTurretDeselected -= OnTurretDeselected;
|
||||||
_spawnDeathControl.OnLastEnemyDestroyed -= OnLastEnemyDestroyed;
|
_spawnDeathControl.OnLastEnemyDestroyed -= OnLastEnemyDestroyed;
|
||||||
|
_tower.OnGameOver -= OnGameOver;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void OnGameStateChanged(GameManager.GameState newState)
|
private static void OnGameStateChanged(GameManager.GameState newState)
|
||||||
@@ -49,4 +52,9 @@ public class Debugger : MonoBehaviour
|
|||||||
{
|
{
|
||||||
print("Last enemy destroyed");
|
print("Last enemy destroyed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnGameOver()
|
||||||
|
{
|
||||||
|
print("Game over");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+22
-1
@@ -1,14 +1,29 @@
|
|||||||
using System;
|
using System;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.Events;
|
||||||
|
|
||||||
[RequireComponent(typeof(TowerHealth))]
|
[RequireComponent(typeof(TowerHealth))]
|
||||||
public class Tower : MonoBehaviour
|
public class Tower : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
[SerializeField] private UnityEvent _onGameOver;
|
||||||
|
|
||||||
|
public event UnityAction OnGameOver
|
||||||
|
{
|
||||||
|
add => _onGameOver.AddListener(value);
|
||||||
|
remove => _onGameOver.RemoveListener(value);
|
||||||
|
}
|
||||||
|
|
||||||
private TowerHealth _towerHealth;
|
private TowerHealth _towerHealth;
|
||||||
|
|
||||||
private void Start()
|
private void OnEnable()
|
||||||
{
|
{
|
||||||
_towerHealth = GetComponent<TowerHealth>();
|
_towerHealth = GetComponent<TowerHealth>();
|
||||||
|
_towerHealth.OnHealthChanged += OnHealthChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
_towerHealth.OnHealthChanged -= OnHealthChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTriggerEnter(Collider other)
|
private void OnTriggerEnter(Collider other)
|
||||||
@@ -16,4 +31,10 @@ public class Tower : MonoBehaviour
|
|||||||
if (other.TryGetComponent(out Enemy enemy))
|
if (other.TryGetComponent(out Enemy enemy))
|
||||||
_towerHealth.TakeDamage(enemy.Damage);
|
_towerHealth.TakeDamage(enemy.Damage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnHealthChanged(TowerHealth.OnHealthChangedEventArgs args)
|
||||||
|
{
|
||||||
|
if (args.CurrentHealth <= 0)
|
||||||
|
_onGameOver?.Invoke();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public class TowerHealth : MonoBehaviour
|
|||||||
add => _onHealthChanged.AddListener(value);
|
add => _onHealthChanged.AddListener(value);
|
||||||
remove => _onHealthChanged.RemoveListener(value);
|
remove => _onHealthChanged.RemoveListener(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public float MaxHealth
|
public float MaxHealth
|
||||||
{
|
{
|
||||||
get => _maxHealth;
|
get => _maxHealth;
|
||||||
@@ -47,10 +47,6 @@ public class TowerHealth : MonoBehaviour
|
|||||||
public void TakeDamage(float damage)
|
public void TakeDamage(float damage)
|
||||||
{
|
{
|
||||||
CurrentHealth -= damage;
|
CurrentHealth -= damage;
|
||||||
|
|
||||||
// TODO: доделать проигрыш
|
|
||||||
if (CurrentHealth <= 0)
|
|
||||||
Debug.Log("Game over");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class OnHealthChangedEventArgs : EventArgs
|
public class OnHealthChangedEventArgs : EventArgs
|
||||||
|
|||||||
@@ -3,13 +3,34 @@ using UnityEngine.SceneManagement;
|
|||||||
|
|
||||||
public class GameOverMenu : MonoBehaviour
|
public class GameOverMenu : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
[SerializeField] private Tower _tower;
|
||||||
|
[SerializeField] private Transform _menuPanel;
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
_tower.OnGameOver += OnGameOver;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
_tower.OnGameOver -= OnGameOver;
|
||||||
|
}
|
||||||
|
|
||||||
public void RestartGame()
|
public void RestartGame()
|
||||||
{
|
{
|
||||||
|
Time.timeScale = 1f;
|
||||||
SceneManager.LoadScene("Island");
|
SceneManager.LoadScene("Island");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MainMenu()
|
public void MainMenu()
|
||||||
{
|
{
|
||||||
|
Time.timeScale = 1f;
|
||||||
SceneManager.LoadScene("MainMenu");
|
SceneManager.LoadScene("MainMenu");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnGameOver()
|
||||||
|
{
|
||||||
|
Time.timeScale = 0f;
|
||||||
|
_menuPanel.gameObject.SetActive(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user