-
Notifications
You must be signed in to change notification settings - Fork 360
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
the shiny new toy that breaks everything else
- Loading branch information
Showing
34 changed files
with
1,951 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
48 changes: 48 additions & 0 deletions
48
Content.Client/DeltaV/CartridgeLoader/Cartridges/NanoChatEntry.xaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<BoxContainer | ||
xmlns="https://spacestation14.io" | ||
xmlns:graphics="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client" | ||
HorizontalExpand="True"> | ||
<Button Name="ChatButton" | ||
StyleClasses="ButtonSquare" | ||
HorizontalExpand="True" | ||
MaxSize="137 64" | ||
Margin="0 1"> | ||
<BoxContainer Orientation="Horizontal" | ||
HorizontalExpand="True" | ||
VerticalExpand="True" | ||
MinWidth="132" | ||
Margin="6 4" | ||
VerticalAlignment="Center"> | ||
<!-- Unread indicator dot --> | ||
<PanelContainer Name="UnreadIndicator" | ||
MinSize="8 8" | ||
MaxSize="8 8" | ||
VerticalAlignment="Center" | ||
Margin="0 0 6 0"> | ||
<PanelContainer.PanelOverride> | ||
<graphics:StyleBoxFlat | ||
BackgroundColor="#17c622" | ||
BorderColor="#0f7a15" /> | ||
</PanelContainer.PanelOverride> | ||
</PanelContainer> | ||
|
||
<!-- Text container --> | ||
<BoxContainer Orientation="Vertical" | ||
HorizontalExpand="True" | ||
VerticalExpand="True" | ||
VerticalAlignment="Center"> | ||
<RichTextLabel Name="NameLabel" | ||
StyleClasses="LabelHeading" | ||
HorizontalExpand="True" | ||
HorizontalAlignment="Center" | ||
VerticalAlignment="Center" | ||
Margin="0 -2 0 0" /> | ||
<Label Name="JobLabel" | ||
StyleClasses="LabelSubText" | ||
HorizontalExpand="True" | ||
ClipText="False" | ||
HorizontalAlignment="Center" /> | ||
</BoxContainer> | ||
</BoxContainer> | ||
</Button> | ||
</BoxContainer> |
39 changes: 39 additions & 0 deletions
39
Content.Client/DeltaV/CartridgeLoader/Cartridges/NanoChatEntry.xaml.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
using Content.Shared.DeltaV.CartridgeLoader.Cartridges; | ||
using Robust.Client.AutoGenerated; | ||
using Robust.Client.UserInterface.Controls; | ||
using Robust.Client.UserInterface.XAML; | ||
|
||
namespace Content.Client.DeltaV.CartridgeLoader.Cartridges; | ||
|
||
[GenerateTypedNameReferences] | ||
public sealed partial class NanoChatEntry : BoxContainer | ||
{ | ||
public event Action<uint>? OnPressed; | ||
private uint _number; | ||
private Action<EventArgs>? _pressHandler; | ||
|
||
public NanoChatEntry() | ||
{ | ||
RobustXamlLoader.Load(this); | ||
} | ||
|
||
public void SetRecipient(NanoChatRecipient recipient, uint number, bool isSelected) | ||
{ | ||
// Remove old handler if it exists | ||
if (_pressHandler != null) | ||
ChatButton.OnPressed -= _pressHandler; | ||
|
||
_number = number; | ||
|
||
// Create and store new handler | ||
_pressHandler = _ => OnPressed?.Invoke(_number); | ||
ChatButton.OnPressed += _pressHandler; | ||
|
||
NameLabel.Text = recipient.Name; | ||
JobLabel.Text = recipient.JobTitle ?? ""; | ||
JobLabel.Visible = !string.IsNullOrEmpty(recipient.JobTitle); | ||
UnreadIndicator.Visible = recipient.HasUnread; | ||
|
||
ChatButton.ModulateSelfOverride = isSelected ? Color.FromHex("#173717") : null; | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
Content.Client/DeltaV/CartridgeLoader/Cartridges/NanoChatLogEntry.xaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
<BoxContainer xmlns="https://spacestation14.io" | ||
xmlns:customControls="clr-namespace:Content.Client.Administration.UI.CustomControls" | ||
Margin="4" | ||
Orientation="Vertical"> | ||
<BoxContainer Orientation="Horizontal"> | ||
<Label Name="NumberLabel" | ||
Align="Right" | ||
SetWidth="26" | ||
ClipText="True" /> | ||
<Label Name="TimeLabel" | ||
Align="Center" | ||
SetWidth="100" | ||
ClipText="True" /> | ||
<Label Name="MessageLabel" | ||
Align="Left" | ||
SetWidth="390" | ||
ClipText="True" /> | ||
</BoxContainer> | ||
<customControls:HSeparator Margin="0 5 0 5" /> | ||
</BoxContainer> |
17 changes: 17 additions & 0 deletions
17
Content.Client/DeltaV/CartridgeLoader/Cartridges/NanoChatLogEntry.xaml.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
using Robust.Client.AutoGenerated; | ||
using Robust.Client.UserInterface.Controls; | ||
using Robust.Client.UserInterface.XAML; | ||
|
||
namespace Content.Client.DeltaV.CartridgeLoader.Cartridges; | ||
|
||
[GenerateTypedNameReferences] | ||
public sealed partial class NanoChatLogEntry : BoxContainer | ||
{ | ||
public NanoChatLogEntry(int number, string time, string message) | ||
{ | ||
RobustXamlLoader.Load(this); | ||
NumberLabel.Text = number.ToString(); | ||
TimeLabel.Text = time; | ||
MessageLabel.Text = message; | ||
} | ||
} |
55 changes: 55 additions & 0 deletions
55
Content.Client/DeltaV/CartridgeLoader/Cartridges/NanoChatMessageBubble.xaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
<cartridges:NanoChatMessageBubble | ||
xmlns="https://spacestation14.io" | ||
xmlns:cartridges="clr-namespace:Content.Client.DeltaV.CartridgeLoader.Cartridges" | ||
xmlns:graphics="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client" | ||
HorizontalExpand="True"> | ||
|
||
<BoxContainer Name="MessageContainer" | ||
Orientation="Horizontal" | ||
HorizontalExpand="True"> | ||
<!-- Left spacer for other's messages --> | ||
<Control Name="LeftSpacer" | ||
MinSize="12 0" /> | ||
|
||
<!-- Message panel --> | ||
<BoxContainer Name="MessageBox" | ||
Orientation="Vertical" | ||
MaxWidth="320" | ||
HorizontalExpand="True"> | ||
<PanelContainer Name="MessagePanel" | ||
MaxWidth="320" | ||
HorizontalExpand="True"> | ||
<PanelContainer.PanelOverride> | ||
<graphics:StyleBoxFlat | ||
ContentMarginLeftOverride="10" | ||
ContentMarginRightOverride="10" | ||
ContentMarginTopOverride="6" | ||
ContentMarginBottomOverride="6" | ||
BorderThickness="1"> | ||
<!-- Colors set in code based on message sender --> | ||
</graphics:StyleBoxFlat> | ||
</PanelContainer.PanelOverride> | ||
|
||
<RichTextLabel Name="MessageText" | ||
HorizontalExpand="True" /> | ||
</PanelContainer> | ||
|
||
<!-- Delivery failed text --> | ||
<Label Name="DeliveryFailedLabel" | ||
Text="{Loc nano-chat-delivery-failed}" | ||
StyleClasses="LabelSmall" | ||
HorizontalExpand="True" | ||
HorizontalAlignment="Right" | ||
Margin="10 2 10 0" | ||
Visible="False" /> | ||
</BoxContainer> | ||
|
||
<!-- Right spacer for own messages --> | ||
<Control Name="RightSpacer" | ||
MinSize="12 0" /> | ||
|
||
<!-- Flexible space for alignment --> | ||
<Control Name="FlexSpace" | ||
HorizontalExpand="True" /> | ||
</BoxContainer> | ||
</cartridges:NanoChatMessageBubble> |
62 changes: 62 additions & 0 deletions
62
Content.Client/DeltaV/CartridgeLoader/Cartridges/NanoChatMessageBubble.xaml.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
using Content.Shared.DeltaV.CartridgeLoader.Cartridges; | ||
using Robust.Client.AutoGenerated; | ||
using Robust.Client.Graphics; | ||
using Robust.Client.UserInterface.Controls; | ||
using Robust.Client.UserInterface.XAML; | ||
|
||
namespace Content.Client.DeltaV.CartridgeLoader.Cartridges; | ||
|
||
[GenerateTypedNameReferences] | ||
public sealed partial class NanoChatMessageBubble : BoxContainer | ||
{ | ||
public static readonly Color OwnMessageColor = Color.FromHex("#173717d9"); // Dark green | ||
public static readonly Color OtherMessageColor = Color.FromHex("#252525d9"); // Dark gray | ||
public static readonly Color BorderColor = Color.FromHex("#40404066"); // Subtle border | ||
public static readonly Color TextColor = Color.FromHex("#dcdcdc"); // Slightly softened white | ||
public static readonly Color ErrorColor = Color.FromHex("#cc3333"); // Red | ||
|
||
public NanoChatMessageBubble() | ||
{ | ||
RobustXamlLoader.Load(this); | ||
} | ||
|
||
public void SetMessage(NanoChatMessage message, bool isOwnMessage) | ||
{ | ||
if (MessagePanel.PanelOverride is not StyleBoxFlat) | ||
return; | ||
|
||
// Configure message appearance | ||
var style = (StyleBoxFlat)MessagePanel.PanelOverride; | ||
style.BackgroundColor = isOwnMessage ? OwnMessageColor : OtherMessageColor; | ||
style.BorderColor = BorderColor; | ||
|
||
// Set message content | ||
MessageText.Text = message.Content; | ||
MessageText.Modulate = TextColor; | ||
|
||
// Show delivery failed text if needed (only for own messages) | ||
DeliveryFailedLabel.Visible = isOwnMessage && message.DeliveryFailed; | ||
if (DeliveryFailedLabel.Visible) | ||
DeliveryFailedLabel.Modulate = ErrorColor; | ||
|
||
// For own messages: FlexSpace -> MessagePanel -> RightSpacer | ||
// For other messages: LeftSpacer -> MessagePanel -> FlexSpace | ||
MessageContainer.RemoveAllChildren(); | ||
|
||
// fuuuuuck | ||
MessageBox.Parent?.RemoveChild(MessageBox); | ||
|
||
if (isOwnMessage) | ||
{ | ||
MessageContainer.AddChild(FlexSpace); | ||
MessageContainer.AddChild(MessageBox); | ||
MessageContainer.AddChild(RightSpacer); | ||
} | ||
else | ||
{ | ||
MessageContainer.AddChild(LeftSpacer); | ||
MessageContainer.AddChild(MessageBox); | ||
MessageContainer.AddChild(FlexSpace); | ||
} | ||
} | ||
} |
43 changes: 43 additions & 0 deletions
43
Content.Client/DeltaV/CartridgeLoader/Cartridges/NanoChatUi.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
using Content.Client.UserInterface.Fragments; | ||
using Content.Shared.CartridgeLoader; | ||
using Content.Shared.DeltaV.CartridgeLoader.Cartridges; | ||
using Robust.Client.UserInterface; | ||
|
||
namespace Content.Client.DeltaV.CartridgeLoader.Cartridges; | ||
|
||
public sealed partial class NanoChatUi : UIFragment | ||
{ | ||
private NanoChatUiFragment? _fragment; | ||
|
||
public override Control GetUIFragmentRoot() | ||
{ | ||
return _fragment!; | ||
} | ||
|
||
public override void Setup(BoundUserInterface userInterface, EntityUid? fragmentOwner) | ||
{ | ||
_fragment = new NanoChatUiFragment(); | ||
|
||
_fragment.OnMessageSent += (type, number, content, job) => | ||
{ | ||
SendNanoChatUiMessage(type, number, content, job, userInterface); | ||
}; | ||
} | ||
|
||
public override void UpdateState(BoundUserInterfaceState state) | ||
{ | ||
if (state is NanoChatUiState cast) | ||
_fragment?.UpdateState(cast); | ||
} | ||
|
||
private static void SendNanoChatUiMessage(NanoChatUiMessageType type, | ||
uint? number, | ||
string? content, | ||
string? job, | ||
BoundUserInterface userInterface) | ||
{ | ||
var nanoChatMessage = new NanoChatUiMessageEvent(type, number, content, job); | ||
var message = new CartridgeUiMessage(nanoChatMessage); | ||
userInterface.SendMessage(message); | ||
} | ||
} |
Oops, something went wrong.