Skip to content

Commit

Permalink
Merge branch 'senior-loadout-fix' of https://github.com/AdventureTime…
Browse files Browse the repository at this point in the history
…SS14/space_station_ADT into senior-loadout-fix
  • Loading branch information
jungarikjan committed Dec 10, 2024
2 parents 40c6264 + 7a5cbbb commit a4f56c6
Show file tree
Hide file tree
Showing 701 changed files with 179,646 additions and 819 deletions.
16 changes: 10 additions & 6 deletions Content.Client/ADT/Bark/Systems/HumanoidProfileEditor.Barks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public sealed partial class HumanoidProfileEditor
{
private List<BarkPrototype> _barkList = new();

private void InitializeBarks()
private void InitializeBarks() // У меня случился небольшой затуп. Оно барки в обход кнопки сохраняет, но хотя бы работает ы
{
_barkList = _prototypeManager
.EnumeratePrototypes<BarkPrototype>()
Expand All @@ -20,6 +20,7 @@ private void InitializeBarks()
{
BarkProtoButton.SelectId(args.Id);
SetBarkProto(_barkList[args.Id].ID);
UpdateSaveButton();
};

PitchEdit.OnTextChanged += args =>
Expand All @@ -28,6 +29,7 @@ private void InitializeBarks()
return;

SetBarkPitch(newPitch);
UpdateSaveButton();
};

DelayVariationMinEdit.OnTextChanged += args =>
Expand All @@ -36,6 +38,7 @@ private void InitializeBarks()
return;

SetBarkMinVariation(newVar);
UpdateSaveButton();
};

DelayVariationMaxEdit.OnTextChanged += args =>
Expand All @@ -44,6 +47,7 @@ private void InitializeBarks()
return;

SetBarkMaxVariation(newVar);
UpdateSaveButton();
};

BarkPlayButton.OnPressed += _ => PlayPreviewBark();
Expand All @@ -56,9 +60,9 @@ private void UpdateBarkVoicesControls()

BarkProtoButton.Clear();

PitchEdit.Text = Profile.BarkPitch.ToString();
DelayVariationMinEdit.Text = Profile.BarkLowVar.ToString();
DelayVariationMaxEdit.Text = Profile.BarkHighVar.ToString();
PitchEdit.Text = Profile.Bark.Pitch.ToString();
DelayVariationMinEdit.Text = Profile.Bark.MinVar.ToString();
DelayVariationMaxEdit.Text = Profile.Bark.MaxVar.ToString();

var firstVoiceChoiceId = 1;
for (var i = 0; i < _barkList.Count; i++)
Expand All @@ -72,7 +76,7 @@ private void UpdateBarkVoicesControls()
firstVoiceChoiceId = i;
}

var voiceChoiceId = _barkList.FindIndex(x => x.ID == Profile.BarkProto);
var voiceChoiceId = _barkList.FindIndex(x => x.ID == Profile.Bark.Proto);
if (!BarkProtoButton.TrySelectId(voiceChoiceId) &&
BarkProtoButton.TrySelectId(firstVoiceChoiceId))
{
Expand All @@ -85,6 +89,6 @@ private void PlayPreviewBark()
if (Profile is null)
return;

_entManager.System<SpeechBarksSystem>().PlayDataPrewiew(Profile.BarkProto, Profile.BarkPitch, Profile.BarkLowVar, Profile.BarkHighVar);
_entManager.System<SpeechBarksSystem>().PlayDataPrewiew(Profile.Bark.Proto, Profile.Bark.Pitch, Profile.Bark.MinVar, Profile.Bark.MaxVar);
}
}
72 changes: 72 additions & 0 deletions Content.Client/ADT/BookPrinter/BookPrinterBoundUserInterface.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
using Content.Shared.ADT.BookPrinter;
using Content.Shared.Containers.ItemSlots;
using JetBrains.Annotations;

