/// <summary> /// Fires when the ListViewItem is selected /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ListViewItem_Selected(object sender, RoutedEventArgs e) { // Retrieve our ListViewItem var listViewItem = (ListViewItem)sender; // Retrieve our HudElem from the ListViewItem var hudElem = (HudElem)listViewItem.Tag; // Update our selected HudElem selectedHudElem = hudElem; // Get our Preview Image (Rectangle) var previewImage = hudElem.HudPreviewImage; if (selectedPreviewImage != null) { selectedPreviewImage.StrokeThickness = 0; } // Update our selected PreviewImage selectedPreviewImage = previewImage; selectedPreviewImage.StrokeThickness = 1; // Get our offsets double canvasX = Canvas.GetLeft(previewImage); double canvasY = Canvas.GetTop(previewImage); // Set our calculated Lui offsets LeftOffsetTxtBox.Text = LuiUtil.CalculateLeftOffsetValue(hudElem.LeftAnchor, hudElem.RightAnchor, canvasX).ToString(); RightOffsetTxtBox.Text = LuiUtil.CalculateRightOffsetValue(hudElem.LeftAnchor, hudElem.RightAnchor, canvasX, previewImage.Width).ToString(); TopOffsetTxtBox.Text = LuiUtil.CalculateTopOffsetValue(hudElem.TopAnchor, hudElem.BottomAnchor, canvasY).ToString(); BottomOffsetTxtBox.Text = LuiUtil.CalculateBottomOffsetValue(hudElem.TopAnchor, hudElem.BottomAnchor, canvasY, previewImage.Height).ToString(); // Update our Checkboxes LeftAnchorCheckBox.IsChecked = (selectedHudElem.LeftAnchor) ? true : false; RightAnchorCheckBox.IsChecked = (selectedHudElem.RightAnchor) ? true : false; TopAnchorCheckBox.IsChecked = (selectedHudElem.TopAnchor) ? true : false; BottomAnchorCheckBox.IsChecked = (selectedHudElem.BottomAnchor) ? true : false; // Update our Element / Image name ElementNameTxtBox.Text = hudElem.ElemName; ImageNameTxtBox.Text = hudElem.ImageName; // Update our Text part IsTextCheckBox.IsChecked = (selectedHudElem.IsText) ? true : false; HasTextPanel.Visibility = (selectedHudElem.IsText) ? Visibility.Visible : Visibility.Hidden; FontTextBox.Text = selectedHudElem.Text; FontComboBox.Text = selectedHudElem.FontName; Console.WriteLine(string.Format("Selected Layer: {0}", listViewItem.Content)); }
/// <summary> /// Fires when a Checkbox is Checked / Unchecked /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CheckBox_Checked(object sender, RoutedEventArgs e) { var txtBox = (CheckBox)sender; // Check if we have HudElem & PreviewImage if (selectedHudElem != null && selectedPreviewImage != null) { // Get our offsets double canvasX = Canvas.GetLeft(selectedPreviewImage); double canvasY = Canvas.GetTop(selectedPreviewImage); // Find our checkbox and update our offset values switch (txtBox.Name) { case "LeftAnchorCheckBox": selectedHudElem.LeftAnchor = (txtBox.IsChecked == true) ? true : false; LeftOffsetTxtBox.Text = LuiUtil.CalculateLeftOffsetValue(selectedHudElem.LeftAnchor, selectedHudElem.RightAnchor, canvasX).ToString(); RightOffsetTxtBox.Text = LuiUtil.CalculateRightOffsetValue(selectedHudElem.LeftAnchor, selectedHudElem.RightAnchor, canvasX, selectedPreviewImage.Width).ToString(); break; case "RightAnchorCheckBox": selectedHudElem.RightAnchor = (txtBox.IsChecked == true) ? true : false; LeftOffsetTxtBox.Text = LuiUtil.CalculateLeftOffsetValue(selectedHudElem.LeftAnchor, selectedHudElem.RightAnchor, canvasX).ToString(); RightOffsetTxtBox.Text = LuiUtil.CalculateRightOffsetValue(selectedHudElem.LeftAnchor, selectedHudElem.RightAnchor, canvasX, selectedPreviewImage.Width).ToString(); break; case "TopAnchorCheckBox": selectedHudElem.TopAnchor = (txtBox.IsChecked == true) ? true : false; TopOffsetTxtBox.Text = LuiUtil.CalculateTopOffsetValue(selectedHudElem.TopAnchor, selectedHudElem.BottomAnchor, canvasY).ToString(); BottomOffsetTxtBox.Text = LuiUtil.CalculateBottomOffsetValue(selectedHudElem.TopAnchor, selectedHudElem.BottomAnchor, canvasY, selectedPreviewImage.Height).ToString(); break; case "BottomAnchorCheckBox": selectedHudElem.BottomAnchor = (txtBox.IsChecked == true) ? true : false; TopOffsetTxtBox.Text = LuiUtil.CalculateTopOffsetValue(selectedHudElem.TopAnchor, selectedHudElem.BottomAnchor, canvasY).ToString(); BottomOffsetTxtBox.Text = LuiUtil.CalculateBottomOffsetValue(selectedHudElem.TopAnchor, selectedHudElem.BottomAnchor, canvasY, selectedPreviewImage.Height).ToString(); break; } } }
/// <summary> /// Generate LUA code from the PSD Layers /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void GenerateLuaMenu_Click(object sender, RoutedEventArgs e) { if (psdFile == null) { MessageBox.Show("Nothing to generate"); return; } StringBuilder sb = new StringBuilder(); // Reverse the list, so the Z Order is correct List <ListViewItem> hudItems = HudItemList.Items.Cast <ListViewItem>().ToList(); hudItems.Reverse(); foreach (ListViewItem listViewItem in hudItems) { HudElem hudElem = (HudElem)listViewItem.Tag; var previewImage = hudElem.HudPreviewImage; // Get our offsets double canvasX = Canvas.GetLeft(previewImage); double canvasY = Canvas.GetTop(previewImage); // Start writing our Code // See if the Element is Text or an Image if (hudElem.IsText) { // The padding that might be used ingame?? var textPadding = Math.Round(previewImage.Height / 4); Console.WriteLine("Text Height: " + previewImage.Height); sb.AppendLine(string.Format("local {0} = LUI.UIText.new(HudRef, InstanceRef)", hudElem.ElemName)); sb.AppendLine(string.Format("{0}:setLeftRight({1}, {2}, {3}, {4})", hudElem.ElemName, hudElem.LeftAnchor.ToString().ToLower(), hudElem.RightAnchor.ToString().ToLower(), LuiUtil.CalculateLeftOffsetValue(hudElem.LeftAnchor, hudElem.RightAnchor, canvasX).ToString(), LuiUtil.CalculateRightOffsetValue(hudElem.LeftAnchor, hudElem.RightAnchor, canvasX, previewImage.Width).ToString())); sb.AppendLine(string.Format("{0}:setTopBottom({1}, {2}, {3}, {4})", hudElem.ElemName, hudElem.TopAnchor.ToString().ToLower(), hudElem.BottomAnchor.ToString().ToLower(), LuiUtil.CalculateTopOffsetValue(hudElem.TopAnchor, hudElem.BottomAnchor, canvasY - textPadding).ToString(), LuiUtil.CalculateBottomOffsetValue(hudElem.TopAnchor, hudElem.BottomAnchor, canvasY + textPadding, previewImage.Height).ToString())); sb.AppendLine(string.Format("{0}:setTTF(\"fonts/{1}\")", hudElem.ElemName, hudElem.FontFile)); sb.AppendLine(string.Format("{0}:setText(\"{1}\")", hudElem.ElemName, hudElem.Text)); sb.AppendLine(string.Format("{0}:setAlpha({1})", hudElem.ElemName, hudElem.Alpha.ToString())); sb.AppendLine(string.Format("{0}:addElement({1})", "Elem", hudElem.ElemName)); sb.AppendLine(""); } else { sb.AppendLine(string.Format("local {0} = LUI.UIImage.new()", hudElem.ElemName)); sb.AppendLine(string.Format("{0}:setLeftRight({1}, {2}, {3}, {4})", hudElem.ElemName, hudElem.LeftAnchor.ToString().ToLower(), hudElem.RightAnchor.ToString().ToLower(), LuiUtil.CalculateLeftOffsetValue(hudElem.LeftAnchor, hudElem.RightAnchor, canvasX).ToString(), LuiUtil.CalculateRightOffsetValue(hudElem.LeftAnchor, hudElem.RightAnchor, canvasX, previewImage.Width).ToString())); sb.AppendLine(string.Format("{0}:setTopBottom({1}, {2}, {3}, {4})", hudElem.ElemName, hudElem.TopAnchor.ToString().ToLower(), hudElem.BottomAnchor.ToString().ToLower(), LuiUtil.CalculateTopOffsetValue(hudElem.TopAnchor, hudElem.BottomAnchor, canvasY).ToString(), LuiUtil.CalculateBottomOffsetValue(hudElem.TopAnchor, hudElem.BottomAnchor, canvasY, previewImage.Height).ToString())); sb.AppendLine(string.Format("{0}:setImage(RegisterImage(\"{1}\"))", hudElem.ElemName, hudElem.ImageName)); sb.AppendLine(string.Format("{0}:setAlpha({1})", hudElem.ElemName, hudElem.Alpha.ToString())); sb.AppendLine(string.Format("{0}:addElement({1})", "Elem", hudElem.ElemName)); sb.AppendLine(""); } } // See if the Output Window is still active if (luaOutputWindow == null || !luaOutputWindow.IsActive) { // Create new Output Window and update the Text luaOutputWindow = new LuaOutputWindow(); luaOutputWindow.LuaOutputText.Text = sb.ToString(); luaOutputWindow.Show(); } else { // Just update the Text luaOutputWindow.LuaOutputText.Text = sb.ToString(); } }