Pull request #39: global config file

Merge in CGD/gather-and-defend from feature/globalConfigFile to main

* commit '0714036b57f45e2c04dc8de469ce99b1b8a2d6d3':
  separate ally and enemy config + bugfixes
  appliquer global config aux différents endroits
  forgot changes in game.unity
  creer le scriptable object GlobalConfig
This commit is contained in:
Felix-gabriel Boucher-luneau 2023-09-03 16:21:20 +00:00
commit ce058aee7f
29 changed files with 334 additions and 514 deletions

30
Assets/GlobalConfig.asset Normal file
View File

@ -0,0 +1,30 @@
%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: 32e788fd2a7bdaf4ab145b64231cb833, type: 3}
m_Name: GlobalConfig
m_EditorClassIdentifier:
damageFlashIntensity: 1
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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 132e291fc51a8f445b1183b11a5d6b39
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -12,6 +12,7 @@ GameObject:
- component: {fileID: 3028288566889208750} - component: {fileID: 3028288566889208750}
- component: {fileID: 3028288566889208749} - component: {fileID: 3028288566889208749}
- component: {fileID: -245230096461627285} - component: {fileID: -245230096461627285}
- component: {fileID: 5626804684391367242}
m_Layer: 0 m_Layer: 0
m_Name: LevelManager m_Name: LevelManager
m_TagString: Untagged m_TagString: Untagged
@ -119,3 +120,16 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 37c0aa967043d974783120d6ea9b136c, type: 3} m_Script: {fileID: 11500000, guid: 37c0aa967043d974783120d6ea9b136c, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
--- !u!114 &5626804684391367242
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3028288566889208744}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c8f878516c4a3324aa1a9672f8b336c9, type: 3}
m_Name:
m_EditorClassIdentifier:
_current: {fileID: 11400000, guid: 132e291fc51a8f445b1183b11a5d6b39, type: 2}

View File

@ -9,7 +9,6 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 80204295746100151} - component: {fileID: 80204295746100151}
- component: {fileID: 3889963999147056896}
- component: {fileID: 788547799086903831} - component: {fileID: 788547799086903831}
- component: {fileID: 8565800310011739221} - component: {fileID: 8565800310011739221}
- component: {fileID: 313037212318601125} - component: {fileID: 313037212318601125}
@ -37,44 +36,6 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 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 --- !u!50 &788547799086903831
Rigidbody2D: Rigidbody2D:
serializedVersion: 4 serializedVersion: 4
@ -137,7 +98,7 @@ MonoBehaviour:
_hp: 20 _hp: 20
_speed: 0.12 _speed: 0.12
_attack_damage: 2 _attack_damage: 2
_attack_speed: 2 _attack_interval: 2
--- !u!1 &381864779947488822 --- !u!1 &381864779947488822
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -1,77 +1,5 @@
%YAML 1.1 %YAML 1.1
%TAG !u! tag:unity3d.com,2011: %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 --- !u!1 &6962989255035248094
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -397,7 +325,6 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 6962989255644195631} - component: {fileID: 6962989255644195631}
- component: {fileID: 6072713849781841816}
- component: {fileID: -1491803373025033585} - component: {fileID: -1491803373025033585}
- component: {fileID: -7538281095464317747} - component: {fileID: -7538281095464317747}
- component: {fileID: -7651792297317791922} - component: {fileID: -7651792297317791922}
@ -422,48 +349,9 @@ Transform:
m_Children: m_Children:
- {fileID: 6962989256011107500} - {fileID: 6962989256011107500}
- {fileID: 6962989255883535387} - {fileID: 6962989255883535387}
- {fileID: 71124047072817123}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 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 --- !u!50 &-1491803373025033585
Rigidbody2D: Rigidbody2D:
serializedVersion: 4 serializedVersion: 4
@ -526,7 +414,7 @@ MonoBehaviour:
_hp: 0 _hp: 0
_speed: 0 _speed: 0
_attack_damage: 0 _attack_damage: 0
_attack_speed: 0 _attack_interval: 0
_harvesterResourcePairs: _harvesterResourcePairs:
- _harvesterPrefab: {fileID: 5157279992115123224, guid: 85534a2d6c2add54d864073914646192, type: 3} - _harvesterPrefab: {fileID: 5157279992115123224, guid: 85534a2d6c2add54d864073914646192, type: 3}
_resource: 2 _resource: 2

