Skip to content

Commit

Permalink
Центрированные радиальные меню (#318)
Browse files Browse the repository at this point in the history
<!-- ЭТО ШАБЛОН ВАШЕГО PULL REQUEST. Текст между стрелками - это
комментарии - они не будут видны в PR. -->

## Описание PR
<!-- Ниже опишите ваш Pull Request. Что он изменяет? На что еще это
может повлиять? Постарайтесь описать все внесённые вами изменения! -->
Настройка центрированности радиальных меню

**Медиа**
<!-- Если приемлемо, добавьте скриншоты для демонстрации вашего PR. Если
ваш PR представляет собой визуальное изменение, добавьте
скриншоты, иначе он может быть закрыт. -->

**Проверки**
<!-- Выполнение всех следующих действий, если это приемлемо для вида
изменений сильно ускорит разбор вашего PR -->
- [ ] PR полностью завершён и мне не нужна помощь чтобы его закончить.
- [ ] Я внимательно просмотрел все свои изменения и багов в них не
нашёл.
- [ ] Я запускал локальный сервер со своими изменениями и всё
протестировал.
- [ ] Я добавил скриншот/видео демонстрации PR в игре, **или** этот PR
этого не требует.

**Изменения**
<!--
Здесь вы можете написать список изменений, который будет автоматически
добавлен в игру, когда ваш PR будет принят.

В журнал изменений следует помещать только то, что действительно важно
игрокам.

В списке изменений тип значка не является часть предложения, поэтому
явно указывайте - Добавлен, Удалён, Изменён.
плохо: - add: Новый инструмент для инженеров
хорошо: - add: Добавлен новый инструмент для инженеров

Вы можете указать своё имя после символа 🆑 именно оно будет
отображаться в журнале изменений (иначе будет использоваться ваше имя на
GitHub)
Например: 🆑 Ian

-->

🆑 Котя
- add: Добавлена возможность центрировать радиальные меню. Настраивается
в пункте Доступность.

Co-authored-by: KashRas2 <[email protected]>
  • Loading branch information
FaDeOkno and KashRas2 authored Aug 20, 2024
1 parent ffcde0f commit 58a7b89
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 11 deletions.
11 changes: 9 additions & 2 deletions Content.Client/ADT/RPD/RPDMenuBoundUserInterface.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
using Content.Shared.ADT.CCVar; // ADT Radial menu settings
using Content.Shared.ADT.RPD;
using Content.Shared.ADT.RPD.Components;
using JetBrains.Annotations;
using Robust.Client.Graphics;
using Robust.Client.Input;
using Robust.Shared.Configuration; // ADT Radial menu settings
using Robust.Shared.Prototypes;

namespace Content.Client.ADT.RPD;
Expand All @@ -12,7 +14,7 @@ public sealed class RPDMenuBoundUserInterface : BoundUserInterface
{
[Dependency] private readonly IClyde _displayManager = default!;
[Dependency] private readonly IInputManager _inputManager = default!;

[Dependency] private readonly IConfigurationManager _cfg = default!; // ADT Radial menu settings
private RPDMenu? _menu;

public RPDMenuBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
Expand All @@ -29,7 +31,12 @@ protected override void Open()

// Open the menu, centered on the mouse
var vpSize = _displayManager.ScreenSize;
_menu.OpenCenteredAt(_inputManager.MouseScreenPosition.Position / vpSize);
// ADT Radial menu settings start
if (_cfg.GetCVar(ADTCCVars.CenterRadialMenu) == false)
_menu.OpenCenteredAt(_inputManager.MouseScreenPosition.Position / vpSize);
else
_menu.OpenCentered();
// ADT Radial menu settings end
}

public void SendRPDSystemMessage(ProtoId<RPDPrototype> protoId)
Expand Down
3 changes: 3 additions & 0 deletions Content.Client/Options/UI/Tabs/AccessibilityTab.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
<CheckBox Name="ReducedMotionCheckBox" Text="{Loc 'ui-options-reduced-motion'}" />
<CheckBox Name="EnableColorNameCheckBox" Text="{Loc 'ui-options-enable-color-name'}" />
<CheckBox Name="ColorblindFriendlyCheckBox" Text="{Loc 'ui-options-colorblind-friendly'}" />
<!-- ADT Settings start -->
<CheckBox Name="CenterRadialMenu" Text="{Loc 'ui-options-center-radial-menu'}" />
<!-- ADT Settings end -->
<ui:OptionSlider Name="ChatWindowOpacitySlider" Title="{Loc 'ui-options-chat-window-opacity'}" />
<ui:OptionSlider Name="ScreenShakeIntensitySlider" Title="{Loc 'ui-options-screen-shake-intensity'}" />
</BoxContainer>
Expand Down
5 changes: 5 additions & 0 deletions Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using Content.Shared.ADT.CCVar;
using Content.Shared.CCVar;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface;
Expand All @@ -18,6 +19,10 @@ public AccessibilityTab()
Control.AddOptionPercentSlider(CCVars.ChatWindowOpacity, ChatWindowOpacitySlider);
Control.AddOptionPercentSlider(CCVars.ScreenShakeIntensity, ScreenShakeIntensitySlider);

// ADT Settings start
Control.AddOptionCheckBox(ADTCCVars.CenterRadialMenu, CenterRadialMenu);
// ADT Settings end

Control.Initialize();
}
}
Expand Down
10 changes: 9 additions & 1 deletion Content.Client/RCD/RCDMenuBoundUserInterface.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
using Content.Shared.ADT.CCVar; // ADT Radial menu settings
using Content.Shared.RCD;
using Content.Shared.RCD.Components;
using JetBrains.Annotations;
using Robust.Client.Graphics;
using Robust.Client.Input;
using Robust.Client.UserInterface;
using Robust.Shared.Configuration; // ADT Radial menu settings
using Robust.Shared.Prototypes;

