Skip to content

Commit

Permalink
Merge pull request #48 from Auros/dev
Browse files Browse the repository at this point in the history
SiraUtil 3.1.0
  • Loading branch information
Auros authored Jul 6, 2022
2 parents ed56651 + b851d85 commit beae7a1
Show file tree
Hide file tree
Showing 11 changed files with 54 additions and 12 deletions.
2 changes: 0 additions & 2 deletions SiraUtil.Suite/Plugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ public Plugin(IPALogger logger, Zenjector zenjector)
{
//Container.RegisterRedecorator(new ConnectedPlayerNoteRegistration(Create));
});

//zenjector.Install(Location.StandardPlayer | Location.CampaignPlayer, Container => Container.BindInterfacesTo<DisableSubmission>().AsSingle());
}

private GameNoteController Create2(GameNoteController before)
Expand Down
2 changes: 1 addition & 1 deletion SiraUtil.Suite/Tests/SubmissionTest/DisableSubmission.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace SiraUtil.Suite.Tests.SubmissionTest
{
[Bind(Location.StandardPlayer)]
[Bind(Location.StandardPlayer | Location.MultiPlayer)]
internal class DisableSubmission : IInitializable
{
private readonly SiraLog _siraLog;
Expand Down
1 change: 1 addition & 0 deletions SiraUtil/Installers/SiraMenuInstaller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public override void InstallBindings()

// Score Submission
Container.Bind<SiraSubmissionViewController>().FromNewComponentAsViewController().AsSingle();
Container.BindInterfacesTo<MultiplayerDisplayer>().AsSingle();
Container.BindInterfacesTo<StandardDisplayer>().AsSingle();
Container.BindInterfacesTo<MissionDisplayer>().AsSingle();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace SiraUtil.Installers
{
internal class SiraStandardCampaignInstaller : Installer
internal class SiraStandardCampaignMultiplayerInstaller : Installer
{
public override void InstallBindings()
{
Expand Down
2 changes: 1 addition & 1 deletion SiraUtil/Plugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public Plugin(Conf conf, IPALogger logger, PluginMetadata pluginMetadata)
PluginInitInjector.AddInjector(typeof(Zenjector), ConstructZenjector);

Zenjector zenjector = (ConstructZenjector(null!, null!, pluginMetadata) as Zenjector)!;
zenjector.Install<SiraStandardCampaignInstaller>(Location.StandardPlayer | Location.CampaignPlayer);
zenjector.Install<SiraStandardCampaignMultiplayerInstaller>(Location.StandardPlayer | Location.CampaignPlayer | Location.MultiPlayer);
zenjector.Install<SiraInitializationInstaller>(Location.App, _zenjectManager, zenjector);
zenjector.Install<FPFCInstaller>(Location.Menu | Location.Player | Location.Tutorial);
zenjector.Install<SiraGameplayInstaller>(Location.Player | Location.Tutorial);
Expand Down
10 changes: 10 additions & 0 deletions SiraUtil/Submissions/MultiplayerDisplayer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace SiraUtil.Submissions
{
internal sealed class MultiplayerDisplayer : SubmissionDisplayer
{
public MultiplayerDisplayer(GameServerLobbyFlowCoordinator gameServerLobbyFlowCoordinator, MultiplayerResultsViewController multiplayerResultsViewController) : base(gameServerLobbyFlowCoordinator, multiplayerResultsViewController)
{

}
}
}
8 changes: 5 additions & 3 deletions SiraUtil/Submissions/SubmissionCompletionInjector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,29 @@ internal class SubmissionCompletionInjector : IAffinity
{
private readonly bool _inMission;
private readonly bool _inStandard;
private readonly bool _inMultiplayer;
private readonly Submission _submission;
private readonly SubmissionDataContainer _submissionDataContainer;

public SubmissionCompletionInjector(Submission submission, SubmissionDataContainer submissionDataContainer, [InjectOptional] MissionGameplaySceneSetupData missionGameplaySceneSetupData, [InjectOptional] StandardGameplaySceneSetupData standardGameplaySceneSetupData)
public SubmissionCompletionInjector(Submission submission, SubmissionDataContainer submissionDataContainer, [InjectOptional] MissionGameplaySceneSetupData missionGameplaySceneSetupData, [InjectOptional] StandardGameplaySceneSetupData standardGameplaySceneSetupData, [InjectOptional] MultiplayerLevelSceneSetupData multiplayerLevelSceneSetupData)
{
_submission = submission;
_submissionDataContainer = submissionDataContainer;
_inMission = missionGameplaySceneSetupData != null;
_inStandard = standardGameplaySceneSetupData != null;
_inMultiplayer = multiplayerLevelSceneSetupData != null;
_submissionDataContainer.SSS(true);
}

[AffinityPatch(typeof(PrepareLevelCompletionResults), nameof(PrepareLevelCompletionResults.FillLevelCompletionResults))]
private void StandardResultsPrepared(ref LevelCompletionResults __result)
{
if (!(_inStandard || _inMission))
if (!(_inStandard || _inMission || _inMultiplayer))
return;

if (_submission.Activated)
{
if (_inStandard)
if (_inStandard || _inMultiplayer)
{
_submissionDataContainer.SSS(false);
}
Expand Down
17 changes: 17 additions & 0 deletions SiraUtil/Submissions/SubmissionPatches.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,23 @@ internal static void DynamicFinish(LevelCompletionResults levelCompletionResults
}
}


[HarmonyPatch(typeof(MultiplayerLevelCompletionResults), nameof(MultiplayerLevelCompletionResults.hasAnyResults), MethodType.Getter)]
internal class Multi
{
[HarmonyPrefix]
internal static bool DynamicFinish(MultiplayerLevelCompletionResults __instance, ref bool __result)
{
if (__instance.levelCompletionResults is SiraLevelCompletionResults siraLevelCompletionResults && !siraLevelCompletionResults.ShouldSubmitScores)
{
__result = false;
return false;
}
return true;
}
}


internal static void ForcePracticeIfScoresDisabled(LevelCompletionResults levelCompletionResults, ref bool practice)
{
if (levelCompletionResults is SiraLevelCompletionResults siraLevelCompletionResults && !siraLevelCompletionResults.ShouldSubmitScores)
Expand Down
14 changes: 12 additions & 2 deletions SiraUtil/Zenject/Location.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public enum Location
CampaignPlayer = 8,

/// <summary>
/// Installs your bindings onto the local multiplayer player. The current backing installer is <see cref="MultiplayerLocalPlayerInstaller" />
/// Installs your bindings onto the local active multi player. Think of this as when the local user is actively playing the song. The current backing installer is <see cref="MultiplayerLocalActivePlayerInstaller" />
/// </summary>
MultiPlayer = 16,

Expand Down Expand Up @@ -70,6 +70,16 @@ public enum Location
/// <summary>
/// Installs your bindings onto every connected player in multiplayer. The current backing installer is <see cref="MultiplayerConnectedPlayerInstaller" />
/// </summary>
ConnectedPlayer = 256
ConnectedPlayer = 256,

/// <summary>
/// Installs your bindings onto the local active player in multiplayer. This is the current local player, no matter if they're spectating or not. The current backing installer is <see cref="MultiplayerLocalPlayerInstaller" />
/// </summary>
AlwaysMultiPlayer = 512,

/// <summary>
/// Installs your bindings onto the local inactive player in multiplayer. Think of this as when the local user is spectating in multiplayer. The current backing installer is <see cref="MultiplayerLocalInactivePlayerInstaller" />
/// </summary>
InactiveMultiPlayer = 1024,
}
}
4 changes: 4 additions & 0 deletions SiraUtil/Zenject/Zenjector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,10 @@ private IEnumerable<Type> InstallerForLocation(Location location)
installerTypes.Add(typeof(MultiplayerCoreInstaller));
if (location.HasFlag(Location.ConnectedPlayer))
installerTypes.Add(typeof(MultiplayerConnectedPlayerInstaller));
if (location.HasFlag(Location.AlwaysMultiPlayer))
installerTypes.Add(typeof(MultiplayerLocalPlayerInstaller));
if (location.HasFlag(Location.InactiveMultiPlayer))
installerTypes.Add(typeof(MultiplayerLocalInactivePlayerInstaller));
return installerTypes;
}

Expand Down
4 changes: 2 additions & 2 deletions SiraUtil/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
"id": "SiraUtil",
"name": "SiraUtil",
"author": "Auros",
"version": "3.0.6",
"version": "3.1.0",
"icon": "SiraUtil.Resources.logo.png",
"description": "A powerful utility mod which expands the capabilities and provides more tools to Beat Saber modders.",
"gameVersion": "1.21.0",
"gameVersion": "1.22.1",
"dependsOn": {
"BSIPA": "^4.2.1"
},
Expand Down

0 comments on commit beae7a1

Please sign in to comment.