View File

@ -1,77 +1,5 @@
%YAML 1.1 %YAML 1.1
%TAG !u! tag:unity3d.com,2011: %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 --- !u!1 &6962989255035248094
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -397,7 +325,6 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 6962989255644195631} - component: {fileID: 6962989255644195631}
- component: {fileID: 6072713849781841816}
- component: {fileID: -1491803373025033585} - component: {fileID: -1491803373025033585}
- component: {fileID: -7538281095464317747} - component: {fileID: -7538281095464317747}
- component: {fileID: 6812572548963698156} - component: {fileID: 6812572548963698156}
@ -422,48 +349,9 @@ Transform:
m_Children: m_Children:
- {fileID: 6962989256011107500} - {fileID: 6962989256011107500}
- {fileID: 6962989255883535387} - {fileID: 6962989255883535387}
- {fileID: 71124047072817123}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 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 --- !u!50 &-1491803373025033585
Rigidbody2D: Rigidbody2D:
serializedVersion: 4 serializedVersion: 4
@ -526,7 +414,7 @@ MonoBehaviour:
_hp: 0 _hp: 0
_speed: 0 _speed: 0
_attack_damage: 0 _attack_damage: 0
_attack_speed: 0 _attack_interval: 0
_harvesterResourcePairs: _harvesterResourcePairs:
- _harvesterPrefab: {fileID: 5157279992115123224, guid: 85534a2d6c2add54d864073914646192, type: 3} - _harvesterPrefab: {fileID: 5157279992115123224, guid: 85534a2d6c2add54d864073914646192, type: 3}
_resource: 2 _resource: 2

View File

@ -545,7 +545,6 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 5531237550998824025} - component: {fileID: 5531237550998824025}
- component: {fileID: 8657602915366199534}
- component: {fileID: 5129435415547448825} - component: {fileID: 5129435415547448825}
- component: {fileID: 4251894621246849979} - component: {fileID: 4251894621246849979}
- component: {fileID: 9177659942431061517} - component: {fileID: 9177659942431061517}
@ -574,44 +573,6 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 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 --- !u!50 &5129435415547448825
Rigidbody2D: Rigidbody2D:
serializedVersion: 4 serializedVersion: 4
@ -674,7 +635,7 @@ MonoBehaviour:
_hp: 10 _hp: 10
_speed: 0 _speed: 0
_attack_damage: 2 _attack_damage: 2
_attack_speed: 2 _attack_interval: 2
--- !u!1 &6125909153338481476 --- !u!1 &6125909153338481476
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -398,7 +398,6 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 6962989255644195631} - component: {fileID: 6962989255644195631}
- component: {fileID: 8585520847943034727} - component: {fileID: 8585520847943034727}
- component: {fileID: 6072713849781841816}
- component: {fileID: -1491803373025033585} - component: {fileID: -1491803373025033585}
- component: {fileID: -7538281095464317747} - component: {fileID: -7538281095464317747}
m_Layer: 0 m_Layer: 0
@ -440,46 +439,8 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_hp: 100 _hp: 100
_speed: 0 _speed: 0
_attack_damage: 1 _attack_damage: 0
_attack_speed: 1.2 _attack_interval: 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 --- !u!50 &-1491803373025033585
Rigidbody2D: Rigidbody2D:
serializedVersion: 4 serializedVersion: 4

View File

@ -1063,7 +1063,6 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 6962989255644195631} - component: {fileID: 6962989255644195631}
- component: {fileID: 8585520847943034727} - component: {fileID: 8585520847943034727}
- component: {fileID: 6072713849781841816}
- component: {fileID: -1491803373025033585} - component: {fileID: -1491803373025033585}
- component: {fileID: -7538281095464317747} - component: {fileID: -7538281095464317747}
m_Layer: 0 m_Layer: 0
@ -1106,45 +1105,7 @@ MonoBehaviour:
_hp: 10 _hp: 10
_speed: 0 _speed: 0
_attack_damage: 2 _attack_damage: 2
_attack_speed: 2 _attack_interval: 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
--- !u!50 &-1491803373025033585 --- !u!50 &-1491803373025033585
Rigidbody2D: Rigidbody2D:
serializedVersion: 4 serializedVersion: 4

