Skip to content

Commit

Permalink
Merge pull request #271 from Centurion-Creative-Connect/feature/add-w…
Browse files Browse the repository at this point in the history
…ay-to-reset-only-unused-guns

Add `GunManager#MasterOnly_ResetUnusedGuns` to reset only unused guns
  • Loading branch information
DerpyNewbie authored Nov 24, 2024
2 parents 6bb4ed6 + cd74539 commit 94d43d9
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 3 deletions.
6 changes: 6 additions & 0 deletions Packages/org.centurioncc.system/Runtime/Gun/GunEnums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,12 @@ public enum CombatTagOption
Disable
}

public enum GunManagerResetType
{
All,
Unused
}

public static class GunStateHelper
{
public const byte MaxValue = (byte)GunState.InCockingTwisting;
Expand Down
38 changes: 36 additions & 2 deletions Packages/org.centurioncc.system/Runtime/Gun/GunManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,30 @@ public void MasterOnly_ResetRemoteGuns()
Logger.Log($"{Prefix}ManagedGuns reset complete");
}

[PublicAPI]
public void MasterOnly_ResetUnusedGuns()
{
if (!Networking.IsMaster)
{
Logger.LogError(string.Format(MustBeMasterError, nameof(MasterOnly_ResetUnusedGuns)));
return;
}

Logger.Log($"{Prefix}Resetting unused ManagedGuns");
int resetCount = 0;
foreach (var managedGun in ManagedGunInstances)
{
if (managedGun == null || !managedGun.IsOccupied ||
managedGun.IsPickedUp || managedGun.IsHolstered) continue;

managedGun.MasterOnly_Dispose();
resetCount++;
}

SendCustomNetworkEvent(NetworkEventTarget.All, nameof(Invoke_OnGunsResetUnused));
Logger.Log($"{Prefix}{resetCount} unused ManagedGuns has been reset");
}

public void MasterOnly_SlowlyResetRemoteGuns()
{
if (!Networking.IsMaster)
Expand Down Expand Up @@ -374,11 +398,21 @@ public bool CheckCanLocalShoot(GunBase instance, out int ruleId)

public void Invoke_OnGunsReset()
{
Logger.Log($"{Prefix}OnGunsReset");
Logger.Log($"{Prefix}OnGunsResetAll");
foreach (var callback in _eventCallbacks)
{
if (callback == null) continue;
((GunManagerCallbackBase)callback).OnGunsReset(GunManagerResetType.All);
}
}

public void Invoke_OnGunsResetUnused()
{
Logger.Log($"{Prefix}OnGunsResetUnused");
foreach (var callback in _eventCallbacks)
{
if (callback == null) continue;
((GunManagerCallbackBase)callback).OnGunsReset();
((GunManagerCallbackBase)callback).OnGunsReset(GunManagerResetType.Unused);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,16 @@ public virtual bool CanShoot()
{
return true;
}

public virtual void OnGunsReset()
{
}

public virtual void OnGunsReset(GunManagerResetType type)
{
OnGunsReset();
}

public virtual void OnOccupyChanged(ManagedGun instance)
{
}
Expand Down

0 comments on commit 94d43d9

Please sign in to comment.