Exemple #1
0
        private void DrawRow(int i, HousingItem housingItem, int childIndex = -1)
        {
            ImGui.Text($"{housingItem.X:N3}"); ImGui.NextColumn();
            ImGui.Text($"{housingItem.Y:N3}"); ImGui.NextColumn();
            ImGui.Text($"{housingItem.Z:N3}"); ImGui.NextColumn();
            ImGui.Text($"{housingItem.Rotate:N3}"); ImGui.NextColumn();
            string uniqueID = childIndex == -1 ? i.ToString() : i.ToString() + "_" + childIndex.ToString();

            if (Config.BDTH)
            {
                if (ImGui.Button(_localizer.Localize("Set") + "##" + uniqueID))
                {
                    BDTHSet(i, housingItem);
                }
                ImGui.NextColumn();
            }
            if (Config.Grouping)
            {
                var index      = Config.GroupingList.IndexOf(i);
                var buttonText = housingItem.children.Count == 0 ? (index == -1 ? "Add" : "Del") : "Disband";
                if (childIndex == -1 && ImGui.Button(_localizer.Localize(buttonText) + "##Group_" + uniqueID))
                {
                    if (buttonText == "Add")
                    {
                        Config.GroupingList.Add(i);
                    }
                    else if (buttonText == "Del")
                    {
                        Config.GroupingList.RemoveAt(index);
                    }
                    else if (buttonText == "Disband")
                    {
                        for (int j = 0; j < housingItem.children.Count; j++)
                        {
                            Config.HousingItemList.Add(housingItem.children[j]);
                        }
                        housingItem.children.Clear();
                        Config.Save();
                    }
                }
                ImGui.NextColumn();
            }

            if (Config.SingleExport)
            {
                if (ImGui.Button(_localizer.Localize("Export") + "##Single_" + uniqueID))
                {
                    List <HousingItem> tempList = new List <HousingItem>();
                    tempList.Add(housingItem);
                    string str = JsonConvert.SerializeObject(tempList);
                    Win32Clipboard.CopyTextToClipboard(str);
                    Plugin.Log(String.Format(_localizer.Localize("Exported {0} items to your clipboard."), tempList.Count));
                }
                ImGui.NextColumn();
            }
        }
Exemple #2
0
        private void DrawItemList()
        {
            // name, x, t, z, r, set
            int columns = 6;

            ImGui.Columns(columns, "ItemList", true);
            ImGui.Separator();
            ImGui.Text(_localizer.Localize("Name")); ImGui.NextColumn();
            ImGui.Text(_localizer.Localize("X")); ImGui.NextColumn();
            ImGui.Text(_localizer.Localize("Y")); ImGui.NextColumn();
            ImGui.Text(_localizer.Localize("Z")); ImGui.NextColumn();
            ImGui.Text(_localizer.Localize("Rotate")); ImGui.NextColumn();
            ImGui.Text(_localizer.Localize("Set")); ImGui.NextColumn();
            ImGui.Separator();
            for (int i = 0; i < Config.HousingItemList.Count(); i++)
            {
                var housingItem = Config.HousingItemList[i];
                var displayName = housingItem.Name;
                if (i == Config.SelectedItemIndex)
                {
                    displayName = '\ue06f' + displayName;
                }
                ImGui.Text(displayName); ImGui.NextColumn();
                ImGui.Text($"{housingItem.X:N3}"); ImGui.NextColumn();
                ImGui.Text($"{housingItem.Y:N3}"); ImGui.NextColumn();
                ImGui.Text($"{housingItem.Z:N3}"); ImGui.NextColumn();
                ImGui.Text($"{housingItem.Rotate:N3}"); ImGui.NextColumn();
                if (ImGui.Button(_localizer.Localize("Set") + "##" + i.ToString()))
                {
                    Config.SelectedItemIndex = i;
                    Config.PlaceX            = housingItem.X;
                    Config.PlaceY            = housingItem.Y;
                    Config.PlaceZ            = housingItem.Z;
                    Config.PlaceRotate       = housingItem.Rotate;
                    Config.ForceMove         = true;
                    Config.Save();
                }
                ImGui.NextColumn();
                ImGui.Separator();
            }
            ImGui.Columns(1);
            if (ImGui.Button(_localizer.Localize("Clear")))
            {
                Config.HousingItemList.Clear();
                Config.Save();
            }
            ImGui.SameLine();
            if (ImGui.Button(_localizer.Localize("Sort")))
            {
                Config.SelectedItemIndex = -1;
                Config.HousingItemList.Sort((x, y) => {
                    if (x.ItemKey.CompareTo(y.ItemKey) != 0)
                    {
                        return(x.ItemKey.CompareTo(y.ItemKey));
                    }
                    if (x.X.CompareTo(y.X) != 0)
                    {
                        return(x.X.CompareTo(y.X));
                    }
                    if (x.Y.CompareTo(y.Y) != 0)
                    {
                        return(x.Y.CompareTo(y.Y));
                    }
                    if (x.Z.CompareTo(y.Z) != 0)
                    {
                        return(x.Z.CompareTo(y.Z));
                    }
                    if (x.Rotate.CompareTo(y.Rotate) != 0)
                    {
                        return(x.Rotate.CompareTo(y.Rotate));
                    }
                    return(0);
                });
                Config.Save();
            }
            ImGui.SameLine();
            if (ImGui.Button(_localizer.Localize("Copy")))
            {
                try
                {
                    string str = _localizer.Localize("Only for purchasing, please copy config file for the whole preset.\n");
                    for (int i = 0; i < Config.HousingItemList.Count(); i++)
                    {
                        var housingItem = Config.HousingItemList[i];
                        str += $"item#{housingItem.ItemKey} {housingItem.Name}\n";
                    }
                    Win32Clipboard.CopyTextToClipboard(str);
                }
                catch (Exception e)
                {
                    Plugin.Log($"Error while exporting all items: {e}");
                }
            }
        }