View File

@ -9,7 +9,6 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 6962989255644195631} - component: {fileID: 6962989255644195631}
- component: {fileID: 6072713849781841816}
- component: {fileID: -1491803373025033585} - component: {fileID: -1491803373025033585}
- component: {fileID: 8133954670424616578} - component: {fileID: 8133954670424616578}
m_Layer: 0 m_Layer: 0
@ -36,44 +35,6 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 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 --- !u!50 &-1491803373025033585
Rigidbody2D: Rigidbody2D:
serializedVersion: 4 serializedVersion: 4

View File

@ -4,14 +4,20 @@ using UnityEngine;
public class Ally : Entity 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() public override void Start()
{ {
base.Start(); base.Start();
} }
void Update() public override void Update()
{ {
base.Update();
if(IsEnemyDetected) { if(IsEnemyDetected) {
AttackEnemy(); AttackEnemy();
} }
@ -21,7 +27,8 @@ public class Ally : Entity
void AttackEnemy() void AttackEnemy()
{ {
//Attack Cooldown //Attack Cooldown
if(AttackSpeed < AttackSpeedWait) { if (AttackSpeedWait > AttackInterval)
{
Animation.PlayAttackAnim(); Animation.PlayAttackAnim();

View File

@ -10,9 +10,9 @@ public class Archer : Ally
base.Start(); base.Start();
} }
void Update() public override void Update()
{ {
base.Update();
if(IsEnemyDetected) { if(IsEnemyDetected) {
AttackEnemy(); AttackEnemy();
} }
@ -23,7 +23,7 @@ public class Archer : Ally
{ {
//Attack Cooldown //Attack Cooldown
if(AttackSpeed < AttackSpeedWait) { if(AttackInterval < AttackSpeedWait) {
Animation.PlayAttackAnim(); Animation.PlayAttackAnim();

View File

@ -4,9 +4,20 @@ 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<HarvesterResourcePair> _harvesterResourcePairs; private List<HarvesterResourcePair> _harvesterResourcePairs;
protected ResourceChoice ResourceChoice => _resourceChoice; 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] [SerializeField]
private ResourceChoice _resourceChoice; private ResourceChoice _resourceChoice;
public override sealed void Start() public override sealed void Start()

View File

@ -4,6 +4,14 @@ using UnityEngine;
public class AnimationEntity : MonoBehaviour public class AnimationEntity : MonoBehaviour
{ {
enum EntityAnimationState
{
Idle = 0,
Walking = 1,
Attacking = 2,
Dying = 3
}
private EntityAnimationState entityState;
private Animator _animatorEntity; private Animator _animatorEntity;
private bool _doSomething = false; private bool _doSomething = false;
@ -12,31 +20,47 @@ public class AnimationEntity : MonoBehaviour
void Start() void Start()
{ {
AttackSpeedMultiplier = 10;
SpeedMultiplier = 10;
_animatorEntity = GetComponentInChildren<Animator>(); _animatorEntity = GetComponentInChildren<Animator>();
} }
void Update() void Update()
{ {
if (_doSomething && _animatorEntity.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1f) if (_doSomething && _animatorEntity.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1f)
{ {
PlayIdleAnim(); PlayIdleAnim();
_doSomething = false; _doSomething = false;
_isWalking = false; _isWalking = false;
} }
_animatorEntity.speed = GetAnimatorSpeed();
}
private float GetAnimatorSpeed()
{
return entityState switch
{
EntityAnimationState.Attacking => AttackSpeedMultiplier,
EntityAnimationState.Walking => SpeedMultiplier,
_ => 1,
};
} }
public void PlayIdleAnim() public void PlayIdleAnim()
{ {
if(!_isDead) { if(!_isDead) {
_animatorEntity.speed = 1;
_animatorEntity.Play("idle", 0, 0f); _animatorEntity.Play("idle", 0, 0f);
entityState = EntityAnimationState.Idle;
} }
} }
public void PlayWalkAnim() public void PlayWalkAnim()
{ {
if(!_isDead) { if(!_isDead) {
_animatorEntity.speed = SpeedMultiplier;
_animatorEntity.Play("walk", 0, 0f); _animatorEntity.Play("walk", 0, 0f);
entityState = EntityAnimationState.Walking;
_isWalking = true; _isWalking = true;
} }
} }
@ -44,14 +68,18 @@ public class AnimationEntity : MonoBehaviour
public void PlayAttackAnim() public void PlayAttackAnim()
{ {
if(!_isDead) { if(!_isDead) {
_animatorEntity.speed = AttackSpeedMultiplier;
_animatorEntity.Play("attack", 0, 0f); _animatorEntity.Play("attack", 0, 0f);
entityState = EntityAnimationState.Attacking;
_doSomething = true; _doSomething = true;
} }
} }
public void PlayDieAnim() public void PlayDieAnim()
{ {
_animatorEntity.speed = 1;
_animatorEntity.Play("die", 0, 0f); _animatorEntity.Play("die", 0, 0f);
entityState = EntityAnimationState.Dying;
_doSomething = true; _doSomething = true;
_isDead = true; _isDead = true;
} }
@ -62,5 +90,12 @@ public class AnimationEntity : MonoBehaviour
get { return _isWalking; } get { return _isWalking; }
set { _isWalking = value; } set { _isWalking = value; }
} }
public float AttackSpeedMultiplier
{
get; set;
}
public float SpeedMultiplier
{
get; set;
}
} }

View File

@ -4,22 +4,48 @@ using UnityEngine;
public class Detection : MonoBehaviour public class Detection : MonoBehaviour
{ {
private Vector2 detectionRange;
private BoxCollider2D _collider;
public Rect DetectionRectangle public Rect DetectionRectangle
{ {
get get
{ {
var collider = GetComponent<Collider2D>(); if (!_collider) _collider = GetComponent<BoxCollider2D>();
var bounds = collider.bounds; var bounds = _collider.bounds;
return new Rect(bounds.min - transform.position, bounds.size); return new Rect(bounds.min - transform.position, bounds.size);
} }
} }
[SerializeField] [SerializeField]
private Entity _entityLinked; private Entity _entityLinked;
protected virtual void Start()
{
_collider = GetComponent<BoxCollider2D>();
detectionRange = _collider.size;
}
void ResizeCollider()
{
if (!EntityLinked) return;
var multiplier = EntityLinked.RangeMultiplier;
var size = _collider.size;
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 = Mathf.Sign(offset.x) * size.x / 2;
_collider.offset = offset;
}
//If it's a projectile damage > 0 //If it's a projectile damage > 0
private int _projectileDamage = 0; private int _projectileDamage = 0;
private float _distanceMin = 100f; private float _distanceMin = 100f;
protected virtual void Update()
{
ResizeCollider();
}
void OnTriggerEnter2D(Collider2D other) void OnTriggerEnter2D(Collider2D other)
{ {
//Projectiles detection + damage deal //Projectiles detection + damage deal
@ -82,6 +108,7 @@ public class Detection : MonoBehaviour
} }
//Getter and Setter //Getter and Setter
public Entity EntityLinked public Entity EntityLinked
{ {

View File

@ -1,9 +1,8 @@
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using static Extensions;
public class Entity : LevelObject public abstract class Entity : LevelObject
{ {
//Attribut //Attribut
[SerializeField] [SerializeField]
@ -11,9 +10,9 @@ public class Entity : LevelObject
[SerializeField] [SerializeField]
private float _speed; private float _speed;
[SerializeField] [SerializeField]
private int _attack_damage; private int _attack_damage = 2;
[SerializeField] [SerializeField]
private float _attack_speed; private float _attack_interval = 2;
private float _attack_speed_wait = 0f; private float _attack_speed_wait = 0f;
private AnimationEntity _animation; private AnimationEntity _animation;
private Shader _shaderGUItext; private Shader _shaderGUItext;
@ -30,7 +29,11 @@ public class Entity : LevelObject
_spriteRenderers = GetComponentsInChildren<SpriteRenderer>(); _spriteRenderers = GetComponentsInChildren<SpriteRenderer>();
Animation = gameObject.AddComponent<AnimationEntity>(); Animation = gameObject.AddComponent<AnimationEntity>();
} }
public virtual void Update()
{
Animation.AttackSpeedMultiplier = AttackSpeedMultiplier;
Animation.SpeedMultiplier = SpeedMultiplier;
}
//Start the animation of death and the fading of the entity //Start the animation of death and the fading of the entity
public void Death() public void Death()
{ {
@ -90,35 +93,25 @@ public class Entity : LevelObject
//GETTERS AND SETTERS //GETTERS AND SETTERS
public int Hp public abstract Vector2 RangeMultiplier { get; }
{ public abstract float HpMultiplier { get; }
get { return _hp; } public abstract float SpeedMultiplier { get; }
set { _hp = value; } public abstract float DamageMultiplier { get; }
} public abstract float AttackSpeedMultiplier { get; }
public float Speed public int Hp => (int)(_hp * HpMultiplier);
{
get { return _speed; }
set { _speed = value; }
}
public int AttackDamage public float Speed => _speed * SpeedMultiplier;
{
get { return _attack_damage; }
set { _attack_damage = value; }
}
public float AttackSpeed public int AttackDamage => (int)(_attack_damage * DamageMultiplier);
{
get { return _attack_speed; } public float AttackInterval => _attack_interval / AttackSpeedMultiplier;
set { _attack_speed = value; }
}
public float AttackSpeedWait public float AttackSpeedWait
{ {
get { return _attack_speed_wait; } get { return _attack_speed_wait; }
set { _attack_speed_wait = value; } set { _attack_speed_wait = value; }
} }
public bool IsEnemyDetected public bool IsEnemyDetected
{ {
@ -145,19 +138,17 @@ public class Entity : LevelObject
&& base.Equals(otherEntity) && base.Equals(otherEntity)
&& otherEntity._hp == _hp && otherEntity._hp == _hp
&& otherEntity._speed == _speed && otherEntity._speed == _speed
&& otherEntity._attack_speed == _attack_speed && otherEntity._attack_interval == _attack_interval
&& otherEntity._attack_damage == _attack_damage; && otherEntity._attack_damage == _attack_damage;
} }
public override Dictionary<string, object> ToDictionary() public override Dictionary<string, object> ToDictionary()
{ {
var dict = base.ToDictionary(); var dict = base.ToDictionary();
dict[nameof(_hp)] = _hp; dict[nameof(_hp)] = _hp;
dict[nameof(_speed)] = _speed; 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_damage)] = _attack_damage;
dict[nameof(_attack_speed_wait)] = _attack_speed_wait;
return dict; return dict;
} }
@ -167,9 +158,8 @@ public class Entity : LevelObject
_hp = dict[nameof(_hp)].ToInt(); _hp = dict[nameof(_hp)].ToInt();
_speed = dict[nameof(_speed)].ToFloat(); _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_damage = dict[nameof(_attack_damage)].ToInt();
_attack_speed_wait = dict[nameof(_attack_speed_wait)].ToFloat();
} }
#endregion #endregion
} }

View File

@ -4,6 +4,7 @@ using BindingFlags = System.Reflection.BindingFlags;
using UnityEngine; using UnityEngine;
using System.Collections; using System.Collections;
using GatherAndDefend.LevelEditor; using GatherAndDefend.LevelEditor;
using System.Linq;
public static class Extensions public static class Extensions
{ {
@ -96,4 +97,22 @@ public static class Extensions
{ {
return Vector2.Distance(vect, tilePosition) < 0.5f; return Vector2.Distance(vect, tilePosition) < 0.5f;
} }
public static T Minimum<T>(this IEnumerable<T> list, Func<T, float> func)
{
if (list.Count() < 1) throw new Exception("in " + nameof(Minimum) + " : Cannot find minimum of empty list : " + nameof(list));
T minT = list.ElementAt(0);
float minVal = func(minT);
foreach (var obj in list)
{
var newVal = func(obj);
if (minVal > newVal)
{
minT = obj;
minVal = newVal;
}
}
return minT;
}
} }

View File

@ -0,0 +1,18 @@
using UnityEngine;
public class GlobalConfig : SingletonBehaviour<GlobalConfig>
{
[SerializeField]
private GlobalConfigFile _current;
public GlobalConfigFile Current
{
get
{
if (!_current)
{
_current = ScriptableObject.CreateInstance<GlobalConfigFile>();
}
return _current;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c8f878516c4a3324aa1a9672f8b336c9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,33 @@
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";
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 harvestDuration = 1;
public int harvestAmount = 1;
public bool useRandomHarvestDuration = false;
public int randomHarvestDurationMinimum = 0;
public int randomHarvestDurationMaximum = 0;
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 32e788fd2a7bdaf4ab145b64231cb833
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -4,6 +4,11 @@ using UnityEngine;
public class Opponent : Entity 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 Vector2 _movementVector = Vector2.zero;
private Rigidbody2D _rigidbody; private Rigidbody2D _rigidbody;
@ -16,11 +21,15 @@ public class Opponent : Entity
Animation = gameObject.AddComponent<AnimationEntity>(); Animation = gameObject.AddComponent<AnimationEntity>();
} }
void Update() public override void Update()
{
base.Update();
if(IsEnemyDetected)
{ {
if(IsEnemyDetected) {
AttackEnemy(); AttackEnemy();
}else { }
else
{
_movementVector.x = -Time.deltaTime * Speed; _movementVector.x = -Time.deltaTime * Speed;
transform.position += (Vector3)_movementVector; transform.position += (Vector3)_movementVector;
@ -36,7 +45,7 @@ public class Opponent : Entity
void AttackEnemy() void AttackEnemy()
{ {
//Attack Cooldown //Attack Cooldown
if(AttackSpeed < AttackSpeedWait) if(AttackInterval < AttackSpeedWait)
{ {
Animation.PlayAttackAnim(); Animation.PlayAttackAnim();

View File

@ -5,8 +5,6 @@ using UnityEngine;
/// </summary> /// </summary>
public class ResourceMaker : MonoBehaviour public class ResourceMaker : MonoBehaviour
{ {
[SerializeField]
private int _resourceMakingAmount;
[SerializeField] [SerializeField]
private Enum.ResourceChoice _resourceChoice; private Enum.ResourceChoice _resourceChoice;
private ResourceManager _resourceManagerInstance; private ResourceManager _resourceManagerInstance;
@ -43,6 +41,7 @@ public class ResourceMaker : MonoBehaviour
if (_isPlaying) if (_isPlaying)
{ {
var amount = GlobalConfig.Instance.Current.harvestAmount;
_timePassed += Time.deltaTime; _timePassed += Time.deltaTime;
float duration = _timePassed / _desiredTime; float duration = _timePassed / _desiredTime;
duration = duration * duration * (3.0f - 2.0f * duration); duration = duration * duration * (3.0f - 2.0f * duration);
@ -53,13 +52,13 @@ public class ResourceMaker : MonoBehaviour
switch (_resourceChoice) switch (_resourceChoice)
{ {
case Enum.ResourceChoice.Rock: case Enum.ResourceChoice.Rock:
_resourceManagerInstance.RockAmount = _resourceMakingAmount; _resourceManagerInstance.RockAmount = amount;
break; break;
case Enum.ResourceChoice.Wood: case Enum.ResourceChoice.Wood:
_resourceManagerInstance.WoodAmount = _resourceMakingAmount; _resourceManagerInstance.WoodAmount = amount;
break; break;
case Enum.ResourceChoice.Food: case Enum.ResourceChoice.Food:
_resourceManagerInstance.FoodAmount = _resourceMakingAmount; _resourceManagerInstance.FoodAmount = amount;
break; break;
} }
Destroy(gameObject); Destroy(gameObject);

View File

@ -13,7 +13,7 @@ public class Root : MonoBehaviour
private Transform _projectileSpawn; private Transform _projectileSpawn;
void Attack() { void Attack() {
_entity.Enemy.Hit( _entity.AttackDamage); _entity.Enemy.Hit(_entity.AttackDamage);
if(_entity.Enemy.Hp <= 0) { if(_entity.Enemy.Hp <= 0) {
_entity.Enemy.Death(); _entity.Enemy.Death();
_entity.IsEnemyDetected = false; _entity.IsEnemyDetected = false;

View File

@ -12,47 +12,67 @@ public class ResourceTile : LevelTile
public GameObject YieldPrefab => _yieldPrefab; public GameObject YieldPrefab => _yieldPrefab;
private string YieldPrefabName => _yieldPrefab.name; private string YieldPrefabName => _yieldPrefab.name;
[SerializeField]
private float _yieldSpeed = 1; //resource per second
[SerializeField] [SerializeField]
[Range(0.0f, 5.0f)] [Range(0.0f, 5.0f)]
private float _randomPositionConfig = 0.5f; private float _randomPositionConfig = 0.5f;
private float _yieldCounter = 0; private float _yieldCounter = 0;
public bool Occupied { get; set; }
public override void LevelStart()
{
base.LevelStart();
ResetYieldDuration();
}
public override void LevelUpdate() public override void LevelUpdate()
{ {
//check if there is an harvester unit on top //check if there is an harvester unit on top
var hasFarmer = LevelManager.Instance.Get<Harvester>(x => x.Position.IsContainedIn(Position)); var hasFarmer = LevelManager.Instance.Get<Harvester>(x => x.Position.IsContainedIn(Position));
if (!hasFarmer) return; if (!hasFarmer) return;
_yieldCounter -= Time.deltaTime;
if (_yieldCounter > 0) return;
_yieldCounter += Time.deltaTime * _yieldSpeed; ResetYieldDuration();
if (_yieldCounter < 1) return;
if(_yieldPrefab != null) if (_yieldPrefab != null)
{
YieldResource();
}
}
private void YieldResource()
{ {
_yieldCounter = 0;
float rangeConfig = 0.5f + _randomPositionConfig; float rangeConfig = 0.5f + _randomPositionConfig;
Vector3 yieldPosition = new Vector3(Position.x + Random.Range(-rangeConfig, rangeConfig), Position.y, Position.z); Vector3 yieldPosition = new Vector3(Position.x + Random.Range(-rangeConfig, rangeConfig), Position.y, Position.z);
var yielded = Instantiate(_yieldPrefab, yieldPosition, Quaternion.identity); var yielded = Instantiate(_yieldPrefab, yieldPosition, Quaternion.identity);
yielded.transform.SetParent(LevelManager.Instance.LevelTransform); yielded.transform.SetParent(LevelManager.Instance.LevelTransform);
} }
private void ResetYieldDuration()
{
_yieldCounter = 0;
var config = GlobalConfig.Instance.Current;
if (!config) return;
if (config.useRandomHarvestDuration)
{
float min = config.randomHarvestDurationMinimum,
max = config.randomHarvestDurationMaximum;
_yieldCounter = Random.Range(min, max);
}
else
{
_yieldCounter = config.harvestDuration;
}
} }
public override bool Equals(ILevelObject other) public override bool Equals(ILevelObject other)
{ {
return other is ResourceTile otherRes return other is ResourceTile otherRes
&& base.Equals(otherRes) && base.Equals(otherRes)
&& _yieldPrefab == otherRes._yieldPrefab && _yieldPrefab == otherRes._yieldPrefab;
&& _yieldSpeed == otherRes._yieldSpeed
&& Occupied == otherRes.Occupied;
} }
public override Dictionary<string, object> ToDictionary() public override Dictionary<string, object> ToDictionary()
{ {
var dict = base.ToDictionary(); var dict = base.ToDictionary();
dict[nameof(YieldPrefabName)] = YieldPrefabName; dict[nameof(YieldPrefabName)] = YieldPrefabName;
dict[nameof(_yieldSpeed)] = _yieldSpeed;
dict[nameof(Occupied)] = Occupied;
return dict; return dict;
} }
public override void LoadDictionary(Dictionary<string, object> dict) public override void LoadDictionary(Dictionary<string, object> dict)
@ -60,8 +80,5 @@ public class ResourceTile : LevelTile
base.LoadDictionary(dict); base.LoadDictionary(dict);
var prefabName = dict[nameof(YieldPrefabName)].ToString(); var prefabName = dict[nameof(YieldPrefabName)].ToString();
_yieldPrefab = Database.Instance.Prefabs[prefabName]; _yieldPrefab = Database.Instance.Prefabs[prefabName];
_yieldSpeed = dict[nameof(_yieldSpeed)].ToFloat();
_yieldCounter = dict[nameof(_yieldCounter)].ToFloat();
Occupied = dict[nameof(Occupied)].ToBool();
} }
} }

View File

@ -15,5 +15,5 @@ MonoBehaviour:
_sprite: {fileID: 21300000, guid: ccca3e050cb082b45af0a099790463f6, type: 3} _sprite: {fileID: 21300000, guid: ccca3e050cb082b45af0a099790463f6, type: 3}
_isCollidable: 0 _isCollidable: 0
_yieldPrefab: {fileID: 6962989255644195630, guid: a2dc5d9672c10074fa9c35c12f6339c1, type: 3} _yieldPrefab: {fileID: 6962989255644195630, guid: a2dc5d9672c10074fa9c35c12f6339c1, type: 3}
_yieldSpeed: 0.1 _yieldDuration: 5
_randomPositionConfig: 0.25 _randomPositionConfig: 0.25

View File

@ -15,5 +15,5 @@ MonoBehaviour:
_sprite: {fileID: 21300000, guid: 43582b3c6b60fd144bc56d8ab3b14349, type: 3} _sprite: {fileID: 21300000, guid: 43582b3c6b60fd144bc56d8ab3b14349, type: 3}
_isCollidable: 0 _isCollidable: 0
_yieldPrefab: {fileID: 6962989255644195630, guid: f20569b5452c2b341a95d656b7534b7e, type: 3} _yieldPrefab: {fileID: 6962989255644195630, guid: f20569b5452c2b341a95d656b7534b7e, type: 3}
_yieldSpeed: 0.1 _yieldDuration: 5
_randomPositionConfig: 0.5 _randomPositionConfig: 0.5

View File

@ -15,5 +15,5 @@ MonoBehaviour:
_sprite: {fileID: 21300000, guid: b1e6b8ebeb2e25f4f8c5de93a31dd6a2, type: 3} _sprite: {fileID: 21300000, guid: b1e6b8ebeb2e25f4f8c5de93a31dd6a2, type: 3}
_isCollidable: 0 _isCollidable: 0
_yieldPrefab: {fileID: 6962989255644195630, guid: a2dc5d9672c10074fa9c35c12f6339c1, type: 3} _yieldPrefab: {fileID: 6962989255644195630, guid: a2dc5d9672c10074fa9c35c12f6339c1, type: 3}
_yieldSpeed: 0.1 _yieldDuration: 5
_randomPositionConfig: 0.5 _randomPositionConfig: 0.5

View File

@ -15,5 +15,5 @@ MonoBehaviour:
_sprite: {fileID: 21300000, guid: 6298844400e212d40bce870425ac2a5b, type: 3} _sprite: {fileID: 21300000, guid: 6298844400e212d40bce870425ac2a5b, type: 3}
_isCollidable: 0 _isCollidable: 0
_yieldPrefab: {fileID: 6962989255644195630, guid: 484f0eca1c74ae34694692de56a36739, type: 3} _yieldPrefab: {fileID: 6962989255644195630, guid: 484f0eca1c74ae34694692de56a36739, type: 3}
_yieldSpeed: 0.1 _yieldDuration: 5
_randomPositionConfig: 0.5 _randomPositionConfig: 0.5