public EditorActorBrush(EditorViewportControllerWidget editorWidget, ActorInfo actor, PlayerReference owner, WorldRenderer wr) { this.editorWidget = editorWidget; world = wr.World; editorLayer = world.WorldActor.Trait <EditorActorLayer>(); editorCursor = world.WorldActor.Trait <EditorCursorLayer>(); editorActionManager = world.WorldActor.Trait <EditorActionManager>(); cursorToken = editorCursor.SetActor(wr, actor, owner); }
public LayerSelectorLogic(Widget widget, WorldRenderer worldRenderer) { this.worldRenderer = worldRenderer; editor = widget.Parent.Get <EditorViewportControllerWidget>("MAP_EDITOR"); editorCursor = worldRenderer.World.WorldActor.Trait <EditorCursorLayer>(); layerTemplateList = widget.Get <ScrollPanelWidget>("LAYERTEMPLATE_LIST"); layerTemplateList.Layout = new GridLayout(layerTemplateList); layerPreviewTemplate = layerTemplateList.Get <ScrollItemWidget>("LAYERPREVIEW_TEMPLATE"); IntializeLayerPreview(widget); }
public EditorResourceBrush(EditorViewportControllerWidget editorWidget, ResourceTypeInfo resource, WorldRenderer wr) { this.editorWidget = editorWidget; ResourceType = resource; worldRenderer = wr; world = wr.World; editorActionManager = world.WorldActor.Trait <EditorActionManager>(); editorCursor = world.WorldActor.Trait <EditorCursorLayer>(); action = new AddResourcesEditorAction(world.Map, ResourceType); cursorToken = editorCursor.SetResource(wr, resource); }
public CustomTileSelectorLogic(Widget widget, World world, WorldRenderer worldRenderer) : base(widget, world, worldRenderer, "TILETEMPLATE_LIST", "TILEPREVIEW_TEMPLATE") { terrainInfo = world.Map.Rules.TerrainInfo as ITemplatedTerrainInfo; if (terrainInfo == null) { throw new InvalidDataException("CustomTileSelectorLogic requires a template-based tileset."); } terrainRenderer = world.WorldActor.TraitOrDefault <ITiledTerrainRenderer>(); if (terrainRenderer == null) { throw new InvalidDataException("TileSelectorLogic requires a tile-based terrain renderer."); } allTemplates = terrainInfo.Templates.Values.Select(t => new TileSelectorTemplate(t)).ToArray(); editorCursor = world.WorldActor.Trait <EditorCursorLayer>(); allCategories = allTemplates.SelectMany(t => t.Categories) .Distinct() .OrderBy(CategoryOrder) .ToArray(); foreach (var c in allCategories) { SelectedCategories.Add(c); FilteredCategories.Add(c); } SearchTextField.OnTextEdited = () => { searchFilter = SearchTextField.Text.Trim(); FilteredCategories.Clear(); if (!string.IsNullOrEmpty(searchFilter)) { FilteredCategories.AddRange( allTemplates.Where(t => t.SearchTerms.Any( s => s.IndexOf(searchFilter, StringComparison.OrdinalIgnoreCase) >= 0)) .SelectMany(t => t.Categories) .Distinct() .OrderBy(CategoryOrder)); } else { FilteredCategories.AddRange(allCategories); } InitializePreviews(); }; InitializePreviews(); }
public StackedEditorResourceBrush(EditorViewportControllerWidget editorWidget, string resourceType, WorldRenderer wr) { this.editorWidget = editorWidget; ResourceType = resourceType; worldRenderer = wr; world = wr.World; editorActionManager = world.WorldActor.Trait <EditorActionManager>(); editorCursor = world.WorldActor.Trait <EditorCursorLayer>(); resourceLayer = world.WorldActor.Trait <IResourceLayer>(); action = new AddResourcesEditorAction(resourceType, resourceLayer); cursorToken = editorCursor.SetResource(wr, resourceType); }
public EditorTileBrush(EditorViewportControllerWidget editorWidget, ushort id, WorldRenderer wr) { this.editorWidget = editorWidget; worldRenderer = wr; world = wr.World; editorActionManager = world.WorldActor.Trait <EditorActionManager>(); editorCursor = world.WorldActor.Trait <EditorCursorLayer>(); Template = id; worldRenderer = wr; world = wr.World; var template = world.Map.Rules.TileSet.Templates.First(t => t.Value.Id == id).Value; cursorToken = editorCursor.SetTerrainTemplate(wr, template); }
public TileSelectorLogic(Widget widget, World world, WorldRenderer worldRenderer) : base(widget, world, worldRenderer, "TILETEMPLATE_LIST", "TILEPREVIEW_TEMPLATE") { tileset = world.Map.Rules.TileSet; allTemplates = tileset.Templates.Values.Select(t => new TileSelectorTemplate(t)).ToArray(); editorCursor = world.WorldActor.Trait <EditorCursorLayer>(); allCategories = allTemplates.SelectMany(t => t.Categories) .Distinct() .OrderBy(CategoryOrder) .ToArray(); foreach (var c in allCategories) { SelectedCategories.Add(c); FilteredCategories.Add(c); } SearchTextField.OnTextEdited = () => { searchFilter = SearchTextField.Text.Trim(); FilteredCategories.Clear(); if (!string.IsNullOrEmpty(searchFilter)) { FilteredCategories.AddRange( allTemplates.Where(t => t.SearchTerms.Any( s => s.IndexOf(searchFilter, StringComparison.OrdinalIgnoreCase) >= 0)) .SelectMany(t => t.Categories) .Distinct() .OrderBy(CategoryOrder)); } else { FilteredCategories.AddRange(allCategories); } InitializePreviews(); }; InitializePreviews(); }
public EditorTileBrush(EditorViewportControllerWidget editorWidget, ushort id, WorldRenderer wr) { this.editorWidget = editorWidget; worldRenderer = wr; world = wr.World; terrainInfo = world.Map.Rules.TerrainInfo as ITemplatedTerrainInfo; if (terrainInfo == null) { throw new InvalidDataException("EditorTileBrush can only be used with template-based tilesets"); } editorActionManager = world.WorldActor.Trait <EditorActionManager>(); editorCursor = world.WorldActor.Trait <EditorCursorLayer>(); Template = id; worldRenderer = wr; world = wr.World; var template = terrainInfo.Templates.First(t => t.Value.Id == id).Value; cursorToken = editorCursor.SetTerrainTemplate(wr, template); }
public ActorSelectorLogic(Widget widget, World world, WorldRenderer worldRenderer) : base(widget, world, worldRenderer, "ACTORTEMPLATE_LIST", "ACTORPREVIEW_TEMPLATE") { mapRules = world.Map.Rules; ownersDropDown = widget.Get <DropDownButtonWidget>("OWNERS_DROPDOWN"); editorCursor = world.WorldActor.Trait <EditorCursorLayer>(); var editorLayer = world.WorldActor.Trait <EditorActorLayer>(); selectedOwner = editorLayer.Players.Players.Values.First(); Func <PlayerReference, ScrollItemWidget, ScrollItemWidget> setupItem = (option, template) => { var item = ScrollItemWidget.Setup(template, () => selectedOwner == option, () => SelectOwner(option)); item.Get <LabelWidget>("LABEL").GetText = () => option.Name; item.GetColor = () => option.Color; return(item); }; editorLayer.OnPlayerRemoved = () => { if (editorLayer.Players.Players.Values.Any(p => p.Name == selectedOwner.Name)) { return; } SelectOwner(editorLayer.Players.Players.Values.First()); }; ownersDropDown.OnClick = () => { var owners = editorLayer.Players.Players.Values.OrderBy(p => p.Name); ownersDropDown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 270, owners, setupItem); }; ownersDropDown.Text = selectedOwner.Name; ownersDropDown.TextColor = selectedOwner.Color; var tileSetId = world.Map.Rules.TerrainInfo.Id; var allActorsTemp = new List <ActorSelectorActor>(); foreach (var a in mapRules.Actors.Values) { // Partial templates are not allowed if (a.Name.Contains('^')) { continue; } // Actor must have a preview associated with it if (!a.HasTraitInfo <IRenderActorPreviewInfo>()) { continue; } var editorData = a.TraitInfoOrDefault <MapEditorDataInfo>(); // Actor must be included in at least one category if (editorData == null || editorData.Categories == null) { continue; } // Excluded by tileset if (editorData.ExcludeTilesets != null && editorData.ExcludeTilesets.Contains(tileSetId)) { continue; } if (editorData.RequireTilesets != null && !editorData.RequireTilesets.Contains(tileSetId)) { continue; } var tooltip = a.TraitInfos <EditorOnlyTooltipInfo>().FirstOrDefault(ti => ti.EnabledByDefault) as TooltipInfoBase ?? a.TraitInfos <TooltipInfo>().FirstOrDefault(ti => ti.EnabledByDefault); var searchTerms = new List <string>() { a.Name }; if (tooltip != null) { searchTerms.Add(tooltip.Name); } var tooltipText = (tooltip == null ? "Type: " : tooltip.Name + "\nType: ") + a.Name; allActorsTemp.Add(new ActorSelectorActor(a, editorData.Categories, searchTerms.ToArray(), tooltipText)); } allActors = allActorsTemp.ToArray(); allCategories = allActors.SelectMany(ac => ac.Categories) .Distinct() .OrderBy(x => x) .ToArray(); foreach (var c in allCategories) { SelectedCategories.Add(c); FilteredCategories.Add(c); } SearchTextField.OnTextEdited = () => { searchFilter = SearchTextField.Text.Trim(); FilteredCategories.Clear(); if (!string.IsNullOrEmpty(searchFilter)) { FilteredCategories.AddRange( allActors.Where(t => t.SearchTerms.Any( s => s.IndexOf(searchFilter, StringComparison.OrdinalIgnoreCase) >= 0)) .SelectMany(t => t.Categories) .Distinct() .OrderBy(x => x)); } else { FilteredCategories.AddRange(allCategories); } InitializePreviews(); }; InitializePreviews(); }