fling holes puzzle

This commit is contained in:
2023-04-12 16:03:10 +02:00
parent 42ef7cc9bd
commit 7ddf555771
27 changed files with 1042 additions and 55 deletions

View File

@@ -0,0 +1,116 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &5840048728257959645
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 5218681765336759419, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_Name
value: Fling Holes
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5456409340337094247, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents:
- {fileID: 2736082226738519698, guid: 435cdab79ab05ef43b4a387004dc04b5, type: 3}
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 5218681765336759419, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
insertIndex: 1
addedObject: {fileID: 6565267576267687895}
m_SourcePrefab: {fileID: 100100000, guid: 435cdab79ab05ef43b4a387004dc04b5, type: 3}
--- !u!1 &1828600030873594534 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 5218681765336759419, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
m_PrefabInstance: {fileID: 5840048728257959645}
m_PrefabAsset: {fileID: 0}
--- !u!114 &6565267576267687895
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1828600030873594534}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4be019db99954e58ba0ed646e54d9221, type: 3}
m_Name:
m_EditorClassIdentifier:
size: {x: 2, y: 2}
states: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
solution: 010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000
stateCount: 36
correctStates: 0
frameLight: {fileID: 4142662235197100212}
--- !u!114 &4142662235197100212 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7525994617667372649, guid: 435cdab79ab05ef43b4a387004dc04b5,
type: 3}
m_PrefabInstance: {fileID: 5840048728257959645}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1828600030873594534}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 17de1e2991b64847bceea06f966f0560, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

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

View File

@@ -0,0 +1,105 @@
using EscapeRoomEngine.Engine.Runtime.Modules;
using EscapeRoomEngine.Engine.Runtime.Utilities;
using Station46.Modules.Hoop.Scripts;
using Station46.Scripts;
namespace Station46.Modules.Holes.Scripts
{
/// <summary>
/// The main component for the orb grid module.
/// </summary>
public class FlingHoles : Holes
{
private bool ShowHint
{
set
{
if (!Solved)
{
var on = EscapeRoomEngine.Engine.Runtime.Engine.Theme.activeColor.hdr;
var off = EscapeRoomEngine.Engine.Runtime.Engine.Theme.puzzleColor.hdr;
for (var i = 0; i < solution.Count; i++)
{
holes[i].Emission.color = value
? solution[i] == 1 ? on : off
: states[i] == 1 ? on : off;
}
}
}
}
private Button _button;
protected override void Start()
{
base.Start();
_button.ButtonEvent += (_, type) =>
{
ShowHint = type == ButtonEventType.Pressed;
};
// PuzzleEvent += (_, type) =>
// {
// // ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault
// switch (type)
// {
// case PuzzleEventType.Restarted:
// var color = EscapeRoomEngine.Engine.Runtime.Engine.Theme.puzzleColor;
// _holes.ForEach(hole =>
// {
// hole.Enable();
// hole.Emission.color = color.hdr;
// });
// frameLight.color = color.hdr;
// _dispenser.Reset();
// break;
// case PuzzleEventType.Solved:
// var solvedColor = EscapeRoomEngine.Engine.Runtime.Engine.Theme.solvedColor;
// var activeColor = EscapeRoomEngine.Engine.Runtime.Engine.Theme.activeColor;
// _holes.ForEach(hole =>
// {
// hole.Disable();
// hole.Emission.color = solution[hole.number] == 1 ? activeColor.hdr : solvedColor.hdr;
// });
// frameLight.color = solvedColor.hdr;
// _dispenser.Solve();
// break;
// }
// };
//
// _holes.ForEach(hole => hole.ButtonEvent += (_, type) =>
// {
// // ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault
// switch (type)
// {
// case ButtonEventType.Pressed:
// SetState(hole.number, 1, true);
// break;
// case ButtonEventType.Released:
// SetState(hole.number, 0, true);
// break;
// }
// });
//
// frameLight.active = true;
}
public override void SetModule(Module module)
{
base.SetModule(module);
// The holes require a related button fling hoop module
var secondGradeRelatedModule = Module.relatedModules[0].relatedModules[0];
if (secondGradeRelatedModule.State is ButtonHoop hoop)
{
_button = hoop.Button;
}
else
{
throw new EngineException("Holes were not assigned a related Dispenser.");
}
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4be019db99954e58ba0ed646e54d9221
timeCreated: 1683739039

View File

@@ -16,14 +16,15 @@ namespace Station46.Modules.Holes.Scripts
[BoxGroup("Internal")] [SerializeField]
private Emission frameLight;
private List<Hole> _holes;
protected List<Hole> holes;
private Dispenser.Scripts.Dispenser _dispenser;
protected override void Awake()
{
base.Awake();
_holes = new List<Hole>(GetComponentsInChildren<Hole>());
holes = new List<Hole>(GetComponentsInChildren<Hole>());
}
protected override void Start()
@@ -37,7 +38,7 @@ namespace Station46.Modules.Holes.Scripts
{
case PuzzleEventType.Restarted:
var color = EscapeRoomEngine.Engine.Runtime.Engine.Theme.puzzleColor;
_holes.ForEach(hole =>
holes.ForEach(hole =>
{
hole.Enable();
hole.Emission.color = color.hdr;
@@ -48,7 +49,7 @@ namespace Station46.Modules.Holes.Scripts
case PuzzleEventType.Solved:
var solvedColor = EscapeRoomEngine.Engine.Runtime.Engine.Theme.solvedColor;
var activeColor = EscapeRoomEngine.Engine.Runtime.Engine.Theme.activeColor;
_holes.ForEach(hole =>
holes.ForEach(hole =>
{
hole.Disable();
hole.Emission.color = solution[hole.number] == 1 ? activeColor.hdr : solvedColor.hdr;
@@ -59,7 +60,7 @@ namespace Station46.Modules.Holes.Scripts
}
};
_holes.ForEach(hole => hole.ButtonEvent += (_, type) =>
holes.ForEach(hole => hole.ButtonEvent += (_, type) =>
{
// ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault
switch (type)