diff --git a/Assets/GlobalConfig.asset b/Assets/GlobalConfig.asset index c75214d..74ae7ed 100644 --- a/Assets/GlobalConfig.asset +++ b/Assets/GlobalConfig.asset @@ -12,12 +12,19 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 32e788fd2a7bdaf4ab145b64231cb833, type: 3} m_Name: GlobalConfig m_EditorClassIdentifier: - enemyBaseDamage: 1 - enemyBaseLife: 5 - enemyBaseRange: 1 - enemyBaseAttackSpeed: 1 damageFlashIntensity: 1 - harvestDuration: 1 - harvestAmount: 1 - harvestRandomDurationMinimum: 0 - harvestRandomDurationMaximum: 0 + enemySpeedMultiplier: 1 + enemyDamageMultiplier: 1 + enemyLifeMultiplier: 1 + enemyRangeMultiplier: {x: 1, y: 1} + enemyAttackSpeedMultiplier: 1 + allyDamageMultiplier: 1 + allyLifeMultiplier: 1 + allyAttackSpeedMultiplier: 0.5 + allySpeedMultiplier: 1 + allyRangeMultiplier: {x: 1, y: 1} + harvestDuration: 5 + harvestAmount: 10 + useRandomHarvestDuration: 0 + randomHarvestDurationMinimum: 0 + randomHarvestDurationMaximum: 0 diff --git a/Assets/Prefabs/Monsters/ClawClawRough_monster.prefab b/Assets/Prefabs/Monsters/ClawClawRough_monster.prefab index 118f159..e325aad 100644 --- a/Assets/Prefabs/Monsters/ClawClawRough_monster.prefab +++ b/Assets/Prefabs/Monsters/ClawClawRough_monster.prefab @@ -9,7 +9,6 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 80204295746100151} - - component: {fileID: 3889963999147056896} - component: {fileID: 788547799086903831} - component: {fileID: 8565800310011739221} - component: {fileID: 313037212318601125} @@ -37,44 +36,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1839735485 &3889963999147056896 -Tilemap: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 80204295746100150} - m_Enabled: 0 - m_Tiles: {} - m_AnimatedTiles: {} - m_TileAssetArray: [] - m_TileSpriteArray: [] - m_TileMatrixArray: [] - m_TileColorArray: [] - m_TileObjectToInstantiateArray: [] - m_AnimationFrameRate: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: 0, y: 0, z: 0} - m_Size: {x: 0, y: 0, z: 1} - m_TileAnchor: {x: 0.5, y: 0.5, z: 0} - m_TileOrientation: 0 - m_TileOrientationMatrix: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 --- !u!50 &788547799086903831 Rigidbody2D: serializedVersion: 4 @@ -137,7 +98,7 @@ MonoBehaviour: _hp: 20 _speed: 0.12 _attack_damage: 2 - _attack_speed: 2 + _attack_interval: 2 --- !u!1 &381864779947488822 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Sticks/Harversters/axemanStick.prefab b/Assets/Prefabs/Sticks/Harversters/axemanStick.prefab index 4bddfbf..4740bfe 100644 --- a/Assets/Prefabs/Sticks/Harversters/axemanStick.prefab +++ b/Assets/Prefabs/Sticks/Harversters/axemanStick.prefab @@ -1,77 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &270769315063318434 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 71124047072817123} - - component: {fileID: 2608989659328117942} - - component: {fileID: 3358069652062874313} - m_Layer: 0 - m_Name: detection - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &71124047072817123 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 270769315063318434} - 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: 6962989255644195631} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!61 &2608989659328117942 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 270769315063318434} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 1 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0.5, y: 0} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0, y: 0} - oldSize: {x: 0, y: 0} - newSize: {x: 0, y: 0} - adaptiveTilingThreshold: 0 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 0.5, y: 0.5} - m_EdgeRadius: 0 ---- !u!114 &3358069652062874313 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 270769315063318434} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 531d7966d86bd0c4d83baf58bcb56cd5, type: 3} - m_Name: - m_EditorClassIdentifier: - _entityLinked: {fileID: 0} --- !u!1 &6962989255035248094 GameObject: m_ObjectHideFlags: 0 @@ -397,7 +325,6 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 6962989255644195631} - - component: {fileID: 6072713849781841816} - component: {fileID: -1491803373025033585} - component: {fileID: -7538281095464317747} - component: {fileID: -7651792297317791922} @@ -422,48 +349,9 @@ Transform: m_Children: - {fileID: 6962989256011107500} - {fileID: 6962989255883535387} - - {fileID: 71124047072817123} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1839735485 &6072713849781841816 -Tilemap: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6962989255644195630} - m_Enabled: 0 - m_Tiles: {} - m_AnimatedTiles: {} - m_TileAssetArray: [] - m_TileSpriteArray: [] - m_TileMatrixArray: [] - m_TileColorArray: [] - m_TileObjectToInstantiateArray: [] - m_AnimationFrameRate: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: 0, y: 0, z: 0} - m_Size: {x: 0, y: 0, z: 1} - m_TileAnchor: {x: 0.5, y: 0.5, z: 0} - m_TileOrientation: 0 - m_TileOrientationMatrix: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 --- !u!50 &-1491803373025033585 Rigidbody2D: serializedVersion: 4 @@ -526,7 +414,7 @@ MonoBehaviour: _hp: 0 _speed: 0 _attack_damage: 0 - _attack_speed: 0 + _attack_interval: 0 _harvesterResourcePairs: - _harvesterPrefab: {fileID: 5157279992115123224, guid: 85534a2d6c2add54d864073914646192, type: 3} _resource: 2 diff --git a/Assets/Prefabs/Sticks/Harversters/minerStick.prefab b/Assets/Prefabs/Sticks/Harversters/minerStick.prefab index 2b70e35..63fc5fc 100644 --- a/Assets/Prefabs/Sticks/Harversters/minerStick.prefab +++ b/Assets/Prefabs/Sticks/Harversters/minerStick.prefab @@ -1,77 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &270769315063318434 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 71124047072817123} - - component: {fileID: 2608989659328117942} - - component: {fileID: 3358069652062874313} - m_Layer: 0 - m_Name: detection - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &71124047072817123 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 270769315063318434} - 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: 6962989255644195631} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!61 &2608989659328117942 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 270769315063318434} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 1 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0.5, y: 0} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0, y: 0} - oldSize: {x: 0, y: 0} - newSize: {x: 0, y: 0} - adaptiveTilingThreshold: 0 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 0.5, y: 0.5} - m_EdgeRadius: 0 ---- !u!114 &3358069652062874313 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 270769315063318434} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 531d7966d86bd0c4d83baf58bcb56cd5, type: 3} - m_Name: - m_EditorClassIdentifier: - _entityLinked: {fileID: 0} --- !u!1 &6962989255035248094 GameObject: m_ObjectHideFlags: 0 @@ -397,7 +325,6 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 6962989255644195631} - - component: {fileID: 6072713849781841816} - component: {fileID: -1491803373025033585} - component: {fileID: -7538281095464317747} - component: {fileID: 6812572548963698156} @@ -422,48 +349,9 @@ Transform: m_Children: - {fileID: 6962989256011107500} - {fileID: 6962989255883535387} - - {fileID: 71124047072817123} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1839735485 &6072713849781841816 -Tilemap: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6962989255644195630} - m_Enabled: 0 - m_Tiles: {} - m_AnimatedTiles: {} - m_TileAssetArray: [] - m_TileSpriteArray: [] - m_TileMatrixArray: [] - m_TileColorArray: [] - m_TileObjectToInstantiateArray: [] - m_AnimationFrameRate: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: 0, y: 0, z: 0} - m_Size: {x: 0, y: 0, z: 1} - m_TileAnchor: {x: 0.5, y: 0.5, z: 0} - m_TileOrientation: 0 - m_TileOrientationMatrix: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 --- !u!50 &-1491803373025033585 Rigidbody2D: serializedVersion: 4 @@ -526,7 +414,7 @@ MonoBehaviour: _hp: 0 _speed: 0 _attack_damage: 0 - _attack_speed: 0 + _attack_interval: 0 _harvesterResourcePairs: - _harvesterPrefab: {fileID: 5157279992115123224, guid: 85534a2d6c2add54d864073914646192, type: 3} _resource: 2 diff --git a/Assets/Prefabs/Sticks/archerStick.prefab b/Assets/Prefabs/Sticks/archerStick.prefab index b375de6..dd76c39 100644 --- a/Assets/Prefabs/Sticks/archerStick.prefab +++ b/Assets/Prefabs/Sticks/archerStick.prefab @@ -545,7 +545,6 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 5531237550998824025} - - component: {fileID: 8657602915366199534} - component: {fileID: 5129435415547448825} - component: {fileID: 4251894621246849979} - component: {fileID: 9177659942431061517} @@ -574,44 +573,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1839735485 &8657602915366199534 -Tilemap: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5531237550998824024} - m_Enabled: 0 - m_Tiles: {} - m_AnimatedTiles: {} - m_TileAssetArray: [] - m_TileSpriteArray: [] - m_TileMatrixArray: [] - m_TileColorArray: [] - m_TileObjectToInstantiateArray: [] - m_AnimationFrameRate: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: 0, y: 0, z: 0} - m_Size: {x: 0, y: 0, z: 1} - m_TileAnchor: {x: 0.5, y: 0.5, z: 0} - m_TileOrientation: 0 - m_TileOrientationMatrix: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 --- !u!50 &5129435415547448825 Rigidbody2D: serializedVersion: 4 @@ -674,7 +635,7 @@ MonoBehaviour: _hp: 10 _speed: 0 _attack_damage: 2 - _attack_speed: 2 + _attack_interval: 2 --- !u!1 &6125909153338481476 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Sticks/baseStick.prefab b/Assets/Prefabs/Sticks/baseStick.prefab index 492fdd4..77ed112 100644 --- a/Assets/Prefabs/Sticks/baseStick.prefab +++ b/Assets/Prefabs/Sticks/baseStick.prefab @@ -398,7 +398,6 @@ GameObject: m_Component: - component: {fileID: 6962989255644195631} - component: {fileID: 8585520847943034727} - - component: {fileID: 6072713849781841816} - component: {fileID: -1491803373025033585} - component: {fileID: -7538281095464317747} m_Layer: 0 @@ -440,46 +439,8 @@ MonoBehaviour: m_EditorClassIdentifier: _hp: 100 _speed: 0 - _attack_damage: 1 - _attack_speed: 1.2 ---- !u!1839735485 &6072713849781841816 -Tilemap: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6962989255644195630} - m_Enabled: 0 - m_Tiles: {} - m_AnimatedTiles: {} - m_TileAssetArray: [] - m_TileSpriteArray: [] - m_TileMatrixArray: [] - m_TileColorArray: [] - m_TileObjectToInstantiateArray: [] - m_AnimationFrameRate: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: 0, y: 0, z: 0} - m_Size: {x: 0, y: 0, z: 1} - m_TileAnchor: {x: 0.5, y: 0.5, z: 0} - m_TileOrientation: 0 - m_TileOrientationMatrix: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 + _attack_damage: 0 + _attack_interval: 0 --- !u!50 &-1491803373025033585 Rigidbody2D: serializedVersion: 4 diff --git a/Assets/Prefabs/Sticks/farmersAssociation.prefab b/Assets/Prefabs/Sticks/farmersAssociation.prefab index 94ad7c2..89c8175 100644 --- a/Assets/Prefabs/Sticks/farmersAssociation.prefab +++ b/Assets/Prefabs/Sticks/farmersAssociation.prefab @@ -1063,7 +1063,6 @@ GameObject: m_Component: - component: {fileID: 6962989255644195631} - component: {fileID: 8585520847943034727} - - component: {fileID: 6072713849781841816} - component: {fileID: -1491803373025033585} - component: {fileID: -7538281095464317747} m_Layer: 0 @@ -1106,45 +1105,7 @@ MonoBehaviour: _hp: 10 _speed: 0 _attack_damage: 2 - _attack_speed: 2 ---- !u!1839735485 &6072713849781841816 -Tilemap: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6962989255644195630} - m_Enabled: 0 - m_Tiles: {} - m_AnimatedTiles: {} - m_TileAssetArray: [] - m_TileSpriteArray: [] - m_TileMatrixArray: [] - m_TileColorArray: [] - m_TileObjectToInstantiateArray: [] - m_AnimationFrameRate: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: 0, y: 0, z: 0} - m_Size: {x: 0, y: 0, z: 1} - m_TileAnchor: {x: 0.5, y: 0.5, z: 0} - m_TileOrientation: 0 - m_TileOrientationMatrix: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 + _attack_interval: 2 --- !u!50 &-1491803373025033585 Rigidbody2D: serializedVersion: 4 diff --git a/Assets/Prefabs/baseProjectile.prefab b/Assets/Prefabs/baseProjectile.prefab index cbab2f8..bba972b 100644 --- a/Assets/Prefabs/baseProjectile.prefab +++ b/Assets/Prefabs/baseProjectile.prefab @@ -9,7 +9,6 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 6962989255644195631} - - component: {fileID: 6072713849781841816} - component: {fileID: -1491803373025033585} - component: {fileID: 8133954670424616578} m_Layer: 0 @@ -36,44 +35,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1839735485 &6072713849781841816 -Tilemap: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6962989255644195630} - m_Enabled: 0 - m_Tiles: {} - m_AnimatedTiles: {} - m_TileAssetArray: [] - m_TileSpriteArray: [] - m_TileMatrixArray: [] - m_TileColorArray: [] - m_TileObjectToInstantiateArray: [] - m_AnimationFrameRate: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: 0, y: 0, z: 0} - m_Size: {x: 0, y: 0, z: 1} - m_TileAnchor: {x: 0.5, y: 0.5, z: 0} - m_TileOrientation: 0 - m_TileOrientationMatrix: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 --- !u!50 &-1491803373025033585 Rigidbody2D: serializedVersion: 4 diff --git a/Assets/Scripts/Ally/Ally.cs b/Assets/Scripts/Ally/Ally.cs index 9e81acd..8145a0d 100644 --- a/Assets/Scripts/Ally/Ally.cs +++ b/Assets/Scripts/Ally/Ally.cs @@ -4,14 +4,20 @@ using UnityEngine; public class Ally : Entity { + public override float DamageMultiplier => GlobalConfig.Instance.Current.allyDamageMultiplier; + public override float AttackSpeedMultiplier => GlobalConfig.Instance.Current.allyAttackSpeedMultiplier; + public override float HpMultiplier => GlobalConfig.Instance.Current.allyLifeMultiplier; + public override Vector2 RangeMultiplier => GlobalConfig.Instance.Current.allyRangeMultiplier; + public override float SpeedMultiplier => GlobalConfig.Instance.Current.allySpeedMultiplier; + public override void Start() { base.Start(); } - void Update() + public override void Update() { - + base.Update(); if(IsEnemyDetected) { AttackEnemy(); } @@ -21,7 +27,7 @@ public class Ally : Entity void AttackEnemy() { //Attack Cooldown - if (AttackSpeed < AttackSpeedWait) + if (AttackSpeedWait > AttackInterval) { Animation.PlayAttackAnim(); diff --git a/Assets/Scripts/Ally/Archer.cs b/Assets/Scripts/Ally/Archer.cs index 8f4f4e9..c63c3a1 100644 --- a/Assets/Scripts/Ally/Archer.cs +++ b/Assets/Scripts/Ally/Archer.cs @@ -10,9 +10,9 @@ public class Archer : Ally base.Start(); } - void Update() + public override void Update() { - + base.Update(); if(IsEnemyDetected) { AttackEnemy(); } @@ -23,7 +23,7 @@ public class Archer : Ally { //Attack Cooldown - if(AttackSpeed < AttackSpeedWait) { + if(AttackInterval < AttackSpeedWait) { Animation.PlayAttackAnim(); diff --git a/Assets/Scripts/Ally/Harvester.cs b/Assets/Scripts/Ally/Harvester.cs index 2e117da..f90afac 100644 --- a/Assets/Scripts/Ally/Harvester.cs +++ b/Assets/Scripts/Ally/Harvester.cs @@ -2,11 +2,22 @@ using UnityEngine; using System.Collections.Generic; using static Enum; -public class Harvester : Entity +public class Harvester : Entity { - [SerializeField][Tooltip("helps choose the right skin for the harvester depending on resource")] + [SerializeField] [Tooltip("helps choose the right skin for the harvester depending on resource")] private List _harvesterResourcePairs; protected ResourceChoice ResourceChoice => _resourceChoice; + + public override Vector2 RangeMultiplier { get; } + + public override float HpMultiplier { get; } + + public override float SpeedMultiplier { get; } + + public override float DamageMultiplier { get; } + + public override float AttackSpeedMultiplier { get; } + [SerializeField] private ResourceChoice _resourceChoice; public override sealed void Start() diff --git a/Assets/Scripts/AnimationEntity.cs b/Assets/Scripts/AnimationEntity.cs index b3b071a..b8c0f77 100644 --- a/Assets/Scripts/AnimationEntity.cs +++ b/Assets/Scripts/AnimationEntity.cs @@ -4,39 +4,63 @@ using UnityEngine; public class AnimationEntity : MonoBehaviour { + enum EntityAnimationState + { + Idle = 0, + Walking = 1, + Attacking = 2, + Dying = 3 + } + private EntityAnimationState entityState; private Animator _animatorEntity; private bool _doSomething = false; private bool _isDead = false; private bool _isWalking = false; - + void Start() { + AttackSpeedMultiplier = 10; + SpeedMultiplier = 10; _animatorEntity = GetComponentInChildren(); } void Update() - { - + { if (_doSomething && _animatorEntity.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1f) { PlayIdleAnim(); _doSomething = false; _isWalking = false; } + _animatorEntity.speed = GetAnimatorSpeed(); + } + + private float GetAnimatorSpeed() + { + return entityState switch + { + EntityAnimationState.Attacking => AttackSpeedMultiplier, + EntityAnimationState.Walking => SpeedMultiplier, + _ => 1, + }; } public void PlayIdleAnim() { if(!_isDead) { + _animatorEntity.speed = 1; _animatorEntity.Play("idle", 0, 0f); + entityState = EntityAnimationState.Idle; } } public void PlayWalkAnim() { if(!_isDead) { + _animatorEntity.speed = SpeedMultiplier; _animatorEntity.Play("walk", 0, 0f); + entityState = EntityAnimationState.Walking; _isWalking = true; } } @@ -44,14 +68,18 @@ public class AnimationEntity : MonoBehaviour public void PlayAttackAnim() { if(!_isDead) { + _animatorEntity.speed = AttackSpeedMultiplier; _animatorEntity.Play("attack", 0, 0f); + entityState = EntityAnimationState.Attacking; _doSomething = true; } } public void PlayDieAnim() { + _animatorEntity.speed = 1; _animatorEntity.Play("die", 0, 0f); + entityState = EntityAnimationState.Dying; _doSomething = true; _isDead = true; } @@ -62,5 +90,12 @@ public class AnimationEntity : MonoBehaviour get { return _isWalking; } set { _isWalking = value; } } - + public float AttackSpeedMultiplier + { + get; set; + } + public float SpeedMultiplier + { + get; set; + } } diff --git a/Assets/Scripts/Detection.cs b/Assets/Scripts/Detection.cs index f668583..045534b 100644 --- a/Assets/Scripts/Detection.cs +++ b/Assets/Scripts/Detection.cs @@ -24,17 +24,17 @@ public class Detection : MonoBehaviour } void ResizeCollider() { - var range = GlobalConfig.Instance.Current.enemyBaseRange; - + if (!EntityLinked) return; + var multiplier = EntityLinked.RangeMultiplier; var size = _collider.size; - size.x = detectionRange.x * range.x; - size.y = detectionRange.y * range.y; + size.x = detectionRange.x * multiplier.x; + size.y = detectionRange.y * multiplier.y; _collider.size = size; var offset = _collider.offset; if (offset == Vector2.zero) return; - offset.x = size.x / 2; + offset.x = Mathf.Sign(offset.x) * size.x / 2; _collider.offset = offset; } //If it's a projectile damage > 0 diff --git a/Assets/Scripts/Entity.cs b/Assets/Scripts/Entity.cs index 9d8a097..5fc8a74 100644 --- a/Assets/Scripts/Entity.cs +++ b/Assets/Scripts/Entity.cs @@ -2,7 +2,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; -public class Entity : LevelObject +public abstract class Entity : LevelObject { //Attribut [SerializeField] @@ -10,9 +10,9 @@ public class Entity : LevelObject [SerializeField] private float _speed; [SerializeField] - private int _attack_damage; + private int _attack_damage = 2; [SerializeField] - private float _attack_speed; + private float _attack_interval = 2; private float _attack_speed_wait = 0f; private AnimationEntity _animation; private Shader _shaderGUItext; @@ -29,7 +29,11 @@ public class Entity : LevelObject _spriteRenderers = GetComponentsInChildren(); Animation = gameObject.AddComponent(); } - + public virtual void Update() + { + Animation.AttackSpeedMultiplier = AttackSpeedMultiplier; + Animation.SpeedMultiplier = SpeedMultiplier; + } //Start the animation of death and the fading of the entity public void Death() { @@ -88,14 +92,20 @@ public class Entity : LevelObject } //GETTERS AND SETTERS - - public int Hp => (int)(_hp * GlobalConfig.Instance.Current.enemyBaseLife); - public float Speed => _speed; + public abstract Vector2 RangeMultiplier { get; } + public abstract float HpMultiplier { get; } + public abstract float SpeedMultiplier { get; } + public abstract float DamageMultiplier { get; } + public abstract float AttackSpeedMultiplier { get; } - public int AttackDamage => (int)(_attack_damage * GlobalConfig.Instance.Current.enemyBaseDamage); + public int Hp => (int)(_hp * HpMultiplier); - public float AttackSpeed => _attack_speed * GlobalConfig.Instance.Current.enemyBaseAttackSpeed; + public float Speed => _speed * SpeedMultiplier; + + public int AttackDamage => (int)(_attack_damage * DamageMultiplier); + + public float AttackInterval => _attack_interval / AttackSpeedMultiplier; public float AttackSpeedWait { @@ -128,19 +138,17 @@ public class Entity : LevelObject && base.Equals(otherEntity) && otherEntity._hp == _hp && otherEntity._speed == _speed - && otherEntity._attack_speed == _attack_speed + && otherEntity._attack_interval == _attack_interval && otherEntity._attack_damage == _attack_damage; } - public override Dictionary ToDictionary() { var dict = base.ToDictionary(); dict[nameof(_hp)] = _hp; dict[nameof(_speed)] = _speed; - dict[nameof(_attack_speed)] = _attack_speed; + dict[nameof(_attack_interval)] = _attack_interval; dict[nameof(_attack_damage)] = _attack_damage; - dict[nameof(_attack_speed_wait)] = _attack_speed_wait; return dict; } @@ -150,9 +158,8 @@ public class Entity : LevelObject _hp = dict[nameof(_hp)].ToInt(); _speed = dict[nameof(_speed)].ToFloat(); - _attack_speed = dict[nameof(_attack_speed)].ToFloat(); + _attack_interval = dict[nameof(_attack_interval)].ToFloat(); _attack_damage = dict[nameof(_attack_damage)].ToInt(); - _attack_speed_wait = dict[nameof(_attack_speed_wait)].ToFloat(); } #endregion } diff --git a/Assets/Scripts/General/GlobalConfigFile.cs b/Assets/Scripts/General/GlobalConfigFile.cs index 8a277c7..3423538 100644 --- a/Assets/Scripts/General/GlobalConfigFile.cs +++ b/Assets/Scripts/General/GlobalConfigFile.cs @@ -2,25 +2,32 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; - - [CreateAssetMenu(menuName = project_name + "/Global Config")] public class GlobalConfigFile : ScriptableObject { + public const string project_name = "Gather And Defend"; - - [Header("Enemies")] - public float enemyBaseDamage = 1; - public float enemyBaseLife = 1; - public Vector2 enemyBaseRange = Vector2.one; - public float enemyBaseAttackSpeed = 1; public float damageFlashIntensity = 1; + [Header("Enemies")] + public float enemySpeedMultiplier = 1; + public float enemyDamageMultiplier = 1; + public float enemyLifeMultiplier = 1; + public Vector2 enemyRangeMultiplier = Vector2.one; + public float enemyAttackSpeedMultiplier = 1; + + [Header("Allies")] + public float allyDamageMultiplier = 1; + public float allyLifeMultiplier = 1; + public float allyAttackSpeedMultiplier = 1; + public float allySpeedMultiplier = 1; + public Vector2 allyRangeMultiplier = Vector2.one; + [Header("resources")] - public float baseHarvestDuration = 1; - public float baseHarvestAmount = 1; + public float harvestDuration = 1; + public int harvestAmount = 1; public bool useRandomHarvestDuration = false; - public float randomHarvestDurationMinimum = 0; - public float randomHarvestDurationMaximum = 0; + public int randomHarvestDurationMinimum = 0; + public int randomHarvestDurationMaximum = 0; } diff --git a/Assets/Scripts/Opponent/Opponent.cs b/Assets/Scripts/Opponent/Opponent.cs index 14a2451..b0d7b26 100644 --- a/Assets/Scripts/Opponent/Opponent.cs +++ b/Assets/Scripts/Opponent/Opponent.cs @@ -4,6 +4,11 @@ using UnityEngine; public class Opponent : Entity { + public override Vector2 RangeMultiplier => GlobalConfig.Instance.Current.enemyRangeMultiplier; + public override float DamageMultiplier => GlobalConfig.Instance.Current.enemyDamageMultiplier; + public override float AttackSpeedMultiplier => GlobalConfig.Instance.Current.enemyAttackSpeedMultiplier; + public override float HpMultiplier => GlobalConfig.Instance.Current.enemyLifeMultiplier; + public override float SpeedMultiplier => GlobalConfig.Instance.Current.enemySpeedMultiplier; private Vector2 _movementVector = Vector2.zero; private Rigidbody2D _rigidbody; @@ -16,11 +21,15 @@ public class Opponent : Entity Animation = gameObject.AddComponent(); } - void Update() + public override void Update() { - if(IsEnemyDetected) { + base.Update(); + if(IsEnemyDetected) + { AttackEnemy(); - }else { + } + else + { _movementVector.x = -Time.deltaTime * Speed; transform.position += (Vector3)_movementVector; @@ -36,7 +45,7 @@ public class Opponent : Entity void AttackEnemy() { //Attack Cooldown - if(AttackSpeed < AttackSpeedWait) + if(AttackInterval < AttackSpeedWait) { Animation.PlayAttackAnim(); diff --git a/Assets/Scripts/Resource/ResourceMaker.cs b/Assets/Scripts/Resource/ResourceMaker.cs index d5598d7..efe051a 100644 --- a/Assets/Scripts/Resource/ResourceMaker.cs +++ b/Assets/Scripts/Resource/ResourceMaker.cs @@ -5,8 +5,6 @@ using UnityEngine; /// public class ResourceMaker : MonoBehaviour { - [SerializeField] - private int _resourceMakingAmount; [SerializeField] private Enum.ResourceChoice _resourceChoice; private ResourceManager _resourceManagerInstance; @@ -43,7 +41,7 @@ public class ResourceMaker : MonoBehaviour if (_isPlaying) { - var amountMult = GlobalConfig.Instance.Current.baseHarvestAmount; + var amount = GlobalConfig.Instance.Current.harvestAmount; _timePassed += Time.deltaTime; float duration = _timePassed / _desiredTime; duration = duration * duration * (3.0f - 2.0f * duration); @@ -54,13 +52,13 @@ public class ResourceMaker : MonoBehaviour switch (_resourceChoice) { case Enum.ResourceChoice.Rock: - _resourceManagerInstance.RockAmount = (int)(_resourceMakingAmount * amountMult); + _resourceManagerInstance.RockAmount = amount; break; case Enum.ResourceChoice.Wood: - _resourceManagerInstance.WoodAmount = (int)(_resourceMakingAmount * amountMult); + _resourceManagerInstance.WoodAmount = amount; break; case Enum.ResourceChoice.Food: - _resourceManagerInstance.FoodAmount = (int)(_resourceMakingAmount * amountMult); + _resourceManagerInstance.FoodAmount = amount; break; } Destroy(gameObject); diff --git a/Assets/Scripts/Tiles/ResourceTile.cs b/Assets/Scripts/Tiles/ResourceTile.cs index afcfe1f..cfd4e6a 100644 --- a/Assets/Scripts/Tiles/ResourceTile.cs +++ b/Assets/Scripts/Tiles/ResourceTile.cs @@ -12,19 +12,14 @@ public class ResourceTile : LevelTile public GameObject YieldPrefab => _yieldPrefab; private string YieldPrefabName => _yieldPrefab.name; - [SerializeField][Tooltip("mesure en seconde / ressource")] - private float _yieldDuration = 1; //resource per second - private float _realYieldDuration; [SerializeField] [Range(0.0f, 5.0f)] private float _randomPositionConfig = 0.5f; private float _yieldCounter = 0; - public bool Occupied { get; set; } public override void LevelStart() { base.LevelStart(); - _realYieldDuration = _yieldDuration; ResetYieldDuration(); } public override void LevelUpdate() @@ -33,8 +28,8 @@ public class ResourceTile : LevelTile var hasFarmer = LevelManager.Instance.Get(x => x.Position.IsContainedIn(Position)); if (!hasFarmer) return; - _yieldCounter += Time.deltaTime; - if (_yieldCounter < _realYieldDuration) return; + _yieldCounter -= Time.deltaTime; + if (_yieldCounter > 0) return; ResetYieldDuration(); @@ -60,28 +55,24 @@ public class ResourceTile : LevelTile { float min = config.randomHarvestDurationMinimum, max = config.randomHarvestDurationMaximum; - _realYieldDuration = _yieldDuration * Random.Range(min, max); + _yieldCounter = Random.Range(min, max); } else { - _realYieldDuration = _yieldDuration * config.baseHarvestDuration; + _yieldCounter = config.harvestDuration; } } public override bool Equals(ILevelObject other) { return other is ResourceTile otherRes && base.Equals(otherRes) - && _yieldPrefab == otherRes._yieldPrefab - && _yieldDuration == otherRes._yieldDuration - && Occupied == otherRes.Occupied; + && _yieldPrefab == otherRes._yieldPrefab; } public override Dictionary ToDictionary() { var dict = base.ToDictionary(); dict[nameof(YieldPrefabName)] = YieldPrefabName; - dict[nameof(_yieldDuration)] = _yieldDuration; - dict[nameof(Occupied)] = Occupied; return dict; } public override void LoadDictionary(Dictionary dict) @@ -89,8 +80,5 @@ public class ResourceTile : LevelTile base.LoadDictionary(dict); var prefabName = dict[nameof(YieldPrefabName)].ToString(); _yieldPrefab = Database.Instance.Prefabs[prefabName]; - _yieldDuration = dict[nameof(_yieldDuration)].ToFloat(); - _yieldCounter = dict[nameof(_yieldCounter)].ToFloat(); - Occupied = dict[nameof(Occupied)].ToBool(); } } \ No newline at end of file