XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

feat(webui): add item by ItemType (#2704)

Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2704 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>

e98cb2ec
AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
提交于

代码差异

10 个文件 +107 -7
Modified src/services/inventoryService.ts +25 -0
@@ -689,6 +689,7 @@ export const addItem = async (
689 689 // Path-based duck typing
690 690 switch (typeName.substr(1).split("/")[1]) {
691 691 case "Powersuits":
692 if (typeName.endsWith("AugmentCard")) break;
692 693 switch (typeName.substr(1).split("/")[2]) {
693 694 default: {
694 695 return {
@@ -773,6 +774,10 @@ export const addItem = async (
773 774 }
774 775 }
775 776 break;
777
778 case "Skins": {
779 return addSkin(inventory, typeName);
780 }
776 781 }
777 782 break;
778 783 }
@@ -869,6 +874,26 @@ export const addItem = async (
869 874 break;
870 875 }
871 876 break;
877 case "Weapons": {
878 if (typeName.substr(1).split("/")[4] == "MeleeTrees") break;
879 const productCategory = typeName.substr(1).split("/")[3];
880 switch (productCategory) {
881 case "Pistols":
882 case "LongGuns":
883 case "Melee": {
884 const inventoryChanges = addEquipment(inventory, productCategory, typeName);
885 return {
886 ...inventoryChanges,
887 ...occupySlot(
888 inventory,
889 productCategoryToInventoryBin(productCategory) ?? InventorySlot.WEAPONS,
890 premiumPurchase
891 )
892 };
893 }
894 }
895 break;
896 }
872 897 }
873 898 throw new Error(`unable to add item: ${typeName}`);
874 899 };
Modified static/webui/index.html +30 -6
@@ -92,12 +92,36 @@
92 92 <div data-route="/webui/inventory" data-title="Inventory | OpenWF WebUI">
93 93 <p class="mb-3" data-loc="general_inventoryUpdateNote"></p>
94 94 <div class="card mb-3">
95 <h5 class="card-header" data-loc="inventory_addItems"></h5>
96 <form class="card-body input-group" onsubmit="doAcquireMiscItems();return false;">
97 <input class="form-control" id="miscitem-count" type="number" value="1" />
98 <input class="form-control w-50" id="miscitem-type" list="datalist-miscitems" />
99 <button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
100 </form>
95 <div class="card-header">
96 <ul class="nav nav-tabs card-header-tabs">
97 <li class="nav-item">
98 <button class="nav-link" id="miscItems-tab" data-bs-toggle="tab" data-bs-target="#miscItems-tab-content" data-loc="inventory_addItems"></button>
99 </li>
100 <li class="nav-item">
101 <button class="nav-link" id="typeName-tab" data-bs-toggle="tab" data-bs-target="#typeName-tab-content" data-loc="inventory_addItemByItemType"></button>
102 </li>
103 </ul>
104 </div>
105 <div class="card-body">
106 <div class="tab-content">
107 <div class="tab-pane" id="miscItems-tab-content">
108 <form class="card-body input-group" onsubmit="doAcquireMiscItems();return false;">
109 <input class="form-control" id="miscitem-count" type="number" value="1" />
110 <input class="form-control w-50" id="miscitem-type" list="datalist-miscitems" />
111 <button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
112 </form>
113 </div>
114 <div class="tab-pane" id="typeName-tab-content">
115 <form class="card-body" onsubmit="addItemByItemType();return false;">
116 <p data-loc="inventory_addItemByItemType_warning"></p>
117 <div class="input-group">
118 <input class="form-control" id="typeName-type" />
119 <button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
120 </div>
121 </form>
122 </div>
123 </div>
124 </div>
101 125 </div>
102 126 <div class="row g-3 mb-3">
103 127 <div class="col-md-3">
Modified static/webui/script.js +38 -1
@@ -649,6 +649,14 @@ function updateInventory() {
649 649 ];
650 650
651 651 // Populate inventory route
652
653 document.getElementById("typeName-tab").classList.remove("active");
654 document.getElementById("typeName-tab-content").classList.remove("active", "show");
655 document.getElementById("typeName-type").value = "";
656
657 document.getElementById("miscItems-tab").classList.add("active");
658 document.getElementById("miscItems-tab-content").classList.add("active", "show");
659
652 660 ["RegularCredits", "PremiumCredits", "FusionPoints", "PrimeTokens"].forEach(currency => {
653 661 document.getElementById(currency + "-owned").textContent = loc("currency_owned")
654 662 .split("|COUNT|")
@@ -1685,7 +1693,7 @@ function doAcquireEvolution() {
1685 1693 setEvolutionProgress([{ ItemType: uniqueName, Rank: permanentEvolutionWeapons.has(uniqueName) ? 0 : 1 }]);
1686 1694 }
1687 1695
1688 $(document).on("input", "input[list]", function () {
1696 $(document).on("input", "input", function () {
1689 1697 $(this).removeClass("is-invalid");
1690 1698 });
1691 1699
@@ -2008,6 +2016,35 @@ function doAcquireMiscItems() {
2008 2016 }
2009 2017 }
2010 2018
2019 function addItemByItemType() {
2020 const ItemType = document.getElementById("typeName-type").value;
2021 // Must start with "/Lotus/", contain only A–Z letters, no "//", and not end with "/"
2022 if (!ItemType || !/^\/Lotus\/(?:[A-Za-z]+(?:\/[A-Za-z]+)*)$/.test(ItemType)) {
2023 $("#typeName-type").addClass("is-invalid").focus();
2024 return;
2025 }
2026 revalidateAuthz().then(() => {
2027 $.post({
2028 url: "/custom/addItems?" + window.authz,
2029 contentType: "application/json",
2030 data: JSON.stringify([
2031 {
2032 ItemType,
2033 ItemCount: 1
2034 }
2035 ])
2036 })
2037 .done(function (_, _, jqXHR) {
2038 if (jqXHR.status === 200) {
2039 updateInventory();
2040 }
2041 })
2042 .fail(function () {
2043 $("#typeName-type").addClass("is-invalid").focus();
2044 });
2045 });
2046 }
2047
2011 2048 function doAcquireRiven() {
2012 2049 let fingerprint;
2013 2050 try {
Modified static/webui/translations/de.js +2 -0
@@ -79,6 +79,8 @@ dict = {
79 79 navbar_cheats: `Cheats`,
80 80 navbar_import: `Importieren`,
81 81 inventory_addItems: `Gegenstände hinzufügen`,
82 inventory_addItemByItemType: `[UNTRANSLATED] Raw`,
83 inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`,
82 84 inventory_suits: `Warframes`,
83 85 inventory_longGuns: `Primärwaffen`,
84 86 inventory_pistols: `Sekundärwaffen`,
Modified static/webui/translations/en.js +2 -0
@@ -78,6 +78,8 @@ dict = {
78 78 navbar_cheats: `Cheats`,
79 79 navbar_import: `Import`,
80 80 inventory_addItems: `Add Items`,
81 inventory_addItemByItemType: `Raw`,
82 inventory_addItemByItemType_warning: `Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`,
81 83 inventory_suits: `Warframes`,
82 84 inventory_longGuns: `Primary Weapons`,
83 85 inventory_pistols: `Secondary Weapons`,
Modified static/webui/translations/es.js +2 -0
@@ -79,6 +79,8 @@ dict = {
79 79 navbar_cheats: `Trucos`,
80 80 navbar_import: `Importar`,
81 81 inventory_addItems: `Agregar objetos`,
82 inventory_addItemByItemType: `[UNTRANSLATED] Raw`,
83 inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`,
82 84 inventory_suits: `Warframes`,
83 85 inventory_longGuns: `Armas primarias`,
84 86 inventory_pistols: `Armas secundarias`,
Modified static/webui/translations/fr.js +2 -0
@@ -79,6 +79,8 @@ dict = {
79 79 navbar_cheats: `Cheats`,
80 80 navbar_import: `Importer`,
81 81 inventory_addItems: `Ajouter des items`,
82 inventory_addItemByItemType: `[UNTRANSLATED] Raw`,
83 inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`,
82 84 inventory_suits: `Warframes`,
83 85 inventory_longGuns: `Armes principales`,
84 86 inventory_pistols: `Armes secondaires`,
Modified static/webui/translations/ru.js +2 -0
@@ -79,6 +79,8 @@ dict = {
79 79 navbar_cheats: `Читы`,
80 80 navbar_import: `Импорт`,
81 81 inventory_addItems: `Добавить предметы`,
82 inventory_addItemByItemType: `[UNTRANSLATED] Raw`,
83 inventory_addItemByItemType_warning: `Используйте эту функцию на свой страх и риск. Она может повредить ваш инвентарь, и в случае проблем вам придётся удалять предметы вручную.`,
82 84 inventory_suits: `Варфреймы`,
83 85 inventory_longGuns: `Основное оружие`,
84 86 inventory_pistols: `Вторичное оружие`,
Modified static/webui/translations/uk.js +2 -0
@@ -79,6 +79,8 @@ dict = {
79 79 navbar_cheats: `Чити`,
80 80 navbar_import: `Імпорт`,
81 81 inventory_addItems: `Додати предмети`,
82 inventory_addItemByItemType: `[UNTRANSLATED] Raw`,
83 inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`,
82 84 inventory_suits: `Ворфрейми`,
83 85 inventory_longGuns: `Основна зброя`,
84 86 inventory_pistols: `Допоміжна зброя`,
Modified static/webui/translations/zh.js +2 -0
@@ -79,6 +79,8 @@ dict = {
79 79 navbar_cheats: `作弊选项`,
80 80 navbar_import: `导入`,
81 81 inventory_addItems: `添加物品`,
82 inventory_addItemByItemType: `[UNTRANSLATED] Raw`,
83 inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`,
82 84 inventory_suits: `战甲`,
83 85 inventory_longGuns: `主要武器`,
84 86 inventory_pistols: `次要武器`,