final optimizations and fixes

damn i didn't think the preparing stuff would be such a big deal
This commit is contained in:
AstrlJelly 2024-03-09 01:20:07 -05:00
parent fe6bd8a516
commit 01083b709b
4 changed files with 44 additions and 85 deletions

View file

@ -109,9 +109,8 @@ MonoBehaviour:
RightCurve: {fileID: 8538313959133990924}
BarelyLeftCurve: {fileID: 5959598018215963193}
BarelyRightCurve: {fileID: 4156529297438955755}
HalvesLeftBase: {fileID: 8462363345267808632}
HalvesRightBase: {fileID: 997672822965154321}
ObjectParent: {fileID: 0}
HalvesLeftBase: {fileID: 3507681361263350449}
HalvesRightBase: {fileID: 5646879835731180444}
objectLeftHalves:
- {fileID: -5050977528292827191, guid: 1c59b9cd0adef0941bc4bd4bde66a759, type: 3}
- {fileID: -6734710479057769413, guid: 1c59b9cd0adef0941bc4bd4bde66a759, type: 3}
@ -541,7 +540,7 @@ MonoBehaviour:
rotSpeed: 140
fallLeftCurve: {fileID: 7764367815067799206}
fallRightCurve: {fileID: 7122240029612248645}
halvesParent: {fileID: 2078672318315355962}
sr: {fileID: 7206843505938361017}
--- !u!1 &1203023033644261752
GameObject:
m_ObjectHideFlags: 0
@ -1730,13 +1729,8 @@ MonoBehaviour:
DogAnim: {fileID: 1770250701376598399}
BirdAnim: {fileID: 4964290445827434540}
ObjectBase: {fileID: 4494871422713187218}
FullBird: {fileID: 3439822116337821266}
WhichObject: {fileID: 1780506401517458247}
WhichLeftHalf: {fileID: 8550182553065708291}
WhichRightHalf: {fileID: 7206843505938361017}
cutEverythingText: {fileID: 8405214087581042494}
CurveFromLeft: {fileID: 2592536718110886033}
CurveFromRight: {fileID: 8538313959133990924}
CutEverythingText: {fileID: 8405214087581042494}
ObjectTypes:
- {fileID: 0}
- {fileID: -2307065246004786754, guid: 1c59b9cd0adef0941bc4bd4bde66a759, type: 3}
@ -4202,7 +4196,7 @@ MonoBehaviour:
rotSpeed: -140
fallLeftCurve: {fileID: 7191847337805905266}
fallRightCurve: {fileID: 5028931464679965393}
halvesParent: {fileID: 2078672318315355962}
sr: {fileID: 8550182553065708291}
--- !u!1 &8691542995859896262
GameObject:
m_ObjectHideFlags: 0

View file

