-
Notifications
You must be signed in to change notification settings - Fork 141
/
generate_html.js
124 lines (113 loc) · 4.27 KB
/
generate_html.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
const fs = require('fs');
const readline = require('readline');
function generateListHTML(json) {
const definition = JSON.parse(fs.readFileSync(`sheet_definitions/${json}`));
const variants = definition.variants
const name = definition.name
const typeName = definition.type_name
var requiredSexes = [];
var previewRow = 10;
var previewColumn = 0;
var previewXOffset = 0;
var previewYOffset = 0;
if (definition.preview_row !== undefined) {
previewRow = definition.preview_row
}
if (definition.preview_column !== undefined){
previewColumn = definition.preview_column;
}
if (definition.preview_x_offset !== undefined){
previewXOffset = definition.preview_x_offset;
}
if (definition.preview_y_offset !== undefined){
previewYOffset = definition.preview_y_offset;
}
if (definition.layer_1.male !== undefined) {
requiredSexes.push("male");
}
if (definition.layer_1.female !== undefined) {
requiredSexes.push("female");
}
if (definition.layer_1.teen !== undefined) {
requiredSexes.push("teen");
}
if (definition.layer_1.child !== undefined) {
requiredSexes.push("child");
}
if (definition.layer_1.muscular !== undefined) {
requiredSexes.push("muscular");
}
if (definition.layer_1.pregnant !== undefined) {
requiredSexes.push("pregnant");
}
const requiredSex = requiredSexes.join(",");
const startHTML = `<li data-required="[REQUIRED_SEX]"><span class="condensed">${name}</span><ul>`.replace("[REQUIRED_SEX]", requiredSex);
const templateHTML = fs.readFileSync("scripts/template-general.html", 'utf8');
const endHTML = '</ul></li>';
var idx = 0;
var listItemsHTML = `<li><input type="radio" id="${typeName}-none" name="${typeName}"> <label for="${typeName}-none">No ${typeName}</label></li>`;
for (variant in variants) {
const itemName = variants[idx];
const itemIdFor = typeName + "-" + name.replaceAll(" ", "_") + "_" + itemName.replaceAll(" ", "_");
var matchBodyColor = false;
if (definition[`match_body_color`] !== undefined) {
matchBodyColor = true;
}
var dataFiles = "";
var sexIdx = 0;
for (sex in requiredSexes) {
for (jdx =1; jdx < 10; jdx++) {
const layerDefinition = definition[`layer_${jdx}`];
if (layerDefinition !== undefined) {
if (sexIdx === 0) {
const zPos = definition[`layer_${jdx}`].zPos;
dataFiles += "data-preview_row=" + previewRow + " data-preview_column=" + previewColumn + " data-preview_x_offset=" + previewXOffset + " data-preview_y_offset=" + previewYOffset + " data-layer_" + jdx + "_zpos=" + zPos + " ";
const custom_animation = layerDefinition.custom_animation;
if (custom_animation !== undefined) {
dataFiles += `data-layer_${jdx}_custom_animation=` + custom_animation + " "
}
}
const file = layerDefinition[requiredSexes[sexIdx]]
if (file !== null && file !== "") {
dataFiles += "data-layer_" + jdx + "_" + requiredSexes[sexIdx] + "=\"" + file + itemName.replaceAll(" ", "_") + ".png\" ";
}
} else {
break;
}
}
sexIdx += 1;
}
listItemsHTML += templateHTML
.replaceAll("[ID_FOR]", itemIdFor)
.replaceAll("[TYPE_NAME]", typeName)
.replaceAll("[NAME]", itemName)
.replaceAll("[PARENT_NAME]", name)
.replaceAll("[MATCH_BODY_COLOR]", matchBodyColor)
.replaceAll("[VARIANT]", itemName)
.replaceAll("[DATA_FILE]", dataFiles);
idx += 1;
}
return startHTML + listItemsHTML + endHTML;
}
var lineReader = require('readline').createInterface({
input: fs.createReadStream('source_index.html')
});
var htmlGenerated = '<!-- THIS FILE IS AUTO-GENERATED. PLEASE DONT ALTER IT MANUALLY -->\n';
lineReader.on('line', function (line) {
if (line.includes('div_sheet_')) {
const definition = line.replace("div_sheet_","");
const newLine = generateListHTML(`${definition}.json`.replaceAll("\t", ""))
htmlGenerated+=newLine+"\n";
} else {
htmlGenerated+=line+"\n";
}
});
lineReader.on('close', function (line) {
fs.writeFile('index.html', htmlGenerated, function(err) {
if (err) {
return console.log(err);
} else {
console.log('Updated!');
}
});
});