Bug Fixes + Recolorable BG

Fixed various bugs involving cueing in a Slap/Stomp from another game.
Also added a fully recolorable background using stolen code that I borrowed from Clap Trap.
This commit is contained in:
RaffyTaffy14 2024-04-16 23:00:52 -04:00
parent d2cda4e47c
commit 1b44af043c
7 changed files with 232 additions and 15 deletions

View file

@ -2483,6 +2483,9 @@ MonoBehaviour:
dust: {fileID: 0} dust: {fileID: 0}
bgMove: {fileID: 907213061987012567} bgMove: {fileID: 907213061987012567}
bgStatic: {fileID: 8786252013339787948} bgStatic: {fileID: 8786252013339787948}
backgroundMaterial: {fileID: 2100000, guid: bfba1d80bcdd5cb4895bdfd74075769a, type: 2}
bgTop: {fileID: 953444361880115960}
bgBtm: {fileID: 7755206070316719315}
camera: {fileID: 7621216590368296269} camera: {fileID: 7621216590368296269}
cameraX: 0 cameraX: 0
cameraXNew: 0 cameraXNew: 0
@ -3692,7 +3695,7 @@ SpriteRenderer:
m_RenderingLayerMask: 1 m_RenderingLayerMask: 1
m_RendererPriority: 0 m_RendererPriority: 0
m_Materials: m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 2100000, guid: bfba1d80bcdd5cb4895bdfd74075769a, type: 2}
m_StaticBatchInfo: m_StaticBatchInfo:
firstSubMesh: 0 firstSubMesh: 0
subMeshCount: 0 subMeshCount: 0
@ -3713,7 +3716,7 @@ SpriteRenderer:
m_SortingLayerID: 0 m_SortingLayerID: 0
m_SortingLayer: 0 m_SortingLayer: 0
m_SortingOrder: -1000 m_SortingOrder: -1000
m_Sprite: {fileID: -8551528264012278953, guid: 3eeab378f5f7af04e9c1a69ca8659fd0, type: 3} m_Sprite: {fileID: 1292925404, guid: 86723ca01743bb142b521de7fb5727ba, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1} m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0 m_FlipX: 0
m_FlipY: 0 m_FlipY: 0
@ -9709,7 +9712,7 @@ SpriteRenderer:
m_Size: {x: 5.12, y: 5.12} m_Size: {x: 5.12, y: 5.12}
m_AdaptiveModeThreshold: 0.5 m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0 m_SpriteTileMode: 0
m_WasSpriteAssigned: 1 m_WasSpriteAssigned: 0
m_MaskInteraction: 0 m_MaskInteraction: 0
m_SpriteSortPoint: 0 m_SpriteSortPoint: 0
--- !u!1 &4837859304220241771 --- !u!1 &4837859304220241771
@ -11262,7 +11265,7 @@ SpriteRenderer:
m_Size: {x: 8.53, y: 4.8} m_Size: {x: 8.53, y: 4.8}
m_AdaptiveModeThreshold: 0.5 m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0 m_SpriteTileMode: 0
m_WasSpriteAssigned: 1 m_WasSpriteAssigned: 0
m_MaskInteraction: 0 m_MaskInteraction: 0
m_SpriteSortPoint: 0 m_SpriteSortPoint: 0
--- !u!1 &6081795588540371572 --- !u!1 &6081795588540371572
@ -11347,7 +11350,7 @@ SpriteRenderer:
m_Size: {x: 8.53, y: 4.8} m_Size: {x: 8.53, y: 4.8}
m_AdaptiveModeThreshold: 0.5 m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0 m_SpriteTileMode: 0
m_WasSpriteAssigned: 1 m_WasSpriteAssigned: 0
m_MaskInteraction: 0 m_MaskInteraction: 0
m_SpriteSortPoint: 0 m_SpriteSortPoint: 0
--- !u!1 &6181681341935747238 --- !u!1 &6181681341935747238
@ -12813,7 +12816,7 @@ SpriteRenderer:
m_Size: {x: 5.12, y: 5.12} m_Size: {x: 5.12, y: 5.12}
m_AdaptiveModeThreshold: 0.5 m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0 m_SpriteTileMode: 0
m_WasSpriteAssigned: 1 m_WasSpriteAssigned: 0
m_MaskInteraction: 0 m_MaskInteraction: 0
m_SpriteSortPoint: 0 m_SpriteSortPoint: 0
--- !u!1 &8505794553771142455 --- !u!1 &8505794553771142455
@ -13609,7 +13612,7 @@ SpriteRenderer:
m_Size: {x: 4, y: 4.8} m_Size: {x: 4, y: 4.8}
m_AdaptiveModeThreshold: 0.5 m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0 m_SpriteTileMode: 0
m_WasSpriteAssigned: 1 m_WasSpriteAssigned: 0
m_MaskInteraction: 0 m_MaskInteraction: 0
m_SpriteSortPoint: 0 m_SpriteSortPoint: 0
--- !u!1 &9081158673666972172 --- !u!1 &9081158673666972172

