Implement new viewport size/zoom UI.

This commit is contained in:
Paul Chote
2019-12-11 18:48:43 +00:00
committed by tovl
parent 860117daf9
commit 1dcb903580
17 changed files with 319 additions and 253 deletions

View File

@@ -25,13 +25,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
MapCopyFilters copyFilters = MapCopyFilters.All;
[ObjectCreator.UseCtor]
public MapEditorLogic(Widget widget, ModData modData, World world, WorldRenderer worldRenderer, Dictionary<string, MiniYaml> logicArgs)
public MapEditorLogic(Widget widget, World world, WorldRenderer worldRenderer)
{
MiniYaml yaml;
var changeZoomKey = new HotkeyReference();
if (logicArgs.TryGetValue("ChangeZoomKey", out yaml))
changeZoomKey = modData.Hotkeys[yaml.Value];
var editorViewport = widget.Get<EditorViewportControllerWidget>("MAP_EDITOR");
var gridButton = widget.GetOrNull<ButtonWidget>("GRID_BUTTON");
@@ -43,48 +38,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
gridButton.IsHighlighted = () => terrainGeometryTrait.Enabled;
}
var zoomDropdown = widget.GetOrNull<DropDownButtonWidget>("ZOOM_BUTTON");
if (zoomDropdown != null)
{
var selectedZoom = (Game.Settings.Graphics.PixelDouble ? 2f : 1f).ToString();
zoomDropdown.SelectedItem = selectedZoom;
Func<float, ScrollItemWidget, ScrollItemWidget> setupItem = (zoom, itemTemplate) =>
{
var item = ScrollItemWidget.Setup(
itemTemplate,
() =>
{
return float.Parse(zoomDropdown.SelectedItem) == zoom;
},
() =>
{
zoomDropdown.SelectedItem = selectedZoom = zoom.ToString();
worldRenderer.Viewport.Zoom = float.Parse(selectedZoom);
});
var label = zoom.ToString();
item.Get<LabelWidget>("LABEL").GetText = () => label;
return item;
};
var options = worldRenderer.Viewport.AvailableZoomSteps;
zoomDropdown.OnMouseDown = _ => zoomDropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 150, options, setupItem);
zoomDropdown.GetText = () => zoomDropdown.SelectedItem;
zoomDropdown.OnKeyPress = e =>
{
if (!changeZoomKey.IsActivatedBy(e))
return;
var selected = (options.IndexOf(float.Parse(selectedZoom)) + 1) % options.Length;
var zoom = options[selected];
worldRenderer.Viewport.Zoom = zoom;
selectedZoom = zoom.ToString();
zoomDropdown.SelectedItem = zoom.ToString();
};
}
var copypasteButton = widget.GetOrNull<ButtonWidget>("COPYPASTE_BUTTON");
if (copypasteButton != null)
{