fixes and icon

This commit is contained in:
Rapandrasmus 2024-01-26 17:19:06 +01:00
parent 184e75ba22
commit 14c8ba7d1a
10 changed files with 319 additions and 92 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 KiB

View file

@ -0,0 +1,123 @@
fileFormatVersion: 2
guid: 677ab5743215f2549890713845698c06
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 1
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 8
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View file

@ -0,0 +1,123 @@
fileFormatVersion: 2
guid: ee8850e76cafc77448ed900b9de4c966
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 1
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 256
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -29,15 +29,6 @@ AnimationClip:
weightedMode: 0 weightedMode: 0
inWeight: 0 inWeight: 0
outWeight: 0 outWeight: 0
- serializedVersion: 3
time: 0.25
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2 m_PreInfinity: 2
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
@ -57,15 +48,6 @@ AnimationClip:
weightedMode: 0 weightedMode: 0
inWeight: 0 inWeight: 0
outWeight: 0 outWeight: 0
- serializedVersion: 3
time: 0.25
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2 m_PreInfinity: 2
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
@ -76,22 +58,14 @@ AnimationClip:
m_PPtrCurves: m_PPtrCurves:
- curve: - curve:
- time: 0 - time: 0
value: {fileID: -591290891, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
- time: 0.11666667
value: {fileID: -470877788, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3} value: {fileID: -470877788, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
- time: 0.25
value: {fileID: -591290891, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
attribute: m_Sprite attribute: m_Sprite
path: right/frog/wingright (1) path: right/frog/wingright (1)
classID: 212 classID: 212
script: {fileID: 0} script: {fileID: 0}
- curve: - curve:
- time: 0 - time: 0
value: {fileID: -591290891, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
- time: 0.11666667
value: {fileID: -470877788, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3} value: {fileID: -470877788, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
- time: 0.25
value: {fileID: -591290891, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
attribute: m_Sprite attribute: m_Sprite
path: left/frog/wingright path: left/frog/wingright
classID: 212 classID: 212
@ -132,18 +106,14 @@ AnimationClip:
customType: 23 customType: 23
isPPtrCurve: 1 isPPtrCurve: 1
pptrCurveMapping: pptrCurveMapping:
- {fileID: -591290891, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
- {fileID: -470877788, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3} - {fileID: -470877788, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
- {fileID: -591290891, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
- {fileID: -591290891, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
- {fileID: -470877788, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3} - {fileID: -470877788, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
- {fileID: -591290891, guid: 82ecf7d34cdde82478c1c03c649f7827, type: 3}
m_AnimationClipSettings: m_AnimationClipSettings:
serializedVersion: 2 serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0} m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0 m_AdditiveReferencePoseTime: 0
m_StartTime: 0 m_StartTime: 0
m_StopTime: 0.26666668 m_StopTime: 0.016666668
m_OrientationOffsetY: 0 m_OrientationOffsetY: 0
m_Level: 0 m_Level: 0
m_CycleOffset: 0 m_CycleOffset: 0
@ -171,15 +141,6 @@ AnimationClip:
weightedMode: 0 weightedMode: 0
inWeight: 0 inWeight: 0
outWeight: 0 outWeight: 0
- serializedVersion: 3
time: 0.25
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2 m_PreInfinity: 2
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
@ -199,15 +160,6 @@ AnimationClip:
weightedMode: 0 weightedMode: 0
inWeight: 0 inWeight: 0
outWeight: 0 outWeight: 0
- serializedVersion: 3
time: 0.25
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2 m_PreInfinity: 2
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4

View file

@ -62,9 +62,9 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
{ {
b.localPosition += new Vector3(-Time.deltaTime * moveSpeed, 0); b.localPosition += new Vector3(-Time.deltaTime * moveSpeed, 0);
if (b.localPosition.x <= _xDistance * -BACKGROUND_OBJECT_AMOUNT / 2) if (b.localPosition.x <= _xDistance * -(BACKGROUND_OBJECT_AMOUNT + 2) / 2)
{ {
b.localPosition = new Vector3(_xDistance * BACKGROUND_OBJECT_AMOUNT / 2, b.localPosition.y, b.localPosition.z); b.localPosition = new Vector3(_xDistance * (BACKGROUND_OBJECT_AMOUNT + 2) / 2, b.localPosition.y, b.localPosition.z);
} }
} }
} }

View file

@ -151,6 +151,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
normalizedBeat = Conductor.instance.GetPositionFromBeat(beat, _path.positions[0].duration); normalizedBeat = Conductor.instance.GetPositionFromBeat(beat, _path.positions[0].duration);
yield return null; yield return null;
} }
transform.position = GetPathPositionFromBeat(_path, beat + _path.positions[0].duration, beat);
_anim.Play("Idle", 0, 0); _anim.Play("Idle", 0, 0);
if (beat + 1 >= _onPlayBeat && _game.EndBeat <= beat + 1) if (beat + 1 >= _onPlayBeat && _game.EndBeat <= beat + 1)
{ {
@ -264,6 +265,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
normalizedBeat = Conductor.instance.GetPositionFromBeat(beat, _path.positions[0].duration); normalizedBeat = Conductor.instance.GetPositionFromBeat(beat, _path.positions[0].duration);
yield return null; yield return null;
} }
transform.position = GetPathPositionFromBeat(_path, beat + _path.positions[0].duration, beat);
_anim.Play("Idle", 0, 0); _anim.Play("Idle", 0, 0);
_highParticle.Stop(); _highParticle.Stop();
_highMissParticle.Stop(); _highMissParticle.Stop();

View file

@ -50,13 +50,13 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
_pillars[0].Add(_pillarSecond); _pillars[0].Add(_pillarSecond);
_pillars[1].Add(_pillarUp); _pillars[1].Add(_pillarUp);
if (_pillarFirst.localPosition.y >= _endDistance) if (_pillarFirst.localPosition.y + _pillarDistanceY >= _endDistance)
{ {
_pillarFirst.GetChild(0).gameObject.SetActive(true); _pillarFirst.GetChild(0).gameObject.SetActive(true);
_pillarSecond.GetChild(0).gameObject.SetActive(true); _pillarSecond.GetChild(0).gameObject.SetActive(true);
_pillarUp.gameObject.SetActive(false); _pillarUp.gameObject.SetActive(false);
} }
else if (_pillarUp.localPosition.y >= _endDistance) else if (_pillarUp.localPosition.y + _pillarDistanceY >= _endDistance)
{ {
_pillarUp.GetChild(0).gameObject.SetActive(true); _pillarUp.GetChild(0).gameObject.SetActive(true);
} }
@ -71,7 +71,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
spawnedPillar.localPosition = new Vector3(_pillarStartX + (_pillarDistanceX * j), spawnedPillar.localPosition.y + (_pillarDistanceY * i)); spawnedPillar.localPosition = new Vector3(_pillarStartX + (_pillarDistanceX * j), spawnedPillar.localPosition.y + (_pillarDistanceY * i));
_pillars[i].Add(spawnedPillar); _pillars[i].Add(spawnedPillar);
if (spawnedPillar.localPosition.y >= _endDistance) if (spawnedPillar.localPosition.y + _pillarDistanceY >= _endDistance)
{ {
spawnedPillar.GetChild(0).gameObject.SetActive(true); spawnedPillar.GetChild(0).gameObject.SetActive(true);
_hasReachedEnd = true; _hasReachedEnd = true;
@ -115,7 +115,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
if (p == null) continue; if (p == null) continue;
p.localPosition = new Vector3(p.localPosition.x, p.localPosition.y + (_pillarDistanceY * PILLAR_AMOUNT_Y)); p.localPosition = new Vector3(p.localPosition.x, p.localPosition.y + (_pillarDistanceY * PILLAR_AMOUNT_Y));
if (currentDistanceY >= _endDistance) if (currentDistanceY + _pillarDistanceY >= _endDistance)
{ {
p.GetChild(0).gameObject.SetActive(true); p.GetChild(0).gameObject.SetActive(true);
_hasReachedEnd = true; _hasReachedEnd = true;

View file

@ -19,9 +19,6 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
[SerializeField] private float _yDistance; [SerializeField] private float _yDistance;
[SerializeField] private int _totemAmount = 12; [SerializeField] private int _totemAmount = 12;
[SerializeField] private Transform _pillarFirst;
[SerializeField] private Transform _pillarSecond;
private Transform _scrollTransform; private Transform _scrollTransform;
private float _totemStartX; private float _totemStartX;
private float _totemStartY; private float _totemStartY;
@ -47,11 +44,9 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
_totemStartX = _totemTransform.localPosition.x; _totemStartX = _totemTransform.localPosition.x;
_totemStartY = _totemTransform.localPosition.y; _totemStartY = _totemTransform.localPosition.y;
var pillarYStart = _pillarFirst.localPosition.y;
var pillarYDistance = _pillarSecond.localPosition.y - _pillarFirst.localPosition.y;
var pillarEnd = GetPillarEndBeatDistance(); var pillarEnd = GetPillarEndBeatDistance();
_pillarEndDistance = pillarEnd + pillarYStart + ((pillarEnd + pillarYStart) % pillarYDistance); _pillarEndDistance = pillarEnd;
_totems.Add(_totemTransform.GetComponent<TCTotem>()); _totems.Add(_totemTransform.GetComponent<TCTotem>());
@ -72,6 +67,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
_totems[i].transform.gameObject.SetActive(_totems[i].beat - (_usingEndTotem ? 0 : 1) < _game.EndBeat && !_game.IsTripleOrHighBeat(_totems[i].beat)); _totems[i].transform.gameObject.SetActive(_totems[i].beat - (_usingEndTotem ? 0 : 1) < _game.EndBeat && !_game.IsTripleOrHighBeat(_totems[i].beat));
} }
bool startBeatParam = GetStartBeatParam();
foreach (var e in _game._tripleEvents) foreach (var e in _game._tripleEvents)
{ {
for (int i = 0; i < e.length; i += 2) for (int i = 0; i < e.length; i += 2)
@ -79,7 +75,7 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
double beat = e.beat + i; double beat = e.beat + i;
Transform spawnedFrog = Instantiate(_frogTransform, transform); Transform spawnedFrog = Instantiate(_frogTransform, transform);
spawnedFrog.transform.localPosition += new Vector3(_xDistance * (float)(beat - startBeat), _yDistance * (float)(beat - startBeat)); spawnedFrog.transform.localPosition += new Vector3(_xDistance * (float)(beat - startBeat), _yDistance * (float)(beat - startBeat));
if (spawnedFrog.transform.localPosition.y >= _pillarEndDistance) spawnedFrog.GetComponent<TCFrog>().SetHasWings(); if (spawnedFrog.transform.localPosition.y >= _pillarEndDistance || startBeatParam) spawnedFrog.GetComponent<TCFrog>().SetHasWings();
spawnedFrog.gameObject.SetActive(true); spawnedFrog.gameObject.SetActive(true);
spawnedFrog.GetComponent<TCFrog>().beat = beat; spawnedFrog.GetComponent<TCFrog>().beat = beat;
_frogs.Add(spawnedFrog.GetComponent<TCFrog>()); _frogs.Add(spawnedFrog.GetComponent<TCFrog>());
@ -230,6 +226,25 @@ namespace HeavenStudio.Games.Scripts_TotemClimb
if (allPillarEnds.Count == 0) return float.MaxValue; if (allPillarEnds.Count == 0) return float.MaxValue;
return (float)(allPillarEnds[0].beat - startBeat) * 1.45f; return (float)(allPillarEnds[0].beat - startBeat) * 1.45f;
} }
private bool GetStartBeatParam()
{
var allGameSwitches = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame" }).FindAll(x => x.beat <= Conductor.instance.songPositionInBeatsAsDouble && x.datamodel is "gameManager/switchGame/totemClimb");
double lastGameSwitchBeat = 0;
if (allGameSwitches.Count > 0) lastGameSwitchBeat = allGameSwitches[^1].beat;
var nextGameSwitches = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame" }).FindAll(x => x.beat > lastGameSwitchBeat && x.datamodel != "gameManager/switchGame/totemClimb");
double nextGameSwitchBeat = double.MaxValue;
if (nextGameSwitches.Count > 0)
{
nextGameSwitchBeat = nextGameSwitches[0].beat;
}
var allStarts = EventCaller.GetAllInGameManagerList("totemClimb", new string[] { "start" }).FindAll(x => x.beat >= lastGameSwitchBeat && x.beat < nextGameSwitchBeat);
if (allStarts.Count == 0) return false;
return allStarts[0]["hide"];
}
} }
} }

View file

@ -20,14 +20,23 @@ namespace HeavenStudio.Games.Loaders
{ {
parameters = new List<Param>() parameters = new List<Param>()
{ {
new("hide", false, "Hide Pillars") new("hide", false, "Hide Fence")
} }
}, },
new("triple", "Triple Jumping") new("triple", "Triple Jumping")
{ {
preFunction = delegate { TotemClimb.TripleJumpSound(eventCaller.currentEntity.beat, eventCaller.currentEntity.length); }, preFunction = delegate
{
var e = eventCaller.currentEntity;
TotemClimb.TripleJumpSound(e.beat, e.length, e["enter"], e["exit"]);
},
defaultLength = 2f, defaultLength = 2f,
resizable = true resizable = true,
parameters = new()
{
new("enter", true, "Enter Cue Sound"),
new("exit", true, "Exit Cue Sound"),
}
}, },
new("high", "High Jump") new("high", "High Jump")
{ {
@ -57,7 +66,7 @@ namespace HeavenStudio.Games.Loaders
new("amount", new EntityTypes.Integer(1, 3, 1), "Amount") new("amount", new EntityTypes.Integer(1, 3, 1), "Amount")
} }
}, },
new("above", "Pillar End") new("above", "Fences End")
{ {
}, },
@ -377,8 +386,9 @@ namespace HeavenStudio.Games
public Transform EndJumperPoint => _totemManager.EndJumperPoint; public Transform EndJumperPoint => _totemManager.EndJumperPoint;
public static void TripleJumpSound(double beat, float length) public static void TripleJumpSound(double beat, float length, bool enterSound, bool exitSound)
{ {
if (!enterSound && !exitSound) return;
List<RiqEntity> triplesGlobal = new(); List<RiqEntity> triplesGlobal = new();
List<RiqEntity> highsGlobal = new(); List<RiqEntity> highsGlobal = new();
@ -391,12 +401,6 @@ namespace HeavenStudio.Games
new("totemClimb/beatchange", beat - 1f), new("totemClimb/beatchange", beat - 1f),
}; };
List<MultiSound.Sound> soundsExit = new()
{
new("totemClimb/beatchange", beat + length - 2),
new("totemClimb/beatchange", beat + length - 1),
};
List<MultiSound.Sound> soundsToPlay = new(); List<MultiSound.Sound> soundsToPlay = new();
var allGameSwitches = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame" }).FindAll(x => x.beat <= beat && x.datamodel is "gameManager/switchGame/totemClimb"); var allGameSwitches = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame" }).FindAll(x => x.beat <= beat && x.datamodel is "gameManager/switchGame/totemClimb");
@ -405,7 +409,7 @@ namespace HeavenStudio.Games
SetUpEvents(lastGameSwitchBeat); SetUpEvents(lastGameSwitchBeat);
if (triplesGlobal.Count == 0 || highsGlobal.Count == 0) return; if (triplesGlobal.Count == 0) return;
bool doEnterSound = true; bool doEnterSound = true;
double checkBeatEnter = beat - 1; double checkBeatEnter = beat - 1;
@ -418,7 +422,7 @@ namespace HeavenStudio.Games
doEnterSound = false; doEnterSound = false;
} }
} }
if (doEnterSound) soundsToPlay.AddRange(soundsEnter); if (doEnterSound && enterSound) soundsToPlay.AddRange(soundsEnter);
bool doExitSound = true; bool doExitSound = true;
double checkBeatExit = beat + length; double checkBeatExit = beat + length;
@ -431,7 +435,14 @@ namespace HeavenStudio.Games
doExitSound = false; doExitSound = false;
} }
} }
if (doExitSound) soundsToPlay.AddRange(soundsExit);
List<MultiSound.Sound> soundsExit = new()
{
new("totemClimb/beatchange", checkBeatExit - 2),
new("totemClimb/beatchange", checkBeatExit - 1),
};
if (doExitSound && exitSound) soundsToPlay.AddRange(soundsExit);
if (soundsToPlay.Count > 0) MultiSound.Play(soundsToPlay.ToArray(), true, true); if (soundsToPlay.Count > 0) MultiSound.Play(soundsToPlay.ToArray(), true, true);
@ -460,24 +471,25 @@ namespace HeavenStudio.Games
} }
var highs = EventCaller.GetAllInGameManagerList("totemClimb", new string[] { "high" }).FindAll(x => x.beat >= startBeat && x.beat < endBeat); var highs = EventCaller.GetAllInGameManagerList("totemClimb", new string[] { "high" }).FindAll(x => x.beat >= startBeat && x.beat < endBeat);
if (highs.Count == 0) return; if (highs.Count > 0)
highs.Sort((x, y) => x.beat.CompareTo(y.beat));
var tempHighs = new List<RiqEntity>();
double goodAfterBeat = startBeat;
foreach (var h in highs)
{ {
if (h.beat >= goodAfterBeat && IsOnBeat(startBeat, h.beat)) highs.Sort((x, y) => x.beat.CompareTo(y.beat));
{
tempHighs.Add(h);
goodAfterBeat = h.beat + 4;
}
}
highsGlobal = tempHighs; var tempHighs = new List<RiqEntity>();
double goodAfterBeat = startBeat;
foreach (var h in highs)
{
if (h.beat >= goodAfterBeat && IsOnBeat(startBeat, h.beat))
{
tempHighs.Add(h);
goodAfterBeat = h.beat + 4;
}
}
highsGlobal = tempHighs;
}
var triples = EventCaller.GetAllInGameManagerList("totemClimb", new string[] { "triple" }).FindAll(x => x.beat >= startBeat && x.beat + x.length <= endBeat); var triples = EventCaller.GetAllInGameManagerList("totemClimb", new string[] { "triple" }).FindAll(x => x.beat >= startBeat && x.beat + x.length <= endBeat);
if (triples.Count == 0) return; if (triples.Count == 0) return;