Chameleon controller implant (Clothing fast switch) (#33887)
* Add the chameleon controller implant * address the issues (Git please dont kill me) * Address the review and fix some merge conflicts! * Cleanup * Add use delay * Silly mistakes * Making a PR at 2 am: Gone wrong * Predict use delay and disable the buttons until you can choose another * First phase custom clothing * Better system, now relays to agent id and mindshield. Chameleon loadouts are a lot better to work with as well * Address the review! No more evil goto * Slams way is better I should have read more closely xD * Some of the jobs * Add to Cargo, CentComm, Service, Passenger, Ninja, Cluwne, Wizard + Minor changes to existing; Add chameleon to bandanas, medals, jugsuits and HUDs * Add everything else * Fix test * Job name * This looks better * Add department organization * Minor cleanup * Added some mindshields * Remove redudent comment and change funcion name to be clearer * Fix cluwne outfit * fix merge conflicts --------- Co-authored-by: SlamBamActionman <slambamactionman@gmail.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Preferences.Loadouts;
|
||||
using Content.Shared.Roles;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Implants;
|
||||
|
||||
/// <summary>
|
||||
/// Will allow anyone implanted with the implant to have more control over their chameleon clothing and items.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class ChameleonControllerImplantComponent : Component;
|
||||
|
||||
/// <summary>
|
||||
/// This is sent when someone clicks on the hud icon and will open the menu.
|
||||
/// </summary>
|
||||
public sealed partial class ChameleonControllerOpenMenuEvent : InstantActionEvent;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum ChameleonControllerKey : byte
|
||||
{
|
||||
Key,
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class ChameleonControllerBuiState : BoundUserInterfaceState;
|
||||
|
||||
/// <summary>
|
||||
/// Triggered when the user clicks on a job in the menu.
|
||||
/// </summary>
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class ChameleonControllerSelectedOutfitMessage(ProtoId<ChameleonOutfitPrototype> selectedOutfit) : BoundUserInterfaceMessage
|
||||
{
|
||||
public readonly ProtoId<ChameleonOutfitPrototype> SelectedChameleonOutfit = selectedOutfit;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This event is raised on clothing when the chameleon controller wants it to change sprite based off selecting an
|
||||
/// outfit.
|
||||
/// </summary>
|
||||
/// <param name="ChameleonOutfit">The outfit being switched to.</param>
|
||||
/// <param name="CustomRoleLoadout">The users custom loadout for the chameleon outfits job.</param>
|
||||
/// <param name="DefaultRoleLoadout">The default loadout for the chameleon outfits job.</param>
|
||||
/// <param name="JobStartingGearPrototype">The starting gear of the chameleon outfits job.</param>
|
||||
[ByRefEvent]
|
||||
public record struct ChameleonControllerOutfitSelectedEvent(
|
||||
ChameleonOutfitPrototype ChameleonOutfit,
|
||||
RoleLoadout? CustomRoleLoadout,
|
||||
RoleLoadout? DefaultRoleLoadout,
|
||||
StartingGearPrototype? JobStartingGearPrototype,
|
||||
StartingGearPrototype? StartingGearPrototype
|
||||
) : IInventoryRelayEvent
|
||||
{
|
||||
SlotFlags IInventoryRelayEvent.TargetSlots => SlotFlags.WITHOUT_POCKET;
|
||||
}
|
||||
Reference in New Issue
Block a user