Skip to content
This repository has been archived by the owner on Sep 16, 2023. It is now read-only.

More Generator and Door API and added Cursed079Camera #7

Merged
merged 5 commits into from
Jan 12, 2023
Merged
Show file tree
Hide file tree
Changes from 4 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
1 change: 1 addition & 0 deletions CursedMod/CursedMod.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
<Compile Include="Features\Wrappers\AdminToys\CursedLightSource.cs" />
<Compile Include="Features\Wrappers\AdminToys\CursedPrimitiveObject.cs" />
<Compile Include="Features\Wrappers\CursedPrefabManager.cs" />
<Compile Include="Features\Wrappers\Facility\Cursed079Camera.cs" />
<Compile Include="Features\Wrappers\Facility\CursedFacility.cs" />
<Compile Include="Features\Wrappers\Facility\CursedGenerator.cs" />
<Compile Include="Features\Wrappers\Facility\CursedWarhead.cs" />
Expand Down
54 changes: 54 additions & 0 deletions CursedMod/Features/Wrappers/Facility/Cursed079Camera.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using PlayerRoles.PlayableScps.Scp079.Cameras;
using MapGeneration;
using UnityEngine;

namespace CursedMod.Features.Wrappers.Facility;

public class Cursed079Camera
{
public Scp079Camera BaseCamera { get; }

public Cursed079Camera(Scp079Camera baseCamera)
{
BaseCamera = baseCamera;
}

public bool IsActive
{
get => BaseCamera.IsActive;
set => BaseCamera.IsActive = value;
}
public GameObject GameObject => BaseCamera.gameObject;

public Transform Transform => BaseCamera.transform;

public string CameraName => BaseCamera.Label;

public Vector3 Position => BaseCamera.Position;

public Quaternion Rotation
{
get => BaseCamera._cameraAnchor.rotation;
set => BaseCamera._cameraAnchor.rotation = value;
}

public Vector3 Scale
{
get => BaseCamera._cameraAnchor.localScale;
set => BaseCamera._cameraAnchor.localScale = value;
}

public float CurrentZoom => BaseCamera.ZoomAxis.CurrentZoom;

public bool IsUsing
{
get => BaseCamera.IsActive;
set => BaseCamera.IsActive = value;
}

public FacilityZone Zone => BaseCamera.Room.Zone;

public ushort CameraId => BaseCamera.SyncId;

public override string ToString() => $"{nameof(Cursed079Camera)}: Name: {CameraName} | Position: {Position} | Rotation: {Rotation} | Zoom: {CurrentZoom} | Zone: {Zone} | Id: {CameraId}";
}
34 changes: 32 additions & 2 deletions CursedMod/Features/Wrappers/Facility/CursedDoor.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Interactables.Interobjects.DoorUtils;
using Interactables.Interobjects;
using Interactables.Interobjects.DoorUtils;
using UnityEngine;

namespace CursedMod.Features.Wrappers.Facility;
Expand All @@ -17,6 +18,14 @@ public CursedDoor(DoorVariant door)
public Transform Transform => Base.transform;

public int DoorId => Base.DoorId;

public float State => Base.GetExactState();

public bool IsMoving => State is not(0 or 1);

public bool FullClosed => State is 0;

public bool FullOpened => State is 1;

public Vector3 Position
{
Expand Down Expand Up @@ -44,13 +53,34 @@ public DoorPermissions RequiredPermissions

public bool IsOpen
{
get => Base.TargetState;
get => Base.IsConsideredOpen();
set => Base.NetworkTargetState = value;
}

public bool IsGate => Base is PryableDoor;

public bool IsCheckpoint => Base is CheckpointDoor;

public bool IsElevator => Base is ElevatorDoor;

public bool IsBroken => Base is IDamageableDoor damageable && damageable.IsDestroyed;

public DoorNametagExtension Tag => Base.GetComponent<DoorNametagExtension>();

public void TriggerState() => Base.NetworkTargetState = !IsOpen;

public void ServerChangeLock(DoorLockReason reason, bool newState) => Base.ServerChangeLock(reason, newState);

public bool DestroyDoor(DoorDamageType type = DoorDamageType.ServerCommand)
{
if (Base is IDamageableDoor damageable && !damageable.IsDestroyed)
{
damageable.ServerDamage(ushort.MaxValue, type);
return true;
}

return false;
}

public override string ToString() =>
$"{nameof(CursedDoor)}: Opened: {IsOpen} | Position: {Position} | Rotation: {Rotation} | Scale: {Scale} | Permissions: {RequiredPermissions} | DoorId: {DoorId}";
Expand Down
29 changes: 28 additions & 1 deletion CursedMod/Features/Wrappers/Facility/CursedGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,22 @@ public CursedGenerator(Scp079Generator generator)
{
Base = generator;
}

public GameObject GameObject => Base.gameObject;

public bool ReadyToActivate => Base.ActivationReady;

public bool Opened
{
get => Base.HasFlag(Base.Network_flags, Scp079Generator.GeneratorFlags.Open);
set => Base.ServerSetFlag(Scp079Generator.GeneratorFlags.Unlocked, value);
}

public bool IsUnlocked
{
get => Base.HasFlag(Base.Network_flags, Scp079Generator.GeneratorFlags.Unlocked);
set => Base.ServerSetFlag(Scp079Generator.GeneratorFlags.Unlocked, value);
}

public bool IsEngaged
{
Expand Down Expand Up @@ -41,6 +57,8 @@ public Quaternion Rotation
get => Base.transform.rotation;
set => Base.transform.rotation = value;
}

public Transform Transform => Base.transform;

public Vector3 Scale
{
Expand All @@ -54,8 +72,17 @@ public KeycardPermissions RequiredPermissions
set => Base._requiredPermission = value;
}

public void SetPermission(KeycardPermissions keycard, bool isEnabled)
{
KeycardPermissions permission = keycard;
if (isEnabled)
Base._requiredPermission |= permission;
else
Base._requiredPermission &= ~permission;
}

public NetworkIdentity NetworkIdentity => Base.netIdentity;

public override string ToString() =>
$"{nameof(CursedGenerator)}: Engaged {IsEngaged} | Activating: {IsActivating} | Remaining Time: {RemainingTime} | DropdownSpeed: {DropdownSpeed} | Position: {Position} | Rotation: {Rotation} | Scale: {Scale} | Permissions: {RequiredPermissions} | NetId: {NetworkIdentity.netId}";
$"{nameof(CursedGenerator)}: Opened: {Opened} | Engaged {IsEngaged} | Activating: {IsActivating} | Remaining Time: {RemainingTime} | DropdownSpeed: {DropdownSpeed} | Position: {Position} | Rotation: {Rotation} | Scale: {Scale} | Permissions: {RequiredPermissions} | NetId: {NetworkIdentity.netId}";
}