Skip to content

Commit

Permalink
v1.1.0 - Fix AudioPlayers, Custom Drink API
Browse files Browse the repository at this point in the history
  • Loading branch information
creepycats committed Dec 3, 2023
1 parent 570a2fc commit 18f7696
Show file tree
Hide file tree
Showing 10 changed files with 95 additions and 67 deletions.
70 changes: 70 additions & 0 deletions Classes/DrinkManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
using SCP294.Types.Config;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MEC;
using MapEditorReborn.API.Features.Objects;
using Exiled.API.Features;

namespace SCP294.Classes
{
public class DrinkManager
{
public List<CustomDrink> LoadedDrinks = new List<CustomDrink>() { };

public void UnloadAllDrinks()
{
LoadedDrinks = new List<CustomDrink>() { };
}

public void LoadBaseDrinks()
{
LoadedDrinks = LoadedDrinks.Concat(DrinkList.DefaultDrinks).ToList();
if (SCP294.Instance.Config.EnableCommunityDrinks) LoadedDrinks = LoadedDrinks.Concat(DrinkList.CommunityDrinks).ToList();
}

public void UnloadBaseDrinks()
{
LoadedDrinks = LoadedDrinks.Except(DrinkList.DefaultDrinks).ToList();
if (SCP294.Instance.Config.EnableCommunityDrinks) LoadedDrinks = LoadedDrinks.Except(DrinkList.CommunityDrinks).ToList();
}

public static bool IsDrinkManagerLoaded() { return SCP294.Instance.DrinkManager.LoadedDrinks != null; }

public static void RegisterDrink(CustomDrink newDrink)
{
RegisterDrink(new CustomDrink[] { newDrink });
}
public static void RegisterDrink(CustomDrink[] newDrink)
{
Timing.RunCoroutine(AwaitAddDrink(newDrink));
}

public static IEnumerator<float> AwaitAddDrink(CustomDrink[] newDrink)
{
yield return Timing.WaitUntilTrue(IsDrinkManagerLoaded);
SCP294.Instance.DrinkManager.LoadedDrinks = SCP294.Instance.DrinkManager.LoadedDrinks.Concat(newDrink.ToList()).ToList();
}

public static void UnloadDrink(CustomDrink newDrink)
{
UnloadDrink(new CustomDrink[] { newDrink });
}
public static void UnloadDrink(CustomDrink[] newDrink)
{
Timing.RunCoroutine(AwaitRemoveDrink(newDrink));
}

public static IEnumerator<float> AwaitRemoveDrink(CustomDrink[] newDrink)
{
while (SCP294.Instance.DrinkManager == null)
{
yield return Timing.WaitForSeconds(1f);
}

SCP294.Instance.DrinkManager.LoadedDrinks = SCP294.Instance.DrinkManager.LoadedDrinks.Except(newDrink.ToList()).ToList();
}
}
}
2 changes: 1 addition & 1 deletion Classes/SCP294Object.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public static void SpawnSCP294()
if (!SpawnRoom) continue;
SpawnTransform relativeOffsetTransform = SCP294.Instance.Config.SpawningLocations.SpawnRooms[SpawnRoom.Type].RandomItem();

CreateSCP294(SpawnRoom.Position + (SpawnRoom.Rotation * relativeOffsetTransform.Position), Quaternion.Euler(SpawnRoom.Rotation.eulerAngles + Quaternion.Euler(relativeOffsetTransform.Rotation.X, relativeOffsetTransform.Rotation.Y, relativeOffsetTransform.Rotation.Z).eulerAngles), relativeOffsetTransform.Scale);
CreateSCP294(SpawnRoom.Position + (SpawnRoom.Rotation * relativeOffsetTransform.Position), Quaternion.Euler(SpawnRoom.Rotation.eulerAngles + Quaternion.Euler(relativeOffsetTransform.Rotation.x, relativeOffsetTransform.Rotation.y, relativeOffsetTransform.Rotation.z).eulerAngles), relativeOffsetTransform.Scale);
}
}

