From 0b8d2a279ffe21a9ea431e951a5a419b6a9faf49 Mon Sep 17 00:00:00 2001 From: Michal Pikulski Date: Wed, 3 Dec 2025 22:17:12 +0100 Subject: [PATCH] Working MVP --- .../AddressableAssetSettings.asset | 2 +- .../Data/Minigames/FortFight/CeilingFan.asset | 5 +- Assets/Data/Minigames/FortFight/Toaster.asset | 5 +- .../Data/Minigames/FortFight/TrashBag.asset | 10 +- Assets/Data/Minigames/FortFight/Vacumm.asset | 10 +- .../Minigames/FortFight/Projectiles.meta | 8 + .../Projectiles/ImpactExplosion.prefab | 4896 +++++++++++++++++ .../Projectiles/ImpactExplosion.prefab.meta | 7 + .../Projectiles/Projecticle_Toaster.prefab | 174 + .../Projecticle_Toaster.prefab.meta | 7 + .../Projectiles/Projectile_Fan.prefab | 266 + .../Projectiles/Projectile_Fan.prefab.meta | 7 + .../Projectiles/Projectile_Trash.prefab | 173 + .../Projectiles/Projectile_Trash.prefab.meta | 7 + .../Projectiles/Projectile_Vacuum.prefab | 179 + .../Projectiles/Projectile_Vacuum.prefab.meta | 7 + .../FortFight/Projectiles/TrashPiece.prefab | 170 + .../Projectiles/TrashPiece.prefab.meta | 7 + Assets/Prefabs/Minigames/FortFight/UI.meta | 8 + .../Minigames/FortFight/UI/AmmoButton.prefab | 617 +++ .../FortFight/UI/AmmoButton.prefab.meta | 7 + .../FortFight/UI/Player_AmmoPanel.prefab | 863 +++ .../FortFight/UI/Player_AmmoPanel.prefab.meta | 7 + Assets/Scenes/MiniGames/FortFight.unity | 2013 +++++-- .../Core/Settings/SettingsInterfaces.cs | 36 + .../FortFight/AI/FortFightAIController.cs | 14 +- .../FortFight/Core/AmmunitionManager.cs | 308 +- .../FortFight/Core/CameraController.cs | 88 +- .../FortFight/Core/FortFightSettings.cs | 143 +- .../FortFight/Core/ProjectileTurnAction.cs | 51 +- .../FortFight/Core/SlingshotController.cs | 214 +- .../FortFight/Core/TrajectoryPreview.cs | 94 +- .../Minigames/FortFight/Core/TurnManager.cs | 213 +- .../FortFight/Data/FortFightEnums.cs | 6 +- .../FortFight/Data/ProjectileConfig.cs | 94 + .../FortFight/Data/ProjectileConfig.cs.meta | 3 + .../FortFight/Data/ProjectileData.cs | 50 - .../FortFight/Data/ProjectileData.cs.meta | 3 - .../Minigames/FortFight/Fort/FortBlock.cs | 37 +- .../FortFight/FortFightPhase1Tester.cs | 139 - .../FortFight/FortFightPhase1Tester.cs.meta | 2 - .../FortFight/FortFightPhase2Tester.cs | 184 - .../FortFight/FortFightPhase2Tester.cs.meta | 3 - .../Projectiles/CeilingFanProjectile.cs | 145 +- .../FortFight/Projectiles/ProjectileBase.cs | 150 +- .../Projectiles/ToasterProjectile.cs | 17 + .../Projectiles/TrashBagProjectile.cs | 133 +- .../FortFight/Projectiles/TrashPiece.cs | 81 + .../FortFight/Projectiles/TrashPiece.cs.meta | 3 + .../FortFight/Projectiles/VacuumProjectile.cs | 107 +- .../Minigames/FortFight/UI/AmmoButton.cs | 252 + .../Minigames/FortFight/UI/AmmoButton.cs.meta | 3 + .../Minigames/FortFight/UI/AmmunitionPanel.cs | 171 + .../FortFight/UI/AmmunitionPanel.cs.meta | 3 + .../Minigames/FortFight/UI/GameplayPage.cs | 71 +- Assets/Settings/FortFightSettings.asset | 55 +- ProjectSettings/Physics2DSettings.asset | 2 +- ProjectSettings/TagManager.asset | 6 +- 58 files changed, 11037 insertions(+), 1299 deletions(-) create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles.meta create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/ImpactExplosion.prefab create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/ImpactExplosion.prefab.meta create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/Projecticle_Toaster.prefab create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/Projecticle_Toaster.prefab.meta create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Fan.prefab create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Fan.prefab.meta create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Trash.prefab create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Trash.prefab.meta create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Vacuum.prefab create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Vacuum.prefab.meta create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/TrashPiece.prefab create mode 100644 Assets/Prefabs/Minigames/FortFight/Projectiles/TrashPiece.prefab.meta create mode 100644 Assets/Prefabs/Minigames/FortFight/UI.meta create mode 100644 Assets/Prefabs/Minigames/FortFight/UI/AmmoButton.prefab create mode 100644 Assets/Prefabs/Minigames/FortFight/UI/AmmoButton.prefab.meta create mode 100644 Assets/Prefabs/Minigames/FortFight/UI/Player_AmmoPanel.prefab create mode 100644 Assets/Prefabs/Minigames/FortFight/UI/Player_AmmoPanel.prefab.meta create mode 100644 Assets/Scripts/Minigames/FortFight/Data/ProjectileConfig.cs create mode 100644 Assets/Scripts/Minigames/FortFight/Data/ProjectileConfig.cs.meta delete mode 100644 Assets/Scripts/Minigames/FortFight/Data/ProjectileData.cs delete mode 100644 Assets/Scripts/Minigames/FortFight/Data/ProjectileData.cs.meta delete mode 100644 Assets/Scripts/Minigames/FortFight/FortFightPhase1Tester.cs delete mode 100644 Assets/Scripts/Minigames/FortFight/FortFightPhase1Tester.cs.meta delete mode 100644 Assets/Scripts/Minigames/FortFight/FortFightPhase2Tester.cs delete mode 100644 Assets/Scripts/Minigames/FortFight/FortFightPhase2Tester.cs.meta create mode 100644 Assets/Scripts/Minigames/FortFight/Projectiles/TrashPiece.cs create mode 100644 Assets/Scripts/Minigames/FortFight/Projectiles/TrashPiece.cs.meta create mode 100644 Assets/Scripts/Minigames/FortFight/UI/AmmoButton.cs create mode 100644 Assets/Scripts/Minigames/FortFight/UI/AmmoButton.cs.meta create mode 100644 Assets/Scripts/Minigames/FortFight/UI/AmmunitionPanel.cs create mode 100644 Assets/Scripts/Minigames/FortFight/UI/AmmunitionPanel.cs.meta diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset b/Assets/AddressableAssetsData/AddressableAssetSettings.asset index fbd9802e..14a12f2c 100644 --- a/Assets/AddressableAssetsData/AddressableAssetSettings.asset +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset @@ -15,7 +15,7 @@ MonoBehaviour: m_DefaultGroup: 6f3207429a65b3e4b83935ac19791077 m_currentHash: serializedVersion: 2 - Hash: 94be6fe6efc6ce35e614dcae21e98818 + Hash: ab5e2545873f5b7934dc716832e70d83 m_OptimizeCatalogSize: 0 m_BuildRemoteCatalog: 0 m_CatalogRequestsTimeout: 0 diff --git a/Assets/Data/Minigames/FortFight/CeilingFan.asset b/Assets/Data/Minigames/FortFight/CeilingFan.asset index 597717d0..739dcba6 100644 --- a/Assets/Data/Minigames/FortFight/CeilingFan.asset +++ b/Assets/Data/Minigames/FortFight/CeilingFan.asset @@ -12,9 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 973f02063e5446598db4cbffdbf8f113, type: 3} m_Name: CeilingFan m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Data.ProjectileData - projectileName: CeilingFan - prefab: {fileID: 0} - baseDamage: 25 + prefab: {fileID: 4342087378442690536, guid: ff8b62fb437256043aa6bd0b5441316b, type: 3} cooldownTime: 4 icon: {fileID: -765527507412255412, guid: f70246e6148769846aaea223ec0c2a55, type: 3} + displayName: description: diff --git a/Assets/Data/Minigames/FortFight/Toaster.asset b/Assets/Data/Minigames/FortFight/Toaster.asset index e3d2b87a..8a4ef318 100644 --- a/Assets/Data/Minigames/FortFight/Toaster.asset +++ b/Assets/Data/Minigames/FortFight/Toaster.asset @@ -12,9 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 973f02063e5446598db4cbffdbf8f113, type: 3} m_Name: Toaster m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Data.ProjectileData - projectileName: Toaster - prefab: {fileID: 0} - baseDamage: 20 + prefab: {fileID: 4820392328973485589, guid: a4b194a56edefa541b7c3bd7d70c8ba5, type: 3} cooldownTime: 3 icon: {fileID: 6674386295937086461, guid: 3bd1c178a78fcd144965cd1731dc309b, type: 3} + displayName: description: diff --git a/Assets/Data/Minigames/FortFight/TrashBag.asset b/Assets/Data/Minigames/FortFight/TrashBag.asset index 34341a89..3543f804 100644 --- a/Assets/Data/Minigames/FortFight/TrashBag.asset +++ b/Assets/Data/Minigames/FortFight/TrashBag.asset @@ -12,9 +12,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 973f02063e5446598db4cbffdbf8f113, type: 3} m_Name: TrashBag m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Data.ProjectileData - projectileName: TrashBag - prefab: {fileID: 0} - baseDamage: 15 - cooldownTime: 6 - icon: {fileID: 3452003437791708593, guid: 4c13556eeb918624c9dd3d7e4086242e, type: 3} + projectileId: trash-bag + prefab: {fileID: 4015519405310386481, guid: 177c683542fd63a4a9d7e7ecacea596f, type: 3} + cooldownTurns: 2 + icon: {fileID: 8766740682603709380, guid: b0a0abcb5fec95649b581307eca6a444, type: 3} + displayName: description: diff --git a/Assets/Data/Minigames/FortFight/Vacumm.asset b/Assets/Data/Minigames/FortFight/Vacumm.asset index 758c8f13..6f8d0846 100644 --- a/Assets/Data/Minigames/FortFight/Vacumm.asset +++ b/Assets/Data/Minigames/FortFight/Vacumm.asset @@ -12,9 +12,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 973f02063e5446598db4cbffdbf8f113, type: 3} m_Name: Vacumm m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Data.ProjectileData - projectileName: Vacumm - prefab: {fileID: 0} - baseDamage: 30 - cooldownTime: 5 - icon: {fileID: 8766740682603709380, guid: b0a0abcb5fec95649b581307eca6a444, type: 3} + projectileId: vacumm + prefab: {fileID: 4015519405310386481, guid: 4ffc718ecbe281041bc8354567f6e940, type: 3} + cooldownTurns: 2 + icon: {fileID: 3452003437791708593, guid: 4c13556eeb918624c9dd3d7e4086242e, type: 3} + displayName: description: diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles.meta b/Assets/Prefabs/Minigames/FortFight/Projectiles.meta new file mode 100644 index 00000000..d2c96e90 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c0e7378c10fea5438fb9161dcb55165 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/ImpactExplosion.prefab b/Assets/Prefabs/Minigames/FortFight/Projectiles/ImpactExplosion.prefab new file mode 100644 index 00000000..7e2a12b5 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/ImpactExplosion.prefab @@ -0,0 +1,4896 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8132850146457957189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6538825096653188778} + - component: {fileID: 7182164132657675538} + - component: {fileID: 8906472772861713771} + m_Layer: 0 + m_Name: ImpactExplosion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6538825096653188778 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8132850146457957189} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2.61582, y: -7.73078, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!198 &7182164132657675538 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8132850146457957189} + serializedVersion: 8 + lengthInSec: 1 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 0 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + emitterVelocityMode: 1 + looping: 0 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 0 + moveWithCustomTransform: {fileID: 0} + scalingMode: 1 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 5 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + gravitySource: 0 + maxNumParticles: 1000 + customEmitterVelocity: {x: 0, y: 0, z: 0} + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 10 + angle: 25 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0.47 + sphericalDirectionAmount: 0.29 + randomPositionAmount: 0.39 + radius: + value: 1 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 1 + m_Bursts: + - serializedVersion: 2 + time: 0 + countCurve: + serializedVersion: 2 + minMaxState: 1 + scalar: 50 + minScalar: 30 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + cycleCount: 2 + repeatInterval: 0.01 + probability: 1 + SizeModule: + enabled: 1 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.12269938 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LifetimeByEmitterSpeedModule: + enabled: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: -0.8 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.2 + inSlope: -0.8 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Range: {x: 0, y: 1} + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 0 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 1 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 4 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + m_Planes: [] + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 0 + TriggerModule: + enabled: 0 + serializedVersion: 2 + inside: 1 + outside: 0 + enter: 0 + exit: 0 + colliderQueryMode: 0 + radiusScale: 1 + primitives: [] + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + textureScale: {x: 1, y: 1} + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!199 &8906472772861713771 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8132850146457957189} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_RenderMode: 0 + m_MeshDistribution: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_EnableGPUInstancing: 1 + m_ApplyActiveColorSpace: 1 + m_AllowRoll: 1 + m_FreeformStretching: 0 + m_RotateWithStretchDirection: 1 + m_UseCustomVertexStreams: 0 + m_VertexStreams: 00010304 + m_UseCustomTrailVertexStreams: 0 + m_TrailVertexStreams: 00010304 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MeshWeighting: 1 + m_MeshWeighting1: 1 + m_MeshWeighting2: 1 + m_MeshWeighting3: 1 + m_MaskInteraction: 0 diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/ImpactExplosion.prefab.meta b/Assets/Prefabs/Minigames/FortFight/Projectiles/ImpactExplosion.prefab.meta new file mode 100644 index 00000000..308844ff --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/ImpactExplosion.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8872d26b5cf881c48b49f19f62f057f0 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/Projecticle_Toaster.prefab b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projecticle_Toaster.prefab new file mode 100644 index 00000000..6811ecc6 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projecticle_Toaster.prefab @@ -0,0 +1,174 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4820392328973485589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7720680877080653511} + - component: {fileID: 7443668876430426293} + - component: {fileID: 7264884308852669058} + - component: {fileID: 4427156681582364024} + - component: {fileID: 5656006159940088837} + m_Layer: 0 + m_Name: Projecticle_Toaster + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7720680877080653511 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4820392328973485589} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -14.73, y: -5.69, z: 0} + m_LocalScale: {x: 2.12, y: 2.12, z: 2.12} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!50 &7443668876430426293 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4820392328973485589} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!58 &7264884308852669058 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4820392328973485589} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_Radius: 0.5 +--- !u!212 &4427156681582364024 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4820392328973485589} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 6674386295937086461, guid: 3bd1c178a78fcd144965cd1731dc309b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.79, y: 0.62} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &5656006159940088837 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4820392328973485589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6ecf658b5965496abda845de1a28e227, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Projectiles.ToasterProjectile + damage: 20 + mass: 1 + spriteRenderer: {fileID: 4427156681582364024} + impactEffectPrefab: {fileID: 8132850146457957189, guid: 8872d26b5cf881c48b49f19f62f057f0, type: 3} diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/Projecticle_Toaster.prefab.meta b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projecticle_Toaster.prefab.meta new file mode 100644 index 00000000..27ccacca --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projecticle_Toaster.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a4b194a56edefa541b7c3bd7d70c8ba5 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Fan.prefab b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Fan.prefab new file mode 100644 index 00000000..3e537689 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Fan.prefab @@ -0,0 +1,266 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4342087378442690536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6135800783835399381} + - component: {fileID: 8716398811558848928} + - component: {fileID: 4840876230127075284} + - component: {fileID: 5483057232976436363} + - component: {fileID: 924610570851376059} + m_Layer: 0 + m_Name: Projectile_Fan + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6135800783835399381 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4342087378442690536} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -14.73, y: -5.69, z: 0} + m_LocalScale: {x: 2.12, y: 2.12, z: 2.12} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 1193836914283369334} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!50 &8716398811558848928 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4342087378442690536} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!58 &4840876230127075284 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4342087378442690536} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_Radius: 0.5 +--- !u!212 &5483057232976436363 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4342087378442690536} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -765527507412255412, guid: f70246e6148769846aaea223ec0c2a55, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.79, y: 0.62} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &924610570851376059 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4342087378442690536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e10ba9bd4bcd40da87ecb3efe5b78467, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Projectiles.CeilingFanProjectile + spriteRenderer: {fileID: 5483057232976436363} + impactEffectPrefab: {fileID: 8132850146457957189, guid: 8872d26b5cf881c48b49f19f62f057f0, type: 3} + dropSpeed: 20 + dropDelay: 0.2 + indicator: {fileID: 7427261821782179495} +--- !u!1 &7427261821782179495 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1193836914283369334} + - component: {fileID: 4082675289326321460} + m_Layer: 0 + m_Name: ArrowDown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1193836914283369334 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7427261821782179495} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1.09, z: 0} + m_LocalScale: {x: 0.4078, y: 0.4078, z: 0.4078} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6135800783835399381} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &4082675289326321460 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7427261821782179495} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -4346244404228752641, guid: 7b5d036a9fa30484e911f4752e3a64c8, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.61, y: 3.08} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Fan.prefab.meta b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Fan.prefab.meta new file mode 100644 index 00000000..62a161ef --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Fan.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ff8b62fb437256043aa6bd0b5441316b +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Trash.prefab b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Trash.prefab new file mode 100644 index 00000000..f59c1420 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Trash.prefab @@ -0,0 +1,173 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4015519405310386481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1820106441296487268} + - component: {fileID: 5065973586175064819} + - component: {fileID: 5096150048676858183} + - component: {fileID: 6069829950902409272} + - component: {fileID: 6431354022734802106} + m_Layer: 0 + m_Name: Projectile_Trash + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1820106441296487268 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4015519405310386481} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -14.73, y: -5.69, z: 0} + m_LocalScale: {x: 2.12, y: 2.12, z: 2.12} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!50 &5065973586175064819 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4015519405310386481} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!58 &5096150048676858183 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4015519405310386481} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_Radius: 0.5 +--- !u!212 &6069829950902409272 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4015519405310386481} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 8766740682603709380, guid: b0a0abcb5fec95649b581307eca6a444, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.79, y: 0.62} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &6431354022734802106 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4015519405310386481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0996e59b91e48f8a542ab9294b11a74, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Projectiles.TrashBagProjectile + spriteRenderer: {fileID: 6069829950902409272} + impactEffectPrefab: {fileID: 0} + trashPiecePrefab: {fileID: 2420282101973676341, guid: da828432c72519c41af1f118c1d2d32a, type: 3} diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Trash.prefab.meta b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Trash.prefab.meta new file mode 100644 index 00000000..7e497b05 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Trash.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 177c683542fd63a4a9d7e7ecacea596f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Vacuum.prefab b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Vacuum.prefab new file mode 100644 index 00000000..d996f13a --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Vacuum.prefab @@ -0,0 +1,179 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4015519405310386481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1820106441296487268} + - component: {fileID: 5065973586175064819} + - component: {fileID: 5096150048676858183} + - component: {fileID: 6069829950902409272} + - component: {fileID: 6444071677531371543} + m_Layer: 0 + m_Name: Projectile_Vacuum + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1820106441296487268 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4015519405310386481} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -14.73, y: -5.69, z: 0} + m_LocalScale: {x: 0.55, y: 0.55, z: 0.55} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!50 &5065973586175064819 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4015519405310386481} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!58 &5096150048676858183 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4015519405310386481} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_Radius: 1.47 +--- !u!212 &6069829950902409272 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4015519405310386481} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 3452003437791708593, guid: 4c13556eeb918624c9dd3d7e4086242e, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.79, y: 0.62} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &6444071677531371543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4015519405310386481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bb85d181808c411b8bd1335aa7d35257, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Projectiles.VacuumProjectile + damage: 20 + mass: 5 + spriteRenderer: {fileID: 6069829950902409272} + impactEffectPrefab: {fileID: 8132850146457957189, guid: 8872d26b5cf881c48b49f19f62f057f0, type: 3} + slideSpeed: 10 + slideDuration: 2 + groundLayer: + serializedVersion: 2 + m_Bits: 16385 diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Vacuum.prefab.meta b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Vacuum.prefab.meta new file mode 100644 index 00000000..1ead9007 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/Projectile_Vacuum.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4ffc718ecbe281041bc8354567f6e940 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/TrashPiece.prefab b/Assets/Prefabs/Minigames/FortFight/Projectiles/TrashPiece.prefab new file mode 100644 index 00000000..2485e55f --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/TrashPiece.prefab @@ -0,0 +1,170 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2420282101973676341 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 241074338358760369} + - component: {fileID: 5429206645950534442} + - component: {fileID: 2897071451541676558} + - component: {fileID: 5662209331708671128} + - component: {fileID: 4567591556028898529} + m_Layer: 15 + m_Name: TrashPiece + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &241074338358760369 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2420282101973676341} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -7.14251, y: -4.81934, z: 0} + m_LocalScale: {x: 0.41, y: 0.41, z: 0.41} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &5429206645950534442 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2420282101973676341} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 4056058344551517612, guid: 389219560116e714283bd8edd52f125f, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 2.05, y: 1.36} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!50 &2897071451541676558 +Rigidbody2D: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2420282101973676341} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDamping: 0 + m_AngularDamping: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!58 &5662209331708671128 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2420282101973676341} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_Radius: 1.025 +--- !u!114 &4567591556028898529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2420282101973676341} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 516daf2ce7384aaa94fd5e0f7a3cf078, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Projectiles.TrashPiece diff --git a/Assets/Prefabs/Minigames/FortFight/Projectiles/TrashPiece.prefab.meta b/Assets/Prefabs/Minigames/FortFight/Projectiles/TrashPiece.prefab.meta new file mode 100644 index 00000000..eb7747c3 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/Projectiles/TrashPiece.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: da828432c72519c41af1f118c1d2d32a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/FortFight/UI.meta b/Assets/Prefabs/Minigames/FortFight/UI.meta new file mode 100644 index 00000000..5f4696e9 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ea69ab311a50bf4fa62ee52b49ec12c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/FortFight/UI/AmmoButton.prefab b/Assets/Prefabs/Minigames/FortFight/UI/AmmoButton.prefab new file mode 100644 index 00000000..8e0e5dd7 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/UI/AmmoButton.prefab @@ -0,0 +1,617 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2531541943888059757 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5547347229024929185} + - component: {fileID: 5401206366902621396} + m_Layer: 5 + m_Name: AmmoButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5547347229024929185 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2531541943888059757} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8404601832845600546} + - {fileID: 5209091951854750408} + - {fileID: 7509790308074872949} + - {fileID: 5308022048675937646} + - {fileID: 5860665860160112256} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 250} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5401206366902621396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2531541943888059757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d18726bad651464fbc4e49f8c95c0c37, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.UI.AmmoButton + iconImage: {fileID: 1292715515741235591} + cooldownBackgroundImage: {fileID: 6649587367082175822} + cooldownFillImage: {fileID: 4230072852917573804} + turnsRemainingText: {fileID: 9017755476257925041} + button: {fileID: 7156561986366282969} + selectedIndicator: {fileID: 4902599675820783363} +--- !u!1 &3901870519506060674 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7509790308074872949} + - component: {fileID: 2705585925341768566} + - component: {fileID: 6649587367082175822} + - component: {fileID: 8175154043102998346} + m_Layer: 5 + m_Name: CooldownBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7509790308074872949 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3901870519506060674} + 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: 5547347229024929185} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2705585925341768566 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3901870519506060674} + m_CullTransparentMesh: 1 +--- !u!114 &6649587367082175822 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3901870519506060674} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.39215687} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -375496539, guid: 91cb3ae9a614f914997704a638d8b514, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 0 + m_FillOrigin: 2 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8175154043102998346 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3901870519506060674} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 86710e43de46f6f4bac7c8e50813a599, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.AspectRatioFitter + m_AspectMode: 3 + m_AspectRatio: 1 +--- !u!1 &4902599675820783363 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8404601832845600546} + - component: {fileID: 7897441411349867904} + - component: {fileID: 7539021912128058554} + - component: {fileID: 8444687236839044743} + m_Layer: 5 + m_Name: Glow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8404601832845600546 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4902599675820783363} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.73, y: 1.73, z: 1.73} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 5547347229024929185} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7897441411349867904 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4902599675820783363} + m_CullTransparentMesh: 1 +--- !u!114 &7539021912128058554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4902599675820783363} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -8836962644236845764, guid: c5cc7367a37a7944abb3876352b0e0ff, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8444687236839044743 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4902599675820783363} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 86710e43de46f6f4bac7c8e50813a599, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.AspectRatioFitter + m_AspectMode: 3 + m_AspectRatio: 1 +--- !u!1 &5631747237242774678 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5860665860160112256} + - component: {fileID: 553452135861179838} + - component: {fileID: 9017755476257925041} + - component: {fileID: 3204967838938883920} + m_Layer: 5 + m_Name: CooldownCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5860665860160112256 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5631747237242774678} + 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: 5547347229024929185} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &553452135861179838 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5631747237242774678} + m_CullTransparentMesh: 1 +--- !u!114 &9017755476257925041 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5631747237242774678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 5 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 4aca0db6ec111b5418bdc747168f9474, type: 2} + m_sharedMaterial: {fileID: -1441574381962284772, guid: 4aca0db6ec111b5418bdc747168f9474, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 100 + m_fontSizeBase: 100 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &3204967838938883920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5631747237242774678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 86710e43de46f6f4bac7c8e50813a599, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.AspectRatioFitter + m_AspectMode: 3 + m_AspectRatio: 1 +--- !u!1 &5744229847348998137 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5308022048675937646} + - component: {fileID: 7806188825550789684} + - component: {fileID: 4230072852917573804} + - component: {fileID: 5298362292334641366} + m_Layer: 5 + m_Name: CooldownFill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5308022048675937646 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5744229847348998137} + 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: 5547347229024929185} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7806188825550789684 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5744229847348998137} + m_CullTransparentMesh: 1 +--- !u!114 &4230072852917573804 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5744229847348998137} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.39215687} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -375496539, guid: 91cb3ae9a614f914997704a638d8b514, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 0 + m_FillOrigin: 2 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5298362292334641366 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5744229847348998137} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 86710e43de46f6f4bac7c8e50813a599, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.AspectRatioFitter + m_AspectMode: 3 + m_AspectRatio: 1 +--- !u!1 &6375846952096027156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5209091951854750408} + - component: {fileID: 333739704463047820} + - component: {fileID: 2948614565164427980} + - component: {fileID: 1292715515741235591} + - component: {fileID: 7156561986366282969} + m_Layer: 5 + m_Name: Visual + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5209091951854750408 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6375846952096027156} + 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: 5547347229024929185} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &333739704463047820 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6375846952096027156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 86710e43de46f6f4bac7c8e50813a599, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.AspectRatioFitter + m_AspectMode: 3 + m_AspectRatio: 1 +--- !u!222 &2948614565164427980 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6375846952096027156} + m_CullTransparentMesh: 1 +--- !u!114 &1292715515741235591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6375846952096027156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7156561986366282969 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6375846952096027156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1292715515741235591} + m_OnClick: + m_PersistentCalls: + m_Calls: [] diff --git a/Assets/Prefabs/Minigames/FortFight/UI/AmmoButton.prefab.meta b/Assets/Prefabs/Minigames/FortFight/UI/AmmoButton.prefab.meta new file mode 100644 index 00000000..45db41ad --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/UI/AmmoButton.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 009a94a95f1662441bf9e52311bfbd70 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/FortFight/UI/Player_AmmoPanel.prefab b/Assets/Prefabs/Minigames/FortFight/UI/Player_AmmoPanel.prefab new file mode 100644 index 00000000..5a1cabb0 --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/UI/Player_AmmoPanel.prefab @@ -0,0 +1,863 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6730781524121181368 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2148236734266076239} + - component: {fileID: 1621117865532798199} + - component: {fileID: 1107058815159810064} + m_Layer: 5 + m_Name: Player_AmmoPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2148236734266076239 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6730781524121181368} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4741534808117833349} + - {fileID: 807375318505295058} + - {fileID: 4535308774383573099} + - {fileID: 3766327015481308810} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -50, y: 50} + m_SizeDelta: {x: 700, y: 150} + m_Pivot: {x: 1, y: 0} +--- !u!114 &1621117865532798199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6730781524121181368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 50 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &1107058815159810064 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6730781524121181368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1963617e4d104c199c3a66d671b8d8a2, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.UI.AmmunitionPanel + playerIndex: 0 + ammunitionManager: {fileID: 0} + slingshotController: {fileID: 0} + turnManager: {fileID: 0} + ammoButtons: + - {fileID: 5171683449295814640} + - {fileID: 953793249169202599} + - {fileID: 4105159935502846238} + - {fileID: 3624408192042149887} + panelRoot: {fileID: 6730781524121181368} +--- !u!1001 &950666481065274148 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2148236734266076239} + m_Modifications: + - target: {fileID: 2531541943888059757, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Name + value: AmmoButton + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 250 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} +--- !u!224 &4741534808117833349 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + m_PrefabInstance: {fileID: 950666481065274148} + m_PrefabAsset: {fileID: 0} +--- !u!114 &5171683449295814640 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5401206366902621396, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + m_PrefabInstance: {fileID: 950666481065274148} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d18726bad651464fbc4e49f8c95c0c37, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.UI.AmmoButton +--- !u!1001 &5172522139070908787 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2148236734266076239} + m_Modifications: + - target: {fileID: 2531541943888059757, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Name + value: AmmoButton2 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 250 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} +--- !u!224 &807375318505295058 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + m_PrefabInstance: {fileID: 5172522139070908787} + m_PrefabAsset: {fileID: 0} +--- !u!114 &953793249169202599 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5401206366902621396, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + m_PrefabInstance: {fileID: 5172522139070908787} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d18726bad651464fbc4e49f8c95c0c37, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.UI.AmmoButton +--- !u!1001 &8218090363695341002 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2148236734266076239} + m_Modifications: + - target: {fileID: 2531541943888059757, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Name + value: AmmoButton3 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 250 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} +--- !u!114 &4105159935502846238 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5401206366902621396, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + m_PrefabInstance: {fileID: 8218090363695341002} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d18726bad651464fbc4e49f8c95c0c37, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.UI.AmmoButton +--- !u!224 &4535308774383573099 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + m_PrefabInstance: {fileID: 8218090363695341002} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8698857294231712555 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2148236734266076239} + m_Modifications: + - target: {fileID: 2531541943888059757, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Name + value: AmmoButton4 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5209091951854750408, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5308022048675937646, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 250 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5860665860160112256, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7509790308074872949, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8404601832845600546, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} +--- !u!114 &3624408192042149887 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5401206366902621396, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + m_PrefabInstance: {fileID: 8698857294231712555} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d18726bad651464fbc4e49f8c95c0c37, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.UI.AmmoButton +--- !u!224 &3766327015481308810 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5547347229024929185, guid: 009a94a95f1662441bf9e52311bfbd70, type: 3} + m_PrefabInstance: {fileID: 8698857294231712555} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Minigames/FortFight/UI/Player_AmmoPanel.prefab.meta b/Assets/Prefabs/Minigames/FortFight/UI/Player_AmmoPanel.prefab.meta new file mode 100644 index 00000000..9616325b --- /dev/null +++ b/Assets/Prefabs/Minigames/FortFight/UI/Player_AmmoPanel.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/MiniGames/FortFight.unity b/Assets/Scenes/MiniGames/FortFight.unity index e0c418d0..3bfbc26f 100644 --- a/Assets/Scenes/MiniGames/FortFight.unity +++ b/Assets/Scenes/MiniGames/FortFight.unity @@ -119,6 +119,96 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &56461669 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 56461670} + - component: {fileID: 56461671} + m_Layer: 0 + m_Name: TMP_VISUAL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &56461670 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 56461669} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: 0.9252923, w: -0.3792547} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1460473367} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -495.425} +--- !u!212 &56461671 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 56461669} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -4346244404228752641, guid: 7b5d036a9fa30484e911f4752e3a64c8, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.61, y: 3.08} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &56781261 GameObject: m_ObjectHideFlags: 0 @@ -220,7 +310,7 @@ Transform: m_GameObject: {fileID: 92149714} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -10, y: 1.5, z: 0} + m_LocalPosition: {x: -14.45, y: 1.5, z: 0} m_LocalScale: {x: 1.2903013, y: 1.2903013, z: 1.2903013} m_ConstrainProportionsScale: 0 m_Children: [] @@ -625,6 +715,43 @@ Transform: - {fileID: 799036564} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &242361349 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 242361350} + m_Layer: 5 + m_Name: AmmoControls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &242361350 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 242361349} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 669775910} + - {fileID: 2126145556} + m_Father: {fileID: 1585033672} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &298557364 GameObject: m_ObjectHideFlags: 0 @@ -726,7 +853,7 @@ Transform: m_GameObject: {fileID: 377753195} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 10, y: 3.4, z: 0} + m_LocalPosition: {x: 14.5, y: 3.4, z: 0} m_LocalScale: {x: 16.29907, y: 16.29907, z: 16.29907} m_ConstrainProportionsScale: 0 m_Children: [] @@ -976,6 +1103,37 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 490925382} m_CullTransparentMesh: 1 +--- !u!1 &497509524 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 497509525} + m_Layer: 0 + m_Name: ProjectileSpawn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &497509525 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 497509524} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.07, y: 0.94, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1460473367} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &501271718 GameObject: m_ObjectHideFlags: 0 @@ -1216,10 +1374,15 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 74f26236978245cdaf33909a7c242cbf, type: 3} m_Name: m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.FortFightPhase2Tester + _isRegistered: 0 + _cachedSaveId: enableKeyboardControls: 1 testDamageAmount: 25 autoTestOnStart: 0 autoTestDelay: 2 + fortManager: {fileID: 0} + playerFort: {fileID: 0} + enemyFort: {fileID: 0} --- !u!4 &534849268 Transform: m_ObjectHideFlags: 0 @@ -1368,7 +1531,7 @@ GameObject: - component: {fileID: 570857723} - component: {fileID: 570857722} - component: {fileID: 570857721} - m_Layer: 0 + m_Layer: 14 m_Name: Ground m_TagString: Untagged m_Icon: {fileID: 0} @@ -1757,7 +1920,6 @@ GameObject: m_Component: - component: {fileID: 630420672} - component: {fileID: 630420675} - - component: {fileID: 630420674} m_Layer: 0 m_Name: Player2_Cam m_TagString: Untagged @@ -1774,31 +1936,12 @@ Transform: m_GameObject: {fileID: 630420671} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 15.07, y: -12.2, z: -10} + m_LocalPosition: {x: 14.3, y: -2, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &630420674 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 630420671} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b617507da6d07e749b7efdb34e1173e1, type: 3} - m_Name: - m_EditorClassIdentifier: - TrackerSettings: - BindingMode: 4 - PositionDamping: {x: 2, y: 0.5, z: 1} - AngularDampingMode: 0 - RotationDamping: {x: 1, y: 1, z: 1} - QuaternionDamping: 1 - FollowOffset: {x: 0, y: 0, z: -10} --- !u!114 &630420675 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1819,7 +1962,7 @@ MonoBehaviour: m_StreamingVersion: 20241001 m_LegacyPriority: 0 Target: - TrackingTarget: {fileID: 799036564} + TrackingTarget: {fileID: 0} LookAtTarget: {fileID: 0} CustomLookAtTarget: 0 Lens: @@ -1842,6 +1985,11 @@ MonoBehaviour: BarrelClipping: 0.25 Anamorphism: 0 BlendHint: 0 +--- !u!224 &669775910 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + m_PrefabInstance: {fileID: 428622665700748139} + m_PrefabAsset: {fileID: 0} --- !u!1 &679262289 GameObject: m_ObjectHideFlags: 0 @@ -2189,127 +2337,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 716790031} m_CullTransparentMesh: 1 ---- !u!1 &756408839 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 756408840} - - component: {fileID: 756408843} - - component: {fileID: 756408842} - - component: {fileID: 756408841} - m_Layer: 5 - m_Name: Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &756408840 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 756408839} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1866142928} - m_Father: {fileID: 2046658386} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &756408841 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 756408839} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 756408842} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &756408842 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 756408839} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &756408843 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 756408839} - m_CullTransparentMesh: 1 --- !u!1 &799036563 GameObject: m_ObjectHideFlags: 0 @@ -2340,8 +2367,186 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 377753196} + - {fileID: 1460473367} m_Father: {fileID: 204905895} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &841922113 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 841922114} + - component: {fileID: 841922117} + - component: {fileID: 841922116} + - component: {fileID: 841922115} + m_Layer: 0 + m_Name: SlingShot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &841922114 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 841922113} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10.26, y: 4.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1668202570} + - {fileID: 1448546925} + m_Father: {fileID: 1009687014} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &841922115 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 841922113} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b1e26667c6d4415f8dc51e4a58ba9479, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Core.TrajectoryPreview + simulationSteps: 50 + lineColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + lineWidth: 0.1 +--- !u!120 &841922116 +LineRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 841922113} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MaskInteraction: 0 + m_UseWorldSpace: 1 + m_Loop: 0 + m_ApplyActiveColorSpace: 1 +--- !u!114 &841922117 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 841922113} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fc81b72132764f09a0ba180c90b432cf, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Core.SlingshotController + maxDragDistance: 5 + projectileSpawnPoint: {fileID: 1668202570} + trajectoryPreview: {fileID: 0} + showDebugLogs: 1 --- !u!1 &846792101 GameObject: m_ObjectHideFlags: 0 @@ -2352,7 +2557,6 @@ GameObject: m_Component: - component: {fileID: 846792102} - component: {fileID: 846792105} - - component: {fileID: 846792104} m_Layer: 0 m_Name: Player1_Cam m_TagString: Untagged @@ -2369,31 +2573,12 @@ Transform: m_GameObject: {fileID: 846792101} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -16.1, y: -12.2, z: -10} + m_LocalPosition: {x: -14.5, y: -2, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &846792104 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 846792101} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b617507da6d07e749b7efdb34e1173e1, type: 3} - m_Name: - m_EditorClassIdentifier: - TrackerSettings: - BindingMode: 4 - PositionDamping: {x: 2, y: 0.5, z: 1} - AngularDampingMode: 0 - RotationDamping: {x: 1, y: 1, z: 1} - QuaternionDamping: 1 - FollowOffset: {x: 0, y: 0, z: -10} --- !u!114 &846792105 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2414,7 +2599,7 @@ MonoBehaviour: m_StreamingVersion: 20241001 m_LegacyPriority: 0 Target: - TrackingTarget: {fileID: 1009687014} + TrackingTarget: {fileID: 0} LookAtTarget: {fileID: 0} CustomLookAtTarget: 0 Lens: @@ -2506,7 +2691,7 @@ Transform: m_GameObject: {fileID: 858149303} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalPosition: {x: 0, y: 9.1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -2661,6 +2846,7 @@ GameObject: - component: {fileID: 878268910} - component: {fileID: 878268909} - component: {fileID: 878268912} + - component: {fileID: 878268913} m_Layer: 0 m_Name: ForFightGameManager m_TagString: Untagged @@ -2708,6 +2894,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c0b22cad084c0ba44b522474269c2c4b, type: 3} m_Name: m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Core.TurnManager + playerOneSlingshotController: {fileID: 841922117} + playerTwoSlingshotController: {fileID: 1460473370} + ammunitionManager: {fileID: 878268913} + cameraController: {fileID: 1674657452} --- !u!114 &878268911 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2744,6 +2934,20 @@ MonoBehaviour: playerSpawnPoint: {fileID: 1009687014} enemySpawnPoint: {fileID: 799036564} useDebugForts: 0 +--- !u!114 &878268913 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878268907} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4701ebc78fda468e9d8f3cf7fa7ee9f3, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Core.AmmunitionManager + defaultProjectileType: 0 + showDebugLogs: 1 --- !u!1 &1007359450 GameObject: m_ObjectHideFlags: 0 @@ -2805,6 +3009,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 92149715} + - {fileID: 841922114} m_Father: {fileID: 204905895} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1156219948 @@ -3854,6 +4059,273 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1410755663} m_CullTransparentMesh: 1 +--- !u!1 &1448546924 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1448546925} + - component: {fileID: 1448546926} + m_Layer: 0 + m_Name: TMP_VISUAL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1448546925 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1448546924} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.9224535, w: -0.38610816} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 841922114} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -225.425} +--- !u!212 &1448546926 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1448546924} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -4346244404228752641, guid: 7b5d036a9fa30484e911f4752e3a64c8, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.61, y: 3.08} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &1460473366 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1460473367} + - component: {fileID: 1460473370} + - component: {fileID: 1460473369} + - component: {fileID: 1460473368} + m_Layer: 0 + m_Name: SlingShot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1460473367 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1460473366} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 10, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 497509525} + - {fileID: 56461670} + m_Father: {fileID: 799036564} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1460473368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1460473366} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b1e26667c6d4415f8dc51e4a58ba9479, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Core.TrajectoryPreview + simulationSteps: 30 + lineColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + lineWidth: 0.1 +--- !u!120 &1460473369 +LineRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1460473366} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MaskInteraction: 0 + m_UseWorldSpace: 1 + m_Loop: 0 + m_ApplyActiveColorSpace: 1 +--- !u!114 &1460473370 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1460473366} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fc81b72132764f09a0ba180c90b432cf, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.FortFight.Core.SlingshotController + maxDragDistance: 5 + projectileSpawnPoint: {fileID: 497509525} + trajectoryPreview: {fileID: 0} + showDebugLogs: 1 --- !u!1 &1572990036 GameObject: m_ObjectHideFlags: 0 @@ -3952,9 +4424,9 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1787332576} - - {fileID: 2046658386} - {fileID: 1355330056} - {fileID: 1286877329} + - {fileID: 242361350} m_Father: {fileID: 1156219952} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -3990,11 +4462,135 @@ MonoBehaviour: transitionDuration: 0.3 turnIndicatorText: {fileID: 868008369} currentPlayerText: {fileID: 1192355917} - takeActionButton: {fileID: 756408841} - actionButtonText: {fileID: 1866142929} canvasGroup: {fileID: 1585033673} - playerActionPanel: {fileID: 2046658385} + playerActionPanel: {fileID: 0} aiTurnPanel: {fileID: 1355330055} +--- !u!1 &1592155788 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1592155791} + - component: {fileID: 1592155790} + - component: {fileID: 1592155789} + m_Layer: 0 + m_Name: Projectile_Cam + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1592155789 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1592155788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b617507da6d07e749b7efdb34e1173e1, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.Cinemachine::Unity.Cinemachine.CinemachineFollow + TrackerSettings: + BindingMode: 4 + PositionDamping: {x: 1, y: 1, z: 1} + AngularDampingMode: 0 + RotationDamping: {x: 1, y: 1, z: 1} + QuaternionDamping: 1 + FollowOffset: {x: 0, y: 0, z: -10} +--- !u!114 &1592155790 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1592155788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f9dfa5b682dcd46bda6128250e975f58, type: 3} + m_Name: + m_EditorClassIdentifier: + Priority: + Enabled: 1 + m_Value: 10 + OutputChannel: 1 + StandbyUpdate: 2 + m_StreamingVersion: 20241001 + m_LegacyPriority: 0 + Target: + TrackingTarget: {fileID: 0} + LookAtTarget: {fileID: 0} + CustomLookAtTarget: 0 + Lens: + FieldOfView: 60 + OrthographicSize: 15 + NearClipPlane: 0.3 + FarClipPlane: 1000 + Dutch: 0 + ModeOverride: 0 + PhysicalProperties: + GateFit: 2 + SensorSize: {x: 21.946, y: 16.002} + LensShift: {x: 0, y: 0} + FocusDistance: 10 + Iso: 200 + ShutterSpeed: 0.005 + Aperture: 16 + BladeCount: 5 + Curvature: {x: 2, y: 11} + BarrelClipping: 0.25 + Anamorphism: 0 + BlendHint: 0 +--- !u!4 &1592155791 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1592155788} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1668202569 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1668202570} + m_Layer: 0 + m_Name: ProjectileSpawn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1668202570 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1668202569} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.04, y: 1.11, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 841922114} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1674657451 GameObject: m_ObjectHideFlags: 0 @@ -4027,8 +4623,8 @@ MonoBehaviour: wideViewCamera: {fileID: 858149304} playerOneCamera: {fileID: 846792105} playerTwoCamera: {fileID: 630420675} + projectileCamera: {fileID: 1592155790} turnManager: {fileID: 878268910} - useWideViewTransitions: 1 --- !u!4 &1674657453 Transform: m_ObjectHideFlags: 0 @@ -4378,7 +4974,7 @@ Transform: m_GameObject: {fileID: 1810521056} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalPosition: {x: 0, y: 9.1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -4520,142 +5116,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1817075751} m_CullTransparentMesh: 1 ---- !u!1 &1866142927 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1866142928} - - component: {fileID: 1866142930} - - component: {fileID: 1866142929} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1866142928 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1866142927} - 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: 756408840} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1866142929 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1866142927} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: Take Action - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 4aca0db6ec111b5418bdc747168f9474, type: 2} - m_sharedMaterial: {fileID: -1441574381962284772, guid: 4aca0db6ec111b5418bdc747168f9474, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4278190080 - m_fontColor: {r: 0, g: 0, b: 0, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 62.4 - m_fontSizeBase: 62.4 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 1 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_TextWrappingMode: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 0 - m_ActiveFontFeatures: 6e72656b - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_EmojiFallbackSupport: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1866142930 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1866142927} - m_CullTransparentMesh: 1 --- !u!1 &2036414578 GameObject: m_ObjectHideFlags: 0 @@ -4727,69 +5187,6 @@ MonoBehaviour: twoPlayerButton: {fileID: 552665971} titleText: {fileID: 692393850} canvasGroup: {fileID: 2036414580} ---- !u!1 &2046658385 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2046658386} - - component: {fileID: 2046658387} - m_Layer: 5 - m_Name: PlayerActionPanel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2046658386 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2046658385} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 756408840} - m_Father: {fileID: 1585033672} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 300, y: 300} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2046658387 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2046658385} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.VerticalLayoutGroup - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 0 - m_Spacing: 0 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 --- !u!1 &2071632754 GameObject: m_ObjectHideFlags: 0 @@ -4852,6 +5249,873 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &2126145555 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 242361350} + m_Modifications: + - target: {fileID: 481781198721710824, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 481781198721710824, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 481781198721710824, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 807375318505295058, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 807375318505295058, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 807375318505295058, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 807375318505295058, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 807375318505295058, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 872475983157187593, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 872475983157187593, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 872475983157187593, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1036281552690967581, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1036281552690967581, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1036281552690967581, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1107058815159810064, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: playerIndex + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1107058815159810064, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: turnManager + value: + objectReference: {fileID: 878268910} + - target: {fileID: 1107058815159810064, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: ammunitionManager + value: + objectReference: {fileID: 878268913} + - target: {fileID: 1107058815159810064, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: slingshotController + value: + objectReference: {fileID: 1460473370} + - target: {fileID: 1117478691258778555, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1117478691258778555, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1117478691258778555, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1189142587244958558, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1189142587244958558, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1189142587244958558, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1629522371086913523, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1629522371086913523, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1629522371086913523, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1888318706546015679, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1888318706546015679, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1888318706546015679, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.x + value: 700 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 150 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2547279444113185610, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2547279444113185610, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2547279444113185610, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3021290907495658923, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3021290907495658923, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3021290907495658923, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3454365392868419846, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3454365392868419846, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3454365392868419846, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3527133344575338979, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3527133344575338979, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3527133344575338979, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3535727513508122181, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3535727513508122181, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3535727513508122181, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3705153716151758417, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3705153716151758417, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3705153716151758417, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3766327015481308810, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3766327015481308810, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3766327015481308810, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3766327015481308810, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3766327015481308810, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4199303380532270850, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4199303380532270850, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4199303380532270850, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4297951692199698596, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4297951692199698596, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4297951692199698596, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4535308774383573099, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4535308774383573099, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4535308774383573099, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4535308774383573099, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4535308774383573099, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4741534808117833349, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4741534808117833349, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4741534808117833349, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4741534808117833349, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4741534808117833349, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4942863106972915274, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4942863106972915274, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4942863106972915274, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5006625822063337964, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5006625822063337964, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5006625822063337964, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6657506265177943460, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6657506265177943460, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6657506265177943460, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6730781524121181368, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_Name + value: Player2_AmmoPanel + objectReference: {fileID: 0} + - target: {fileID: 7280438643951225681, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7280438643951225681, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7280438643951225681, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8760159843150449670, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8760159843150449670, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8760159843150449670, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} +--- !u!224 &2126145556 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + m_PrefabInstance: {fileID: 2126145555} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &428622665700748139 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 242361350} + m_Modifications: + - target: {fileID: 481781198721710824, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 481781198721710824, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 481781198721710824, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 807375318505295058, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 807375318505295058, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 807375318505295058, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 807375318505295058, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 807375318505295058, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 872475983157187593, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 872475983157187593, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 872475983157187593, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1036281552690967581, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1036281552690967581, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1036281552690967581, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1107058815159810064, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: turnManager + value: + objectReference: {fileID: 878268910} + - target: {fileID: 1107058815159810064, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: ammunitionManager + value: + objectReference: {fileID: 878268913} + - target: {fileID: 1107058815159810064, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: slingshotController + value: + objectReference: {fileID: 841922117} + - target: {fileID: 1117478691258778555, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1117478691258778555, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1117478691258778555, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1189142587244958558, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1189142587244958558, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1189142587244958558, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1629522371086913523, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1629522371086913523, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1629522371086913523, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1888318706546015679, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1888318706546015679, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1888318706546015679, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_Pivot.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.x + value: 700 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 150 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.x + value: -50 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2148236734266076239, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2547279444113185610, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2547279444113185610, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2547279444113185610, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3021290907495658923, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3021290907495658923, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3021290907495658923, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3454365392868419846, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3454365392868419846, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3454365392868419846, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3527133344575338979, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3527133344575338979, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3527133344575338979, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3535727513508122181, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3535727513508122181, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3535727513508122181, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3705153716151758417, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3705153716151758417, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3705153716151758417, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3766327015481308810, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3766327015481308810, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3766327015481308810, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3766327015481308810, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3766327015481308810, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4199303380532270850, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4199303380532270850, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4199303380532270850, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4297951692199698596, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4297951692199698596, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4297951692199698596, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4535308774383573099, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4535308774383573099, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4535308774383573099, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4535308774383573099, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4535308774383573099, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4741534808117833349, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4741534808117833349, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4741534808117833349, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4741534808117833349, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4741534808117833349, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4942863106972915274, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4942863106972915274, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4942863106972915274, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5006625822063337964, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5006625822063337964, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5006625822063337964, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6657506265177943460, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6657506265177943460, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6657506265177943460, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6730781524121181368, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_Name + value: Player1_AmmoPanel + objectReference: {fileID: 0} + - target: {fileID: 7280438643951225681, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7280438643951225681, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7280438643951225681, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8760159843150449670, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8760159843150449670, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8760159843150449670, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2aa2fb2d3da8f3b4e9d1058cea4e418d, type: 3} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 @@ -4872,4 +6136,5 @@ SceneRoots: - {fileID: 1582224593} - {fileID: 846792102} - {fileID: 630420672} + - {fileID: 1592155791} - {fileID: 858149305} diff --git a/Assets/Scripts/Core/Settings/SettingsInterfaces.cs b/Assets/Scripts/Core/Settings/SettingsInterfaces.cs index 35b030ab..c156f7f2 100644 --- a/Assets/Scripts/Core/Settings/SettingsInterfaces.cs +++ b/Assets/Scripts/Core/Settings/SettingsInterfaces.cs @@ -232,6 +232,42 @@ namespace AppleHills.Core.Settings float FortDefeatThreshold { get; } float PhysicsGravityScale { get; } + // Turn & Projectile timing + float ProjectileSettleDelay { get; } // Time to wait after projectile stops moving before ending turn + float TurnTransitionDelay { get; } // Additional delay during turn transition (wide view camera) + + // Physics Settings + float BlockGravityScale { get; } // Gravity scale for fort blocks + float ProjectileGravityScale { get; } // Gravity scale for projectiles + + // Physics Layers + int FortBlockLayer { get; } // Layer index for fort blocks + int ProjectileLayer { get; } // Layer index for projectiles + + // Slingshot Settings + float BaseLaunchForce { get; } // Base launch force multiplier + float MinForceMultiplier { get; } // Minimum force required to launch (0-1) + float MaxForceMultiplier { get; } // Maximum force cap (0-2, usually 1) + float TrajectoryLockDuration { get; } // How long to show trajectory after launch + + // Projectile Abilities + float VacuumSlideSpeed { get; } // Constant velocity for vacuum sliding (m/s) + int VacuumDestroyBlockCount { get; } // Blocks to destroy while sliding + float VacuumBlockDamage { get; } // Damage dealt to blocks while sliding + int TrashBagPieceCount { get; } // Pieces spawned on trash bag impact + float TrashBagPieceForce { get; } // Force per trash piece + float TrashBagSpreadAngle { get; } // Trash bag spread cone angle + float TrashPieceDamage { get; } // Damage per trash piece on collision + float TrashPieceLifetime { get; } // How long trash pieces persist (seconds) + float CeilingFanActivationDelay { get; } // Delay before tap-to-drop becomes available + float CeilingFanDropDelay { get; } // Pause before ceiling fan starts dropping + float CeilingFanDropSpeed { get; } // Downward velocity when dropping (m/s) + + // Projectile Configurations + System.Collections.Generic.IReadOnlyList ProjectileConfigs { get; } + Minigames.FortFight.Data.ProjectileConfig GetProjectileConfig(Minigames.FortFight.Data.ProjectileType type); + Minigames.FortFight.Data.ProjectileConfig GetProjectileConfigById(string projectileId); + // Visual settings Color DamageColorTint { get; } diff --git a/Assets/Scripts/Minigames/FortFight/AI/FortFightAIController.cs b/Assets/Scripts/Minigames/FortFight/AI/FortFightAIController.cs index 2d43e75a..14a78a47 100644 --- a/Assets/Scripts/Minigames/FortFight/AI/FortFightAIController.cs +++ b/Assets/Scripts/Minigames/FortFight/AI/FortFightAIController.cs @@ -73,13 +73,15 @@ namespace Minigames.FortFight.AI // STUBBED: Perform AI action Logging.Debug("[FortFightAIController] AI takes action! (STUBBED - no actual projectile fired yet)"); - // End AI turn - isThinking = false; + // TODO Phase 4: AI should trigger its slingshot to fire projectile here + // Turn will automatically advance when AI's projectile settles (via ProjectileTurnAction) + // Do NOT manually call EndTurn() - it's now private and automatic - if (turnManager != null) - { - turnManager.EndTurn(); - } + // NOTE: For now, AI turn will hang until Phase 4 AI projectile system is implemented + // To test without AI, use TwoPlayer mode + + isThinking = false; + Logging.Warning("[FortFightAIController] AI turn stubbed - Phase 4 needed for AI projectile firing"); } #endregion diff --git a/Assets/Scripts/Minigames/FortFight/Core/AmmunitionManager.cs b/Assets/Scripts/Minigames/FortFight/Core/AmmunitionManager.cs index a82de188..c3400867 100644 --- a/Assets/Scripts/Minigames/FortFight/Core/AmmunitionManager.cs +++ b/Assets/Scripts/Minigames/FortFight/Core/AmmunitionManager.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using AppleHills.Core.Settings; using Core; using Core.Lifecycle; using Minigames.FortFight.Data; @@ -13,47 +14,75 @@ namespace Minigames.FortFight.Core /// public class AmmunitionManager : ManagedBehaviour { + #region Constants + + private const int MaxPlayers = 2; // Support 2 players (indices 0 and 1) + + #endregion + #region Inspector Properties - [Header("Available Ammunition")] - [Tooltip("All projectile types available in this game")] - [SerializeField] private List availableAmmo = new List(); - - [Header("Starting Ammo")] - [Tooltip("Default selected ammo at game start")] - [SerializeField] private ProjectileData defaultAmmo; + [Header("Configuration")] + [Tooltip("Default projectile type selected at game start")] + [SerializeField] private ProjectileType defaultProjectileType = ProjectileType.Toaster; [Header("Debug")] [SerializeField] private bool showDebugLogs = true; + #endregion + + #region Settings + + private IFortFightSettings cachedSettings; + private IFortFightSettings CachedSettings + { + get + { + if (cachedSettings == null) + { + cachedSettings = GameManager.GetSettingsObject(); + } + return cachedSettings; + } + } + + private List AvailableConfigs + { + get + { + var settings = CachedSettings; + return settings != null ? new List(settings.ProjectileConfigs) : new List(); + } + } + #endregion #region Events /// - /// Fired when ammo selection changes. Parameters: (ProjectileData selectedAmmo) + /// Fired when ammo selection changes. Parameters: (ProjectileType selectedType, int playerIndex) /// - public event Action OnAmmoSelected; + public event Action OnAmmoSelected; /// - /// Fired when ammo is used and enters cooldown. Parameters: (ProjectileData ammo, float cooldownTime) + /// Fired when ammo is used and enters cooldown. Parameters: (ProjectileType type, int cooldownTurns) /// - public event Action OnAmmoCooldownStarted; + public event Action OnAmmoCooldownStarted; /// - /// Fired when ammo cooldown completes. Parameters: (ProjectileData ammo) + /// Fired when ammo cooldown completes. Parameters: (ProjectileType type) /// - public event Action OnAmmoCooldownCompleted; + public event Action OnAmmoCooldownCompleted; #endregion #region State - private Dictionary cooldowns = new Dictionary(); - private ProjectileData selectedAmmo; + // Per-player turn-based cooldowns: projectileType -> playerIndex -> turnsRemaining + private Dictionary> cooldowns = new Dictionary>(); - public ProjectileData SelectedAmmo => selectedAmmo; - public IReadOnlyList AvailableAmmo => availableAmmo; + // Per-player selected ammo: playerIndex -> ProjectileType + private Dictionary selectedAmmoByPlayer = new Dictionary(); #endregion @@ -63,112 +92,148 @@ namespace Minigames.FortFight.Core { base.OnManagedStart(); - // Initialize cooldowns to 0 - foreach (var ammo in availableAmmo) + // Initialize per-player turn-based cooldowns to 0 for all players + var configs = AvailableConfigs; + foreach (var config in configs) { - cooldowns[ammo] = 0f; + cooldowns[config.projectileType] = new Dictionary(); + + for (int playerIndex = 0; playerIndex < MaxPlayers; playerIndex++) + { + cooldowns[config.projectileType][playerIndex] = 0; + } } - // Select default ammo - if (defaultAmmo != null) + // Select default ammo for all players + for (int playerIndex = 0; playerIndex < MaxPlayers; playerIndex++) { - SelectAmmo(defaultAmmo); - } - else if (availableAmmo.Count > 0) - { - SelectAmmo(availableAmmo[0]); + SelectAmmo(defaultProjectileType, playerIndex); } } - private void Update() + /// + /// Called when a player's turn ends - decrements that player's cooldowns by 1 turn. + /// Should be called by TurnManager on OnTurnEnded event. + /// + public void DecrementCooldowns(int playerIndex) { - // Update cooldown timers - List completedCooldowns = new List(); + List completedCooldowns = new List(); + List projectileTypes = new List(cooldowns.Keys); - foreach (var kvp in cooldowns) + foreach (var type in projectileTypes) { - if (kvp.Value > 0f) + if (cooldowns[type].ContainsKey(playerIndex) && cooldowns[type][playerIndex] > 0) { - cooldowns[kvp.Key] = Mathf.Max(0f, kvp.Value - Time.deltaTime); + cooldowns[type][playerIndex]--; - // Check if cooldown just completed - if (cooldowns[kvp.Key] == 0f) + if (cooldowns[type][playerIndex] == 0) { - completedCooldowns.Add(kvp.Key); + completedCooldowns.Add(type); } } } // Fire events for completed cooldowns - foreach (var ammo in completedCooldowns) + var settings = CachedSettings; + foreach (var type in completedCooldowns) { - string ammoName = GetAmmoName(ammo); - if (showDebugLogs) Logging.Debug($"[AmmunitionManager] {ammoName} cooldown completed"); - OnAmmoCooldownCompleted?.Invoke(ammo); + var config = settings?.GetProjectileConfig(type); + if (config != null) + { + if (showDebugLogs) Logging.Debug($"[AmmunitionManager] Player {playerIndex}: {config.displayName} cooldown completed"); + OnAmmoCooldownCompleted?.Invoke(type); + } } } + + #endregion #region Ammo Selection /// - /// Select ammunition type (if available - not on cooldown) + /// Select ammunition type for a specific player (if available - not on cooldown) /// - public bool SelectAmmo(ProjectileData ammo) + public bool SelectAmmo(ProjectileType type, int playerIndex) { - if (ammo == null) + var settings = CachedSettings; + var config = settings?.GetProjectileConfig(type); + + if (config == null) { - Logging.Warning("[AmmunitionManager] Attempted to select null ammo"); + Logging.Warning($"[AmmunitionManager] Projectile type {type} not found in settings"); return false; } - if (!availableAmmo.Contains(ammo)) + if (!IsAmmoAvailable(type, playerIndex)) { - string ammoName = GetAmmoName(ammo); - Logging.Warning($"[AmmunitionManager] {ammoName} not in available ammo list"); + if (showDebugLogs) Logging.Debug($"[AmmunitionManager] Player {playerIndex}: {config.displayName} is on cooldown"); return false; } - if (!IsAmmoAvailable(ammo)) - { - string ammoName = GetAmmoName(ammo); - if (showDebugLogs) Logging.Debug($"[AmmunitionManager] {ammoName} is on cooldown"); - return false; - } + selectedAmmoByPlayer[playerIndex] = type; + if (showDebugLogs) Logging.Debug($"[AmmunitionManager] Player {playerIndex} selected: {config.displayName}"); - selectedAmmo = ammo; - string selectedName = GetAmmoName(ammo); - if (showDebugLogs) Logging.Debug($"[AmmunitionManager] Selected ammo: {selectedName}"); - - OnAmmoSelected?.Invoke(ammo); + OnAmmoSelected?.Invoke(type, playerIndex); return true; } /// - /// Check if ammo is available (not on cooldown) + /// Get currently selected projectile type for a specific player /// - public bool IsAmmoAvailable(ProjectileData ammo) + public ProjectileType GetSelectedAmmoType(int playerIndex) { - if (!cooldowns.ContainsKey(ammo)) + if (selectedAmmoByPlayer.ContainsKey(playerIndex)) + { + return selectedAmmoByPlayer[playerIndex]; + } + return defaultProjectileType; + } + + /// + /// Get currently selected projectile config for a specific player + /// + public ProjectileConfig GetSelectedAmmoConfig(int playerIndex) + { + var type = GetSelectedAmmoType(playerIndex); + return CachedSettings?.GetProjectileConfig(type); + } + + /// + /// Check if ammo is available for a specific player (not on cooldown) + /// + public bool IsAmmoAvailable(ProjectileType type, int playerIndex) + { + if (!cooldowns.ContainsKey(type)) { return true; } - return cooldowns[ammo] <= 0f; + if (!cooldowns[type].ContainsKey(playerIndex)) + { + return true; + } + + return cooldowns[type][playerIndex] <= 0; } /// - /// Get remaining cooldown time for ammo + /// Get remaining cooldown turns for ammo for a specific player /// - public float GetCooldownRemaining(ProjectileData ammo) + public int GetCooldownRemaining(ProjectileType type, int playerIndex) { - if (!cooldowns.ContainsKey(ammo)) + if (!cooldowns.ContainsKey(type)) { - return 0f; + return 0; } - return cooldowns[ammo]; + if (!cooldowns[type].ContainsKey(playerIndex)) + { + return 0; + } + + return cooldowns[type][playerIndex]; } #endregion @@ -176,38 +241,36 @@ namespace Minigames.FortFight.Core #region Ammo Usage /// - /// Use current ammo (trigger cooldown) + /// Use specific ammo for a specific player (trigger turn-based cooldown) /// - public void UseAmmo() + public void UseAmmo(ProjectileType type, int playerIndex) { - if (selectedAmmo == null) + var settings = CachedSettings; + var config = settings?.GetProjectileConfig(type); + + if (config == null) { - Logging.Warning("[AmmunitionManager] No ammo selected to use"); + Logging.Warning($"[AmmunitionManager] Projectile type {type} not found in settings"); return; } - UseAmmo(selectedAmmo); - } - - /// - /// Use specific ammo (trigger cooldown) - /// - public void UseAmmo(ProjectileData ammo) - { - if (ammo == null) return; - - if (!cooldowns.ContainsKey(ammo)) + // Initialize cooldowns dict if needed + if (!cooldowns.ContainsKey(type)) { - cooldowns[ammo] = 0f; + cooldowns[type] = new Dictionary(); + + for (int i = 0; i < MaxPlayers; i++) + { + cooldowns[type][i] = 0; + } } - // Start cooldown - cooldowns[ammo] = ammo.cooldownTime; + // Start turn-based cooldown for this player + cooldowns[type][playerIndex] = config.cooldownTurns; - string ammoName = GetAmmoName(ammo); - if (showDebugLogs) Logging.Debug($"[AmmunitionManager] {ammoName} used - cooldown: {ammo.cooldownTime}s"); + if (showDebugLogs) Logging.Debug($"[AmmunitionManager] Player {playerIndex}: {config.displayName} used - cooldown: {config.cooldownTurns} turns"); - OnAmmoCooldownStarted?.Invoke(ammo, ammo.cooldownTime); + OnAmmoCooldownStarted?.Invoke(type, config.cooldownTurns); } #endregion @@ -215,67 +278,36 @@ namespace Minigames.FortFight.Core #region Public API /// - /// Add ammo to available list (for unlocks/powerups) - /// - public void AddAmmo(ProjectileData ammo) - { - if (!availableAmmo.Contains(ammo)) - { - availableAmmo.Add(ammo); - cooldowns[ammo] = 0f; - - string ammoName = GetAmmoName(ammo); - if (showDebugLogs) Logging.Debug($"[AmmunitionManager] Added ammo: {ammoName}"); - } - } - - /// - /// Remove ammo from available list - /// - public void RemoveAmmo(ProjectileData ammo) - { - if (availableAmmo.Contains(ammo)) - { - availableAmmo.Remove(ammo); - cooldowns.Remove(ammo); - - // If this was selected, select first available - if (selectedAmmo == ammo && availableAmmo.Count > 0) - { - SelectAmmo(availableAmmo[0]); - } - - string ammoName = GetAmmoName(ammo); - if (showDebugLogs) Logging.Debug($"[AmmunitionManager] Removed ammo: {ammoName}"); - } - } - - /// - /// Reset all cooldowns + /// Reset all cooldowns for all players /// public void ResetAllCooldowns() { - foreach (var ammo in cooldowns.Keys) + foreach (var projectileType in cooldowns.Keys) { - cooldowns[ammo] = 0f; + for (int playerIndex = 0; playerIndex < MaxPlayers; playerIndex++) + { + if (cooldowns[projectileType].ContainsKey(playerIndex)) + { + cooldowns[projectileType][playerIndex] = 0; + } + } } - if (showDebugLogs) Logging.Debug("[AmmunitionManager] All cooldowns reset"); + if (showDebugLogs) Logging.Debug("[AmmunitionManager] All cooldowns reset for all players"); } - #endregion - - #region Helpers - /// - /// Get display name for ammo (uses displayName or prefab name as fallback) + /// Get all available projectile types from settings /// - private string GetAmmoName(ProjectileData ammo) + public List GetAvailableProjectileTypes() { - if (ammo == null) return "Unknown"; - if (!string.IsNullOrEmpty(ammo.displayName)) return ammo.displayName; - if (ammo.prefab != null) return ammo.prefab.name; - return "Unknown Ammo"; + var types = new List(); + var configs = AvailableConfigs; + foreach (var config in configs) + { + types.Add(config.projectileType); + } + return types; } #endregion diff --git a/Assets/Scripts/Minigames/FortFight/Core/CameraController.cs b/Assets/Scripts/Minigames/FortFight/Core/CameraController.cs index 40608091..1578e2ee 100644 --- a/Assets/Scripts/Minigames/FortFight/Core/CameraController.cs +++ b/Assets/Scripts/Minigames/FortFight/Core/CameraController.cs @@ -25,14 +25,13 @@ namespace Minigames.FortFight.Core [Tooltip("Player Two's dedicated camera (position this in the scene for Player 2's view)")] [SerializeField] private CinemachineCamera playerTwoCamera; + [Tooltip("Camera that follows projectiles in flight (should have CinemachineFollow component)")] + [SerializeField] private CinemachineCamera projectileCamera; + [Header("References")] [Tooltip("Turn manager to subscribe to turn events")] [SerializeField] private TurnManager turnManager; - [Header("Settings")] - [Tooltip("Use wide view between turns (optional transition)")] - [SerializeField] private bool useWideViewTransitions; - #endregion #region Public Properties @@ -40,6 +39,7 @@ namespace Minigames.FortFight.Core public CinemachineCamera WideViewCamera => wideViewCamera; public CinemachineCamera PlayerOneCamera => playerOneCamera; public CinemachineCamera PlayerTwoCamera => playerTwoCamera; + public CinemachineCamera ProjectileCamera => projectileCamera; #endregion @@ -65,6 +65,11 @@ namespace Minigames.FortFight.Core Logging.Error("[CameraController] Player Two camera not assigned!"); } + if (projectileCamera == null) + { + Logging.Warning("[CameraController] Projectile camera not assigned - projectiles won't be followed!"); + } + if (turnManager == null) { Logging.Error("[CameraController] Turn manager not assigned!"); @@ -109,7 +114,14 @@ namespace Minigames.FortFight.Core /// private void HandleTurnStarted(PlayerData player, TurnState turnState) { - Logging.Debug($"[CameraController] Turn started for {player.PlayerName} (Index: {player.PlayerIndex})"); + Logging.Debug($"[CameraController] Turn started for {player.PlayerName} (Index: {player.PlayerIndex}, State: {turnState})"); + + // If transitioning, show wide view + if (turnState == TurnState.TransitioningTurn) + { + ActivateCamera(wideViewCamera); + return; + } // Activate the appropriate player camera based on player index if (player.PlayerIndex == 0) @@ -130,17 +142,12 @@ namespace Minigames.FortFight.Core } /// - /// Called when a player's turn ends - optionally switch to wide view for transition + /// Called when a player's turn ends - camera switches handled by turn state changes /// private void HandleTurnEnded(PlayerData player) { Logging.Debug($"[CameraController] Turn ended for {player.PlayerName}"); - - // Optional: briefly show wide view between turns - if (useWideViewTransitions) - { - ActivateCamera(wideViewCamera); - } + // Camera switching happens via OnTurnStarted when state changes to TransitioningTurn } /// @@ -154,6 +161,7 @@ namespace Minigames.FortFight.Core if (wideViewCamera != null) wideViewCamera.Priority.Value = 10; if (playerOneCamera != null) playerOneCamera.Priority.Value = 10; if (playerTwoCamera != null) playerTwoCamera.Priority.Value = 10; + if (projectileCamera != null) projectileCamera.Priority.Value = 10; // Set target camera to high priority camera.Priority.Value = 20; @@ -163,6 +171,62 @@ namespace Minigames.FortFight.Core #endregion + #region Projectile Tracking + + /// + /// Start following a projectile with the projectile camera. + /// Called when a projectile is launched. + /// + public void StartFollowingProjectile(Transform projectileTransform) + { + if (projectileCamera == null) + { + Logging.Warning("[CameraController] Cannot follow projectile - projectile camera not assigned!"); + return; + } + + if (projectileTransform == null) + { + Logging.Warning("[CameraController] Cannot follow null projectile transform!"); + return; + } + + // Verify CinemachineFollow component exists (optional check) + var followComponent = projectileCamera.GetComponent(); + if (followComponent == null) + { + Logging.Error("[CameraController] Projectile camera missing CinemachineFollow component!"); + return; + } + + // Set the follow target on the CinemachineCamera's Target property + projectileCamera.Target.TrackingTarget = projectileTransform; + + // Activate the projectile camera + ActivateCamera(projectileCamera); + + Logging.Debug($"[CameraController] Now following projectile: {projectileTransform.gameObject.name}"); + } + + /// + /// Stop following the projectile and return to wide view. + /// Called when projectile has settled. + /// + public void StopFollowingProjectile() + { + if (projectileCamera == null) return; + + // Clear the follow target on the CinemachineCamera's Target property + projectileCamera.Target.TrackingTarget = null; + + // Return to wide view + ActivateCamera(wideViewCamera); + + Logging.Debug("[CameraController] Stopped following projectile, returned to wide view"); + } + + #endregion + #region Public API /// diff --git a/Assets/Scripts/Minigames/FortFight/Core/FortFightSettings.cs b/Assets/Scripts/Minigames/FortFight/Core/FortFightSettings.cs index 2a7ea743..cd4555c5 100644 --- a/Assets/Scripts/Minigames/FortFight/Core/FortFightSettings.cs +++ b/Assets/Scripts/Minigames/FortFight/Core/FortFightSettings.cs @@ -46,8 +46,83 @@ namespace Minigames.FortFight.Core [Tooltip("HP percentage threshold for fort defeat (0.3 = 30%)")] [SerializeField] private float fortDefeatThreshold = 0.3f; - [Tooltip("Global gravity scale for all blocks")] - [SerializeField] private float physicsGravityScale = 1f; + [Header("Physics Settings")] + [Tooltip("Gravity scale for fort blocks (1.0 = normal Unity gravity)")] + [SerializeField] private float blockGravityScale = 1f; + + [Tooltip("Gravity scale for projectiles (1.0 = normal Unity gravity)")] + [SerializeField] private float projectileGravityScale = 1f; + + [Header("Turn & Projectile Timing")] + [Tooltip("Time to wait after projectile stops moving before ending turn")] + [SerializeField] private float projectileSettleDelay = 2.5f; + + [Tooltip("Additional delay during turn transition with wide view camera")] + [SerializeField] private float turnTransitionDelay = 1.5f; + + [Header("BASE Projectile Configurations")] + [Tooltip("All available projectile types and their base configurations (damage, mass, cooldown)")] + [SerializeField] private List projectileConfigs = new List(); + + [Header("Projectile Ability - Vacuum Cleaner")] + [Tooltip("Constant sliding velocity in meters per second")] + [SerializeField] private float vacuumSlideSpeed = 10f; + + [Tooltip("Number of blocks to destroy while sliding")] + [SerializeField] private int vacuumDestroyBlockCount = 3; + + [Tooltip("Damage dealt to blocks while sliding (high value for instant destruction)")] + [SerializeField] private float vacuumBlockDamage = 999f; + + [Header("Projectile Ability - Trash Bag")] + [Tooltip("Number of trash pieces to spawn on impact")] + [SerializeField] private int trashBagPieceCount = 8; + + [Tooltip("Force applied to each trash piece")] + [SerializeField] private float trashBagPieceForce = 10f; + + [Tooltip("Spread cone angle for trash pieces (degrees)")] + [SerializeField] private float trashBagSpreadAngle = 60f; + + [Tooltip("Damage each trash piece deals on collision with blocks")] + [SerializeField] private float trashPieceDamage = 5f; + + [Tooltip("How long trash pieces persist before auto-cleanup (seconds)")] + [SerializeField] private float trashPieceLifetime = 5f; + + [Header("Projectile Ability - Ceiling Fan")] + [Tooltip("Delay before tap-to-drop becomes available (seconds)")] + [SerializeField] private float ceilingFanActivationDelay = 0.5f; + + [Tooltip("Brief pause before ceiling fan starts dropping (seconds)")] + [SerializeField] private float ceilingFanDropDelay = 0.2f; + + [Tooltip("Downward velocity when dropping (m/s)")] + [SerializeField] private float ceilingFanDropSpeed = 20f; + + [Header("Slingshot Settings")] + [Tooltip("Base launch force multiplier - higher values = projectiles fly farther")] + [SerializeField] private float baseLaunchForce = 20f; + + [Tooltip("Minimum force multiplier (0-1, e.g. 0.1 = 10% of max force required to launch)")] + [Range(0f, 1f)] + [SerializeField] private float minForceMultiplier = 0.1f; + + [Tooltip("Maximum force multiplier (0-1, e.g. 1.0 = 100% at max drag distance)")] + [Range(0f, 2f)] + [SerializeField] private float maxForceMultiplier = 1f; + + [Tooltip("How long to keep trajectory visible after launching (seconds)")] + [SerializeField] private float trajectoryLockDuration = 2f; + + [Header("Physics Layers")] + [Tooltip("Layer for fort blocks - projectiles will collide with these (Default: Layer 8 'FortBlock')")] + [AppleHills.Core.Settings.Layer] + [SerializeField] private int fortBlockLayer = 8; + + [Tooltip("Layer for projectiles - for filtering projectile-to-projectile collisions (Default: Layer 9 'Projectile')")] + [AppleHills.Core.Settings.Layer] + [SerializeField] private int projectileLayer = 9; [Header("Visual Settings")] [Tooltip("Color tint applied to damaged blocks")] @@ -63,10 +138,67 @@ namespace Minigames.FortFight.Core public float WeakPointExplosionForce => weakPointExplosionForce; public float FortDefeatThreshold => fortDefeatThreshold; - public float PhysicsGravityScale => physicsGravityScale; + public float PhysicsGravityScale => blockGravityScale; // Kept for backwards compatibility + public float BlockGravityScale => blockGravityScale; + public float ProjectileGravityScale => projectileGravityScale; + + public float ProjectileSettleDelay => projectileSettleDelay; + public float TurnTransitionDelay => turnTransitionDelay; + + public int FortBlockLayer => fortBlockLayer; + public int ProjectileLayer => projectileLayer; public Color DamageColorTint => damageColorTint; + public float BaseLaunchForce => baseLaunchForce; + public float MinForceMultiplier => minForceMultiplier; + public float MaxForceMultiplier => maxForceMultiplier; + public float TrajectoryLockDuration => trajectoryLockDuration; + + public float VacuumSlideSpeed => vacuumSlideSpeed; + public int VacuumDestroyBlockCount => vacuumDestroyBlockCount; + public float VacuumBlockDamage => vacuumBlockDamage; + public int TrashBagPieceCount => trashBagPieceCount; + public float TrashBagPieceForce => trashBagPieceForce; + public float TrashBagSpreadAngle => trashBagSpreadAngle; + public float TrashPieceDamage => trashPieceDamage; + public float TrashPieceLifetime => trashPieceLifetime; + public float CeilingFanActivationDelay => ceilingFanActivationDelay; + public float CeilingFanDropDelay => ceilingFanDropDelay; + public float CeilingFanDropSpeed => ceilingFanDropSpeed; + + public IReadOnlyList ProjectileConfigs => projectileConfigs; + + /// + /// Get projectile configuration by type + /// + public ProjectileConfig GetProjectileConfig(ProjectileType type) + { + foreach (var config in projectileConfigs) + { + if (config.projectileType == type) + { + return config; + } + } + return null; + } + + /// + /// Get projectile configuration by ID string + /// + public ProjectileConfig GetProjectileConfigById(string projectileId) + { + foreach (var config in projectileConfigs) + { + if (config.projectileId == projectileId) + { + return config; + } + } + return null; + } + public BlockMaterialConfig GetMaterialConfig(BlockMaterial material) { return materialConfigs.FirstOrDefault(c => c.material == material); @@ -83,6 +215,11 @@ namespace Minigames.FortFight.Core private void OnValidate() { + // Validate projectile configs + foreach (var config in projectileConfigs) + { + config?.Validate(); + } // Ensure defeat threshold is between 0 and 1 fortDefeatThreshold = Mathf.Clamp01(fortDefeatThreshold); diff --git a/Assets/Scripts/Minigames/FortFight/Core/ProjectileTurnAction.cs b/Assets/Scripts/Minigames/FortFight/Core/ProjectileTurnAction.cs index 63170a92..141fe37c 100644 --- a/Assets/Scripts/Minigames/FortFight/Core/ProjectileTurnAction.cs +++ b/Assets/Scripts/Minigames/FortFight/Core/ProjectileTurnAction.cs @@ -1,4 +1,6 @@ -using Core; +using AppleHills.Core.Settings; +using Core; +using Minigames.FortFight.Data; using Minigames.FortFight.Projectiles; using UnityEngine; @@ -12,18 +14,34 @@ namespace Minigames.FortFight.Core { private SlingshotController slingshot; private AmmunitionManager ammoManager; + private CameraController cameraController; + private int playerIndex; private ProjectileBase activeProjectile; private bool launchComplete = false; private bool projectileSettled = false; private float settleTimer = 0f; - private float settleDelay = 2.5f; // Wait 2.5s after impact before ending turn + + private IFortFightSettings _cachedSettings; + private IFortFightSettings CachedSettings + { + get + { + if (_cachedSettings == null) + { + _cachedSettings = GameManager.GetSettingsObject(); + } + return _cachedSettings; + } + } public bool IsComplete => projectileSettled; - public ProjectileTurnAction(SlingshotController slingshot, AmmunitionManager ammoManager) + public ProjectileTurnAction(SlingshotController slingshot, AmmunitionManager ammoManager, CameraController cameraController, int playerIndex) { this.slingshot = slingshot; this.ammoManager = ammoManager; + this.cameraController = cameraController; + this.playerIndex = playerIndex; } /// @@ -61,9 +79,17 @@ namespace Minigames.FortFight.Core settleTimer += Time.deltaTime; + float settleDelay = CachedSettings?.ProjectileSettleDelay ?? 2.5f; if (settleTimer >= settleDelay) { projectileSettled = true; + + // Stop camera tracking when projectile settles + if (cameraController != null) + { + cameraController.StopFollowingProjectile(); + } + Logging.Debug("[ProjectileTurnAction] Turn action complete"); } } @@ -75,9 +101,17 @@ namespace Minigames.FortFight.Core { settleTimer += Time.deltaTime; + float settleDelay = CachedSettings?.ProjectileSettleDelay ?? 2.5f; if (settleTimer >= settleDelay) { projectileSettled = true; + + // Stop camera tracking when projectile settles + if (cameraController != null) + { + cameraController.StopFollowingProjectile(); + } + Logging.Debug("[ProjectileTurnAction] Projectile settled - turn action complete"); } } @@ -114,10 +148,17 @@ namespace Minigames.FortFight.Core slingshot.Disable(); } - // Trigger cooldown for used ammo + // Trigger cooldown for used ammo for this player if (ammoManager != null) { - ammoManager.UseAmmo(); + ProjectileType usedAmmoType = ammoManager.GetSelectedAmmoType(playerIndex); + ammoManager.UseAmmo(usedAmmoType, playerIndex); + } + + // Start camera tracking the projectile + if (cameraController != null && projectile != null) + { + cameraController.StartFollowingProjectile(projectile.transform); } } } diff --git a/Assets/Scripts/Minigames/FortFight/Core/SlingshotController.cs b/Assets/Scripts/Minigames/FortFight/Core/SlingshotController.cs index 14ae5099..00a018f2 100644 --- a/Assets/Scripts/Minigames/FortFight/Core/SlingshotController.cs +++ b/Assets/Scripts/Minigames/FortFight/Core/SlingshotController.cs @@ -1,25 +1,23 @@ using System; +using AppleHills.Core.Settings; using Core; using Core.Lifecycle; using Minigames.FortFight.Data; using Minigames.FortFight.Projectiles; using UnityEngine; -using UnityEngine.InputSystem; namespace Minigames.FortFight.Core { /// /// Controls slingshot aiming and projectile launching. /// Angry Birds-style drag-to-aim mechanic with trajectory preview. + /// Implements ITouchInputConsumer for InputManager integration. /// - public class SlingshotController : ManagedBehaviour + public class SlingshotController : ManagedBehaviour, ITouchInputConsumer { #region Inspector Properties [Header("Launch Settings")] - [Tooltip("Maximum launch force")] - [SerializeField] private float maxForce = 20f; - [Tooltip("Drag distance to reach max force")] [SerializeField] private float maxDragDistance = 5f; @@ -33,6 +31,25 @@ namespace Minigames.FortFight.Core [Header("Debug")] [SerializeField] private bool showDebugLogs = true; + #endregion + + #region Settings + + private IFortFightSettings cachedSettings; + private IFortFightSettings CachedSettings + { + get + { + if (cachedSettings == null) + { + cachedSettings = GameManager.GetSettingsObject(); + } + return cachedSettings; + } + } + + private float MaxForce => CachedSettings?.BaseLaunchForce ?? 20f; + #endregion #region Events @@ -46,11 +63,10 @@ namespace Minigames.FortFight.Core #region State - private bool isDragging = false; + private bool isDragging; private Vector2 dragStartPosition; - private ProjectileData currentAmmo; - private Projectiles.ProjectileBase activeProjectile; - private Camera mainCamera; + private ProjectileConfig currentAmmo; + private ProjectileBase activeProjectile; public bool IsDragging => isDragging; public bool IsEnabled { get; private set; } = true; @@ -63,8 +79,6 @@ namespace Minigames.FortFight.Core { base.OnManagedAwake(); - mainCamera = Camera.main; - if (projectileSpawnPoint == null) { projectileSpawnPoint = transform; @@ -87,62 +101,38 @@ namespace Minigames.FortFight.Core } } - private void Update() + #endregion + + #region ITouchInputConsumer Implementation + + public void OnTap(Vector2 worldPosition) + { + // Slingshot uses hold/drag, not tap + } + + public void OnHoldStart(Vector2 worldPosition) { if (!IsEnabled) return; - - HandleInput(); + StartDrag(worldPosition); + } + + public void OnHoldMove(Vector2 worldPosition) + { + if (!IsEnabled || !isDragging) return; + UpdateDrag(worldPosition); + } + + public void OnHoldEnd(Vector2 worldPosition) + { + if (!IsEnabled || !isDragging) return; + EndDrag(worldPosition); } #endregion - #region Input Handling + #region Drag Handling - private void HandleInput() - { - // Check for mouse/touch input - if (Mouse.current != null) - { - // Mouse down - start drag - if (Mouse.current.leftButton.wasPressedThisFrame) - { - StartDrag(Mouse.current.position.ReadValue()); - } - - // Mouse held - update drag - if (Mouse.current.leftButton.isPressed && isDragging) - { - UpdateDrag(Mouse.current.position.ReadValue()); - } - - // Mouse up - release - if (Mouse.current.leftButton.wasReleasedThisFrame && isDragging) - { - EndDrag(); - } - } - - // Touch input (for mobile) - if (Touchscreen.current != null && Touchscreen.current.primaryTouch.press.isPressed) - { - var touch = Touchscreen.current.primaryTouch; - - if (touch.phase.ReadValue() == UnityEngine.InputSystem.TouchPhase.Began) - { - StartDrag(touch.position.ReadValue()); - } - else if (touch.phase.ReadValue() == UnityEngine.InputSystem.TouchPhase.Moved && isDragging) - { - UpdateDrag(touch.position.ReadValue()); - } - else if (touch.phase.ReadValue() == UnityEngine.InputSystem.TouchPhase.Ended && isDragging) - { - EndDrag(); - } - } - } - - private void StartDrag(Vector2 screenPosition) + private void StartDrag(Vector2 worldPosition) { if (currentAmmo == null) { @@ -151,7 +141,9 @@ namespace Minigames.FortFight.Core } isDragging = true; - dragStartPosition = screenPosition; + // Use the projectile spawn point as the anchor, not the touch position + // This makes it work like Angry Birds - pull back from slingshot to launch forward + dragStartPosition = projectileSpawnPoint.position; // Show trajectory preview if (trajectoryPreview != null) @@ -159,28 +151,43 @@ namespace Minigames.FortFight.Core trajectoryPreview.Show(); } - if (showDebugLogs) Logging.Debug($"[SlingshotController] Started drag at {screenPosition}"); + if (showDebugLogs) Logging.Debug($"[SlingshotController] Started drag at {worldPosition}, anchor at spawn point {dragStartPosition}"); } - private void UpdateDrag(Vector2 currentScreenPosition) + private void UpdateDrag(Vector2 currentWorldPosition) { - // Calculate drag vector - Vector2 dragVector = dragStartPosition - currentScreenPosition; + // Calculate drag vector from spawn point to current drag position + // Pull back (away from spawn) = launch forward (toward spawn direction) + Vector2 dragVector = dragStartPosition - currentWorldPosition; // Calculate force and direction float dragDistance = dragVector.magnitude; - float force = Mathf.Min(dragDistance / maxDragDistance, 1f) * maxForce; + float dragRatio = Mathf.Clamp01(dragDistance / maxDragDistance); + + // Apply configurable max force multiplier + float maxMultiplier = CachedSettings?.MaxForceMultiplier ?? 1f; + float forceMultiplier = dragRatio * maxMultiplier; + float force = forceMultiplier * MaxForce; + Vector2 direction = dragVector.normalized; - // Update trajectory preview - if (trajectoryPreview != null) + // Update trajectory preview with projectile mass + if (trajectoryPreview != null && currentAmmo != null) { Vector2 worldStartPos = projectileSpawnPoint.position; - trajectoryPreview.UpdateTrajectory(worldStartPos, direction, force); + float mass = currentAmmo.GetMass(); + + // Debug: Log trajectory calculation (uncomment for debugging) + // if (showDebugLogs && Time.frameCount % 30 == 0) // Log every 30 frames to avoid spam + // { + // Logging.Debug($"[Slingshot] Preview - Force: {force:F2}, Mass: {mass:F2}, Velocity: {force/mass:F2}, Dir: {direction}"); + // } + + trajectoryPreview.UpdateTrajectory(worldStartPos, direction, force, mass); } } - private void EndDrag() + private void EndDrag(Vector2 currentWorldPosition) { isDragging = false; @@ -190,21 +197,37 @@ namespace Minigames.FortFight.Core trajectoryPreview.Hide(); } - // Calculate final launch parameters - Vector2 currentScreenPosition = Mouse.current != null ? Mouse.current.position.ReadValue() : Vector2.zero; - Vector2 dragVector = dragStartPosition - currentScreenPosition; + // Calculate final launch parameters from spawn point to final drag position + Vector2 dragVector = dragStartPosition - currentWorldPosition; float dragDistance = dragVector.magnitude; - float force = Mathf.Min(dragDistance / maxDragDistance, 1f) * maxForce; + float dragRatio = Mathf.Clamp01(dragDistance / maxDragDistance); + + // Apply configurable max force multiplier + float maxMultiplier = CachedSettings?.MaxForceMultiplier ?? 1f; + float forceMultiplier = dragRatio * maxMultiplier; + float force = forceMultiplier * MaxForce; + Vector2 direction = dragVector.normalized; - // Launch projectile - if (force > 0.1f) // Minimum drag threshold + // Check against configurable minimum force threshold + float minMultiplier = CachedSettings?.MinForceMultiplier ?? 0.1f; + float minForce = minMultiplier * MaxForce; + + // Launch projectile if force exceeds minimum + if (force >= minForce) { + if (showDebugLogs && currentAmmo != null) + { + float mass = currentAmmo.GetMass(); + float velocity = force / mass; + Logging.Debug($"[Slingshot] Launch - Force: {force:F2}, Mass: {mass:F2}, Velocity: {velocity:F2}, Dir: {direction}"); + } + LaunchProjectile(direction, force); } else { - if (showDebugLogs) Logging.Debug("[SlingshotController] Drag too short - no launch"); + if (showDebugLogs) Logging.Debug($"[SlingshotController] Drag too short - force {force:F2} < min {minForce:F2}"); } } @@ -215,11 +238,10 @@ namespace Minigames.FortFight.Core /// /// Set the current ammunition type /// - public void SetAmmo(ProjectileData ammoData) + public void SetAmmo(ProjectileConfig ammoConfig) { - currentAmmo = ammoData; - string ammoName = GetAmmoName(ammoData); - if (showDebugLogs) Logging.Debug($"[SlingshotController] Ammo set to: {ammoName}"); + currentAmmo = ammoConfig; + if (showDebugLogs) Logging.Debug($"[SlingshotController] Ammo set to: {ammoConfig?.displayName ?? "null"}"); } /// @@ -244,11 +266,20 @@ namespace Minigames.FortFight.Core return; } + // Initialize projectile with its type (loads damage and mass from settings) + activeProjectile.Initialize(currentAmmo.projectileType); + // Launch it activeProjectile.Launch(direction, force); - string ammoName = GetAmmoName(currentAmmo); - if (showDebugLogs) Logging.Debug($"[SlingshotController] Launched {ammoName} with force {force}"); + // Lock trajectory to show the shot path + if (trajectoryPreview != null) + { + float lockDuration = CachedSettings?.TrajectoryLockDuration ?? 2f; + trajectoryPreview.LockTrajectory(lockDuration); + } + + if (showDebugLogs) Logging.Debug($"[SlingshotController] Launched {currentAmmo?.displayName ?? "projectile"} with force {force}"); // Fire event OnProjectileLaunched?.Invoke(activeProjectile); @@ -257,7 +288,7 @@ namespace Minigames.FortFight.Core /// /// Get currently active projectile (in flight) /// - public Projectiles.ProjectileBase GetActiveProjectile() + public ProjectileBase GetActiveProjectile() { return activeProjectile; } @@ -292,21 +323,6 @@ namespace Minigames.FortFight.Core } #endregion - - #region Helpers - - /// - /// Get display name for ammo (uses displayName or prefab name as fallback) - /// - private string GetAmmoName(ProjectileData ammo) - { - if (ammo == null) return "None"; - if (!string.IsNullOrEmpty(ammo.displayName)) return ammo.displayName; - if (ammo.prefab != null) return ammo.prefab.name; - return "Unknown"; - } - - #endregion } } diff --git a/Assets/Scripts/Minigames/FortFight/Core/TrajectoryPreview.cs b/Assets/Scripts/Minigames/FortFight/Core/TrajectoryPreview.cs index 5fbd2227..264d7690 100644 --- a/Assets/Scripts/Minigames/FortFight/Core/TrajectoryPreview.cs +++ b/Assets/Scripts/Minigames/FortFight/Core/TrajectoryPreview.cs @@ -11,17 +11,8 @@ namespace Minigames.FortFight.Core public class TrajectoryPreview : MonoBehaviour { [Header("Trajectory Settings")] - [Tooltip("Number of points to simulate")] - [SerializeField] private int simulationSteps = 30; - - [Tooltip("Time step for each simulation point")] - [SerializeField] private float timeStep = 0.1f; - - [Tooltip("Mass to use for simulation (should match projectile mass)")] - [SerializeField] private float projectileMass = 1f; - - [Tooltip("Drag to use for simulation")] - [SerializeField] private float drag = 0f; + [Tooltip("Number of points to simulate (physics steps)")] + [SerializeField] private int simulationSteps = 50; [Header("Visual")] [Tooltip("Color of trajectory line")] @@ -31,6 +22,9 @@ namespace Minigames.FortFight.Core [SerializeField] private float lineWidth = 0.1f; private LineRenderer lineRenderer; + private bool isLocked = false; + private float lockTimer = 0f; + private float lockDuration = 0f; private void Awake() { @@ -48,8 +42,21 @@ namespace Minigames.FortFight.Core } } + private void Update() + { + if (isLocked) + { + lockTimer += Time.deltaTime; + if (lockTimer >= lockDuration) + { + isLocked = false; + Hide(); + } + } + } + /// - /// Show the trajectory line + /// Show the trajectory preview /// public void Show() { @@ -60,10 +67,14 @@ namespace Minigames.FortFight.Core } /// - /// Hide the trajectory line + /// Hide the trajectory preview (unless locked) /// public void Hide() { + // Don't hide if trajectory is locked + if (isLocked) + return; + if (lineRenderer != null) { lineRenderer.enabled = false; @@ -71,35 +82,64 @@ namespace Minigames.FortFight.Core } /// - /// Update trajectory preview with new launch parameters + /// Lock the current trajectory display for a duration /// - public void UpdateTrajectory(Vector2 startPosition, Vector2 direction, float force) + public void LockTrajectory(float duration) + { + isLocked = true; + lockTimer = 0f; + lockDuration = duration; + + // Ensure line is visible + if (lineRenderer != null) + { + lineRenderer.enabled = true; + } + } + + /// + /// Update the trajectory preview with new parameters. + /// Uses Physics.fixedDeltaTime for accurate simulation matching Unity's physics. + /// + /// Starting position of trajectory + /// Launch direction (normalized) + /// Launch force (impulse) + /// Projectile mass + public void UpdateTrajectory(Vector2 startPosition, Vector2 direction, float force, float mass = 1f) { if (lineRenderer == null) return; - Vector2 velocity = direction * force; - Vector2 gravity = Physics2D.gravity; + // Calculate initial velocity: impulse force F gives velocity v = F/m + Vector2 startVelocity = (direction * force) / mass; - // Simulate trajectory points + // Get gravity with projectile gravity scale from settings + var settings = GameManager.GetSettingsObject(); + float gravityScale = settings?.ProjectileGravityScale ?? 1f; + Vector2 gravity = new Vector2(Physics2D.gravity.x, Physics2D.gravity.y) * gravityScale; + + // Simulate trajectory using Unity's physics time step Vector3[] points = new Vector3[simulationSteps]; - Vector2 currentPos = startPosition; - Vector2 currentVelocity = velocity; + Vector2 pos = startPosition; + Vector2 vel = startVelocity; for (int i = 0; i < simulationSteps; i++) { - points[i] = currentPos; + // Set current position + points[i] = new Vector3(pos.x, pos.y, 0); - // Apply physics simulation - currentVelocity += gravity * timeStep; - currentPos += currentVelocity * timeStep; + // Update velocity (gravity applied over fixedDeltaTime) + vel = vel + gravity * Time.fixedDeltaTime; - // Optional: Stop if hits ground (y < some threshold) - if (currentPos.y < -10f) + // Update position (velocity applied over fixedDeltaTime) + pos = pos + vel * Time.fixedDeltaTime; + + // Optional: Stop if hits ground (y < threshold) + if (pos.y < -10f) { // Fill remaining points at ground level for (int j = i + 1; j < simulationSteps; j++) { - points[j] = new Vector3(currentPos.x, -10f, 0); + points[j] = new Vector3(pos.x, -10f, 0); } break; } diff --git a/Assets/Scripts/Minigames/FortFight/Core/TurnManager.cs b/Assets/Scripts/Minigames/FortFight/Core/TurnManager.cs index 092093f4..bfc87117 100644 --- a/Assets/Scripts/Minigames/FortFight/Core/TurnManager.cs +++ b/Assets/Scripts/Minigames/FortFight/Core/TurnManager.cs @@ -2,15 +2,35 @@ using Core; using Core.Lifecycle; using Minigames.FortFight.Data; +using UnityEngine; namespace Minigames.FortFight.Core { /// /// Manages turn order and turn state for Fort Fight minigame. /// Handles transitions between Player One, Player Two/AI turns. + /// Manages turn actions and input delegation. /// public class TurnManager : ManagedBehaviour { + #region Inspector References + + [Header("Slingshot Controllers")] + [Tooltip("Slingshot for Player One")] + [SerializeField] private SlingshotController playerOneSlingshotController; + + [Tooltip("Slingshot for Player Two")] + [SerializeField] private SlingshotController playerTwoSlingshotController; + + [Header("Systems")] + [Tooltip("Ammunition manager")] + [SerializeField] private AmmunitionManager ammunitionManager; + + [Tooltip("Camera controller for projectile tracking")] + [SerializeField] private CameraController cameraController; + + #endregion + #region Events /// @@ -38,6 +58,11 @@ namespace Minigames.FortFight.Core private PlayerData currentPlayer; private int turnCount = 0; + // Turn action management + private ProjectileTurnAction currentTurnAction; + private bool isTransitioning = false; + private float transitionTimer = 0f; + public TurnState CurrentTurnState => currentTurnState; public PlayerData CurrentPlayer => currentPlayer; public int TurnCount => turnCount; @@ -46,6 +71,36 @@ namespace Minigames.FortFight.Core #region Initialization + internal override void OnManagedAwake() + { + base.OnManagedAwake(); + + // Validate references + if (playerOneSlingshotController == null) + { + Logging.Error("[TurnManager] Player One slingshot controller not assigned!"); + } + + if (playerTwoSlingshotController == null) + { + Logging.Error("[TurnManager] Player Two slingshot controller not assigned!"); + } + + if (ammunitionManager == null) + { + Logging.Error("[TurnManager] Ammunition manager not assigned!"); + } + + if (cameraController == null) + { + Logging.Warning("[TurnManager] Camera controller not assigned - projectiles won't be followed by camera!"); + } + + // Disable both slingshots initially + if (playerOneSlingshotController != null) playerOneSlingshotController.Disable(); + if (playerTwoSlingshotController != null) playerTwoSlingshotController.Disable(); + } + /// /// Initialize the turn manager with player data /// @@ -66,8 +121,50 @@ namespace Minigames.FortFight.Core currentTurnState = TurnState.PlayerOneTurn; currentPlayer = playerOne; + // Set initial input mode to UI + if (Input.InputManager.Instance != null) + { + Input.InputManager.Instance.SetInputMode(Input.InputMode.UI); + } + Logging.Debug($"[TurnManager] Game started. First turn: {currentPlayer.PlayerName}"); OnTurnStarted?.Invoke(currentPlayer, currentTurnState); + + // Start turn action for first player + StartTurnAction(); + } + + #endregion + + #region Lifecycle + + private void Update() + { + // Update current turn action + if (currentTurnAction != null && !isTransitioning) + { + currentTurnAction.Update(); + + // Check if action is complete + if (currentTurnAction.IsComplete) + { + EndTurnAction(); + } + } + + // Handle transition timing + if (isTransitioning) + { + transitionTimer += Time.deltaTime; + + var settings = GameManager.GetSettingsObject(); + float transitionDelay = settings?.TurnTransitionDelay ?? 1.5f; + + if (transitionTimer >= transitionDelay) + { + CompleteTransition(); + } + } } #endregion @@ -75,9 +172,76 @@ namespace Minigames.FortFight.Core #region Turn Management /// - /// End the current turn and advance to the next player + /// Start turn action for current player (projectile launch) /// - public void EndTurn() + private void StartTurnAction() + { + // Get the appropriate slingshot for current player + SlingshotController activeSlingshot = GetSlingshotForPlayer(currentPlayer); + + if (activeSlingshot == null) + { + Logging.Error($"[TurnManager] No slingshot found for {currentPlayer.PlayerName}!"); + return; + } + + // Create and execute turn action with player index + currentTurnAction = new ProjectileTurnAction(activeSlingshot, ammunitionManager, cameraController, currentPlayer.PlayerIndex); + + // Set current ammo on slingshot for this player + if (ammunitionManager != null) + { + ProjectileConfig currentAmmo = ammunitionManager.GetSelectedAmmoConfig(currentPlayer.PlayerIndex); + if (currentAmmo != null) + { + activeSlingshot.SetAmmo(currentAmmo); + } + } + + // Execute the action (enables slingshot) + currentTurnAction.Execute(); + + // Register slingshot as input consumer and switch to Game mode + if (Input.InputManager.Instance != null) + { + Input.InputManager.Instance.RegisterOverrideConsumer(activeSlingshot); + Input.InputManager.Instance.SetInputMode(Input.InputMode.Game); + } + + Logging.Debug($"[TurnManager] Started turn action for {currentPlayer.PlayerName}"); + } + + /// + /// End current turn action (projectile has settled) + /// + private void EndTurnAction() + { + Logging.Debug($"[TurnManager] Ending turn action for {currentPlayer.PlayerName}"); + + // Get active slingshot and unregister from input + SlingshotController activeSlingshot = GetSlingshotForPlayer(currentPlayer); + if (activeSlingshot != null && Input.InputManager.Instance != null) + { + Input.InputManager.Instance.UnregisterOverrideConsumer(activeSlingshot); + } + + // Restore UI input mode + if (Input.InputManager.Instance != null) + { + Input.InputManager.Instance.SetInputMode(Input.InputMode.UI); + } + + // Clear turn action + currentTurnAction = null; + + // End the turn + EndTurn(); + } + + /// + /// End the current turn and begin transition to next player + /// + private void EndTurn() { if (currentTurnState == TurnState.GameOver) { @@ -88,16 +252,35 @@ namespace Minigames.FortFight.Core Logging.Debug($"[TurnManager] Turn ended for {currentPlayer.PlayerName}"); OnTurnEnded?.Invoke(currentPlayer); - // Transition state + // Decrement ammunition cooldowns for this player + if (ammunitionManager != null) + { + ammunitionManager.DecrementCooldowns(currentPlayer.PlayerIndex); + } + + // Enter transition state (triggers wide view camera via OnTurnStarted) currentTurnState = TurnState.TransitioningTurn; OnTurnTransitioning?.Invoke(); + OnTurnStarted?.Invoke(currentPlayer, currentTurnState); // Fire for camera switch to wide view + + // Start transition timer + isTransitioning = true; + transitionTimer = 0f; + } + + /// + /// Complete transition and advance to next player + /// + private void CompleteTransition() + { + isTransitioning = false; + transitionTimer = 0f; - // Advance to next player AdvanceToNextPlayer(); } /// - /// Advance to the next player's turn + /// Advance to the next player's turn (called after transition delay) /// private void AdvanceToNextPlayer() { @@ -117,6 +300,26 @@ namespace Minigames.FortFight.Core Logging.Debug($"[TurnManager] Advanced to turn {turnCount}. Current player: {currentPlayer.PlayerName} (State: {currentTurnState})"); OnTurnStarted?.Invoke(currentPlayer, currentTurnState); + + // Start turn action for next player + StartTurnAction(); + } + + /// + /// Get the slingshot controller for a specific player + /// + private SlingshotController GetSlingshotForPlayer(PlayerData player) + { + if (player == playerOne) + { + return playerOneSlingshotController; + } + else if (player == playerTwo) + { + return playerTwoSlingshotController; + } + + return null; } /// diff --git a/Assets/Scripts/Minigames/FortFight/Data/FortFightEnums.cs b/Assets/Scripts/Minigames/FortFight/Data/FortFightEnums.cs index b9d14ca8..55758902 100644 --- a/Assets/Scripts/Minigames/FortFight/Data/FortFightEnums.cs +++ b/Assets/Scripts/Minigames/FortFight/Data/FortFightEnums.cs @@ -1,6 +1,4 @@ -using System; - -namespace Minigames.FortFight.Data +namespace Minigames.FortFight.Data { /// /// Game mode for Fort Fight minigame @@ -19,7 +17,7 @@ namespace Minigames.FortFight.Data PlayerOneTurn, PlayerTwoTurn, AITurn, - TransitioningTurn, + TransitioningTurn, // Transitioning between turns (projectile in flight, waiting for settle) GameOver } diff --git a/Assets/Scripts/Minigames/FortFight/Data/ProjectileConfig.cs b/Assets/Scripts/Minigames/FortFight/Data/ProjectileConfig.cs new file mode 100644 index 00000000..0d77cf2f --- /dev/null +++ b/Assets/Scripts/Minigames/FortFight/Data/ProjectileConfig.cs @@ -0,0 +1,94 @@ +using System; +using UnityEngine; + +namespace Minigames.FortFight.Data +{ + /// + /// Configuration data for a projectile type. + /// Stored centrally in FortFightSettings instead of individual ScriptableObject assets. + /// + [Serializable] + public class ProjectileConfig + { + [Header("Identity")] + [Tooltip("Type of projectile this config represents")] + public ProjectileType projectileType; + + [Tooltip("Unique string identifier (auto-generated from type)")] + public string projectileId; + + [Header("Prefab")] + [Tooltip("Prefab for this projectile (should have ProjectileBase component)")] + public GameObject prefab; + + [Header("Ammunition System")] + [Tooltip("Cooldown in turns after use")] + public int cooldownTurns = 2; + + [Header("UI")] + [Tooltip("Icon sprite for ammunition UI")] + public Sprite icon; + + [Tooltip("Display name for this projectile type")] + public string displayName; + + [Tooltip("Description of projectile behavior")] + [TextArea(2, 4)] + public string description; + + [Header("Combat Stats")] + [Tooltip("Damage dealt on impact")] + public float damage = 20f; + + [Header("Physics")] + [Tooltip("Mass for physics simulation (affects trajectory and force)")] + public float mass = 1f; + + /// + /// Get the ProjectileBase component from the prefab + /// + public Projectiles.ProjectileBase GetProjectileComponent() + { + if (prefab == null) return null; + return prefab.GetComponent(); + } + + /// + /// Get damage value from config + /// + public float GetDamage() + { + return damage; + } + + /// + /// Get mass value from config + /// + public float GetMass() + { + return mass; + } + + /// + /// Validate and auto-generate projectileId from type + /// + public void Validate() + { + if (string.IsNullOrEmpty(projectileId)) + { + projectileId = GenerateIdFromType(projectileType); + } + + if (string.IsNullOrEmpty(displayName)) + { + displayName = projectileType.ToString(); + } + } + + private string GenerateIdFromType(ProjectileType type) + { + return type.ToString().ToLower(); + } + } +} + diff --git a/Assets/Scripts/Minigames/FortFight/Data/ProjectileConfig.cs.meta b/Assets/Scripts/Minigames/FortFight/Data/ProjectileConfig.cs.meta new file mode 100644 index 00000000..e6dc4c0c --- /dev/null +++ b/Assets/Scripts/Minigames/FortFight/Data/ProjectileConfig.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9d60235e77c7456380c10f9c145750bf +timeCreated: 1764778577 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/FortFight/Data/ProjectileData.cs b/Assets/Scripts/Minigames/FortFight/Data/ProjectileData.cs deleted file mode 100644 index 50dd0598..00000000 --- a/Assets/Scripts/Minigames/FortFight/Data/ProjectileData.cs +++ /dev/null @@ -1,50 +0,0 @@ -using UnityEngine; - -namespace Minigames.FortFight.Data -{ - /// - /// ScriptableObject defining a projectile type for the ammunition system. - /// Only stores prefab reference and UI data - stats come from the prefab's ProjectileBase component. - /// - [CreateAssetMenu(fileName = "ProjectileData", menuName = "AppleHills/Fort Fight/Projectile Data", order = 1)] - public class ProjectileData : ScriptableObject - { - [Header("Prefab")] - [Tooltip("Prefab for this projectile (should have ProjectileBase component)")] - public GameObject prefab; - - [Header("Ammunition System")] - [Tooltip("Cooldown time in seconds after use")] - public float cooldownTime = 5f; - - [Header("UI")] - [Tooltip("Icon sprite for ammunition UI")] - public Sprite icon; - - [Tooltip("Display name for this projectile type")] - public string displayName; - - [Tooltip("Description of projectile behavior (for tutorial/UI)")] - [TextArea(2, 4)] - public string description; - - /// - /// Get the ProjectileBase component from the prefab (for reading stats) - /// - public Projectiles.ProjectileBase GetProjectileComponent() - { - if (prefab == null) return null; - return prefab.GetComponent(); - } - - /// - /// Get damage value from prefab - /// - public float GetDamage() - { - var component = GetProjectileComponent(); - return component != null ? component.Damage : 0f; - } - } -} - diff --git a/Assets/Scripts/Minigames/FortFight/Data/ProjectileData.cs.meta b/Assets/Scripts/Minigames/FortFight/Data/ProjectileData.cs.meta deleted file mode 100644 index aeb83921..00000000 --- a/Assets/Scripts/Minigames/FortFight/Data/ProjectileData.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 973f02063e5446598db4cbffdbf8f113 -timeCreated: 1764682274 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/FortFight/Fort/FortBlock.cs b/Assets/Scripts/Minigames/FortFight/Fort/FortBlock.cs index 4bca4200..ba872724 100644 --- a/Assets/Scripts/Minigames/FortFight/Fort/FortBlock.cs +++ b/Assets/Scripts/Minigames/FortFight/Fort/FortBlock.cs @@ -102,6 +102,14 @@ namespace Minigames.FortFight.Fort /// public void Initialize() { + // Automatically assign block to correct layer from settings + var settings = CachedSettings; + if (settings != null && settings.FortBlockLayer >= 0 && gameObject.layer != settings.FortBlockLayer) + { + gameObject.layer = settings.FortBlockLayer; + Logging.Debug($"[FortBlock] Assigned {gameObject.name} to layer {LayerMask.LayerToName(settings.FortBlockLayer)}"); + } + // Cache components rb2D = GetComponent(); blockCollider = GetComponent(); @@ -260,7 +268,10 @@ namespace Minigames.FortFight.Fort { Logging.Debug($"[FortBlock] Spawning explosion effect prefab"); GameObject explosion = Instantiate(explosionEffectPrefab, transform.position, Quaternion.identity); - Destroy(explosion, 3f); // Auto-cleanup after 3 seconds + + // Dynamically determine cleanup time from particle system + float lifetime = GetEffectLifetime(explosion); + Destroy(explosion, lifetime); } else { @@ -360,6 +371,30 @@ namespace Minigames.FortFight.Fort Logging.Debug($"[FortBlock] Spawning destruction effect for {material} block"); } + /// + /// Get the lifetime of an effect by reading particle system StartLifetime. + /// Falls back to 3 seconds if no particle system found. + /// + private float GetEffectLifetime(GameObject effect) + { + // Try to read from ParticleSystem + ParticleSystem ps = effect.GetComponent(); + if (ps != null) + { + return ps.main.startLifetime.constantMax + 0.5f; // Add small buffer + } + + // Try to read from child particle systems + ParticleSystem childPs = effect.GetComponentInChildren(); + if (childPs != null) + { + return childPs.main.startLifetime.constantMax + 0.5f; + } + + // Fallback for non-particle effects + return 3f; + } + #endregion #region Debug Helpers diff --git a/Assets/Scripts/Minigames/FortFight/FortFightPhase1Tester.cs b/Assets/Scripts/Minigames/FortFight/FortFightPhase1Tester.cs deleted file mode 100644 index 196aa23e..00000000 --- a/Assets/Scripts/Minigames/FortFight/FortFightPhase1Tester.cs +++ /dev/null @@ -1,139 +0,0 @@ -using Core; -using UnityEngine; -using Core.Lifecycle; -using Minigames.FortFight.Core; -using Minigames.FortFight.Data; - -namespace Minigames.FortFight -{ - /// - /// Debug script to test Phase 1 implementation without full UI setup. - /// Attach to a GameObject in the scene to run automated tests. - /// - public class FortFightPhase1Tester : ManagedBehaviour - { - [Header("Test Settings")] - [SerializeField] private bool runAutomatedTest = true; - [SerializeField] private FortFightGameMode testMode = FortFightGameMode.SinglePlayer; - [SerializeField] private int numberOfTurnsToTest = 6; - - private FortFightGameManager gameManager; - private TurnManager turnManager; - private int playerActionsExecuted = 0; - - internal override void OnManagedStart() - { - base.OnManagedStart(); - - if (!runAutomatedTest) - { - Logging.Debug("[FortFightPhase1Tester] Automated test disabled"); - return; - } - - // Find managers - gameManager = FindFirstObjectByType(); - turnManager = FindFirstObjectByType(); - - if (gameManager == null) - { - Logging.Error("[FortFightPhase1Tester] FortFightGameManager not found!"); - return; - } - - if (turnManager == null) - { - Logging.Error("[FortFightPhase1Tester] TurnManager not found!"); - return; - } - - // Subscribe to events for testing - gameManager.OnGameModeSelected += OnGameModeSelected; - gameManager.OnGameStarted += OnGameStarted; - turnManager.OnTurnStarted += OnTurnStarted; - turnManager.OnTurnEnded += OnTurnEnded; - - // Start test - Logging.Debug("=== STARTING PHASE 1 AUTOMATED TEST ==="); - Logging.Debug($"Testing mode: {testMode}"); - Logging.Debug($"Will execute {numberOfTurnsToTest} turns total"); - - // Simulate mode selection - gameManager.SelectGameMode(testMode); - } - - private void OnGameModeSelected(FortFightGameMode mode) - { - Logging.Debug($"[TEST] Game mode selected: {mode}"); - } - - private void OnGameStarted() - { - Logging.Debug("[TEST] Game started!"); - } - - private void OnTurnStarted(PlayerData currentPlayer, TurnState turnState) - { - Logging.Debug($"[TEST] Turn started - Player: {currentPlayer.PlayerName}, State: {turnState}, Turn #: {turnManager.TurnCount + 1}"); - - // If it's a human player's turn (not AI), simulate taking action after a delay - if (turnState == TurnState.PlayerOneTurn || turnState == TurnState.PlayerTwoTurn) - { - Invoke(nameof(SimulatePlayerAction), 0.5f); - } - - // Check if we've reached the test limit - if (turnManager.TurnCount >= numberOfTurnsToTest) - { - Logging.Debug("=== TEST COMPLETE ==="); - Logging.Debug($"Successfully completed {numberOfTurnsToTest} turns!"); - Logging.Debug($"Player actions executed: {playerActionsExecuted}"); - - // End the game - gameManager.EndGame(); - } - } - - private void OnTurnEnded(PlayerData player) - { - Logging.Debug($"[TEST] Turn ended for {player.PlayerName}"); - } - - private void SimulatePlayerAction() - { - if (turnManager == null) return; - - TurnState state = turnManager.CurrentTurnState; - - // Only simulate if it's still a player turn (not transitioned yet) - if (state == TurnState.PlayerOneTurn || state == TurnState.PlayerTwoTurn) - { - PlayerData currentPlayer = turnManager.CurrentPlayer; - Logging.Debug($"[TEST] Simulating action for {currentPlayer.PlayerName}"); - playerActionsExecuted++; - - // End the turn - turnManager.EndTurn(); - } - } - - internal override void OnManagedDestroy() - { - base.OnManagedDestroy(); - - // Unsubscribe from events - if (gameManager != null) - { - gameManager.OnGameModeSelected -= OnGameModeSelected; - gameManager.OnGameStarted -= OnGameStarted; - } - - if (turnManager != null) - { - turnManager.OnTurnStarted -= OnTurnStarted; - turnManager.OnTurnEnded -= OnTurnEnded; - } - } - } -} - diff --git a/Assets/Scripts/Minigames/FortFight/FortFightPhase1Tester.cs.meta b/Assets/Scripts/Minigames/FortFight/FortFightPhase1Tester.cs.meta deleted file mode 100644 index f730a365..00000000 --- a/Assets/Scripts/Minigames/FortFight/FortFightPhase1Tester.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 756ba6afb97885c43a3d0eac023b3797 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/FortFight/FortFightPhase2Tester.cs b/Assets/Scripts/Minigames/FortFight/FortFightPhase2Tester.cs deleted file mode 100644 index 9dd573dd..00000000 --- a/Assets/Scripts/Minigames/FortFight/FortFightPhase2Tester.cs +++ /dev/null @@ -1,184 +0,0 @@ -using Core; -using UnityEngine; -using UnityEngine.InputSystem; -using Core.Lifecycle; -using Minigames.FortFight.Core; -using Minigames.FortFight.Fort; - -namespace Minigames.FortFight -{ - /// - /// Debug script to test Phase 2 fort system. - /// Attach to a GameObject in the scene to manually trigger fort damage for testing. - /// - public class FortFightPhase2Tester : ManagedBehaviour - { - [Header("Test Settings")] - [SerializeField] private bool enableKeyboardControls = true; - [SerializeField] private float testDamageAmount = 25f; - [SerializeField] private bool autoTestOnStart = false; - [SerializeField] private float autoTestDelay = 2f; - - private FortManager fortManager; - private FortController playerFort; - private FortController enemyFort; - - internal override void OnManagedStart() - { - base.OnManagedStart(); - - // Find fort manager - fortManager = FindFirstObjectByType(); - - if (fortManager == null) - { - Logging.Error("[FortFightPhase2Tester] FortManager not found!"); - return; - } - - // Subscribe to fort spawn events - fortManager.OnPlayerFortSpawned += OnPlayerFortSpawned; - fortManager.OnEnemyFortSpawned += OnEnemyFortSpawned; - - Logging.Debug("=== PHASE 2 TESTING CONTROLS ==="); - Logging.Debug("Press '1' to damage random PLAYER fort block"); - Logging.Debug("Press '2' to damage random ENEMY fort block"); - Logging.Debug("Press '3' to damage PLAYER fort weak point"); - Logging.Debug("Press '4' to damage ENEMY fort weak point"); - Logging.Debug("Press '5' to destroy random PLAYER block"); - Logging.Debug("Press '6' to destroy random ENEMY block"); - Logging.Debug("================================"); - - if (autoTestOnStart) - { - InvokeRepeating(nameof(AutoTest), autoTestDelay, autoTestDelay); - } - } - - private void OnPlayerFortSpawned(FortController fort) - { - playerFort = fort; - Logging.Debug($"[Phase2Tester] Player fort spawned: {fort.FortName}"); - } - - private void OnEnemyFortSpawned(FortController fort) - { - enemyFort = fort; - Logging.Debug($"[Phase2Tester] Enemy fort spawned: {fort.FortName}"); - } - - private void Update() - { - if (!enableKeyboardControls) return; - if (Keyboard.current == null) return; - - // Test controls - if (Keyboard.current.digit1Key.wasPressedThisFrame) - { - DamageRandomBlock(playerFort, testDamageAmount); - } - - if (Keyboard.current.digit2Key.wasPressedThisFrame) - { - DamageRandomBlock(enemyFort, testDamageAmount); - } - - if (Keyboard.current.digit3Key.wasPressedThisFrame) - { - DamageWeakPoint(playerFort); - } - - if (Keyboard.current.digit4Key.wasPressedThisFrame) - { - DamageWeakPoint(enemyFort); - } - - if (Keyboard.current.digit5Key.wasPressedThisFrame) - { - DestroyRandomBlock(playerFort); - } - - if (Keyboard.current.digit6Key.wasPressedThisFrame) - { - DestroyRandomBlock(enemyFort); - } - } - - private void AutoTest() - { - // Alternate between player and enemy - if (Random.value > 0.5f) - { - DamageRandomBlock(playerFort, testDamageAmount); - } - else - { - DamageRandomBlock(enemyFort, testDamageAmount); - } - } - - private void DamageRandomBlock(FortController fort, float damage) - { - if (fort == null || fort.TotalBlockCount == 0) - { - Logging.Warning("[Phase2Tester] No fort or blocks available to damage!"); - return; - } - - FortBlock randomBlock = fort.GetRandomBlock(); - if (randomBlock != null) - { - Logging.Debug($"[Phase2Tester] Damaging {fort.FortName} block '{randomBlock.gameObject.name}' for {damage} damage"); - randomBlock.TakeDamage(damage); - } - } - - private void DamageWeakPoint(FortController fort) - { - if (fort == null) - { - Logging.Warning("[Phase2Tester] Fort is null!"); - return; - } - - var weakPoints = fort.GetWeakPoints(); - if (weakPoints.Count == 0) - { - Logging.Warning($"[Phase2Tester] {fort.FortName} has no weak points!"); - return; - } - - FortBlock weakPoint = weakPoints[Random.Range(0, weakPoints.Count)]; - Logging.Debug($"[Phase2Tester] Destroying {fort.FortName} WEAK POINT '{weakPoint.gameObject.name}'"); - weakPoint.TakeDamage(999f); // Instant destruction - } - - private void DestroyRandomBlock(FortController fort) - { - if (fort == null || fort.TotalBlockCount == 0) - { - Logging.Warning("[Phase2Tester] No fort or blocks available to destroy!"); - return; - } - - FortBlock randomBlock = fort.GetRandomBlock(); - if (randomBlock != null) - { - Logging.Debug($"[Phase2Tester] DESTROYING {fort.FortName} block '{randomBlock.gameObject.name}'"); - randomBlock.TakeDamage(999f); // Instant destruction - } - } - - internal override void OnManagedDestroy() - { - base.OnManagedDestroy(); - - if (fortManager != null) - { - fortManager.OnPlayerFortSpawned -= OnPlayerFortSpawned; - fortManager.OnEnemyFortSpawned -= OnEnemyFortSpawned; - } - } - } -} - diff --git a/Assets/Scripts/Minigames/FortFight/FortFightPhase2Tester.cs.meta b/Assets/Scripts/Minigames/FortFight/FortFightPhase2Tester.cs.meta deleted file mode 100644 index 49c2dd52..00000000 --- a/Assets/Scripts/Minigames/FortFight/FortFightPhase2Tester.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 74f26236978245cdaf33909a7c242cbf -timeCreated: 1764592117 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/FortFight/Projectiles/CeilingFanProjectile.cs b/Assets/Scripts/Minigames/FortFight/Projectiles/CeilingFanProjectile.cs index a702a48a..e5428d28 100644 --- a/Assets/Scripts/Minigames/FortFight/Projectiles/CeilingFanProjectile.cs +++ b/Assets/Scripts/Minigames/FortFight/Projectiles/CeilingFanProjectile.cs @@ -5,17 +5,59 @@ using UnityEngine; namespace Minigames.FortFight.Projectiles { /// - /// Ceiling Fan projectile - drops straight down when ability is activated. - /// Player taps screen mid-flight to activate drop. + /// Ceiling Fan projectile - drops straight down when player taps screen. + /// Implements ITouchInputConsumer to capture tap input mid-flight. /// - public class CeilingFanProjectile : ProjectileBase + public class CeilingFanProjectile : ProjectileBase, ITouchInputConsumer { [Header("Ceiling Fan Specific")] - [Tooltip("Speed of downward drop")] - [SerializeField] private float dropSpeed = 20f; + [Tooltip("Visual indicator showing drop is available (arrow down)")] + [SerializeField] private GameObject indicator; - [Tooltip("Delay before dropping")] - [SerializeField] private float dropDelay = 0.2f; + private bool isDropping = false; + private bool inputEnabled = false; + + public override void Launch(Vector2 direction, float force) + { + base.Launch(direction, force); + + // Hide indicator initially + if (indicator != null) + { + indicator.SetActive(false); + } + + // Start activation delay coroutine + StartCoroutine(ActivationDelayCoroutine()); + } + + private IEnumerator ActivationDelayCoroutine() + { + // Get activation delay from settings + var settings = GameManager.GetSettingsObject(); + float activationDelay = settings?.CeilingFanActivationDelay ?? 0.5f; + + // Wait for delay + yield return new WaitForSeconds(activationDelay); + + // Enable input and show indicator (if not already dropped) + if (!isDropping && !AbilityActivated) + { + inputEnabled = true; + + if (indicator != null) + { + indicator.SetActive(true); + } + + // Register with InputManager to capture tap-to-drop + if (Input.InputManager.Instance != null) + { + Input.InputManager.Instance.RegisterOverrideConsumer(this); + Logging.Debug("[CeilingFanProjectile] Tap-to-drop now available"); + } + } + } public override void ActivateAbility() { @@ -30,6 +72,8 @@ namespace Minigames.FortFight.Projectiles private IEnumerator DropCoroutine() { + isDropping = true; + // Stop all velocity if (rb2D != null) { @@ -37,6 +81,11 @@ namespace Minigames.FortFight.Projectiles rb2D.angularVelocity = 0f; } + // Get drop configuration from settings + var settings = GameManager.GetSettingsObject(); + float dropDelay = settings?.CeilingFanDropDelay ?? 0.2f; + float dropSpeed = settings?.CeilingFanDropSpeed ?? 20f; + // Wait brief moment yield return new WaitForSeconds(dropDelay); @@ -47,6 +96,88 @@ namespace Minigames.FortFight.Projectiles Logging.Debug($"[CeilingFanProjectile] Dropping with velocity: {rb2D.linearVelocity}"); } } + + protected override void OnHit(Collision2D collision) + { + // Spawn impact effect only if dropped (not on normal arc hit) + if (isDropping) + { + SpawnImpactEffect(collision.contacts[0].point); + } + + // Deal damage to blocks + var block = collision.gameObject.GetComponent(); + if (block != null) + { + block.TakeDamage(Damage); + Logging.Debug($"[CeilingFanProjectile] Dealt {Damage} damage to {block.gameObject.name}"); + } + + // Destroy projectile + DestroyProjectile(); + } + + #region ITouchInputConsumer Implementation + + public void OnTap(Vector2 worldPosition) + { + // Only respond if input is enabled + if (inputEnabled && !AbilityActivated && !isDropping) + { + Logging.Debug("[CeilingFanProjectile] Tap detected - activating drop"); + + // Hide indicator + if (indicator != null) + { + indicator.SetActive(false); + } + + ActivateAbility(); + + // Unregister immediately after tap + UnregisterFromInput(); + } + } + + public void OnHoldStart(Vector2 worldPosition) + { + // Not used for ceiling fan + } + + public void OnHoldMove(Vector2 worldPosition) + { + // Not used for ceiling fan + } + + public void OnHoldEnd(Vector2 worldPosition) + { + // Not used for ceiling fan + } + + #endregion + + private void UnregisterFromInput() + { + inputEnabled = false; + + if (indicator != null) + { + indicator.SetActive(false); + } + + if (Input.InputManager.Instance != null) + { + Input.InputManager.Instance.UnregisterOverrideConsumer(this); + Logging.Debug("[CeilingFanProjectile] Unregistered from input"); + } + } + + protected override void DestroyProjectile() + { + // Make sure we unregister when destroyed + UnregisterFromInput(); + base.DestroyProjectile(); + } } } diff --git a/Assets/Scripts/Minigames/FortFight/Projectiles/ProjectileBase.cs b/Assets/Scripts/Minigames/FortFight/Projectiles/ProjectileBase.cs index 09834858..855ad428 100644 --- a/Assets/Scripts/Minigames/FortFight/Projectiles/ProjectileBase.cs +++ b/Assets/Scripts/Minigames/FortFight/Projectiles/ProjectileBase.cs @@ -16,13 +16,6 @@ namespace Minigames.FortFight.Projectiles { #region Inspector Properties - [Header("Projectile Stats")] - [Tooltip("Base damage dealt on impact")] - [SerializeField] protected float damage = 20f; - - [Tooltip("Mass for physics (affects trajectory)")] - [SerializeField] protected float mass = 1f; - [Header("Visuals")] [Tooltip("Sprite renderer for projectile")] [SerializeField] protected SpriteRenderer spriteRenderer; @@ -54,7 +47,10 @@ namespace Minigames.FortFight.Projectiles #region Properties - public float Damage => damage; + public float Damage { get; protected set; } + public float Mass { get; protected set; } + public Data.ProjectileType ProjectileType { get; protected set; } + public bool IsLaunched { get; protected set; } public bool AbilityActivated { get; protected set; } public Vector2 LaunchDirection { get; protected set; } @@ -71,10 +67,59 @@ namespace Minigames.FortFight.Projectiles #region Lifecycle + /// + /// Initialize the projectile with its type and load stats from settings. + /// Must be called after instantiation, before Launch. + /// + public void Initialize(Data.ProjectileType projectileType) + { + ProjectileType = projectileType; + + // Load damage and mass from settings + var settings = GameManager.GetSettingsObject(); + if (settings != null) + { + var config = settings.GetProjectileConfig(projectileType); + if (config != null) + { + Damage = config.damage; + Mass = config.mass; + + // Update rigidbody mass if already initialized + if (rb2D != null) + { + rb2D.mass = Mass; + } + + Logging.Debug($"[ProjectileBase] Initialized {projectileType} - Damage: {Damage}, Mass: {Mass}"); + } + else + { + Logging.Warning($"[ProjectileBase] No config found for {projectileType}, using defaults"); + Damage = 20f; + Mass = 1f; + } + } + else + { + Logging.Warning($"[ProjectileBase] Settings not found, using default damage and mass"); + Damage = 20f; + Mass = 1f; + } + } + internal override void OnManagedAwake() { base.OnManagedAwake(); + // Automatically assign projectile to correct layer from settings + var settings = GameManager.GetSettingsObject(); + if (settings != null && settings.ProjectileLayer >= 0 && gameObject.layer != settings.ProjectileLayer) + { + gameObject.layer = settings.ProjectileLayer; + Logging.Debug($"[ProjectileBase] Assigned {gameObject.name} to layer {LayerMask.LayerToName(settings.ProjectileLayer)}"); + } + // Cache components rb2D = GetComponent(); projectileCollider = GetComponent(); @@ -84,11 +129,18 @@ namespace Minigames.FortFight.Projectiles spriteRenderer = GetComponent(); } - // Configure rigidbody + // Configure rigidbody (mass will be set by Initialize if called, otherwise use defaults) if (rb2D != null) { - rb2D.mass = mass; - rb2D.gravityScale = 1f; + // If Initialize hasn't been called yet, use default mass + if (Mass == 0f) + { + Mass = 1f; + Damage = 20f; + } + + rb2D.mass = Mass; + rb2D.gravityScale = settings?.ProjectileGravityScale ?? 1f; rb2D.collisionDetectionMode = CollisionDetectionMode2D.Continuous; } } @@ -117,7 +169,14 @@ namespace Minigames.FortFight.Projectiles if (rb2D != null) { rb2D.AddForce(LaunchDirection * LaunchForce, ForceMode2D.Impulse); - Logging.Debug($"[ProjectileBase] Launched {gameObject.name} with force {LaunchForce} in direction {LaunchDirection}"); + + // Debug: Log actual mass and resulting velocity for trajectory verification + float actualMass = rb2D.mass; + float expectedVelocity = LaunchForce / actualMass; + Logging.Debug($"[Projectile] Launched {gameObject.name} - Force: {LaunchForce:F2}, Mass: {actualMass:F2}, Expected Velocity: {expectedVelocity:F2}, Dir: {LaunchDirection}"); + + // After physics applies, log actual velocity (next frame would show it, but we log expectation) + // Note: Actual velocity will be set by Unity physics engine as: velocity = impulse / mass } // Fire event @@ -163,36 +222,32 @@ namespace Minigames.FortFight.Projectiles Logging.Debug($"[ProjectileBase] {gameObject.name} hit {collision.gameObject.name}"); - // Check if hit a fort block - FortBlock block = collision.gameObject.GetComponent(); - if (block != null) - { - // Deal damage to block - block.TakeDamage(damage); - Logging.Debug($"[ProjectileBase] Dealt {damage} damage to {block.gameObject.name}"); - } - - // Spawn impact effect - SpawnImpactEffect(collision.contacts[0].point); - // Fire impact event OnImpact?.Invoke(this, collision.collider); - // Call subclass-specific hit behavior - OnHit(collision.collider); - - // Destroy projectile after hit (subclasses can override) - DestroyProjectile(); + // Delegate to subclass - they handle everything (damage, effects, destruction) + OnHit(collision); } /// /// Called when projectile hits something. - /// Override in subclasses for projectile-specific behavior. + /// Override in subclasses to implement full projectile behavior. + /// Default implementation: Deal damage to blocks and destroy projectile. + /// Subclasses should call DestroyProjectile() when they want to be destroyed. /// - protected virtual void OnHit(Collider2D hit) + /// Collision data including contact points and normals + protected virtual void OnHit(Collision2D collision) { - // Subclasses override for special behavior - // e.g., Vacuum continues sliding, TrashBag splits, etc. + // Default behavior: Deal damage to blocks and destroy + FortBlock block = collision.gameObject.GetComponent(); + if (block != null) + { + block.TakeDamage(Damage); + Logging.Debug($"[ProjectileBase] Dealt {Damage} damage to {block.gameObject.name}"); + } + + // Default: Destroy on hit + DestroyProjectile(); } #endregion @@ -207,10 +262,37 @@ namespace Minigames.FortFight.Projectiles if (impactEffectPrefab != null) { GameObject effect = Instantiate(impactEffectPrefab, position, Quaternion.identity); - Destroy(effect, 2f); // Auto-cleanup + + // Dynamically determine cleanup time from particle system + float lifetime = GetEffectLifetime(effect); + Destroy(effect, lifetime); } } + /// + /// Get the lifetime of an effect by reading particle system StartLifetime. + /// Falls back to 2 seconds if no particle system found. + /// + private float GetEffectLifetime(GameObject effect) + { + // Try to read from ParticleSystem + ParticleSystem ps = effect.GetComponent(); + if (ps != null) + { + return ps.main.startLifetime.constantMax + 0.5f; // Add small buffer + } + + // Try to read from child particle systems + ParticleSystem childPs = effect.GetComponentInChildren(); + if (childPs != null) + { + return childPs.main.startLifetime.constantMax + 0.5f; + } + + // Fallback for non-particle effects (sprites, etc.) + return 2f; + } + #endregion #region Destruction diff --git a/Assets/Scripts/Minigames/FortFight/Projectiles/ToasterProjectile.cs b/Assets/Scripts/Minigames/FortFight/Projectiles/ToasterProjectile.cs index 00a576f0..4e2c77e6 100644 --- a/Assets/Scripts/Minigames/FortFight/Projectiles/ToasterProjectile.cs +++ b/Assets/Scripts/Minigames/FortFight/Projectiles/ToasterProjectile.cs @@ -12,6 +12,23 @@ namespace Minigames.FortFight.Projectiles // Toaster is the basic projectile - uses base class behavior // No special ability needed + protected override void OnHit(Collision2D collision) + { + // Spawn impact effect + SpawnImpactEffect(collision.contacts[0].point); + + // Deal damage to blocks + var block = collision.gameObject.GetComponent(); + if (block != null) + { + block.TakeDamage(Damage); + Logging.Debug($"[ToasterProjectile] Dealt {Damage} damage to {block.gameObject.name}"); + } + + // Destroy projectile + DestroyProjectile(); + } + public override void ActivateAbility() { // Toaster has no special ability diff --git a/Assets/Scripts/Minigames/FortFight/Projectiles/TrashBagProjectile.cs b/Assets/Scripts/Minigames/FortFight/Projectiles/TrashBagProjectile.cs index 9a3a7c5b..a4089cce 100644 --- a/Assets/Scripts/Minigames/FortFight/Projectiles/TrashBagProjectile.cs +++ b/Assets/Scripts/Minigames/FortFight/Projectiles/TrashBagProjectile.cs @@ -10,33 +10,41 @@ namespace Minigames.FortFight.Projectiles public class TrashBagProjectile : ProjectileBase { [Header("Trash Bag Specific")] - [Tooltip("Number of trash pieces to spawn on impact")] - [SerializeField] private int trashPieceCount = 6; - - [Tooltip("Prefab for individual trash pieces")] + [Tooltip("Prefab for individual trash pieces (small debris)")] [SerializeField] private GameObject trashPiecePrefab; - [Tooltip("Force applied to each trash piece")] - [SerializeField] private float pieceForce = 8f; - - [Tooltip("Spread angle for trash pieces (degrees)")] - [SerializeField] private float spreadAngle = 30f; - - [Tooltip("Damage dealt by each trash piece")] - [SerializeField] private float pieceDamage = 8f; - - protected override void OnHit(Collider2D hit) + protected override void OnHit(Collision2D collision) { - base.OnHit(hit); + // Deal initial damage from trash bag itself + var block = collision.gameObject.GetComponent(); + if (block != null) + { + block.TakeDamage(Damage); + Logging.Debug($"[TrashBagProjectile] Dealt {Damage} damage to {block.gameObject.name}"); + } - Logging.Debug($"[TrashBagProjectile] Splitting into {trashPieceCount} pieces"); - SpawnTrashPieces(hit.transform.position); + // Get settings for trash pieces + var settings = GameManager.GetSettingsObject(); + int pieceCount = settings?.TrashBagPieceCount ?? 8; + + Logging.Debug($"[TrashBagProjectile] Splitting into {pieceCount} pieces"); + + // Get contact normal and impact point + Vector2 hitNormal = collision.contacts[0].normal; + Vector2 impactPoint = collision.contacts[0].point; + + // Spawn trash pieces (NOT parented, so they persist as debris) + SpawnTrashPieces(impactPoint, hitNormal); + + // Destroy trash bag after spawning pieces + DestroyProjectile(); } /// - /// Spawn multiple trash pieces in a forward cone + /// Spawn multiple trash pieces in a cone away from the hit surface. + /// Uses hit normal + projectile momentum for realistic splash effect. /// - private void SpawnTrashPieces(Vector2 impactPoint) + private void SpawnTrashPieces(Vector2 impactPoint, Vector2 hitNormal) { if (trashPiecePrefab == null) { @@ -44,77 +52,56 @@ namespace Minigames.FortFight.Projectiles return; } - // Calculate forward direction from velocity - Vector2 forwardDirection = rb2D.linearVelocity.normalized; - if (forwardDirection == Vector2.zero) + // Get settings + var settings = GameManager.GetSettingsObject(); + int pieceCount = settings?.TrashBagPieceCount ?? 8; + float pieceForce = settings?.TrashBagPieceForce ?? 10f; + float spreadAngle = settings?.TrashBagSpreadAngle ?? 60f; + + // Calculate projectile's incoming direction (momentum) + Vector2 incomingDirection = rb2D.linearVelocity.normalized; + if (incomingDirection == Vector2.zero) { - forwardDirection = LaunchDirection; + incomingDirection = LaunchDirection; } - // Spawn pieces in a cone - for (int i = 0; i < trashPieceCount; i++) + // Calculate reflection direction from hit normal + // This creates a bounce-like effect + Vector2 reflectDirection = Vector2.Reflect(incomingDirection, hitNormal); + + // Blend between reflection and pure normal for more variety + // 70% normal (splash away from surface) + 30% reflection (maintain some momentum direction) + Vector2 baseDirection = (hitNormal * 0.7f + reflectDirection * 0.3f).normalized; + + // Spawn pieces in a cone around the base direction + for (int i = 0; i < pieceCount; i++) { - // Calculate angle for this piece - float angleOffset = Mathf.Lerp(-spreadAngle, spreadAngle, i / (float)(trashPieceCount - 1)); - float angleRadians = Mathf.Atan2(forwardDirection.y, forwardDirection.x) + angleOffset * Mathf.Deg2Rad; + // Calculate angle offset for this piece within the spread cone + float t = pieceCount > 1 ? i / (float)(pieceCount - 1) : 0.5f; + float angleOffset = Mathf.Lerp(-spreadAngle / 2f, spreadAngle / 2f, t); + float angleRadians = Mathf.Atan2(baseDirection.y, baseDirection.x) + angleOffset * Mathf.Deg2Rad; Vector2 pieceDirection = new Vector2(Mathf.Cos(angleRadians), Mathf.Sin(angleRadians)); - // Spawn trash piece - GameObject piece = Instantiate(trashPiecePrefab, impactPoint, Quaternion.identity); + // Spawn trash piece slightly offset from impact point + Vector2 spawnOffset = pieceDirection * 0.2f; // Small offset to prevent clipping + GameObject piece = Instantiate(trashPiecePrefab, (Vector2)impactPoint + spawnOffset, Quaternion.identity); // Setup trash piece physics Rigidbody2D pieceRb = piece.GetComponent(); if (pieceRb != null) { - pieceRb.AddForce(pieceDirection * pieceForce, ForceMode2D.Impulse); + // Apply force with some randomness for more natural spread + float randomForce = pieceForce * Random.Range(0.8f, 1.2f); + pieceRb.AddForce(pieceDirection * randomForce, ForceMode2D.Impulse); + + // Add some random spin + pieceRb.AddTorque(Random.Range(-100f, 100f)); } - // Setup trash piece damage (if it has a component) - TrashPiece trashPieceComponent = piece.GetComponent(); - if (trashPieceComponent != null) - { - trashPieceComponent.Initialize(pieceDamage); - } - - // Auto-destroy after 3 seconds - Destroy(piece, 3f); - Logging.Debug($"[TrashBagProjectile] Spawned trash piece {i} in direction {pieceDirection}"); } } } - - /// - /// Component for individual trash pieces spawned by TrashBagProjectile. - /// Deals damage on collision. - /// - public class TrashPiece : MonoBehaviour - { - private float damage; - private bool hasHit = false; - - public void Initialize(float pieceDamage) - { - this.damage = pieceDamage; - } - - private void OnCollisionEnter2D(Collision2D collision) - { - if (hasHit) return; - hasHit = true; - - // Check if hit a fort block - var block = collision.gameObject.GetComponent(); - if (block != null) - { - block.TakeDamage(damage); - Logging.Debug($"[TrashPiece] Dealt {damage} damage to {block.gameObject.name}"); - } - - // Destroy this piece - Destroy(gameObject, 0.1f); - } - } } diff --git a/Assets/Scripts/Minigames/FortFight/Projectiles/TrashPiece.cs b/Assets/Scripts/Minigames/FortFight/Projectiles/TrashPiece.cs new file mode 100644 index 00000000..dedd71a8 --- /dev/null +++ b/Assets/Scripts/Minigames/FortFight/Projectiles/TrashPiece.cs @@ -0,0 +1,81 @@ +using Core; +using UnityEngine; + +namespace Minigames.FortFight.Projectiles +{ + /// + /// Component for individual trash pieces spawned by TrashBagProjectile. + /// Deals pre-configured damage on collision with blocks, spawns impact effect, then auto-cleans up after timeout. + /// + public class TrashPiece : MonoBehaviour + { + [Header("Visual Effects")] + [Tooltip("Impact effect prefab spawned on block collision")] + [SerializeField] private GameObject impactEffectPrefab; + + private float damage; + private bool hasHit = false; + + private void Start() + { + // Get configuration from settings + var settings = GameManager.GetSettingsObject(); + damage = settings?.TrashPieceDamage ?? 5f; + float lifetime = settings?.TrashPieceLifetime ?? 5f; + + // Auto-cleanup after configured timeout + Destroy(gameObject, lifetime); + } + + private void OnCollisionEnter2D(Collision2D collision) + { + if (hasHit) return; + + // Check if hit a fort block + var block = collision.gameObject.GetComponent(); + if (block != null) + { + hasHit = true; + + // Deal damage + block.TakeDamage(damage); + Logging.Debug($"[TrashPiece] Dealt {damage} damage to {block.gameObject.name}"); + + // Spawn impact effect at collision point + if (impactEffectPrefab != null && collision.contacts.Length > 0) + { + Vector2 impactPoint = collision.contacts[0].point; + GameObject effect = Instantiate(impactEffectPrefab, impactPoint, Quaternion.identity); + + // Dynamically determine cleanup time from particle system + float lifetime = GetEffectLifetime(effect); + Destroy(effect, lifetime); + } + } + } + + /// + /// Get the lifetime of an effect by reading particle system StartLifetime. + /// Falls back to 2 seconds if no particle system found. + /// + private float GetEffectLifetime(GameObject effect) + { + // Try to read from ParticleSystem + ParticleSystem ps = effect.GetComponent(); + if (ps != null) + { + return ps.main.startLifetime.constantMax + 0.5f; // Add small buffer + } + + // Try to read from child particle systems + ParticleSystem childPs = effect.GetComponentInChildren(); + if (childPs != null) + { + return childPs.main.startLifetime.constantMax + 0.5f; + } + + // Fallback for non-particle effects + return 2f; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Minigames/FortFight/Projectiles/TrashPiece.cs.meta b/Assets/Scripts/Minigames/FortFight/Projectiles/TrashPiece.cs.meta new file mode 100644 index 00000000..5e4116b1 --- /dev/null +++ b/Assets/Scripts/Minigames/FortFight/Projectiles/TrashPiece.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 516daf2ce7384aaa94fd5e0f7a3cf078 +timeCreated: 1764756385 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/FortFight/Projectiles/VacuumProjectile.cs b/Assets/Scripts/Minigames/FortFight/Projectiles/VacuumProjectile.cs index 8db7d9f2..7846bc0d 100644 --- a/Assets/Scripts/Minigames/FortFight/Projectiles/VacuumProjectile.cs +++ b/Assets/Scripts/Minigames/FortFight/Projectiles/VacuumProjectile.cs @@ -1,40 +1,59 @@ -using System.Collections; -using Core; +using Core; using UnityEngine; namespace Minigames.FortFight.Projectiles { /// /// Vacuum projectile - high mass, slides along ground after landing. - /// On ground impact: disables gravity, moves horizontally for 2 seconds. + /// On floor/block impact: applies constant force to the right and destroys blocks. /// public class VacuumProjectile : ProjectileBase { - [Header("Vacuum Specific")] - [Tooltip("Speed when sliding on ground")] - [SerializeField] private float slideSpeed = 10f; - - [Tooltip("How long to slide before destroying")] - [SerializeField] private float slideDuration = 2f; - - [Tooltip("Layer mask for ground detection")] - [SerializeField] private LayerMask groundLayer = 1; // Default layer - private bool isSliding = false; + private int blocksDestroyed = 0; + private int maxBlocksToDestroy = 3; + private Vector2 slideDirection; - protected override void OnHit(Collider2D hit) + protected override void OnHit(Collision2D collision) { - // Check if hit ground - if (((1 << hit.gameObject.layer) & groundLayer) != 0) + // If already sliding, count block destruction + if (isSliding) { - Logging.Debug("[VacuumProjectile] Hit ground - starting slide"); - StartSliding(); + var block = collision.gameObject.GetComponent(); + if (block != null) + { + // Spawn impact effect on each block hit + SpawnImpactEffect(collision.contacts[0].point); + + // Get damage from settings + var settings = GameManager.GetSettingsObject(); + float blockDamage = settings?.VacuumBlockDamage ?? 999f; + + // Deal high damage to destroy block instantly + block.TakeDamage(blockDamage); + blocksDestroyed++; + + Logging.Debug($"[VacuumProjectile] Destroyed block {blocksDestroyed}/{maxBlocksToDestroy}"); + + if (blocksDestroyed >= maxBlocksToDestroy) + { + Logging.Debug("[VacuumProjectile] Destroyed max blocks - stopping"); + DestroyProjectile(); + } + } + // Don't destroy - keep sliding + return; } - // If hit wall or fort block, destroy immediately (handled by base class) + + // First hit - spawn impact effect and start sliding + SpawnImpactEffect(collision.contacts[0].point); + Logging.Debug("[VacuumProjectile] Hit surface - starting slide"); + StartSliding(); + // Don't destroy - keep sliding! } /// - /// Start sliding behavior after hitting ground + /// Start sliding behavior after hitting surface /// private void StartSliding() { @@ -42,40 +61,44 @@ namespace Minigames.FortFight.Projectiles isSliding = true; - // Disable gravity - if (rb2D != null) + // Get settings + var settings = GameManager.GetSettingsObject(); + if (settings != null) { - rb2D.gravityScale = 0f; - - // Set velocity to horizontal only (preserve direction) - Vector2 horizontalVelocity = new Vector2(rb2D.linearVelocity.x, 0f).normalized * slideSpeed; - rb2D.linearVelocity = horizontalVelocity; - - Logging.Debug($"[VacuumProjectile] Sliding with velocity: {horizontalVelocity}"); + maxBlocksToDestroy = settings.VacuumDestroyBlockCount; } - // Destroy after slide duration - StartCoroutine(SlideCoroutine()); + // Determine slide direction based on horizontal velocity (preserve launch direction) + if (rb2D != null) + { + slideDirection = rb2D.linearVelocity.x >= 0 ? Vector2.right : Vector2.left; + + rb2D.gravityScale = 0f; + rb2D.linearVelocity = Vector2.zero; // Stop all momentum + + Logging.Debug($"[VacuumProjectile] Started sliding in direction: {slideDirection}"); + } } - private IEnumerator SlideCoroutine() + private void FixedUpdate() { - yield return new WaitForSeconds(slideDuration); - - Logging.Debug("[VacuumProjectile] Slide duration ended - destroying"); - DestroyProjectile(); + if (isSliding && rb2D != null) + { + // Set constant velocity in slide direction + var settings = GameManager.GetSettingsObject(); + float slideSpeed = settings?.VacuumSlideSpeed ?? 10f; + + rb2D.linearVelocity = slideDirection * slideSpeed; + } } /// - /// Override to NOT destroy immediately on ground hit + /// Clean up when destroyed /// protected override void DestroyProjectile() { - // Only destroy if we're done sliding or hit a wall - if (!isSliding || rb2D.linearVelocity.magnitude < 1f) - { - base.DestroyProjectile(); - } + isSliding = false; + base.DestroyProjectile(); } } } diff --git a/Assets/Scripts/Minigames/FortFight/UI/AmmoButton.cs b/Assets/Scripts/Minigames/FortFight/UI/AmmoButton.cs new file mode 100644 index 00000000..62aff017 --- /dev/null +++ b/Assets/Scripts/Minigames/FortFight/UI/AmmoButton.cs @@ -0,0 +1,252 @@ +using Core; +using Core.Lifecycle; +using Minigames.FortFight.Core; +using Minigames.FortFight.Data; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +namespace Minigames.FortFight.UI +{ + /// + /// Generic reusable ammunition button that displays projectile data. + /// Shows icon, availability state, cooldown progress, and turns remaining. + /// + public class AmmoButton : ManagedBehaviour + { + #region Inspector References + + [Header("UI Components")] + [Tooltip("Icon image for the projectile")] + [SerializeField] private Image iconImage; + + [Tooltip("Background overlay that greys out the entire button when on cooldown")] + [SerializeField] private Image cooldownBackgroundImage; + + [Tooltip("Radial fill overlay for cooldown visualization")] + [SerializeField] private Image cooldownFillImage; + + [Tooltip("Text displaying turns remaining")] + [SerializeField] private TextMeshProUGUI turnsRemainingText; + + [Tooltip("Button component")] + [SerializeField] private Button button; + + [Tooltip("Visual indicator for selected state (optional border/glow)")] + [SerializeField] private GameObject selectedIndicator; + + #endregion + + #region State + + private ProjectileConfig projectileConfig; + private AmmunitionManager ammunitionManager; + private SlingshotController slingshotController; + private int playerIndex; + private bool isSelected; + + #endregion + + #region Initialization + + /// + /// Initialize the button with projectile config and system references. + /// Call this after instantiation to configure the button. + /// + public void Initialize(ProjectileConfig config, AmmunitionManager ammoManager, SlingshotController slingshot, int playerIdx) + { + projectileConfig = config; + ammunitionManager = ammoManager; + slingshotController = slingshot; + playerIndex = playerIdx; + + // Setup UI from projectile config + if (iconImage != null && config.icon != null) + { + iconImage.sprite = config.icon; + } + + // Setup cooldown background (hidden by default) + if (cooldownBackgroundImage != null) + { + cooldownBackgroundImage.gameObject.SetActive(false); + } + + // Setup cooldown fill (hidden by default) + if (cooldownFillImage != null) + { + cooldownFillImage.fillAmount = 0f; + cooldownFillImage.type = Image.Type.Filled; + cooldownFillImage.fillMethod = Image.FillMethod.Radial360; + cooldownFillImage.fillOrigin = (int)Image.Origin360.Top; + cooldownFillImage.gameObject.SetActive(false); + } + + // Setup turns text (hidden by default) + if (turnsRemainingText != null) + { + turnsRemainingText.gameObject.SetActive(false); + } + + // Setup button + if (button != null) + { + button.onClick.AddListener(OnButtonClicked); + } + + // Subscribe to ammunition events + if (ammunitionManager != null) + { + ammunitionManager.OnAmmoSelected += HandleAmmoSelected; + ammunitionManager.OnAmmoCooldownStarted += HandleCooldownStarted; + ammunitionManager.OnAmmoCooldownCompleted += HandleCooldownCompleted; + } + + // Initial update + UpdateVisuals(); + } + + internal override void OnManagedDestroy() + { + base.OnManagedDestroy(); + + // Unsubscribe from events + if (ammunitionManager != null) + { + ammunitionManager.OnAmmoSelected -= HandleAmmoSelected; + ammunitionManager.OnAmmoCooldownStarted -= HandleCooldownStarted; + ammunitionManager.OnAmmoCooldownCompleted -= HandleCooldownCompleted; + } + + // Remove button listener + if (button != null) + { + button.onClick.RemoveListener(OnButtonClicked); + } + } + + #endregion + + #region Update + + private void Update() + { + // Update visuals every frame + UpdateVisuals(); + } + + /// + /// Update all visual elements based on current state + /// + private void UpdateVisuals() + { + if (projectileConfig == null || ammunitionManager == null) return; + + // Get current cooldown state for this player + int turnsRemaining = ammunitionManager.GetCooldownRemaining(projectileConfig.projectileType, playerIndex); + bool isAvailable = ammunitionManager.IsAmmoAvailable(projectileConfig.projectileType, playerIndex); + bool onCooldown = turnsRemaining > 0; + + // Show/hide cooldown background overlay + if (cooldownBackgroundImage != null) + { + cooldownBackgroundImage.gameObject.SetActive(onCooldown); + } + + // Update cooldown fill (0 = no fill, 1 = full fill) + if (cooldownFillImage != null) + { + if (onCooldown && projectileConfig.cooldownTurns > 0) + { + float fillAmount = (float)turnsRemaining / projectileConfig.cooldownTurns; + cooldownFillImage.fillAmount = fillAmount; + cooldownFillImage.gameObject.SetActive(true); + } + else + { + cooldownFillImage.gameObject.SetActive(false); + } + } + + // Update turns remaining text + if (turnsRemainingText != null) + { + if (onCooldown) + { + turnsRemainingText.text = turnsRemaining.ToString(); + turnsRemainingText.gameObject.SetActive(true); + } + else + { + turnsRemainingText.gameObject.SetActive(false); + } + } + + // Update button interactability + if (button != null) + { + button.interactable = isAvailable; + } + + // Update selected indicator + if (selectedIndicator != null) + { + selectedIndicator.SetActive(isSelected); + } + } + + #endregion + + #region Button Click + + /// + /// Called when button is clicked - selects this ammo type + /// + private void OnButtonClicked() + { + if (projectileConfig == null || ammunitionManager == null) return; + + // Try to select this ammo type for this player + bool selected = ammunitionManager.SelectAmmo(projectileConfig.projectileType, playerIndex); + + if (selected && slingshotController != null) + { + // Update slingshot with new ammo config + slingshotController.SetAmmo(projectileConfig); + + Logging.Debug($"[AmmoButton] Player {playerIndex} selected {projectileConfig.displayName}"); + } + } + + #endregion + + #region Event Handlers + + private void HandleAmmoSelected(ProjectileType selectedType, int selectedPlayerIndex) + { + // Only update if this event is for our player + if (selectedPlayerIndex != playerIndex) + return; + + // Update selected state - check if this is our player's current selection + isSelected = (selectedType == projectileConfig.projectileType); + } + + private void HandleCooldownStarted(ProjectileType type, int cooldownTurns) + { + // Visual update handled in UpdateVisuals() + } + + private void HandleCooldownCompleted(ProjectileType type) + { + // Visual update handled in UpdateVisuals() + if (type == projectileConfig.projectileType) + { + Logging.Debug($"[AmmoButton] {projectileConfig.displayName} ready!"); + } + } + + #endregion + } +} + diff --git a/Assets/Scripts/Minigames/FortFight/UI/AmmoButton.cs.meta b/Assets/Scripts/Minigames/FortFight/UI/AmmoButton.cs.meta new file mode 100644 index 00000000..020bfa3b --- /dev/null +++ b/Assets/Scripts/Minigames/FortFight/UI/AmmoButton.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d18726bad651464fbc4e49f8c95c0c37 +timeCreated: 1764770308 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/FortFight/UI/AmmunitionPanel.cs b/Assets/Scripts/Minigames/FortFight/UI/AmmunitionPanel.cs new file mode 100644 index 00000000..a43c34b0 --- /dev/null +++ b/Assets/Scripts/Minigames/FortFight/UI/AmmunitionPanel.cs @@ -0,0 +1,171 @@ +using Core; +using Core.Lifecycle; +using Minigames.FortFight.Core; +using Minigames.FortFight.Data; +using UnityEngine; + +namespace Minigames.FortFight.UI +{ + /// + /// Manages ammunition UI panel for a specific player. + /// Shows/hides based on turn state and initializes buttons with player context. + /// + public class AmmunitionPanel : ManagedBehaviour + { + #region Inspector References + + [Header("Player Configuration")] + [Tooltip("Which player this panel belongs to (0 = Player 1, 1 = Player 2)")] + [SerializeField] private int playerIndex = 0; + + [Header("References")] + [Tooltip("Ammunition manager (shared between both players)")] + [SerializeField] private AmmunitionManager ammunitionManager; + + [Tooltip("This player's slingshot controller")] + [SerializeField] private SlingshotController slingshotController; + + [Tooltip("Turn manager to subscribe to turn events")] + [SerializeField] private TurnManager turnManager; + + [Header("UI")] + [Tooltip("Array of ammo buttons in this panel")] + [SerializeField] private AmmoButton[] ammoButtons; + + [Tooltip("Root GameObject to show/hide entire panel")] + [SerializeField] private GameObject panelRoot; + + #endregion + + #region Initialization + + internal override void OnManagedAwake() + { + base.OnManagedAwake(); + + // Validate references + if (ammunitionManager == null) + { + Logging.Error($"[AmmunitionPanel] Player {playerIndex}: Ammunition manager not assigned!"); + } + + if (slingshotController == null) + { + Logging.Error($"[AmmunitionPanel] Player {playerIndex}: Slingshot controller not assigned!"); + } + + if (turnManager == null) + { + Logging.Error($"[AmmunitionPanel] Player {playerIndex}: Turn manager not assigned!"); + } + + if (ammoButtons == null || ammoButtons.Length == 0) + { + Logging.Warning($"[AmmunitionPanel] Player {playerIndex}: No ammo buttons assigned!"); + } + + // Use assigned panelRoot or fall back to this GameObject + if (panelRoot == null) + { + panelRoot = gameObject; + } + } + + internal override void OnManagedStart() + { + base.OnManagedStart(); + + // Initialize ammo buttons with player context + InitializeButtons(); + + // Subscribe to turn events + if (turnManager != null) + { + turnManager.OnTurnStarted += HandleTurnStarted; + } + + // Start hidden + SetPanelVisibility(false); + } + + internal override void OnManagedDestroy() + { + base.OnManagedDestroy(); + + // Unsubscribe from events + if (turnManager != null) + { + turnManager.OnTurnStarted -= HandleTurnStarted; + } + } + + /// + /// Initialize all ammo buttons with player-specific configuration + /// + private void InitializeButtons() + { + if (ammunitionManager == null || slingshotController == null || ammoButtons == null) + { + return; + } + + // Get available projectile types from settings + var availableTypes = ammunitionManager.GetAvailableProjectileTypes(); + var settings = GameManager.GetSettingsObject(); + + if (settings == null) + { + Logging.Error($"[AmmunitionPanel] Player {playerIndex}: Could not get FortFightSettings!"); + return; + } + + for (int i = 0; i < ammoButtons.Length && i < availableTypes.Count; i++) + { + if (ammoButtons[i] != null) + { + var config = settings.GetProjectileConfig(availableTypes[i]); + if (config != null) + { + ammoButtons[i].Initialize(config, ammunitionManager, slingshotController, playerIndex); + Logging.Debug($"[AmmunitionPanel] Player {playerIndex}: Initialized button for {config.displayName}"); + } + } + } + } + + #endregion + + #region Turn Events + + /// + /// Called when any player's turn starts - show/hide panel accordingly + /// + private void HandleTurnStarted(PlayerData player, TurnState turnState) + { + // Only show panel when it's this player's turn (not during transitions) + bool shouldShow = player.PlayerIndex == playerIndex && + (turnState == TurnState.PlayerOneTurn || turnState == TurnState.PlayerTwoTurn); + + SetPanelVisibility(shouldShow); + + if (shouldShow) + { + Logging.Debug($"[AmmunitionPanel] Showing panel for Player {playerIndex}"); + } + } + + /// + /// Show or hide the entire panel + /// + private void SetPanelVisibility(bool visible) + { + if (panelRoot != null) + { + panelRoot.SetActive(visible); + } + } + + #endregion + } +} + diff --git a/Assets/Scripts/Minigames/FortFight/UI/AmmunitionPanel.cs.meta b/Assets/Scripts/Minigames/FortFight/UI/AmmunitionPanel.cs.meta new file mode 100644 index 00000000..e849b6f6 --- /dev/null +++ b/Assets/Scripts/Minigames/FortFight/UI/AmmunitionPanel.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1963617e4d104c199c3a66d671b8d8a2 +timeCreated: 1764771029 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/FortFight/UI/GameplayPage.cs b/Assets/Scripts/Minigames/FortFight/UI/GameplayPage.cs index 23c7a7d5..aeda8978 100644 --- a/Assets/Scripts/Minigames/FortFight/UI/GameplayPage.cs +++ b/Assets/Scripts/Minigames/FortFight/UI/GameplayPage.cs @@ -11,15 +11,13 @@ namespace Minigames.FortFight.UI { /// /// Main gameplay UI page for Fort Fight minigame. - /// Displays turn info and allows player to take actions (stubbed for Phase 1). + /// Displays turn info. Turn actions now handled via slingshot input system. /// public class GameplayPage : UIPage { [Header("UI Elements")] [SerializeField] private TextMeshProUGUI turnIndicatorText; [SerializeField] private TextMeshProUGUI currentPlayerText; - [SerializeField] private Button takeActionButton; - [SerializeField] private TextMeshProUGUI actionButtonText; [Header("Optional Visual Elements")] [SerializeField] private CanvasGroup canvasGroup; @@ -37,11 +35,7 @@ namespace Minigames.FortFight.UI // Validate references ValidateReferences(); - // Set up button - if (takeActionButton != null) - { - takeActionButton.onClick.AddListener(OnTakeActionClicked); - } + // Note: takeActionButton is no longer used - turns handled via slingshot input // Set up canvas group if (canvasGroup == null) @@ -55,7 +49,7 @@ namespace Minigames.FortFight.UI base.OnManagedStart(); // Get turn manager reference - turnManager = FindObjectOfType(); + turnManager = FindFirstObjectByType(); if (turnManager != null) { @@ -80,15 +74,8 @@ namespace Minigames.FortFight.UI Logging.Warning("[GameplayPage] Current player text not assigned!"); } - if (takeActionButton == null) - { - Logging.Error("[GameplayPage] Take action button not assigned!"); - } - - if (actionButtonText == null) - { - Logging.Warning("[GameplayPage] Action button text not assigned!"); - } + // Note: takeActionButton and actionButtonText are no longer used + // Turns are now handled automatically via slingshot input system } #endregion @@ -147,11 +134,6 @@ namespace Minigames.FortFight.UI { aiTurnPanel.SetActive(true); } - - if (takeActionButton != null) - { - takeActionButton.gameObject.SetActive(false); - } } else if (turnState == TurnState.PlayerOneTurn || turnState == TurnState.PlayerTwoTurn) { @@ -165,48 +147,11 @@ namespace Minigames.FortFight.UI { aiTurnPanel.SetActive(false); } - - if (takeActionButton != null) - { - takeActionButton.gameObject.SetActive(true); - } - - if (actionButtonText != null) - { - actionButtonText.text = "Take Action (Stubbed)"; - } } } #endregion - #region Button Callbacks - - /// - /// Called when player clicks the "Take Action" button - /// STUBBED for Phase 1 - just logs and ends turn - /// - private void OnTakeActionClicked() - { - if (turnManager == null) - { - Logging.Error("[GameplayPage] Cannot take action - TurnManager not found!"); - return; - } - - PlayerData currentPlayer = turnManager.CurrentPlayer; - - // STUBBED: Log the action - Logging.Debug($"[GameplayPage] {currentPlayer.PlayerName} takes action! (STUBBED - no actual combat yet)"); - - // TODO Phase 3: Replace with actual slingshot/shooting interface - - // End the turn - turnManager.EndTurn(); - } - - #endregion - #region Transitions protected override void DoTransitionIn(System.Action onComplete) @@ -252,12 +197,6 @@ namespace Minigames.FortFight.UI turnManager.OnTurnStarted -= OnTurnStarted; turnManager.OnTurnEnded -= OnTurnEnded; } - - // Unsubscribe from button - if (takeActionButton != null) - { - takeActionButton.onClick.RemoveListener(OnTakeActionClicked); - } } #endregion diff --git a/Assets/Settings/FortFightSettings.asset b/Assets/Settings/FortFightSettings.asset index b9024faf..11801f81 100644 --- a/Assets/Settings/FortFightSettings.asset +++ b/Assets/Settings/FortFightSettings.asset @@ -36,5 +36,58 @@ MonoBehaviour: weakPointExplosionDamage: 50 weakPointExplosionForce: 50 fortDefeatThreshold: 0.3 - physicsGravityScale: 1 + blockGravityScale: 2 + projectileGravityScale: 1 + projectileSettleDelay: 2.5 + turnTransitionDelay: 1.5 + projectileConfigs: + - projectileType: 0 + projectileId: toaster + prefab: {fileID: 4820392328973485589, guid: a4b194a56edefa541b7c3bd7d70c8ba5, type: 3} + cooldownTurns: 0 + icon: {fileID: 6674386295937086461, guid: 3bd1c178a78fcd144965cd1731dc309b, type: 3} + displayName: Toaster + description: + damage: 20 + mass: 5 + - projectileType: 1 + projectileId: vacuum + prefab: {fileID: 4015519405310386481, guid: 4ffc718ecbe281041bc8354567f6e940, type: 3} + cooldownTurns: 3 + icon: {fileID: 3452003437791708593, guid: 4c13556eeb918624c9dd3d7e4086242e, type: 3} + displayName: Vacuum + description: + damage: 20 + mass: 10 + - projectileType: 2 + projectileId: ceilingfan + prefab: {fileID: 4342087378442690536, guid: ff8b62fb437256043aa6bd0b5441316b, type: 3} + cooldownTurns: 2 + icon: {fileID: -765527507412255412, guid: f70246e6148769846aaea223ec0c2a55, type: 3} + displayName: CeillingFan + description: + damage: 20 + mass: 3 + - projectileType: 3 + projectileId: trashbag + prefab: {fileID: 4015519405310386481, guid: 177c683542fd63a4a9d7e7ecacea596f, type: 3} + cooldownTurns: 3 + icon: {fileID: 8766740682603709380, guid: b0a0abcb5fec95649b581307eca6a444, type: 3} + displayName: TrashBag + description: + damage: 20 + mass: 5 + vacuumSlideForce: 15 + vacuumDestroyBlockCount: 2 + vacuumBlockDamage: 999 + trashBagPieceCount: 5 + trashBagPieceForce: 10 + trashBagSpreadAngle: 60 + ceilingFanActivationDelay: 1 + baseLaunchForce: 150 + minForceMultiplier: 0.1 + maxForceMultiplier: 1 + trajectoryLockDuration: 2 + fortBlockLayer: 16 + projectileLayer: 15 damageColorTint: {r: 1, g: 0, b: 0, a: 1} diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset index dce941c4..b1476f54 100644 --- a/ProjectSettings/Physics2DSettings.asset +++ b/ProjectSettings/Physics2DSettings.asset @@ -53,4 +53,4 @@ Physics2DSettings: m_ReuseCollisionCallbacks: 1 m_AutoSyncTransforms: 0 m_GizmoOptions: 10 - m_LayerCollisionMatrix: fffffffffffffffffffffffffffffffffffffffffffffffffffefffffff8ffff3ffbffff7fffffff7ffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_LayerCollisionMatrix: ff7ffeffff7ffeffff7ffeffffffffffff7ffeffff7ffeffff7efeffff78feff3f7bfeff7f7ffeff7f7efeffff7ffeffff7ffeffff7ffeffffffffff0840ffff08c0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 70b32caf..310625f8 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -26,9 +26,9 @@ TagManager: - QuarryObstacle - QuarryMonster - QuarryTrenchTile - - - - - - + - FortFight_Ground + - FortFight_Projectile + - FortFight_Block - - -