diff options
author | Joël Simoneau <simoneaujoel@gmail.com> | 2025-01-15 13:40:22 -0500 |
---|---|---|
committer | Joël Simoneau <simoneaujoel@gmail.com> | 2025-01-15 13:40:22 -0500 |
commit | 18416aa5490342334c53ab806d06669f5d17a5de (patch) | |
tree | 8f7532b2803ef5b0056a364e8aa17444d5c818fb /tools | |
parent | 33d213ce1547fa295854ade306e71b91c46460e9 (diff) | |
download | vijayanagara-18416aa5490342334c53ab806d06669f5d17a5de.tar.gz |
Basic event structure.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/gencode.js | 136 | ||||
-rw-r--r-- | tools/gendata.js | 47 |
2 files changed, 183 insertions, 0 deletions
diff --git a/tools/gencode.js b/tools/gencode.js new file mode 100644 index 0000000..d4d8d23 --- /dev/null +++ b/tools/gencode.js @@ -0,0 +1,136 @@ +"use strict" + +let fs = require("fs") + +let pc = 0 +let UCODE = Array(72).fill(0) +let SCODE = Array(72).fill(0) + +function emit(line) { + ++pc + line[0] = "vm_" + line[0] + for (let i = 1; i < line.length; ++i) { + if (typeof line[i] === "string") { + if (line[i] === "all") + line[i] = 999 + if (line[i][0] === "(" && !line[i].match(/\)=>/)) + line[i] = "()=>" + line[i] + if (line[i][0] === "`") + line[i] = "()=>" + line[i] + } + } + console.log("\t[ " + line.join(", ") + " ],") +} + +console.log("const CODE = []") +let first = false + +for (let line of fs.readFileSync("events.txt", "utf-8").split("\n")) { + line = line.trim() + if (line.length === 0 || line[0] === "#") + continue + if (line === "EOF") + break + line = line.split(" ") + switch (line[0]) { + case "EVENT": + if (first++) { + emit(["return"]) + console.log("]") + } + UCODE[line[1]] = pc + console.log("") + console.log("// EVENT " + line[1]) + console.log("CODE[" + line[1] + " * 2 + 0] = [") + break + case "SHADED": + if (first++) { + emit(["return"]) + console.log("]") + } + SCODE[line[1]] = pc + console.log("") + console.log("// SHADED " + line[1]) + console.log("CODE[" + line[1] + " * 2 + 1] = [") + break + + case "if_space": + emit([ "if", "()=>can_vm_space(1,(s)=>" + line.slice(1).join(" ") + ")" ]) + emit([ "space", true, 1, 1, "(s)=>" + line.slice(1).join(" ") ]) + emit([ "else" ]) + break + + case "or_space": + emit([ "space", true, 1, 1, "(s)=>" + line.slice(1).join(" ") ]) + emit([ "endif" ]) + break + + case "space_no_undo": + emit([ "space", false, line[1], line[1], "(s)=>" + line.slice(2).join(" ") ]) + break + case "space": + emit([ "space", true, line[1], line[1], "(s)=>" + line.slice(2).join(" ") ]) + break + case "space_opt": + emit([ "space", true, 0, line[1], "(s)=>" + line.slice(2).join(" ") ]) + break + + case "piece": + emit([ "piece", false, line[1], line[1], "(p,s)=>" + line.slice(2).join(" ") ]) + break + case "piece_undo": + emit([ "piece", true, line[1], line[1], "(p,s)=>" + line.slice(2).join(" ") ]) + break + case "piece_range": + emit([ "piece", false, line[1], line[2], "(p,s)=>" + line.slice(3).join(" ") ]) + break + case "piece_opt": + emit([ "piece", false, 0, line[1], "(p,s)=>" + line.slice(2).join(" ") ]) + break + case "piece_undo_opt": + emit([ "piece", true, 0, line[1], "(p,s)=>" + line.slice(2).join(" ") ]) + break + + case "shipment": + emit([ "shipment", false, line[1], line[1], "(p,s)=>" + line.slice(2).join(" ") ]) + break + case "shipment_opt": + emit([ "shipment", false, 0, line[1], "(p,s)=>" + line.slice(2).join(" ") ]) + break + + case "place": + emit([ "place", false, 0, line[1], line[2] ]) + break + case "place_opt": + emit([ "place", false, 1, line[1], line[2] ]) + break + case "auto_place": + emit([ "auto_place", false, 0, line[1], line[2] ]) + break + + case "log": + case "prompt": + emit([ line[0], line.slice(1).join(" ") ]) + break + + case "count_spaces": + emit([ line[0], "(s)=>" + line.slice(1).join(" ") ]) + break + case "count_pieces": + emit([ line[0], "(p,s)=>" + line.slice(1).join(" ") ]) + break + + case "asm": + case "if": + case "while": + emit([ line[0], "()=>" + line.slice(1).join(" ") ]) + break + + default: + emit(line) + break + } +} + +emit(["return"]) +console.log("]") diff --git a/tools/gendata.js b/tools/gendata.js index 21418e1..dfc26f3 100644 --- a/tools/gendata.js +++ b/tools/gendata.js @@ -222,6 +222,53 @@ adjacent("Sindh", "Punjab") adjacent("Punjab", "Delhi") adjacent("Punjab", "Mountain Passes") +// Def cities +data.city = [ ] +data.city_name = [ ] + +function def_city(name) { + data.city.push({ id: to_ascii(name), adjacent: [] }) + data.city_name.push(name) +} + +function adjacent_city(city, province) { + c = data.city_name.indexOf(city) + p = data.space_name.indexOf(province) + add(data.city[c].adjacent, p) +} + +def_city("Chittor") +def_city("Devagiri") +def_city("Goa") +def_city("Gulbarga") +def_city("Vijayanagara") +def_city("Warangal") + +adjacent_city("Chittor", "Gujarat") +adjacent_city("Chittor", "Malwa") +adjacent_city("Chittor", "Rajput Kingdoms") + +adjacent_city("Devagiri", "Gujarat") +adjacent_city("Devagiri", "Madhyadesh") +adjacent_city("Devagiri", "Maharashtra") +adjacent_city("Devagiri", "Malwa") + +adjacent_city("Goa", "Karnataka") +adjacent_city("Goa", "Madhyadesh") + +adjacent_city("Gulbarga", "Andhra") +adjacent_city("Gulbarga", "Madhyadesh") +adjacent_city("Gulbarga", "Maharashtra") + +adjacent_city("Vijayanagara", "Andhra") +adjacent_city("Vijayanagara", "Karnataka") +adjacent_city("Vijayanagara", "Madhyadesh") + +adjacent_city("Warangal", "Andhra") +adjacent_city("Warangal", "Gondwana") +adjacent_city("Warangal", "Madhyadesh") +adjacent_city("Warangal", "Orissa") + // Pieces numbers function def_piece(faction, type, count) { if (count == 0) { |