mirror of
https://github.com/corvax-team/ss14-wl.git
synced 2026-02-14 19:29:57 +01:00
* Initial resources commit * Initial code commit * Added additional resources * Continuing to build holopad and telephone systems * Added hologram shader * Added hologram system and entity * Holo calls now have a hologram of the user appear on them * Initial implementation of holopads transmitting nearby chatter * Added support for linking across multiple telephones/holopads/entities * Fixed a bunch of bugs * Tried simplifying holopad entity dependence, added support for mid-call user switching * Replaced PVS expansion with manually networked sprite states * Adjusted volume of ring tone * Added machine board * Minor features and tweaks * Resolving merge conflict * Recommit audio attributions * Telephone chat adjustments * Added support for AI interactions with holopads * Building the holopad UI * Holopad UI finished * Further UI tweaks * Station AI can hear local chatter when being projected from a holopad * Minor bug fixes * Added wire panels to holopads * Basic broadcasting * Start of emergency broadcasting code * Fixing issues with broadcasting * More work on emergency broadcasting * Updated holopad visuals * Added cooldown text to emergency broadcast and control lock out screen * Code clean up * Fixed issue with timing * Broadcasting now requires command access * Fixed some bugs * Added multiple holopad prototypes with different ranges * The AI no longer requires power to interact with holopads * Fixed some additional issues * Addressing more issues * Added emote support for holograms * Changed the broadcast lockout durations to their proper values * Added AI vision wire to holopads * Bug fixes * AI vision and interaction wires can be added to the same wire panel * Fixed error * More bug fixes * Fixed test fail * Embellished the emergency call lock out window * Holopads play borg sounds when speaking * Borg and AI names are listed as the caller ID on the holopad * Borg chassis can now be seen on holopad holograms * Holopad returns to a machine frame when badly damaged * Clarified some text * Fix merge conflict * Fixed merge conflict * Fixing merge conflict * Fixing merge conflict * Fixing merge conflict * Offset menu on open * AI can alt click on holopads to activate the projector * Bug fixes for intellicard interactions * Fixed speech issue with intellicards * The UI automatically opens for the AI when it alt-clicks on the holopad * Simplified shader math * Telephones will auto hang up 60 seconds after the last person on a call stops speaking * Added better support for AI requests when multiple AI cores are on the station * The call controls pop up for the AI when they accept a summons from a holopad * Compatibility mode fix for the hologram shader * Further shader fixes for compatibility mode * File clean up * More cleaning up * Removed access requirements from quantum holopads so they can used by nukies * The title of the holopad window now reflects the name of the device * Linked telephones will lose their connection if both move out of range of each other
105 lines
2.8 KiB
C#
105 lines
2.8 KiB
C#
using Robust.Shared.GameStates;
|
|
using Robust.Shared.Serialization;
|
|
|
|
namespace Content.Shared.Holopad;
|
|
|
|
/// <summary>
|
|
/// Holds data pertaining to entities that are using holopads
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// This component is added and removed automatically from entities
|
|
/// </remarks>
|
|
[RegisterComponent, NetworkedComponent]
|
|
[Access(typeof(SharedHolopadSystem))]
|
|
public sealed partial class HolopadUserComponent : Component
|
|
{
|
|
/// <summary>
|
|
/// A list of holopads that the user is interacting with
|
|
/// </summary>
|
|
[ViewVariables]
|
|
public HashSet<Entity<HolopadComponent>> LinkedHolopads = new();
|
|
}
|
|
|
|
/// <summary>
|
|
/// A networked event raised when the visual state of a hologram is being updated
|
|
/// </summary>
|
|
[Serializable, NetSerializable]
|
|
public sealed class HolopadHologramVisualsUpdateEvent : EntityEventArgs
|
|
{
|
|
/// <summary>
|
|
/// The hologram being updated
|
|
/// </summary>
|
|
public readonly NetEntity Hologram;
|
|
|
|
/// <summary>
|
|
/// The target the hologram is copying
|
|
/// </summary>
|
|
public readonly NetEntity? Target;
|
|
|
|
public HolopadHologramVisualsUpdateEvent(NetEntity hologram, NetEntity? target = null)
|
|
{
|
|
Hologram = hologram;
|
|
Target = target;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// A networked event raised when the visual state of a hologram is being updated
|
|
/// </summary>
|
|
[Serializable, NetSerializable]
|
|
public sealed class HolopadUserTypingChangedEvent : EntityEventArgs
|
|
{
|
|
/// <summary>
|
|
/// The hologram being updated
|
|
/// </summary>
|
|
public readonly NetEntity User;
|
|
|
|
/// <summary>
|
|
/// The typing indicator state
|
|
/// </summary>
|
|
public readonly bool IsTyping;
|
|
|
|
public HolopadUserTypingChangedEvent(NetEntity user, bool isTyping)
|
|
{
|
|
User = user;
|
|
IsTyping = isTyping;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// A networked event raised by the server to request the current visual state of a target player entity
|
|
/// </summary>
|
|
[Serializable, NetSerializable]
|
|
public sealed class PlayerSpriteStateRequest : EntityEventArgs
|
|
{
|
|
/// <summary>
|
|
/// The player entity in question
|
|
/// </summary>
|
|
public readonly NetEntity TargetPlayer;
|
|
|
|
public PlayerSpriteStateRequest(NetEntity targetPlayer)
|
|
{
|
|
TargetPlayer = targetPlayer;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// The client's response to a <see cref="PlayerSpriteStateRequest"/>
|
|
/// </summary>
|
|
[Serializable, NetSerializable]
|
|
public sealed class PlayerSpriteStateMessage : EntityEventArgs
|
|
{
|
|
public readonly NetEntity SpriteEntity;
|
|
|
|
/// <summary>
|
|
/// Data needed to reconstruct the player's sprite component layers
|
|
/// </summary>
|
|
public readonly PrototypeLayerData[]? SpriteLayerData;
|
|
|
|
public PlayerSpriteStateMessage(NetEntity spriteEntity, PrototypeLayerData[]? spriteLayerData = null)
|
|
{
|
|
SpriteEntity = spriteEntity;
|
|
SpriteLayerData = spriteLayerData;
|
|
}
|
|
}
|