From 2d3f68278f374bc5a7ce4c32eabfaaa8483a1ddc Mon Sep 17 00:00:00 2001 From: Lazzi0706 Date: Tue, 4 Mar 2025 11:00:20 +0700 Subject: [PATCH 1/2] Added Shared systems'n'components + modified proto --- .../Component/AttachableComponent.cs | 13 +++++ .../AttachablesContainerComponent.cs | 14 ++++++ .../Systems/AttachablesContainerSystem.cs | 49 +++++++++++++++++++ .../Objects/Weapons/Guns/Rifles/rifles.yml | 30 ++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 Content.Shared/SS220/Attachables/Component/AttachableComponent.cs create mode 100644 Content.Shared/SS220/Attachables/Component/AttachablesContainerComponent.cs create mode 100644 Content.Shared/SS220/Attachables/Systems/AttachablesContainerSystem.cs diff --git a/Content.Shared/SS220/Attachables/Component/AttachableComponent.cs b/Content.Shared/SS220/Attachables/Component/AttachableComponent.cs new file mode 100644 index 000000000000..312dcfb65ed9 --- /dev/null +++ b/Content.Shared/SS220/Attachables/Component/AttachableComponent.cs @@ -0,0 +1,13 @@ + + +namespace Content.Shared.SS220.Attachables; + +public abstract partial class AttachableComponent : Component +{ + [DataField] + public float AttachDelay; + + [DataField] + public float DeattachDelay; + +} diff --git a/Content.Shared/SS220/Attachables/Component/AttachablesContainerComponent.cs b/Content.Shared/SS220/Attachables/Component/AttachablesContainerComponent.cs new file mode 100644 index 000000000000..59c96b0b7084 --- /dev/null +++ b/Content.Shared/SS220/Attachables/Component/AttachablesContainerComponent.cs @@ -0,0 +1,14 @@ + +using Content.Shared.Containers.ItemSlots; +using Robust.Shared.GameStates; + +namespace Content.Shared.SS220.Attachables; + +[RegisterComponent, NetworkedComponent] +public sealed partial class AttachablesContainerComponent : Component +{ + [DataField("slots")] + public Dictionary AllowedSlots = new(); + + public EntityUid? ActiveSlot; +} diff --git a/Content.Shared/SS220/Attachables/Systems/AttachablesContainerSystem.cs b/Content.Shared/SS220/Attachables/Systems/AttachablesContainerSystem.cs new file mode 100644 index 000000000000..d56b5573ec51 --- /dev/null +++ b/Content.Shared/SS220/Attachables/Systems/AttachablesContainerSystem.cs @@ -0,0 +1,49 @@ + +using Content.Shared.Containers.ItemSlots; +using Robust.Shared.Containers; + +namespace Content.Shared.SS220.Attachables.Systems; + +public sealed partial class AttachablesContainerSystem : EntitySystem +{ + [Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!; + [Dependency] private readonly SharedContainerSystem _sharedContainerSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnComponentInit); + SubscribeLocalEvent(OnComponentRemove); + + } + + #region Main component events + + public void OnComponentInit(EntityUid uid, AttachablesContainerComponent component, ComponentInit args) + { + foreach (var (id, slot) in component.AllowedSlots) + { + _itemSlotsSystem.AddItemSlot(uid, id, slot); + // _itemSlotsSystem.SetLock(uid, slot, true); + _sharedContainerSystem.GetContainer(uid, id).OccludesLight = false; + } + } + + public void OnComponentRemove(EntityUid uid, AttachablesContainerComponent component, ComponentRemove args) + { + foreach (var (id, slot) in component.AllowedSlots) + { + _itemSlotsSystem.RemoveItemSlot(uid, slot); + } + } + + #endregion + + #region I dunno + protected void OnAttach() { } + + protected void OnDeattach() { } + + #endregion +} diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml index 37947a7a6609..398891de028d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml @@ -5,6 +5,30 @@ description: A rooty tooty point and shooty. abstract: true components: + #SS220-NewAttachables begin + - type: AttachablesContainer + slots: + attachment_slot_muzzle: + name: Muzzle + whitelist: + tags: + - AttachmentMuzzle + attachment_slot_rail: + name: Rail + whitelist: + tags: + - AttachmentRail + attachment_slot_underbarrel: + name: Underbarrel + whitelist: + tags: + - AttachmentUnderbarrel + attachment_slot_stock: + name: Stock + whitelist: + tags: + - AttachmentStock + #SS220-NewAttachables end - type: EmitSoundOnLand sound: path: /Audio/SS220/Effects/Drop/rifles.ogg @@ -55,6 +79,12 @@ containers: gun_magazine: !type:ContainerSlot gun_chamber: !type:ContainerSlot + #SS220-NewAttachables begin + attachment_slot_muzzle: !type:ContainerSlot + attachment_slot_rail: !type:ContainerSlot + attachment_slot_underbarrel: !type:ContainerSlot + attachment_slot_stock: !type:ContainerSlot + #SS220-NewAttachables end - type: StaticPrice price: 500 From 3e269507a0bc0756897e5fd7119eaa1d6108a86f Mon Sep 17 00:00:00 2001 From: Lazzi0706 Date: Fri, 7 Mar 2025 18:00:18 +0700 Subject: [PATCH 2/2] Clientside things --- Content.Client/Content.Client.csproj | 8 +++++ .../AttachablesContainerBoundUserInterface.cs | 22 ++++++++++++++ .../Attachables/AttachablesContainerMenu.xaml | 6 ++++ .../AttachablesContainerMenu.xaml.cs | 29 +++++++++++++++++++ Content.Shared/Content.Shared.csproj | 4 +++ .../Component/AttachableComponent.cs | 2 ++ .../AttachablesContainerComponent.cs | 10 +++++++ .../Attachables/Events/AttachableEvents.cs | 16 ++++++++++ .../Systems/AttachablesContainerSystem.cs | 26 +++++++++++++++++ .../Entities/Objects/Tools/flashlights.yml | 1 + .../Objects/Weapons/Guns/Rifles/rifles.yml | 12 +++++--- .../Entities/Objects/Weapons/Melee/knife.yml | 1 + .../Prototypes/SS220/Attachables/actions.yml | 8 +++++ Resources/Prototypes/tags.yml | 16 ++++++++++ SpaceStation14.sln | 19 +++--------- 15 files changed, 161 insertions(+), 19 deletions(-) create mode 100644 Content.Client/SS220/Attachables/AttachablesContainerBoundUserInterface.cs create mode 100644 Content.Client/SS220/Attachables/AttachablesContainerMenu.xaml create mode 100644 Content.Client/SS220/Attachables/AttachablesContainerMenu.xaml.cs create mode 100644 Content.Shared/SS220/Attachables/Events/AttachableEvents.cs create mode 100644 Resources/Prototypes/SS220/Attachables/actions.yml diff --git a/Content.Client/Content.Client.csproj b/Content.Client/Content.Client.csproj index 43fd8df2e19a..42ea8f5bc4cc 100644 --- a/Content.Client/Content.Client.csproj +++ b/Content.Client/Content.Client.csproj @@ -25,4 +25,12 @@ + + + + + + MSBuild:Compile + + diff --git a/Content.Client/SS220/Attachables/AttachablesContainerBoundUserInterface.cs b/Content.Client/SS220/Attachables/AttachablesContainerBoundUserInterface.cs new file mode 100644 index 000000000000..6c2e83a7dfa0 --- /dev/null +++ b/Content.Client/SS220/Attachables/AttachablesContainerBoundUserInterface.cs @@ -0,0 +1,22 @@ + +using Robust.Client.UserInterface; + +namespace Content.Client.SS220.Attachables; + +public sealed class AttachablesContainerBoundUserInterface : BoundUserInterface +{ + private AttachablesContainerMenu? _menu; + + public AttachablesContainerBoundUserInterface(EntityUid owner, Enum uiKey) : base (owner, uiKey) + { + IoCManager.InjectDependencies(this); + } + + protected override void Open() + { + base.Open(); + + _menu = this.CreateWindow(); + _menu.SetEntity(Owner); + } +} diff --git a/Content.Client/SS220/Attachables/AttachablesContainerMenu.xaml b/Content.Client/SS220/Attachables/AttachablesContainerMenu.xaml new file mode 100644 index 000000000000..b6283203aa2c --- /dev/null +++ b/Content.Client/SS220/Attachables/AttachablesContainerMenu.xaml @@ -0,0 +1,6 @@ + + diff --git a/Content.Client/SS220/Attachables/AttachablesContainerMenu.xaml.cs b/Content.Client/SS220/Attachables/AttachablesContainerMenu.xaml.cs new file mode 100644 index 000000000000..b4cc1abc4f57 --- /dev/null +++ b/Content.Client/SS220/Attachables/AttachablesContainerMenu.xaml.cs @@ -0,0 +1,29 @@ +using Content.Client.UserInterface.Controls; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; +using System.Numerics; + +namespace Content.Client.SS220.Attachables; + +[GenerateTypedNameReferences] +public sealed partial class AttachablesContainerMenu : RadialMenu +{ + [Dependency] private readonly EntityManager _entityManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + + public EntityUid Entity { get; set; } + + public AttachablesContainerMenu() + { + IoCManager.InjectDependencies(this); + RobustXamlLoader.Load(this); + } + + public void SetEntity(EntityUid ent) + { + Entity = ent; + } +} + +public sealed class AttachablesContainerMenuButton : RadialMenuTextureButtonWithSector { } diff --git a/Content.Shared/Content.Shared.csproj b/Content.Shared/Content.Shared.csproj index 4cca399b28b9..bef3fce48200 100644 --- a/Content.Shared/Content.Shared.csproj +++ b/Content.Shared/Content.Shared.csproj @@ -23,6 +23,10 @@ false + + + + diff --git a/Content.Shared/SS220/Attachables/Component/AttachableComponent.cs b/Content.Shared/SS220/Attachables/Component/AttachableComponent.cs index 312dcfb65ed9..c5e558152373 100644 --- a/Content.Shared/SS220/Attachables/Component/AttachableComponent.cs +++ b/Content.Shared/SS220/Attachables/Component/AttachableComponent.cs @@ -1,5 +1,7 @@ +using Robust.Shared.Prototypes; + namespace Content.Shared.SS220.Attachables; public abstract partial class AttachableComponent : Component diff --git a/Content.Shared/SS220/Attachables/Component/AttachablesContainerComponent.cs b/Content.Shared/SS220/Attachables/Component/AttachablesContainerComponent.cs index 59c96b0b7084..b8626c1d3e0f 100644 --- a/Content.Shared/SS220/Attachables/Component/AttachablesContainerComponent.cs +++ b/Content.Shared/SS220/Attachables/Component/AttachablesContainerComponent.cs @@ -1,6 +1,8 @@ +using Content.Shared.Actions; using Content.Shared.Containers.ItemSlots; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; namespace Content.Shared.SS220.Attachables; @@ -11,4 +13,12 @@ public sealed partial class AttachablesContainerComponent : Component public Dictionary AllowedSlots = new(); public EntityUid? ActiveSlot; + + [DataField] + public EntProtoId ToggleAction = "ActionToggleAttachablesMenu"; + + [DataField] + public EntityUid? ToggleActionEntity; } + +public sealed partial class AttachablesContainerOpenEvent : InstantActionEvent; diff --git a/Content.Shared/SS220/Attachables/Events/AttachableEvents.cs b/Content.Shared/SS220/Attachables/Events/AttachableEvents.cs new file mode 100644 index 000000000000..b0224961f48c --- /dev/null +++ b/Content.Shared/SS220/Attachables/Events/AttachableEvents.cs @@ -0,0 +1,16 @@ + +using Robust.Shared.Serialization; + +namespace Content.Shared.SS220.Attachables.Events; + +[Serializable, NetSerializable] +public sealed class AttachablesContainerMessage : BoundUserInterfaceMessage +{ + public AttachablesContainerMessage(EntityUid owner) {} +} + +[Serializable, NetSerializable] +public enum AttachablesContainerUiKey : byte +{ + Key +} diff --git a/Content.Shared/SS220/Attachables/Systems/AttachablesContainerSystem.cs b/Content.Shared/SS220/Attachables/Systems/AttachablesContainerSystem.cs index d56b5573ec51..38bbc856b301 100644 --- a/Content.Shared/SS220/Attachables/Systems/AttachablesContainerSystem.cs +++ b/Content.Shared/SS220/Attachables/Systems/AttachablesContainerSystem.cs @@ -1,6 +1,8 @@ +using Content.Shared.Actions; using Content.Shared.Containers.ItemSlots; using Robust.Shared.Containers; +using Robust.Shared.Prototypes; namespace Content.Shared.SS220.Attachables.Systems; @@ -8,18 +10,35 @@ public sealed partial class AttachablesContainerSystem : EntitySystem { [Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!; [Dependency] private readonly SharedContainerSystem _sharedContainerSystem = default!; + [Dependency] private readonly ActionContainerSystem _actionContainerSystem = default!; + [Dependency] private readonly SharedUserInterfaceSystem _sharedUserInterfaceSystem = default!; + [Dependency] private readonly SharedActionsSystem _sharedActionsSystem = default!; + + + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnComponentInit); SubscribeLocalEvent(OnComponentRemove); + SubscribeLocalEvent(OnEntInserted); + SubscribeLocalEvent(OnEntRemoved); + } #region Main component events + public void OnMapInit(EntityUid uid, AttachablesContainerComponent component, MapInitEvent args) + { + _actionContainerSystem.EnsureAction(uid, ref component.ToggleActionEntity, component.ToggleAction); + Dirty(uid, component); + } + public void OnComponentInit(EntityUid uid, AttachablesContainerComponent component, ComponentInit args) { foreach (var (id, slot) in component.AllowedSlots) @@ -40,6 +59,13 @@ public void OnComponentRemove(EntityUid uid, AttachablesContainerComponent compo #endregion + #region Messages + + public void OnEntInserted(EntityUid uid, AttachablesContainerComponent component, EntInsertedIntoContainerMessage args) { } + public void OnEntRemoved(EntityUid uid, AttachablesContainerComponent component, EntRemovedFromContainerMessage args) { } + + #endregion + #region I dunno protected void OnAttach() { } diff --git a/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml b/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml index ea362251cfdc..ce20b992f33d 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml @@ -83,6 +83,7 @@ - type: Tag tags: - SecBeltEquip + - AttachmentSlotMuzzle #SS220-NewAttachables - type: ItemSlots slots: cell_slot: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml index 398891de028d..6858574116a6 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml @@ -12,22 +12,26 @@ name: Muzzle whitelist: tags: - - AttachmentMuzzle + - AttachmentSlotMuzzle attachment_slot_rail: name: Rail whitelist: tags: - - AttachmentRail + - AttachmentSlotRail attachment_slot_underbarrel: name: Underbarrel whitelist: tags: - - AttachmentUnderbarrel + - AttachmentSlotUnder attachment_slot_stock: name: Stock whitelist: tags: - - AttachmentStock + - AttachmentSlotStock + - type: UserInterface + interfaces: + enum.AttachablesContainerUiKey.Key: + type: AttachablesContainerBoundUserInterface #SS220-NewAttachables end - type: EmitSoundOnLand sound: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml index 12d27f4339e8..83a4c8418a36 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml @@ -89,6 +89,7 @@ - type: Tag tags: - CombatKnife + - AttachmentSlotMuzzle #SS220-NewAttachables - Knife - type: Sprite sprite: Objects/Weapons/Melee/combat_knife.rsi diff --git a/Resources/Prototypes/SS220/Attachables/actions.yml b/Resources/Prototypes/SS220/Attachables/actions.yml new file mode 100644 index 000000000000..c6395f098ed2 --- /dev/null +++ b/Resources/Prototypes/SS220/Attachables/actions.yml @@ -0,0 +1,8 @@ +- type: entity + id: ActionToggleAttachablesMenu + name: Idk + components: + - type: InstantAction + itemIconStyle: BigItem + event: !type:AttachablesContainerOpenEvent + useDelay: 0.5 diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 139ab0a9c92e..37be4cda7e1f 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -33,6 +33,22 @@ - type: Tag id: ATVKeys +#SS220-NewAttachables begin + +- type: Tag + id: AttachmentSlotMuzzle + +- type: Tag + id: AttachmentSlotRail + +- type: Tag + id: AttachmentSlotStock + +- type: Tag + id: AttachmentSlotUnder + +#SS220-NewAttachables end + - type: Tag id: Balloon diff --git a/SpaceStation14.sln b/SpaceStation14.sln index 0e00fe5b12ff..56a24c820cca 100644 --- a/SpaceStation14.sln +++ b/SpaceStation14.sln @@ -175,9 +175,7 @@ Global {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|Any CPU.Build.0 = Tools|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.Build.0 = Debug|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU - {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.Tools|Any CPU.ActiveCfg = Tools|Any CPU @@ -215,9 +213,7 @@ Global {93F23A82-00C5-4572-964E-E7C9457726D4}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {93F23A82-00C5-4572-964E-E7C9457726D4}.Tools|Any CPU.Build.0 = Tools|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|Any CPU.Build.0 = Debug|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU - {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.ActiveCfg = Release|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.Build.0 = Release|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|Any CPU.ActiveCfg = Tools|Any CPU @@ -231,9 +227,7 @@ Global {0529F740-0000-0000-0000-000000000000}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {0529F740-0000-0000-0000-000000000000}.Tools|Any CPU.Build.0 = Tools|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Debug|Any CPU.Build.0 = Debug|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU - {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Release|Any CPU.ActiveCfg = Release|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Release|Any CPU.Build.0 = Release|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Tools|Any CPU.ActiveCfg = Tools|Any CPU @@ -329,7 +323,6 @@ Global {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU - {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Release|Any CPU.ActiveCfg = Release|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Release|Any CPU.Build.0 = Release|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Tools|Any CPU.ActiveCfg = Tools|Any CPU @@ -409,7 +402,6 @@ Global {A493616C-338D-47B7-8072-A7F14D034D0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.Debug|Any CPU.Build.0 = Debug|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU - {A493616C-338D-47B7-8072-A7F14D034D0B}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.Release|Any CPU.ActiveCfg = Release|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.Release|Any CPU.Build.0 = Release|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.Tools|Any CPU.ActiveCfg = Tools|Any CPU @@ -431,15 +423,12 @@ Global {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Tools|Any CPU.ActiveCfg = Debug|Any CPU {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Tools|Any CPU.Build.0 = Debug|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Debug|Any CPU.Build.0 = Debug|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU - {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.ActiveCfg = Release|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.Build.0 = Release|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Tools|Any CPU.ActiveCfg = Debug|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Tools|Any CPU.Build.0 = Debug|Any CPU {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Debug|Any CPU.Build.0 = Debug|Any CPU {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -471,21 +460,21 @@ Global {41B450C0-A361-4CD7-8121-7072B8995CFC} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {7B9472D3-79D4-48D1-9B22-BCDE518FE842} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {1FAE651D-29D8-437A-9864-47CE0D180016} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} + {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA} = {7844DA69-B0F0-49FB-A05E-ECA37372277A} {8922428F-17C3-47A7-BFE9-570DEB2464DA} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {16F7DE32-0186-44B9-9345-0C20D1BF2422} = {AFF53804-115F-4E67-B81F-26265EA27880} {AFF53804-115F-4E67-B81F-26265EA27880} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {23F09C45-950E-4DB7-A465-E937450FF008} = {AFF53804-115F-4E67-B81F-26265EA27880} {440426C1-8DCA-43F6-967F-94439B8DAF47} = {AFF53804-115F-4E67-B81F-26265EA27880} + {88B0FC0F-7209-40E2-AF16-EB90AF727C5B} = {7844DA69-B0F0-49FB-A05E-ECA37372277A} {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {8A21C7CA-2EB8-40E5-8043-33582C06D139} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {952AAF2A-DF63-4A7D-8094-3453893EBA80} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {A965CB3B-FD31-44AF-8872-85ABA436098D} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} - {7844DA69-B0F0-49FB-A05E-ECA37372277A} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} - {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA} = {7844DA69-B0F0-49FB-A05E-ECA37372277A} - {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2} = {7844DA69-B0F0-49FB-A05E-ECA37372277A} {07CA34A1-1D37-4771-A2E3-495A1044AE0B} = {7844DA69-B0F0-49FB-A05E-ECA37372277A} - {88B0FC0F-7209-40E2-AF16-EB90AF727C5B} = {7844DA69-B0F0-49FB-A05E-ECA37372277A} + {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2} = {7844DA69-B0F0-49FB-A05E-ECA37372277A} {83F510FE-9B50-4D96-AFAB-CC13998D6AFE} = {7844DA69-B0F0-49FB-A05E-ECA37372277A} + {7844DA69-B0F0-49FB-A05E-ECA37372277A} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {5C05B9B4-6AFE-4884-AA6A-5A26C0FFF2F6} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution