- add: new lobby and ui tweaks. (#7)

* base

* arrow pointer for buttons

* some progress for text buttons, need cleaning

* fixed observe button, remove fraction

* just for now

* ui tweaks

* more ui tweaks

* feat: ченджлог в лобби

---------

Co-authored-by: Remuchi <RemuchiOfficial@gmail.com>
This commit is contained in:
rhailrake
2024-01-31 12:54:38 +00:00
committed by GitHub
parent 7c6beaa70f
commit 7872502bf8
97 changed files with 1187 additions and 339 deletions

View File

@@ -22,7 +22,7 @@ public sealed class AccessOverlay : Overlay
_lookup = lookup; _lookup = lookup;
_xform = xform; _xform = xform;
_font = cache.GetFont("/Fonts/NotoSans/NotoSans-Regular.ttf", 12); _font = cache.GetFont("/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf", 12);
} }
protected override void Draw(in OverlayDrawArgs args) protected override void Draw(in OverlayDrawArgs args)

View File

@@ -24,7 +24,7 @@ namespace Content.Client.Administration
_eyeManager = eyeManager; _eyeManager = eyeManager;
_entityLookup = entityLookup; _entityLookup = entityLookup;
ZIndex = 200; ZIndex = 200;
_font = new VectorFont(resourceCache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10); _font = new VectorFont(resourceCache.GetResource<FontResource>("/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf"), 10);
} }
public override OverlaySpace Space => OverlaySpace.ScreenSpace; public override OverlaySpace Space => OverlaySpace.ScreenSpace;

View File