Expand Down
2 changes: 1 addition & 1 deletion Classes/SoundHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ public static Npc SpawnFix(string name, RoleTypeId role, int id = 0, string user
NetworkServer.AddPlayerForConnection(new FakeConnection(id), gameObject);
try
{
npc.ReferenceHub.authManager.NetworkSyncedUserId = "ID_Dedicated";
npc.ReferenceHub.authManager.NetworkSyncedUserId = null;
}
catch (Exception arg2)
{
Expand Down
5 changes: 1 addition & 4 deletions Commands/SCP294AdminCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,7 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
else
{
// Other Drinks
List<CustomDrink> CombinedDrinks = new List<CustomDrink>();
CombinedDrinks = CombinedDrinks.Concat(DrinkList.DefaultDrinks).ToList();
if (SCP294.Instance.Config.EnableCommunityDrinks) CombinedDrinks = CombinedDrinks.Concat(DrinkList.CommunityDrinks).ToList();
foreach (CustomDrink customDrink in CombinedDrinks)
foreach (CustomDrink customDrink in SCP294.Instance.DrinkManager.LoadedDrinks)
{
foreach (string drinkName in customDrink.DrinkNames)
{
Expand Down
5 changes: 1 addition & 4 deletions Commands/SCP294Command.cs
Original file line number Diff line number Diff line change
Expand Up @@ -216,10 +216,7 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
else
{
// Other Drinks
List<CustomDrink> CombinedDrinks = new List<CustomDrink>();
CombinedDrinks = CombinedDrinks.Concat(DrinkList.DefaultDrinks).ToList();
if (SCP294.Instance.Config.EnableCommunityDrinks) CombinedDrinks = CombinedDrinks.Concat(DrinkList.CommunityDrinks).ToList();
foreach (CustomDrink customDrink in CombinedDrinks)
foreach (CustomDrink customDrink in SCP294.Instance.DrinkManager.LoadedDrinks)
{
foreach (string drinkName in customDrink.DrinkNames)
{
Expand Down
30 changes: 5 additions & 25 deletions Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,51 +29,31 @@ public class Config : IConfig
[RoomType.EzUpstairsPcs] = new List<SpawnTransform>(){
new SpawnTransform() {
Position = new Vector3(-5.15f, 0f, 2f),
Rotation = new EulerRotation() {
X = 0,
Y = -90,
Z = 0
},
Rotation = new Vector3(0f, -90f, 0f),
Scale = Vector3.one
}
},
[RoomType.EzPcs] = new List<SpawnTransform>(){
new SpawnTransform() {
Position = new Vector3(-7f, 0f, -1.75f),
Rotation = new EulerRotation() {
X = 0,
Y = -90,
Z = 0
},
Rotation = new Vector3(0f, -90f, 0f),
Scale = Vector3.one
},
new SpawnTransform() {
Position = new Vector3(2.5f, 0f, 6.8f),
Rotation = new EulerRotation() {
X = 0,
Y = 0,
Z = 0
},
Rotation = new Vector3(0f, 0f, 0f),
Scale = Vector3.one
}
},
[RoomType.EzDownstairsPcs] = new List<SpawnTransform>(){
new SpawnTransform() {
Position = new Vector3(7f, -1.5f, -5.8f),
Rotation = new EulerRotation() {
X = 0,
Y = 90,
Z = 0
},
Rotation = new Vector3(0f, 90f, 0f),
Scale = Vector3.one
},
new SpawnTransform() {
Position = new Vector3(7f, -1.5f, 5.8f),
Rotation = new EulerRotation() {
X = 0,
Y = 90,
Z = 0
},
Rotation = new Vector3(0f, 90f, 0f),
Scale = Vector3.one
}
}
Expand Down
16 changes: 14 additions & 2 deletions SCP294.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,17 @@
using SCP294.Classes;
using SCP294.Types;
using HarmonyLib;
using Exiled.API.Enums;

namespace SCP294
{
public class SCP294 : Plugin<Config.Config>
{
public override string Name => "Ultimate294";
public override string Author => "creepycats";
public override Version Version => new Version(1, 0, 0);
public override Version Version => new Version(1, 1, 0);

public override PluginPriority Priority => PluginPriority.Highest;

public static SCP294 Instance { get; set; }

Expand All @@ -24,9 +27,12 @@ public class SCP294 : Plugin<Config.Config>
public Dictionary<SchematicObject, LightSourceObject> SCP294LightSources { get; set; } = new Dictionary<SchematicObject, LightSourceObject>();
public List<string> PlayersNear294 { get; set; } = new List<string>();
public Dictionary<ushort, DrinkInfo> CustomDrinkItems = new Dictionary<ushort, DrinkInfo>();
public DrinkManager DrinkManager = new DrinkManager();

private Harmony _harmony;

private CoroutineHandle hintCoroutine;

public override void OnEnabled()
{
Instance = this;
Expand All @@ -35,7 +41,9 @@ public override void OnEnabled()
Log.Info("Registering events...");
RegisterEvents();

Timing.RunCoroutine(SCP294Object.Handle294Hint());
DrinkManager.LoadBaseDrinks();

hintCoroutine = Timing.RunCoroutine(SCP294Object.Handle294Hint());

_harmony = new Harmony("SCP294");
_harmony.PatchAll();
Expand All @@ -48,6 +56,10 @@ public override void OnDisabled()
Log.Info("Unregistering events...");
UnregisterEvents();

DrinkManager.UnloadAllDrinks();

Timing.KillCoroutines(hintCoroutine);

_harmony.UnpatchAll();
_harmony = null;

Expand Down
2 changes: 1 addition & 1 deletion SCP294.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<Compile Include="Classes\DrinkManager.cs" />
<Compile Include="Classes\SCP294Object.cs" />
<Compile Include="Classes\SoundHandler.cs" />
<Compile Include="Commands\SCP294AdminCommand.cs" />
Expand All @@ -47,7 +48,6 @@
<Compile Include="Types\Config\DrinkEffect.cs" />
<Compile Include="Types\Config\DrinkList.cs" />
<Compile Include="Types\Config\SpawningConfig.cs" />
<Compile Include="Types\Config\EulerRotation.cs" />
<Compile Include="Types\Config\SpawnTransform.cs" />
<Compile Include="Types\DrinkInfo.cs" />
<Compile Include="Types\DrinkSound.cs" />
Expand Down
26 changes: 0 additions & 26 deletions Types/Config/EulerRotation.cs

This file was deleted.

4 changes: 1 addition & 3 deletions Types/Config/SpawnTransform.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@ public class SpawnTransform
/// <summary>
/// The rotation for SCP-294 to spawn at, relative to room's transform
/// </summary>
public EulerRotation Rotation { get; set; } = new EulerRotation() {
X = 0, Y = 0, Z = 0,
};
public Vector3 Rotation { get; set; } = new Vector3(0, 0, 0);
/// <summary>
/// The scale for SCP-294's schematic, default Vector3.one
/// </summary>
Expand Down

0 comments on commit 18f7696

Please sign in to comment.