-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSoulderBlockGen.py
166 lines (134 loc) · 8.21 KB
/
SoulderBlockGen.py
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
import os
import tkinter as tk
from tkinter import filedialog, messagebox
# Базовый словарь с переводами для демонстрации
TRANSLATION_DICT = {
"pokedoll_zorua": "Кукла Зоруа",
"normal_chest": "Обычный сундук",
# Добавляйте сюда новые переводы по мере необходимости
}
# Функция для перевода на русский с использованием словаря
def translate_to_russian(text):
return TRANSLATION_DICT.get(text, " ".join(word.capitalize() for word in text.split("_")))
# Функция для генерации файла с константами блоков
def generate_block_constants():
selected_files = filedialog.askopenfilenames(
title="Выберите файлы для генерации блоков",
filetypes=[("Все файлы", "*.*")]
)
if not selected_files:
messagebox.showinfo("Информация", "Файлы не выбраны.")
return
output_folder = filedialog.askdirectory(title="Выберите папку для сохранения файла")
if not output_folder:
messagebox.showinfo("Информация", "Папка для сохранения не выбрана.")
return
output_file_path = os.path.join(output_folder, "GeneratedBlocks.java")
try:
with open(output_file_path, "w") as output_file:
output_file.write("public class GeneratedBlocks {\n\n")
for file in selected_files:
filename = os.path.splitext(os.path.basename(file))[0]
constant_name = filename.upper()
lowercase_name = filename.lower()
output_file.write(f" public final Block {constant_name} = fullCube(\"{lowercase_name}\");\n")
output_file.write("\n}")
messagebox.showinfo("Успех", f"Файл с блоками успешно создан: {output_file_path}")
except Exception as e:
messagebox.showerror("Ошибка", f"Произошла ошибка при создании файла: {e}")
# Функция для генерации строк с Identifier
def generate_identifiers():
selected_files = filedialog.askopenfilenames(
title="Выберите файлы для генерации идентификаторов",
filetypes=[("Все файлы", "*.*")]
)
if not selected_files:
messagebox.showinfo("Информация", "Файлы не выбраны.")
return
output_folder = filedialog.askdirectory(title="Выберите папку для сохранения файла")
if not output_folder:
messagebox.showinfo("Информация", "Папка для сохранения не выбрана.")
return
output_file_path = os.path.join(output_folder, "GeneratedIdentifiers.java")
try:
with open(output_file_path, "w") as output_file:
output_file.write("public class GeneratedIdentifiers {\n\n")
for file in selected_files:
filename = os.path.splitext(os.path.basename(file))[0]
lowercase_name = filename.lower()
output_file.write(f" new Identifier(SoulderContent.ID, \"{lowercase_name}\"),\n")
output_file.write("\n}")
messagebox.showinfo("Успех", f"Файл с идентификаторами успешно создан: {output_file_path}")
except Exception as e:
messagebox.showerror("Ошибка", f"Произошла ошибка при создании файла: {e}")
# Функция для генерации строк Item
def generate_item_constants():
selected_files = filedialog.askopenfilenames(
title="Выберите файлы для генерации предметов",
filetypes=[("Все файлы", "*.*")]
)
if not selected_files:
messagebox.showinfo("Информация", "Файлы не выбраны.")
return
output_folder = filedialog.askdirectory(title="Выберите папку для сохранения файла")
if not output_folder:
messagebox.showinfo("Информация", "Папка для сохранения не выбрана.")
return
output_file_path = os.path.join(output_folder, "GeneratedItems.java")
try:
with open(output_file_path, "w") as output_file:
output_file.write("public class GeneratedItems {\n\n")
for file in selected_files:
filename = os.path.splitext(os.path.basename(file))[0]
constant_name = filename.upper()
lowercase_name = filename.lower()
output_file.write(
f" public final Item {constant_name} = blockItem(\"{lowercase_name}\", SoulderBlocks.getInstance().{constant_name});\n")
output_file.write("\n}")
messagebox.showinfo("Успех", f"Файл с предметами успешно создан: {output_file_path}")
except Exception as e:
messagebox.showerror("Ошибка", f"Произошла ошибка при создании файла: {e}")
# Функция для генерации переведённой локализации
def generate_translated_localization():
selected_files = filedialog.askopenfilenames(
title="Выберите файлы для генерации перевода",
filetypes=[("JSON files", "*.json")]
)
if not selected_files:
messagebox.showinfo("Информация", "Файлы не выбраны.")
return
output_folder = filedialog.askdirectory(title="Выберите папку для сохранения переведённого файла")
if not output_folder:
messagebox.showinfo("Информация", "Папка для сохранения не выбрана.")
return
output_file_path = os.path.join(output_folder, "TranslatedLocalization.json")
try:
with open(output_file_path, "w", encoding="utf-8") as output_file:
output_file.write("{\n")
for file in selected_files:
filename = os.path.splitext(os.path.basename(file))[0]
localized_key = f"block.souldercontent.{filename.lower()}"
translated_value = translate_to_russian(filename)
output_file.write(f' "{localized_key}": "{translated_value}",\n')
output_file.write("}")
messagebox.showinfo("Успех", f"Файл с переведённой локализацией успешно создан: {output_file_path}")
except Exception as e:
messagebox.showerror("Ошибка", f"Произошла ошибка при создании файла: {e}")
# Создание окна приложения
root = tk.Tk()
root.title("Генератор различных штуковин")
root.geometry("400x400")
# Кнопка для генерации файла с константами блоков
generate_button_constants = tk.Button(root, text="Генерировать SoulderBlocks", command=generate_block_constants)
generate_button_constants.pack(pady=10)
# Кнопка для генерации идентификаторов
generate_button_identifiers = tk.Button(root, text="Генерировать ForgeItems", command=generate_identifiers)
generate_button_identifiers.pack(pady=10)
# Кнопка для генерации предметов
generate_button_items = tk.Button(root, text="Генерировать SoulderItems", command=generate_item_constants)
generate_button_items.pack(pady=10)
# Кнопка для генерации переведённой локализации
generate_button_translated_localization = tk.Button(root, text="[WIP] Генерировать переведённые строки локализации ", command=generate_translated_localization)
generate_button_translated_localization.pack(pady=10)
# Запуск основного цикла программы
root.mainloop()