View file

@ -0,0 +1,80 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: BGColor
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bfba1d80bcdd5cb4895bdfd74075769a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -147,7 +147,7 @@ TextureImporter:
serializedVersion: 2 serializedVersion: 2
sprites: sprites:
- serializedVersion: 2 - serializedVersion: 2
name: background name: backgroundold
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 88 x: 88
@ -512,7 +512,7 @@ TextureImporter:
width: 2048 width: 2048
height: 140 height: 140
alignment: 0 alignment: 0
pivot: {x: 0, y: 0} pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
@ -535,8 +535,8 @@ TextureImporter:
weights: [] weights: []
secondaryTextures: [] secondaryTextures: []
nameFileIdTable: nameFileIdTable:
background: -8551528264012278953
backgroundGlow: -2768974374605152282 backgroundGlow: -2768974374605152282
backgroundold: -8551528264012278953
bgGreatWave: 1525428153 bgGreatWave: 1525428153
bgOtaniOniji: -1998133883 bgOtaniOniji: -1998133883
ground: 4054221790298107953 ground: 4054221790298107953

Binary file not shown.

Before

Width:  |  Height:  |  Size: 969 KiB

After

Width:  |  Height:  |  Size: 978 KiB

View file

@ -146,6 +146,27 @@ TextureImporter:
indices: indices:
edges: [] edges: []
weights: [] weights: []
- serializedVersion: 2
name: background
rect:
serializedVersion: 2
x: 88
y: 80
width: 128
height: 1060
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 5db9ab8958cda124b81170cef5b71a7d
internalID: 1292925404
vertices: []
indices:
edges: []
weights: []
outline: [] outline: []
physicsShape: [] physicsShape: []
bones: [] bones: []
@ -157,6 +178,7 @@ TextureImporter:
weights: [] weights: []
secondaryTextures: [] secondaryTextures: []
nameFileIdTable: nameFileIdTable:
background: 1292925404
bgGreatWaveAlt: -777139864 bgGreatWaveAlt: -777139864
bgOtaniOnijiAlt: 1714080886 bgOtaniOnijiAlt: 1714080886
spritePackingTag: spritePackingTag:

View file