namespace Content.Client.ADT.BookPrinter
{
[UsedImplicitly]
public sealed class BookPrinterBoundUserInterface : BoundUserInterface
{
[ViewVariables]
private BookPrinterWindow? _window;

[ViewVariables]
private BookPrinterBoundUserInterfaceState? _lastState;

public BookPrinterBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
{
}

protected override void Open()
{
base.Open();

_window = new()
{
Title = EntMan.GetComponent<MetaDataComponent>(Owner).EntityName,
};

_window.EjectButton.OnPressed += _ => SendMessage(new ItemSlotButtonPressedEvent("bookSlot"));
_window.ClearButton.OnPressed += _ => SendMessage(new BookPrinterClearContainerMessage());
_window.UploadButton.OnPressed += _ => SendMessage(new BookPrinterUploadMessage());
_window.CopyPasteButton.OnPressed += _ => SendMessage(new BookPrinterCopyPasteMessage());


_window.OpenCentered();
_window.OnClose += Close;

_window.OnPrintBookButtonPressed += (args, button) => SendMessage(new BookPrinterPrintBookMessage(button.BookEntry));
_window.OnPrintBookButtonMouseEntered += (args, button) =>
{
if (_lastState is not null)
_window.UpdateContainerInfo(_lastState);
};
_window.OnPrintBookButtonMouseExited += (args, button) =>
{
if (_lastState is not null)
_window.UpdateContainerInfo(_lastState);
};
}

protected override void UpdateState(BoundUserInterfaceState state)
{
base.UpdateState(state);

var castState = (BookPrinterBoundUserInterfaceState)state;
_lastState = castState;

_window?.UpdateState(castState);
}

[Obsolete]
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);

if (disposing)
{
_window?.Dispose();
}
}
}
}
45 changes: 45 additions & 0 deletions Content.Client/ADT/BookPrinter/BookPrinterWindow.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<DefaultWindow
xmlns="https://spacestation14.io"
xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
Title="{Loc 'book-printer-title'}"
SetSize="525 475"
MinSize="525 475">
<BoxContainer Orientation="Vertical">
<ScrollContainer HScrollEnabled="False" HorizontalExpand="True" VerticalExpand="True" MinSize="0 250">
<BoxContainer Orientation="Vertical" Name="BooksList" Access="Public">
</BoxContainer>
</ScrollContainer>
<Control MinSize="0 10"/>
<BoxContainer Orientation="Horizontal">
<Label Text="{Loc 'book-printer-window-book-label'}"/>
<Control MinSize="10 0"/>
<Button Name="UploadButton"
Access="Public"
Text="{Loc 'book-printer-window-upload-button'}"
StyleClasses="OpenRight"/>
<Button Name="ClearButton"
Access="Public"
Text="{Loc 'book-printer-window-clear-button'}"
StyleClasses="OpenBoth"/>
<Button Name="CopyPasteButton"
Access="Public"
Text="{Loc 'book-printer-window-copy-button'}"
StyleClasses="OpenBoth"/>
<Button Name="EjectButton"
Access="Public"
Text="{Loc 'book-printer-window-eject-button'}"
StyleClasses="OpenLeft"/>
</BoxContainer>
<Control MinSize="0 10"/>
<PanelContainer SizeFlagsStretchRatio="6" MinSize="0 100">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BackgroundColor="#1b1b1e" />
</PanelContainer.PanelOverride>
<BoxContainer Name="ContainerInfo"
Orientation="Vertical"
HorizontalExpand="True">
<Label Text="{Loc 'book-printer-window-no-book-loaded-text'}"/>
</BoxContainer>
</PanelContainer>
</BoxContainer>
</DefaultWindow>
161 changes: 161 additions & 0 deletions Content.Client/ADT/BookPrinter/BookTerminalWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
using System.Linq;
using System.Numerics;
using Content.Client.Stylesheets;
using Content.Shared.ADT.BookPrinter;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Prototypes;
using static Robust.Client.UserInterface.Controls.BoxContainer;

