From fada3af715930a0f2ebd785a7dfba7f8c399b413 Mon Sep 17 00:00:00 2001 From: reisenlol Date: Fri, 23 Jan 2026 00:55:00 -0800 Subject: [PATCH] yeah i think that's commit worthy --- Assets/Prefabs/Enemy.prefab | 4 +- Assets/Prefabs/MochiMallet.prefab | 3 +- Assets/Prefabs/Musket.prefab | 7 +- Assets/Prefabs/Pistol.prefab | 54 +++ Assets/Prefabs/Pistol.prefab.meta | 7 + Assets/Prefabs/PlayerEntity.prefab | 3 + Assets/Prefabs/ReloadSurge.prefab | 50 +++ Assets/Prefabs/ReloadSurge.prefab.meta | 7 + Assets/Scenes/Prototype.unity | 459 ++++++++++++++++++++++++- Assets/Scripts/ActionUIHandler.cs | 28 +- Assets/Scripts/OfficerAbilities.cs | 33 +- Assets/Scripts/OfficerReload.cs | 26 ++ Assets/Scripts/OfficerReload.cs.meta | 2 + Assets/Scripts/RangedWeapon.cs | 1 + Assets/Scripts/TurnHandler.cs | 2 + Assets/Scripts/Weapon.cs | 1 + 16 files changed, 658 insertions(+), 29 deletions(-) create mode 100644 Assets/Prefabs/Pistol.prefab create mode 100644 Assets/Prefabs/Pistol.prefab.meta create mode 100644 Assets/Prefabs/ReloadSurge.prefab create mode 100644 Assets/Prefabs/ReloadSurge.prefab.meta create mode 100644 Assets/Scripts/OfficerReload.cs create mode 100644 Assets/Scripts/OfficerReload.cs.meta diff --git a/Assets/Prefabs/Enemy.prefab b/Assets/Prefabs/Enemy.prefab index cbd2e83..5eb5ab1 100644 --- a/Assets/Prefabs/Enemy.prefab +++ b/Assets/Prefabs/Enemy.prefab @@ -175,8 +175,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 441b69580fe55f47ead9c7266bb4d363, type: 3} m_Name: m_EditorClassIdentifier: - health: 100 - maxHealth: 100 + health: 50 + maxHealth: 50 maxMovement: 4 currentTile: {fileID: 0} moveAnimSpeed: 10 diff --git a/Assets/Prefabs/MochiMallet.prefab b/Assets/Prefabs/MochiMallet.prefab index 39ae5d2..950ea84 100644 --- a/Assets/Prefabs/MochiMallet.prefab +++ b/Assets/Prefabs/MochiMallet.prefab @@ -49,7 +49,8 @@ MonoBehaviour: weaponName: Mochi Mallet isAiming: 0 thisEntity: {fileID: 0} - damage: 30 + damage: 35 + pierce: 0 entityLayer: serializedVersion: 2 m_Bits: 128 diff --git a/Assets/Prefabs/Musket.prefab b/Assets/Prefabs/Musket.prefab index 70450ad..2213a0c 100644 --- a/Assets/Prefabs/Musket.prefab +++ b/Assets/Prefabs/Musket.prefab @@ -45,7 +45,10 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: weaponName: Musket - thisEntity: {fileID: 0} - fired: 0 isAiming: 0 + thisEntity: {fileID: 0} + damage: 100 + pierce: 6 + reloadActionUsage: 2 + fired: 0 projectile: {fileID: -1842087358034785043, guid: 66f942782c156c9aa905099dade8a654, type: 3} diff --git a/Assets/Prefabs/Pistol.prefab b/Assets/Prefabs/Pistol.prefab new file mode 100644 index 0000000..942e453 --- /dev/null +++ b/Assets/Prefabs/Pistol.prefab @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8120255683806130734 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 249869374080430447} + - component: {fileID: 5015834028617221606} + m_Layer: 0 + m_Name: Pistol + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &249869374080430447 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8120255683806130734} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5015834028617221606 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8120255683806130734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a1c9e746311daba0092c2ff511ab3031, type: 3} + m_Name: + m_EditorClassIdentifier: + weaponName: Pistol + isAiming: 0 + thisEntity: {fileID: 0} + damage: 75 + pierce: 3 + reloadActionUsage: 1 + fired: 0 + projectile: {fileID: -1842087358034785043, guid: 66f942782c156c9aa905099dade8a654, type: 3} diff --git a/Assets/Prefabs/Pistol.prefab.meta b/Assets/Prefabs/Pistol.prefab.meta new file mode 100644 index 0000000..3020c02 --- /dev/null +++ b/Assets/Prefabs/Pistol.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ad296ed0e6da5671e9a476e1bb8f6998 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/PlayerEntity.prefab b/Assets/Prefabs/PlayerEntity.prefab index eb3679b..ccc337a 100644 --- a/Assets/Prefabs/PlayerEntity.prefab +++ b/Assets/Prefabs/PlayerEntity.prefab @@ -474,11 +474,14 @@ MonoBehaviour: damageColorChangeSpeed: 4 actions: 2 maxActions: 2 + selectedClass: 0 weapons: - {fileID: 5015834028617221606, guid: a822f12b0129533629ae07e7075e0b33, type: 3} - {fileID: 7808092982301890633, guid: b8051aa5988c369b1a760ce62ebcbedd, type: 3} weaponInstances: [] currentWeapon: {fileID: 0} + officerAbility: {fileID: 2386380402288434018, guid: 399276321551d6338842b1dc4975d66f, type: 3} + officerInstance: {fileID: 0} hpBar: {fileID: 3104995061699689292} debugDoneObject: {fileID: 6197559026114623176} --- !u!1 &9154813544046831137 diff --git a/Assets/Prefabs/ReloadSurge.prefab b/Assets/Prefabs/ReloadSurge.prefab new file mode 100644 index 0000000..9eb1faa --- /dev/null +++ b/Assets/Prefabs/ReloadSurge.prefab @@ -0,0 +1,50 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &801935050829970014 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7703980202025624524} + - component: {fileID: 2386380402288434018} + m_Layer: 0 + m_Name: ReloadSurge + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7703980202025624524 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801935050829970014} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2386380402288434018 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801935050829970014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0704cc1c95eb8482f875e76ed2431f51, type: 3} + m_Name: + m_EditorClassIdentifier: + thisEntity: {fileID: 0} + killQuota: 0 + abilityLength: 4 + roundsRemaining: 0 diff --git a/Assets/Prefabs/ReloadSurge.prefab.meta b/Assets/Prefabs/ReloadSurge.prefab.meta new file mode 100644 index 0000000..2557505 --- /dev/null +++ b/Assets/Prefabs/ReloadSurge.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 399276321551d6338842b1dc4975d66f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Prototype.unity b/Assets/Scenes/Prototype.unity index 56c8da7..0838051 100644 --- a/Assets/Scenes/Prototype.unity +++ b/Assets/Scenes/Prototype.unity @@ -1317,7 +1317,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 150, y: -180} + m_AnchoredPosition: {x: 150, y: -230} m_SizeDelta: {x: 290, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &437005975 @@ -2771,8 +2771,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 110, y: 0} - m_SizeDelta: {x: 200, y: 50} + m_AnchoredPosition: {x: 110, y: -30} + m_SizeDelta: {x: 200, y: 40} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1007984062 MonoBehaviour: @@ -2821,8 +2821,8 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 36 - m_fontSizeBase: 36 + m_fontSize: 28 + m_fontSizeBase: 28 m_fontWeight: 400 m_enableAutoSizing: 0 m_fontSizeMin: 18 @@ -2837,7 +2837,7 @@ MonoBehaviour: m_lineSpacingMax: 0 m_paragraphSpacing: 0 m_charWidthMaxAdj: 0 - m_TextWrappingMode: 1 + m_TextWrappingMode: 0 m_wordWrappingRatios: 0.4 m_overflowMode: 0 m_linkedTextComponent: {fileID: 0} @@ -2910,6 +2910,142 @@ Transform: - {fileID: 234969367} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1027207199 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1027207200} + - component: {fileID: 1027207202} + - component: {fileID: 1027207201} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1027207200 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1027207199} + 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: 1684414386} + 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 &1027207201 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1027207199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + 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: Activate Reload Surge + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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: 24 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + 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 &1027207202 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1027207199} + m_CullTransparentMesh: 1 --- !u!1 &1049538432 GameObject: m_ObjectHideFlags: 0 @@ -3025,7 +3161,7 @@ MonoBehaviour: m_Calls: [] m_Sprite: {fileID: -7425528324702340497, guid: 2e81e15c3990a443d883186c228cacb9, type: 3} m_Type: 0 - m_PreserveAspect: 0 + m_PreserveAspect: 1 m_FillCenter: 1 m_FillMethod: 4 m_FillAmount: 1 @@ -3280,7 +3416,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 150, y: -130} + m_AnchoredPosition: {x: 150, y: -180} m_SizeDelta: {x: 290, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1218150749 @@ -3498,6 +3634,144 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1226097031} m_CullTransparentMesh: 1 +--- !u!1 &1248003403 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1248003404} + - component: {fileID: 1248003406} + - component: {fileID: 1248003405} + m_Layer: 5 + m_Name: WeaponLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1248003404 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1248003403} + 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: 1269014763} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 110, y: 0} + m_SizeDelta: {x: 200, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1248003405 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1248003403} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + 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: 'WEAPON: Musket + +' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, 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: 28 + m_fontSizeBase: 28 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + 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: 0 + 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 &1248003406 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1248003403} + m_CullTransparentMesh: 1 --- !u!1 &1250801357 GameObject: m_ObjectHideFlags: 0 @@ -3664,6 +3938,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 1248003404} - {fileID: 1007984061} - {fileID: 2111145669} - {fileID: 309360849} @@ -4652,6 +4927,139 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1684414385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1684414386} + - component: {fileID: 1684414389} + - component: {fileID: 1684414388} + - component: {fileID: 1684414387} + m_Layer: 5 + m_Name: OfficerButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1684414386 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1684414385} + 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: 1027207200} + m_Father: {fileID: 1862374685} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 150, y: -130} + m_SizeDelta: {x: 290, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1684414387 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1684414385} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + 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: 1684414388} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1741550583} + m_TargetAssemblyTypeName: ActionUIHandler, Assembly-CSharp + m_MethodName: ActivateOfficer + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1684414388 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1684414385} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + 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 &1684414389 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1684414385} + m_CullTransparentMesh: 1 --- !u!1 &1741550581 GameObject: m_ObjectHideFlags: 0 @@ -4712,6 +5120,7 @@ MonoBehaviour: nameLabel: {fileID: 1774370119} classLabel: {fileID: 1744470854} unitPortrait: {fileID: 1071017990} + weaponLabel: {fileID: 1248003405} attackLabel: {fileID: 1007984062} speedLabel: {fileID: 2111145670} healthBar: {fileID: 117748789} @@ -4720,6 +5129,7 @@ MonoBehaviour: attackButton: {fileID: 1904174745} reloadButton: {fileID: 1218150749} switchButton: {fileID: 437005975} + officerAbilityButton: {fileID: 1684414387} weaponUIPanel: {fileID: 922303061} templateWeaponButton: {fileID: 1226097033} templateButtonHeight: 50 @@ -4757,7 +5167,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 110, y: 60} + m_AnchoredPosition: {x: 110, y: 70} m_SizeDelta: {x: 200, y: 40} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1744470854 @@ -4895,7 +5305,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 150, y: -230} + m_AnchoredPosition: {x: 150, y: -280} m_SizeDelta: {x: 290, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1747903014 @@ -5347,6 +5757,7 @@ RectTransform: m_Children: - {fileID: 1991761900} - {fileID: 1904174744} + - {fileID: 1684414386} - {fileID: 1218150748} - {fileID: 437005974} - {fileID: 1747903013} @@ -5456,7 +5867,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 150, y: -280} + m_AnchoredPosition: {x: 150, y: -330} m_SizeDelta: {x: 290, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1877710233 @@ -6520,8 +6931,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 110, y: -50} - m_SizeDelta: {x: 200, y: 50} + m_AnchoredPosition: {x: 110, y: -60} + m_SizeDelta: {x: 200, y: 40} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2111145670 MonoBehaviour: @@ -6570,8 +6981,8 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 36 - m_fontSizeBase: 36 + m_fontSize: 28 + m_fontSizeBase: 28 m_fontWeight: 400 m_enableAutoSizing: 0 m_fontSizeMin: 18 @@ -6586,7 +6997,7 @@ MonoBehaviour: m_lineSpacingMax: 0 m_paragraphSpacing: 0 m_charWidthMaxAdj: 0 - m_TextWrappingMode: 1 + m_TextWrappingMode: 0 m_wordWrappingRatios: 0.4 m_overflowMode: 0 m_linkedTextComponent: {fileID: 0} @@ -6690,6 +7101,18 @@ PrefabInstance: propertyPath: maxMovement value: 4 objectReference: {fileID: 0} + - target: {fileID: 7370141107480051474, guid: 0890a915b9432db98b28379f0c26c064, type: 3} + propertyPath: currentWeapon + value: + objectReference: {fileID: 0} + - target: {fileID: 7370141107480051474, guid: 0890a915b9432db98b28379f0c26c064, type: 3} + propertyPath: selectedClass + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7370141107480051474, guid: 0890a915b9432db98b28379f0c26c064, type: 3} + propertyPath: 'weapons.Array.data[0]' + value: + objectReference: {fileID: 5015834028617221606, guid: ad296ed0e6da5671e9a476e1bb8f6998, type: 3} - target: {fileID: 8094053231633710175, guid: 0890a915b9432db98b28379f0c26c064, type: 3} propertyPath: m_Name value: PlayerEntity (2) @@ -7011,6 +7434,10 @@ PrefabInstance: propertyPath: maxMovement value: 4 objectReference: {fileID: 0} + - target: {fileID: 7370141107480051474, guid: 0890a915b9432db98b28379f0c26c064, type: 3} + propertyPath: selectedClass + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8094053231633710175, guid: 0890a915b9432db98b28379f0c26c064, type: 3} propertyPath: m_Name value: PlayerEntity diff --git a/Assets/Scripts/ActionUIHandler.cs b/Assets/Scripts/ActionUIHandler.cs index 9ffd904..23d67b8 100644 --- a/Assets/Scripts/ActionUIHandler.cs +++ b/Assets/Scripts/ActionUIHandler.cs @@ -32,6 +32,7 @@ public class ActionUIHandler : MonoBehaviour [SerializeField] private TextMeshProUGUI nameLabel; [SerializeField] private TextMeshProUGUI classLabel; [SerializeField] private Image unitPortrait; + [SerializeField] private TextMeshProUGUI weaponLabel; [SerializeField] private TextMeshProUGUI attackLabel; [SerializeField] private TextMeshProUGUI speedLabel; [SerializeField] private Transform healthBar; @@ -41,6 +42,7 @@ public class ActionUIHandler : MonoBehaviour [SerializeField] private Button attackButton; [SerializeField] private Button reloadButton; [SerializeField] private Button switchButton; + [SerializeField] private Button officerAbilityButton; [Header("Weapon Switcher")] [SerializeField] private RectTransform weaponUIPanel; @@ -54,6 +56,7 @@ public class ActionUIHandler : MonoBehaviour opened = true; possibleRanged = null; selectedEntity = target; + actionUI.SetActive(true); actionText.gameObject.SetActive(true); infoUI.SetActive(true); @@ -74,17 +77,22 @@ public class ActionUIHandler : MonoBehaviour else { attackButton.gameObject.SetActive(false); - if (isRanged && isRanged.fired) + if (isRanged && isRanged.fired && selectedEntity.actions >= isRanged.reloadActionUsage) { - if (selectedEntity.actions < 2) - { - reloadButton.gameObject.SetActive(false); - } - else { reloadButton.gameObject.SetActive(true); } } + else + { + reloadButton.gameObject.SetActive(false); + } + } + + officerAbilityButton.gameObject.SetActive(false); + if (selectedEntity.officerInstance) + { + officerAbilityButton.gameObject.SetActive(true); } moveButton.gameObject.SetActive(true); switchButton.gameObject.SetActive(true); @@ -99,6 +107,8 @@ public class ActionUIHandler : MonoBehaviour public void UpdateInfo() { healthBar.localScale = new Vector3(selectedEntity.health / selectedEntity.maxHealth,1,1); + classLabel.text = selectedEntity.selectedClass.ToString(); + weaponLabel.text = $"Weapon: {selectedEntity.currentWeapon.weaponName}"; healthText.text = $"{selectedEntity.health}/{selectedEntity.maxHealth}"; attackLabel.text = $"Attack: {selectedEntity.currentWeapon.damage}"; speedLabel.text = $"Speed: {selectedEntity.maxMovement}"; @@ -117,7 +127,7 @@ public class ActionUIHandler : MonoBehaviour { possibleRanged.Reload(); UpdateActions(possibleRanged.reloadActionUsage); - HideUI(); + UpdateUI(); } public void Attack() @@ -127,6 +137,10 @@ public class ActionUIHandler : MonoBehaviour HideUI(); } + public void ActivateOfficer() + { + selectedEntity.officerInstance.ActivateAbility(); + } public void SkipTurn() { selectedEntity.SkipTurn(); diff --git a/Assets/Scripts/OfficerAbilities.cs b/Assets/Scripts/OfficerAbilities.cs index c29b7d0..700fcc9 100644 --- a/Assets/Scripts/OfficerAbilities.cs +++ b/Assets/Scripts/OfficerAbilities.cs @@ -3,12 +3,17 @@ using UnityEngine; public class OfficerAbilities : MonoBehaviour { + public PlayerEntity thisEntity; + [Header("Kills")] [SerializeField] private int killQuota; private int currentKills; - public PlayerEntity thisEntity; + [Header("Length")] + [SerializeField] private int abilityLength; + [SerializeField] private int roundsRemaining; private void Start() { Enemy.OnKill += UpdateKillQuota; + TurnHandler.waveUpdate += UpdateRounds; } private void UpdateKillQuota(Entity entity) @@ -19,8 +24,34 @@ public class OfficerAbilities : MonoBehaviour currentKills = Mathf.Clamp(currentKills, 0, killQuota); } } + private void UpdateRounds() + { + if (roundsRemaining > 0) + { + roundsRemaining--; + if (roundsRemaining <= 0) + { + DeactivateAbility(); + } + } + } public void ActivateAbility() + { + if (currentKills >= killQuota) + { + currentKills = 0; + roundsRemaining = abilityLength; + AbilityEffects(); + } + } + + protected virtual void AbilityEffects() + { + + } + + protected virtual void DeactivateAbility() { } diff --git a/Assets/Scripts/OfficerReload.cs b/Assets/Scripts/OfficerReload.cs new file mode 100644 index 0000000..bb6e218 --- /dev/null +++ b/Assets/Scripts/OfficerReload.cs @@ -0,0 +1,26 @@ +using UnityEngine; + +public class OfficerReload : OfficerAbilities +{ + protected override void AbilityEffects() + { + foreach (PlayerEntity player in TurnHandler.instance.playerEntities) + { + if (player.currentWeapon.TryGetComponent(out RangedWeapon isRanged) && isRanged) + { + isRanged.reloadActionUsage = 1; + } + } + } + + protected override void DeactivateAbility() + { + foreach (PlayerEntity player in TurnHandler.instance.playerEntities) + { + if (player.currentWeapon.TryGetComponent(out RangedWeapon isRanged) && isRanged) + { + isRanged.reloadActionUsage = 2; + } + } + } +} diff --git a/Assets/Scripts/OfficerReload.cs.meta b/Assets/Scripts/OfficerReload.cs.meta new file mode 100644 index 0000000..035914e --- /dev/null +++ b/Assets/Scripts/OfficerReload.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0704cc1c95eb8482f875e76ed2431f51 \ No newline at end of file diff --git a/Assets/Scripts/RangedWeapon.cs b/Assets/Scripts/RangedWeapon.cs index 94ff8f1..8c20ed4 100644 --- a/Assets/Scripts/RangedWeapon.cs +++ b/Assets/Scripts/RangedWeapon.cs @@ -57,6 +57,7 @@ public class RangedWeapon : Weapon Projectile newProjectile = Instantiate(projectile, transform.position, Quaternion.identity); newProjectile.RotateToTarget(target); newProjectile.damage = damage; + newProjectile.pierceAmount = pierce; newProjectile.tag = tag; newProjectile.fromEntity = thisEntity; } diff --git a/Assets/Scripts/TurnHandler.cs b/Assets/Scripts/TurnHandler.cs index 8c03f09..364a948 100644 --- a/Assets/Scripts/TurnHandler.cs +++ b/Assets/Scripts/TurnHandler.cs @@ -38,6 +38,7 @@ public class TurnHandler : MonoBehaviour [SerializeField] private int amountToSpawn; [SerializeField] private float exponentIncrease; private int currentWave = 1; + public static event Action waveUpdate; private void SortEnemies() { @@ -85,6 +86,7 @@ public class TurnHandler : MonoBehaviour private void EndRound() { EnvironmentTurn(); + waveUpdate?.Invoke(); currentEnemy = 0; currentGameState = GameState.PlayerTurn; foreach (PlayerEntity player in playerEntities) diff --git a/Assets/Scripts/Weapon.cs b/Assets/Scripts/Weapon.cs index 54bd0d8..1645ddd 100644 --- a/Assets/Scripts/Weapon.cs +++ b/Assets/Scripts/Weapon.cs @@ -10,6 +10,7 @@ public class Weapon : MonoBehaviour [Header("Stats")] public float damage; + public int pierce; public virtual void TryAttack() {