Compare commits

...

3 commits

24 changed files with 1513 additions and 125 deletions

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a4e1c5deae88ba542be379f34514fd90
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,259 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5293741749250652686
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4874973863404433756}
- component: {fileID: 1855216729025243642}
- component: {fileID: 6494629451359164186}
m_Layer: 0
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4874973863404433756
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5293741749250652686}
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: 8989188457857827130}
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!222 &1855216729025243642
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5293741749250652686}
m_CullTransparentMesh: 1
--- !u!114 &6494629451359164186
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5293741749250652686}
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:
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!1 &6167039396952026974
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8989188457857827130}
- component: {fileID: 7568565659390603518}
- component: {fileID: 9157113186282288804}
- component: {fileID: 1648245930821754079}
m_Layer: 0
m_Name: TorchAbilityUse
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8989188457857827130
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6167039396952026974}
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: 4874973863404433756}
m_Father: {fileID: 0}
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: 30, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7568565659390603518
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6167039396952026974}
m_CullTransparentMesh: 1
--- !u!114 &9157113186282288804
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6167039396952026974}
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: 0.8962264, g: 0.07186722, b: 0.07186722, 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: 0
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &1648245930821754079
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6167039396952026974}
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: 9157113186282288804}
m_OnClick:
m_PersistentCalls:
m_Calls: []

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5e46b071ca9c11745a7893c22faf6976
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,5 +1,80 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1735603092438910357
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2350009719861052788}
- component: {fileID: 286217537584344082}
- component: {fileID: 5126110704028324915}
m_Layer: 0
m_Name: Checkmark
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2350009719861052788
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1735603092438910357}
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: 1764876241474559387}
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: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &286217537584344082
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1735603092438910357}
m_CullTransparentMesh: 1
--- !u!114 &5126110704028324915
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1735603092438910357}
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: 10901, guid: 0000000000000000f000000000000000, type: 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!1 &2435349004046080434
GameObject:
m_ObjectHideFlags: 0
@ -50,9 +125,9 @@ MonoBehaviour:
m_EditorClassIdentifier:
adjacentRooms: []
isEntrance: 0
keyType: 0
locks:
numberTextObject: {fileID: 8119019481281764985}
healthTickObject: {fileID: 2885337975627474754}
_health: 0
--- !u!212 &1770509300873928573
SpriteRenderer:
m_ObjectHideFlags: 0
@ -169,6 +244,167 @@ MonoBehaviour:
m_EffectColor: {r: 0, g: 1, b: 0.09941673, a: 0.5}
m_EffectDistance: {x: 10, y: 10}
m_UseGraphicAlpha: 1
--- !u!1 &2846330325476652680
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1764876241474559387}
- component: {fileID: 7181831331141731840}
- component: {fileID: 1847420437976641395}
m_Layer: 0
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1764876241474559387
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2846330325476652680}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 10, y: 10, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2350009719861052788}
m_Father: {fileID: 244121025600760136}
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: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7181831331141731840
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2846330325476652680}
m_CullTransparentMesh: 1
--- !u!114 &1847420437976641395
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2846330325476652680}
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!1 &2885337975627474754
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 244121025600760136}
- component: {fileID: 8929257494273614377}
m_Layer: 0
m_Name: HealthTick
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &244121025600760136
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2885337975627474754}
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: 1764876241474559387}
m_Father: {fileID: 2539620726141895785}
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: 486.7102, y: 253}
m_SizeDelta: {x: 200, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &8929257494273614377
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2885337975627474754}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, 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: 0
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: 0
m_TargetGraphic: {fileID: 1847420437976641395}
toggleTransition: 1
graphic: {fileID: 5126110704028324915}
m_Group: {fileID: 0}
onValueChanged:
m_PersistentCalls:
m_Calls: []
m_IsOn: 0
--- !u!1 &7488793311042651820
GameObject:
m_ObjectHideFlags: 0
@ -182,7 +418,7 @@ GameObject:
- component: {fileID: 8840412798147865769}
- component: {fileID: 3878377942961622899}
m_Layer: 0
m_Name: NumberCanvas
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -201,6 +437,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6916722731958000395}
- {fileID: 244121025600760136}
m_Father: {fileID: 9187907134033443523}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}

