From fa6efff84fa31291cf527a6fee4a6ae46cb6fc16 Mon Sep 17 00:00:00 2001 From: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue, 26 Dec 2023 00:42:04 +0100 Subject: [PATCH] frog fit --- Assets/Resources/Games/totemClimb.prefab | 287 ++++++++++++++++++ .../Games/TotemClimb/TCTotemManager.cs | 4 +- Assets/Scripts/Games/TotemClimb/TotemClimb.cs | 40 +++ 3 files changed, 329 insertions(+), 2 deletions(-) diff --git a/Assets/Resources/Games/totemClimb.prefab b/Assets/Resources/Games/totemClimb.prefab index cb8037860..5d16c7cb7 100644 --- a/Assets/Resources/Games/totemClimb.prefab +++ b/Assets/Resources/Games/totemClimb.prefab @@ -138,6 +138,124 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &240329862653316689 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5749667637740173319} + m_Layer: 0 + m_Name: Frog + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &5749667637740173319 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 240329862653316689} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.96, y: -2.98, z: 0} + m_LocalScale: {x: 1.25, y: 1.25, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2653965045326994221} + - {fileID: 5838631045631306173} + - {fileID: 3697837675551645759} + m_Father: {fileID: 7191680920108009852} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &516513247633929993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5838631045631306173} + - component: {fileID: 3940511003799163010} + m_Layer: 0 + m_Name: frog1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5838631045631306173 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 516513247633929993} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2.132, y: 1.176, z: 0} + m_LocalScale: {x: 0.47, y: 0.47, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5749667637740173319} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &3940511003799163010 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 516513247633929993} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -1752908610, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 4.33, y: 6.55} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &1435018870899465386 GameObject: m_ObjectHideFlags: 0 @@ -222,6 +340,90 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1706471924819112776 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2653965045326994221} + - component: {fileID: 6777988195910203299} + m_Layer: 0 + m_Name: frog0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2653965045326994221 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706471924819112776} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.707, z: 0} + m_LocalScale: {x: 0.47, y: 0.47, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5749667637740173319} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &6777988195910203299 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706471924819112776} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -1549223093, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 5.11, y: 6.34} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &2151449329910671277 GameObject: m_ObjectHideFlags: 0 @@ -576,6 +778,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2892683027369623692} + - {fileID: 5749667637740173319} m_Father: {fileID: 7036195930893080952} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1103,6 +1306,90 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &5303839123713395111 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3697837675551645759} + - component: {fileID: 3560656319715988789} + m_Layer: 0 + m_Name: frog2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3697837675551645759 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5303839123713395111} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.291, y: 1.291, z: 0} + m_LocalScale: {x: 0.47, y: 0.47, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5749667637740173319} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &3560656319715988789 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5303839123713395111} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -1228472510, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 5.09, y: 8.86} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &5634727481027904851 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Games/TotemClimb/TCTotemManager.cs b/Assets/Scripts/Games/TotemClimb/TCTotemManager.cs index 7327ae2de..1be3cae07 100644 --- a/Assets/Scripts/Games/TotemClimb/TCTotemManager.cs +++ b/Assets/Scripts/Games/TotemClimb/TCTotemManager.cs @@ -56,7 +56,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb for (int i = 0; i < _totems.Count; i++) { _totems[i].beat = startBeat + i; - if (_totems[i].beat - 1 >= _game.EndBeat) _totems[i].transform.gameObject.SetActive(false); + if (_totems[i].beat - 1 >= _game.EndBeat || _game.IsTripleBeat(_totems[i].beat)) _totems[i].transform.gameObject.SetActive(false); } } @@ -79,7 +79,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb t.transform.localPosition = new Vector3(t.transform.localPosition.x + (_xDistance * _totemAmount), t.transform.localPosition.y + (_yDistance * _totemAmount)); t.beat += _totemAmount; - if (t.beat - 1 >= _game.EndBeat) t.transform.gameObject.SetActive(false); + t.transform.gameObject.SetActive(!(t.beat - 1 >= _game.EndBeat || _game.IsTripleBeat(t.beat))); _totemIndex++; } } diff --git a/Assets/Scripts/Games/TotemClimb/TotemClimb.cs b/Assets/Scripts/Games/TotemClimb/TotemClimb.cs index ace39d990..90f8e9d02 100644 --- a/Assets/Scripts/Games/TotemClimb/TotemClimb.cs +++ b/Assets/Scripts/Games/TotemClimb/TotemClimb.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using UnityEngine; using HeavenStudio.Util; using HeavenStudio.Games.Scripts_TotemClimb; +using Jukebox; +using System; namespace HeavenStudio.Games.Loaders { @@ -56,6 +58,8 @@ namespace HeavenStudio.Games private double _endBeat = double.MaxValue; public double EndBeat => _endBeat; + [NonSerialized] public List _tripleEvents = new(); + public static TotemClimb instance; private void Awake() @@ -66,6 +70,7 @@ namespace HeavenStudio.Games public override void OnGameSwitch(double beat) { CalculateStartAndEndBeat(beat); + GetTripleEvents(); HandleBopsOnStart(beat); } @@ -76,6 +81,7 @@ namespace HeavenStudio.Games if (allGameSwitches.Count > 0) lastGameSwitchBeat = allGameSwitches[^1].beat; CalculateStartAndEndBeat(lastGameSwitchBeat); + GetTripleEvents(); HandleBopsOnStart(beat); } @@ -114,6 +120,29 @@ namespace HeavenStudio.Games Bop(e.beat, e.length, beat); } + private void GetTripleEvents() + { + var triples = EventCaller.GetAllInGameManagerList("totemClimb", new string[] { "triple" }).FindAll(x => x.beat >= _startBeat && x.beat + x.length <= _endBeat); + if (triples.Count == 0) return; + + triples.Sort((x, y) => x.beat.CompareTo(y.beat)); + + var tempTriples = new List(); + + double lastLengthBeat = _startBeat; + + for (int i = 0; i < triples.Count; i++) + { + if (triples[i].beat >= lastLengthBeat && IsOnBeat(_startBeat, triples[i].beat)) + { + tempTriples.Add(triples[i]); + lastLengthBeat = triples[i].beat + triples[i].length; + } + } + + _tripleEvents = tempTriples; + } + private void Update() { var cond = Conductor.instance; @@ -158,6 +187,17 @@ namespace HeavenStudio.Games _scrollTransform.localPosition = new Vector3(normalizedBeat * _scrollSpeedX, normalizedBeat * _scrollSpeedY); _cameraTransform.localPosition = new Vector3(_scrollTransform.localPosition.x * -2, _scrollTransform.localPosition.y * -2); } + + private bool IsOnBeat(double startBeat, double targetBeat) + { + return (targetBeat - startBeat) % 1 == 0; + } + + public bool IsTripleBeat(double beat) + { + if (_tripleEvents.Count == 0) return false; + return _tripleEvents.Find(x => beat >= x.beat && beat < x.beat + x.length) != null; + } } }