namespace Content.Client.ADT.BookPrinter
{
[GenerateTypedNameReferences]
public sealed partial class BookPrinterWindow : DefaultWindow
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IEntityManager _entMan = default!;
public event Action<BaseButton.ButtonEventArgs, PrintBookButton>? OnPrintBookButtonPressed;
public event Action<GUIMouseHoverEventArgs, PrintBookButton>? OnPrintBookButtonMouseEntered;
public event Action<GUIMouseHoverEventArgs, PrintBookButton>? OnPrintBookButtonMouseExited;


public BookPrinterWindow()
{
RobustXamlLoader.Load(this);
IoCManager.InjectDependencies(this);
}

public void UpdateState(BoundUserInterfaceState state)
{
var castState = (BookPrinterBoundUserInterfaceState)state;
UpdateContainerInfo(castState);
UpdateBooksList(castState);

CopyPasteButton.Text = Loc.GetString(castState.CopyPaste
? "book-printer-window-paste-button"
: "book-printer-window-copy-button");

UploadButton.Disabled = !castState.RoutineAllowed || castState.WorkProgress is not null;
ClearButton.Disabled = !castState.RoutineAllowed || castState.WorkProgress is not null;
EjectButton.Disabled = castState.BookName is null || castState.WorkProgress is not null;
CopyPasteButton.Disabled = !castState.RoutineAllowed || castState.WorkProgress is not null;
}

public void UpdateBooksList(BoundUserInterfaceState state)
{
var castState = (BookPrinterBoundUserInterfaceState)state;

if (BooksList == null)
return;

BooksList.Children.Clear();

if (castState.BookEntries is null)
return;


foreach (var entry in castState.BookEntries.OrderBy(r => r.Name))
{
var button = new PrintBookButton(entry, CutDescription(entry.Name ?? ""));
button.OnPressed += args => OnPrintBookButtonPressed?.Invoke(args, button);
button.OnMouseEntered += args => OnPrintBookButtonMouseEntered?.Invoke(args, button);
button.OnMouseExited += args => OnPrintBookButtonMouseExited?.Invoke(args, button);
button.Disabled = !castState.RoutineAllowed || castState.WorkProgress is not null;
BooksList.AddChild(button);
}
}

public string CutDescription(string? text)
{
if (text is null)
return "";

if (text.Length <= 47)
return text;

return text.Substring(0, 47) + "...";
}

public void UpdateContainerInfo(BookPrinterBoundUserInterfaceState state)
{
ContainerInfo.Children.Clear();

if (state.WorkProgress is not null)
{
ContainerInfo.Children.Add(new Label { Text = Loc.GetString("book-printer-window-working", ("progress", (int)(100.0f * (1 - state.WorkProgress)))) });
return;
}

if (state.BookName is null)
{
ContainerInfo.Children.Add(new Label { Text = Loc.GetString("book-printer-window-no-book-loaded-text") });
}
else
{

var bookPreview = new SpriteView
{
Scale = new Vector2(2, 2),
OverrideDirection = Direction.South,
VerticalAlignment = VAlignment.Center,
SizeFlagsStretchRatio = 1
};
if (_entMan.TryGetEntity(state.BookEntity, out var bookEntity))
bookPreview.SetEntity(bookEntity);

var bookLabel = new Label
{
Text = $"{CutDescription(state.BookName)}"
};

var bookSublabel = new Label
{
Text = $"{CutDescription(state.BookDescription)}",
StyleClasses = { StyleNano.StyleClassLabelSecondaryColor }
};

var boxInfo = new BoxContainer
{
Orientation = LayoutOrientation.Vertical,
Children = {
new Control { MinSize = new Vector2(0, 10) },
bookLabel,
bookSublabel }
};

ContainerInfo.Children.Add(new BoxContainer
{
Orientation = LayoutOrientation.Horizontal,
Children = { bookPreview, boxInfo }
});

}

if (state.CartridgeCharge is null)
{
ContainerInfo.Children.Add(new Label { Text = Loc.GetString("book-printer-window-no-cartridge-loaded-text"), FontColorOverride = Color.DarkRed });
return;
}
else if (state.CartridgeCharge <= -10.0f)
{
ContainerInfo.Children.Add(new Label { Text = Loc.GetString("book-printer-window-cartridge-empty"), FontColorOverride = Color.DarkRed });
return;
}
ContainerInfo.Children.Add(new Label { Text = Loc.GetString("book-printer-window-cartridge-charge", ("charge", (int)(100 * state.CartridgeCharge))) });
}
}

public sealed class PrintBookButton : Button
{
public SharedBookPrinterEntry BookEntry { get; }

public PrintBookButton(SharedBookPrinterEntry bookEntry, string text)
{
BookEntry = bookEntry;
Text = text;
}
}
}
Loading

0 comments on commit a4f56c6

Please sign in to comment.