timed button stand puzzle

This commit is contained in:
2023-04-12 12:18:04 +02:00
parent 7e803a5279
commit 42ef7cc9bd
22 changed files with 1145 additions and 365 deletions

View File

@@ -0,0 +1,416 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &242775360432065206
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7514415232938006188}
- component: {fileID: 2968767364904468826}
- component: {fileID: 4721366812762946611}
- component: {fileID: 4755606095102556792}
- component: {fileID: 5574978694872577325}
m_Layer: 0
m_Name: Stand
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7514415232938006188
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 242775360432065206}
m_LocalRotation: {x: -0.70710576, y: -0, z: -0, w: 0.70710784}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 852813185195933073}
m_RootOrder: -1
m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0}
--- !u!33 &2968767364904468826
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 242775360432065206}
m_Mesh: {fileID: -9189612823058448048, guid: 4b88264faf0bc6d49ad324d6e223146a, type: 3}
--- !u!23 &4721366812762946611
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 242775360432065206}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 365bf6911e5c2c344b74a37ce47db72f, 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: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &4755606095102556792
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 242775360432065206}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 5
m_Convex: 1
m_CookingOptions: 30
m_Mesh: {fileID: -9189612823058448048, guid: 4b88264faf0bc6d49ad324d6e223146a, type: 3}
--- !u!114 &5574978694872577325
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 242775360432065206}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 17de1e2991b64847bceea06f966f0560, type: 3}
m_Name:
m_EditorClassIdentifier:
color: {r: 8, g: 3.5137255, b: 0, a: 1}
startActive: 1
emissionRenderer: {fileID: 4721366812762946611}
--- !u!1 &4346312165422302743
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1223383990908721599}
m_Layer: 0
m_Name: Button Stand
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1223383990908721599
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4346312165422302743}
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: 852813185195933073}
- {fileID: 979859350274255980}
m_Father: {fileID: 0}
m_RootOrder: -1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7351803888791370729
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 852813185195933073}
m_Layer: 0
m_Name: Model
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &852813185195933073
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7351803888791370729}
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: 7514415232938006188}
m_Father: {fileID: 1223383990908721599}
m_RootOrder: -1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8609232115685006976
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 979859350274255980}
- component: {fileID: 2974506240804922852}
- component: {fileID: 7222608493507710839}
- component: {fileID: 874298466439840366}
- component: {fileID: 3852086329416498098}
- component: {fileID: 5448525209797620389}
m_Layer: 0
m_Name: Holo Orb
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &979859350274255980
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8609232115685006976}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0.9, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1223383990908721599}
m_RootOrder: -1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &2974506240804922852
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8609232115685006976}
m_Mesh: {fileID: -5029552177822622209, guid: bb684bc47f5683348ba50e093338f484, type: 3}
--- !u!23 &7222608493507710839
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8609232115685006976}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d1f58490f6d04c64da01277723d63536, 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: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &874298466439840366
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8609232115685006976}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 352860bb2c6549d0b3e84104afef3f54, type: 3}
m_Name:
m_EditorClassIdentifier:
hideWhenDisabled: 0
startInactive: 0
holoRenderer: {fileID: 7222608493507710839}
--- !u!114 &3852086329416498098
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8609232115685006976}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8a35f6cfbfba9b548aaa00d52cfe8a50, type: 3}
m_Name:
m_EditorClassIdentifier:
m_InteractionManager: {fileID: 0}
m_Colliders: []
m_InteractionLayerMask:
serializedVersion: 2
m_Bits: 4294967295
m_InteractionLayers:
m_Bits: 1
m_DistanceCalculationMode: 1
m_SelectMode: 0
m_CustomReticle: {fileID: 0}
m_FirstHoverEntered:
m_PersistentCalls:
m_Calls: []
m_LastHoverExited:
m_PersistentCalls:
m_Calls: []
m_HoverEntered:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 874298466439840366}
m_TargetAssemblyTypeName: EscapeRoomEngine.Station46.Runtime.Button, Station46
m_MethodName: Press
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
m_HoverExited:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 874298466439840366}
m_TargetAssemblyTypeName: EscapeRoomEngine.Station46.Runtime.Button, Station46
m_MethodName: Release
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
m_FirstSelectEntered:
m_PersistentCalls:
m_Calls: []
m_LastSelectExited:
m_PersistentCalls:
m_Calls: []
m_SelectEntered:
m_PersistentCalls:
m_Calls: []
m_SelectExited:
m_PersistentCalls:
m_Calls: []
m_Activated:
m_PersistentCalls:
m_Calls: []
m_Deactivated:
m_PersistentCalls:
m_Calls: []
m_StartingHoverFilters: []
m_StartingSelectFilters: []
m_OnFirstHoverEntered:
m_PersistentCalls:
m_Calls: []
m_OnLastHoverExited:
m_PersistentCalls:
m_Calls: []
m_OnHoverEntered:
m_PersistentCalls:
m_Calls: []
m_OnHoverExited:
m_PersistentCalls:
m_Calls: []
m_OnSelectEntered:
m_PersistentCalls:
m_Calls: []
m_OnSelectExited:
m_PersistentCalls:
m_Calls: []
m_OnSelectCanceled:
m_PersistentCalls:
m_Calls: []
m_OnActivate:
m_PersistentCalls:
m_Calls: []
m_OnDeactivate:
m_PersistentCalls:
m_Calls: []
--- !u!135 &5448525209797620389
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8609232115685006976}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Radius: 0.100000024
m_Center: {x: -0.000000029802322, y: 0.00000003725291, z: 0}

