Implemented turn passing and taking damage from it.

This commit is contained in:
Max Dodd 2025-01-23 10:22:22 +01:00
parent 31917ba415
commit ede5ef1533
6 changed files with 572 additions and 15 deletions

View file

@ -119,6 +119,142 @@ NavMeshSettings:
debug: debug:
m_Flags: 0 m_Flags: 0
m_NavMeshData: {fileID: 0} m_NavMeshData: {fileID: 0}
--- !u!1 &46598853
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 46598854}
- component: {fileID: 46598856}
- component: {fileID: 46598855}
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 &46598854
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 46598853}
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: 895359723}
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 &46598855
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 46598853}
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: Pass
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 &46598856
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 46598853}
m_CullTransparentMesh: 1
--- !u!1001 &54550404 --- !u!1001 &54550404
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -376,6 +512,8 @@ MonoBehaviour:
state: 0 state: 0
rooms: {fileID: 1820284205} rooms: {fileID: 1820284205}
diceRoller: {fileID: 150116548} diceRoller: {fileID: 150116548}
passManager: {fileID: 895359724}
player: {fileID: 1476127625}
--- !u!1 &150116543 --- !u!1 &150116543
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -390,7 +528,7 @@ GameObject:
- component: {fileID: 150116545} - component: {fileID: 150116545}
- component: {fileID: 150116548} - component: {fileID: 150116548}
m_Layer: 5 m_Layer: 5
m_Name: Button m_Name: RollButton
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
@ -413,8 +551,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 346.17993, y: -216.5268} m_AnchoredPosition: {x: 383.71, y: -217}
m_SizeDelta: {x: 150.14, y: 30} m_SizeDelta: {x: 75.07, y: 30}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &150116545 --- !u!114 &150116545
MonoBehaviour: MonoBehaviour:
@ -708,8 +846,10 @@ RectTransform:
m_LocalScale: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 925126052} - {fileID: 1535239304}
- {fileID: 150116544} - {fileID: 150116544}
- {fileID: 895359723}
- {fileID: 925126052}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
@ -1100,6 +1240,141 @@ RectTransform:
m_CorrespondingSourceObject: {fileID: 1556923700715053098, guid: ca942b415faef4e1ca2ca32043893efd, type: 3} m_CorrespondingSourceObject: {fileID: 1556923700715053098, guid: ca942b415faef4e1ca2ca32043893efd, type: 3}
m_PrefabInstance: {fileID: 822843740} m_PrefabInstance: {fileID: 822843740}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &895359722
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 895359723}
- component: {fileID: 895359727}
- component: {fileID: 895359726}
- component: {fileID: 895359725}
- component: {fileID: 895359724}
m_Layer: 5
m_Name: PassButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &895359723
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 895359722}
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: 46598854}
m_Father: {fileID: 281326036}
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: 308.63998, y: -217}
m_SizeDelta: {x: 75.06, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &895359724
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 895359722}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 95487118287b4514fb9b9fb7018ae717, type: 3}
m_Name:
m_EditorClassIdentifier:
passButton: {fileID: 895359725}
--- !u!114 &895359725
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 895359722}
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: 895359726}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &895359726
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 895359722}
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 &895359727
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 895359722}
m_CullTransparentMesh: 1
--- !u!1 &925126051 --- !u!1 &925126051
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1909,6 +2184,52 @@ Transform:
m_CorrespondingSourceObject: {fileID: 9187907134033443523, guid: 92d87e25cc40b3e448e62e8ba0328315, type: 3} m_CorrespondingSourceObject: {fileID: 9187907134033443523, guid: 92d87e25cc40b3e448e62e8ba0328315, type: 3}
m_PrefabInstance: {fileID: 1488361738} m_PrefabInstance: {fileID: 1488361738}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &1476127624
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1476127626}
- component: {fileID: 1476127625}
m_Layer: 0
m_Name: Player
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1476127625
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1476127624}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 516f63f4d32b3614b92fb0535c742078, type: 3}
m_Name:
m_EditorClassIdentifier:
maxHealth: 20
healthGameObject: {fileID: 1535239303}
--- !u!4 &1476127626
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1476127624}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1014.4642, y: 342.2176, z: 6.637133}
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!1001 &1488361738 --- !u!1001 &1488361738
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2067,6 +2388,142 @@ PrefabInstance:
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: [] m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 92d87e25cc40b3e448e62e8ba0328315, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 92d87e25cc40b3e448e62e8ba0328315, type: 3}
--- !u!1 &1535239303
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1535239304}
- component: {fileID: 1535239306}
- component: {fileID: 1535239305}
m_Layer: 5
m_Name: Health
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1535239304
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1535239303}
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: 281326036}
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: 346.17993, y: -176.53}
m_SizeDelta: {x: 150.14, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1535239305
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1535239303}
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: New Text
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: 4278255360
m_fontColor: {r: 0, g: 1, 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: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 4
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 &1535239306
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1535239303}
m_CullTransparentMesh: 1
--- !u!1 &1544302703 stripped --- !u!1 &1544302703 stripped
GameObject: GameObject:
m_CorrespondingSourceObject: {fileID: 2435349004046080434, guid: 92d87e25cc40b3e448e62e8ba0328315, type: 3} m_CorrespondingSourceObject: {fileID: 2435349004046080434, guid: 92d87e25cc40b3e448e62e8ba0328315, type: 3}
@ -2352,6 +2809,7 @@ SceneRoots:
m_Roots: m_Roots:
- {fileID: 59409728} - {fileID: 59409728}
- {fileID: 126339302} - {fileID: 126339302}
- {fileID: 1476127626}
- {fileID: 1820284206} - {fileID: 1820284206}
- {fileID: 812815656} - {fileID: 812815656}
- {fileID: 281326036} - {fileID: 281326036}

