Files
forge-steel/scripts/sentences.py
T

67 lines
1.6 KiB
Python

#!/usr/bin/env python3
import os
TARGET_FILE = os.path.join(
os.path.dirname(__file__), "..", "default", "inc_sentences.glsl"
)
SENTENCE_MAX_LENGTH = 20
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(SENTENCE_MAX_LENGTH):
out += [code(txt[i]) if i < len(txt) else "0x00"]
return ', '.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")
file.write(f"#define SENTENCE_MAX_LENGTH {SENTENCE_MAX_LENGTH}\n\n")
file.write("const int sentences[] = int[SENTENCE_COUNT * SENTENCE_MAX_LENGTH](\n")
for i, sentence in enumerate(SENTENCES):
file.write(" " + convert(sentence) + ("," if i < len(SENTENCES) - 1 else "") + "\n")
file.write(");\n\n")
file.write("const int lengths[] = int[SENTENCE_COUNT](\n")
file.write(
" " + ", ".join(str(len(sentence)) for sentence in SENTENCES) + "\n"
)
file.write(");\n")
file.write("#endif")
if __name__ == "__main__":
main()