@ -18,16 +18,15 @@ namespace HeavenStudio.Games.Loaders
{
if (datamodel == "dogNinja/ThrowObject" && e.version == 0)
{
Debug.Log("entity at beat " + e.beat + " is the same? " + (e["typeL"] == e["typeR"]));
bool diff = e["typeL"] == e["typeR"];
Debug.Log("entity at beat " + e.beat + " is the same? " + (e["typeL"] == e["typeR"]));
e.CreateProperty("type", diff ? e["typeL"] : DogNinja.ObjectType.Random);
e["diffObjs"] = e["direction"] == 2 && e["typeL"] != e["typeR"];
e["type"] = e["direction"] is 0 or 2 ? (int)e["typeL"] : e["typeR"];
e.version = 1;
return e;
}
return null;
}
// // Beatmap.Entities isn't available in a riqentity updater...
// RiqEntity BirdUpdater(string datamodel, RiqEntity e)
// {
// if (datamodel == "dogNinja/CutEverything" && e.version == 0)
@ -143,15 +142,8 @@ namespace HeavenStudio.Games
[Header("References")]
[SerializeField] ThrowObject ObjectBase;
[SerializeField] GameObject FullBird;
[SerializeField] SpriteRenderer WhichObject;
public SpriteRenderer WhichLeftHalf;
public SpriteRenderer WhichRightHalf;
[SerializeField] TMP_Text cutEverythingText;
[Header("Curves")]
[SerializeField] BezierCurve3D CurveFromLeft;
[SerializeField] BezierCurve3D CurveFromRight;
[SerializeField] TMP_Text CutEverythingText;
[SerializeField] Sprite[] ObjectTypes;
@ -228,22 +220,21 @@ namespace HeavenStudio.Games
public override void OnGameSwitch(double beat)
{
foreach (var e in gameManager.Beatmap.Entities.FindAll(e => e.datamodel is "dogNinja/ThrowObject" && beat > e.beat - 2 && beat < e.beat + 1))
foreach (var e in gameManager.Beatmap.Entities.FindAll(e => e.datamodel is "dogNinja/ThrowObject" && beat >= e.beat - 2 && beat < e.beat + 1))
{
// if (!e.dynamicData.ContainsKey("throwData")) {
// QueueObject(e.beat, e["direction"], e["diffObjs"], e["type"], e["typeL"], e["typeR"], e["shouldPrepare"], true, e);
// }
QueuedThrow t = e["throwData"];
DogAnim.Play("Prepare", 0, 1);
preparing = true;
ThrowObject(e.beat, e["direction"], t.types, t.sfxNumL, t.sfxNumR);
if (beat > e.beat) {
DogAnim.Play("Prepare", 0, 1);
preparing = true;
}
ThrowObject(e.beat, e["direction"], ((beat <= e.beat) && e["shouldPrepare"]), t.types, t.sfxNumL, t.sfxNumR);
}
}
private void Update()
{
// prepare queuing stuff
if (queuePrepare && (DogAnim.IsAnimationNotPlaying() || DogAnim.IsPlayingAnimationNames("Bop")))
if (queuePrepare && !preparing && (DogAnim.IsAnimationNotPlaying() || DogAnim.IsPlayingAnimationNames("Bop")))
{
DogAnim.DoScaledAnimationAsync("Prepare", 0.5f);
preparing = true;
@ -253,8 +244,9 @@ namespace HeavenStudio.Games
// controls stuff
if (PlayerInput.GetIsAction(InputAction_TouchPress) && !GameManager.instance.autoplay)
{
queuePrepare = true;
// queuePrepare = true;
DogAnim.DoScaledAnimationAsync("Prepare", 0.5f);
preparing = true;
}
if (PlayerInput.GetIsAction(InputAction_TouchRelease) && (!IsExpectingInputNow(InputAction_Press)) && (!GameManager.instance.autoplay))
{
@ -268,20 +260,10 @@ namespace HeavenStudio.Games
DogAnim.DoScaledAnimationAsync(slice, 0.5f);
SoundByte.PlayOneShotGame("dogNinja/whiff");
queuePrepare = false;
StopPrepare();
}
}
private void LateUpdate()
{
// // prepare queuing stuff
// if (queuePrepare && (DogAnim.IsAnimationNotPlaying() || DogAnim.IsPlayingAnimationNames("Bop", "Idle")))
// {
// DogAnim.DoScaledAnimationAsync("Prepare", 0.5f);
// queuePrepare = false;
// }
}
public void Bop(double beat, float length, bool auto, bool bop)
{
autoBop = auto;
@ -313,14 +295,9 @@ namespace HeavenStudio.Games
}
}
if (GameManager.instance.minigameObj.TryGetComponent(out DogNinja instance)) {
instance.ThrowObject(beat, direction, types, sfxNums[0], sfxNums[1]);
if (GameManager.instance.minigame is DogNinja instance) {
instance.ThrowObject(beat, direction, prepare, types, sfxNums[0], sfxNums[1]);
if (prepare) {
BeatAction.New(instance, new() {
new(beat, () => instance.queuePrepare = PlayerInput.CurrentControlStyle != InputController.ControlStyles.Touch || GameManager.instance.autoplay)
});
}
} else {
var queuedThrow = new QueuedThrow() {
types = types,
@ -334,8 +311,13 @@ namespace HeavenStudio.Games
}
}
public void ThrowObject(double beat, int direction, int[] types, string sfxNumL, string sfxNumR)
public void ThrowObject(double beat, int direction, bool prepare, int[] types, string sfxNumL, string sfxNumR)
{
if (prepare) {
BeatAction.New(this, new() {
new(beat, () => queuePrepare = PlayerInput.CurrentControlStyle != InputController.ControlStyles.Touch || GameManager.instance.autoplay)
});
}
for (int i = 0; i < (direction == 2 ? 2 : 1); i++)
{
bool l = direction is 2 ? i == 0 : direction == 0;
@ -344,7 +326,7 @@ namespace HeavenStudio.Games
obj.startBeat = beat;
obj.direction = direction;
obj.fromLeft = l;
obj.type = types[i];
obj.type = l ? types[0] : types[1];
obj.sfxNum = l ? sfxNumL : sfxNumR;
if (direction == 2) obj.shouldSfx = l == (types[0] == types[1]);
}
@ -354,7 +336,7 @@ namespace HeavenStudio.Games
{
if (sound) SoundByte.PlayOneShotGame("dogNinja/bird_flap");
BirdAnim.DoScaledAnimationAsync("FlyIn", 0.5f);
cutEverythingText.text = customText;
CutEverythingText.text = customText;
BeatAction.New(this, new() {
new(beat + length, () => BirdAnim.Play("FlyOut", 0, 0))

View file

@ -7,11 +7,11 @@ using NaughtyBezierCurves;
namespace HeavenStudio.Games.Scripts_DogNinja
{
// this code sucks but i don't wanna touch it. it works fine enough. sorry!
public class SpawnHalves : MonoBehaviour
{
public double startBeat;
public Vector3 objPos;
private Vector3 posModifier;
public bool lefty;
float bpmModifier;
double songPos;
@ -22,24 +22,18 @@ namespace HeavenStudio.Games.Scripts_DogNinja
[SerializeField] BezierCurve3D fallLeftCurve;
[SerializeField] BezierCurve3D fallRightCurve;
BezierCurve3D curve;
[SerializeField] Transform halvesParent;
private void Awake()
{
bpmModifier = Conductor.instance.songBpm / 100;
songPos = Conductor.instance.songPositionInBeatsAsDouble;
}
public SpriteRenderer sr;
private void Start()
{
bpmModifier = Conductor.instance.songBpm / 100;
songPos = Conductor.instance.songPositionInBeatsAsDouble;
curve = lefty ? fallRightCurve : fallLeftCurve;
}
private void Update()
{
// holy shit
float flyPosHalves = (Conductor.instance.GetPositionFromBeat(songPos, 3f)*(Conductor.instance.GetPositionFromBeat(songPos, 2f)))+Conductor.instance.GetPositionFromBeat(songPos, 1f);
float flyPosHalves = (Conductor.instance.GetPositionFromBeat(songPos, 3f) * Conductor.instance.GetPositionFromBeat(songPos, 2f)) + Conductor.instance.GetPositionFromBeat(songPos, 1f);
flyPosHalves = (flyPosHalves * 0.2f) + 0.35f;
transform.position = curve.GetPoint(flyPosHalves) + objPos;
@ -50,12 +44,7 @@ namespace HeavenStudio.Games.Scripts_DogNinja
// clean-up logic
if (flyPosHalves > 1f) {
Destroy(gameObject);
};
if ((!Conductor.instance.isPlaying && !Conductor.instance.isPaused)
|| GameManager.instance.currentGame != "dogNinja") {
Destroy(gameObject);
};
}
}
}
}

View file

@ -33,9 +33,8 @@ namespace HeavenStudio.Games.Scripts_DogNinja
private BezierCurve3D barelyCurve;
[SerializeField] BezierCurve3D BarelyLeftCurve;
[SerializeField] BezierCurve3D BarelyRightCurve;
[SerializeField] GameObject HalvesLeftBase;
[SerializeField] GameObject HalvesRightBase;
[SerializeField] Transform ObjectParent;
[SerializeField] SpawnHalves HalvesLeftBase;
[SerializeField] SpawnHalves HalvesRightBase;
public Sprite[] objectLeftHalves;
public Sprite[] objectRightHalves;
@ -50,9 +49,8 @@ namespace HeavenStudio.Games.Scripts_DogNinja
private void Update()
{
float flyPos = game.conductor.GetPositionFromBeat(startBeat, 1f)+1.1f;
float flyPosBarely = game.conductor.GetPositionFromBeat(barelyTime, 1f)+1f;
if (isActive) {
float flyPos = game.conductor.GetPositionFromBeat(startBeat, 1f)+1.1f;
flyPos *= 0.31f;
transform.position = curve.GetPoint(flyPos);
objPos = curve.GetPoint(flyPos);
@ -61,6 +59,7 @@ namespace HeavenStudio.Games.Scripts_DogNinja
Destroy(gameObject);
}
} else {
float flyPosBarely = game.conductor.GetPositionFromBeat(barelyTime, 1f)+1f;
flyPosBarely *= 0.3f;
transform.position = barelyCurve.GetPoint(flyPosBarely) + objPos;
float rot = fromLeft ? 200f : -200f;
@ -69,11 +68,6 @@ namespace HeavenStudio.Games.Scripts_DogNinja
Destroy(gameObject);
}
}
if ((!game.conductor.isPlaying && !game.conductor.isPaused)
|| game.gameManager.currentGame != "dogNinja") {
Destroy(gameObject);
}
}
private void Hit(PlayerActionEvent caller, float state)
@ -89,16 +83,16 @@ namespace HeavenStudio.Games.Scripts_DogNinja
barelyTime = game.conductor.songPositionInBeatsAsDouble;
DogAnim.DoScaledAnimationAsync("Barely" + dir, 0.5f);
SoundByte.PlayOneShotGame("dogNinja/barely");
if (shouldSfx) SoundByte.PlayOneShotGame("dogNinja/barely");
} else {
DogAnim.DoScaledAnimationAsync("Slice" + dir, 0.5f);
if (shouldSfx) SoundByte.PlayOneShotGame(sfxNum + "2");
Debug.Log("type - 1 : " + (type - 1));
game.WhichLeftHalf.sprite = objectLeftHalves[type - 1];
game.WhichRightHalf.sprite = objectRightHalves[type - 1];
HalvesLeftBase.sr.sprite = objectLeftHalves[type - 1];
HalvesRightBase.sr.sprite = objectRightHalves[type - 1];
for (int i = 0; i < 2; i++) {
SpawnHalves half = Instantiate(i == 0 ? HalvesLeftBase : HalvesRightBase, game.transform).GetComponent<SpawnHalves>();
SpawnHalves half = Instantiate(i == 0 ? HalvesLeftBase : HalvesRightBase, game.transform);
half.startBeat = startBeat;
half.lefty = fromLeft;
half.objPos = objPos;
@ -110,7 +104,7 @@ namespace HeavenStudio.Games.Scripts_DogNinja
private void Miss(PlayerActionEvent caller)
{
if (!game.queuePrepare) return;
if (!game.preparing) return;
DogAnim.DoScaledAnimationAsync("Unprepare", 0.5f);
game.StopPrepare();
}