2023-09-12 22:16:10 +00:00
|
|
|
|
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
|
2023-01-18 22:13:55 +00:00
|
|
|
|
#
|
|
|
|
|
# Permission is hereby granted, free of charge, to any person
|
|
|
|
|
# obtaining a copy of this software and associated documentation files
|
|
|
|
|
# (the "Software"), to deal in the Software without restriction,
|
|
|
|
|
# including without limitation the rights to use, copy, modify, merge,
|
|
|
|
|
# publish, distribute, sublicense, and/or sell copies of the Software,
|
|
|
|
|
# and to permit persons to whom the Software is furnished to do so,
|
|
|
|
|
# subject to the following conditions:
|
|
|
|
|
#
|
|
|
|
|
# The above copyright notice and this permission notice shall be
|
|
|
|
|
# included in all copies or substantial portions of the Software.
|
|
|
|
|
#
|
|
|
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
|
|
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
|
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
|
|
|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
|
|
|
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
|
|
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
|
|
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
|
|
|
|
|
|
from gui7.code import CodeGenerator, translate_define, translate_copy, translate_code
|
|
|
|
|
from gui7.images import ImageGenerator
|
|
|
|
|
from gui7.parameters import GuiParameters
|
|
|
|
|
|
|
|
|
|
import renpy.arguments
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def generate_gui(p):
|
|
|
|
|
|
|
|
|
|
ImageGenerator(p).generate_all()
|
|
|
|
|
CodeGenerator(p).generate_gui("gui.rpy", defines=True)
|
|
|
|
|
CodeGenerator(p).generate_gui("screens.rpy")
|
|
|
|
|
CodeGenerator(p).generate_code("options.rpy")
|
|
|
|
|
CodeGenerator(p).copy_script("script.rpy")
|
|
|
|
|
CodeGenerator(p).copy_files()
|
|
|
|
|
|
|
|
|
|
for dn in [ "images", "audio" ]:
|
|
|
|
|
|
|
|
|
|
fulldn = os.path.join(p.prefix, dn)
|
|
|
|
|
|
|
|
|
|
if not os.path.exists(fulldn):
|
|
|
|
|
os.mkdir(fulldn)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def generate_gui_command():
|
|
|
|
|
|
|
|
|
|
ap = renpy.arguments.ArgumentParser()
|
|
|
|
|
|
|
|
|
|
ap.add_argument("target", action="store", help="The game into which the generated gui should be placed.")
|
|
|
|
|
ap.add_argument("--width", default=1280, action="store", type=int, help="The width of the generated gui.")
|
|
|
|
|
ap.add_argument("--height", default=720, action="store", type=int, help="The height of the generated gui.")
|
|
|
|
|
ap.add_argument("--accent", default="#00b8c3", action="store", help="The accent color used throughout the gui.")
|
|
|
|
|
ap.add_argument("--boring", default="#000000", action="store", help="The boring color used for the gui background.")
|
|
|
|
|
ap.add_argument("--light", default=False, action="store_true", help="True if this is considered a light theme.")
|
|
|
|
|
ap.add_argument("--template", default="gui", action="store", help="The template directory containing source code.")
|
|
|
|
|
ap.add_argument("--language", default=None, action="store", help="The language to translate strings and comments to.")
|
|
|
|
|
|
|
|
|
|
ap.add_argument("--start", default=False, action="store_true", help="Starts a new project, replacing images and code.")
|
|
|
|
|
ap.add_argument("--replace-images", default=False, action="store_true", help="True if existing images should be overwritten.")
|
|
|
|
|
ap.add_argument("--replace-code", default=False, action="store_true", help="True if an existing gui.rpy file should be overwritten.")
|
|
|
|
|
ap.add_argument("--update-code", default=False, action="store_true", help="True if an existing gui.rpy file should be update.")
|
|
|
|
|
|
|
|
|
|
args = ap.parse_args()
|
|
|
|
|
|
|
|
|
|
if args.start:
|
|
|
|
|
args.replace_images = True
|
|
|
|
|
args.replace_code = True
|
|
|
|
|
args.update_code = True
|
|
|
|
|
|
|
|
|
|
prefix = os.path.join(args.target, "game")
|
|
|
|
|
|
|
|
|
|
if not os.path.isdir(prefix):
|
|
|
|
|
ap.error("{} does not appear to be a Ren'Py game.".format(prefix))
|
|
|
|
|
|
|
|
|
|
template = os.path.join(args.template, "game")
|
|
|
|
|
|
|
|
|
|
if not os.path.isdir(template):
|
|
|
|
|
ap.error("{} does not appear to be a Ren'Py game.".format(template))
|
|
|
|
|
|
|
|
|
|
p = GuiParameters(
|
|
|
|
|
prefix,
|
|
|
|
|
template,
|
|
|
|
|
args.width,
|
|
|
|
|
args.height,
|
|
|
|
|
args.accent,
|
|
|
|
|
args.boring,
|
|
|
|
|
args.light,
|
|
|
|
|
args.language,
|
|
|
|
|
args.replace_images,
|
|
|
|
|
args.replace_code,
|
|
|
|
|
args.update_code,
|
|
|
|
|
os.path.basename(args.target),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
generate_gui(p)
|
|
|
|
|
|
|
|
|
|
renpy.arguments.register_command("generate_gui", generate_gui_command)
|