script.js

main 217 lines · 9.7 KB Raw
Alex Alex Commit Client Upload Part 2 19/10/2026 00:06
1const saveButton = document.getElementById('saveButton');
2
3function openTab(evt, tabName) {
4 const tabContents = document.getElementsByClassName("tabcontent");
5 for (let i = 0; i < tabContents.length; i++) {
6 tabContents[i].style.display = "none";
7 }
8 document.getElementById(tabName).style.display = "block";
9
10 const tablinks = document.getElementsByClassName("tablinks");
11 for (let i = 0; i < tablinks.length; i++) {
12 tablinks[i].className = tablinks[i].className.replace(" active", "");
13 }
14 evt.currentTarget.className += " active";
15}
16
17function addEntry(type) {
18 let entryContainer;
19 let newEntry;
20
21 switch (type) {
22 case 'typesWingedOffSet':
23 entryContainer = document.getElementById('typesWingedOffSetEntries');
24 const offsetIndex = document.getElementById('offsetIndex');
25 const comment1 = document.getElementById('comment1');
26 const northX = document.getElementById('northX');
27 const northY = document.getElementById('northY');
28 const eastX = document.getElementById('eastX');
29 const eastY = document.getElementById('eastY');
30 const southX = document.getElementById('southX');
31 const southY = document.getElementById('southY');
32 const westX = document.getElementById('westX');
33 const westY = document.getElementById('westY');
34
35 if (!entryContainer || !offsetIndex || !comment1 || !northX || !northY || !eastX || !eastY || !southX || !southY || !westX || !westY) {
36 console.error('Uno o más elementos están faltando para typesWingedOffSet');
37 return;
38 }
39
40 const offsetIndexValue = parseInt(offsetIndex.value);
41 const northXValue = parseInt(northX.value);
42 const northYValue = parseInt(northY.value);
43 const eastXValue = parseInt(eastX.value);
44 const eastYValue = parseInt(eastY.value);
45 const southXValue = parseInt(southX.value);
46 const southYValue = parseInt(southY.value);
47 const westXValue = parseInt(westX.value);
48 const westYValue = parseInt(westY.value);
49
50 const existingEntry1 = Array.from(entryContainer.getElementsByClassName('entry')).find(entry => {
51 return entry.innerText.includes(`[${offsetIndexValue}]`);
52 });
53
54 if (existingEntry1) {
55 existingEntry1.innerHTML = `
56 [${offsetIndexValue}] = { -- ${comment1.value}
57 [North] = {x = ${northXValue}, y = ${northYValue}},
58 [East] = {x = ${eastXValue}, y = ${eastYValue}},
59 [South] = {x = ${southXValue}, y = ${southYValue}},
60 [West] = {x = ${westXValue}, y = ${westYValue}},
61 },`;
62 } else {
63 newEntry = `
64<div class="entry">
65 [${offsetIndexValue}] = { -- ${comment1.value}
66 [North] = {x = ${northXValue}, y = ${northYValue}},
67 [East] = {x = ${eastXValue}, y = ${eastYValue}},
68 [South] = {x = ${southXValue}, y = ${southYValue}},
69 [West] = {x = ${westXValue}, y = ${westYValue}},
70 },
71</div>`;
72 entryContainer.innerHTML += newEntry;
73 }
74 break;
75
76 case 'typesWingedMountedOffSet':
77 entryContainer = document.getElementById('typesWingedMountedOffSetEntries');
78 const mountedOffsetIndex = parseInt(document.getElementById('mountedOffsetIndex').value);
79 const comment2 = document.getElementById('comment2').value;
80 const mountedNorthX = parseInt(document.getElementById('mountedNorthX').value);
81 const mountedNorthY = parseInt(document.getElementById('mountedNorthY').value);
82 const mountedEastX = parseInt(document.getElementById('mountedEastX').value);
83 const mountedEastY = parseInt(document.getElementById('mountedEastY').value);
84 const mountedSouthX = parseInt(document.getElementById('mountedSouthX').value);
85 const mountedSouthY = parseInt(document.getElementById('mountedSouthY').value);
86 const mountedWestX = parseInt(document.getElementById('mountedWestX').value);
87 const mountedWestY = parseInt(document.getElementById('mountedWestY').value);
88
89 if (!entryContainer || isNaN(mountedOffsetIndex) || isNaN(mountedNorthX) || isNaN(mountedNorthY) || isNaN(mountedEastX) || isNaN(mountedEastY) || isNaN(mountedSouthX) || isNaN(mountedSouthY) || isNaN(mountedWestX) || isNaN(mountedWestY) || comment2 === undefined) {
90 console.error('Uno o más elementos están faltando para typesWingedMountedOffSet');
91 return;
92 }
93
94 const existingEntry2 = Array.from(entryContainer.getElementsByClassName('entry')).find(entry => {
95 return entry.innerText.includes(`[${mountedOffsetIndex}]`);
96 });
97
98 if (existingEntry2) {
99 existingEntry2.innerHTML = `
100 [${mountedOffsetIndex}] = { -- ${comment2}
101 [North] = {x = ${mountedNorthX}, y = ${mountedNorthY}},
102 [East] = {x = ${mountedEastX}, y = ${mountedEastY}},
103 [South] = {x = ${mountedSouthX}, y = ${mountedSouthY}},
104 [West] = {x = ${mountedWestX}, y = ${mountedWestY}},
105 },`;
106 } else {
107 newEntry = `
108<div class="entry">
109 [${mountedOffsetIndex}] = { -- ${comment2}
110 [North] = {x = ${mountedNorthX}, y = ${mountedNorthY}},
111 [East] = {x = ${mountedEastX}, y = ${mountedEastY}},
112 [South] = {x = ${mountedSouthX}, y = ${mountedSouthY}},
113 [West] = {x = ${mountedWestX}, y = ${mountedWestY}},
114 },
115</div>`;
116 entryContainer.innerHTML += newEntry;
117 }
118 break;
119
120 case 'WingsOffsets':
121 entryContainer = document.getElementById('WingsOffsetsEntries');
122 const wingID = parseInt(document.getElementById('wingID').value);
123 const outfitID = parseInt(document.getElementById('outfitID').value);
124 const comment3 = document.getElementById('comment3').value;
125
126 if (!entryContainer || isNaN(wingID) || isNaN(outfitID) || comment3 === undefined) {
127 console.error('Uno o más elementos están faltando para WingsOffsets');
128 return;
129 }
130
131 const existingWingsEntry = Array.from(entryContainer.getElementsByClassName('entry')).find(entry => {
132 return entry.innerText.includes(`[${wingID}]`);
133 });
134
135 if (existingWingsEntry) {
136 existingWingsEntry.innerHTML = `
137 [${wingID}] = { -- ${comment3}
138 [${outfitID}] = typesWingedOffSet[1],
139 },`;
140 } else {
141 newEntry = `
142<div class="entry">
143 [${wingID}] = { -- ${comment3}
144 [${outfitID}] = typesWingedOffSet[],
145 },
146</div>`;
147 entryContainer.innerHTML += newEntry;
148 }
149 break;
150
151 case 'WingsMountedOffsets':
152 entryContainer = document.getElementById('WingsMountedOffsetsEntries');
153 const mountedWingID = parseInt(document.getElementById('mountedWingID').value);
154 const mountedOutfitID = parseInt(document.getElementById('mountedOutfitID').value);
155 const comment4 = document.getElementById('comment4').value;
156
157 if (!entryContainer || isNaN(mountedWingID) || isNaN(mountedOutfitID) || comment4 === undefined) {
158 console.error('Uno o más elementos están faltando para WingsMountedOffsets');
159 return;
160 }
161
162 const existingMountedWingsEntry = Array.from(entryContainer.getElementsByClassName('entry')).find(entry => {
163 return entry.innerText.includes(`[${mountedWingID}]`);
164 });
165
166 if (existingMountedWingsEntry) {
167 existingMountedWingsEntry.innerHTML = `
168 [${mountedWingID}] = { -- ${comment4}
169 [${mountedOutfitID}] = typesWingedMountedOffSet[1],
170 },`;
171 } else {
172 newEntry = `
173<div class="entry">
174 [${mountedWingID}] = { -- ${comment4}
175 [${mountedOutfitID}] = typesWingedMountedOffSet[1],
176 },
177</div>`;
178 entryContainer.innerHTML += newEntry;
179 }
180 break;
181 }
182}
183
184
185// Rueda del mouse para cambiar valores
186document.querySelectorAll('input[type="number"]').forEach(input => {
187 input.addEventListener('wheel', (event) => {
188 event.preventDefault();
189 const delta = event.deltaY < 0 ? 1 : -1;
190 input.value = parseInt(input.value) + delta;
191 });
192});
193
194saveButton.addEventListener('click', saveStructure);
195
196function saveStructure() {
197 const typesWingedOffSetContent = document.getElementById('typesWingedOffSetEntries').innerText.trim();
198 const typesWingedMountedOffSetContent = document.getElementById('typesWingedMountedOffSetEntries').innerText.trim();
199 const wingsOffsetsContent = document.getElementById('WingsOffsetsEntries').innerText.trim();
200 const wingsMountedOffsetsContent = document.getElementById('WingsMountedOffsetsEntries').innerText.trim();
201
202 const content = `typesWingedOffSet = {\n${typesWingedOffSetContent}\n}\n\n` +
203 `typesWingedMountedOffSet = {\n${typesWingedMountedOffSetContent}\n}\n\n` +
204 `WingsOffsets = {\n${wingsOffsetsContent}\n}\n\n` +
205 `WingsMountedOffsets = {\n${wingsMountedOffsetsContent}\n}`;
206
207 const blob = new Blob([content], { type: 'text/plain;charset=utf-8' });
208 const url = window.URL.createObjectURL(blob);
209
210 const downloadLink = document.createElement('a');
211 downloadLink.href = url;
212 downloadLink.download = 'types_wings_structure.lua';
213 downloadLink.click();
214
215 window.URL.revokeObjectURL(url);
216}
217
Top