internal UIButton CreateSubButton(string name, string text, string fgSprite) { UIMoreTools.MoreSubButtons[this].Add(name, m_subpanel.AddUIComponent <UIButton>()); UIButton subButton = UIMoreTools.MoreSubButtons[this][name]; subButton.name = name; subButton.atlas = m_toolbar.GetIconsAtlas(); subButton.playAudioEvents = true; //subButton.size = new Vector2(158, 30); subButton.autoSize = true; subButton.text = text; subButton.textHorizontalAlignment = UIHorizontalAlignment.Left; subButton.textScale = 0.8f; subButton.textPadding = new RectOffset(29, 0, 5, 0); subButton.textColor = new Color32(230, 230, 230, 255); subButton.hoveredTextColor = new Color32(255, 255, 255, 255); subButton.normalFgSprite = fgSprite; subButton.hoveredBgSprite = "SubmenuBG"; subButton.foregroundSpriteMode = UIForegroundSpriteMode.Scale; subButton.spritePadding = new RectOffset(0, 64, 0, 0); subButton.eventClicked += (UIComponent c, UIMouseEventParameter p) => { UIMoreTools.MoreToolsClicked(subButton.name, Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt), Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)); }; return(subButton); }
public static void SetToolState(ToolStates state = ToolStates.Default, MT_Tools tool = MT_Tools.Off, ushort toolPhase = 0) { ToolStates previousState = ToolState; if (ToolState != state) { if (state != ToolStates.ToolActive && state != ToolStates.Aligning) { UIMoreTools.m_activeToolMenu = null; } if (ToolState == ToolStates.ToolActive) { if (MT_Tool == MT_Tools.MoveTo) { m_moveToPanel.Visible(false); } } } ToolState = state; m_toolsMode = tool; m_alignToolPhase = toolPhase; if (state == ToolStates.ToolActive || state == ToolStates.Aligning || previousState == ToolStates.ToolActive || previousState == ToolStates.Aligning) { UIMoreTools.UpdateMoreTools(); } m_debugPanel?.UpdatePanel(); }
public bool StartTool(ToolStates newToolState, MT_Tools mode) { if (ToolState == ToolStates.Cloning || ToolState == ToolStates.RightDraggingClone) { StopCloning(); } if (ToolState != ToolStates.Default && ToolState != ToolStates.Aligning && ToolState != ToolStates.ToolActive) { return(false); } if (!Action.HasSelection()) { return(false); } SetToolState(newToolState, mode, 1); UIMoreTools.CheckCloseMenu(); return(true); }
internal void CreateSubPanel(string subName, float entries) { m_panel.atlas = UIUtils.GetAtlas("Ingame"); m_panel.backgroundSprite = "SubcategoriesPanel"; m_panel.clipChildren = true; m_panel.size = new Vector2(160, 12 + (entries * 32f)); // Width is changed at runtime m_panel.isVisible = false; m_subpanel.name = subName; m_subpanel.padding = new RectOffset(1, 1, 6, 6); m_subpanel.size = m_panel.size; m_subpanel.autoLayoutDirection = LayoutDirection.Vertical; m_subpanel.autoLayout = true; m_subpanel.relativePosition = new Vector3(0, 0, 0); m_subpanel.autoLayoutPadding = new RectOffset(0, 0, 0, 2); m_panel.autoLayout = false; m_panel.absolutePosition = UIMoreTools.MoreToolsBtn.absolutePosition + new Vector3(-m_panel.width, -m_panel.height - 10); m_panel.eventMouseEnter += (UIComponent c, UIMouseEventParameter p) => { UIMoreTools.m_activeDisplayMenu = this; if (MoveItTool.marqueeSelection) { UIToolOptionPanel.instance.m_filtersPanel.isVisible = false; } c.isVisible = true; UIMoreTools.UpdateMoreTools(); }; m_panel.eventMouseLeave += (UIComponent c, UIMouseEventParameter p) => { UIMoreTools.m_activeDisplayMenu = null; if (MoveItTool.marqueeSelection) { UIToolOptionPanel.instance.m_filtersPanel.isVisible = true; } c.isVisible = false; UIMoreTools.UpdateMoreTools(); }; }
public void OnSettingsUI(UIHelperBase helper) { try { UIHelperBase group = helper.AddGroup(Name); UIPanel panel = ((UIPanel)((UIHelper)group).self) as UIPanel; UICheckBox checkBox = (UICheckBox)group.AddCheckbox("Auto-close Toolbox menu", MoveItTool.autoCloseAlignTools.value, (b) => { MoveItTool.autoCloseAlignTools.value = b; if (UIMoreTools.MoreToolsPanel != null) { UIMoreTools.CloseMenu(); } }); checkBox.tooltip = "Check this to close the Toolbox menu after choosing a tool."; group.AddSpace(10); checkBox = (UICheckBox)group.AddCheckbox("Prefer fast, low-detail moving (hold Shift to temporarily switch)", MoveItTool.fastMove.value, (b) => { MoveItTool.fastMove.value = b; }); checkBox.tooltip = "Helps you position objects when your frame-rate is poor."; group.AddSpace(10); checkBox = (UICheckBox)group.AddCheckbox("Hide selectors/overlays when in low-sensitivity mode", MoveItTool.hideSelectorsOnLowSensitivity.value, (b) => { MoveItTool.hideSelectorsOnLowSensitivity.value = b; }); checkBox.tooltip = "When holding control, the selection overlays are hidden"; group.AddSpace(10); checkBox = (UICheckBox)group.AddCheckbox("Select pylons and pillars by holding Alt only", MoveItTool.altSelectNodeBuildings.value, (b) => { MoveItTool.altSelectNodeBuildings.value = b; }); group.AddSpace(10); checkBox = (UICheckBox)group.AddCheckbox("Use cardinal movements", MoveItTool.useCardinalMoves.value, (b) => { MoveItTool.useCardinalMoves.value = b; }); checkBox.tooltip = "If checked, Up will move in the North direction, Down is South, Left is West, Right is East."; group.AddSpace(10); checkBox = (UICheckBox)group.AddCheckbox("Right click cancels cloning", MoveItTool.rmbCancelsCloning.value, (b) => { MoveItTool.rmbCancelsCloning.value = b; }); checkBox.tooltip = "If checked, Right click will cancel cloning instead of rotating 45°."; group.AddSpace(10); group = helper.AddGroup("General Shortcuts"); panel = ((UIPanel)((UIHelper)group).self) as UIPanel; group.AddSpace(10); ((UIPanel)((UIHelper)group).self).gameObject.AddComponent <OptionsKeymappingMain>(); group.AddSpace(10); group = helper.AddGroup("Toolbox Shortcuts"); panel = ((UIPanel)((UIHelper)group).self) as UIPanel; group.AddSpace(10); ((UIPanel)((UIHelper)group).self).gameObject.AddComponent <OptionsKeymappingToolbox>(); group.AddSpace(10); group = helper.AddGroup("Extra Options"); panel = ((UIPanel)((UIHelper)group).self) as UIPanel; group.AddSpace(10); UIButton button = (UIButton)group.AddButton("Remove Ghost Nodes", MoveItTool.CleanGhostNodes); button.tooltip = "Use this button when in-game to remove ghost nodes (nodes with no segments attached). Note: this will clear Move It's undo history!"; group.AddSpace(20); checkBox = (UICheckBox)group.AddCheckbox("Disable debug messages logging", DebugUtils.hideDebugMessages.value, (b) => { DebugUtils.hideDebugMessages.value = b; }); checkBox.tooltip = "If checked, debug messages won't be logged."; checkBox = (UICheckBox)group.AddCheckbox("Show Move It debug panel\n", MoveItTool.showDebugPanel.value, (b) => { MoveItTool.showDebugPanel.value = b; if (MoveItTool.m_debugPanel != null) { MoveItTool.m_debugPanel.Visible(b); } }); checkBox.name = "MoveIt_DebugPanel"; UILabel debugLabel = panel.AddUIComponent <UILabel>(); debugLabel.name = "debugLabel"; debugLabel.text = " Shows information about the last highlighted object. Slightly decreases\n" + " performance, do not enable unless you have a specific reason.\n "; group.AddSpace(5); UILabel nsLabel = panel.AddUIComponent <UILabel>(); nsLabel.name = "nsLabel"; nsLabel.text = NS_Manager.getVersionText(); UILabel ncLabel = panel.AddUIComponent <UILabel>(); ncLabel.name = "ncLabel"; ncLabel.text = NodeController_Manager.getVersionText(); UILabel tmpeLabel = panel.AddUIComponent <UILabel>(); tmpeLabel.name = "tmpeLabel"; tmpeLabel.text = TMPE_Manager.getVersionText(); group = helper.AddGroup("Procedural Objects"); panel = ((UIPanel)((UIHelper)group).self) as UIPanel; UILabel poLabel = panel.AddUIComponent <UILabel>(); poLabel.name = "poLabel"; poLabel.text = PO_Manager.getVersionText(); UILabel poWarning = panel.AddUIComponent <UILabel>(); poWarning.name = "poWarning"; poWarning.text = " Please note: you can not undo Bulldozed PO. This means if you delete \n" + " PO objects with Move It, they are immediately PERMANENTLY gone.\n "; checkBox = (UICheckBox)group.AddCheckbox("Hide the PO deletion warning", !MoveItTool.POShowDeleteWarning.value, (b) => { MoveItTool.POShowDeleteWarning.value = !b; }); checkBox = (UICheckBox)group.AddCheckbox("Highlight unselected visible PO objects", MoveItTool.POHighlightUnselected.value, (b) => { MoveItTool.POHighlightUnselected.value = b; if (MoveItTool.PO != null) { try { MoveItTool.PO.ToolEnabled(); } catch (ArgumentException e) { Debug.Log($"PO Integration failed:\n{e}"); } } }); checkBox.tooltip = "Show a faded purple circle around PO objects that aren't selected."; group.AddSpace(15); panel.gameObject.AddComponent <OptionsKeymappingPO>(); group.AddSpace(15); } catch (Exception e) { DebugUtils.Log("OnSettingsUI failed"); DebugUtils.LogException(e); } }
public void OnSettingsUI(UIHelperBase helper) { try { LocaleManager.eventLocaleChanged -= MoveItLoader.LocaleChanged; MoveItLoader.LocaleChanged(); LocaleManager.eventLocaleChanged += MoveItLoader.LocaleChanged; UIHelperBase group = helper.AddGroup(Name); UIPanel panel = ((UIHelper)group).self as UIPanel; UICheckBox checkBox = (UICheckBox)group.AddCheckbox(Str.options_AutoCloseToolbox, MoveItTool.autoCloseAlignTools.value, (b) => { MoveItTool.autoCloseAlignTools.value = b; if (UIMoreTools.MoreToolsPanel != null) { UIMoreTools.CloseMenu(); } }); checkBox.tooltip = Str.options_AutoCloseToolbox_Tooltip; group.AddSpace(10); checkBox = (UICheckBox)group.AddCheckbox(Str.options_PreferFastmove, MoveItTool.fastMove.value, (b) => { MoveItTool.fastMove.value = b; }); checkBox.tooltip = Str.options_PreferFastmove_Tooltip; group.AddSpace(10); checkBox = (UICheckBox)group.AddCheckbox(Str.options_UseCompass, MoveItTool.useCardinalMoves.value, (b) => { MoveItTool.useCardinalMoves.value = b; }); checkBox.tooltip = Str.options_UseCompass_Tooltip; group.AddSpace(10); checkBox = (UICheckBox)group.AddCheckbox(Str.options_RightClickCancel, MoveItTool.rmbCancelsCloning.value, (b) => { MoveItTool.rmbCancelsCloning.value = b; }); checkBox.tooltip = Str.options_RightClickCancel_Tooltip; group.AddSpace(10); checkBox = (UICheckBox)group.AddCheckbox(Str.options_AdvancedPillarControl, MoveItTool.advancedPillarControl.value, (b) => { MoveItTool.advancedPillarControl.value = b; }); checkBox.tooltip = Str.options_AdvancedPillarControl_Tooltip; group.AddSpace(10); checkBox = (UICheckBox)group.AddCheckbox(Str.options_AltForPillars, MoveItTool.altSelectNodeBuildings.value, (b) => { MoveItTool.altSelectNodeBuildings.value = b; }); group.AddSpace(10); group = helper.AddGroup(Str.options_ShortcutsGeneral); panel = ((UIHelper)group).self as UIPanel; group.AddSpace(10); ((UIPanel)((UIHelper)group).self).gameObject.AddComponent <OptionsKeymappingMain>(); group.AddSpace(10); group = helper.AddGroup(Str.options_ShortcutsToolbox); panel = ((UIHelper)group).self as UIPanel; group.AddSpace(10); ((UIPanel)((UIHelper)group).self).gameObject.AddComponent <OptionsKeymappingToolbox>(); group.AddSpace(10); group = helper.AddGroup(Str.options_ExtraOptions); panel = ((UIHelper)group).self as UIPanel; group.AddSpace(10); UIButton button = (UIButton)group.AddButton(Str.options_RemoveGhostNodes, MoveItTool.CleanGhostNodes); button.tooltip = Str.options_RemoveGhostNodes_Tooltip; group.AddSpace(10); button = (UIButton)group.AddButton(Str.options_ResetButtonPosition, () => { UIMoveItButton.savedX.value = -1000; UIMoveItButton.savedY.value = -1000; MoveItTool.instance?.m_button?.ResetPosition(); }); group.AddSpace(20); checkBox = (UICheckBox)group.AddCheckbox(Str.options_DisableDebugLogging, DebugUtils.hideDebugMessages.value, (b) => { DebugUtils.hideDebugMessages.value = b; }); checkBox.tooltip = Str.options_DisableDebugLogging_Tooltip; checkBox = (UICheckBox)group.AddCheckbox(Str.options_ShowDebugPanel, MoveItTool.showDebugPanel.value, (b) => { MoveItTool.showDebugPanel.value = b; if (MoveItTool.m_debugPanel != null) { MoveItTool.m_debugPanel.Visible(b); } }); checkBox.name = "MoveIt_DebugPanel"; group.AddSpace(5); UILabel nsLabel = panel.AddUIComponent <UILabel>(); nsLabel.name = "nsLabel"; nsLabel.text = NS_Manager.getVersionText(); group = helper.AddGroup(Str.options_ProceduralObjects); panel = ((UIHelper)group).self as UIPanel; UILabel poLabel = panel.AddUIComponent <UILabel>(); poLabel.name = "poLabel"; poLabel.text = PO_Manager.getVersionText(); // TODO add users of MoveITIntegration.dll here by name/description UILabel poWarning = panel.AddUIComponent <UILabel>(); poWarning.name = "poWarning"; poWarning.padding = new RectOffset(25, 0, 0, 15); poWarning.text = Str.options_PODeleteWarning; checkBox = (UICheckBox)group.AddCheckbox(Str.options_HidePODeletionWarning, !MoveItTool.POShowDeleteWarning.value, (b) => { MoveItTool.POShowDeleteWarning.value = !b; }); group.AddSpace(15); panel.gameObject.AddComponent <OptionsKeymappingPO>(); group.AddSpace(15); } catch (Exception e) { DebugUtils.Log("OnSettingsUI failed"); DebugUtils.LogException(e); } }
public override void Do() { Vector3 PoR; Matrix4x4 matrix = default; Bounds bounds = GetTotalBounds(true, true); float angleDelta, firstValidAngle = 0; System.Random random = new System.Random(); BuildingManager buildingManager = Singleton <BuildingManager> .instance; foreach (InstanceState state in m_states) { if (state.instance.isValid) { if (state.instance is MoveableBuilding || state.instance is MoveableProp || state.instance is MoveableProc) { firstValidAngle = state.angle; break; } } } angleDelta = 0 - firstValidAngle + newAngle; PoR = bounds.center; foreach (InstanceState state in m_states) { if (state.instance.isValid) { if (state.instance is MoveableBuilding mb) { //BuildingState bs = (BuildingState)state; if (Mathf.Abs(Singleton <TerrainManager> .instance.SampleOriginalRawHeightSmooth(mb.position) - mb.position.y) > 0.01f) { mb.AddFixedHeightFlag(mb.id.Building); } else { mb.RemoveFixedHeightFlag(mb.id.Building); } if (this is AlignIndividualAction) { angleDelta = 0 - mb.angle + newAngle; PoR = state.position; } else if (this is AlignRandomAction) { angleDelta = 0 - mb.angle + (float)(random.NextDouble() * Math.PI * 2); PoR = state.position; } matrix.SetTRS(PoR, Quaternion.AngleAxis(angleDelta * Mathf.Rad2Deg, Vector3.down), Vector3.one); mb.Transform(state, ref matrix, 0f, angleDelta, PoR, followTerrain); BuildingInfo prefab = (BuildingInfo)state.Info.Prefab; ushort id = mb.id.Building; Building building = buildingManager.m_buildings.m_buffer[id]; if (prefab.m_hasParkingSpaces != VehicleInfo.VehicleType.None) { buildingManager.UpdateParkingSpaces(id, ref building); } buildingManager.UpdateBuildingRenderer(id, true); } else if (state.instance is MoveableProp mp) { if (this is AlignIndividualAction) { angleDelta = 0 - mp.angle + newAngle; PoR = state.position; } else if (this is AlignRandomAction) { angleDelta = 0 - mp.angle + (float)(random.NextDouble() * Math.PI * 2); PoR = state.position; } matrix.SetTRS(PoR, Quaternion.AngleAxis(angleDelta * Mathf.Rad2Deg, Vector3.down), Vector3.one); mp.Transform(state, ref matrix, 0f, angleDelta, PoR, followTerrain); } else if (state.instance is MoveableProc mpo) { if (this is AlignIndividualAction) { angleDelta = 0 - mpo.angle + newAngle; PoR = state.position; } else if (this is AlignRandomAction) { angleDelta = 0 - mpo.angle + (float)(random.NextDouble() * Math.PI * 2); PoR = state.position; } matrix.SetTRS(PoR, Quaternion.AngleAxis(angleDelta * Mathf.Rad2Deg, Vector3.down), Vector3.one); mpo.Transform(state, ref matrix, 0f, angleDelta, PoR, followTerrain); } else if (state.instance is MoveableTree mt) { if (this is AlignIndividualAction || this is AlignRandomAction) { continue; } matrix.SetTRS(PoR, Quaternion.AngleAxis(angleDelta * Mathf.Rad2Deg, Vector3.down), Vector3.one); mt.Transform(state, ref matrix, 0f, angleDelta, PoR, followTerrain); } } } MoveItTool.instance.ToolState = MoveItTool.ToolStates.Default; MoveItTool.instance.AlignMode = MoveItTool.AlignModes.Off; MoveItTool.instance.AlignToolPhase = 0; UIMoreTools.UpdateMoreTools(); UpdateArea(bounds); UpdateArea(GetTotalBounds(false)); }
protected override void OnToolGUI(Event e) { if (UIView.HasModalInput() || UIView.HasInputFocus()) { return; } lock (ActionQueue.instance) { if (ToolState == ToolStates.Default || ToolState == ToolStates.ToolActive) { if (OptionsKeymapping.undo.IsPressed(e)) { m_nextAction = ToolAction.Undo; } else if (OptionsKeymapping.redo.IsPressed(e)) { m_nextAction = ToolAction.Redo; } } if (OptionsKeymapping.clone.IsPressed(e)) { if (ToolState == ToolStates.Cloning || ToolState == ToolStates.RightDraggingClone) { StopCloning(); } else { StartCloning(); } } else if (OptionsKeymapping.bulldoze.IsPressed(e)) { StartBulldoze(); } else if (OptionsKeymapping.reset.IsPressed(e)) { StartReset(); } else if (OptionsKeymapping.viewGrid.IsPressed(e)) { if (gridVisible) { gridVisible = false; UIToolOptionPanel.instance.grid.activeStateIndex = 0; } else { gridVisible = true; UIToolOptionPanel.instance.grid.activeStateIndex = 1; } } else if (OptionsKeymapping.viewUnderground.IsPressed(e)) { if (tunnelVisible) { tunnelVisible = false; UIToolOptionPanel.instance.underground.activeStateIndex = 0; } else { tunnelVisible = true; UIToolOptionPanel.instance.underground.activeStateIndex = 1; } } else if (OptionsKeymapping.viewDebug.IsPressed(e)) { showDebugPanel.value = !showDebugPanel; if (m_debugPanel != null) { ClearDebugOverlays(); m_debugPanel.Visible(showDebugPanel); } } else if (OptionsKeymapping.viewSelectors.IsPressed(e)) { m_showSelectors = !m_showSelectors; } else if (OptionsKeymapping.activatePO.IsPressed(e)) { PO.InitialiseTool(); } else if (OptionsKeymapping.convertToPO.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_ConvertToPOBtn"); } else if (OptionsKeymapping.deselectAll.IsPressed(e)) { if (ToolState == ToolStates.Cloning) { StopCloning(); } else if (ToolState == ToolStates.Aligning || ToolState == ToolStates.ToolActive || ToolState == ToolStates.Picking || ToolState != ToolStates.MouseDragging) { if (ToolState == ToolStates.Picking) { UIFilters.UpdatePickerButton(1); } DeactivateTool(); } if (!(ActionQueue.instance.current is SelectAction)) { SelectAction action = new SelectAction(); ActionQueue.instance.Push(action); } else { Action.selection.Clear(); ActionQueue.instance.Invalidate(); } m_debugPanel.UpdatePanel(); } else if (OptionsKeymapping.alignHeights.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignHeightBtn"); } else if (OptionsKeymapping.alignTerrainHeight.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignTerrainHeightBtn"); } else if (OptionsKeymapping.alignMirror.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignMirrorBtn"); } else if (OptionsKeymapping.alignLine.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignLineBtn"); } else if (OptionsKeymapping.alignLineUnspaced.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignLineBtn", false, true); } else if (OptionsKeymapping.alignSlope.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignSlopeBtn"); } else if (OptionsKeymapping.alignSlopeQuick.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignSlopeBtn", true); } else if (OptionsKeymapping.alignSlopeFull.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignSlopeBtn", false, true); } else if (OptionsKeymapping.alignInplace.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignIndividualBtn"); } else if (OptionsKeymapping.alignGroup.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignGroupBtn"); } else if (OptionsKeymapping.alignRandom.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_AlignRandomBtn"); } else if (OptionsKeymapping.alignMoveTo.IsPressed(e)) { UIMoreTools.MoreToolsClicked("MoveIt_MoveToBtn"); } if (ToolState == ToolStates.Cloning) { if (ProcessMoveKeys(e, out Vector3 direction, out float angle)) { CloneAction action = ActionQueue.instance.current as CloneAction; action.moveDelta.y += direction.y * YFACTOR; action.angleDelta += angle; } } else if (ToolState == ToolStates.Default && Action.HasSelection()) { if (ProcessMoveKeys(e, out Vector3 direction, out float angle)) { if (!(ActionQueue.instance.current is TransformAction action)) { action = new TransformAction(); ActionQueue.instance.Push(action); } if (direction != Vector3.zero) { direction.x *= XFACTOR; direction.y *= YFACTOR; direction.z *= ZFACTOR; if (!useCardinalMoves) { Matrix4x4 matrix4x = default; matrix4x.SetTRS(Vector3.zero, Quaternion.AngleAxis(Camera.main.transform.localEulerAngles.y, Vector3.up), Vector3.one); direction = matrix4x.MultiplyVector(direction); } } action.moveDelta += direction; action.angleDelta += angle; action.followTerrain = followTerrain; m_nextAction = ToolAction.Do; } else if (ProcessScaleKeys(e, out float magnitude)) { if (!(ActionQueue.instance.current is ScaleAction action)) { action = new ScaleAction(); ActionQueue.instance.Push(action); } action.magnitude += magnitude; action.followTerrain = followTerrain; m_nextAction = ToolAction.Do; } } }
public override void Start() { UIMoreTools.Initialise(); instance = this; UICheckBox checkBox = null; atlas = UIUtils.GetAtlas("Ingame"); size = new Vector2(41, 41); relativePosition = new Vector2(GetUIView().GetScreenResolution().x - 340, -41); name = "MoveIt_ToolOptionPanel"; DebugUtils.Log("ToolOptionPanel position: " + absolutePosition); #region Follow Terrain m_followTerrain = AddUIComponent <UIMultiStateButton>(); m_followTerrain.atlas = GetFollowTerrainAtlas(); m_followTerrain.name = "MoveIt_FollowTerrain"; m_followTerrain.tooltip = Str.baseUI_FollowTerrain_Tooltip; m_followTerrain.playAudioEvents = true; m_followTerrain.size = new Vector2(36, 36); m_followTerrain.spritePadding = new RectOffset(); m_followTerrain.backgroundSprites[0].disabled = "ToggleBaseDisabled"; m_followTerrain.backgroundSprites[0].hovered = "ToggleBaseHovered"; m_followTerrain.backgroundSprites[0].normal = "ToggleBase"; m_followTerrain.backgroundSprites[0].pressed = "ToggleBasePressed"; m_followTerrain.backgroundSprites.AddState(); m_followTerrain.backgroundSprites[1].disabled = "ToggleBaseDisabled"; m_followTerrain.backgroundSprites[1].hovered = ""; m_followTerrain.backgroundSprites[1].normal = "ToggleBaseFocused"; m_followTerrain.backgroundSprites[1].pressed = "ToggleBasePressed"; m_followTerrain.foregroundSprites[0].normal = "FollowTerrain_disabled"; m_followTerrain.foregroundSprites.AddState(); m_followTerrain.foregroundSprites[1].normal = "FollowTerrain"; m_followTerrain.relativePosition = Vector2.zero; m_followTerrain.activeStateIndex = MoveItTool.followTerrain ? 1 : 0; m_followTerrain.eventClicked += (c, p) => { MoveItTool.followTerrain = (m_followTerrain.activeStateIndex == 1); MoveItTool.followTerrainModeEnabled.value = (m_followTerrain.activeStateIndex == 1); }; #endregion #region Snapping m_snapping = AddUIComponent <UIMultiStateButton>(); m_snapping.atlas = UIUtils.GetAtlas("Ingame"); m_snapping.name = "MoveIt_Snapping"; m_snapping.tooltip = Str.baseUI_ToggleSnapping_Tooltip; m_snapping.playAudioEvents = true; m_snapping.size = new Vector2(36, 36); m_snapping.spritePadding = new RectOffset(); m_snapping.backgroundSprites[0].disabled = "ToggleBaseDisabled"; m_snapping.backgroundSprites[0].hovered = "ToggleBaseHovered"; m_snapping.backgroundSprites[0].normal = "ToggleBase"; m_snapping.backgroundSprites[0].pressed = "ToggleBasePressed"; m_snapping.backgroundSprites.AddState(); m_snapping.backgroundSprites[1].disabled = "ToggleBaseDisabled"; m_snapping.backgroundSprites[1].hovered = ""; m_snapping.backgroundSprites[1].normal = "ToggleBaseFocused"; m_snapping.backgroundSprites[1].pressed = "ToggleBasePressed"; m_snapping.foregroundSprites[0].disabled = "SnappingDisabled"; m_snapping.foregroundSprites[0].hovered = "SnappingHovered"; m_snapping.foregroundSprites[0].normal = "Snapping"; m_snapping.foregroundSprites[0].pressed = "SnappingPressed"; m_snapping.foregroundSprites.AddState(); m_snapping.foregroundSprites[1].disabled = "SnappingDisabled"; m_snapping.foregroundSprites[1].hovered = ""; m_snapping.foregroundSprites[1].normal = "SnappingFocused"; m_snapping.foregroundSprites[1].pressed = "SnappingPressed"; m_snapping.relativePosition = m_followTerrain.relativePosition + new Vector3(m_followTerrain.width, 0); m_snapping.activeStateIndex = (MoveItTool.instance != null && MoveItTool.instance.snapping) ? 1 : 0; m_snapping.eventClicked += (c, p) => { if (MoveItTool.instance != null) { MoveItTool.instance.snapping = (m_snapping.activeStateIndex == 1); } }; #endregion m_tabStrip = AddUIComponent <UITabstrip>(); m_tabStrip.size = new Vector2(36, 72); m_tabStrip.relativePosition = m_snapping.relativePosition + new Vector3(m_snapping.width, 0); #region Single Select m_single = m_tabStrip.AddTab("MoveIt_Single", null, false); m_single.group = m_tabStrip; m_single.atlas = UIUtils.GetAtlas("Ingame"); m_single.tooltip = Str.baseUI_Single_Tooltip; m_single.playAudioEvents = true; m_single.size = new Vector2(36, 36); m_single.normalBgSprite = "OptionBase"; m_single.focusedBgSprite = "OptionBaseFocused"; m_single.hoveredBgSprite = "OptionBaseHovered"; m_single.pressedBgSprite = "OptionBasePressed"; m_single.disabledBgSprite = "OptionBaseDisabled"; m_single.text = "•"; m_single.textScale = 1.5f; m_single.textPadding = new RectOffset(0, 1, 4, 0); m_single.textColor = new Color32(119, 124, 126, 255); m_single.hoveredTextColor = new Color32(110, 113, 114, 255); m_single.pressedTextColor = new Color32(172, 175, 176, 255); m_single.focusedTextColor = new Color32(187, 224, 235, 255); m_single.disabledTextColor = new Color32(66, 69, 70, 255); #endregion #region Marquee Select m_marquee = m_tabStrip.AddTab("MoveIt_Marquee", null, false); m_marquee.group = m_tabStrip; m_marquee.atlas = UIUtils.GetAtlas("Ingame"); m_marquee.tooltip = Str.baseUI_Marquee_Tooltip; m_marquee.playAudioEvents = true; m_marquee.size = new Vector2(36, 36); m_marquee.normalBgSprite = "OptionBase"; m_marquee.focusedBgSprite = "OptionBaseFocused"; m_marquee.hoveredBgSprite = "OptionBaseHovered"; m_marquee.pressedBgSprite = "OptionBasePressed"; m_marquee.disabledBgSprite = "OptionBaseDisabled"; m_marquee.normalFgSprite = "ZoningOptionMarquee"; m_marquee.relativePosition = m_single.relativePosition + new Vector3(m_single.width, 0); #region filtersPanel m_filtersPanel = AddUIComponent(typeof(UIPanel)) as UIPanel; m_filtersPanel.atlas = UIUtils.GetAtlas("Ingame"); m_filtersPanel.backgroundSprite = "SubcategoriesPanel"; m_filtersPanel.clipChildren = true; m_filtersPanel.size = new Vector2(150, 235); m_filtersPanel.isVisible = false; UIFilters.FilterPanel = m_filtersPanel; void OnDoubleClick(UIComponent c, UIMouseEventParameter p) { foreach (UICheckBox cb in UIFilters.FilterCBs) { cb.isChecked = false; Filters.SetFilter(cb.name, false); } ((UICheckBox)c).isChecked = true; Filters.SetFilter(c.name, true); UIFilters.RefreshFilters(); } void OnPickerClick(UIComponent c, UIMouseEventParameter p) { MoveItTool.SetToolState(MoveItTool.ToolStates.Picking); UIFilters.UpdatePickerButton(2); } void OnPickerDoubleClick(UIComponent c, UIMouseEventParameter p) { Filters.Picker = new PickerFilter(); Filters.SetFilter("Picker", false); MoveItTool.SetToolState(); UIFilters.UpdatePickerButton(1); } #region Standard Filters m_filtersPanelList = m_filtersPanel.AddUIComponent(typeof(UIPanel)) as UIPanel; m_filtersPanelList.name = "m_filtersPanelList"; m_picker = UIUtils.CreateButton(m_filtersPanel); m_picker.relativePosition = new Vector3(122, 9); m_picker.size = new Vector2(20, 20); m_picker.atlas = GetIconsAtlas(); m_picker.normalFgSprite = "EyeDropper"; m_picker.normalBgSprite = "OptionsDropboxListbox"; m_picker.hoveredBgSprite = "OptionsDropboxListboxFocused"; m_picker.pressedBgSprite = "OptionsDropboxListboxHovered"; m_picker.eventClick += OnPickerClick; m_picker.eventDoubleClick += OnPickerDoubleClick; m_picker.name = "mit_pickerButton"; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Picker", Str.filter_Picker, false); checkBox.width -= 21; UIFilters.UpdatePickerLabel(Str.filter_Picker, Str.filter_Picker_Tooltip, UIFilters.InactiveLabelColor, false); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Buildings", Str.filter_Buildings); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Props", Str.filter_Props); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Decals", Str.filter_Decals); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Surfaces", Str.filter_Surfaces); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Trees", Str.filter_Trees); checkBox.eventDoubleClick += OnDoubleClick; if (MoveItTool.PO.Enabled) { if (MoveItTool.PO.Active) { m_filtersPanel.height += 20f; } checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "PO", Str.filter_PO); checkBox.eventDoubleClick += OnDoubleClick; checkBox.isVisible = MoveItTool.PO.Active; } checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Nodes", Str.filter_Nodes); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Segments", Str.filter_Segments); checkBox.eventDoubleClick += OnDoubleClick; #endregion #region Network Filters UIButton btnNetworks = UIFilters.CreateToggleNFBtn(); void OnDoubleClickNetworkFilter(UIComponent c, UIMouseEventParameter p) { foreach (UICheckBox cb in UIFilters.NetworkCBs) { cb.isChecked = false; Filters.SetNetworkFilter(cb.name, false); } ((UICheckBox)c).isChecked = true; Filters.SetNetworkFilter(c.name, true); UIFilters.RefreshFilters(); } checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Roads", Str.filter_Roads); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Tracks", Str.filter_Tracks); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Paths", Str.filter_Paths); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Fences", Str.filter_Fences); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Powerlines", Str.filter_Powerlines); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Others", Str.filter_Others); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; UIFilters.RefreshFilters(); #endregion m_filtersPanelList.padding = new RectOffset(10, 10, 10, 10); m_filtersPanelList.autoLayoutDirection = LayoutDirection.Vertical; m_filtersPanelList.autoLayoutPadding = new RectOffset(0, 0, 0, 5); m_filtersPanelList.autoLayout = true; m_filtersPanelList.relativePosition = new Vector3(0, 0, 0); m_filtersPanel.autoLayout = false; m_filtersPanel.absolutePosition = m_marquee.absolutePosition + new Vector3(-47, -5 - m_filtersPanel.height); #endregion m_marquee.eventButtonStateChanged += (c, p) => { MoveItTool.marqueeSelection = p == UIButton.ButtonState.Focused; m_filtersPanel.isVisible = MoveItTool.marqueeSelection; if (UIChangesWindow.instance != null) { UIChangesWindow.instance.RefreshPosition(); } }; m_marquee.eventDoubleClick += (UIComponent c, UIMouseEventParameter p) => { bool newChecked = false; foreach (UICheckBox cb in m_filtersPanel.GetComponentsInChildren <UICheckBox>()) { if (cb.name == "Picker") { continue; } if (!cb.isChecked) { newChecked = true; break; } } foreach (UICheckBox cb in m_filtersPanel.GetComponentsInChildren <UICheckBox>()) { if (cb.name == "Picker") { cb.isChecked = false; Filters.SetAnyFilter(cb.name, false); } else { cb.isChecked = newChecked; Filters.SetAnyFilter(cb.name, newChecked); } } UIFilters.RefreshFilters(); }; #endregion #region Copy m_copy = AddUIComponent <UIButton>(); m_copy.name = "MoveIt_Copy"; m_copy.group = m_tabStrip; m_copy.atlas = GetIconsAtlas(); m_copy.tooltip = Str.baseUI_Clone_Tooltip;; m_copy.playAudioEvents = true; m_copy.size = new Vector2(36, 36); m_copy.normalBgSprite = "OptionBase"; m_copy.hoveredBgSprite = "OptionBaseHovered"; m_copy.pressedBgSprite = "OptionBasePressed"; m_copy.disabledBgSprite = "OptionBaseDisabled"; m_copy.normalFgSprite = "Copy"; m_copy.relativePosition = m_tabStrip.relativePosition + new Vector3(m_single.width + m_marquee.width, 0); m_copy.eventClicked += (c, p) => { if (MoveItTool.instance != null) { if (MoveItTool.ToolState == MoveItTool.ToolStates.Cloning) { MoveItTool.instance.StopCloning(); } else { if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt)) { if (Action.HasSelection()) { DuplicateAction action = new DuplicateAction(); if (action.Count > 0) { ActionQueue.instance.Push(action); ActionQueue.instance.Do(); } } } else { MoveItTool.instance.StartCloning(); } } } }; #endregion #region Bulldoze m_bulldoze = AddUIComponent <UIButton>(); m_bulldoze.name = "MoveIt_Bulldoze"; m_bulldoze.group = m_tabStrip; m_bulldoze.atlas = GetIconsAtlas(); m_bulldoze.tooltip = Str.baseUI_Bulldoze_Tooltip; m_bulldoze.playAudioEvents = true; m_bulldoze.size = new Vector2(36, 36); m_bulldoze.normalBgSprite = "OptionBase"; m_bulldoze.hoveredBgSprite = "OptionBaseHovered"; m_bulldoze.pressedBgSprite = "OptionBasePressed"; m_bulldoze.disabledBgSprite = "OptionBaseDisabled"; m_bulldoze.normalFgSprite = "Bulldoze"; m_bulldoze.relativePosition = m_copy.relativePosition + new Vector3(m_copy.width, 0); m_bulldoze.eventClicked += (c, p) => { if (MoveItTool.instance != null) { MoveItTool.instance.StartBulldoze(); } }; #endregion #region More Tools #region More Tools Container m_moreTools = AddUIComponent <UIButton>(); UIMoreTools.MoreToolsBtn = m_moreTools; m_moreTools.name = "MoveIt_MoreToolsBtn"; m_moreTools.group = m_tabStrip; m_moreTools.atlas = GetIconsAtlas(); m_moreTools.tooltip = Str.baseUI_Toolbox_Tooltip; m_moreTools.playAudioEvents = true; m_moreTools.size = new Vector2(36, 36); m_moreTools.normalBgSprite = "OptionBase"; m_moreTools.hoveredBgSprite = "OptionBaseHovered"; m_moreTools.pressedBgSprite = "OptionBasePressed"; m_moreTools.disabledBgSprite = "OptionBaseDisabled"; m_moreTools.normalFgSprite = "MoreTools"; m_moreTools.relativePosition = m_bulldoze.relativePosition + new Vector3(m_bulldoze.width, 0); m_moreTools.eventClicked += (UIComponent c, UIMouseEventParameter p) => { UIMoreTools.MoreToolsClicked(m_moreTools.name); }; m_moreToolsPanel = AddUIComponent <UIPanel>(); UIMoreTools.MoreToolsPanel = m_moreToolsPanel; m_moreToolsPanel.name = "mtPanel"; m_moreToolsPanel.autoLayout = false; m_moreToolsPanel.clipChildren = true; m_moreToolsPanel.size = new Vector2(36, 132); m_moreToolsPanel.isVisible = false; m_moreToolsPanel.absolutePosition = m_moreTools.absolutePosition + new Vector3(0, 10 - m_moreToolsPanel.height); m_moreTools.zOrder = m_moreToolsPanel.zOrder + 10; // The vertical shade UIPanel mtpBackground = m_moreToolsPanel.AddUIComponent <UIPanel>(); mtpBackground.name = "mtpBackground"; mtpBackground.clipChildren = true; mtpBackground.relativePosition = new Vector3(5, 10); mtpBackground.atlas = UIUtils.GetAtlas("Ingame"); mtpBackground.backgroundSprite = "InfoPanelBack"; mtpBackground.size = m_moreToolsPanel.size - new Vector2(10, 10); UIPanel mtpContainer = m_moreToolsPanel.AddUIComponent <UIPanel>(); mtpContainer.name = "mtpContainer"; mtpContainer.autoLayoutDirection = LayoutDirection.Vertical; mtpContainer.autoLayoutPadding = new RectOffset(0, 0, 0, 4); mtpContainer.autoLayout = true; mtpContainer.relativePosition = Vector3.zero; mtpContainer.size = m_moreToolsPanel.size; mtpContainer.eventMouseEnter += (UIComponent c, UIMouseEventParameter p) => { if (MoveItTool.marqueeSelection) { m_filtersPanel.isVisible = false; } }; mtpContainer.eventMouseLeave += (UIComponent c, UIMouseEventParameter p) => { if (MoveItTool.marqueeSelection) { m_filtersPanel.isVisible = true; } }; UIMoreTools.MoreButtons.Clear(); UIMoreTools.MoreSubButtons.Clear(); #endregion try { AddMoreButtonCallback?.Invoke(this, m_moreTools, mtpBackground, mtpContainer); } catch (Exception e) { Log.Error(e); } #region More Tools / Toolbox buttons UIMoreToolsBtn othersBtn = new UIMoreToolsBtn(this, "MoveIt_OthersBtn", Str.toolbox_OtherTools_Tooltip, "MenuOthers", mtpContainer, "m_mtOthersList", (MoveItTool.PO.Enabled ? 7.25f : 6.25f)); if (MoveItTool.PO.Enabled) { othersBtn.CreateSubButton("MoveIt_ConvertToPOBtn", Str.toolbox_ConvertToPO, "ConvertToPO"); } othersBtn.CreateSubButton("MoveIt_AlignLineBtn", Str.toolbox_LineUpObjects, "AlignLine"); othersBtn.CreateSubButton("MoveIt_AlignMirrorBtn", Str.toolbox_MirrorObjects, "AlignMirror"); othersBtn.CreateSubButton("MoveIt_ResetObjectBtn", Str.toolbox_ResetObjects, "ResetObject"); othersBtn.CreateSubButton("MoveIt_MoveToBtn", Str.toolbox_SetPosition, "MoveTo"); othersBtn.CreateSubSeparator("MoveIt_FileSeparator"); othersBtn.CreateSubButton("MoveIt_LoadBtn", Str.toolbox_ImportSelection, "Load"); othersBtn.CreateSubButton("MoveIt_SaveBtn", Str.toolbox_ExportSelection, "Save"); othersBtn.UpdateWidth(); UIMoreToolsBtn rotateBtn = new UIMoreToolsBtn(this, "MoveIt_RotateBtn", Str.toolbox_RotationTools_Tooltip, "MenuRotate", mtpContainer, "m_mtRotateList", 3f); rotateBtn.CreateSubButton("MoveIt_AlignRandomBtn", Str.toolbox_RotateRandomly, "AlignRandom"); rotateBtn.CreateSubButton("MoveIt_AlignGroupBtn", Str.toolbox_RotateAtCentre, "AlignGroup"); rotateBtn.CreateSubButton("MoveIt_AlignIndividualBtn", Str.toolbox_RotateInPlace, "AlignIndividual"); rotateBtn.UpdateWidth(); UIMoreToolsBtn heightBtn = new UIMoreToolsBtn(this, "MoveIt_HeightBtn", Str.toolbox_HeightTools_Tooltip, "MenuHeight", mtpContainer, "m_mtHeightList", 3f); heightBtn.CreateSubButton("MoveIt_AlignSlopeBtn", Str.toolbox_SlopeObjects, "AlignSlope"); heightBtn.CreateSubButton("MoveIt_AlignTerrainHeightBtn", Str.toolbox_ToTerrainHeight, "AlignTerrainHeight"); heightBtn.CreateSubButton("MoveIt_AlignHeightBtn", Str.toolbox_ToObjectHeight, "AlignHeight"); heightBtn.UpdateWidth(); #endregion #endregion #region View Options m_viewOptions = AddUIComponent <UIPanel>(); m_viewOptions.atlas = UIUtils.GetAtlas("Ingame"); m_viewOptions.backgroundSprite = "InfoPanelBack"; m_viewOptions.size = new Vector2(44f, 80f); m_viewOptions.absolutePosition = new Vector3(GetUIView().GetScreenResolution().x - m_viewOptions.width, absolutePosition.y - m_viewOptions.height - 8f); grid = m_viewOptions.AddUIComponent <UIMultiStateButton>(); grid.atlas = GetIconsAtlas(); grid.name = "MoveIt_GridView"; grid.tooltip = Str.baseUI_ToggleGrid_Tooltip; grid.playAudioEvents = true; grid.size = new Vector2(36, 36); grid.spritePadding = new RectOffset(); grid.backgroundSprites[0].disabled = "OptionBaseDisabled"; grid.backgroundSprites[0].hovered = "OptionBaseHovered"; grid.backgroundSprites[0].normal = "OptionBase"; grid.backgroundSprites[0].pressed = "OptionBasePressed"; grid.backgroundSprites.AddState(); grid.backgroundSprites[1].disabled = "OptionBaseDisabled"; grid.backgroundSprites[1].hovered = ""; grid.backgroundSprites[1].normal = "OptionBaseFocused"; grid.backgroundSprites[1].pressed = "OptionBasePressed"; grid.foregroundSprites[0].normal = "Grid"; grid.foregroundSprites.AddState(); grid.foregroundSprites[1].normal = "GridFocused"; grid.relativePosition = new Vector3(4f, 4f); grid.activeStateIndex = 0; grid.eventClicked += (c, p) => { MoveItTool.gridVisible = (grid.activeStateIndex == 1); }; underground = m_viewOptions.AddUIComponent <UIMultiStateButton>(); underground.atlas = UIUtils.GetAtlas("Ingame"); underground.name = "MoveIt_UndergroundView"; underground.tooltip = Str.baseUI_ToggleUnderground_Tooltip; underground.playAudioEvents = true; underground.size = new Vector2(36, 36); underground.spritePadding = new RectOffset(); underground.backgroundSprites[0].disabled = "OptionBaseDisabled"; underground.backgroundSprites[0].hovered = "OptionBaseHovered"; underground.backgroundSprites[0].normal = "OptionBase"; underground.backgroundSprites[0].pressed = "OptionBasePressed"; underground.backgroundSprites.AddState(); underground.backgroundSprites[1].disabled = "OptionBaseDisabled"; underground.backgroundSprites[1].hovered = ""; underground.backgroundSprites[1].normal = "OptionBaseFocused"; underground.backgroundSprites[1].pressed = "OptionBasePressed"; underground.foregroundSprites[0].normal = "BulldozerOptionPipes"; underground.foregroundSprites.AddState(); underground.foregroundSprites[1].normal = "BulldozerOptionPipesFocused"; underground.relativePosition = new Vector3(4f, 40f); underground.activeStateIndex = 0; underground.eventClicked += (c, p) => { MoveItTool.tunnelVisible = (underground.activeStateIndex == 1); }; if (MoveItTool.PO.Enabled) { PO_button = m_viewOptions.AddUIComponent <UIMultiStateButton>(); PO_button.atlas = GetIconsAtlas(); PO_button.name = "MoveIt_PO_button"; PO_button.tooltip = Str.baseUI_TogglePO_Tooltip; PO_button.playAudioEvents = true; PO_button.size = new Vector2(36, 36); PO_button.spritePadding = new RectOffset(); PO_button.backgroundSprites[0].disabled = "OptionBaseDisabled"; PO_button.backgroundSprites[0].hovered = "OptionBaseHovered"; PO_button.backgroundSprites[0].normal = "OptionBase"; PO_button.backgroundSprites[0].pressed = "OptionBasePressed"; PO_button.backgroundSprites.AddState(); PO_button.backgroundSprites[1].disabled = "OptionBaseDisabled"; PO_button.backgroundSprites[1].hovered = ""; PO_button.backgroundSprites[1].normal = "OptionBaseFocused"; PO_button.backgroundSprites[1].pressed = "OptionBasePressed"; PO_button.foregroundSprites[0].normal = "PO"; PO_button.foregroundSprites.AddState(); PO_button.foregroundSprites[1].normal = "POFocused"; PO_button.relativePosition = new Vector3(4f, 76f); PO_button.activeStateIndex = 0; PO_button.eventClicked += (c, p) => { MoveItTool.PO.InitialiseTool(); }; m_viewOptions.height += 36; m_viewOptions.absolutePosition += new Vector3(0, -36); } #endregion }
public override void Start() { UIMoreTools.Initialise(); instance = this; UICheckBox checkBox = null; atlas = UIUtils.GetAtlas("Ingame"); size = new Vector2(41, 41); relativePosition = new Vector2(GetUIView().GetScreenResolution().x - 448, -41); name = "MoveIt_ToolOptionPanel"; DebugUtils.Log("ToolOptionPanel position: " + absolutePosition); #region Group // Group m_group = AddUIComponent <UIButton>(); m_group.name = "MoveIt_Group"; m_group.group = m_tabStrip; m_group.atlas = GetIconsAtlas(); m_group.tooltip = "Group"; m_group.playAudioEvents = true; m_group.size = new Vector2(36, 36); m_group.normalBgSprite = "OptionBase"; m_group.hoveredBgSprite = "OptionBaseHovered"; m_group.pressedBgSprite = "OptionBasePressed"; m_group.disabledBgSprite = "OptionBaseDisabled"; m_group.normalFgSprite = "Group"; m_group.relativePosition = Vector2.zero; m_group.isVisible = false; //TODO: temporary #endregion #region Save m_save = AddUIComponent <UIButton>(); m_save.name = "MoveIt_Save"; m_save.group = m_tabStrip; m_save.atlas = GetIconsAtlas(); m_save.tooltip = "Export"; m_save.playAudioEvents = true; m_save.size = new Vector2(36, 36); m_save.normalBgSprite = "OptionBase"; m_save.hoveredBgSprite = "OptionBaseHovered"; m_save.pressedBgSprite = "OptionBasePressed"; m_save.disabledBgSprite = "OptionBaseDisabled"; m_save.normalFgSprite = "Save"; m_save.disabledFgSprite = "Save_disabled"; m_save.relativePosition = m_group.relativePosition + new Vector3(m_group.width, 0); m_save.eventClicked += (c, p) => { if (MoveItTool.IsExportSelectionValid()) { UISaveWindow.Open(); } else { UIView.library.ShowModal <ExceptionPanel>("ExceptionPanel").SetMessage("Selection invalid", "The selection is empty or invalid.", false); } }; #endregion #region Load m_load = AddUIComponent <UIButton>(); m_load.name = "MoveIt_Load"; m_load.group = m_tabStrip; m_load.atlas = GetIconsAtlas(); m_load.tooltip = "Import"; m_load.playAudioEvents = true; m_load.size = new Vector2(36, 36); m_load.normalBgSprite = "OptionBase"; m_load.hoveredBgSprite = "OptionBaseHovered"; m_load.pressedBgSprite = "OptionBasePressed"; m_load.disabledBgSprite = "OptionBaseDisabled"; m_load.normalFgSprite = "Load"; m_load.relativePosition = m_save.relativePosition + new Vector3(m_save.width, 0); m_load.eventClicked += (c, p) => { UILoadWindow.Open(); }; #endregion #region Follow Terrain m_followTerrain = AddUIComponent <UIMultiStateButton>(); m_followTerrain.atlas = GetFollowTerrainAtlas(); m_followTerrain.name = "MoveIt_FollowTerrain"; m_followTerrain.tooltip = "Follow Terrain"; m_followTerrain.playAudioEvents = true; m_followTerrain.size = new Vector2(36, 36); m_followTerrain.spritePadding = new RectOffset(); m_followTerrain.backgroundSprites[0].disabled = "ToggleBaseDisabled"; m_followTerrain.backgroundSprites[0].hovered = "ToggleBaseHovered"; m_followTerrain.backgroundSprites[0].normal = "ToggleBase"; m_followTerrain.backgroundSprites[0].pressed = "ToggleBasePressed"; m_followTerrain.backgroundSprites.AddState(); m_followTerrain.backgroundSprites[1].disabled = "ToggleBaseDisabled"; m_followTerrain.backgroundSprites[1].hovered = ""; m_followTerrain.backgroundSprites[1].normal = "ToggleBaseFocused"; m_followTerrain.backgroundSprites[1].pressed = "ToggleBasePressed"; m_followTerrain.foregroundSprites[0].normal = "FollowTerrain_disabled"; m_followTerrain.foregroundSprites.AddState(); m_followTerrain.foregroundSprites[1].normal = "FollowTerrain"; m_followTerrain.relativePosition = m_load.relativePosition + new Vector3(m_load.width + m_load.width / 2, 0); m_followTerrain.activeStateIndex = MoveItTool.followTerrain ? 1 : 0; m_followTerrain.eventClicked += (c, p) => { MoveItTool.followTerrain = (m_followTerrain.activeStateIndex == 1); MoveItTool.followTerrainModeEnabled.value = (m_followTerrain.activeStateIndex == 1); }; #endregion #region Snapping m_snapping = AddUIComponent <UIMultiStateButton>(); m_snapping.atlas = UIUtils.GetAtlas("Ingame"); m_snapping.name = "MoveIt_Snapping"; m_snapping.tooltip = "Toggle Snapping"; m_snapping.playAudioEvents = true; m_snapping.size = new Vector2(36, 36); m_snapping.spritePadding = new RectOffset(); m_snapping.backgroundSprites[0].disabled = "ToggleBaseDisabled"; m_snapping.backgroundSprites[0].hovered = "ToggleBaseHovered"; m_snapping.backgroundSprites[0].normal = "ToggleBase"; m_snapping.backgroundSprites[0].pressed = "ToggleBasePressed"; m_snapping.backgroundSprites.AddState(); m_snapping.backgroundSprites[1].disabled = "ToggleBaseDisabled"; m_snapping.backgroundSprites[1].hovered = ""; m_snapping.backgroundSprites[1].normal = "ToggleBaseFocused"; m_snapping.backgroundSprites[1].pressed = "ToggleBasePressed"; m_snapping.foregroundSprites[0].disabled = "SnappingDisabled"; m_snapping.foregroundSprites[0].hovered = "SnappingHovered"; m_snapping.foregroundSprites[0].normal = "Snapping"; m_snapping.foregroundSprites[0].pressed = "SnappingPressed"; m_snapping.foregroundSprites.AddState(); m_snapping.foregroundSprites[1].disabled = "SnappingDisabled"; m_snapping.foregroundSprites[1].hovered = ""; m_snapping.foregroundSprites[1].normal = "SnappingFocused"; m_snapping.foregroundSprites[1].pressed = "SnappingPressed"; m_snapping.relativePosition = m_followTerrain.relativePosition + new Vector3(m_followTerrain.width, 0); m_snapping.activeStateIndex = (MoveItTool.instance != null && MoveItTool.instance.snapping) ? 1 : 0; m_snapping.eventClicked += (c, p) => { if (MoveItTool.instance != null) { MoveItTool.instance.snapping = (m_snapping.activeStateIndex == 1); } }; #endregion m_tabStrip = AddUIComponent <UITabstrip>(); m_tabStrip.size = new Vector2(36, 72); m_tabStrip.relativePosition = m_snapping.relativePosition + new Vector3(m_snapping.width, 0); #region Single Select m_single = m_tabStrip.AddTab("MoveIt_Single", null, false); m_single.group = m_tabStrip; m_single.atlas = UIUtils.GetAtlas("Ingame"); m_single.tooltip = "Single Selection"; m_single.playAudioEvents = true; m_single.size = new Vector2(36, 36); m_single.normalBgSprite = "OptionBase"; m_single.focusedBgSprite = "OptionBaseFocused"; m_single.hoveredBgSprite = "OptionBaseHovered"; m_single.pressedBgSprite = "OptionBasePressed"; m_single.disabledBgSprite = "OptionBaseDisabled"; m_single.text = "•"; m_single.textScale = 1.5f; m_single.textPadding = new RectOffset(0, 1, 4, 0); m_single.textColor = new Color32(119, 124, 126, 255); m_single.hoveredTextColor = new Color32(110, 113, 114, 255); m_single.pressedTextColor = new Color32(172, 175, 176, 255); m_single.focusedTextColor = new Color32(187, 224, 235, 255); m_single.disabledTextColor = new Color32(66, 69, 70, 255); #endregion #region Marquee Select m_marquee = m_tabStrip.AddTab("MoveIt_Marquee", null, false); m_marquee.group = m_tabStrip; m_marquee.atlas = UIUtils.GetAtlas("Ingame"); m_marquee.tooltip = "Marquee Selection"; m_marquee.playAudioEvents = true; m_marquee.size = new Vector2(36, 36); m_marquee.normalBgSprite = "OptionBase"; m_marquee.focusedBgSprite = "OptionBaseFocused"; m_marquee.hoveredBgSprite = "OptionBaseHovered"; m_marquee.pressedBgSprite = "OptionBasePressed"; m_marquee.disabledBgSprite = "OptionBaseDisabled"; m_marquee.normalFgSprite = "ZoningOptionMarquee"; m_marquee.relativePosition = m_single.relativePosition + new Vector3(m_single.width, 0); #endregion #region filtersPanel m_filtersPanel = AddUIComponent(typeof(UIPanel)) as UIPanel; m_filtersPanel.atlas = UIUtils.GetAtlas("Ingame"); m_filtersPanel.backgroundSprite = "SubcategoriesPanel"; m_filtersPanel.clipChildren = true; m_filtersPanel.size = new Vector2(150, 235); m_filtersPanel.isVisible = false; UIFilters.FilterPanel = m_filtersPanel; void OnDoubleClick(UIComponent c, UIMouseEventParameter p) { foreach (UICheckBox cb in UIFilters.FilterCBs) { cb.isChecked = false; Filters.SetFilter(cb.name, false); } ((UICheckBox)c).isChecked = true; Filters.SetFilter(c.name, true); UIFilters.RefreshFilters(); } void OnPickerClick(UIComponent c, UIMouseEventParameter p) { MoveItTool.instance.ToolState = MoveItTool.ToolStates.Picking; UIFilters.UpdatePickerButton(2); } void OnPickerDoubleClick(UIComponent c, UIMouseEventParameter p) { Filters.Picker = new PickerFilter(); Filters.SetFilter("Picker", false); MoveItTool.instance.ToolState = MoveItTool.ToolStates.Default; UIFilters.UpdatePickerButton(1); } #region Standard Filters m_filtersPanelList = m_filtersPanel.AddUIComponent(typeof(UIPanel)) as UIPanel; m_filtersPanelList.name = "m_filtersPanelList"; m_picker = UIUtils.CreateButton(m_filtersPanel); m_picker.relativePosition = new Vector3(122, 9); m_picker.size = new Vector2(20, 20); m_picker.atlas = GetIconsAtlas(); m_picker.normalFgSprite = "EyeDropper"; m_picker.normalBgSprite = "OptionsDropboxListbox"; m_picker.hoveredBgSprite = "OptionsDropboxListboxFocused"; m_picker.pressedBgSprite = "OptionsDropboxListboxHovered"; m_picker.eventClick += OnPickerClick; m_picker.eventDoubleClick += OnPickerDoubleClick; m_picker.name = "mit_pickerButton"; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Picker", null, false); checkBox.width -= 21; UIFilters.UpdatePickerLabel("Picker", "Pick an object to filter for objects of the same type", UIFilters.InactiveLabelColor, false); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Buildings"); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Props"); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Decals"); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Surfaces"); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Trees"); checkBox.eventDoubleClick += OnDoubleClick; if (MoveItTool.PO.Enabled) { if (MoveItTool.PO.Active) { m_filtersPanel.height += 20f; } checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "PO"); checkBox.eventDoubleClick += OnDoubleClick; checkBox.isVisible = MoveItTool.PO.Active; } checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Nodes"); checkBox.eventDoubleClick += OnDoubleClick; checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Segments"); checkBox.eventDoubleClick += OnDoubleClick; #endregion #region Network Filters UIButton btnNetworks = UIFilters.CreateToggleNFBtn(); void OnDoubleClickNetworkFilter(UIComponent c, UIMouseEventParameter p) { foreach (UICheckBox cb in UIFilters.NetworkCBs) { cb.isChecked = false; Filters.SetNetworkFilter(cb.name, false); } ((UICheckBox)c).isChecked = true; Filters.SetNetworkFilter(c.name, true); UIFilters.RefreshFilters(); } checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Roads"); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Tracks"); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Paths"); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Fences"); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Powerlines"); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Others"); checkBox.eventDoubleClick += OnDoubleClickNetworkFilter; UIFilters.RefreshFilters(); #endregion m_filtersPanelList.padding = new RectOffset(10, 10, 10, 10); m_filtersPanelList.autoLayoutDirection = LayoutDirection.Vertical; m_filtersPanelList.autoLayoutPadding = new RectOffset(0, 0, 0, 5); m_filtersPanelList.autoLayout = true; m_filtersPanelList.relativePosition = new Vector3(0, 0, 0); m_filtersPanel.autoLayout = false; m_filtersPanel.absolutePosition = m_marquee.absolutePosition + new Vector3(-47, -5 - m_filtersPanel.height); #endregion m_marquee.eventButtonStateChanged += (c, p) => { MoveItTool.marqueeSelection = p == UIButton.ButtonState.Focused; m_filtersPanel.isVisible = MoveItTool.marqueeSelection; if (UIChangesWindow.instance != null) { UIChangesWindow.instance.RefreshPosition(); } }; m_marquee.eventDoubleClick += (UIComponent c, UIMouseEventParameter p) => { bool newChecked = false; foreach (UICheckBox cb in m_filtersPanel.GetComponentsInChildren <UICheckBox>()) { if (cb.name == "Picker") { continue; } if (!cb.isChecked) { newChecked = true; break; } } foreach (UICheckBox cb in m_filtersPanel.GetComponentsInChildren <UICheckBox>()) { if (cb.name == "Picker") { cb.isChecked = false; Filters.SetAnyFilter(cb.name, false); } else { cb.isChecked = newChecked; Filters.SetAnyFilter(cb.name, newChecked); } } UIFilters.RefreshFilters(); }; #region Copy m_copy = AddUIComponent <UIButton>(); m_copy.name = "MoveIt_Copy"; m_copy.group = m_tabStrip; m_copy.atlas = GetIconsAtlas(); m_copy.tooltip = "Copy (Alt+Click to duplicate in-place)"; m_copy.playAudioEvents = true; m_copy.size = new Vector2(36, 36); m_copy.normalBgSprite = "OptionBase"; m_copy.hoveredBgSprite = "OptionBaseHovered"; m_copy.pressedBgSprite = "OptionBasePressed"; m_copy.disabledBgSprite = "OptionBaseDisabled"; m_copy.normalFgSprite = "Copy"; m_copy.relativePosition = m_tabStrip.relativePosition + new Vector3(m_single.width + m_marquee.width, 0); m_copy.eventClicked += (c, p) => { if (MoveItTool.instance != null) { if (MoveItTool.instance.ToolState == MoveItTool.ToolStates.Cloning) { MoveItTool.instance.StopCloning(); } else { if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt)) { if (Action.selection.Count > 0) { DuplicateAction action = new DuplicateAction(); if (action.Count > 0) { ActionQueue.instance.Push(action); ActionQueue.instance.Do(); } } } else { MoveItTool.instance.StartCloning(); } } } }; #endregion #region Bulldoze m_bulldoze = AddUIComponent <UIButton>(); m_bulldoze.name = "MoveIt_Bulldoze"; m_bulldoze.group = m_tabStrip; m_bulldoze.atlas = GetIconsAtlas(); m_bulldoze.tooltip = "Bulldoze"; m_bulldoze.playAudioEvents = true; m_bulldoze.size = new Vector2(36, 36); m_bulldoze.normalBgSprite = "OptionBase"; m_bulldoze.hoveredBgSprite = "OptionBaseHovered"; m_bulldoze.pressedBgSprite = "OptionBasePressed"; m_bulldoze.disabledBgSprite = "OptionBaseDisabled"; m_bulldoze.normalFgSprite = "Bulldoze"; m_bulldoze.relativePosition = m_copy.relativePosition + new Vector3(m_copy.width, 0); m_bulldoze.eventClicked += (c, p) => { if (MoveItTool.instance != null) { if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt)) { MoveItTool.instance.StartReset(); } else { MoveItTool.instance.StartBulldoze(); } } }; #endregion #region More Tools m_moreTools = AddUIComponent <UIButton>(); UIMoreTools.MoreToolsBtn = m_moreTools; m_moreTools.name = "MoveIt_MoreToolsBtn"; m_moreTools.group = m_tabStrip; m_moreTools.atlas = GetIconsAtlas(); m_moreTools.tooltip = "More Tools"; m_moreTools.playAudioEvents = true; m_moreTools.size = new Vector2(36, 36); m_moreTools.normalBgSprite = "OptionBase"; m_moreTools.hoveredBgSprite = "OptionBaseHovered"; m_moreTools.pressedBgSprite = "OptionBasePressed"; m_moreTools.disabledBgSprite = "OptionBaseDisabled"; m_moreTools.normalFgSprite = "MoreTools"; m_moreTools.relativePosition = m_bulldoze.relativePosition + new Vector3(m_bulldoze.width, 0); m_moreTools.eventClicked += UIMoreTools.MoreToolsClicked; m_moreToolsPanel = AddUIComponent <UIPanel>(); UIMoreTools.MoreToolsPanel = m_moreToolsPanel; m_moreToolsPanel.name = "mtPanel"; m_moreToolsPanel.autoLayout = false; m_moreToolsPanel.clipChildren = true; m_moreToolsPanel.size = new Vector2(36, 322 + (MoveItTool.PO.Enabled ? 40 : 0)); m_moreToolsPanel.isVisible = false; m_moreToolsPanel.absolutePosition = m_moreTools.absolutePosition + new Vector3(0, 10 - m_moreToolsPanel.height); m_moreTools.zOrder = m_moreToolsPanel.zOrder + 10; // The vertical shade UIPanel mtpBackground = m_moreToolsPanel.AddUIComponent <UIPanel>(); mtpBackground.name = "mtpBackground"; mtpBackground.clipChildren = true; mtpBackground.relativePosition = new Vector3(5, 10); mtpBackground.atlas = UIUtils.GetAtlas("Ingame"); mtpBackground.backgroundSprite = "InfoPanelBack"; mtpBackground.size = m_moreToolsPanel.size - new Vector2(10, 10); UIPanel mtpContainer = m_moreToolsPanel.AddUIComponent <UIPanel>(); mtpContainer.name = "mtpContainer"; mtpContainer.autoLayoutDirection = LayoutDirection.Vertical; mtpContainer.autoLayoutPadding = new RectOffset(0, 0, 0, 3); mtpContainer.autoLayout = true; mtpContainer.relativePosition = Vector3.zero; mtpContainer.size = m_moreToolsPanel.size; UIMoreTools.MoreButtons.Clear(); if (MoveItTool.PO.Enabled) { UIMoreTools.MoreButtons.Add("MoveIt_ConvertToPOBtn", mtpContainer.AddUIComponent <UIButton>()); UIButton convertToPO = UIMoreTools.MoreButtons["MoveIt_ConvertToPOBtn"]; convertToPO.name = "MoveIt_ConvertToPOBtn"; convertToPO.atlas = GetIconsAtlas(); convertToPO.tooltip = "Convert To PO - tries to convert all selected\nbuildings and props into Procedural Objects."; convertToPO.playAudioEvents = true; convertToPO.size = new Vector2(36, 36); convertToPO.normalBgSprite = "OptionBase"; convertToPO.hoveredBgSprite = "OptionBaseHovered"; convertToPO.pressedBgSprite = "OptionBasePressed"; convertToPO.disabledBgSprite = "OptionBaseDisabled"; convertToPO.normalFgSprite = "ConvertToPO"; convertToPO.eventClicked += UIMoreTools.MoreToolsClicked; } UIMoreTools.MoreButtons.Add("MoveIt_ResetObjectBtn", mtpContainer.AddUIComponent <UIButton>()); UIButton resetObject = UIMoreTools.MoreButtons["MoveIt_ResetObjectBtn"]; resetObject.name = "MoveIt_ResetObjectBtn"; resetObject.atlas = GetIconsAtlas(); resetObject.tooltip = "Reset - Rebuild selected objects, repairing them and changing size/color variations."; resetObject.playAudioEvents = true; resetObject.size = new Vector2(36, 36); resetObject.normalBgSprite = "OptionBase"; resetObject.hoveredBgSprite = "OptionBaseHovered"; resetObject.pressedBgSprite = "OptionBasePressed"; resetObject.disabledBgSprite = "OptionBaseDisabled"; resetObject.normalFgSprite = "ResetObject"; resetObject.eventClicked += UIMoreTools.MoreToolsClicked; UIMoreTools.MoreButtons.Add("MoveIt_AlignMirrorBtn", mtpContainer.AddUIComponent <UIButton>()); UIButton alignMirror = UIMoreTools.MoreButtons["MoveIt_AlignMirrorBtn"]; alignMirror.name = "MoveIt_AlignMirrorBtn"; alignMirror.atlas = GetIconsAtlas(); alignMirror.tooltip = "Align Mirror - Click on a network segment to set the\nmirror axis to create a mirrored copy of selection"; alignMirror.playAudioEvents = true; alignMirror.size = new Vector2(36, 36); alignMirror.normalBgSprite = "OptionBase"; alignMirror.hoveredBgSprite = "OptionBaseHovered"; alignMirror.pressedBgSprite = "OptionBasePressed"; alignMirror.disabledBgSprite = "OptionBaseDisabled"; alignMirror.normalFgSprite = "AlignMirror"; alignMirror.eventClicked += UIMoreTools.MoreToolsClicked; UIMoreTools.MoreButtons.Add("MoveIt_AlignRandomBtn", mtpContainer.AddUIComponent <UIButton>()); UIButton alignRandom = UIMoreTools.MoreButtons["MoveIt_AlignRandomBtn"]; alignRandom.name = "MoveIt_AlignRandomBtn"; alignRandom.atlas = GetIconsAtlas(); alignRandom.tooltip = "Random - Immediately rotate valid objects randomly"; alignRandom.playAudioEvents = true; alignRandom.size = new Vector2(36, 36); alignRandom.normalBgSprite = "OptionBase"; alignRandom.hoveredBgSprite = "OptionBaseHovered"; alignRandom.pressedBgSprite = "OptionBasePressed"; alignRandom.disabledBgSprite = "OptionBaseDisabled"; alignRandom.normalFgSprite = "AlignRandom"; alignRandom.eventClicked += UIMoreTools.MoreToolsClicked; UIMoreTools.MoreButtons.Add("MoveIt_AlignGroupBtn", mtpContainer.AddUIComponent <UIButton>()); UIButton alignGroup = UIMoreTools.MoreButtons["MoveIt_AlignGroupBtn"]; alignGroup.name = "MoveIt_AlignGroupBtn"; alignGroup.atlas = GetIconsAtlas(); alignGroup.tooltip = "Align as Group - click on an object to rotate\nselection around a central point to face\nobject's direction"; alignGroup.playAudioEvents = true; alignGroup.size = new Vector2(36, 36); alignGroup.normalBgSprite = "OptionBase"; alignGroup.hoveredBgSprite = "OptionBaseHovered"; alignGroup.pressedBgSprite = "OptionBasePressed"; alignGroup.disabledBgSprite = "OptionBaseDisabled"; alignGroup.normalFgSprite = "AlignGroup"; alignGroup.eventClicked += UIMoreTools.MoreToolsClicked; UIMoreTools.MoreButtons.Add("MoveIt_AlignIndividualBtn", mtpContainer.AddUIComponent <UIButton>()); UIButton alignIndividual = UIMoreTools.MoreButtons["MoveIt_AlignIndividualBtn"]; alignIndividual.name = "MoveIt_AlignIndividualBtn"; alignIndividual.atlas = GetIconsAtlas(); alignIndividual.tooltip = "Align In-Place - click on an object to\nrotate selected items to face that direction"; alignIndividual.playAudioEvents = true; alignIndividual.size = new Vector2(36, 36); alignIndividual.normalBgSprite = "OptionBase"; alignIndividual.hoveredBgSprite = "OptionBaseHovered"; alignIndividual.pressedBgSprite = "OptionBasePressed"; alignIndividual.disabledBgSprite = "OptionBaseDisabled"; alignIndividual.normalFgSprite = "AlignIndividual"; alignIndividual.eventClicked += UIMoreTools.MoreToolsClicked; UIMoreTools.MoreButtons.Add("MoveIt_AlignSlopeBtn", mtpContainer.AddUIComponent <UIButton>()); UIButton alignSlope = UIMoreTools.MoreButtons["MoveIt_AlignSlopeBtn"]; alignSlope.name = "MoveIt_AlignSlopeBtn"; alignSlope.atlas = GetIconsAtlas(); alignSlope.tooltip = "Align Slope - click on 2 objects to define\nthe slope axis to move selected objects\nup/down to that height"; alignSlope.playAudioEvents = true; alignSlope.size = new Vector2(36, 36); alignSlope.normalBgSprite = "OptionBase"; alignSlope.hoveredBgSprite = "OptionBaseHovered"; alignSlope.pressedBgSprite = "OptionBasePressed"; alignSlope.disabledBgSprite = "OptionBaseDisabled"; alignSlope.normalFgSprite = "AlignSlope"; alignSlope.eventClicked += UIMoreTools.MoreToolsClicked; UIMoreTools.MoreButtons.Add("MoveIt_AlignTerrainHeightBtn", mtpContainer.AddUIComponent <UIButton>()); UIButton alignTerrainHeight = UIMoreTools.MoreButtons["MoveIt_AlignTerrainHeightBtn"]; alignTerrainHeight.name = "MoveIt_AlignTerrainHeightBtn"; alignTerrainHeight.atlas = GetIconsAtlas(); alignTerrainHeight.tooltip = "Immediately Align objects to Terrain Height"; alignTerrainHeight.playAudioEvents = true; alignTerrainHeight.size = new Vector2(36, 36); alignTerrainHeight.normalBgSprite = "OptionBase"; alignTerrainHeight.hoveredBgSprite = "OptionBaseHovered"; alignTerrainHeight.pressedBgSprite = "OptionBasePressed"; alignTerrainHeight.disabledBgSprite = "OptionBaseDisabled"; alignTerrainHeight.normalFgSprite = "AlignTerrainHeight"; alignTerrainHeight.eventClicked += UIMoreTools.MoreToolsClicked; UIMoreTools.MoreButtons.Add("MoveIt_AlignHeightBtn", mtpContainer.AddUIComponent <UIButton>()); UIButton alignHeight = UIMoreTools.MoreButtons["MoveIt_AlignHeightBtn"]; alignHeight.name = "MoveIt_AlignHeightBtn"; alignHeight.atlas = GetIconsAtlas(); alignHeight.tooltip = "Align Height - click on an object to move\nselected objects up/down to that height"; alignHeight.playAudioEvents = true; alignHeight.size = new Vector2(36, 36); alignHeight.normalBgSprite = "OptionBase"; alignHeight.hoveredBgSprite = "OptionBaseHovered"; alignHeight.pressedBgSprite = "OptionBasePressed"; alignHeight.disabledBgSprite = "OptionBaseDisabled"; alignHeight.normalFgSprite = "AlignHeight"; alignHeight.eventClicked += UIMoreTools.MoreToolsClicked; #endregion #region View Options m_viewOptions = AddUIComponent <UIPanel>(); m_viewOptions.atlas = UIUtils.GetAtlas("Ingame"); m_viewOptions.backgroundSprite = "InfoPanelBack"; m_viewOptions.size = new Vector2(44f, 80f); m_viewOptions.absolutePosition = new Vector3(GetUIView().GetScreenResolution().x - m_viewOptions.width, absolutePosition.y - m_viewOptions.height - 8f); grid = m_viewOptions.AddUIComponent <UIMultiStateButton>(); grid.atlas = GetIconsAtlas(); grid.name = "MoveIt_GridView"; grid.tooltip = "Toggle Grid"; grid.playAudioEvents = true; grid.size = new Vector2(36, 36); grid.spritePadding = new RectOffset(); grid.backgroundSprites[0].disabled = "OptionBaseDisabled"; grid.backgroundSprites[0].hovered = "OptionBaseHovered"; grid.backgroundSprites[0].normal = "OptionBase"; grid.backgroundSprites[0].pressed = "OptionBasePressed"; grid.backgroundSprites.AddState(); grid.backgroundSprites[1].disabled = "OptionBaseDisabled"; grid.backgroundSprites[1].hovered = ""; grid.backgroundSprites[1].normal = "OptionBaseFocused"; grid.backgroundSprites[1].pressed = "OptionBasePressed"; grid.foregroundSprites[0].normal = "Grid"; grid.foregroundSprites.AddState(); grid.foregroundSprites[1].normal = "GridFocused"; grid.relativePosition = new Vector3(4f, 4f); grid.activeStateIndex = 0; grid.eventClicked += (c, p) => { MoveItTool.gridVisible = (grid.activeStateIndex == 1); }; underground = m_viewOptions.AddUIComponent <UIMultiStateButton>(); underground.atlas = UIUtils.GetAtlas("Ingame"); underground.name = "MoveIt_UndergroundView"; underground.tooltip = "Toogle Underground View"; underground.playAudioEvents = true; underground.size = new Vector2(36, 36); underground.spritePadding = new RectOffset(); underground.backgroundSprites[0].disabled = "OptionBaseDisabled"; underground.backgroundSprites[0].hovered = "OptionBaseHovered"; underground.backgroundSprites[0].normal = "OptionBase"; underground.backgroundSprites[0].pressed = "OptionBasePressed"; underground.backgroundSprites.AddState(); underground.backgroundSprites[1].disabled = "OptionBaseDisabled"; underground.backgroundSprites[1].hovered = ""; underground.backgroundSprites[1].normal = "OptionBaseFocused"; underground.backgroundSprites[1].pressed = "OptionBasePressed"; underground.foregroundSprites[0].normal = "BulldozerOptionPipes"; underground.foregroundSprites.AddState(); underground.foregroundSprites[1].normal = "BulldozerOptionPipesFocused"; underground.relativePosition = new Vector3(4f, 40f); underground.activeStateIndex = 0; underground.eventClicked += (c, p) => { MoveItTool.tunnelVisible = (underground.activeStateIndex == 1); }; if (MoveItTool.PO.Enabled) { PO_button = m_viewOptions.AddUIComponent <UIMultiStateButton>(); PO_button.atlas = GetIconsAtlas(); PO_button.name = "MoveIt_PO_button"; PO_button.tooltip = "Toggle Procedural Objects"; PO_button.playAudioEvents = true; PO_button.size = new Vector2(36, 36); PO_button.spritePadding = new RectOffset(); PO_button.backgroundSprites[0].disabled = "OptionBaseDisabled"; PO_button.backgroundSprites[0].hovered = "OptionBaseHovered"; PO_button.backgroundSprites[0].normal = "OptionBase"; PO_button.backgroundSprites[0].pressed = "OptionBasePressed"; PO_button.backgroundSprites.AddState(); PO_button.backgroundSprites[1].disabled = "OptionBaseDisabled"; PO_button.backgroundSprites[1].hovered = ""; PO_button.backgroundSprites[1].normal = "OptionBaseFocused"; PO_button.backgroundSprites[1].pressed = "OptionBasePressed"; PO_button.foregroundSprites[0].normal = "PO"; PO_button.foregroundSprites.AddState(); PO_button.foregroundSprites[1].normal = "POFocused"; PO_button.relativePosition = new Vector3(4f, 76f); PO_button.activeStateIndex = 0; PO_button.eventClicked += (c, p) => { MoveItTool.PO.Active = (PO_button.activeStateIndex == 1); if (MoveItTool.PO.Active) { if (MoveItTool.instance.ToolState == MoveItTool.ToolStates.Cloning) { MoveItTool.instance.StopCloning(); } MoveItTool.PO.ToolEnabled(); ActionQueue.instance.Push(new TransformAction()); } else { Action.ClearPOFromSelection(); } UIFilters.POToggled(); }; m_viewOptions.height += 36; m_viewOptions.absolutePosition += new Vector3(0, -36); } #endregion }