Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions BoneLib/BoneLib/BoneMenu/DefaultMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,8 @@ internal static void LoadRandomLevel()

int index = Random.RandomRangeInt(0, CommonBarcodes.Maps.All.Count);
string barcode = CommonBarcodes.Maps.All[index];

SceneStreamer.Load(new(barcode), new Barcode(CommonBarcodes.Maps.LoadDefault));
HelperMethods.FadeLoadLevel(barcode);
}

internal static void ChangeIntoRandomAvatar()
Expand Down
6 changes: 4 additions & 2 deletions BoneLib/BoneLib/CommonBarcodes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -431,8 +431,10 @@ public static class Misc
public const string DevManipulator = "c1534c5a-c6a8-45d0-aaa2-2c954465764d";
public const string GravityCup = "c1534c5a-87ce-436d-b00c-ef9547726176";
public const string GravityPlate = "c1534c5a-a1c3-437b-85ac-e09547726176";
public const string PowerPuncher = "c1534c5a-cebf-42cc-be3a-4595506f7765";
public const string PowerPuncher = " c1534c5a-cebf-42cc-be3a-4595506f7765";
public const string BoxTurret = "SLZ.BONELAB.Content.Spawnable.BoxTurret";
public const string LoadFade = "c1534c5a-dac0-44a1-b656-6c235646584c";
public const string LoadFadeFast = "c1534c5a-84f0-4d2b-b4d7-64405646584c";
}
}
}
}
95 changes: 95 additions & 0 deletions BoneLib/BoneLib/HelperMethods.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,101 @@ public static void SpawnCrate(SpawnableCrateReference crateReference, Vector3 po
AssetSpawner.Spawn(spawnable, position, rotation, new Il2CppSystem.Nullable<Vector3>(scale), null, ignorePolicy, new Il2CppSystem.Nullable<int>(), spawnAction, despawnAction);
}

/// <summary>
/// Loads a level from a crate reference
/// </summary>
/// <param name="level">The crate reference to load</param>
public static void LoadLevel(LevelCrateReference level)
{
LoadLevel(level.Barcode.ID, CommonBarcodes.Maps.LoadDefault);
}

/// <summary>
/// Loads a level from a barcode
/// </summary>
/// <param name="barcode">The barcode of the level</param>
public static void LoadLevel(string barcode)
{
LoadLevel(barcode, CommonBarcodes.Maps.LoadDefault);
}

/// <summary>
/// Loads a level from a crate reference
/// </summary>
/// <param name="level">The crate reference to load</param>
/// <param name="loadLevel">The crate reference for the loading scene</param>
public static void LoadLevel(LevelCrateReference level, LevelCrateReference loadLevel)
{
LoadLevel(level.Barcode.ID, loadLevel.Barcode.ID);
}

/// <summary>
/// Loads a level from a barcode
/// </summary>
/// <param name="levelBarcode">The barcode of the level</param>
/// <param name="loadLevelBarcode">The barcode of the loading scene</param>
public static void LoadLevel(string levelBarcode, string loadLevelBarcode)
{
SceneStreamer.Load(new Barcode(levelBarcode), new Barcode(loadLevelBarcode));
}

/// <summary>
/// Loads a level from a crate reference with load fade
/// </summary>
/// <param name="level">The crate reference to load</param>
/// <param name="fastFade">When true, loads with a faster fade</param>
public static void FadeLoadLevel(LevelCrateReference level, bool fastFade = false)
{
FadeLoadLevel(level.Barcode.ID, CommonBarcodes.Maps.LoadDefault, fastFade);
}

/// <summary>
/// Loads a level from a barcode with load fade
/// </summary>
/// <param name="barcode">The barcode of the level</param>
/// <param name="fastFade">When true, loads with a faster fade</param>
public static void FadeLoadLevel(string barcode, bool fastFade = false)
{
FadeLoadLevel(barcode, CommonBarcodes.Maps.LoadDefault, fastFade);
}

/// <summary>
/// Loads a level from a crate reference with load fade
/// </summary>
/// <param name="level">The crate reference to load</param>
/// <param name="loadLevel">The crate reference for the loading scene</param>
/// <param name="fastFade">When true, loads with a faster fade</param>
public static void FadeLoadLevel(LevelCrateReference level, LevelCrateReference loadLevel, bool fastFade = false)
{
FadeLoadLevel(level.Barcode.ID, loadLevel.Barcode.ID, fastFade);
}

/// <summary>
/// Loads a level from a barcode with load fade
/// </summary>
/// <param name="levelBarcode">The barcode of the level</param>
/// <param name="loadLevelBarcode">The barcode of the loading scene</param>
/// <param name="fastFade">When true, loads with a faster fade</param>
public static void FadeLoadLevel(string levelBarcode, string loadLevelBarcode, bool fastFade = false)
{
MelonCoroutines.Start(FadeIntoLevel(levelBarcode, loadLevelBarcode, fastFade));
}

private static System.Collections.IEnumerator FadeIntoLevel(string levelBarcode, string loadSceneBarcode, bool fastFade = false)
{
if(fastFade)
{
SpawnCrate(CommonBarcodes.Misc.LoadFadeFast, Vector3.zero);
yield return new WaitForSeconds(0.5f);
}
else
{
SpawnCrate(CommonBarcodes.Misc.LoadFade, Vector3.zero);
yield return new WaitForSeconds(2);
}
LoadLevel(levelBarcode, loadSceneBarcode);
}

/// <summary>
/// Checks if the player is in a loading screen or not
/// </summary>
Expand Down