Exemple #3
0
        private void DrawGeneralSettings()
        {
            ImGui.TextUnformatted(_localizer.Localize("Language:"));
            if (Plugin.Config.ShowTooltips && ImGui.IsItemHovered())
            {
                ImGui.SetTooltip(_localizer.Localize("Change the UI Language."));
            }
            ImGui.SameLine();
            ImGui.SetNextItemWidth(200);
            if (ImGui.Combo("##hideLangSetting", ref _selectedLanguage, _languageList, _languageList.Length))
            {
                Config.UILanguage   = _languageList[_selectedLanguage];
                _localizer.Language = Config.UILanguage;
                Config.Location     = _localizer.Localize("Lavender Beds");
                Config.Save();
            }
            ImGui.SameLine(ImGui.GetColumnWidth() - 80);
            ImGui.TextUnformatted(_localizer.Localize("Tooltips"));
            ImGui.AlignTextToFramePadding();
            ImGui.SameLine();
            if (ImGui.Checkbox("##hideTooltipsOnOff", ref Config.ShowTooltips))
            {
                Config.Save();
            }

            if (ImGui.Checkbox(_localizer.Localize("BDTH"), ref Config.BDTH))
            {
                Config.Save();
            }
            if (Config.ShowTooltips && ImGui.IsItemHovered())
            {
                ImGui.SetTooltip(_localizer.Localize("BDTH integrate: leave the position set to BDTH."));
            }
            ImGui.SameLine();
            if (ImGui.Checkbox(_localizer.Localize("Single Export"), ref Config.SingleExport))
            {
                Config.Save();
            }
            if (Config.ShowTooltips && ImGui.IsItemHovered())
            {
                ImGui.SetTooltip(_localizer.Localize("Add Export button to the single furnitures."));
            }
            if (ImGui.Checkbox(_localizer.Localize("Draw on screen"), ref Config.DrawScreen))
            {
                Config.Save();
            }
            if (Config.ShowTooltips && ImGui.IsItemHovered())
            {
                ImGui.SetTooltip(_localizer.Localize("Draw items on screen."));
            }

            if (Config.DrawScreen)
            {
                ImGui.SameLine();
                if (ImGui.Button(_localizer.Localize("Undo") + "##Undo"))
                {
                    if (Config.HiddenScreenItemHistory != null && Config.HiddenScreenItemHistory.Count > 0)
                    {
                        var lastIndex = Config.HiddenScreenItemHistory.Last();
                        if (lastIndex < Config.HousingItemList.Count && lastIndex >= 0)
                        {
                            Config.HiddenScreenItemHistory.RemoveAt(Config.HiddenScreenItemHistory.Count - 1);
                            Config.Save();
                        }
                    }
                }
                if (Config.ShowTooltips && ImGui.IsItemHovered())
                {
                    ImGui.SetTooltip(_localizer.Localize("Undo the on-screen setting."));
                }
                ImGui.TextUnformatted(_localizer.Localize("Drawing Distance:"));
                if (Config.ShowTooltips && ImGui.IsItemHovered())
                {
                    ImGui.SetTooltip(_localizer.Localize("Only draw items within this distance to your character. (0 for unlimited)"));
                }
                if (ImGui.DragFloat("##DrawDistance", ref Config.DrawDistance, 0.1f, 0, 52))
                {
                    Config.DrawDistance = Math.Max(0, Config.DrawDistance);
                    Config.Save();
                }
            }
            ImGui.Text("X:");
            ImGui.SameLine();
            ImGui.SetNextItemWidth(100);
            if (ImGui.InputFloat("##placeX", ref Config.PlaceX, 0.01f, 0.1f))
            {
                if (Config.SelectedItemIndex >= 0 && Config.SelectedItemIndex < Config.HousingItemList.Count)
                {
                    Config.HousingItemList[Config.SelectedItemIndex].X = Config.PlaceX;
                    if (Config.HousingItemList[Config.SelectedItemIndex].children.Count > 0)
                    {
                        Config.HousingItemList[Config.SelectedItemIndex].ReCalcChildrenPos();
                    }
                }
                Config.Save();
            }
            ImGui.SameLine();
            ImGui.SetNextItemWidth(100);
            ImGui.Text("Y:");
            ImGui.SameLine();
            ImGui.SetNextItemWidth(100);
            if (ImGui.InputFloat("##placeY", ref Config.PlaceY, 0.01f, 0.1f))
            {
                if (Config.SelectedItemIndex >= 0 && Config.SelectedItemIndex < Config.HousingItemList.Count)
                {
                    Config.HousingItemList[Config.SelectedItemIndex].Y = Config.PlaceY;
                    if (Config.HousingItemList[Config.SelectedItemIndex].children.Count > 0)
                    {
                        Config.HousingItemList[Config.SelectedItemIndex].ReCalcChildrenPos();
                    }
                }
                Config.Save();
            }
            ImGui.SameLine();
            ImGui.SetNextItemWidth(100);
            ImGui.Text("Z:");
            ImGui.SameLine();
            ImGui.SetNextItemWidth(100);
            if (ImGui.InputFloat("##placeZ", ref Config.PlaceZ, 0.01f, 0.1f))
            {
                if (Config.SelectedItemIndex >= 0 && Config.SelectedItemIndex < Config.HousingItemList.Count)
                {
                    Config.HousingItemList[Config.SelectedItemIndex].Z = Config.PlaceZ;
                    if (Config.HousingItemList[Config.SelectedItemIndex].children.Count > 0)
                    {
                        Config.HousingItemList[Config.SelectedItemIndex].ReCalcChildrenPos();
                    }
                }
                Config.HousingItemList[Config.SelectedItemIndex].Z = Config.PlaceZ;
                Config.Save();
            }
            ImGui.SameLine();
            ImGui.SetNextItemWidth(100);
            ImGui.Text(_localizer.Localize("Rotate:"));
            ImGui.SameLine();
            ImGui.SetNextItemWidth(100);
            float rotateDegree = Config.PlaceRotate / (float)Math.PI * 180;

            if (ImGui.InputFloat("##placeRotate", ref rotateDegree, 1f, 5f))
            {
                rotateDegree       = (rotateDegree + 180 + 360) % 360 - 180;
                Config.PlaceRotate = rotateDegree / 180 * (float)Math.PI;
                if (Config.SelectedItemIndex >= 0 && Config.SelectedItemIndex < Config.HousingItemList.Count)
                {
                    Config.HousingItemList[Config.SelectedItemIndex].Rotate = Config.PlaceRotate;
                    if (Config.HousingItemList[Config.SelectedItemIndex].children.Count > 0)
                    {
                        Config.HousingItemList[Config.SelectedItemIndex].ReCalcChildrenPos();
                    }
                }
                Config.Save();
            }
            if (ImGui.Button(_localizer.Localize("Cloud Export")))
            {
                Config.UploadItems = Config.HousingItemList;
                CanUpload          = true;
                Config.Tags.Clear();
                Config.UploadName = "";
                Config.Save();
            }
            ImGui.SameLine();
            if (ImGui.Button(_localizer.Localize("Cloud Import")))
            {
                Task <string> strTask = HttpPost.GetMap(Config.DefaultCloudUri);
                strTask.ContinueWith((t) =>
                {
                    try
                    {
                        Config.CloudMap = JsonConvert.DeserializeObject <List <CloudMap> >(t.Result);
                        Config.Save();
                        CanImport = true;
                    }
                    catch (Exception e)
                    {
                        Plugin.LogError($"Error Importing from cloud: {e.Message}");
                    }
                });
            }

            if (ImGui.Button(_localizer.Localize("Clear")))
            {
                Config.HousingItemList.Clear();
                Config.Save();
            }
            ImGui.SameLine();
            if (!Config.Grouping && ImGui.Button(_localizer.Localize("Sort")))
            {
                Config.SelectedItemIndex = -1;
                Config.HousingItemList.Sort((x, y) => {
                    if (x.ItemKey.CompareTo(y.ItemKey) != 0)
                    {
                        return(x.ItemKey.CompareTo(y.ItemKey));
                    }
                    if (x.X.CompareTo(y.X) != 0)
                    {
                        return(x.X.CompareTo(y.X));
                    }
                    if (x.Y.CompareTo(y.Y) != 0)
                    {
                        return(x.Y.CompareTo(y.Y));
                    }
                    if (x.Z.CompareTo(y.Z) != 0)
                    {
                        return(x.Z.CompareTo(y.Z));
                    }
                    if (x.Rotate.CompareTo(y.Rotate) != 0)
                    {
                        return(x.Rotate.CompareTo(y.Rotate));
                    }
                    return(0);
                });
                Config.Save();
            }
            ImGui.SameLine();
            if (ImGui.Button(_localizer.Localize("Copy")))
            {
                try
                {
                    string str      = _localizer.Localize("Only for purchasing, please use Export/Import for the whole preset.\n");
                    var    itemList = new List <string>();
                    foreach (var housingItem in Config.HousingItemList)
                    {
                        itemList.Add($"item#{housingItem.ItemKey}\t{housingItem.Name}");
                    }
                    var itemSet = new HashSet <string>(itemList);
                    foreach (string itemName in itemSet)
                    {
                        str += $"{itemName}\t{itemList.Count(x => x == itemName)}\n";
                    }
                    Win32Clipboard.CopyTextToClipboard(str);
                    Plugin.Log(String.Format(_localizer.Localize("Copied {0} items to your clipboard."), Config.HousingItemList.Count));
                }
                catch (Exception e)
                {
                    Plugin.LogError($"Error while exporting all items: {e.Message}");
                }
            }
            ImGui.SameLine();
            if (ImGui.Button(_localizer.Localize("Export")))
            {
                try
                {
                    string str = JsonConvert.SerializeObject(Config.HousingItemList);
                    Win32Clipboard.CopyTextToClipboard(str);
                    Plugin.Log(String.Format(_localizer.Localize("Exported {0} items to your clipboard."), Config.HousingItemList.Count));
                }
                catch (Exception e)
                {
                    Plugin.LogError($"Error while exporting items: {e.Message}");
                }
            }
            ImGui.SameLine();
            if (ImGui.Button(_localizer.Localize("Import")))
            {
                string str = ImGui.GetClipboardText();
                try
                {
                    Config.HousingItemList = JsonConvert.DeserializeObject <List <HousingItem> >(str);
                    foreach (var item in Config.HousingItemList)
                    {
                        try
                        {
                            item.Name = Plugin.Interface.Data.GetExcelSheet <Item>().GetRow(item.ItemKey).Name;
                        }
                        catch (Exception e)
                        {
                            Plugin.LogError($"Error while translating item#{item.ItemKey}: {e.Message}");
                        }
                    }
                    Config.ResetRecord();
                    Plugin.Log(String.Format(_localizer.Localize("Imported {0} items from your clipboard."), Config.HousingItemList.Count));
                }
                catch (Exception e)
                {
                    Plugin.LogError($"Error while importing items: {e.Message}");
                    LoadChocoboSave(str);
                }
            }
            ImGui.SameLine(ImGui.GetColumnWidth() - 80);
            if (ImGui.Button(_localizer.Localize(Config.Grouping ? "Grouping" : "Group")))
            {
                if (Config.Grouping)
                {
                    if (Config.GroupingList.Count > 1)
                    {
                        var baseItem     = Config.HousingItemList[Config.GroupingList[0]];
                        var childrenList = Config.GroupingList.GetRange(1, Config.GroupingList.Count - 1);
                        childrenList.Sort();
                        for (int i = childrenList.Count - 1; i >= 0; i--)
                        {
                            var index       = childrenList[i];
                            var housingItem = Config.HousingItemList[index];
                            housingItem.CalcRelativeTo(baseItem);
                            baseItem.children.Add(housingItem);
                            Config.HousingItemList.RemoveAt(index);
                        }
                    }
                    Config.GroupingList.Clear();
                    Config.Grouping = false;
                }
                else
                {
                    Config.GroupingList.Clear();
                    Config.Grouping = true;
                }
                Config.Save();
            }
        }