diff --git a/Assets/Resources/1/Animation/Character/TestController.controller b/Assets/Resources/1/Animation/Character/TestController.controller index 5c07dd24..be7f372f 100644 --- a/Assets/Resources/1/Animation/Character/TestController.controller +++ b/Assets/Resources/1/Animation/Character/TestController.controller @@ -352,6 +352,9 @@ AnimatorStateMachine: - serializedVersion: 1 m_State: {fileID: 9222683897014232595} m_Position: {x: 490, y: 330, z: 0} + - serializedVersion: 1 + m_State: {fileID: -1414219465498408593} + m_Position: {x: 70, y: -10, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: - {fileID: -4341192428833849287} @@ -386,6 +389,32 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1102 &-1414219465498408593 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New State + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 5badc0a8e5470a8499375c487e54213d, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!91 &9100000 AnimatorController: m_ObjectHideFlags: 0 @@ -400,49 +429,55 @@ AnimatorController: m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 9100000} + m_Controller: {fileID: 0} - m_Name: BackToIdle m_Type: 9 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 9100000} + m_Controller: {fileID: 0} - m_Name: Build m_Type: 9 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 9100000} + m_Controller: {fileID: 0} - m_Name: TreeAttack m_Type: 9 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 9100000} + m_Controller: {fileID: 0} - m_Name: Move m_Type: 9 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 9100000} + m_Controller: {fileID: 0} - m_Name: SuperJump m_Type: 9 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 9100000} + m_Controller: {fileID: 0} - m_Name: Frozen m_Type: 9 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 9100000} + m_Controller: {fileID: 0} - m_Name: isMoving m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 9100000} + m_Controller: {fileID: 0} + - m_Name: Death + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 0} m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer @@ -456,6 +491,31 @@ AnimatorController: m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} +--- !u!1101 &166200867799722436 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Death + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -1414219465498408593} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.53125 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1101 &354894258193955894 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -805,6 +865,7 @@ AnimatorState: - {fileID: 1079191915755825572} - {fileID: -7864811333266388210} - {fileID: -9016822592688904379} + - {fileID: 166200867799722436} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 diff --git a/Assets/Resources/1/Character/Prefab/Ariost.prefab b/Assets/Resources/1/Character/Prefab/Ariost.prefab index c199f98d..a441068f 100644 --- a/Assets/Resources/1/Character/Prefab/Ariost.prefab +++ b/Assets/Resources/1/Character/Prefab/Ariost.prefab @@ -1668,7 +1668,7 @@ Animator: m_GameObject: {fileID: 3762867976042010436} m_Enabled: 1 m_Avatar: {fileID: 0} - m_Controller: {fileID: 9100000, guid: 6c6726efa8f26a44c89dbcc255bf46f9, type: 2} + m_Controller: {fileID: 9100000, guid: 9e1a6090cd4d65d4599676c24fcb5cff, type: 2} m_CullingMode: 0 m_UpdateMode: 0 m_ApplyRootMotion: 0 diff --git a/Assets/Resources/Data/Data.asset b/Assets/Resources/Data/Data.asset index 1d8d15a4..e75bc996 100644 --- a/Assets/Resources/Data/Data.asset +++ b/Assets/Resources/Data/Data.asset @@ -14,6 +14,6 @@ MonoBehaviour: m_EditorClassIdentifier: fieldDataPath: FieldData cameraDataPath: CameraData - playerDataPath: PlayerData + unitDataPath: UnitsData weaponDataPath: WeaponsData - enemyDataPath: EnemyData + uiDataPath: UIData diff --git a/Assets/Resources/Data/FieldData.asset b/Assets/Resources/Data/FieldData.asset index 769da4ea..5b978a42 100644 --- a/Assets/Resources/Data/FieldData.asset +++ b/Assets/Resources/Data/FieldData.asset @@ -40,3 +40,7 @@ MonoBehaviour: _texture: {fileID: 2800000, guid: 1a76a79d5a83143479c76f4f37c4b896, type: 3} _vfxPrefab: {fileID: 5732852186060375560, guid: 54d847a18c62f57479c53469d4398ceb, type: 3} + - _unitColor: 4 + _texture: {fileID: 2800000, guid: 779719648deedb4478ddebb3b81751ef, type: 3} + _vfxPrefab: {fileID: 1651852338557341938, guid: fa6c1fc3da7c8d24c85a88b00cf598d4, + type: 3} diff --git a/Assets/Resources/Data/PlayerData.asset b/Assets/Resources/Data/UIData.asset similarity index 58% rename from Assets/Resources/Data/PlayerData.asset rename to Assets/Resources/Data/UIData.asset index 8f6ae9d0..519feec9 100644 --- a/Assets/Resources/Data/PlayerData.asset +++ b/Assets/Resources/Data/UIData.asset @@ -9,17 +9,8 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2d46325a4e4e45338d7e9733fb8d6013, type: 3} - m_Name: PlayerData + m_Script: {fileID: 11500000, guid: d802c0065ac04effbd7685b3eddc7574, type: 3} + m_Name: UIData m_EditorClassIdentifier: - spawnPos: - x: 7 - z: 8 - playerPrefab: {fileID: 7527582019267571087, guid: f102085e8bc4cad4992d43b84dee1055, - type: 3} joystickView: {fileID: 4385872142190176059, guid: 4df6913b39f4979429158c344680d83f, type: 3} - color: 3 - manaRegen: 10 - maxMana: 100 - maxHP: 100 diff --git a/Assets/Resources/Data/PlayerData.asset.meta b/Assets/Resources/Data/UIData.asset.meta similarity index 79% rename from Assets/Resources/Data/PlayerData.asset.meta rename to Assets/Resources/Data/UIData.asset.meta index 92fa302a..9cb2d61c 100644 --- a/Assets/Resources/Data/PlayerData.asset.meta +++ b/Assets/Resources/Data/UIData.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fd53832b22ec4e74690abaff5d2df858 +guid: 304619b28daaa9849806b3cbd0b76bee NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/Resources/Data/UnitsData.asset b/Assets/Resources/Data/UnitsData.asset new file mode 100644 index 00000000..ea3c4729 --- /dev/null +++ b/Assets/Resources/Data/UnitsData.asset @@ -0,0 +1,45 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d46325a4e4e45338d7e9733fb8d6013, type: 3} + m_Name: UnitsData + m_EditorClassIdentifier: + _units: + - isPlayer: 1 + spawnPos: + x: 9 + z: 10 + unitPrefa: {fileID: 7527582019267571087, guid: f102085e8bc4cad4992d43b84dee1055, + type: 3} + color: 3 + manaRegen: 10 + maxMana: 100 + maxHP: 100 + - isPlayer: 0 + spawnPos: + x: 0 + z: 0 + unitPrefa: {fileID: 3762867976042010436, guid: d00f156879942114488e4db0689a3fb7, + type: 3} + color: 4 + manaRegen: 10 + maxMana: 100 + maxHP: 100 + - isPlayer: 0 + spawnPos: + x: 3 + z: 10 + unitPrefa: {fileID: 742650227762578155, guid: 97b4a76c55741764e880b63d6e1514a9, + type: 3} + color: 0 + manaRegen: 10 + maxMana: 100 + maxHP: 100 diff --git a/Assets/Resources/Data/UnitsData.asset.meta b/Assets/Resources/Data/UnitsData.asset.meta new file mode 100644 index 00000000..bce8fbb9 --- /dev/null +++ b/Assets/Resources/Data/UnitsData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ee407bd2eae9bbf4d9d40a8ac08462e6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Chars/Enemy.cs b/Assets/Scripts/Chars/Enemy.cs deleted file mode 100644 index e1bd3d53..00000000 --- a/Assets/Scripts/Chars/Enemy.cs +++ /dev/null @@ -1,125 +0,0 @@ -using Data; -using DG.Tweening; -using HexFiled; -using UnityEngine; - -namespace Chars -{ - public class Enemy : IUnit - { - - private EnemyInfo _data; - private HexCell _cell; - private HexGrid _grid; - private GameObject _instance; - private bool _isAlive; - private UnitView _unitView; - private bool _isBusy; - private Animator _animator; - private AnimLength _animLength; - private BarCanvas _barCanvas; - private float _mana; - private float _hp; - - public UnitView EnemyView => _unitView; - public bool IsBusy => _isBusy; - - public Enemy(EnemyInfo enemyInfo, HexGrid grid) - { - _data = enemyInfo; - _grid = grid; - _isAlive = false; - } - public void Move(HexDirection direction) - { - if (_cell.GetNeighbor(direction)) - { - _isBusy = true; - _cell = _cell.GetNeighbor(direction); - _instance.transform.DOLookAt(_cell.transform.position, 0.1f); - _animator.SetTrigger("Move"); - _animator.SetBool("isMoving", _isBusy); - _instance.transform.DOMove(_cell.transform.position, _animLength.Move); - } - } - - private void SetAnimLength() - { - AnimationClip[] clips = _animator.runtimeAnimatorController.animationClips; - foreach (var clip in clips) - { - switch (clip.name) - { - case "MoveJump": - _animLength.Move = clip.length; - break; - case "Attack": - _animLength.Attack = clip.length; - break; - default: - break; - } - } - } - - private void UpdateCanvas() - { - if (_hp > _data.maxHP) - _hp = _data.maxHP; - if (_mana > _data.maxMana) - _mana = _data.maxMana; - - float hp = _hp; - float mana = _mana; - float maxHp = _data.maxHP; - float maxMana = _data.maxMana; - _barCanvas.ManaBar.DOFillAmount(mana / maxMana, 0.5f).SetEase(Ease.InQuad); - _barCanvas.HealthBar.DOFillAmount(hp / maxHp, 0.5f).SetEase(Ease.InQuad); - } - - public void Spawn() - { - if(!_isAlive) - { - _cell = _grid.GetCellFromCoord(_data.spawnPos); - _instance = Object.Instantiate(_data.playerPrefab, _cell.transform.parent); - _instance.transform.localPosition = _cell.transform.localPosition; - _cell.PaintHex(_data.color); - for (int i = 0; i < 6; i++) - { - _cell.GetNeighbor((HexDirection)i).PaintHex(_data.color); - } - - _isAlive = true; - _unitView = _instance.GetComponent(); - _animator = _instance.GetComponent(); - _barCanvas = _unitView.BarCanvas.GetComponent(); - _hp = _data.maxHP; - _mana = _data.maxMana; - SetAnimLength(); - SetUpActions(); - } - } - - private void SetUpActions() - { - _unitView.OnHit += Damage; - } - public void Death() - { - throw new System.NotImplementedException(); - } - - public void StartAttack(Vector2 direction) - { - throw new System.NotImplementedException(); - } - - - public void Damage(int dmg) - { - _hp -= dmg; - UpdateCanvas(); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/Chars/Enemy.cs.meta b/Assets/Scripts/Chars/Enemy.cs.meta deleted file mode 100644 index d3bb9aa3..00000000 --- a/Assets/Scripts/Chars/Enemy.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 0a9b8eff7bb74f8ca38e1d6d8e9a2757 -timeCreated: 1639488978 \ No newline at end of file diff --git a/Assets/Scripts/Chars/IUnit.cs b/Assets/Scripts/Chars/IUnit.cs deleted file mode 100644 index ed07aac7..00000000 --- a/Assets/Scripts/Chars/IUnit.cs +++ /dev/null @@ -1,15 +0,0 @@ - -using HexFiled; -using UnityEngine; - -namespace Chars -{ - public interface IUnit - { - public void Move(HexDirection direction); - public void Spawn(); - public void Death(); - public void StartAttack(Vector2 direction); - public void Damage(int dmg); - } -} \ No newline at end of file diff --git a/Assets/Scripts/Chars/IUnit.cs.meta b/Assets/Scripts/Chars/IUnit.cs.meta deleted file mode 100644 index ec9be9d6..00000000 --- a/Assets/Scripts/Chars/IUnit.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 478a54a7aa274988b997c4f96761e5e4 -timeCreated: 1639488877 \ No newline at end of file diff --git a/Assets/Scripts/Controller/GameInit.cs b/Assets/Scripts/Controller/GameInit.cs index 9a7a9a46..aa426836 100644 --- a/Assets/Scripts/Controller/GameInit.cs +++ b/Assets/Scripts/Controller/GameInit.cs @@ -3,6 +3,7 @@ using CamControl; using Chars; using Data; using HexFiled; +using Units; using UnityEngine; namespace Controller @@ -14,27 +15,36 @@ namespace Controller var hexGrid = new HexGrid(data.FieldData); controllers.Add(hexGrid); hexGrid.OnHexPainted += DoSomething; - - Player player = new Player(data.PlayerData, data.WeaponsData.WeaponsList[0], hexGrid); - List units = new List { player }; - data.EnemyData.Enemies.ForEach(enemyInfo => + Unit player; + + List units = new List(); + data.UnitData.Units.ForEach(unit => { - var enemy = new Enemy(enemyInfo, hexGrid); - var enemyController = new EnemyController(enemyInfo, enemy); - controllers.Add(enemyController); - units.Add(enemy); + if (unit.isPlayer) + { + player = new Unit(unit, data.WeaponsData.WeaponsList[0], hexGrid); + PlayerControl playerControl = new PlayerControl(player, data.UIData); + controllers.Add(playerControl); + CameraControl cameraControl = + new CameraControl(Camera.main, data.CameraData); + controllers.Add(cameraControl); + player.onPlayerSpawned += cameraControl.InitCameraControl; + units.Add(player); + } + else + { + var enemy = new Unit(unit,data.WeaponsData.WeaponsList[0], hexGrid); + var enemyController = new EnemyController(unit, enemy); + controllers.Add(enemyController); + units.Add(enemy); + } + }); var unitFactory = new UnitFactory(units); hexGrid.OnGridLoaded += unitFactory.Spawn; - - PlayerControl playerControl = new PlayerControl(player, data.PlayerData); - controllers.Add(playerControl); - - CameraControl cameraControl = - new CameraControl(Camera.main, data.CameraData); - controllers.Add(cameraControl); - player.onPlayerSpawned += cameraControl.InitCameraControl; + + } private void DoSomething(HexCell cell) { diff --git a/Assets/Scripts/Data/Data.cs b/Assets/Scripts/Data/Data.cs index f442655b..e65d6d15 100644 --- a/Assets/Scripts/Data/Data.cs +++ b/Assets/Scripts/Data/Data.cs @@ -1,7 +1,6 @@ using System.IO; using Chars; using DefaultNamespace.Weapons; -using Runtime.Data; using UnityEngine; namespace Data @@ -13,26 +12,29 @@ namespace Data private FieldData _fieldData; [SerializeField] private string cameraDataPath; private CameraData _cameraData; - [SerializeField] private string playerDataPath; - private PlayerData _playerData; + [SerializeField] private string unitDataPath; + private UnitData _unitData; [SerializeField] private string weaponDataPath; private WeaponsData _weaponData; - [SerializeField] private string enemyDataPath; - private EnemyData _enemyData; + + [SerializeField] private string uiDataPath; + private UIData _uiData; - public EnemyData EnemyData + + public UIData UIData { get { - if (_enemyData == null) + if (_uiData == null) { - _enemyData = Load("Data/" + enemyDataPath); + _uiData = Load("Data/" + uiDataPath); } - return _enemyData; + return _uiData; } } + public WeaponsData WeaponsData { get @@ -71,16 +73,16 @@ namespace Data } } - public PlayerData PlayerData + public UnitData UnitData { get { - if (_playerData == null) + if (_unitData == null) { - _playerData = Load("Data/" + playerDataPath); + _unitData = Load("Data/" + unitDataPath); } - return _playerData; + return _unitData; } } diff --git a/Assets/Scripts/Data/EnemyData.cs b/Assets/Scripts/Data/EnemyData.cs deleted file mode 100644 index edf75e21..00000000 --- a/Assets/Scripts/Data/EnemyData.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using HexFiled; -using UnityEngine; - -namespace Data -{ - [CreateAssetMenu(fileName = "EnemyData", menuName = "Data/EnemyData", order = 0)] - public class EnemyData : ScriptableObject - { - [SerializeField] private List _enemies; - public List Enemies => _enemies; - } - - [Serializable] - public struct EnemyInfo - { - public HexCoordinates spawnPos; - public GameObject playerPrefab; - public UnitColor color; - public int maxHP; - public int maxMana; - public int manaRegen; - } -} \ No newline at end of file diff --git a/Assets/Scripts/Data/EnemyData.cs.meta b/Assets/Scripts/Data/EnemyData.cs.meta deleted file mode 100644 index 01afe0f4..00000000 --- a/Assets/Scripts/Data/EnemyData.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: a68fdab0e3dd421d93555195f3a2bd5b -timeCreated: 1640183173 \ No newline at end of file diff --git a/Assets/Scripts/Data/FieldData.cs b/Assets/Scripts/Data/FieldData.cs index bb4a0913..897ce402 100644 --- a/Assets/Scripts/Data/FieldData.cs +++ b/Assets/Scripts/Data/FieldData.cs @@ -2,23 +2,19 @@ using HexFiled; using TMPro; using UnityEngine; -using UnityEngine.UI; -namespace Runtime.Data +namespace Data { [CreateAssetMenu(fileName = "FieldData", menuName = "Data/Field Data")] public class FieldData : ScriptableObject { public int width = 6; public int height = 6; - public Color defaultColor = Color.white; - public Color touchedColor = Color.magenta; public int hexCaptureManaCost; public GameObject cellPrefab; public TMP_Text cellLabelPrefab; public GameObject CoordinatesCanvas; - public Texture DefaultTexture; public List colors; } } \ No newline at end of file diff --git a/Assets/Scripts/Data/PlayerData.cs b/Assets/Scripts/Data/PlayerData.cs deleted file mode 100644 index 2ee417bf..00000000 --- a/Assets/Scripts/Data/PlayerData.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Chars; -using HexFiled; -using UnityEngine; - -namespace Data -{ - [CreateAssetMenu(fileName = "PlayerData", menuName = "Data/PlayerData", order = 0)] - public class PlayerData : ScriptableObject - { - public HexCoordinates spawnPos; - public GameObject playerPrefab; - public PlayerControlView joystickView; - public UnitColor color; - public int manaRegen; - public int maxMana; - public int maxHP; - } -} \ No newline at end of file diff --git a/Assets/Scripts/Data/UIData.cs b/Assets/Scripts/Data/UIData.cs new file mode 100644 index 00000000..3ef283ee --- /dev/null +++ b/Assets/Scripts/Data/UIData.cs @@ -0,0 +1,11 @@ +using Chars; +using UnityEngine; + +namespace Data +{ + [CreateAssetMenu(fileName = "UIData", menuName = "Data/UI Data", order = 0)] + public class UIData : ScriptableObject + { + public PlayerControlView joystickView; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Data/UIData.cs.meta b/Assets/Scripts/Data/UIData.cs.meta new file mode 100644 index 00000000..c0d90ff2 --- /dev/null +++ b/Assets/Scripts/Data/UIData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d802c0065ac04effbd7685b3eddc7574 +timeCreated: 1640399053 \ No newline at end of file diff --git a/Assets/Scripts/Data/UnitData.cs b/Assets/Scripts/Data/UnitData.cs new file mode 100644 index 00000000..68e5c0c1 --- /dev/null +++ b/Assets/Scripts/Data/UnitData.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using Chars; +using HexFiled; +using UnityEngine; + +namespace Data +{ + [CreateAssetMenu(fileName = "UnitData", menuName = "Data/UnitData", order = 0)] + public class UnitData : ScriptableObject + { + [SerializeField] private List _units; + + public List Units => _units; + } + + [Serializable] + public struct UnitInfo + { + public bool isPlayer; + public HexCoordinates spawnPos; + public GameObject unitPrefa; + public UnitColor color; + public int manaRegen; + public int maxMana; + public int maxHP; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Data/PlayerData.cs.meta b/Assets/Scripts/Data/UnitData.cs.meta similarity index 100% rename from Assets/Scripts/Data/PlayerData.cs.meta rename to Assets/Scripts/Data/UnitData.cs.meta diff --git a/Assets/Scripts/Data/WeaponsData.cs b/Assets/Scripts/Data/WeaponsData.cs index 3e5df4e1..70988dbb 100644 --- a/Assets/Scripts/Data/WeaponsData.cs +++ b/Assets/Scripts/Data/WeaponsData.cs @@ -1,7 +1,7 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using UnityEditor; using UnityEngine; +using Weapons; namespace DefaultNamespace.Weapons { @@ -13,17 +13,4 @@ namespace DefaultNamespace.Weapons public List WeaponsList => _weapons; } - - [Serializable] - public struct Weapon - { - public GameObject objectToThrow; - public GameObject VFXGameObject; - public int manaCost; - public int damage; - public float speed; - public int disnatce; - public float reloadTime; - public int shots; - } } \ No newline at end of file diff --git a/Assets/Scripts/HexFiled/HexGrid.cs b/Assets/Scripts/HexFiled/HexGrid.cs index 5dad4833..e4a3ecdb 100644 --- a/Assets/Scripts/HexFiled/HexGrid.cs +++ b/Assets/Scripts/HexFiled/HexGrid.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; +using Data; using Runtime.Controller; -using Runtime.Data; using TMPro; using UnityEngine; using Object = UnityEngine.Object; diff --git a/Assets/Scripts/HexFiled/UnitColor.cs b/Assets/Scripts/HexFiled/UnitColor.cs index 5dd4f04d..3d3fdc5d 100644 --- a/Assets/Scripts/HexFiled/UnitColor.cs +++ b/Assets/Scripts/HexFiled/UnitColor.cs @@ -5,6 +5,7 @@ GREEN, RED, GREY, - YELLOW + YELLOW, + BLUE } } \ No newline at end of file diff --git a/Assets/Scripts/Chars.meta b/Assets/Scripts/Units.meta similarity index 100% rename from Assets/Scripts/Chars.meta rename to Assets/Scripts/Units.meta diff --git a/Assets/Scripts/Chars/AnimLength.cs b/Assets/Scripts/Units/AnimLength.cs similarity index 100% rename from Assets/Scripts/Chars/AnimLength.cs rename to Assets/Scripts/Units/AnimLength.cs diff --git a/Assets/Scripts/Chars/AnimLength.cs.meta b/Assets/Scripts/Units/AnimLength.cs.meta similarity index 100% rename from Assets/Scripts/Chars/AnimLength.cs.meta rename to Assets/Scripts/Units/AnimLength.cs.meta diff --git a/Assets/Scripts/Chars/EnemyController.cs b/Assets/Scripts/Units/EnemyController.cs similarity index 63% rename from Assets/Scripts/Chars/EnemyController.cs rename to Assets/Scripts/Units/EnemyController.cs index 6eaeb4af..7e90c458 100644 --- a/Assets/Scripts/Chars/EnemyController.cs +++ b/Assets/Scripts/Units/EnemyController.cs @@ -1,16 +1,17 @@ using Controller; using Data; using Runtime.Controller; +using Units; using UnityEngine; namespace Chars { public class EnemyController : IFixedExecute, IExecute { - private Enemy _enemy; + private Unit _enemy; private Camera _camera; - public EnemyController(EnemyInfo enemyInfo, Enemy enemy) + public EnemyController(UnitInfo enemyInfo, Unit enemy) { _enemy = enemy; _camera = Camera.main; @@ -24,10 +25,10 @@ namespace Chars public void Execute() { - if (_enemy.EnemyView != null) + if (_enemy.UnitView != null) { - _enemy.EnemyView.BarCanvas.transform.LookAt( - _enemy.EnemyView.BarCanvas.transform.position + _camera.transform.rotation * Vector3.back, + _enemy.UnitView.BarCanvas.transform.LookAt( + _enemy.UnitView.BarCanvas.transform.position + _camera.transform.rotation * Vector3.back, _camera.transform.rotation * Vector3.up); } } diff --git a/Assets/Scripts/Chars/EnemyController.cs.meta b/Assets/Scripts/Units/EnemyController.cs.meta similarity index 100% rename from Assets/Scripts/Chars/EnemyController.cs.meta rename to Assets/Scripts/Units/EnemyController.cs.meta diff --git a/Assets/Scripts/Chars/PlayerControl.cs b/Assets/Scripts/Units/PlayerControl.cs similarity index 71% rename from Assets/Scripts/Chars/PlayerControl.cs rename to Assets/Scripts/Units/PlayerControl.cs index 98df7c10..03132c1e 100644 --- a/Assets/Scripts/Chars/PlayerControl.cs +++ b/Assets/Scripts/Units/PlayerControl.cs @@ -3,6 +3,7 @@ using Controller; using Data; using HexFiled; using Runtime.Controller; +using Units; using UnityEngine; using Object = UnityEngine.Object; @@ -10,17 +11,17 @@ namespace Chars { public class PlayerControl : IFixedExecute, IExecute { - private Player _player; + private Unit _unit; private FloatingJoystick _moveJoystick; private FloatingJoystick _attackJoystick; private Camera _camera; private Vector2 _attackDircetion; - public PlayerControl(Player player, PlayerData playerData) + public PlayerControl(Unit unit, UIData uiData) { - _player = player; - var joyView = Object.Instantiate(playerData.joystickView); + _unit = unit; + var joyView = Object.Instantiate(uiData.joystickView); _moveJoystick = joyView.MoveJoystick; _attackJoystick = joyView.AttackJoystick; _camera = Camera.main; @@ -30,26 +31,26 @@ namespace Chars private void DoAttack() { - _player.UnitView.AimCanvas.SetActive(false); - _player.StartAttack(_attackDircetion); + _unit.UnitView.AimCanvas.SetActive(false); + _unit.StartAttack(_attackDircetion); } private void AimCanvas() { - _player.UnitView.AimCanvas.SetActive(true); + _unit.UnitView.AimCanvas.SetActive(true); } public void FixedExecute() { - if (!_player.IsBusy && _moveJoystick.Direction != Vector2.zero) + if (!_unit.IsBusy && _moveJoystick.Direction != Vector2.zero) { - _player.Move(VectorToDirection(_moveJoystick.Direction.normalized)); + _unit.Move(VectorToDirection(_moveJoystick.Direction.normalized)); } - if (!_player.IsBusy && _attackJoystick.isPressed) + if (!_unit.IsBusy && _attackJoystick.isPressed) { _attackDircetion = _attackJoystick.Direction.normalized; - _player.Aim(_attackDircetion); + _unit.Aim(_attackDircetion); } } @@ -92,10 +93,10 @@ namespace Chars public void Execute() { - if (_player.UnitView != null) + if (_unit.UnitView != null) { - _player.UnitView.BarCanvas.transform.LookAt( - _player.UnitView.BarCanvas.transform.position + _camera.transform.rotation * Vector3.back, + _unit.UnitView.BarCanvas.transform.LookAt( + _unit.UnitView.BarCanvas.transform.position + _camera.transform.rotation * Vector3.back, _camera.transform.rotation * Vector3.up); } } diff --git a/Assets/Scripts/Chars/PlayerControl.cs.meta b/Assets/Scripts/Units/PlayerControl.cs.meta similarity index 100% rename from Assets/Scripts/Chars/PlayerControl.cs.meta rename to Assets/Scripts/Units/PlayerControl.cs.meta diff --git a/Assets/Scripts/Chars/Player.cs b/Assets/Scripts/Units/Unit.cs similarity index 88% rename from Assets/Scripts/Chars/Player.cs rename to Assets/Scripts/Units/Unit.cs index cc4b2528..e7c34547 100644 --- a/Assets/Scripts/Chars/Player.cs +++ b/Assets/Scripts/Units/Unit.cs @@ -1,17 +1,16 @@ using System; -using System.Collections; -using System.Collections.Generic; +using Chars; using Data; -using DefaultNamespace.Weapons; using DG.Tweening; using HexFiled; using UnityEngine; +using Weapons; using Object = UnityEngine.Object; -namespace Chars +namespace Units { - public class Player : IUnit + public class Unit { private bool _isAlive; private GameObject _instance; @@ -23,7 +22,7 @@ namespace Chars private Animator _animator; private UnitView _unitView; private bool _isBusy; - private PlayerData _data; + private UnitInfo _data; private int _hp; private int _mana; private Weapon _weapon; @@ -35,10 +34,10 @@ namespace Chars public GameObject PlayerInstance => _instance; public UnitView UnitView => _unitView; - public Player(PlayerData playerData, Weapon weapon, HexGrid hexGrid) + public Unit(UnitInfo unitData, Weapon weapon, HexGrid hexGrid) { _weapon = weapon; - _data = playerData; + _data = unitData; _isAlive = false; _hexGrid = hexGrid; _isBusy = false; @@ -97,10 +96,10 @@ namespace Chars _cell.PaintHex(_data.color); for (int i = 0; i < 6; i++) { - _cell.GetNeighbor((HexDirection)i).PaintHex(_data.color); + _cell.GetNeighbor((HexDirection)i)?.PaintHex(_data.color); } - _instance = Object.Instantiate(_data.playerPrefab, _cell.transform.parent); + _instance = Object.Instantiate(_data.unitPrefa, _cell.transform.parent); _instance.transform.localPosition = _cell.transform.localPosition; onPlayerSpawned?.Invoke(_instance); _isAlive = true; @@ -171,9 +170,15 @@ namespace Chars _barCanvas.HealthBar.DOFillAmount(hp / maxHp, 0.5f).SetEase(Ease.InQuad); } - public void Death() + private void Death() { - throw new NotImplementedException(); + _unitView.OnStep -= MoveEnd; + _unitView.OnAttackEnd -= AttackEnd; + _unitView.OnAttack -= Attacking; + _unitView.OnHit -= Damage; + _isAlive = false; + _animator.SetTrigger("Death"); + } @@ -192,7 +197,7 @@ namespace Chars _direction = direction; } - public void Damage(int dmg) + private void Damage(int dmg) { if (_hp - dmg <= 0f) { @@ -200,6 +205,7 @@ namespace Chars } _hp -= dmg; + UpdateBarCanvas(); } } } \ No newline at end of file diff --git a/Assets/Scripts/Chars/Player.cs.meta b/Assets/Scripts/Units/Unit.cs.meta similarity index 100% rename from Assets/Scripts/Chars/Player.cs.meta rename to Assets/Scripts/Units/Unit.cs.meta diff --git a/Assets/Scripts/Chars/UnitFactory.cs b/Assets/Scripts/Units/UnitFactory.cs similarity index 72% rename from Assets/Scripts/Chars/UnitFactory.cs rename to Assets/Scripts/Units/UnitFactory.cs index 1fea1234..1520c4cb 100644 --- a/Assets/Scripts/Chars/UnitFactory.cs +++ b/Assets/Scripts/Units/UnitFactory.cs @@ -1,12 +1,13 @@ using System.Collections.Generic; +using Units; namespace Chars { public class UnitFactory { - private List _units; + private List _units; - public UnitFactory(List units) + public UnitFactory(List units) { _units = units; } diff --git a/Assets/Scripts/Chars/UnitFactory.cs.meta b/Assets/Scripts/Units/UnitFactory.cs.meta similarity index 100% rename from Assets/Scripts/Chars/UnitFactory.cs.meta rename to Assets/Scripts/Units/UnitFactory.cs.meta diff --git a/Assets/Scripts/Units/Views.meta b/Assets/Scripts/Units/Views.meta new file mode 100644 index 00000000..079375d6 --- /dev/null +++ b/Assets/Scripts/Units/Views.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 26981711fd264680885d637f6f9122bf +timeCreated: 1640398702 \ No newline at end of file diff --git a/Assets/BarCanvas.cs b/Assets/Scripts/Units/Views/BarCanvas.cs similarity index 100% rename from Assets/BarCanvas.cs rename to Assets/Scripts/Units/Views/BarCanvas.cs diff --git a/Assets/BarCanvas.cs.meta b/Assets/Scripts/Units/Views/BarCanvas.cs.meta similarity index 100% rename from Assets/BarCanvas.cs.meta rename to Assets/Scripts/Units/Views/BarCanvas.cs.meta diff --git a/Assets/Scripts/Chars/PlayerControlView.cs b/Assets/Scripts/Units/Views/PlayerControlView.cs similarity index 100% rename from Assets/Scripts/Chars/PlayerControlView.cs rename to Assets/Scripts/Units/Views/PlayerControlView.cs diff --git a/Assets/Scripts/Chars/PlayerControlView.cs.meta b/Assets/Scripts/Units/Views/PlayerControlView.cs.meta similarity index 100% rename from Assets/Scripts/Chars/PlayerControlView.cs.meta rename to Assets/Scripts/Units/Views/PlayerControlView.cs.meta diff --git a/Assets/ShotUIView.cs b/Assets/Scripts/Units/Views/ShotUIView.cs similarity index 100% rename from Assets/ShotUIView.cs rename to Assets/Scripts/Units/Views/ShotUIView.cs diff --git a/Assets/ShotUIView.cs.meta b/Assets/Scripts/Units/Views/ShotUIView.cs.meta similarity index 100% rename from Assets/ShotUIView.cs.meta rename to Assets/Scripts/Units/Views/ShotUIView.cs.meta diff --git a/Assets/UnitView.cs b/Assets/Scripts/Units/Views/UnitView.cs similarity index 85% rename from Assets/UnitView.cs rename to Assets/Scripts/Units/Views/UnitView.cs index cf26b1ac..888afd06 100644 --- a/Assets/UnitView.cs +++ b/Assets/Scripts/Units/Views/UnitView.cs @@ -5,6 +5,7 @@ using DefaultNamespace.Weapons; using DG.Tweening; using TMPro; using UnityEngine; +using Weapons; public class UnitView : MonoBehaviour { @@ -15,7 +16,7 @@ public class UnitView : MonoBehaviour [SerializeField] private GameObject barCanvas; [SerializeField] private GameObject aimCanvas; - private Stack _shotUIStack; + private Stack _shootUIStack; private Stack _toReloadStack; private Weapon _weapon; private int _manaRegen; @@ -29,7 +30,7 @@ public class UnitView : MonoBehaviour public void SetUp(Stack shots, Weapon weapon, Action RegenMana, int manaRegen) { - _shotUIStack = shots; + _shootUIStack = shots; _weapon = weapon; _toReloadStack = new Stack(); _startRegen = RegenMana; @@ -38,8 +39,8 @@ public class UnitView : MonoBehaviour public bool Shoot() { - if (_shotUIStack.Count == 0) return false; - var shot = _shotUIStack.Pop(); + if (_shootUIStack.Count == 0) return false; + var shot = _shootUIStack.Pop(); shot.Switch(); _toReloadStack.Push(shot); if (_previosReload != null) @@ -92,15 +93,12 @@ public class UnitView : MonoBehaviour private IEnumerator Reload() { - if (_toReloadStack.Count == 0) - { - yield break; - } - + if (_toReloadStack.Count == 0) yield break; //TODO При частой стрльбе перезарядка работает некорректно yield return new WaitForSeconds(_weapon.reloadTime); + if (_toReloadStack.Count == 0) yield break; var shot = _toReloadStack.Pop(); shot.Switch(); - _shotUIStack.Push(shot); + _shootUIStack.Push(shot); StartCoroutine(Reload()); } diff --git a/Assets/UnitView.cs.meta b/Assets/Scripts/Units/Views/UnitView.cs.meta similarity index 100% rename from Assets/UnitView.cs.meta rename to Assets/Scripts/Units/Views/UnitView.cs.meta diff --git a/Assets/Scripts/Weapons/Weapon.cs b/Assets/Scripts/Weapons/Weapon.cs new file mode 100644 index 00000000..f2056051 --- /dev/null +++ b/Assets/Scripts/Weapons/Weapon.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Weapons +{ + [Serializable] + public struct Weapon + { + public GameObject objectToThrow; + public GameObject VFXGameObject; + public int manaCost; + public int damage; + public float speed; + public int disnatce; + public float reloadTime; + public int shots; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Weapons/Weapon.cs.meta b/Assets/Scripts/Weapons/Weapon.cs.meta new file mode 100644 index 00000000..29da3716 --- /dev/null +++ b/Assets/Scripts/Weapons/Weapon.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d750b480071a4f939fc2f27e2017c24c +timeCreated: 1640398807 \ No newline at end of file diff --git a/Assets/WeaponView.cs b/Assets/Scripts/Weapons/WeaponView.cs similarity index 96% rename from Assets/WeaponView.cs rename to Assets/Scripts/Weapons/WeaponView.cs index 7e64f33c..2f8942c6 100644 --- a/Assets/WeaponView.cs +++ b/Assets/Scripts/Weapons/WeaponView.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using DefaultNamespace.Weapons; using UnityEngine; +using Weapons; public class WeaponView : MonoBehaviour { diff --git a/Assets/WeaponView.cs.meta b/Assets/Scripts/Weapons/WeaponView.cs.meta similarity index 100% rename from Assets/WeaponView.cs.meta rename to Assets/Scripts/Weapons/WeaponView.cs.meta