View file

@ -14,17 +14,21 @@ public enum GameState
} }
public class GameManager : MonoBehaviour public class GameManager : MonoBehaviour
{ {
[SerializeField] private GameState state; [SerializeField] public GameState state;
[SerializeField] private GameObject rooms; [SerializeField] private GameObject rooms;
[SerializeField] private DiceRoller diceRoller; [SerializeField] private DiceRoller diceRoller;
[SerializeField] private PassManager passManager;
[SerializeField] private Player player;
private DicePair _dicePairOne = new DicePair(); private DicePair _dicePairOne = new();
private DicePair _dicePairTwo = new DicePair(); private DicePair _dicePairTwo = new();
public event EventHandler<GameState> StateChanged;
// Start is called once before the first execution of Update after the MonoBehaviour is created // Start is called once before the first execution of Update after the MonoBehaviour is created
void Start() void Start()
{ {
diceRoller.diceRolled += DiceRolled; diceRoller.diceRolled += DiceRolled;
passManager.PassRequested += PassRequested;
foreach (Transform roomTransform in rooms.transform) foreach (Transform roomTransform in rooms.transform)
{ {
roomTransform.gameObject.GetComponent<Room>().ValidRoomClicked += ValidRoomClicked; roomTransform.gameObject.GetComponent<Room>().ValidRoomClicked += ValidRoomClicked;
@ -35,10 +39,15 @@ public class GameManager : MonoBehaviour
} }
StartNewTurn(); StartNewTurn();
} }
private void ChangeState(GameState stateToChangeTo) {
state = stateToChangeTo;
StateChanged?.Invoke(this, state);
}
private void StartNewTurn() private void StartNewTurn()
{ {
state = GameState.RollDice; ChangeState(GameState.RollDice);
diceRoller.Enable(); diceRoller.Enable();
diceRoller.ResetDice(); diceRoller.ResetDice();
_dicePairOne = new DicePair(); _dicePairOne = new DicePair();
@ -61,13 +70,12 @@ public class GameManager : MonoBehaviour
room.SetRoomExplored(); room.SetRoomExplored();
if (state == GameState.PickRoomOne) if (state == GameState.PickRoomOne)
{ {
state = GameState.PickDiceTwo; ChangeState(GameState.PickDiceTwo);
} }
else else
{ {
StartNewTurn(); StartNewTurn();
} }
} }
void DieClicked(object sender, Die die) void DieClicked(object sender, Die die)
@ -82,7 +90,7 @@ public class GameManager : MonoBehaviour
if (_dicePairOne.AreBothDiceSelected()) if (_dicePairOne.AreBothDiceSelected())
{ {
state = GameState.PickRoomOne; ChangeState(GameState.PickRoomOne);
HighLightValidRoomsWithNumber(_dicePairOne); HighLightValidRoomsWithNumber(_dicePairOne);
} }
} }
@ -101,7 +109,7 @@ public class GameManager : MonoBehaviour
if (_dicePairTwo.AreBothDiceSelected()) if (_dicePairTwo.AreBothDiceSelected())
{ {
state = GameState.PickRoomTwo; ChangeState(GameState.PickRoomTwo);
HighLightValidRoomsWithNumber(_dicePairTwo); HighLightValidRoomsWithNumber(_dicePairTwo);
} }
} }
@ -117,7 +125,7 @@ public class GameManager : MonoBehaviour
{ {
_dicePairOne.UnselectDie(die); _dicePairOne.UnselectDie(die);
UnhighLightRoomsAsOptions(); UnhighLightRoomsAsOptions();
state = GameState.PickDiceOne; ChangeState(GameState.PickDiceOne);
} }
break; break;
case GameState.PickRoomTwo: case GameState.PickRoomTwo:
@ -125,12 +133,17 @@ public class GameManager : MonoBehaviour
{ {
_dicePairTwo.UnselectDie(die); _dicePairTwo.UnselectDie(die);
UnhighLightRoomsAsOptions(); UnhighLightRoomsAsOptions();
state = GameState.PickDiceTwo; ChangeState(GameState.PickDiceTwo);
} }
break; break;
} }
} }
private void PassTurn() {
player.TakeDamage(1);
StartNewTurn();
}
void HighLightValidRoomsWithNumber(DicePair pair) void HighLightValidRoomsWithNumber(DicePair pair)
{ {
foreach (Transform roomTransform in rooms.transform) foreach (Transform roomTransform in rooms.transform)
@ -156,7 +169,14 @@ public class GameManager : MonoBehaviour
if (state == GameState.RollDice) if (state == GameState.RollDice)
{ {
diceRoller.Disable(); diceRoller.Disable();
state = GameState.PickDiceOne; ChangeState(GameState.PickDiceOne);
}
}
private void PassRequested(object sender, EventArgs e) {
if (state is GameState.PickDiceOne or GameState.PickDiceTwo)
{
PassTurn();
} }
} }
} }

