Modding:GUIs/ru: Difference between revisions

From Vintage Story Wiki
Created page with "Это компонент, который создает и управляет вашими элементами графического интерфейса для вас...."
(Created page with "===Графический интерфейс общего назначения===")
(Created page with "Это компонент, который создает и управляет вашими элементами графического интерфейса для вас....")
 
(6 intermediate revisions by the same user not shown)
Line 20: Line 20:
===Графический интерфейс общего назначения===
===Графический интерфейс общего назначения===


For any other uses, inerhit from the general purpose class <code>GuiDialog</code>, from which HudElement and GuiDialogBlockEntity also inherit from. You can override <code>ToggleKeyCombinationCode</code> to something like "yourAweseomeHotkeyCode" and use <code>capi.Input.RegisterHotKey</code> + <code>capi.Input.SetHotKeyHandler</code> to have your own keyboard key mapped to opening/closing your GUI (example: [https://github.com/anegostudios/vsessentialsmod/blob/master/Systems/WorldMap/WorldMapManager.cs#L105 World Map])
Для любого другого использования наследуйте от класса общего назначения <code>GuiDialog</code>, от которого также наследуются HudElement и GuiDialogBlockEntity. Вы можете переопределить <code>ToggleKeyCombinationCode</code> на что-то вроде «yourAweseomeHotkeyCode» и использовать <code>capi.Input.RegisterHotKey</code> + <code>capi.Input.SetHotKeyHandler</code>, чтобы получить собственную клавишу клавиатуры. сопоставляется с открытием/закрытием вашего графического интерфейса (пример: [https://github.com/anegostudios/vsessentialsmod/blob/master/Systems/WorldMap/WorldMapManager.cs#L105 World Map])


== GUI Basics ==
== Основы графического интерфейса ==


In general, you can pretty much build your own GUI system if you want to, by just overriding <code>OnRenderGUI</code> and render whatever you like. There's a multitude of overridable methods to handle mouse and keyboard inputs as well, see also the [https://github.com/anegostudios/vsapi/blob/master/Client/UI/Dialog/GuiDialog.cs GuiDialog] class on Github
В общем, вы можете создать свою собственную систему графического интерфейса, если хотите, просто переопределив <code>OnRenderGUI</code> и визуализируя все, что вам нравится. Также существует множество переопределяемых методов для обработки ввода с клавиатуры и мыши, см. также класс [https://github.com/anegostudios/vsapi/blob/master/Client/UI/Dialog/GuiDialog.cs GuiDialog] на Github.


If you want to use the vanilla GUI system, it's concept is merely a flat or hierarchical list of GUI elements placed at certain positions. The position is determined by an instance of <code>ElementBounds</code>. Let's have a closer look at it's properties:
Если вы хотите использовать ванильную систему графического интерфейса, ее концепция представляет собой просто плоский или иерархический список элементов графического интерфейса, размещенных в определенных позициях. Позиция определяется экземпляром <code>ElementBounds</code>. Рассмотрим подробнее его свойства:


=== ElementBounds===
=== Границы Элемента===


* <code>FixedX</code>/<code>FixedY</code>: The absolute position where the element should be placed
* <code>FixedX</code>/<code>FixedY</code>: абсолютное положение, в котором должен быть размещен элемент.
* <code>FixedWidth</code>/<code>FixedHeight</code>: The absolute width and height of the element
* <code>FixedWidth</code>/<code>FixedHeight</code>: абсолютная ширина и высота элемента.
* <code>FixedPaddingX</code>/<code>FixedPaddingY</code>: The absolute inner padding of the element
* <code>FixedPaddingX</code>/<code>FixedPaddingY</code>: абсолютное внутреннее заполнение элемента.
* <code>FixedMarginX</code>/<code>FixedMarginY</code>: The absolute outer padding of the element
* <code>FixedMarginX</code>/<code>FixedMarginY</code>: абсолютное внешнее заполнение элемента
* <code>ParentBounds</code>: The parent boundaries, in which this element resides in
* <code>ParentBounds</code>: родительские границы, в которых находится этот элемент.
* <code>ChildBounds</code>: The child boundaries this element contains
* <code>ChildBounds</code>: дочерние границы, которые содержит этот элемент.
* <code>Alignment</code>: The alignment of the element. If set to <code>None</code> the FixedX/Y Position is used. For any other value the FixedX/Y values are ignored. For example when you used <code>RightTop</code> the element will always be at the right top most corner of its parent bounds. If you use <code>RightFixed</code> the element will be right aligned, but its Y-Position is determined by <code>FixedY</code>
* <code>Alignment</code>: Выравнивание элемента. Если установлено значение <code>None</code>, используется фиксированная позиция X/Y. Для любого другого значения значения FixedX/Y игнорируются. Например, когда вы использовали <code>RightTop</code>, элемент всегда будет находиться в правом верхнем углу своих родительских границ. Если вы используете <code>RightFixed</code>, элемент будет выровнен по правому краю, но его Y-позиция определяется <code>FixedY</code>
* <code>HorizontalSizing</code>/<code>VerticalSizing</code>: The sizing method to be used, can be either <code>Fixed</code> (default), <code>Percentual</code> or <code>FitToChildren</code>
* <code>HorizontalSizing</code>/<code>VerticalSizing</code>: используемый метод изменения размера может быть либо <code>Fixed</code> (по умолчанию), <code>Percentual</code>, либо <code>FitToChildren</code>


===GuiComposer===
===GuiComposer===


This is the component that builds and manages your GUI elements for you. You can create a composer via the client api: <code>capi.Gui.CreateCompo(dialogName, bounds)</code>. You have to supply it with a unique identifier and the overall dialog bounds. Once you have a GUIComposer instance you can chain-add elements. Here's a small example:
Это компонент, который создает и управляет вашими элементами графического интерфейса для вас. Вы можете создать композитор через клиентский API: <code>capi.Gui.CreateCompo(dialogName, bounds)</code>. Вы должны предоставить ему уникальный идентификатор и общие границы диалога. Когда у вас есть экземпляр GUIComposer, вы можете последовательно добавлять элементы. Вот небольшой пример:
<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
private void SetupDialog()
private void SetupDialog()
Confirmedusers
13,514

edits