@ -30,6 +30,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using UnityEngine; using UnityEngine;
using DG.Tweening;
namespace HeavenStudio.Games.Loaders namespace HeavenStudio.Games.Loaders
{ {
@ -117,6 +118,22 @@ namespace HeavenStudio.Games.Loaders
priority = 2 priority = 2
}, },
new GameAction("background color", "Background Appearance")
{
function = delegate { var e = eventCaller.currentEntity; SumoBrothers.instance.BackgroundColor(e.beat, e.length, e["colorFrom"], e["colorTo"], e["colorFrom2"], e["colorTo2"], e["ease"]); },
defaultLength = 0.5f,
resizable = true,
parameters = new List<Param>()
{
new Param("colorFrom", SumoBrothers.defaultBgTopColor, "Color A Start", "Set the top-most color of the background gradient at the start of the event."),
new Param("colorTo", SumoBrothers.defaultBgTopColor, "Color A End", "Set the top-most color of the background gradient at the end of the event."),
new Param("colorFrom2", SumoBrothers.defaultBgBtmColor, "Color B Start", "Set the bottom-most color of the background gradient at the start of the event."),
new Param("colorTo2", SumoBrothers.defaultBgBtmColor, "Color B End", "Set the bottom-most color of the background gradient at the end of the event."),
new Param("ease", Util.EasingFunction.Ease.Linear, "Ease", "Set the easing of the action.")
},
},
new GameAction("look", "Look at Camera") new GameAction("look", "Look at Camera")
{ {
function = delegate { var e = eventCaller.currentEntity; SumoBrothers.instance.LookAtCamera(e.beat, e.length); }, function = delegate { var e = eventCaller.currentEntity; SumoBrothers.instance.LookAtCamera(e.beat, e.length); },
@ -143,6 +160,26 @@ namespace HeavenStudio.Games
// using Scripts_SumoBrothers; // using Scripts_SumoBrothers;
public class SumoBrothers : Minigame public class SumoBrothers : Minigame
{ {
private static Color _defaultBgTopColor;
public static Color defaultBgTopColor
{
get
{
ColorUtility.TryParseHtmlString("#FFFF02", out _defaultBgTopColor);
return _defaultBgTopColor;
}
}
private static Color _defaultBgBtmColor;
public static Color defaultBgBtmColor
{
get
{
ColorUtility.TryParseHtmlString("#FFFF73", out _defaultBgBtmColor);
return _defaultBgBtmColor;
}
}
[Header("Animators")] [Header("Animators")]
[SerializeField] Animator inuSensei; [SerializeField] Animator inuSensei;
[SerializeField] Animator sumoBrotherP; [SerializeField] Animator sumoBrotherP;
@ -155,6 +192,26 @@ namespace HeavenStudio.Games
[SerializeField] Animator bgMove; [SerializeField] Animator bgMove;
[SerializeField] Animator bgStatic; [SerializeField] Animator bgStatic;
[Header("Background Colors")]
public Material backgroundMaterial;
public SpriteRenderer bgTop;
public SpriteRenderer bgBtm;
// copypasted my stolen code from clap trap lmao
// i stole these from rhythm tweezers lol
private double colorStartBeat = -1;
private float colorLength = 0f;
private Color colorTopStart; //obviously put to the default color of the game
private Color colorBtmStart;
private Color colorTopEnd;
private Color colorBtmEnd;
private Util.EasingFunction.Ease colorEase; //putting Util in case this game is using jukebox
Tween bgColorTween;
private SpriteRenderer backgroundTopColor;
private SpriteRenderer backgroundBtmColor;
[Header("Properties")] [Header("Properties")]
/*static List<queuedSumoInputs> queuedInputs = new List<queuedSumoInputs>(); /*static List<queuedSumoInputs> queuedInputs = new List<queuedSumoInputs>();
public struct queuedSumoInputs public struct queuedSumoInputs
@ -278,7 +335,17 @@ namespace HeavenStudio.Games
var beat = Conductor.instance.songPositionInBeatsAsDouble; var beat = Conductor.instance.songPositionInBeatsAsDouble;
backgroundMaterial.SetColor("_ColorAlpha", defaultBgTopColor);
backgroundMaterial.SetColor("_ColorDelta", defaultBgBtmColor);
bgTop.color = defaultBgTopColor;
bgBtm.color = defaultBgBtmColor;
colorTopStart = defaultBgTopColor;
colorTopEnd = defaultBgTopColor;
colorBtmStart = defaultBgBtmColor;
colorBtmEnd = defaultBgBtmColor;
} }
void OnDestroy() void OnDestroy()
@ -330,10 +397,13 @@ namespace HeavenStudio.Games
} }
StompShake(); StompShake();
BackgroundColorUpdate();
} }
public override void OnGameSwitch(double beat) // stole code from manzai public override void OnGameSwitch(double beat) // stole code from manzai
{ {
FindNextGameswitchBeat(beat);
foreach(var entity in GameManager.instance.Beatmap.Entities) foreach(var entity in GameManager.instance.Beatmap.Entities)
{ {
if(entity.beat > beat) //the list is sorted based on the beat of the entity, so this should work fine. if(entity.beat > beat) //the list is sorted based on the beat of the entity, so this should work fine.
@ -345,11 +415,9 @@ namespace HeavenStudio.Games
continue; continue;
} }
bool isOnGameSwitchBeat = entity.beat == beat; bool isOnGameSwitchBeat = entity.beat == beat;
if(entity.datamodel == "sumoBrothers/stompSignal") {StompSignal(entity.beat, true, true, entity["look"], entity["StompDirection"]);} if(entity.datamodel == "sumoBrothers/stompSignal") {StompSignal(entity.beat, true, true, entity["look"], entity["direction"]);}
if(entity.datamodel == "sumoBrothers/slapSignal") {SlapSignal(entity.beat, true, true);} if(entity.datamodel == "sumoBrothers/slapSignal") {SlapSignal(entity.beat, true, true);}
} }
FindNextGameswitchBeat(beat);
} }
public override void OnPlay(double beat) public override void OnPlay(double beat)
@ -1067,7 +1135,43 @@ namespace HeavenStudio.Games
camera.position = new Vector3(newPosX, 0, 0); camera.position = new Vector3(newPosX, 0, 0);
//print("cX: " + cameraX + " cXN: " + cameraXNew + "nPX: " + newPosX + "sSL: " + stompShakeLength); //print("cX: " + cameraX + " cXN: " + cameraXNew + "nPX: " + newPosX + "sSL: " + stompShakeLength);
//print("cX: " + cameraX + " cXN: " + cameraXNew + " jSB: " + justStompBeat + " sST: " + stompShakeTimings + " sSV: " + stompShakeValues); //print("cX: " + cameraX + " cXN: " + cameraXNew + " jSB: " + justStompBeat + " sST: " + stompShakeTimings + " sSV: " + stompShakeValues);
} else {
camera.position = new Vector3(0, 0, 0);
} }
print(camera.position);
}
public void BackgroundColor(double beat, float length, Color startTop, Color endTop, Color startBtm, Color endBtm, int ease)
{
colorStartBeat = beat;
colorLength = length;
colorTopStart = startTop;
colorTopEnd = endTop;
colorBtmStart = startBtm;
colorBtmEnd = endBtm;
colorEase = (Util.EasingFunction.Ease)ease;
}
// more stolen code that i took from clap trap lmao
private void BackgroundColorUpdate() // stolen from tweezers too lol
{
float normalizedBeat = Mathf.Clamp01(Conductor.instance.GetPositionFromBeat(colorStartBeat, colorLength));
var func = Util.EasingFunction.GetEasingFunction(colorEase);
float newRT = func(colorTopStart.r, colorTopEnd.r, normalizedBeat);
float newGT = func(colorTopStart.g, colorTopEnd.g, normalizedBeat);
float newBT = func(colorTopStart.b, colorTopEnd.b, normalizedBeat);
float newRB = func(colorBtmStart.r, colorBtmEnd.r, normalizedBeat);
float newGB = func(colorBtmStart.g, colorBtmEnd.g, normalizedBeat);
float newBB = func(colorBtmStart.b, colorBtmEnd.b, normalizedBeat);
bgTop.color = new Color(newRT, newGT, newBT);
bgBtm.color = new Color(newRB, newGB, newBB);
backgroundMaterial.SetColor("_ColorAlpha", new Color(newRT, newGT, newBT));
backgroundMaterial.SetColor("_ColorDelta", new Color(newRB, newGB, newBB));
} }