namespace Content.Client.RCD;
Expand All @@ -13,6 +15,7 @@ public sealed class RCDMenuBoundUserInterface : BoundUserInterface
{
[Dependency] private readonly IClyde _displayManager = default!;
[Dependency] private readonly IInputManager _inputManager = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!; // ADT Radial menu settings

private RCDMenu? _menu;

Expand All @@ -31,7 +34,12 @@ protected override void Open()

// Open the menu, centered on the mouse
var vpSize = _displayManager.ScreenSize;
_menu.OpenCenteredAt(_inputManager.MouseScreenPosition.Position / vpSize);
// ADT Radial menu settings start
if (_cfg.GetCVar(ADTCCVars.CenterRadialMenu) == false)
_menu.OpenCenteredAt(_inputManager.MouseScreenPosition.Position / vpSize);
else
_menu.OpenCentered();
// ADT Radial menu settings end
}

public void SendRCDSystemMessage(ProtoId<RCDPrototype> protoId)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Content.Client.Chat.UI;
using Content.Client.Gameplay;
using Content.Client.UserInterface.Controls;
using Content.Shared.ADT.CCVar; // ADT Radial menu settings
using Content.Shared.Chat;
using Content.Shared.Chat.Prototypes;
using Content.Shared.Input;
Expand All @@ -9,6 +10,7 @@
using Robust.Client.Input;
using Robust.Client.UserInterface.Controllers;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Configuration; // ADT Radial menu settings
using Robust.Shared.Input.Binding;
using Robust.Shared.Prototypes;

Expand All @@ -20,6 +22,7 @@ public sealed class EmotesUIController : UIController, IOnStateChanged<GameplayS
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly IClyde _displayManager = default!;
[Dependency] private readonly IInputManager _inputManager = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!; // ADT Radial menu settings

private MenuButton? EmotesButton => UIManager.GetActiveUIWidgetOrNull<MenuBar.Widgets.GameTopMenuBar>()?.EmotesButton;
private EmotesMenu? _menu;
Expand Down Expand Up @@ -58,7 +61,12 @@ private void ToggleEmotesMenu(bool centered)
{
// Open the menu, centered on the mouse
var vpSize = _displayManager.ScreenSize;
_menu.OpenCenteredAt(_inputManager.MouseScreenPosition.Position / vpSize);
// ADT Radial menu settings start
if (_cfg.GetCVar(ADTCCVars.CenterRadialMenu) == false)
_menu.OpenCenteredAt(_inputManager.MouseScreenPosition.Position / vpSize);
else
_menu.OpenCentered();
// ADT Radial menu settings end
}
}
else
Expand Down
5 changes: 5 additions & 0 deletions Content.Shared/ADT/CCVar/ADTCCVars.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,9 @@ public sealed class ADTCCVars
public static readonly CVarDef<float> BarksVolume =
CVarDef.Create("barks.volume", 1f, CVar.CLIENTONLY | CVar.ARCHIVE);

/*
* Radial menu
*/
public static readonly CVarDef<bool> CenterRadialMenu =
CVarDef.Create("radialmenu.center", false, CVar.CLIENTONLY | CVar.ARCHIVE);
}
9 changes: 2 additions & 7 deletions Resources/Locale/ru-RU/ADT/barks/ui.ftl
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
humanoid-profile-editor-bark-label = Голос (Барк):
humanoid-profile-editor-bark-play = Прослушать
humanoid-profile-editor-bark-pitch-label = Высота:
humanoid-profile-editor-bark-delay-label = Минимальная и максимальная задержка:
ui-options-barks-or-tts = Вид озвучки
ui-options-barks-speech = Барки
ui-options-tts-speech = TextToSpeech
ui-options-barks-volume = Громкость барков:
humanoid-profile-editor-bark-pitch-label = Высота (Барк):
humanoid-profile-editor-bark-delay-label = Минимальная и максимальная задержка (Барк):
6 changes: 6 additions & 0 deletions Resources/Locale/ru-RU/ADT/user-interface/options.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ui-options-center-radial-menu = Центрировать радиальные меню
ui-options-barks-or-tts = Вид озвучки
ui-options-barks-speech = Барки
ui-options-tts-speech = TextToSpeech
ui-options-barks-volume = Громкость барков:

0 comments on commit 58a7b89

Please sign in to comment.