Files
forge-steel/scripts/sentences.py
T
2025-11-11 10:24:24 +01:00

64 lines
1.4 KiB
Python

#!/usr/bin/env python3
import os
TARGET_FILE = os.path.join(
os.path.dirname(__file__), "..", "default", "inc_sentences.glsl"
)
SENTENCES = [
"forge",
"FORGE",
"F.O.R.G.E.",
"Fusion",
"Of",
"Real-time",
"Generative",
"Effects",
"Everything you see",
"Pixel by pixel",
"Live",
"Generated",
"Controlled",
"π",
"Kleπek",
"Code as art",
"Art as code",
]
MAPPING = {"π": "0xE3"}
def code(char: str) -> str:
if char in MAPPING:
return MAPPING[char]
return "0x" + f"{ord(char):02x}".upper()
def convert(txt: str) -> str:
out = []
for i in range(20):
out += [code(txt[i]) if i < len(txt) else "0x00"]
return f"{{{', '.join(out)}}}"
def main() -> None:
with open(TARGET_FILE, mode="w") as file:
file.write("#ifndef INC_SENTENCES\n")
file.write("#define INC_SENTENCES\n\n")
file.write(f"#define SENTENCE_COUNT {len(SENTENCES)}\n\n")
file.write("const int sentences[SENTENCE_COUNT][20] = {\n")
for sentence in SENTENCES:
file.write(" " + convert(sentence) + "," + "\n")
file.write("};\n\n")
file.write("const int lengths[SENTENCE_COUNT] = {\n")
file.write(
" " + ", ".join(str(len(sentence)) for sentence in SENTENCES) + "\n"
)
file.write("};\n")
file.write("#endif")
if __name__ == "__main__":
main()