File diff suppressed because it is too large Load diff

View file

@ -12,7 +12,7 @@ namespace Abilities
[SerializeField] private GameObject abilityUseOne;
[SerializeField] private GameObject abilityUseTwo;
[SerializeField] private GameObject abilityUseThree;
[SerializeField] private int _uses = 3;
private int _uses = 3;
private GameObject[] _usesUsed;
private bool _canClick;

View file

@ -0,0 +1,58 @@
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class TorchAbility : MonoBehaviour
{
public static
event Action TorchAbilityUsed;
[SerializeField] private GameObject abilityUseOne;
[SerializeField] private GameObject abilityUseTwo;
private int _uses = 2;
private GameObject[] _usesUsed;
private bool _canClick;
private void OnEnable()
{
GameManager.StateChanged += HandleStateChanged;
}
private void OnDisable()
{
GameManager.StateChanged -= HandleStateChanged;
}
private void Start()
{
_usesUsed = new GameObject[_uses];
abilityUseOne.GetComponent<Button>().onClick.AddListener(() => UseClicked(abilityUseOne));
abilityUseTwo.GetComponent<Button>().onClick.AddListener(() => UseClicked(abilityUseTwo));
}
private void UseClicked(GameObject abilityUseObject)
{
if (!_canClick) return;
if (_uses > 0)
{
_usesUsed[_uses - 1] = abilityUseObject;
MarkUsed(abilityUseObject);
TorchAbilityUsed?.Invoke();
_uses -= 1;
}
_canClick = false;
}
private void MarkUsed(GameObject useObject)
{
useObject.GetComponentInChildren<TextMeshProUGUI>().text = "X";
}
private void HandleStateChanged(GameState state)
{
_canClick = true;
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a942e4ca1244b054b8ca96ded24fb63a

View file

@ -70,7 +70,7 @@ public class DicePair
return _pair.Item1.GetResult() + _pair.Item2.GetResult();
}
public bool DoResultsMatch()
public bool CheckIfResultsMatch()
{
if (_pair.Item1.GetResult() == _pair.Item2.GetResult())
{

View file

@ -16,7 +16,7 @@ public enum GameState
}
public class GameManager : MonoBehaviour
{
[SerializeField] public GameState state;
[SerializeField] public static GameState State;
[SerializeField] private GameObject rooms;
[SerializeField] private DiceRoller diceRoller;
[SerializeField] private PassManager passManager;
@ -35,7 +35,7 @@ public class GameManager : MonoBehaviour
passManager.PassRequested += PassRequested;
foreach (Transform roomTransform in rooms.transform)
{
roomTransform.gameObject.GetComponent<Room>().ValidRoomClicked += ValidRoomClicked;
roomTransform.gameObject.GetComponent<Room>().RoomExploredByDice += HandleRoomExploredByDice;
}
foreach (Transform diceTransform in diceRoller.dice.transform)
{
@ -46,10 +46,10 @@ public class GameManager : MonoBehaviour
}
private void ChangeState(GameState stateToChangeTo) {
if (state != stateToChangeTo)
if (State != stateToChangeTo)
{
state = stateToChangeTo;
StateChanged?.Invoke(state);
State = stateToChangeTo;
StateChanged?.Invoke(State);
}
}
@ -62,16 +62,8 @@ public class GameManager : MonoBehaviour
_dicePairTwo = new DicePair();
}
void ValidRoomClicked(object sender, Room room) {
switch (state)
{
case GameState.PickRoomOne when !room.TryUnlock(_dicePairOne):
case GameState.PickRoomTwo when !room.TryUnlock(_dicePairTwo):
return;
}
room.SetRoomExplored();
if (state == GameState.PickRoomOne)
void HandleRoomExploredByDice(object sender, Room room) {
if (State == GameState.PickRoomOne)
{
ChangeState(GameState.PickDiceTwo);
}
@ -82,7 +74,7 @@ public class GameManager : MonoBehaviour
}
private void HandleDieSelected(Die die) {
switch (state)
switch (State)
{
case GameState.PickDiceOne:
_dicePairOne.SelectDie(die);
@ -106,11 +98,11 @@ public class GameManager : MonoBehaviour
}
private void HandleDieUnselected(Die die) {
switch (state)
switch (State)
{
case GameState.PickDiceOne:
case GameState.PickRoomOne:
if (state == GameState.PickRoomOne)
if (State == GameState.PickRoomOne)
{
ChangeState(GameState.PickDiceOne);
}
@ -119,7 +111,7 @@ public class GameManager : MonoBehaviour
break;
case GameState.PickDiceTwo:
case GameState.PickRoomTwo:
if (state == GameState.PickRoomTwo)
if (State == GameState.PickRoomTwo)
{
ChangeState(GameState.PickDiceTwo);
}
@ -136,7 +128,7 @@ public class GameManager : MonoBehaviour
private void DiceRolled(object sender, EventArgs e)
{
if (state == GameState.RollDice)
if (State == GameState.RollDice)
{
diceRoller.Disable();
ChangeState(GameState.PickDiceOne);
@ -144,7 +136,7 @@ public class GameManager : MonoBehaviour
}
private void PassRequested(object sender, EventArgs e) {
switch (state)
switch (State)
{
case GameState.PickDiceOne:
case GameState.PickDiceTwo:

View file

@ -4,16 +4,15 @@ using UnityEngine;
public class EmptyRoom : Room
{
[SerializeField] private GameObject numberTextObject;
[SerializeField] private int number;
protected override void InitializeRoom() {
base.InitializeRoom();
TextMeshProUGUI numberText = numberTextObject.GetComponent<TextMeshProUGUI>();
if (keyType == KeyType.Number)
if (_locks[0] is NumberLock )
{
numberText.SetText(number.ToString());
numberText.SetText(((NumberLock)_locks[0]).GetNumber().ToString());
}
else if (keyType == KeyType.MatchingDice)
else if (_locks[0] is MatchingDiceLock)
{
numberText.SetText("=");
}
@ -21,24 +20,7 @@ public class EmptyRoom : Room
public override bool TryUnlock(DicePair pair)
{
switch (keyType)
{
case KeyType.Number:
if (number == pair.Sum())
{
return true;
}
return false;
case KeyType.MatchingDice:
if (pair.DoResultsMatch())
{
return true;
}
return false;
}
return false;
return _locks[0].CheckIfKeyFits(pair);
}
public override void SetRoomExplored() {

View file

@ -1,16 +0,0 @@
using UnityEngine;
public class Key : MonoBehaviour
{
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 65db8ffa325fb48e89716418fa310bca

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a3af0e06c321aa8458a492be0ed8db63
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,34 @@
using System;
using Unity.VisualScripting;
using UnityEngine;
using System.Collections.Generic;
public abstract class Lock : MonoBehaviour
{
// Room that must be explored before lock can be unlocked.
[SerializeField] protected Room blockingRoom;
public event Action Unlocked;
public virtual bool CheckIfKeyFits(DicePair dicePair)
{
if (blockingRoom == null || blockingRoom.GetRoomExplored())
{
return true;
}
return false;
}
public virtual void Unlock(DicePair dicePair)
{
if (CheckIfKeyFits(dicePair))
{
OnUnlock();
}
}
protected virtual void OnUnlock()
{
Unlocked?.Invoke();
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b665fd3798293ac4e9eb870c53c878a0

View file

@ -0,0 +1,15 @@
using Unity.VisualScripting;
using UnityEngine;
public class MatchingDiceLock : Lock
{
public override bool CheckIfKeyFits(DicePair dicePair)
{
if (base.CheckIfKeyFits(dicePair) && dicePair.CheckIfResultsMatch())
{
return true;
}
return false;
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b40cbe88356086a49b6bc7dc8ff549c0

View file

@ -0,0 +1,21 @@
using UnityEngine;
public class NumberLock : Lock
{
[SerializeField] private int number;
public override bool CheckIfKeyFits(DicePair dicePair)
{
if (base.CheckIfKeyFits(dicePair) && dicePair.Sum() == number)
{
return true;
}
return false;
}
public int GetNumber()
{
return number;
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0f021f4903d50cb4b8bea2c40701ad58

View file

@ -2,30 +2,41 @@ using UnityEngine;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine.UIElements;
using Toggle = UnityEngine.UI.Toggle;
public class MonsterRoom : Room
{
[SerializeField] private List<int> locks = new();
[SerializeField] private GameObject numberTextObject;
[SerializeField] private GameObject healthTickObject;
[SerializeField] private int _health; // Number of times the room needs to be unlocked before becoming explored.
private GameObject[] _healthTicks;
protected override void InitializeRoom() {
base.InitializeRoom();
// Create the lock numbers on the room.
numberTextObject.GetComponent<TextMeshProUGUI>().text = locks[0].ToString();
numberTextObject.GetComponent<TextMeshProUGUI>().text = ((NumberLock)_locks[0]).GetNumber().ToString();
GameObject lockToDuplicate = numberTextObject;
for (int i = 1; i < locks.Count; i++)
for (int i = 1; i < _locks.Length; i++)
{
lockToDuplicate = DuplicateToTheLeft(lockToDuplicate, ((RectTransform)lockToDuplicate.transform).rect.width);
lockToDuplicate.GetComponent<TextMeshProUGUI>().text = locks[i].ToString();
lockToDuplicate.GetComponent<TextMeshProUGUI>().text = ((NumberLock)_locks[i]).GetNumber().ToString();
}
_healthTicks = new GameObject[_health];
_healthTicks[0] = healthTickObject;
for (int i = 1; i < _health; i++)
{
_healthTicks[i] = DuplicateDown(_healthTicks[i - 1],
((RectTransform)_healthTicks[i - 1].transform).rect.height);
}
}
public override bool TryUnlock(DicePair pair) {
foreach (int lockNumber in locks)
foreach (NumberLock numberLock in _locks)
{
if (pair.Sum() == lockNumber)
if (numberLock.CheckIfKeyFits(pair))
{
return true;
}
@ -34,7 +45,9 @@ public class MonsterRoom : Room
return false;
}
public override void SetRoomExplored() {
public override void SetRoomExplored()
{
_healthTicks[^_health].GetComponent<Toggle>().isOn = true; // Toggles the corresponding health tick
_health -= 1;
if (_health == 0)
{
@ -50,4 +63,11 @@ public class MonsterRoom : Room
clone.transform.localPosition -= new Vector3(offset, 0, 0);
return clone;
}
private GameObject DuplicateDown(GameObject original, float offset)
{
GameObject clone = Instantiate(original, original.transform.parent);
clone.transform.localPosition -= new Vector3(0, offset, 0);
return clone;
}
}

View file

@ -5,33 +5,33 @@ using UnityEngine;
using System.Collections.Generic;
using Unity.VisualScripting;
public enum KeyType
{
Number,
MatchingDice
}
public abstract class Room : MonoBehaviour
{
[SerializeField] private List<GameObject> adjacentRooms;
[SerializeField] private bool isEntrance;
[SerializeField] protected KeyType keyType;
public event EventHandler<Room> ValidRoomClicked;
public event EventHandler<Room> RoomExploredByDice;
public static event Action<Room> RoomExploredByTorch;
private Color _roomNumberOriginalColor;
private DicePair _diceSelected;
protected bool _isExplored = false;
private bool _isClickable = true;
protected Lock[] _locks;
private bool _usingTorchAbility = false;
private void OnEnable() {
GameManager.StateChanged += HandleStateChange;
GameManager.DiceSelected += HandleDiceSelected;
GameManager.DiceUnselected += HandDiceUnselected;
TorchAbility.TorchAbilityUsed += HandleTorchAbilityUsed;
RoomExploredByTorch += HandleRoomExploredByTorch;
}
private void OnDisable() {
GameManager.StateChanged -= HandleStateChange;
GameManager.DiceSelected -= HandleDiceSelected;
GameManager.DiceUnselected -= HandDiceUnselected;
TorchAbility.TorchAbilityUsed -= HandleTorchAbilityUsed;
}
// Start is called once before the first execution of Update after the MonoBehaviour is created
@ -40,12 +40,18 @@ public abstract class Room : MonoBehaviour
_roomNumberOriginalColor = gameObject.GetComponentInChildren<TextMeshProUGUI>().color;
}
public bool GetRoomExplored()
{
return _isExplored;
}
public abstract void SetRoomExplored();
protected virtual void InitializeRoom() {
if (isEntrance) {
SetPropertiesOfEntrance();
}
_locks = gameObject.GetComponents<Lock>();
}
protected void HighlightRoomAsOption()
@ -64,18 +70,44 @@ public abstract class Room : MonoBehaviour
}
void OnMouseDown() {
if (!_isClickable) return;
if (IsValidRoomToExplore()) {
OnValidRoomClicked();
if (!CheckIfValidRoomToExplore()) return;
switch (GameManager.State)
{
case GameState.PickRoomOne:
case GameState.PickRoomTwo:
if (TryUnlock(_diceSelected))
{
OnRoomExploredByDice();
SetRoomExplored();
}
else if(_usingTorchAbility && CheckIfValidRoomToExplore())
{
SetRoomExplored();
OnRoomExploredByTorch();
}
break;
default:
if (_usingTorchAbility && CheckIfValidRoomToExplore())
{
SetRoomExplored();
OnRoomExploredByTorch();
}
break;
}
}
protected virtual void OnValidRoomClicked() {
ValidRoomClicked?.Invoke(this, this);
protected virtual void OnRoomExploredByDice() {
RoomExploredByDice?.Invoke(this, this);
}
private void OnRoomExploredByTorch()
{
RoomExploredByTorch?.Invoke(this);
}
// Check if the room is valid to be explored. If so trigger the event.
private bool IsValidRoomToExplore() {
private bool CheckIfValidRoomToExplore() {
if (_isExplored) {
return false;
}
@ -109,24 +141,42 @@ public abstract class Room : MonoBehaviour
{
case GameState.PickDiceOne:
case GameState.PickDiceTwo:
case GameState.RollDice:
_isClickable = false;
break;
case GameState.PickRoomTwo:
case GameState.PickRoomOne:
_isClickable = true;
_diceSelected = null;
break;
}
}
private void HandleDiceSelected(DicePair pair) {
if (TryUnlock(pair) && IsValidRoomToExplore())
private void HandleDiceSelected(DicePair pair)
{
_diceSelected = pair;
if (TryUnlock(pair) && CheckIfValidRoomToExplore())
{
HighlightRoomAsOption();
}
}
private void HandDiceUnselected() {
private void HandDiceUnselected()
{
_diceSelected = null;
UnhighlightRoomAsOption();
}
private void HandleTorchAbilityUsed()
{
if (CheckIfValidRoomToExplore())
{
_usingTorchAbility = true;
HighlightRoomAsOption();
}
}
private void HandleRoomExploredByTorch(Room roomExploredByTorch)
{
_usingTorchAbility = false;
if (_diceSelected != null && TryUnlock(_diceSelected))
{
return;
}
UnhighlightRoomAsOption();
}
}