View file

@ -0,0 +1,36 @@
using System;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEngine.Video;
using Button = UnityEngine.UI.Button;
public class PassManager : MonoBehaviour
{
[SerializeField] private Button passButton;
[SerializeField] private GameManager gameManager;
public event EventHandler PassRequested;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
passButton.onClick.AddListener(OnPassClicked);
gameManager.StateChanged += OnGameStateChange;
}
private void OnGameStateChange(object sender, GameState state) {
if (state == GameState.RollDice)
{
passButton.interactable = false;
}
else
{
passButton.interactable = true;
}
}
private void OnPassClicked()
{
PassRequested?.Invoke(this, EventArgs.Empty);
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 95487118287b4514fb9b9fb7018ae717

View file

@ -0,0 +1,39 @@
using System;
using Microsoft.Unity.VisualStudio.Editor;
using TMPro;
using UnityEngine;
public class Player : MonoBehaviour
{
[SerializeField] private int maxHealth;
[SerializeField] private GameObject healthGameObject;
private int _healthIndex = 0;
private readonly int[] _healthBar = {0, 0, -1, -2, -4, -6, -9, -12, -16, -20};
private void Start() {
UpdateGUI();
}
public void TakeDamage(int damage)
{
if (_healthIndex + damage < _healthBar.Length)
{
_healthIndex += damage;
UpdateGUI();
}
}
public void Heal(int healAmount)
{
if (_healthIndex - healAmount >= 0)
{
_healthIndex -= healAmount;
UpdateGUI();
}
}
private void UpdateGUI()
{
healthGameObject.GetComponent<TextMeshProUGUI>().text = _healthBar[_healthIndex].ToString();
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 516f63f4d32b3614b92fb0535c742078