View File

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

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8389ddb03ad84a8988cc0446946603af
timeCreated: 1683734801

View File

@@ -0,0 +1,78 @@
using EscapeRoomEngine.Engine.Runtime.Modules;
using EscapeRoomEngine.Engine.Runtime.Modules.State;
using EscapeRoomEngine.Engine.Runtime.Utilities;
using NaughtyAttributes;
using Station46.Modules.Hoop.Scripts;
using Station46.Scripts;
using UnityEngine;
namespace Station46.Modules.Button_Stand.Scripts
{
public class TimedButtonStand : StatePuzzle
{
[BoxGroup("Internal")] [SerializeField] private HoloButton button;
[BoxGroup("Internal")] [SerializeField] private Emission standLight;
private ButtonHoop _hoop;
protected override void Start()
{
base.Start();
PuzzleEvent += (_, type) =>
{
// ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault
switch (type)
{
case PuzzleEventType.Restarted:
standLight.color = EscapeRoomEngine.Engine.Runtime.Engine.Theme.puzzleColor.hdr;
button.hideWhenDisabled = true;
button.Enable();
button.Disable();
break;
case PuzzleEventType.Solved:
standLight.color = EscapeRoomEngine.Engine.Runtime.Engine.Theme.solvedColor.hdr;
button.hideWhenDisabled = false;
button.Enable();
button.Disable();
break;
}
};
button.ButtonEvent += (_, type) =>
{
if (type == ButtonEventType.Pressed)
{
Solve();
}
};
}
public override void SetModule(Module module)
{
base.SetModule(module);
// The hoop requires a related dispenser module
// We use the second slot because the first slot is reserved for the platform
var secondRelatedModule = Module.relatedModules[1];
if (secondRelatedModule.State is ButtonHoop hoop)
{
hoop.Button.ButtonEvent += (_, type) =>
{
if (type == ButtonEventType.Pressed)
{
button.Enable();
}
else
{
button.Disable();
}
};
}
else
{
throw new EngineException($"{this} was not assigned a related button hoop.");
}
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 04813ea711414777bb27154ebd3671b4
timeCreated: 1683734810

View File

@@ -0,0 +1,138 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &4628888916587005711
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 874298466439840366, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: startInactive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 874298466439840366, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: hideWhenDisabled
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_RootOrder
value: -1
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_LocalPosition.x
value: 5
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_LocalPosition.y
value: 4
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_LocalPosition.z
value: 3
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1223383990908721599, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4346312165422302743, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
propertyPath: m_Name
value: Timed Button Stand
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 4346312165422302743, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
insertIndex: -1
addedObject: {fileID: 6227164789557300763}
m_SourcePrefab: {fileID: 100100000, guid: 866e3516e2f8502408e17cb19c4e57cc, type: 3}
--- !u!114 &964703136615330338 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5574978694872577325, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
m_PrefabInstance: {fileID: 4628888916587005711}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 17de1e2991b64847bceea06f966f0560, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &5485168994165556577 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 874298466439840366, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
m_PrefabInstance: {fileID: 4628888916587005711}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 352860bb2c6549d0b3e84104afef3f54, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &8965591617983332632 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4346312165422302743, guid: 866e3516e2f8502408e17cb19c4e57cc,
type: 3}
m_PrefabInstance: {fileID: 4628888916587005711}
m_PrefabAsset: {fileID: 0}
--- !u!114 &6227164789557300763
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8965591617983332632}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 04813ea711414777bb27154ebd3671b4, type: 3}
m_Name:
m_EditorClassIdentifier:
size: {x: 1, y: 1}
states: 00000000
solution: 01000000
stateCount: 1
correctStates: 0
button: {fileID: 5485168994165556577}
standLight: {fileID: 964703136615330338}

View File

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