@@ -7,7 +7,7 @@ namespace Content.Client.Administration.UI.CustomControls;
public sealed class HSeparator : Control public sealed class HSeparator : Control
{ {
private static readonly Color SeparatorColor = Color.FromHex("#3D4059"); private static readonly Color SeparatorColor = Color.FromHex("#191919");
public HSeparator(Color color) public HSeparator(Color color)
{ {

View File

@@ -42,7 +42,7 @@ namespace Content.Client.Administration.UI.CustomControls
PopulateList(_adminSystem.PlayerList); PopulateList(_adminSystem.PlayerList);
FilterLineEdit.OnTextChanged += _ => FilterList(); FilterLineEdit.OnTextChanged += _ => FilterList();
_adminSystem.PlayerListChanged += PopulateList; _adminSystem.PlayerListChanged += PopulateList;
BackgroundPanel.PanelOverride = new StyleBoxFlat {BackgroundColor = new Color(32, 48, 32)}; BackgroundPanel.PanelOverride = new StyleBoxFlat {BackgroundColor = new Color(20, 20, 20)};
} }
private void PlayerListItemPressed(BaseButton.ButtonEventArgs? args, ListData? data) private void PlayerListItemPressed(BaseButton.ButtonEventArgs? args, ListData? data)

View File

@@ -7,7 +7,7 @@ namespace Content.Client.Administration.UI.CustomControls;
public sealed class VSeparator : PanelContainer public sealed class VSeparator : PanelContainer
{ {
private static readonly Color SeparatorColor = Color.FromHex("#3D4059"); private static readonly Color SeparatorColor = Color.FromHex("#191919");
public VSeparator(Color color) public VSeparator(Color color)
{ {

View File

@@ -35,7 +35,7 @@ public sealed class ExplosionDebugOverlay : Overlay
IoCManager.InjectDependencies(this); IoCManager.InjectDependencies(this);
var cache = IoCManager.Resolve<IResourceCache>(); var cache = IoCManager.Resolve<IResourceCache>();
_font = new VectorFont(cache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Regular.ttf"), 8); _font = new VectorFont(cache.GetResource<FontResource>("/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf"), 8);
} }
protected override void Draw(in OverlayDrawArgs args) protected override void Draw(in OverlayDrawArgs args)

View File

@@ -19,8 +19,8 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
private const string ArrowUp = "↑"; private const string ArrowUp = "↑";
private const string ArrowDown = "↓"; private const string ArrowDown = "↓";
private readonly Color _altColor = Color.FromHex("#292B38"); private readonly Color _altColor = Color.FromHex("#141414");
private readonly Color _defaultColor = Color.FromHex("#2F2F3B"); private readonly Color _defaultColor = Color.FromHex("#191919");
private readonly AdminSystem _adminSystem; private readonly AdminSystem _adminSystem;
private IReadOnlyList<PlayerInfo> _players = new List<PlayerInfo>(); private IReadOnlyList<PlayerInfo> _players = new List<PlayerInfo>();

View File

@@ -23,10 +23,6 @@
<ProjectReference Include="..\RobustToolbox\Robust.Client\Robust.Client.csproj" /> <ProjectReference Include="..\RobustToolbox\Robust.Client\Robust.Client.csproj" />
<ProjectReference Include="..\Content.Shared\Content.Shared.csproj" /> <ProjectReference Include="..\Content.Shared\Content.Shared.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Spawners\" />
<Folder Include="White\Trail\" />
</ItemGroup>
<Import Project="..\RobustToolbox\MSBuild\Robust.Properties.targets" /> <Import Project="..\RobustToolbox\MSBuild\Robust.Properties.targets" />
<Import Project="..\RobustToolbox\MSBuild\XamlIL.targets" /> <Import Project="..\RobustToolbox\MSBuild\XamlIL.targets" />
</Project> </Project>

View File

@@ -28,7 +28,7 @@ public sealed class PuddleOverlay : Overlay
IoCManager.InjectDependencies(this); IoCManager.InjectDependencies(this);
_debugOverlaySystem = _entitySystemManager.GetEntitySystem<PuddleDebugOverlaySystem>(); _debugOverlaySystem = _entitySystemManager.GetEntitySystem<PuddleDebugOverlaySystem>();
var cache = IoCManager.Resolve<IResourceCache>(); var cache = IoCManager.Resolve<IResourceCache>();
_font = new VectorFont(cache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Regular.ttf"), 8); _font = new VectorFont(cache.GetResource<FontResource>("/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf"), 8);
} }
protected override void Draw(in OverlayDrawArgs args) protected override void Draw(in OverlayDrawArgs args)

View File

@@ -1,9 +1,14 @@
using System.Linq;
using System.Numerics;
using Content.Client._Ohio.Buttons;
using Content.Client.Changelog;
using Content.Client.GameTicking.Managers; using Content.Client.GameTicking.Managers;
using Content.Client.LateJoin; using Content.Client.LateJoin;
using Content.Client.Lobby.UI; using Content.Client.Lobby.UI;
using Content.Client.Message; using Content.Client.Message;
using Content.Client.Preferences; using Content.Client.Preferences;
using Content.Client.Preferences.UI; using Content.Client.Preferences.UI;
using Content.Client.Resources;
using Content.Client.UserInterface.Systems.Chat; using Content.Client.UserInterface.Systems.Chat;
using Content.Client.Voting; using Content.Client.Voting;
using Robust.Client; using Robust.Client;
@@ -14,7 +19,7 @@ using Robust.Client.UserInterface.Controls;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Robust.Shared.Utility;
namespace Content.Client.Lobby namespace Content.Client.Lobby
{ {
@@ -30,12 +35,14 @@ namespace Content.Client.Lobby
[Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly IVoteManager _voteManager = default!; [Dependency] private readonly IVoteManager _voteManager = default!;
[Dependency] private readonly IConfigurationManager _configurationManager = default!; [Dependency] private readonly IConfigurationManager _configurationManager = default!;
[Dependency] private readonly ChangelogManager _changelog = default!;
[ViewVariables] private CharacterSetupGui? _characterSetup; [ViewVariables] private CharacterSetupGui? _characterSetup;
private ClientGameTicker _gameTicker = default!; private ClientGameTicker _gameTicker = default!;
protected override Type? LinkedScreenType { get; } = typeof(LobbyGui); protected override Type? LinkedScreenType { get; } = typeof(LobbyGui);
private LobbyGui? _lobby; private LobbyGui? _lobby;
protected override void Startup() protected override void Startup()
@@ -48,12 +55,16 @@ namespace Content.Client.Lobby
_lobby = (LobbyGui) _userInterfaceManager.ActiveScreen; _lobby = (LobbyGui) _userInterfaceManager.ActiveScreen;
var chatController = _userInterfaceManager.GetUIController<ChatUIController>(); var chatController = _userInterfaceManager.GetUIController<ChatUIController>();
_gameTicker = _entityManager.System<ClientGameTicker>(); _gameTicker = _entityManager.System<ClientGameTicker>();
_characterSetup = new CharacterSetupGui(_entityManager, _resourceCache, _preferencesManager, _characterSetup = new CharacterSetupGui(_entityManager, _resourceCache, _preferencesManager,
_prototypeManager, _configurationManager); _prototypeManager, _configurationManager);
LayoutContainer.SetAnchorPreset(_characterSetup, LayoutContainer.LayoutPreset.Wide); LayoutContainer.SetAnchorPreset(_characterSetup, LayoutContainer.LayoutPreset.Wide);
_lobby.CharacterSetupState.AddChild(_characterSetup); _lobby.CharacterSetupState.AddChild(_characterSetup);
chatController.SetMainChat(true); chatController.SetMainChat(true);
_voteManager.SetPopupContainer(_lobby.VoteContainer); _voteManager.SetPopupContainer(_lobby.VoteContainer);
@@ -66,14 +77,16 @@ namespace Content.Client.Lobby
_characterSetup.SaveButton.OnPressed += _ => _characterSetup.SaveButton.OnPressed += _ =>
{ {
_characterSetup.Save(); _characterSetup.Save();
_lobby.CharacterPreview.UpdateUI(); //_lobby.CharacterPreview.UpdateUI();
}; };
LayoutContainer.SetAnchorPreset(_lobby, LayoutContainer.LayoutPreset.Wide); LayoutContainer.SetAnchorPreset(_lobby, LayoutContainer.LayoutPreset.Wide);
_lobby.ServerName.Text = _baseClient.GameInfo?.ServerName; //The eye of refactor gazes upon you... _lobby.ServerName.Text = _baseClient.GameInfo?.ServerName; //The eye of refactor gazes upon you...
UpdateLobbyUi(); UpdateLobbyUi();
_lobby.CharacterPreview.CharacterSetupButton.OnPressed += OnSetupPressed; _lobby.CharacterSetupButton.OnPressed += OnSetupPressed;
_lobby.ReadyButton.OnPressed += OnReadyPressed; _lobby.ReadyButton.OnPressed += OnReadyPressed;
_lobby.ReadyButton.OnToggled += OnReadyToggled; _lobby.ReadyButton.OnToggled += OnReadyToggled;
@@ -83,20 +96,23 @@ namespace Content.Client.Lobby
_preferencesManager.OnServerDataLoaded += PreferencesDataLoaded; _preferencesManager.OnServerDataLoaded += PreferencesDataLoaded;
_lobby.CharacterPreview.UpdateUI(); //_lobby.CharacterPreview.UpdateUI();
PopulateChangelog();
} }
protected override void Shutdown() protected override void Shutdown()
{ {
var chatController = _userInterfaceManager.GetUIController<ChatUIController>(); var chatController = _userInterfaceManager.GetUIController<ChatUIController>();
chatController.SetMainChat(false); chatController.SetMainChat(false);
_gameTicker.InfoBlobUpdated -= UpdateLobbyUi; _gameTicker.InfoBlobUpdated -= UpdateLobbyUi;
_gameTicker.LobbyStatusUpdated -= LobbyStatusUpdated; _gameTicker.LobbyStatusUpdated -= LobbyStatusUpdated;
_gameTicker.LobbyLateJoinStatusUpdated -= LobbyLateJoinStatusUpdated; _gameTicker.LobbyLateJoinStatusUpdated -= LobbyLateJoinStatusUpdated;
_voteManager.ClearPopupContainer(); _voteManager.ClearPopupContainer();
_lobby!.CharacterPreview.CharacterSetupButton.OnPressed -= OnSetupPressed; _lobby!.CharacterSetupButton.OnPressed -= OnSetupPressed;
_lobby!.ReadyButton.OnPressed -= OnReadyPressed; _lobby!.ReadyButton.OnPressed -= OnReadyPressed;
_lobby!.ReadyButton.OnToggled -= OnReadyToggled; _lobby!.ReadyButton.OnToggled -= OnReadyToggled;
@@ -110,7 +126,7 @@ namespace Content.Client.Lobby
private void PreferencesDataLoaded() private void PreferencesDataLoaded()
{ {
_lobby?.CharacterPreview.UpdateUI(); //_lobby?.CharacterPreview.UpdateUI();
} }
private void OnSetupPressed(BaseButton.ButtonEventArgs args) private void OnSetupPressed(BaseButton.ButtonEventArgs args)
@@ -140,11 +156,12 @@ namespace Content.Client.Lobby
{ {
_lobby!.StartTime.Text = string.Empty; _lobby!.StartTime.Text = string.Empty;
var roundTime = _gameTiming.CurTime.Subtract(_gameTicker.RoundStartTimeSpan); var roundTime = _gameTiming.CurTime.Subtract(_gameTicker.RoundStartTimeSpan);
_lobby!.StationTime.Text = Loc.GetString("lobby-state-player-status-round-time", ("hours", roundTime.Hours), ("minutes", roundTime.Minutes)); _lobby!.StationTime.Text = Loc.GetString("lobby-state-player-status-round-time",
("hours", roundTime.Hours), ("minutes", roundTime.Minutes));
return; return;
} }
_lobby!.StationTime.Text = Loc.GetString("lobby-state-player-status-round-not-started");
string text; string text;
if (_gameTicker.Paused) if (_gameTicker.Paused)
@@ -162,7 +179,9 @@ namespace Content.Client.Lobby
var seconds = difference.TotalSeconds; var seconds = difference.TotalSeconds;
if (seconds < 0) if (seconds < 0)
{ {
text = Loc.GetString(seconds < -5 ? "lobby-state-right-now-question" : "lobby-state-right-now-confirmation"); text = Loc.GetString(seconds < -5
? "lobby-state-right-now-question"
: "lobby-state-right-now-confirmation");
} }
else else
{ {
@@ -175,7 +194,6 @@ namespace Content.Client.Lobby
private void LobbyStatusUpdated() private void LobbyStatusUpdated()
{ {
UpdateLobbyBackground();
UpdateLobbyUi(); UpdateLobbyUi();
} }
@@ -188,7 +206,7 @@ namespace Content.Client.Lobby
{ {
if (_gameTicker.IsGameStarted) if (_gameTicker.IsGameStarted)
{ {
_lobby!.ReadyButton.Text = Loc.GetString("lobby-state-ready-button-join-state"); MakeButtonJoinGame(_lobby!.ReadyButton);
_lobby!.ReadyButton.ToggleMode = false; _lobby!.ReadyButton.ToggleMode = false;
_lobby!.ReadyButton.Pressed = false; _lobby!.ReadyButton.Pressed = false;
_lobby!.ObserveButton.Disabled = false; _lobby!.ObserveButton.Disabled = false;
@@ -196,7 +214,12 @@ namespace Content.Client.Lobby
else else
{ {
_lobby!.StartTime.Text = string.Empty; _lobby!.StartTime.Text = string.Empty;
_lobby!.ReadyButton.Text = Loc.GetString(_lobby!.ReadyButton.Pressed ? "lobby-state-player-status-ready": "lobby-state-player-status-not-ready");
if (_lobby!.ReadyButton.Pressed)
MakeButtonReady(_lobby!.ReadyButton);
else
MakeButtonUnReady(_lobby!.ReadyButton);
_lobby!.ReadyButton.ToggleMode = true; _lobby!.ReadyButton.ToggleMode = true;
_lobby!.ReadyButton.Disabled = false; _lobby!.ReadyButton.Disabled = false;
_lobby!.ReadyButton.Pressed = _gameTicker.AreWeReady; _lobby!.ReadyButton.Pressed = _gameTicker.AreWeReady;
@@ -208,41 +231,9 @@ namespace Content.Client.Lobby
_lobby!.ServerInfo.SetInfoBlob(_gameTicker.ServerInfoBlob); _lobby!.ServerInfo.SetInfoBlob(_gameTicker.ServerInfoBlob);
} }
if (_gameTicker.LobbySong == null) _lobby!.LabelName.SetMarkup("[font=\"Bedstead\" size=20] Green Miracle [/font]");
{ _lobby!.Version.SetMarkup("Version: 1.0");
_lobby!.LobbySong.SetMarkup(Loc.GetString("lobby-state-song-no-song-text")); _lobby!.ChangelogLabel.SetMarkup("Список изменений:");
}
else if (_resourceCache.TryGetResource<AudioResource>(_gameTicker.LobbySong, out var lobbySongResource))
{
var lobbyStream = lobbySongResource.AudioStream;
var title = string.IsNullOrEmpty(lobbyStream.Title) ?
Loc.GetString("lobby-state-song-unknown-title") :
lobbyStream.Title;
var artist = string.IsNullOrEmpty(lobbyStream.Artist) ?
Loc.GetString("lobby-state-song-unknown-artist") :
lobbyStream.Artist;
var markup = Loc.GetString("lobby-state-song-text",
("songTitle", title),
("songArtist", artist));
_lobby!.LobbySong.SetMarkup(markup);
}
}
private void UpdateLobbyBackground()
{
if (_gameTicker.LobbyBackground != null)
{
_lobby!.Background.Texture = _resourceCache.GetResource<TextureResource>(_gameTicker.LobbyBackground );
}
else
{
_lobby!.Background.Texture = null;
}
} }
private void SetReady(bool newReady) private void SetReady(bool newReady)
@@ -254,5 +245,100 @@ namespace Content.Client.Lobby
_consoleHost.ExecuteCommand($"toggleready {newReady}"); _consoleHost.ExecuteCommand($"toggleready {newReady}");
} }
private void MakeButtonReady(OhioLobbyTextButton button)
{
button.ButtonText = "Ready";
}
private void MakeButtonUnReady(OhioLobbyTextButton button)
{
button.ButtonText = "Not Ready";
}
private void MakeButtonJoinGame(OhioLobbyTextButton button)
{
button.ButtonText = "Join Game";
}
private async void PopulateChangelog()
{
_lobby!.ChangelogContainer.Children.Clear();
var changelogs = await _changelog.LoadChangelog();
var whiteChangelog = changelogs.Find(cl => cl.Name == "ChangelogWhite");
if (whiteChangelog is null)
{
_lobby!.ChangelogContainer.Children.Add(
new RichTextLabel().SetMarkup("Не удалось загрузить список изменений"));
return;
}
var entries = whiteChangelog.Entries
.OrderByDescending(c => c.Time)
.Take(5);
foreach (var entry in entries)
{
var box = new BoxContainer
{
Orientation = BoxContainer.LayoutOrientation.Vertical,
HorizontalAlignment = Control.HAlignment.Left,
Children =
{
new Label
{
Align = Label.AlignMode.Left,
Text = $"{entry.Author} {entry.Time.ToShortDateString()}",
FontColorOverride = Color.FromHex("#888"),
Margin = new Thickness(0, 10)
}
}
};
foreach (var change in entry.Changes)
{
var container = new BoxContainer
{
Orientation = BoxContainer.LayoutOrientation.Horizontal,
HorizontalAlignment = Control.HAlignment.Left
};
var text = new RichTextLabel();
text.SetMessage(FormattedMessage.FromMarkup(change.Message));
text.MaxWidth = 350;
container.AddChild(GetIcon(change.Type));
container.AddChild(text);
box.AddChild(container);
}
_lobby!.ChangelogContainer.AddChild(box);
}
}
private TextureRect GetIcon(ChangelogManager.ChangelogLineType type)
{
var (file, color) = type switch
{
ChangelogManager.ChangelogLineType.Add => ("plus.svg.192dpi.png", "#6ED18D"),
ChangelogManager.ChangelogLineType.Remove => ("minus.svg.192dpi.png", "#D16E6E"),
ChangelogManager.ChangelogLineType.Fix => ("bug.svg.192dpi.png", "#D1BA6E"),
ChangelogManager.ChangelogLineType.Tweak => ("wrench.svg.192dpi.png", "#6E96D1"),
_ => throw new ArgumentOutOfRangeException(nameof(type), type, null)
};
return new TextureRect
{
Texture = _resourceCache.GetTexture(new ResPath($"/Textures/Interface/Changelog/{file}")),
VerticalAlignment = Control.VAlignment.Top,
TextureScale = new Vector2(0.5f, 0.5f),
Margin = new Thickness(2, 4, 6, 2),
ModulateSelfOverride = Color.FromHex(color)
};
}
} }
} }

View File

@@ -1,16 +1,13 @@
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using Content.Client.Alerts;
using Content.Client.Humanoid; using Content.Client.Humanoid;
using Content.Client.Inventory; using Content.Client.Inventory;
using Content.Client.Preferences; using Content.Client.Preferences;
using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Controls;
using Content.Shared.GameTicking; using Content.Shared.GameTicking;
using Content.Shared.Humanoid.Prototypes; using Content.Shared.Humanoid.Prototypes;
using Content.Shared.Inventory;
using Content.Shared.Preferences; using Content.Shared.Preferences;
using Content.Shared.Roles; using Content.Shared.Roles;
using Robust.Client.GameObjects;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Shared.Map; using Robust.Shared.Map;
@@ -40,12 +37,12 @@ namespace Content.Client.Lobby.UI
Text = Loc.GetString("lobby-character-preview-panel-header") Text = Loc.GetString("lobby-character-preview-panel-header")
}; };
CharacterSetupButton = new Button // CharacterSetupButton = new Button
{ // {
Text = Loc.GetString("lobby-character-preview-panel-character-setup-button"), // Text = Loc.GetString("lobby-character-preview-panel-character-setup-button"),
HorizontalAlignment = HAlignment.Center, // HorizontalAlignment = HAlignment.Center,
Margin = new Thickness(0, 5, 0, 0), // Margin = new Thickness(0, 5, 0, 0),
}; // };
_summaryLabel = new Label _summaryLabel = new Label
{ {
@@ -69,12 +66,12 @@ namespace Content.Client.Lobby.UI
Orientation = LayoutOrientation.Horizontal, Orientation = LayoutOrientation.Horizontal,
HorizontalAlignment = HAlignment.Center, HorizontalAlignment = HAlignment.Center,
}; };
var _vSpacer = new VSpacer(); var vSpacer = new VSpacer();
_loaded.AddChild(_summaryLabel); _loaded.AddChild(_summaryLabel);
_loaded.AddChild(_viewBox); _loaded.AddChild(_viewBox);
_loaded.AddChild(_vSpacer); _loaded.AddChild(vSpacer);
_loaded.AddChild(CharacterSetupButton); //_loaded.AddChild(CharacterSetupButton);
vBox.AddChild(header); vBox.AddChild(header);
vBox.AddChild(_loaded); vBox.AddChild(_loaded);
@@ -84,14 +81,18 @@ namespace Content.Client.Lobby.UI
UpdateUI(); UpdateUI();
} }
public Button CharacterSetupButton { get; } // public Button CharacterSetupButton { get; }
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing); base.Dispose(disposing);
if (!disposing) return; if (!disposing)
if (_previewDummy != null) _entityManager.DeleteEntity(_previewDummy.Value); return;
if (_previewDummy != null)
_entityManager.DeleteEntity(_previewDummy.Value);
_previewDummy = default; _previewDummy = default;
} }
@@ -134,7 +135,7 @@ namespace Content.Client.Lobby.UI
{ {
var protoMan = IoCManager.Resolve<IPrototypeManager>(); var protoMan = IoCManager.Resolve<IPrototypeManager>();
var entMan = IoCManager.Resolve<IEntityManager>(); var entMan = IoCManager.Resolve<IEntityManager>();
var invSystem = EntitySystem.Get<ClientInventorySystem>(); var invSystem = entMan.System<ClientInventorySystem>();
var highPriorityJob = profile.JobPriorities.FirstOrDefault(p => p.Value == JobPriority.High).Key; var highPriorityJob = profile.JobPriorities.FirstOrDefault(p => p.Value == JobPriority.High).Key;

View File

@@ -1,116 +1,183 @@
<lobbyUi:LobbyGui <lobbyUi:LobbyGui xmlns="https://spacestation14.io"
xmlns="https://spacestation14.io"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:maths="clr-namespace:Robust.Shared.Maths;assembly=Robust.Shared.Maths" xmlns:maths="clr-namespace:Robust.Shared.Maths;assembly=Robust.Shared.Maths"
xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls" xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
xmlns:vote="clr-namespace:Content.Client.Voting.UI"
xmlns:style="clr-namespace:Content.Client.Stylesheets" xmlns:style="clr-namespace:Content.Client.Stylesheets"
xmlns:lobbyUi="clr-namespace:Content.Client.Lobby.UI" xmlns:lobbyUi="clr-namespace:Content.Client.Lobby.UI"
xmlns:info="clr-namespace:Content.Client.Info" xmlns:info="clr-namespace:Content.Client.Info"
xmlns:widgets="clr-namespace:Content.Client.UserInterface.Systems.Chat.Widgets"> xmlns:widgets="clr-namespace:Content.Client.UserInterface.Systems.Chat.Widgets"
xmlns:ui="clr-namespace:Content.Client._Ohio.UI"
xmlns:buttons="clr-namespace:Content.Client._Ohio.Buttons">
<!-- Background --> <!-- Background -->
<TextureRect Access="Public" VerticalExpand="True" HorizontalExpand="True" Name="Background" <ui:AnimatedBackgroundControl Name="Background" VerticalExpand="True" HorizontalExpand="True"
Stretch="KeepAspectCovered" /> Stretch="KeepAspectCovered" />
<!-- Main Container -->
<BoxContainer Name="MainContainer" VerticalExpand="True" HorizontalExpand="True" Orientation="Horizontal" <BoxContainer Name="MainContainer" VerticalExpand="True" HorizontalExpand="True" Orientation="Horizontal"
Margin="10 10 10 10" SeparationOverride="2"> Margin="10 10 10 10" SeparationOverride="2">
<SplitContainer State="Auto" HorizontalExpand="True">
<!-- LHS Controls --> <!-- Split Container -->
<SplitContainer State="Auto" ResizeMode="NotResizable" HorizontalExpand="True">
<!-- Left Side -->
<BoxContainer Name="LeftSide" Orientation="Vertical" SeparationOverride="4" HorizontalExpand="True"> <BoxContainer Name="LeftSide" Orientation="Vertical" SeparationOverride="4" HorizontalExpand="True">
<!-- Default State -->
<Control Name="DefaultState" VerticalExpand="True"> <Control Name="DefaultState" VerticalExpand="True">
<BoxContainer Name="TopLeft" Orientation="Vertical">
<!-- Left Top Panel -->
<PanelContainer StyleClasses="AngleRect" HorizontalAlignment="Left" Name="LeftSideTop"
VerticalAlignment="Top">
<BoxContainer Orientation="Vertical" HorizontalAlignment="Center" MaxWidth="800">
<info:LinkBanner Name="LinkBanner" VerticalExpand="false" HorizontalAlignment="Center"
Margin="3 3 3 3" />
<controls:StripeBack>
<BoxContainer Orientation="Horizontal" SeparationOverride="6" Margin="3 3 3 3">
<cc:UICommandButton Command="observe" Name="ObserveButton" Access="Public"
Text="{Loc 'ui-lobby-observe-button'}"
StyleClasses="ButtonBig"
WindowType="{x:Type lobbyUi:ObserveWarningWindow}" />
<Label Name="StartTime"
Access="Public"
Align="Left"
FontColorOverride="{x:Static maths:Color.DarkGray}"
StyleClasses="LabelBig" HorizontalExpand="True" />
<Button Name="ReadyButton" Access="Public" ToggleMode="True"
Text="{Loc 'ui-lobby-ready-up-button'}"
StyleClasses="ButtonBig" MinWidth="137" />
</BoxContainer>
</controls:StripeBack>
</BoxContainer>
</PanelContainer>
<BoxContainer Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Top"> <!-- Character Setup State -->
<PanelContainer Name="TopRightContainer" MinHeight="350" MinWidth="469" StyleClasses="LobbyGayBackground">
<info:ServerListBox Name="ServerListBox" Access="Public" MinSize="0 30" VerticalExpand="True" HorizontalExpand="True" Margin="3 3 3 3" HorizontalAlignment="Stretch"/>
</PanelContainer>
</BoxContainer>
<!-- Voting Popups -->
<BoxContainer Orientation="Vertical" SeparationOverride="4" Name="VoteContainer"
Access="Public" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0 8" />
</BoxContainer>
<!-- Vertical Padding-->
<Control VerticalExpand="True" />
<!-- Left Bot Panel -->
<BoxContainer Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Bottom">
<info:DevInfoBanner Name="DevInfoBanner" VerticalExpand="false" Margin="3 3 3 3" />
<PanelContainer StyleClasses="AngleRect">
<RichTextLabel Name="LobbySong" Access="Public" HorizontalAlignment="Center" />
</PanelContainer>
</BoxContainer>
</Control>
<!-- Character setup state -->
<!-- This is injected on startup. Funky! -->
<Control Access="Public" Visible="False" Name="CharacterSetupState" VerticalExpand="True" /> <Control Access="Public" Visible="False" Name="CharacterSetupState" VerticalExpand="True" />
<!-- Top Left Panel -->
<PanelContainer Name="TopPanel" MinWidth="722" StyleClasses="LobbyGayBackground"
VerticalExpand="True" HorizontalExpand="True" HorizontalAlignment="Stretch"
VerticalAlignment="Top" Visible="False">
<BoxContainer Orientation="Vertical" HorizontalExpand="True" HorizontalAlignment="Stretch"
Margin="8 8 8 8">
<BoxContainer Orientation="Horizontal" MinSize="0 40" HorizontalAlignment="Center">
<info:LinkBanner Name="LinkBanner" VerticalExpand="True" HorizontalAlignment="Center" />
<Button Name="AHelpButton" Access="Public" Text="{Loc 'ui-lobby-ahelp-button'}"
StyleClasses="Button" />
</BoxContainer> </BoxContainer>
</BoxContainer>
</PanelContainer>
<!-- Vote Container -->
<BoxContainer Orientation="Vertical" SeparationOverride="4" Name="VoteContainer" Access="Public"
HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0 8" />
<!-- Vertical Padding -->
<Control VerticalExpand="True" />
<ui:OhioRichTextLabel Name="LabelName" Access="Public" HorizontalAlignment="Left"
VerticalAlignment="Center" Margin="0 0 0 350" />
<!-- Ohio Container -->
<PanelContainer HorizontalAlignment="Left" Name="Center" VerticalAlignment="Center">
<BoxContainer Name="OhioContainer" Orientation="Vertical" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="40 0 0 150">
<buttons:OhioLobbyTextButton
Name="ReadyButton"
Access="Public"
ToggleMode="True"
ButtonText="Ready"
Margin="0 0 0 10" />
<buttons:OhioUICommandButton
Name="ObserveButton"
WindowType="{x:Type lobbyUi:ObserveWarningWindow}"
Access="Public"
ButtonText="Observe"
Margin="0 10 0 10" />
<buttons:OhioLobbyTextButton
Name="CharacterSetupButton"
Access="Public"
ButtonText="Character Setup"
Margin="0 10 0 10" />
<buttons:OhioLobbyTextButton
Name="OptionsButton"
Access="Public"
ButtonText="Options"
Margin="0 10 0 0" />
</BoxContainer>
</PanelContainer>
<BoxContainer Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Bottom">
<PanelContainer StyleClasses="LobbyGayBackground">
<RichTextLabel Name="Version" Access="Public" HorizontalAlignment="Center" />
</PanelContainer>
</BoxContainer>
<!-- Changelog -->
<PanelContainer Name="Changelog" StyleClasses="LobbyGayBackground" HorizontalAlignment="Right"
VerticalAlignment="Top">
<BoxContainer Orientation="Vertical">
<RichTextLabel Name="ChangelogLabel" Access="Public" HorizontalAlignment="Center" />
<!-- Auto populated via code -->
<BoxContainer Name="ChangelogContainer" Access="Public" Orientation="Vertical"
StyleClasses="LobbyGayBackground" />
</BoxContainer>
</PanelContainer>
</Control>
</BoxContainer>
<!-- Right Panel --> <!-- Right Panel -->
<PanelContainer Name="RightSide" StyleClasses="AngleRect" HorizontalAlignment="Right" VerticalExpand="True" <PanelContainer Name="RightSide" StyleClasses="LobbyGayBackground" HorizontalAlignment="Right"
VerticalAlignment="Stretch"> VerticalExpand="True" VerticalAlignment="Stretch">
<BoxContainer Orientation="Vertical" HorizontalExpand="True"> <BoxContainer Orientation="Vertical" HorizontalExpand="True">
<!-- Top row -->
<!-- Header -->
<BoxContainer Orientation="Horizontal" MinSize="0 40" Name="HeaderContainer" Access="Public" <BoxContainer Orientation="Horizontal" MinSize="0 40" Name="HeaderContainer" Access="Public"
SeparationOverride="4"> SeparationOverride="4">
<Label Margin="8 0 0 0" StyleClasses="LabelHeadingBigger" VAlign="Center"
Text="{Loc 'ui-lobby-title'}" />
<Label Name="ServerName" Access="Public" StyleClasses="LabelHeadingBigger" VAlign="Center" <Label Name="ServerName" Access="Public" StyleClasses="LabelHeadingBigger" VAlign="Center"
HorizontalExpand="True" HorizontalAlignment="Center" /> HorizontalExpand="True" HorizontalAlignment="Center" />
</BoxContainer> </BoxContainer>
<!-- Gold line -->
<!-- Gold Line -->
<controls:HLine Color="{x:Static style:StyleNano.NanoGold}" Thickness="2" /> <controls:HLine Color="{x:Static style:StyleNano.NanoGold}" Thickness="2" />
<controls:HSpacer Spacing="10" /> <controls:HSpacer Spacing="10" />
<!-- Voting & misc button bar -->
<BoxContainer Orientation="Horizontal" MinSize="0 40" HorizontalAlignment="Right"> <!-- Server Info -->
<Button Name="AHelpButton" Access="Public" Text="{Loc 'ui-lobby-ahelp-button'}"
StyleClasses="ButtonBig" />
<vote:VoteCallMenuButton Name="CallVoteButton" StyleClasses="ButtonBig" />
<Button Name="OptionsButton" Access="Public" StyleClasses="ButtonBig"
Text="{Loc 'ui-lobby-options-button'}" />
<Button Name="LeaveButton" Access="Public" StyleClasses="ButtonBig"
Text="{Loc 'ui-lobby-leave-button'}" />
</BoxContainer>
<controls:HSpacer Spacing="10" />
<!-- Server info -->
<controls:NanoHeading Text="{Loc 'ui-lobby-server-info-block'}" /> <controls:NanoHeading Text="{Loc 'ui-lobby-server-info-block'}" />
<info:ServerInfo Name="ServerInfo" Access="Public" MinSize="0 30" VerticalExpand="false"
Margin="3 3 3 3" MaxWidth="400" HorizontalAlignment="Left" /> <info:ServerInfo Name="ServerInfo" Access="Public" MinSize="0 100" VerticalExpand="false"
<Label Name="StationTime" Access="Public" FontColorOverride="{x:Static maths:Color.LightGray}" Margin="3" MaxWidth="400" HorizontalAlignment="Left" />
Margin="3 3 3 3" HorizontalAlignment="Left" />
<Label Name="StationTime" Access="Public"
FontColorOverride="{x:Static maths:Color.MediumVioletRed}" Margin="3"
HorizontalAlignment="Left" />
<Label Name="StartTime" Access="Public" FontColorOverride="{x:Static maths:Color.MediumVioletRed}"
Margin="3" StyleClasses="Label" HorizontalExpand="True" />
<controls:HSpacer Spacing="5" /> <controls:HSpacer Spacing="5" />
<lobbyUi:LobbyCharacterPreviewPanel Name="CharacterPreview" Access="Public" />
<!--
<lobbyUi:LobbyCharacterPreviewPanel Name="CharacterPreview" Access="Public"/>
-->
<controls:HSpacer Spacing="5" /> <controls:HSpacer Spacing="5" />
<BoxContainer MinHeight="10" /> <BoxContainer MinHeight="10" />
<!-- Gold line -->
<!-- Gold Line -->
<controls:HLine Color="{x:Static style:StyleNano.NanoGold}" Thickness="2" Access="Public" /> <controls:HLine Color="{x:Static style:StyleNano.NanoGold}" Thickness="2" Access="Public" />
<controls:HSpacer Spacing="10" /> <controls:HSpacer Spacing="10" />
<widgets:ChatBox Name="Chat" Access="Public" VerticalExpand="True" Margin="3 3 3 3" MinHeight="50" />
<widgets:ChatBox Name="Chat" Access="Public" VerticalExpand="True" Margin="3" MinHeight="50" />
</BoxContainer> </BoxContainer>
</PanelContainer> </PanelContainer>
</SplitContainer> </SplitContainer>
</BoxContainer> </BoxContainer>
</lobbyUi:LobbyGui> </lobbyUi:LobbyGui>

View File

@@ -1,29 +1,13 @@
using Content.Client.Chat.UI;
using Content.Client.Info;
using Content.Client.Preferences;
using Content.Client.Preferences.UI;
using Content.Client.UserInterface.Screens;
using Content.Client.UserInterface.Systems.Chat.Widgets;
using Content.Client.UserInterface.Systems.EscapeMenu; using Content.Client.UserInterface.Systems.EscapeMenu;
using Robust.Client.AutoGenerated; using Robust.Client.AutoGenerated;
using Robust.Client.Console;
using Robust.Client.Graphics;
using Robust.Client.State;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Maths;
using Robust.Shared.Prototypes;
using static Robust.Client.UserInterface.Controls.BoxContainer;
namespace Content.Client.Lobby.UI namespace Content.Client.Lobby.UI
{ {
[GenerateTypedNameReferences] [GenerateTypedNameReferences]
internal sealed partial class LobbyGui : UIScreen internal sealed partial class LobbyGui : UIScreen
{ {
[Dependency] private readonly IClientConsoleHost _consoleHost = default!;
[Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!; [Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!;
public LobbyGui() public LobbyGui()
@@ -33,32 +17,28 @@ namespace Content.Client.Lobby.UI
SetAnchorPreset(MainContainer, LayoutPreset.Wide); SetAnchorPreset(MainContainer, LayoutPreset.Wide);
SetAnchorPreset(Background, LayoutPreset.Wide); SetAnchorPreset(Background, LayoutPreset.Wide);
LeaveButton.OnPressed += _ => _consoleHost.ExecuteCommand("disconnect");
OptionsButton.OnPressed += _ => _userInterfaceManager.GetUIController<OptionsUIController>().ToggleWindow(); OptionsButton.OnPressed += _ => _userInterfaceManager.GetUIController<OptionsUIController>().ToggleWindow();
} }
public void SwitchState(LobbyGuiState state) public void SwitchState(LobbyGuiState state)
{ {
DefaultState.Visible = false;
CharacterSetupState.Visible = false;
switch (state) switch (state)
{ {
case LobbyGuiState.Default: case LobbyGuiState.Default:
DefaultState.Visible = true; CharacterSetupState.Visible = false;
Center.Visible = true;
RightSide.Visible = true; RightSide.Visible = true;
Version.Visible = true;
LabelName.Visible = true;
Changelog.Visible = true;
break; break;
case LobbyGuiState.CharacterSetup: case LobbyGuiState.CharacterSetup:
CharacterSetupState.Visible = true; CharacterSetupState.Visible = true;
Center.Visible = false;
var actualWidth = (float) _userInterfaceManager.RootControl.PixelWidth;
var setupWidth = (float) LeftSide.PixelWidth;
if (1 - (setupWidth / actualWidth) > 0.30)
{
RightSide.Visible = false; RightSide.Visible = false;
} Version.Visible = false;
LabelName.Visible = false;
Changelog.Visible = false;
break; break;
} }
} }

View File

@@ -15,7 +15,7 @@ public sealed class HTNOverlay : Overlay
public HTNOverlay(IEntityManager entManager, IResourceCache resourceCache) public HTNOverlay(IEntityManager entManager, IResourceCache resourceCache)
{ {
_entManager = entManager; _entManager = entManager;
_font = new VectorFont(resourceCache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10); _font = new VectorFont(resourceCache.GetResource<FontResource>("/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf"), 10);
} }
protected override void Draw(in OverlayDrawArgs args) protected override void Draw(in OverlayDrawArgs args)

View File

@@ -47,7 +47,7 @@ namespace Content.Client.NodeContainer
_inputManager = inputManager; _inputManager = inputManager;
_entityManager = entityManager; _entityManager = entityManager;
_font = cache.GetFont("/Fonts/NotoSans/NotoSans-Regular.ttf", 12); _font = cache.GetFont("/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf", 12);
} }
protected override void Draw(in OverlayDrawArgs args) protected override void Draw(in OverlayDrawArgs args)

View File

@@ -25,7 +25,7 @@ public sealed partial class PdaNavigationButton : ContainerButton
}; };
public string InactiveBgColor { get; set; } = "#202023"; public string InactiveBgColor { get; set; } = "#202023";
public string ActiveBgColor { get; set; } = "#25252a"; public string ActiveBgColor { get; set; } = "#141414";
public string InactiveFgColor { get; set; } = "#5a5a5a"; public string InactiveFgColor { get; set; } = "#5a5a5a";
public string ActiveFgColor { get; set; } = "#FFFFFF"; public string ActiveFgColor { get; set; } = "#FFFFFF";

View File

@@ -14,7 +14,7 @@ public sealed partial class PdaProgramItem : ContainerButton
private readonly StyleBoxFlat _styleBox = new() private readonly StyleBoxFlat _styleBox = new()
{ {
BackgroundColor = Color.FromHex("#25252a"), BackgroundColor = Color.FromHex("#141414")
}; };
public Color BackgroundColor public Color BackgroundColor

View File

@@ -18,7 +18,7 @@ public sealed partial class PdaSettingsButton : ContainerButton
private readonly StyleBoxFlat _styleBox = new() private readonly StyleBoxFlat _styleBox = new()
{ {
BackgroundColor = Color.FromHex("#25252a") BackgroundColor = Color.FromHex("#141414")
}; };
public string? Text public string? Text

View File

@@ -86,7 +86,7 @@ namespace Content.Client.ParticleAccelerator.UI
var back = new StyleBoxTexture var back = new StyleBoxTexture
{ {
Texture = panelTex, Texture = panelTex,
Modulate = Color.FromHex("#25252A"), Modulate = Color.FromHex("#141414"),
}; };
back.SetPatchMargin(StyleBox.Margin.All, 10); back.SetPatchMargin(StyleBox.Margin.All, 10);

View File

@@ -47,9 +47,9 @@ public sealed class PopupOverlay : Overlay
_popup = popup; _popup = popup;
_shader = protoManager.Index<ShaderPrototype>("unshaded").Instance(); _shader = protoManager.Index<ShaderPrototype>("unshaded").Instance();
_smallFont = new VectorFont(cache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Italic.ttf"), 10); _smallFont = new VectorFont(cache.GetResource<FontResource>("/Fonts/IBMPlexMono/IBMPlexMono-Italic.ttf"), 10);
_mediumFont = new VectorFont(cache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Italic.ttf"), 12); _mediumFont = new VectorFont(cache.GetResource<FontResource>("/Fonts/IBMPlexMono/IBMPlexMono-Italic.ttf"), 12);
_largeFont = new VectorFont(cache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-BoldItalic.ttf"), 14); _largeFont = new VectorFont(cache.GetResource<FontResource>("/Fonts/IBMPlexMono/IBMPlexMono-BoldItalic.ttf"), 14);
} }
protected override void Draw(in OverlayDrawArgs args) protected override void Draw(in OverlayDrawArgs args)

View File

@@ -57,7 +57,7 @@ namespace Content.Client.Preferences.UI
var back = new StyleBoxTexture var back = new StyleBoxTexture
{ {
Texture = panelTex, Texture = panelTex,
Modulate = new Color(37, 42, 37) Modulate = new Color(15, 15, 15)
}; };
back.SetPatchMargin(StyleBox.Margin.All, 10); back.SetPatchMargin(StyleBox.Margin.All, 10);

View File

@@ -46,7 +46,7 @@ namespace Content.Client.Preferences.UI
{ {
PanelOverride = new StyleBoxFlat() PanelOverride = new StyleBoxFlat()
{ {
BackgroundColor = new Color(35, 48, 35), BackgroundColor = new Color(25, 25, 25),
ContentMarginTopOverride = 10, ContentMarginTopOverride = 10,
ContentMarginBottomOverride = 10, ContentMarginBottomOverride = 10,
ContentMarginLeftOverride = 10, ContentMarginLeftOverride = 10,
@@ -599,7 +599,7 @@ namespace Content.Client.Preferences.UI
category.AddChild(new PanelContainer category.AddChild(new PanelContainer
{ {
PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#464966")}, PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#232323")},
Children = Children =
{ {
new Label new Label

View File

@@ -24,7 +24,7 @@ public sealed class RadiationDebugOverlay : Overlay
_radiation = _entityManager.System<RadiationSystem>(); _radiation = _entityManager.System<RadiationSystem>();
var cache = IoCManager.Resolve<IResourceCache>(); var cache = IoCManager.Resolve<IResourceCache>();
_font = new VectorFont(cache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Regular.ttf"), 8); _font = new VectorFont(cache.GetResource<FontResource>("/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf"), 8);
} }
protected override void Draw(in OverlayDrawArgs args) protected override void Draw(in OverlayDrawArgs args)

View File

@@ -43,11 +43,20 @@ namespace Content.Client.Stylesheets
protected StyleBase(IResourceCache resCache) protected StyleBase(IResourceCache resCache)
{ {
var wariowareinc = resCache.GetFont
(
new []
{
"/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf"
},
12
);
var notoSans12 = resCache.GetFont var notoSans12 = resCache.GetFont
( (
new [] new []
{ {
"/Fonts/IBMPlexSans/IBMPlexSans-Regular.ttf", "/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf",
"/Fonts/NotoSans/NotoSansSymbols-Regular.ttf", "/Fonts/NotoSans/NotoSansSymbols-Regular.ttf",
"/Fonts/NotoSans/NotoSansSymbols2-Regular.ttf" "/Fonts/NotoSans/NotoSansSymbols2-Regular.ttf"
}, },
@@ -57,7 +66,7 @@ namespace Content.Client.Stylesheets
( (
new [] new []
{ {
"/Fonts/IBMPlexSans/IBMPlexSans-Italic.ttf", "/Fonts/IBMPlexMono/IBMPlexMono-Italic.ttf",
"/Fonts/NotoSans/NotoSansSymbols-Regular.ttf", "/Fonts/NotoSans/NotoSansSymbols-Regular.ttf",
"/Fonts/NotoSans/NotoSansSymbols2-Regular.ttf" "/Fonts/NotoSans/NotoSansSymbols2-Regular.ttf"
}, },
@@ -124,7 +133,7 @@ namespace Content.Client.Stylesheets
var vScrollBarGrabberNormal = new StyleBoxFlat var vScrollBarGrabberNormal = new StyleBoxFlat
{ {
BackgroundColor = Color.DarkKhaki.WithAlpha(0.35f), ContentMarginLeftOverride = DefaultGrabberSize, BackgroundColor = Color.Gray.WithAlpha(0.35f), ContentMarginLeftOverride = DefaultGrabberSize,
ContentMarginTopOverride = DefaultGrabberSize ContentMarginTopOverride = DefaultGrabberSize
}; };
var vScrollBarGrabberHover = new StyleBoxFlat var vScrollBarGrabberHover = new StyleBoxFlat
@@ -140,7 +149,7 @@ namespace Content.Client.Stylesheets
var hScrollBarGrabberNormal = new StyleBoxFlat var hScrollBarGrabberNormal = new StyleBoxFlat
{ {
BackgroundColor = Color.DarkKhaki.WithAlpha(0.35f), ContentMarginTopOverride = DefaultGrabberSize BackgroundColor = Color.Gray.WithAlpha(0.35f), ContentMarginTopOverride = DefaultGrabberSize
}; };
var hScrollBarGrabberHover = new StyleBoxFlat var hScrollBarGrabberHover = new StyleBoxFlat
{ {
@@ -159,7 +168,7 @@ namespace Content.Client.Stylesheets
new SelectorElement(null, null, null, null), new SelectorElement(null, null, null, null),
new[] new[]
{ {
new StyleProperty("font", notoSans12), new StyleProperty("font", wariowareinc),
}), }),
// Default font. // Default font.
@@ -167,7 +176,7 @@ namespace Content.Client.Stylesheets
new SelectorElement(null, new[] {StyleClassItalic}, null, null), new SelectorElement(null, new[] {StyleClassItalic}, null, null),
new[] new[]
{ {
new StyleProperty("font", notoSans12Italic), new StyleProperty("font", wariowareinc),
}), }),
// Window close button base texture. // Window close button base texture.
@@ -177,7 +186,7 @@ namespace Content.Client.Stylesheets
new[] new[]
{ {
new StyleProperty(TextureButton.StylePropertyTexture, textureCloseButton), new StyleProperty(TextureButton.StylePropertyTexture, textureCloseButton),
new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#4B596A")), new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#1e1e1e")),
}), }),
// Window close button hover. // Window close button hover.
new StyleRule( new StyleRule(
@@ -185,7 +194,7 @@ namespace Content.Client.Stylesheets
new[] {TextureButton.StylePseudoClassHover}), new[] {TextureButton.StylePseudoClassHover}),
new[] new[]
{ {
new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#7F3636")), new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#960000")),
}), }),
// Window close button pressed. // Window close button pressed.
new StyleRule( new StyleRule(
@@ -193,7 +202,7 @@ namespace Content.Client.Stylesheets
new[] {TextureButton.StylePseudoClassPressed}), new[] {TextureButton.StylePseudoClassPressed}),
new[] new[]
{ {
new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#753131")), new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#141414")),
}), }),
// Scroll bars // Scroll bars

View File

@@ -29,7 +29,7 @@ namespace Content.Client.Stylesheets
// Ew, but ok // Ew, but ok
new[] new[]
{ {
$"/Fonts/IBMPlexSans/IBMPlexSans-{variation}.ttf", $"/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf",
$"/Fonts/NotoSans/NotoSansSymbols-{sv}.ttf", $"/Fonts/NotoSans/NotoSansSymbols-{sv}.ttf",
"/Fonts/NotoSans/NotoSansSymbols2-Regular.ttf", "/Fonts/NotoSans/NotoSansSymbols2-Regular.ttf",
}, },
@@ -66,6 +66,7 @@ namespace Content.Client.Stylesheets
public const string StyleClassStorageButton = "storageButton"; public const string StyleClassStorageButton = "storageButton";
public const string StyleClassFuckyWuckyBackground = "FuckyWuckyBackground"; public const string StyleClassFuckyWuckyBackground = "FuckyWuckyBackground";
public const string StyleClassGayShitBackground = "GayShitBackground"; public const string StyleClassGayShitBackground = "GayShitBackground";
public const string StyleClassLobbyGayBackground = "LobbyGayBackground";
public const string StyleClassSliderRed = "Red"; public const string StyleClassSliderRed = "Red";
public const string StyleClassSliderGreen = "Green"; public const string StyleClassSliderGreen = "Green";
@@ -85,28 +86,28 @@ namespace Content.Client.Stylesheets
public const string StyleClassPopupMessageLarge = "PopupMessageLarge"; public const string StyleClassPopupMessageLarge = "PopupMessageLarge";
public const string StyleClassPopupMessageLargeCaution = "PopupMessageLargeCaution"; public const string StyleClassPopupMessageLargeCaution = "PopupMessageLargeCaution";
public static readonly Color PanelDark = Color.FromHex("#1E1E22"); public static readonly Color PanelDark = Color.FromHex("#0a0a0a");
public static readonly Color NanoGold = Color.FromHex("#A2B1A8"); public static readonly Color NanoGold = Color.FromHex("#76428a");
public static readonly Color GoodGreenFore = Color.FromHex("#4D5B5C"); public static readonly Color GoodGreenFore = Color.FromHex("#006400");
public static readonly Color ConcerningOrangeFore = Color.FromHex("#5C5A4D"); public static readonly Color ConcerningOrangeFore = Color.FromHex("#99461d");
public static readonly Color DangerousRedFore = Color.FromHex("#5C4D5B"); public static readonly Color DangerousRedFore = Color.FromHex("#1e1e1e");
public static readonly Color DisabledFore = Color.FromHex("#262E29"); public static readonly Color DisabledFore = Color.FromHex("#5A5A5A");
public static readonly Color ButtonColorDefault = Color.FromHex("#4D5D53"); public static readonly Color ButtonColorDefault = Color.FromHex("#232323");
public static readonly Color ButtonColorDefaultRed = Color.FromHex("#992723"); public static readonly Color ButtonColorDefaultRed = Color.FromHex("#640000");
public static readonly Color ButtonColorHovered = Color.FromHex("#58695E"); public static readonly Color ButtonColorHovered = Color.FromHex("#2d2d2d");
public static readonly Color ButtonColorHoveredRed = Color.FromHex("#4D5D53"); public static readonly Color ButtonColorHoveredRed = Color.FromHex("#960000");
public static readonly Color ButtonColorPressed = Color.FromHex("#000000"); public static readonly Color ButtonColorPressed = Color.FromHex("#0f0f0f");
public static readonly Color ButtonColorDisabled = Color.FromHex("#000000"); public static readonly Color ButtonColorDisabled = Color.FromHex("#0f0f0f");
public static readonly Color ButtonColorCautionDefault = Color.FromHex("#ab3232"); public static readonly Color ButtonColorCautionDefault = Color.FromHex("#99461d");
public static readonly Color ButtonColorCautionHovered = Color.FromHex("#cf2f2f"); public static readonly Color ButtonColorCautionHovered = Color.FromHex("#cc5b27");
public static readonly Color ButtonColorCautionPressed = Color.FromHex("#3e6c45"); public static readonly Color ButtonColorCautionPressed = Color.FromHex("#662e13");
public static readonly Color ButtonColorCautionDisabled = Color.FromHex("#602a2a"); public static readonly Color ButtonColorCautionDisabled = Color.FromHex("#33170a");
public static readonly Color ButtonColorGoodDefault = Color.FromHex("#3E6C45"); public static readonly Color ButtonColorGoodDefault = Color.FromHex("#006400");
public static readonly Color ButtonColorGoodHovered = Color.FromHex("#31843E"); public static readonly Color ButtonColorGoodHovered = Color.FromHex("#009600");
public static readonly Color ButtonColorPurpleDefault = Color.FromHex("#4a2eab"); public static readonly Color ButtonColorPurpleDefault = Color.FromHex("#4a2eab");
public static readonly Color ButtonColorPurpleHovered = Color.FromHex("#654cbf"); public static readonly Color ButtonColorPurpleHovered = Color.FromHex("#654cbf");
@@ -129,10 +130,10 @@ namespace Content.Client.Stylesheets
public static readonly Color ExamineButtonColorContextDisabled = Color.FromHex("#262E29"); public static readonly Color ExamineButtonColorContextDisabled = Color.FromHex("#262E29");
// UI Panel colors // UI Panel colors
public static readonly Color PanelColorDark = Color.FromHex("#1B211D"); public static readonly Color PanelColorDark = Color.FromHex("#0f0f0f");
// Fancy Tree elements // Fancy Tree elements
public static readonly Color FancyTreeEvenRowColor = Color.FromHex("#313B35"); public static readonly Color FancyTreeEvenRowColor = Color.FromHex("#141414");
public static readonly Color FancyTreeOddRowColor = FancyTreeEvenRowColor * new Color(0.8f, 0.9f, 0.8f); public static readonly Color FancyTreeOddRowColor = FancyTreeEvenRowColor * new Color(0.8f, 0.9f, 0.8f);
public static readonly Color FancyTreeSelectedRowColor = new Color(55, 80, 68); public static readonly Color FancyTreeSelectedRowColor = new Color(55, 80, 68);
@@ -226,6 +227,17 @@ namespace Content.Client.Stylesheets
gayShitBackground.SetPatchMargin(StyleBox.Margin.All, 2); gayShitBackground.SetPatchMargin(StyleBox.Margin.All, 2);
gayShitBackground.SetExpandMargin(StyleBox.Margin.All, -2); gayShitBackground.SetExpandMargin(StyleBox.Margin.All, -2);
var lobbyGayBackgroundTex = resCache.GetTexture("/Textures/Interface/Nano/lobby_gay.png");
var lobbyGayBackground = new StyleBoxTexture
{
Texture = lobbyGayBackgroundTex,
Mode = StyleBoxTexture.StretchMode.Tile
};
lobbyGayBackground.SetPatchMargin(StyleBox.Margin.All, 24);
lobbyGayBackground.SetExpandMargin(StyleBox.Margin.All, -4);
lobbyGayBackground.SetContentMarginOverride(StyleBox.Margin.All, 8);
var contextMenuBackground = new StyleBoxTexture var contextMenuBackground = new StyleBoxTexture
{ {
Texture = borderedWindowBackgroundTex, Texture = borderedWindowBackgroundTex,
@@ -438,13 +450,13 @@ namespace Content.Client.Stylesheets
placeholder.SetExpandMargin(StyleBox.Margin.All, -5); placeholder.SetExpandMargin(StyleBox.Margin.All, -5);
placeholder.Mode = StyleBoxTexture.StretchMode.Tile; placeholder.Mode = StyleBoxTexture.StretchMode.Tile;
var itemListBackgroundSelected = new StyleBoxFlat {BackgroundColor = new Color(75, 90, 75)}; var itemListBackgroundSelected = new StyleBoxFlat {BackgroundColor = new Color(25, 25, 25)};
itemListBackgroundSelected.SetContentMarginOverride(StyleBox.Margin.Vertical, 2); itemListBackgroundSelected.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
itemListBackgroundSelected.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4); itemListBackgroundSelected.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4);
var itemListItemBackgroundDisabled = new StyleBoxFlat {BackgroundColor = new Color(10, 20, 10)}; var itemListItemBackgroundDisabled = new StyleBoxFlat {BackgroundColor = new Color(10, 10, 10)};
itemListItemBackgroundDisabled.SetContentMarginOverride(StyleBox.Margin.Vertical, 2); itemListItemBackgroundDisabled.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
itemListItemBackgroundDisabled.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4); itemListItemBackgroundDisabled.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4);
var itemListItemBackground = new StyleBoxFlat {BackgroundColor = new Color(55, 70, 55)}; var itemListItemBackground = new StyleBoxFlat {BackgroundColor = new Color(15, 15, 15)};
itemListItemBackground.SetContentMarginOverride(StyleBox.Margin.Vertical, 2); itemListItemBackground.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
itemListItemBackground.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4); itemListItemBackground.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4);
var itemListItemBackgroundTransparent = new StyleBoxFlat {BackgroundColor = Color.Transparent}; var itemListItemBackgroundTransparent = new StyleBoxFlat {BackgroundColor = Color.Transparent};
@@ -488,7 +500,7 @@ namespace Content.Client.Stylesheets
var sliderFillBox = new StyleBoxTexture var sliderFillBox = new StyleBoxTexture
{ {
Texture = sliderFillTex, Texture = sliderFillTex,
Modulate = Color.FromHex("#313B35") Modulate = Color.FromHex("#141414")
}; };
var sliderBackBox = new StyleBoxTexture var sliderBackBox = new StyleBoxTexture
@@ -500,12 +512,12 @@ namespace Content.Client.Stylesheets
var sliderForeBox = new StyleBoxTexture var sliderForeBox = new StyleBoxTexture
{ {
Texture = sliderOutlineTex, Texture = sliderOutlineTex,
Modulate = Color.FromHex("#47554C") Modulate = Color.FromHex("#1e1e1e")
}; };
var sliderGrabBox = new StyleBoxTexture var sliderGrabBox = new StyleBoxTexture
{ {
Texture = sliderGrabTex, Texture = sliderGrabTex
}; };
sliderFillBox.SetPatchMargin(StyleBox.Margin.All, 12); sliderFillBox.SetPatchMargin(StyleBox.Margin.All, 12);
@@ -523,7 +535,7 @@ namespace Content.Client.Stylesheets
var insetBack = new StyleBoxTexture var insetBack = new StyleBoxTexture
{ {
Texture = buttonTex, Texture = buttonTex,
Modulate = Color.FromHex("#212723"), Modulate = Color.FromHex("#202020"),
}; };
insetBack.SetPatchMargin(StyleBox.Margin.All, 10); insetBack.SetPatchMargin(StyleBox.Margin.All, 10);
@@ -699,6 +711,13 @@ namespace Content.Client.Stylesheets
new StyleProperty("font-color", Color.FromHex("#3C484181")), new StyleProperty("font-color", Color.FromHex("#3C484181")),
}), }),
new StyleRule(
new SelectorElement(null, new[] {StyleClassLobbyGayBackground}, null, null),
new[]
{
new StyleProperty(PanelContainer.StylePropertyPanel, lobbyGayBackground),
}),
// Context Menu window // Context Menu window
Element<PanelContainer>().Class(ContextMenuPopup.StyleClassContextMenuPopup) Element<PanelContainer>().Class(ContextMenuPopup.StyleClassContextMenuPopup)
.Prop(PanelContainer.StylePropertyPanel, contextMenuBackground), .Prop(PanelContainer.StylePropertyPanel, contextMenuBackground),
@@ -817,19 +836,19 @@ namespace Content.Client.Stylesheets
Element<ContainerButton>().Class(ListContainer.StyleClassListContainerButton) Element<ContainerButton>().Class(ListContainer.StyleClassListContainerButton)
.Pseudo(ContainerButton.StylePseudoClassNormal) .Pseudo(ContainerButton.StylePseudoClassNormal)
.Prop(Control.StylePropertyModulateSelf, new Color(55, 80, 68)), .Prop(Control.StylePropertyModulateSelf, new Color(25, 25, 25)),
Element<ContainerButton>().Class(ListContainer.StyleClassListContainerButton) Element<ContainerButton>().Class(ListContainer.StyleClassListContainerButton)
.Pseudo(ContainerButton.StylePseudoClassHover) .Pseudo(ContainerButton.StylePseudoClassHover)
.Prop(Control.StylePropertyModulateSelf, new Color(75, 90, 86)), .Prop(Control.StylePropertyModulateSelf, new Color(30, 30, 30)),
Element<ContainerButton>().Class(ListContainer.StyleClassListContainerButton) Element<ContainerButton>().Class(ListContainer.StyleClassListContainerButton)
.Pseudo(ContainerButton.StylePseudoClassPressed) .Pseudo(ContainerButton.StylePseudoClassPressed)
.Prop(Control.StylePropertyModulateSelf, new Color(75, 90, 86)), .Prop(Control.StylePropertyModulateSelf, new Color(30, 30, 30)),
Element<ContainerButton>().Class(ListContainer.StyleClassListContainerButton) Element<ContainerButton>().Class(ListContainer.StyleClassListContainerButton)
.Pseudo(ContainerButton.StylePseudoClassDisabled) .Pseudo(ContainerButton.StylePseudoClassDisabled)
.Prop(Control.StylePropertyModulateSelf, new Color(10, 20, 12)), .Prop(Control.StylePropertyModulateSelf, new Color(5, 5, 5)),
// Main menu: Make those buttons bigger. // Main menu: Make those buttons bigger.
new StyleRule(new SelectorChild( new StyleRule(new SelectorChild(
@@ -1022,7 +1041,7 @@ namespace Content.Client.Stylesheets
new StyleRule(new SelectorElement(typeof(ItemList), null, null, null), new[] new StyleRule(new SelectorElement(typeof(ItemList), null, null, null), new[]
{ {
new StyleProperty(ItemList.StylePropertyBackground, new StyleProperty(ItemList.StylePropertyBackground,
new StyleBoxFlat {BackgroundColor = new Color(32, 40, 32)}), new StyleBoxFlat {BackgroundColor = new Color(10, 10, 10)}),
new StyleProperty(ItemList.StylePropertyItemBackground, new StyleProperty(ItemList.StylePropertyItemBackground,
itemListItemBackground), itemListItemBackground),
new StyleProperty(ItemList.StylePropertyDisabledItemBackground, new StyleProperty(ItemList.StylePropertyDisabledItemBackground,
@@ -1047,10 +1066,10 @@ namespace Content.Client.Stylesheets
new StyleRule(new SelectorElement(typeof(Tree), null, null, null), new[] new StyleRule(new SelectorElement(typeof(Tree), null, null, null), new[]
{ {
new StyleProperty(Tree.StylePropertyBackground, new StyleProperty(Tree.StylePropertyBackground,
new StyleBoxFlat {BackgroundColor = new Color(32, 40, 32)}), new StyleBoxFlat {BackgroundColor = new Color(10, 10, 10)}),
new StyleProperty(Tree.StylePropertyItemBoxSelected, new StyleBoxFlat new StyleProperty(Tree.StylePropertyItemBoxSelected, new StyleBoxFlat
{ {
BackgroundColor = new Color(55, 75, 68), BackgroundColor = new Color(15, 15, 15),
ContentMarginLeftOverride = 4 ContentMarginLeftOverride = 4
}) })
}), }),
@@ -1338,7 +1357,7 @@ namespace Content.Client.Stylesheets
Element<PanelContainer>().Class(ClassAngleRect) Element<PanelContainer>().Class(ClassAngleRect)
.Prop(PanelContainer.StylePropertyPanel, BaseAngleRect) .Prop(PanelContainer.StylePropertyPanel, BaseAngleRect)
.Prop(Control.StylePropertyModulateSelf, Color.FromHex("#253025")), .Prop(Control.StylePropertyModulateSelf, Color.FromHex("#141414")),
Element<PanelContainer>().Class(ClassLowDivider) Element<PanelContainer>().Class(ClassLowDivider)
.Prop(PanelContainer.StylePropertyPanel, new StyleBoxFlat .Prop(PanelContainer.StylePropertyPanel, new StyleBoxFlat
@@ -1388,7 +1407,7 @@ namespace Content.Client.Stylesheets
.Prop(Control.StylePropertyModulateSelf, DangerousRedFore), .Prop(Control.StylePropertyModulateSelf, DangerousRedFore),
Element<TextureButton>().Class("CrossButtonRed").Pseudo(TextureButton.StylePseudoClassHover) Element<TextureButton>().Class("CrossButtonRed").Pseudo(TextureButton.StylePseudoClassHover)
.Prop(Control.StylePropertyModulateSelf, Color.FromHex("#5C4D51")), .Prop(Control.StylePropertyModulateSelf, Color.FromHex("#171717")),
Element<TextureButton>().Class("CrossButtonRed").Pseudo(TextureButton.StylePseudoClassHover) Element<TextureButton>().Class("CrossButtonRed").Pseudo(TextureButton.StylePseudoClassHover)
.Prop(Control.StylePropertyModulateSelf, Color.FromHex("#5C4D51")), .Prop(Control.StylePropertyModulateSelf, Color.FromHex("#5C4D51")),
@@ -1459,7 +1478,7 @@ namespace Content.Client.Stylesheets
//PDA - Backgrounds //PDA - Backgrounds
Element<PanelContainer>().Class("PdaContentBackground") Element<PanelContainer>().Class("PdaContentBackground")
.Prop(PanelContainer.StylePropertyPanel, BaseButtonOpenBoth) .Prop(PanelContainer.StylePropertyPanel, BaseButtonOpenBoth)
.Prop(Control.StylePropertyModulateSelf, Color.FromHex("#262E29")), .Prop(Control.StylePropertyModulateSelf, Color.FromHex("#141414")),
Element<PanelContainer>().Class("PdaBackground") Element<PanelContainer>().Class("PdaBackground")
.Prop(PanelContainer.StylePropertyPanel, BaseButtonOpenBoth) .Prop(PanelContainer.StylePropertyPanel, BaseButtonOpenBoth)
@@ -1473,7 +1492,7 @@ namespace Content.Client.Stylesheets
.Prop(PanelContainer.StylePropertyPanel, AngleBorderRect), .Prop(PanelContainer.StylePropertyPanel, AngleBorderRect),
Element<PanelContainer>().Class("BackgroundDark") Element<PanelContainer>().Class("BackgroundDark")
.Prop(PanelContainer.StylePropertyPanel, new StyleBoxFlat(Color.FromHex("#262E29"))), .Prop(PanelContainer.StylePropertyPanel, new StyleBoxFlat(Color.FromHex("#141414"))),
//PDA - Buttons //PDA - Buttons
Element<PdaSettingsButton>().Pseudo(ContainerButton.StylePseudoClassNormal) Element<PdaSettingsButton>().Pseudo(ContainerButton.StylePseudoClassNormal)

View File

@@ -10,27 +10,36 @@ namespace Content.Client.Stylesheets
{ {
public sealed class StyleSpace : StyleBase public sealed class StyleSpace : StyleBase
{ {
public static readonly Color SpaceRed = Color.FromHex("#9b2236"); public static readonly Color SpaceRed = Color.FromHex("#960000");
public static readonly Color ButtonColorDefault = Color.FromHex("#464966"); public static readonly Color ButtonColorDefault = Color.FromHex("#232323");
public static readonly Color ButtonColorHovered = Color.FromHex("#575b7f"); public static readonly Color ButtonColorHovered = Color.FromHex("#2d2d2d");
public static readonly Color ButtonColorPressed = Color.FromHex("#3e6c45"); public static readonly Color ButtonColorPressed = Color.FromHex("#0f0f0f");
public static readonly Color ButtonColorDisabled = Color.FromHex("#30313c"); public static readonly Color ButtonColorDisabled = Color.FromHex("#0f0f0f");
public static readonly Color ButtonColorCautionDefault = Color.FromHex("#ab3232"); public static readonly Color ButtonColorCautionDefault = Color.FromHex("#640000");
public static readonly Color ButtonColorCautionHovered = Color.FromHex("#cf2f2f"); public static readonly Color ButtonColorCautionHovered = Color.FromHex("#960000");
public static readonly Color ButtonColorCautionPressed = Color.FromHex("#3e6c45"); public static readonly Color ButtonColorCautionPressed = Color.FromHex("#0f0f0f");
public static readonly Color ButtonColorCautionDisabled = Color.FromHex("#602a2a"); public static readonly Color ButtonColorCautionDisabled = Color.FromHex("#0f0f0f");
public override Stylesheet Stylesheet { get; } public override Stylesheet Stylesheet { get; }
public StyleSpace(IResourceCache resCache) : base(resCache) public StyleSpace(IResourceCache resCache) : base(resCache)
{ {
var whiteRabbit = resCache.GetFont
(
new []
{
"/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf"
},
10
);
var notoSans10 = resCache.GetFont var notoSans10 = resCache.GetFont
( (
new [] new []
{ {
"/Fonts/NotoSans/NotoSans-Regular.ttf", "/Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf",
"/Fonts/NotoSans/NotoSansSymbols-Regular.ttf", "/Fonts/NotoSans/NotoSansSymbols-Regular.ttf",
"/Fonts/NotoSans/NotoSansSymbols2-Regular.ttf" "/Fonts/NotoSans/NotoSansSymbols2-Regular.ttf"
}, },
@@ -40,7 +49,7 @@ namespace Content.Client.Stylesheets
( (
new [] new []
{ {
"/Fonts/NotoSans/NotoSans-Bold.ttf", "/Fonts/IBMPlexMono/IBMPlexMono-Bold.ttf",
"/Fonts/NotoSans/NotoSansSymbols-Regular.ttf", "/Fonts/NotoSans/NotoSansSymbols-Regular.ttf",
"/Fonts/NotoSans/NotoSansSymbols2-Regular.ttf" "/Fonts/NotoSans/NotoSansSymbols2-Regular.ttf"
}, },
@@ -72,11 +81,11 @@ namespace Content.Client.Stylesheets
Stylesheet = new Stylesheet(BaseRules.Concat(new StyleRule[] Stylesheet = new Stylesheet(BaseRules.Concat(new StyleRule[]
{ {
Element<Label>().Class(StyleClassLabelHeading) Element<Label>().Class(StyleClassLabelHeading)
.Prop(Label.StylePropertyFont, notoSansBold16) .Prop(Label.StylePropertyFont, whiteRabbit)
.Prop(Label.StylePropertyFontColor, SpaceRed), .Prop(Label.StylePropertyFontColor, SpaceRed),
Element<Label>().Class(StyleClassLabelSubText) Element<Label>().Class(StyleClassLabelSubText)
.Prop(Label.StylePropertyFont, notoSans10) .Prop(Label.StylePropertyFont, whiteRabbit)
.Prop(Label.StylePropertyFontColor, Color.DarkGray), .Prop(Label.StylePropertyFontColor, Color.DarkGray),
Element<PanelContainer>().Class(ClassHighDivider) Element<PanelContainer>().Class(ClassHighDivider)
@@ -153,7 +162,7 @@ namespace Content.Client.Stylesheets
Element<PanelContainer>().Class(ClassAngleRect) Element<PanelContainer>().Class(ClassAngleRect)
.Prop(PanelContainer.StylePropertyPanel, BaseAngleRect) .Prop(PanelContainer.StylePropertyPanel, BaseAngleRect)
.Prop(Control.StylePropertyModulateSelf, Color.FromHex("#202030")), .Prop(Control.StylePropertyModulateSelf, Color.FromHex("#191919")),
Child() Child()
.Parent(Element<Button>().Class(ContainerButton.StylePseudoClassDisabled)) .Parent(Element<Button>().Class(ContainerButton.StylePseudoClassDisabled))

View File

@@ -15,11 +15,11 @@ public sealed class MenuButton : ContainerButton
public const string StyleClassLabelTopButton = "topButtonLabel"; public const string StyleClassLabelTopButton = "topButtonLabel";
public const string StyleClassRedTopButton = "topButtonLabel"; public const string StyleClassRedTopButton = "topButtonLabel";
private static readonly Color ColorNormal = Color.FromHex("#879B8F"); private static readonly Color ColorNormal = Color.FromHex("#5a5a5a");
private static readonly Color ColorRedNormal = Color.FromHex("#aC4D5B"); private static readonly Color ColorRedNormal = Color.FromHex("#640000");
private static readonly Color ColorHovered = Color.FromHex("#ffffff"); private static readonly Color ColorHovered = Color.FromHex("#646464");
private static readonly Color ColorRedHovered = Color.FromHex("#FFFFFF"); private static readonly Color ColorRedHovered = Color.FromHex("#960000");
private static readonly Color ColorPressed = Color.FromHex("#789B8C"); private static readonly Color ColorPressed = Color.FromHex("#464646");
private const float VertPad = 8f; private const float VertPad = 8f;
private Color NormalColor => HasStyleClass(StyleClassRedTopButton) ? ColorRedNormal : ColorNormal; private Color NormalColor => HasStyleClass(StyleClassRedTopButton) ? ColorRedNormal : ColorNormal;

View File

@@ -41,7 +41,7 @@ namespace Content.Client.UserInterface.Systems.Atmos.GasTank
var back = new StyleBoxTexture var back = new StyleBoxTexture
{ {
Texture = panelTex, Texture = panelTex,
Modulate = Color.FromHex("#25252A"), Modulate = Color.FromHex("#141414"),
}; };
back.SetPatchMargin(StyleBox.Margin.All, 10); back.SetPatchMargin(StyleBox.Margin.All, 10);

View File

@@ -7,9 +7,9 @@ namespace Content.Client.UserInterface.Systems.Chat.Controls;
public sealed class ChannelFilterButton : ChatPopupButton<ChannelFilterPopup> public sealed class ChannelFilterButton : ChatPopupButton<ChannelFilterPopup>
{ {
private static readonly Color ColorNormal = Color.FromHex("#7b7e9e"); private static readonly Color ColorNormal = Color.FromHex("#5a5a5a");
private static readonly Color ColorHovered = Color.FromHex("#9699bb"); private static readonly Color ColorHovered = Color.FromHex("#646464");
private static readonly Color ColorPressed = Color.FromHex("#789B8C"); private static readonly Color ColorPressed = Color.FromHex("#464646");
private readonly TextureRect? _textureRect; private readonly TextureRect? _textureRect;
private readonly ChatUIController _chatUIController; private readonly ChatUIController _chatUIController;

View File

@@ -9,7 +9,7 @@
MinSize="465 225"> MinSize="465 225">
<PanelContainer HorizontalExpand="True" VerticalExpand="True"> <PanelContainer HorizontalExpand="True" VerticalExpand="True">
<PanelContainer.PanelOverride> <PanelContainer.PanelOverride>
<graphics:StyleBoxFlat BackgroundColor="#25252ADD" /> <graphics:StyleBoxFlat BackgroundColor="#141414AA" />
</PanelContainer.PanelOverride> </PanelContainer.PanelOverride>
<BoxContainer Orientation="Vertical" SeparationOverride="4" HorizontalExpand="True" VerticalExpand="True"> <BoxContainer Orientation="Vertical" SeparationOverride="4" HorizontalExpand="True" VerticalExpand="True">

View File

@@ -49,7 +49,7 @@ namespace Content.Client.Wires.UI
var back = new StyleBoxTexture var back = new StyleBoxTexture
{ {
Texture = panelTex, Texture = panelTex,
Modulate = Color.FromHex("#25252A"), Modulate = Color.FromHex("#141414")
}; };
back.SetPatchMargin(StyleBox.Margin.All, 10); back.SetPatchMargin(StyleBox.Margin.All, 10);

View File

@@ -0,0 +1,34 @@
using Robust.Client.Console;
namespace Content.Client._Ohio.Buttons;
[Virtual]
public class OhioCommandButton : OhioLobbyTextButton
{
public string? Command { get; set; }
public OhioCommandButton()
{
OnPressed += Execute;
}
private bool CanPress()
{
return string.IsNullOrEmpty(Command) ||
IoCManager.Resolve<IClientConGroupController>().CanCommand(Command.Split(' ')[0]);
}
protected override void EnteredTree()
{
if (!CanPress())
{
Visible = false;
}
}
protected virtual void Execute(ButtonEventArgs obj)
{
if (!string.IsNullOrEmpty(Command))
IoCManager.Resolve<IClientConsoleHost>().ExecuteCommand(Command);
}
}

View File

@@ -0,0 +1,211 @@
using System.Numerics;
using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls;
namespace Content.Client._Ohio.Buttons;
[Virtual]
public class OhioLobbyButton : BaseButton
{
private Vector2 _scale = new(1, 1);
private Texture? _texture;
private Texture? _textureDefault;
private Texture? _textureHighLighted;
private Texture? _texturePressed;
private Texture? _textureDisabled;
private string? _texturePath;
private string? _textureHighLightedPath;
private string? _texturePressedPath;
private string? _textureDisabledPath;
private Texture? _arrowTexture;
private string? _arrowTexturePath = "/Textures/Ohio/Lobby/arrow.png";
public OhioLobbyButton()
{
_arrowTexture = Theme.ResolveTexture(_arrowTexturePath);
DrawModeChanged();
}
// Textures GET-SET Start
[ViewVariables]
private Texture? TextureNormal
{
get => _texture;
set
{
_texture = value;
InvalidateMeasure();
}
}
[ViewVariables]
public Texture? TextureDefault
{
get => _textureDefault;
set
{
_textureDefault = value;
InvalidateMeasure();
}
}
[ViewVariables]
public Texture? TextureHighLighted
{
get => _textureHighLighted;
set
{
_textureHighLighted = value;
InvalidateMeasure();
}
}
[ViewVariables]
public Texture? TexturePressed
{
get => _texturePressed;
set
{
_texturePressed = value;
InvalidateMeasure();
}
}
[ViewVariables]
public Texture? TextureDisabled
{
get => _textureDisabled;
set
{
_textureDisabled = value;
InvalidateMeasure();
}
}
// Textures GET-SET END
// Textures Path GET-SET START
public string TexturePath
{
set
{
_texturePath = value;
TextureNormal = Theme.ResolveTexture(_texturePath);
TextureDefault = TextureNormal;
}
}
public string TextureHighLightedPath
{
set
{
_textureHighLightedPath = value;
TextureHighLighted = Theme.ResolveTexture(_textureHighLightedPath);
}
}
public string TexturePressedPath
{
set
{
_texturePressedPath = value;
TexturePressed = Theme.ResolveTexture(_texturePressedPath);
}
}
public string TextureDisabledPath
{
set
{
_textureDisabledPath = value;
TextureDisabled = Theme.ResolveTexture(_textureDisabledPath);
}
}
// Textures Path GET-SET END
// Arrow Texture GET-SET START
public Texture? ArrowTexture
{
get => _arrowTexture;
set
{
_arrowTexture = value;
InvalidateMeasure();
}
}
public string ArrowTexturePath
{
set
{
_arrowTexturePath = value;
ArrowTexture = Theme.ResolveTexture(_arrowTexturePath);
}
}
// Arrow Texture GET-SET END
public Vector2 Scale
{
get => _scale;
set
{
_scale = value;
InvalidateMeasure();
}
}
protected override void DrawModeChanged()
{
_texture = DrawMode switch
{
DrawModeEnum.Normal => _textureDefault,
DrawModeEnum.Pressed => _texturePressed,
DrawModeEnum.Hover => _textureHighLighted,
DrawModeEnum.Disabled => _textureDisabled,
_ => _textureDefault
};
}
protected override void Draw(DrawingHandleScreen handle)
{
var texture = TextureNormal;
if (texture == null)
return;
handle.DrawTextureRectRegion(texture, PixelSizeBox);
// Draw the arrow indicator when selected
if (IsHovered)
{
var arrowTexture = _arrowTexture;
if (arrowTexture == null)
{
return;
}
var arrowPosition = new Vector2(SizeBox.Right - 150, SizeBox.Top + (SizeBox.Height - arrowTexture.Size.Y) / 2);
handle.DrawTextureRectRegion(arrowTexture, UIBox2.FromDimensions(arrowPosition, arrowTexture.Size));
}
}
protected override Vector2 MeasureOverride(Vector2 availableSize)
{
var texture = TextureNormal;
return Scale * (texture?.Size ?? Vector2.Zero);
}
}

View File

@@ -0,0 +1,132 @@
using System.Numerics;
using Robust.Client.Graphics;
using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface.Controls;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using Color = Robust.Shared.Maths.Color;
namespace Content.Client._Ohio.Buttons;
[Virtual]
public class OhioLobbyTextButton : TextureButton // ShitCode Edition
{
[Dependency] private readonly IResourceCache _resourceCache = default!;
private readonly Font _font;
private string? _buttonText;
public string ButtonText
{
set => _buttonText = value;
}
public OhioLobbyTextButton()
{
IoCManager.InjectDependencies(this);
_font = new VectorFont(_resourceCache.GetResource<FontResource>("/Fonts/Bedstead/Bedstead.otf"), 15);
}
private void RebuildTexture()
{
if (_buttonText == null)
return;
var fontMeasure = MeasureText(_font, _buttonText);
var blank = new Image<Rgba32>((int)fontMeasure.X, (int)fontMeasure.Y);
blank[0, 0] = new Rgba32(0, 0, 0, 0);
var texture = Texture.LoadFromImage(blank);
TextureNormal = texture;
}
protected override void Draw(DrawingHandleScreen handle)
{
base.Draw(handle);
switch (DrawMode)
{
case DrawModeEnum.Normal:
DrawNormal(handle);
break;
case DrawModeEnum.Pressed:
DrawPressed(handle);
break;
case DrawModeEnum.Hover:
DrawHover(handle);
break;
case DrawModeEnum.Disabled:
DrawDisabled(handle);
break;
}
}
private void DrawNormal(DrawingHandleScreen handle)
{
if (string.IsNullOrEmpty(_buttonText))
return;
var color = Color.White;
if (ToggleMode)
{
color = Color.Red;
}
DrawText(handle, color);
}
private void DrawHover(DrawingHandleScreen handle)
{
if (string.IsNullOrEmpty(_buttonText))
return;
DrawText(handle, Color.Yellow);
}
private void DrawDisabled(DrawingHandleScreen handle)
{
if (string.IsNullOrEmpty(_buttonText))
return;
DrawText(handle, Color.Gray);
}
private void DrawPressed(DrawingHandleScreen handle)
{
if (string.IsNullOrEmpty(_buttonText))
return;
var color = Pressed
? Color.Green
: Color.Red;
DrawText(handle, color);
}
private void DrawText(DrawingHandleScreen handle, Color color)
{
if (string.IsNullOrEmpty(_buttonText))
return;
RebuildTexture();
handle.DrawString(
_font,
Vector2.Zero,
_buttonText!,
color
);
}
private Vector2 MeasureText(Font font, string text)
{
var textSize = font.GetHeight(0.9f);
var width = textSize * text.Length / 1.5f;
return new Vector2(width, textSize);
}
}

View File

@@ -0,0 +1,18 @@
using Robust.Client.UserInterface.CustomControls;
namespace Content.Client._Ohio.Buttons;
public sealed class OhioUICommandButton : OhioCommandButton
{
public Type? WindowType { get; set; }
private DefaultWindow? _window;
protected override void Execute(ButtonEventArgs obj)
{
if (WindowType == null)
return;
_window = (DefaultWindow) IoCManager.Resolve<IDynamicTypeFactory>().CreateInstance(WindowType);
_window?.OpenCentered();
}
}

View File

@@ -0,0 +1,91 @@
using Robust.Client.Graphics;
using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Graphics.RSI;
using Robust.Shared.Timing;
namespace Content.Client._Ohio.UI;
public sealed class AnimatedBackgroundControl : TextureRect
{
[Dependency] private readonly IResourceCache _resourceCache = default!;
[Dependency] private readonly IClyde _clyde = default!;
private const string RsiPath = "/Textures/Ohio/Lobby/anim.rsi";
private const int States = 1;
private IRenderTexture? _buffer;
private readonly float[] _timer = new float[States];
private readonly float[][] _frameDelays = new float[States][];
private readonly int[] _frameCounter = new int[States];
private readonly Texture[][] _frames = new Texture[States][];
public AnimatedBackgroundControl()
{
IoCManager.InjectDependencies(this);
InitializeStates();
}
private void InitializeStates()
{
var rsi = _resourceCache.GetResource<RSIResource>(RsiPath).RSI;
for (var i = 0; i < States; i++)
{
if (!rsi.TryGetState((i + 1).ToString(), out var state))
continue;
_frames[i] = state.GetFrames(RsiDirection.South);
_frameDelays[i] = state.GetDelays();
_frameCounter[i] = 0;
}
}
protected override void FrameUpdate(FrameEventArgs args)
{
base.FrameUpdate(args);
for (var i = 0; i < _frames.Length; i++)
{
var delays = _frameDelays[i];
if (delays.Length == 0)
continue;
_timer[i] += args.DeltaSeconds * 0.20f;
var currentFrameIndex = _frameCounter[i];
if (!(_timer[i] >= delays[currentFrameIndex]))
continue;
_timer[i] -= delays[currentFrameIndex];
_frameCounter[i] = (currentFrameIndex + 1) % _frames[i].Length;
Texture = _frames[i][_frameCounter[i]];
}
}
protected override void Draw(DrawingHandleScreen handle)
{
base.Draw(handle);
if (_buffer is null)
return;
handle.DrawTextureRect(_buffer.Texture, PixelSizeBox);
}
protected override void Resized()
{
base.Resized();
_buffer?.Dispose();
_buffer = _clyde.CreateRenderTarget(PixelSize, RenderTargetColorFormat.Rgba8Srgb);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
_buffer?.Dispose();
}
}

View File

@@ -0,0 +1,30 @@
using System.Numerics;
using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls;
namespace Content.Client._Ohio.UI;
public sealed class OhioRichTextLabel : RichTextLabel
{
private Texture? _moonTexture;
private string? _moonTexturePath = "/Textures/Ohio/Lobby/moon.png";
public OhioRichTextLabel()
{
_moonTexture = Theme.ResolveTexture(_moonTexturePath);
}
protected override void Draw(DrawingHandleScreen handle)
{
base.Draw(handle);
var moonTexture = _moonTexture;
if (moonTexture == null)
return;
var moonPosition = new Vector2(SizeBox.Right + 2, SizeBox.Top + (SizeBox.Height - moonTexture.Size.Y) / 2);
handle.DrawTextureRectRegion(moonTexture, UIBox2.FromDimensions(moonPosition, moonTexture.Size));
}
}

View File

@@ -1,6 +1,6 @@
<BoxContainer xmlns="https://spacestation14.io" <BoxContainer xmlns="https://spacestation14.io"
Orientation="Vertical" HorizontalExpand="True"> Orientation="Vertical" HorizontalExpand="True">
<Label Text="Правила сервера White Dream" <Label Text="Правила сервера Green Miracle"
StyleClasses="LabelHeading" StyleClasses="LabelHeading"
HorizontalExpand="True" HorizontalExpand="True"
HorizontalAlignment="Center"/> HorizontalAlignment="Center"/>

View File

@@ -19,6 +19,7 @@
<PackageReference Include="Newtonsoft.Json" /> <PackageReference Include="Newtonsoft.Json" />
<PackageVersion Include="NetCoreServer" Version="6.7.0" /> <PackageVersion Include="NetCoreServer" Version="6.7.0" />
<PackageVersion Include="Newtonsoft.Json" Version="12.0.3" /> <PackageVersion Include="Newtonsoft.Json" Version="12.0.3" />
<PackageVersion Remove="Microsoft.NET.ILLink.Tasks" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Content.Packaging\Content.Packaging.csproj" /> <ProjectReference Include="..\Content.Packaging\Content.Packaging.csproj" />

View File

@@ -410,13 +410,13 @@ namespace Content.Server.GameTicking
"Данному виду запрещено играть на этой профессии. Вам была выдана случайная внешность с подходящим видом из вашего профиля."); "Данному виду запрещено играть на этой профессии. Вам была выдана случайная внешность с подходящим видом из вашего профиля.");
} }
StringBuilder availableSpeciesLoc = new StringBuilder(); var availableSpeciesLoc = new StringBuilder();
foreach (var specie in whitelistedSpecies) foreach (var specie in whitelistedSpecies)
{ {
availableSpeciesLoc.AppendLine("-" + Loc.GetString($"species-name-{specie.ToLower()}")); availableSpeciesLoc.AppendLine("- " + Loc.GetString($"species-name-{specie.ToLower()}"));
} }
_chatManager.DispatchServerMessage(player, $"Доступные виды: \n {availableSpeciesLoc}"); _chatManager.DispatchServerMessage(player, $"Доступные виды:\n{availableSpeciesLoc}");
} }
return character; return character;

View File

@@ -495,7 +495,7 @@ namespace Content.Shared.CCVar
/// Whether tips being shown is enabled at all. /// Whether tips being shown is enabled at all.
/// </summary> /// </summary>
public static readonly CVarDef<bool> TipsEnabled = public static readonly CVarDef<bool> TipsEnabled =
CVarDef.Create("tips.enabled", true); CVarDef.Create("tips.enabled", false);
/// <summary> /// <summary>
/// The dataset prototype to use when selecting a random tip. /// The dataset prototype to use when selecting a random tip.
@@ -677,9 +677,9 @@ namespace Content.Shared.CCVar
* Specific Sounds * Specific Sounds
*/ */
// Round end sound (APC Destroyed) // Round end sound (APC Destroyed)
// hailrakes note: this thing is broken somehow. Disabled for now
public static readonly CVarDef<bool> RestartSoundsEnabled = public static readonly CVarDef<bool> RestartSoundsEnabled =
CVarDef.Create("ambience.restart_sounds_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); CVarDef.Create("ambience.restart_sounds_enabled", false, CVar.ARCHIVE | CVar.CLIENTONLY);
/* /*
* Admin sounds * Admin sounds

View File

@@ -6,7 +6,7 @@ public static class ChatChannelExtensions
{ {
return channel switch return channel switch
{ {
ChatChannel.Server => Color.Orange, ChatChannel.Server => Color.FromHex("#9051a8"),
ChatChannel.Radio => Color.LimeGreen, ChatChannel.Radio => Color.LimeGreen,
ChatChannel.LOOC => Color.MediumTurquoise, ChatChannel.LOOC => Color.MediumTurquoise,
ChatChannel.OOC => Color.LightSkyBlue, ChatChannel.OOC => Color.LightSkyBlue,

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,93 @@
Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@@ -12,3 +12,4 @@ changelog-button-new-entries = Changelog (new!)
changelog-tab-title-Changelog = Changelog changelog-tab-title-Changelog = Changelog
changelog-tab-title-Admin = Admin changelog-tab-title-Admin = Admin
changelog-tab-title-ChangelogWhite = Green Miracle

View File

@@ -1,4 +1,4 @@
hud-chatbox-info = { $talk-key } для разговора, { $cycle-key } для переключения каналов. hud-chatbox-info = { $cycle-key } для переключения каналов.
hud-chatbox-select-name-prefixed = { $prefix } { $name } hud-chatbox-select-name-prefixed = { $prefix } { $name }
hud-chatbox-select-channel-Admin = Админ hud-chatbox-select-channel-Admin = Админ
hud-chatbox-select-channel-Console = Консоль hud-chatbox-select-channel-Console = Консоль

View File

@@ -8,14 +8,12 @@ game-ticker-pause-start = Начало раунда было приостано
game-ticker-pause-start-resumed = Отсчет начала раунда возобновлен. game-ticker-pause-start-resumed = Отсчет начала раунда возобновлен.
game-ticker-player-join-game-message = Добро пожаловать на Космическую Станцию 14! Если вы играете впервые, обязательно нажмите ESC на клавиатуре и прочитайте правила игры, а также не бойтесь просить помощи в "Админ помощь". game-ticker-player-join-game-message = Добро пожаловать на Космическую Станцию 14! Если вы играете впервые, обязательно нажмите ESC на клавиатуре и прочитайте правила игры, а также не бойтесь просить помощи в "Админ помощь".
game-ticker-get-info-text = game-ticker-get-info-text =
Привет и добро пожаловать в [color=white]Space Station 14![/color]
Текущий раунд: [color=white]#{ $roundId }[/color] Текущий раунд: [color=white]#{ $roundId }[/color]
Текущее количество игроков: [color=white]{ $playerCount }[/color] Текущее количество игроков: [color=white]{ $playerCount }[/color]
Текущая карта: [color=white]{ $mapName }[/color] Текущая карта: [color=white]{ $mapName }[/color]
Текущий режим игры: [color=white]{ $gmTitle }[/color] Текущий режим игры: [color=white]{ $gmTitle }[/color]
>[color=yellow]{ $desc }[/color]
game-ticker-get-info-preround-text = game-ticker-get-info-preround-text =
Привет и добро пожаловать в [color=white]Space Station 14![/color]
Текущий раунд: [color=white]#{ $roundId }[/color] Текущий раунд: [color=white]#{ $roundId }[/color]
Текущее количество игроков: [color=white]{ $playerCount }[/color] ([color=white]{ $readyCount }[/color] { $readyCount -> Текущее количество игроков: [color=white]{ $playerCount }[/color] ([color=white]{ $readyCount }[/color] { $readyCount ->
[one] готов [one] готов
@@ -23,7 +21,7 @@ game-ticker-get-info-preround-text =
}) })
Текущая карта: [color=white]{ $mapName }[/color] Текущая карта: [color=white]{ $mapName }[/color]
Текущий режим игры: [color=white]{ $gmTitle }[/color] Текущий режим игры: [color=white]{ $gmTitle }[/color]
>[color=yellow]{ $desc }[/color]
game-ticker-no-map-selected = [color=red]Карта ещё не выбрана![/color] game-ticker-no-map-selected = [color=red]Карта ещё не выбрана![/color]
game-ticker-player-no-jobs-available-when-joining = При попытке присоединиться к игре ни одной роли не было доступно. game-ticker-player-no-jobs-available-when-joining = При попытке присоединиться к игре ни одной роли не было доступно.
# Displayed in chat to admins when a player joins # Displayed in chat to admins when a player joins

View File

@@ -1,6 +1,6 @@
# Rules # Rules
ui-rules-header = Правила сервера White Dream ui-rules-header = Правила сервера Green Miracle
ui-rules-header-rp = Правила сервера White Dream ui-rules-header-rp = Правила сервера Green Miracle
ui-rules-accept = Я ознакомился и согласен следовать правилам ui-rules-accept = Я ознакомился и согласен следовать правилам
ui-rules-wait = Кнопка принятия будет разблокирована через { $time } секунд. ui-rules-wait = Кнопка принятия будет разблокирована через { $time } секунд.

View File

@@ -19,5 +19,4 @@
- type: soundCollection - type: soundCollection
id: LobbyMusic id: LobbyMusic
files: files:
- /Audio/Lobby/saveheaven.ogg - /Audio/Lobby/bobby.ogg
- /Audio/Lobby/roomishere.ogg

View File

@@ -1,18 +1,18 @@
- type: font - type: font
id: Default id: Default
path: /Fonts/NotoSans/NotoSans-Regular.ttf path: /Fonts/IBMPlexMono/IBMPlexMono-Regular.ttf
- type: font - type: font
id: DefaultItalic id: DefaultItalic
path: /Fonts/NotoSans/NotoSans-Italic.ttf path: /Fonts/IBMPlexMono/IBMPlexMono-Italic.ttf
- type: font - type: font
id: DefaultBold id: DefaultBold
path: /Fonts/NotoSans/NotoSans-Bold.ttf path: /Fonts/IBMPlexMono/IBMPlexMono-Bold.ttf
- type: font - type: font
id: DefaultBoldItalic id: DefaultBoldItalic
path: /Fonts/NotoSans/NotoSans-BoldItalic.ttf path: /Fonts/IBMPlexMono/IBMPlexMono-BoldItalic.ttf
- type: font - type: font
id: NotoSansDisplay id: NotoSansDisplay

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

After

Width:  |  Height:  |  Size: 88 B

View File

@@ -1,16 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg <svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="20" width="20"
height="19.999998" height="19.999998"
viewBox="0 0 5.2916661 5.2916662" viewBox="0 0 5.2916661 5.2916662"
version="1.1" version="1.1"
id="svg8" id="svg8"
style="enable-background:new"> style="enable-background:new"
sodipodi:docname="checkbox_checked.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<sodipodi:namedview
id="namedview15"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="21.575002"
inkscape:cx="17.775201"
inkscape:cy="6.5353412"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<defs <defs
id="defs2"> id="defs2">
<marker <marker
@@ -27,7 +50,11 @@
</marker> </marker>
<filter <filter
style="color-interpolation-filters:sRGB" style="color-interpolation-filters:sRGB"
id="filter9714"> id="filter9714"
x="-0.11111111"
y="-0.11111112"
width="1.2222222"
height="1.2222222">
<feBlend <feBlend
mode="normal" mode="normal"
in2="BackgroundImage" in2="BackgroundImage"
@@ -42,7 +69,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title> <dc:title />
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@@ -56,24 +83,24 @@
height="5.1954541" height="5.1954541"
x="78.147339" x="78.147339"
y="142.25995" y="142.25995"
style="display:inline;fill:#3d4059;fill-opacity:1;fill-rule:nonzero;stroke:#3d4059;stroke-width:1.15454543;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" style="display:inline;fill:#282828;fill-opacity:1;fill-rule:nonzero;stroke:#282828;stroke-width:1.15454543;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
ry="0.5931561" /> ry="0.5931561" />
</g> </g>
<g <g
id="layer2" id="layer2"
style="opacity:1" style="opacity:1;stroke-width:1.00002114;stroke-dasharray:none"
transform="matrix(0.84876535,0,0,0.84876535,-2.7438235,-11.726601)"> transform="matrix(0.84876535,0,0,0.84876535,-2.7438235,-11.726601)">
<g <g
id="g9680" id="g9680"
transform="matrix(0.25712973,0.25712973,-0.25712973,0.25712973,12.687721,15.603163)" transform="matrix(0.25712973,0.25712973,-0.25712973,0.25712973,12.687721,15.603163)"
style="fill:#a88b5e;fill-opacity:1"> style="fill:#5f5f5f;fill-opacity:1;stroke-width:2.75005822;stroke-dasharray:none">
<rect <rect
y="8.996666" y="8.996666"
x="-9.5863533" x="-9.5863533"
height="10.583333" height="10.583333"
width="1.8520833" width="1.8520833"
id="rect9671" id="rect9671"
style="fill:#a88b5e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.17499995;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" style="fill:#5f5f5f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.75005822;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="0.52916664" /> rx="0.52916664" />
<rect <rect
y="17.727915" y="17.727915"
@@ -81,7 +108,7 @@
height="1.8520832" height="1.8520832"
width="5.2916665" width="5.2916665"
id="rect9673" id="rect9673"
style="fill:#a88b5e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.17499971;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" style="fill:#5f5f5f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.75005822;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="0.52916664" /> rx="0.52916664" />
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 333 B

View File

@@ -1,15 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg <svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="20" width="20"
height="20" height="20"
viewBox="0 0 5.2916661 5.2916667" viewBox="0 0 5.2916661 5.2916667"
version="1.1" version="1.1"
id="svg8"> id="svg8"
sodipodi:docname="checkbox_unchecked.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<sodipodi:namedview
id="namedview9"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="43.15"
inkscape:cx="7.9606025"
inkscape:cy="9.9884125"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<defs <defs
id="defs2"> id="defs2">
<marker <marker
@@ -33,7 +56,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title> <dc:title />
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@@ -46,7 +69,7 @@
height="5.1954546" height="5.1954546"
x="78.147339" x="78.147339"
y="142.25995" y="142.25995"
style="fill:none;stroke:#3d4059;stroke-width:1.15454543;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" style="fill:none;stroke:#282828;stroke-width:1.15454543;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
ry="0.5931561" /> ry="0.5931561" />
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

After

Width:  |  Height:  |  Size: 88 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 B

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1023 B

View File

@@ -2,23 +2,23 @@
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg <svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32" width="32"
height="32" height="32"
viewBox="0 0 8.4666666 8.4666669" viewBox="0 0 8.4666666 8.4666669"
version="1.1" version="1.1"
id="svg1057" id="svg1057"
inkscape:version="0.92.4 5da689c313, 2019-01-14" inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
sodipodi:docname="stripback.svg" sodipodi:docname="stripeback.svg"
inkscape:export-filename="/ssdhome/pj/Projects/space-station-14-content/Resources/Textures/Interface/Nano/stripeback.png" inkscape:export-filename="/ssdhome/pj/Projects/space-station-14-content/Resources/Textures/Interface/Nano/stripeback.png"
inkscape:export-xdpi="96" inkscape:export-xdpi="96"
inkscape:export-ydpi="96"> inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs <defs
id="defs1051" /> id="defs1051" />
<sodipodi:namedview <sodipodi:namedview
@@ -29,18 +29,20 @@
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="22.627417" inkscape:zoom="22.627417"
inkscape:cx="15.032227" inkscape:cx="11.203223"
inkscape:cy="17.599459" inkscape:cy="17.633475"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="layer1" inkscape:current-layer="layer1"
showgrid="false" showgrid="false"
units="px" units="px"
inkscape:pagecheckerboard="true" inkscape:pagecheckerboard="true"
inkscape:window-width="1920" inkscape:window-width="1920"
inkscape:window-height="1043" inkscape:window-height="1017"
inkscape:window-x="0" inkscape:window-x="-8"
inkscape:window-y="0" inkscape:window-y="-8"
inkscape:window-maximized="1" /> inkscape:window-maximized="1"
inkscape:showpageshadow="0"
inkscape:deskcolor="#d1d1d1" />
<metadata <metadata
id="metadata1054"> id="metadata1054">
<rdf:RDF> <rdf:RDF>
@@ -49,7 +51,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title> <dc:title />
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@@ -59,7 +61,7 @@
id="layer1" id="layer1"
transform="translate(0,-288.53331)"> transform="translate(0,-288.53331)">
<rect <rect
style="opacity:1;vector-effect:none;fill:#1e1e22;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.44710034;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" style="opacity:1;vector-effect:none;fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.44710034;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1707" id="rect1707"
width="8.4666672" width="8.4666672"
height="8.4666672" height="8.4666672"
@@ -73,9 +75,9 @@
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
id="rect1602" id="rect1602"
d="m 0,294.88331 v -4.23333 l 6.3500001,6.34999 H 2.1166667 Z" d="m 0,294.88331 v -4.23333 l 6.3500001,6.34999 H 2.1166667 Z"
style="opacity:1;vector-effect:none;fill:#262626;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.18526772;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> style="opacity:1;vector-effect:none;fill:#282828;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.18526772;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path <path
style="opacity:1;vector-effect:none;fill:#262626;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.18526772;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" style="opacity:1;vector-effect:none;fill:#282828;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.18526772;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 8.4666667,290.64998 v 4.23333 l -6.35,-6.35 h 4.2333334 z" d="m 8.4666667,290.64998 v 4.23333 l -6.35,-6.35 h 4.2333334 z"
id="path1665" id="path1665"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

After

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 B

After

Width:  |  Height:  |  Size: 88 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 B

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

After

Width:  |  Height:  |  Size: 88 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 81 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 85 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 KiB

View File

@@ -0,0 +1,21 @@
{
"version": 1,
"license": null,
"copyright": null,
"size": {
"x": 480,
"y": 480
},
"states": [
{
"name": "1",
"delays": [
[
0.1,
0.1,
0.1
]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -1,5 +1,5 @@
defaultWindowTitle: White Dream 14 defaultWindowTitle: Green Miracle
windowIconSet: /Textures/Logo/icon windowIconSet: /Textures/Logo/icon
splashLogo: /Textures/Logo/logo-ru.png splashLogo: /Textures/Logo/logo.png
# PJB PLEASE # PJB PLEASE