From eec76077b834a46d52a8f2f0ba141c0259655467 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Wed, 23 Dec 2020 17:30:25 -0300 Subject: Better convention naming --- editor.rpy | 408 ----------------------------------------------------------- qeditor.rpy | 413 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ script.rpy | 4 +- 3 files changed, 415 insertions(+), 410 deletions(-) delete mode 100644 editor.rpy create mode 100644 qeditor.rpy diff --git a/editor.rpy b/editor.rpy deleted file mode 100644 index 99ccc10..0000000 --- a/editor.rpy +++ /dev/null @@ -1,408 +0,0 @@ -######################################################################################## -# This file is part of Spheres. -# Copyright (C) 2019 Jesusalva - -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -######################################################################################## -# Editor labels for developers -screen quest_editor(): - modal True - frame: - background Frame("gui/frame.png", 0, 0) - xalign 0.5 - yalign 0.5 - ymargin 15 - ypadding 10 - xmargin 10 - - hbox: - spacing 30 - xmaximum 0.85 - ymaximum 0.85 - - # Navigation - viewport: - #child_size (350, 1000) - mousewheel True - draggable True - pagekeys True - xfill False - xmaximum 350 - scrollbars "vertical" - - vbox: - spacing 2 - label _("Quest list") - $i=0 - for entry in allquests: - textbutton "{size=18}"+_("%02d (D %d) (C %d)" % (entry["quest_id"], entry["difficulty"], entry["cost"]))+"{/size}" action SetVariable("current", i) - $i+=1 - $del i - - # News screen - viewport: - #child_size (0.4, 0.8) - mousewheel True - #draggable True - #arrowkeys True - xfill False - scrollbars "vertical" - - vbox: - xalign 0.5 - spacing 20 - - $ qedit=allquests[current] - $ qreq=qedit["requeriment"] - - label _("Quest %d" % (qedit["quest_id"])) - hbox: - spacing 10 - textbutton _("-") action Function(qeditor, "quest_id", -1) - label ("%d" % qedit["quest_id"]) - textbutton _("+") action Function(qeditor, "quest_id", 1) - null height 25 - - - ########################################### - label _("Requeriment") - hbox: - spacing 10 - textbutton _("-") action Function(qeditor, "requeriment", -1) - label ("%d" % qedit["requeriment"]) - textbutton _("+") action Function(qeditor, "requeriment", 1) - null height 15 - - - ########################################### - label _("Difficulty") - hbox: - spacing 10 - textbutton _("-10") action Function(qeditor, "difficulty", -10) - textbutton _("-5") action Function(qeditor, "difficulty", -5) - textbutton _("-1") action Function(qeditor, "difficulty", -1) - label _("%d" % qedit["difficulty"]) - textbutton _("+1") action Function(qeditor, "difficulty", 1) - textbutton _("+5") action Function(qeditor, "difficulty", 5) - textbutton _("+10") action Function(qeditor, "difficulty", 10) - null height 15 - - - ########################################### - label _("Cost") - hbox: - spacing 10 - textbutton _("-") action Function(qeditor, "cost", -1) - label _("%d" % qedit["cost"]) - textbutton _("+") action Function(qeditor, "cost", 1) - null height 15 - - - ########################################### - label _("Flags") - hbox: - spacing 10 - textbutton _("-") action Function(qeditor, "flags", -1) - label _("%d" % qedit["flags"]) - textbutton _("+") action Function(qeditor, "flags", 1) - text "None: 0\nClear Gems: 1\nTutorial Gems: 2\nSpecial: 4\nFirst Loot: 8\nDouble XP: 16\nDouble GP: 32" size 12 - null height 15 - - - ########################################### - label _("Loot") - vbox: - spacing 0 - $i=0 - for lt, ch in qedit["loot"]: - hbox: - spacing 1 - $ input=Input( - value=EditorInputValue(lt, "loot", i, "str", key3=0), - copypaste=True, - allow="0123456789", - length=9) - button: - #key_events True - action input.enable - add input - - label ": " - - $ input=Input( - value=EditorInputValue(ch, "loot", i, "int", key3=1), - copypaste=True, - allow="0123456789", - length=5) - button: - #key_events True - action input.enable - add input - - null width 40 - textbutton _("X Delete") action None - $i+=1 - textbutton _("Add Loot") action Function(qeditor_addloot) - null height 15 - - - ########################################### - label _("Waves") - vbox: - spacing 0 - $ wc=0 - null height 10 - for wave in qedit["waves"]: - $wc+=1 - label _("{size=22}Wave %d{/size}" % wc) - $ mc=0 - for mob in wave: - $mc+=1 - label _("{size=20}%s{/size}" % mob["name"]) - textbutton "{size=20}%d{/size}" % mob["sprite"] action None - hbox: - spacing 7 - textbutton "{size=20}Ele: %d{/size}" % mob["attribute"] action None - textbutton "{size=20}Boss: %s{/size}" % str(mob["boss"]) action Function(qeditor_input, "waves", wc-1, "bool", key3=mc-1, key4="boss") - null width 20 - textbutton _("X Delete") action Function(qeditor_delete, "waves", wc-1, mc-1) - null height 20 - textbutton "{size=22}"+_("Add Monster")+"{/size}" action Function(qeditor_addmonster, wc) - textbutton "{size=22}"+_("Delete Wave")+"{/size}" action Function(qeditor_delete, "waves", wc-1) - null height 20 - null height 20 - text "Fire: 1 Water: 2\nNature: 3 Light: 4\nDark: 5" size 12 - textbutton _("Add Wave") action Function(qeditor_addwave) - - - # TODO: Loot, waves - ########################################### - null height 40 - hbox: - spacing 25 - - textbutton _("Save") action Function(qeditor_save) - - textbutton _("Close") action Return() - textbutton _("New Quest") action Function(qeditor_new) - textbutton _("New S.") action Function(qeditor_new, 1) - - ## Right-click and escape refresh screen - key "game_menu" action Function(RestartInteraction)#Return() - key "K_RETURN" action Function(RestartInteraction)#Return() - -init python: - import json, copy - def RestartInteraction(): - renpy.restart_interaction() - return - - - def qeditor(key, operation, override=False): - global qedit - qedit=allquests[current] - print str(qedit["quest_id"]) - if override: - qedit[key]=operation - else: - qedit[key]+=operation - return - - def qeditor_save(): - global allquests - f=open(get_path("editor.json"), "w") - json.dump(allquests, f, indent=4, separators=(',', ': ')) - f.close() - renpy.notify("File saved as editor.json") - return - - def qeditor_new(special=False): - global allquests - if not special: - qeid=len(allquests) - qefl=1 - qec=1 - else: - qeid=90000 - qefl=4 - qec=20 - - allquests.append({ - "quest_id": qeid, - "difficulty": 0, - "requeriment": 0, - "cost": qec, - "flags": qefl, - "loot": [ - ["1010", 1000], - ["1020", 100], - ["1030", 10] - ], - "waves": []}) - renpy.notify("New quest added: %d" % qeid) - return - - def qeditor_addloot(): - global qedit - qedit=allquests[current] - qedit["loot"].append(["1000", 0]) - renpy.notify("Added new loot field id 1000 (an invalid ID)") - return - - def qeditor_addmonster(wave): - global qedit - qedit=allquests[current] - pointer=qedit["waves"][wave-1] - if len(pointer) < 3: - pointer.append({ - "name": "New Monster", - "sprite": 950000, - "attribute": 1, - "boss": False - }) - else: - renpy.notify("Max monsters per wave reached!") - return - - def qeditor_addwave(): - global qedit - qedit=allquests[current] - qedit["waves"].append([]) - renpy.notify("Blank wave created\nThis is buggy, remember to add monsters") - return - - - def qeditor_delete(key1, key2=None, key3=None, key4=None): - global qedit - qedit=allquests[current] - if key2 is None: - del qedit[key1] - #del allquests[current][key1] - elif key3 is None: - del qedit[key1][key2] - #del allquests[current][key1][key2] - elif key4 is None: - del qedit[key1][key2][key3] - #del allquests[current][key1][key2][key3] - else: - del qedit[key1][key2][key3][key4] - #del allquests[current][key1][key2][key3][key4] - return - - def qeditor_input(key1, key2=None, tp="int", temp="", key3=None, key4=None): - #temp=renpy.input("Please insert new value for this variable.\nCurrent value: [variable]") - global qedit - qedit=allquests[current] - variable="" - - # Key looping - if key2 is None: - target=qedit[key1] - elif key3 is None: - target=qedit[key1][key2] - elif key4 is None: - target=qedit[key1][key2][key3] - else: - target=qedit[key1][key2][key3][key4] - - # Convert input if needed - # tp int → convert to int - # tp key → Replace the key - # tp bool → Toogles the value - if tp == "int": - try: - variable=int(temp) - except: - renpy.notify("Invalid numeric input") - variable=0 # Sorry, but gets bad otherwise - elif tp == "key": - try: - qedit[key1][temp]=copy.copy(target) - renpy.notify("Key replaced") - del qedit[key1][key2] # Not sure "del target" would work - return - except: - renpy.notify("ERROR, doing nothing") - variable=target - elif tp == "bool": - try: - variable=(not target) - print "New boolean: %s" % str(variable) - except: - print "Illegal boolean" - renpy.notify("Illegal boolean") - variable=target - else: - try: - variable=str(temp) - except: - renpy.notify("Invalid string input") - - # Save input - # Key looping - if key2 is None: - target=qedit[key1]=variable - elif key3 is None: - target=qedit[key1][key2]=variable - elif key4 is None: - target=qedit[key1][key2][key3]=variable - else: - target=qedit[key1][key2][key3][key4]=variable - - return - - class EditorInputValue(InputValue): - def __init__(self, variable, key1, key2, inpu="int", key3=None, key4=None): - try: - self.variable = variable - except: - self.variable = "" - self.inpu = inpu - - self.default=True - self.editable=True - - self.key1=key1 - self.key2=key2 - self.key3=key3 - self.key4=key4 - - def get_text(self): - try: - return str(self.variable) - except: - return "" - #return globals()[self.variable] - - def set_text(self, s): - #globals()[self.variable] = s - qeditor_input(self.key1, self.key2, self.inpu, s, key3=self.key3, key4=self.key4) - - def enter(self): - renpy.restart_interaction() - #renpy.run(self.Disable()) - #raise renpy.IgnoreEvent() - -label quest_editors: - $ qedit=allquests[0] - $ current=0 - $print("") - $print(".:: THE BUILT-IN QUEST EDITOR ::.") - $print("Use ESC to redraw screen, saving input") - $print("") - call screen quest_editor - $print("Quest Editor closed") - jump restore - diff --git a/qeditor.rpy b/qeditor.rpy new file mode 100644 index 0000000..5a0809d --- /dev/null +++ b/qeditor.rpy @@ -0,0 +1,413 @@ +######################################################################################## +# This file is part of Spheres. +# Copyright (C) 2019 Jesusalva + +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +######################################################################################## +# Editor labels for developers +screen quest_editor(): + modal True + frame: + background Frame("gui/frame.png", 0, 0) + xalign 0.5 + yalign 0.5 + ymargin 15 + ypadding 10 + xmargin 10 + + hbox: + spacing 30 + xmaximum 0.85 + ymaximum 0.85 + + # Navigation + viewport: + #child_size (350, 1000) + mousewheel True + draggable True + pagekeys True + xfill False + xmaximum 350 + scrollbars "vertical" + + vbox: + spacing 2 + label _("Quest list") + $i=0 + for entry in allquests: + textbutton "{size=18}"+_("%02d (D %d) (C %d)" % (entry["quest_id"], entry["difficulty"], entry["cost"]))+"{/size}" action SetVariable("current", i) + $i+=1 + $del i + + # News screen + viewport: + #child_size (0.4, 0.8) + mousewheel True + #draggable True + #arrowkeys True + xfill False + scrollbars "vertical" + + vbox: + xalign 0.5 + spacing 20 + + $ qedit=allquests[current] + $ qreq=qedit["requeriment"] + + label _("Quest %d" % (qedit["quest_id"])) + hbox: + spacing 10 + textbutton _("-") action Function(qeditor, "quest_id", -1) + label ("%d" % qedit["quest_id"]) + textbutton _("+") action Function(qeditor, "quest_id", 1) + null height 25 + + + ########################################### + label _("Requeriment") + hbox: + spacing 10 + textbutton _("-") action Function(qeditor, "requeriment", -1) + label ("%d" % qedit["requeriment"]) + textbutton _("+") action Function(qeditor, "requeriment", 1) + null height 15 + + + ########################################### + label _("Difficulty") + hbox: + spacing 10 + textbutton _("-10") action Function(qeditor, "difficulty", -10) + textbutton _("-5") action Function(qeditor, "difficulty", -5) + textbutton _("-1") action Function(qeditor, "difficulty", -1) + label _("%d" % qedit["difficulty"]) + textbutton _("+1") action Function(qeditor, "difficulty", 1) + textbutton _("+5") action Function(qeditor, "difficulty", 5) + textbutton _("+10") action Function(qeditor, "difficulty", 10) + null height 15 + + + ########################################### + label _("Cost") + hbox: + spacing 10 + textbutton _("-") action Function(qeditor, "cost", -1) + label _("%d" % qedit["cost"]) + textbutton _("+") action Function(qeditor, "cost", 1) + null height 15 + + + ########################################### + label _("Flags") + hbox: + spacing 10 + textbutton _("-") action Function(qeditor, "flags", -1) + label _("%d" % qedit["flags"]) + textbutton _("+") action Function(qeditor, "flags", 1) + text "None: 0\nClear Gems: 1\nTutorial Gems: 2\nSpecial: 4\nFirst Loot: 8\nDouble XP: 16\nDouble GP: 32" size 12 + null height 15 + + + ########################################### + label _("Loot") + vbox: + spacing 0 + $i=0 + for lt, ch in qedit["loot"]: + hbox: + spacing 1 + $ input=Input( + value=EditorInputValue(lt, "loot", i, "str", key3=0), + copypaste=True, + allow="0123456789", + length=9) + button: + #key_events True + action input.enable + add input + + label ": " + + $ input=Input( + value=EditorInputValue(ch, "loot", i, "int", key3=1), + copypaste=True, + allow="0123456789", + length=5) + button: + #key_events True + action input.enable + add input + + null width 40 + textbutton _("X Delete") action None + $i+=1 + textbutton _("Add Loot") action Function(qeditor_addloot) + null height 15 + + + ########################################### + label _("Waves") + vbox: + spacing 0 + $ wc=0 + null height 10 + for wave in qedit["waves"]: + $wc+=1 + label _("{size=22}Wave %d{/size}" % wc) + $ mc=0 + for mob in wave: + $mc+=1 + label _("{size=20}%s{/size}" % mob["name"]) + textbutton "{size=20}%d{/size}" % mob["sprite"] action None + hbox: + spacing 7 + textbutton "{size=20}Ele: %d{/size}" % mob["attribute"] action None + textbutton "{size=20}Boss: %s{/size}" % str(mob["boss"]) action Function(qeditor_input, "waves", wc-1, "bool", key3=mc-1, key4="boss") + null width 20 + textbutton _("X Delete") action Function(qeditor_delete, "waves", wc-1, mc-1) + null height 20 + textbutton "{size=22}"+_("Add Monster")+"{/size}" action Function(qeditor_addmonster, wc) + textbutton "{size=22}"+_("Delete Wave")+"{/size}" action Function(qeditor_delete, "waves", wc-1) + null height 20 + null height 20 + text "Fire: 1 Water: 2\nNature: 3 Light: 4\nDark: 5" size 12 + textbutton _("Add Wave") action Function(qeditor_addwave) + + + # TODO: Loot, waves + ########################################### + null height 40 + hbox: + spacing 25 + + textbutton _("Save") action Function(qeditor_save) + + textbutton _("Close") action Return() + textbutton _("New Quest") action Function(qeditor_new) + textbutton _("New S.") action Function(qeditor_new, 1) + + ## Right-click and escape refresh screen + key "game_menu" action Function(RestartInteraction)#Return() + key "K_RETURN" action Function(RestartInteraction)#Return() + +init python: + import json, copy + def RestartInteraction(): + renpy.restart_interaction() + return + + + def qeditor(key, operation, override=False): + global qedit + qedit=allquests[current] + print str(qedit["quest_id"]) + if override: + qedit[key]=operation + else: + qedit[key]+=operation + return + + def qeditor_save(): + global allquests + f=open(get_path("quests.editor.json"), "w") + json.dump(allquests, f, indent=4, separators=(',', ': ')) + f.close() + renpy.notify("File saved as quests.editor.json") + return + + def qeditor_new(special=False): + global allquests + if not special: + qeid=len(allquests) + qefl=1 + qec=1 + else: + qeid=90000 + qefl=4 + qec=20 + + allquests.append({ + "quest_id": qeid, + "difficulty": 0, + "requeriment": 0, + "cost": qec, + "flags": qefl, + "loot": [ + ["1010", 1000], + ["1020", 100], + ["1030", 10] + ], + "waves": []}) + renpy.notify("New quest added: %d" % qeid) + return + + def qeditor_addloot(): + global qedit + qedit=allquests[current] + qedit["loot"].append(["1000", 0]) + renpy.notify("Added new loot field id 1000 (an invalid ID)") + return + + def qeditor_addmonster(wave): + global qedit + qedit=allquests[current] + pointer=qedit["waves"][wave-1] + if len(pointer) < 3: + pointer.append({ + "name": "New Monster", + "sprite": 950000, + "attribute": 1, + "boss": False + }) + else: + renpy.notify("Max monsters per wave reached!") + return + + def qeditor_addwave(): + global qedit + qedit=allquests[current] + qedit["waves"].append([]) + renpy.notify("Blank wave created\nThis is buggy, remember to add monsters") + return + + + def qeditor_delete(key1, key2=None, key3=None, key4=None): + global qedit + qedit=allquests[current] + if key2 is None: + del qedit[key1] + #del allquests[current][key1] + elif key3 is None: + del qedit[key1][key2] + #del allquests[current][key1][key2] + elif key4 is None: + del qedit[key1][key2][key3] + #del allquests[current][key1][key2][key3] + else: + del qedit[key1][key2][key3][key4] + #del allquests[current][key1][key2][key3][key4] + return + + def qeditor_input(key1, key2=None, tp="int", temp="", key3=None, key4=None): + #temp=renpy.input("Please insert new value for this variable.\nCurrent value: [variable]") + global qedit + qedit=allquests[current] + variable="" + + # Key looping + if key2 is None: + target=qedit[key1] + elif key3 is None: + target=qedit[key1][key2] + elif key4 is None: + target=qedit[key1][key2][key3] + else: + target=qedit[key1][key2][key3][key4] + + # Convert input if needed + # tp int → convert to int + # tp key → Replace the key + # tp bool → Toogles the value + if tp == "int": + try: + variable=int(temp) + except: + renpy.notify("Invalid numeric input") + variable=0 # Sorry, but gets bad otherwise + elif tp == "key": + try: + qedit[key1][temp]=copy.copy(target) + renpy.notify("Key replaced") + del qedit[key1][key2] # Not sure "del target" would work + return + except: + renpy.notify("ERROR, doing nothing") + variable=target + elif tp == "bool": + try: + variable=(not target) + print "New boolean: %s" % str(variable) + except: + print "Illegal boolean" + renpy.notify("Illegal boolean") + variable=target + else: + try: + variable=str(temp) + except: + renpy.notify("Invalid string input") + + # Save input + # Key looping + if key2 is None: + target=qedit[key1]=variable + elif key3 is None: + target=qedit[key1][key2]=variable + elif key4 is None: + target=qedit[key1][key2][key3]=variable + else: + target=qedit[key1][key2][key3][key4]=variable + + return + + class EditorInputValue(InputValue): + def __init__(self, variable, key1, key2, inpu="int", key3=None, key4=None): + try: + self.variable = variable + except: + self.variable = "" + self.inpu = inpu + + self.default=True + self.editable=True + + self.key1=key1 + self.key2=key2 + self.key3=key3 + self.key4=key4 + + def get_text(self): + try: + return str(self.variable) + except: + return "" + #return globals()[self.variable] + + def set_text(self, s): + #globals()[self.variable] = s + qeditor_input(self.key1, self.key2, self.inpu, s, key3=self.key3, key4=self.key4) + + def enter(self): + renpy.restart_interaction() + #renpy.run(self.Disable()) + #raise renpy.IgnoreEvent() + +label quest_editors: + $ qedit=allquests[0] + $ current=0 + $print("") + $print(".:: THE BUILT-IN QUEST EDITOR ::.") + $print("Use ESC to redraw screen, saving input") + $print("") + call screen quest_editor + $print("Quest Editor closed") + menu: + "Save Changes": + $ qeditor_save() + "Discard Changes": + pass + jump restore + diff --git a/script.rpy b/script.rpy index c990dfb..9adf878 100644 --- a/script.rpy +++ b/script.rpy @@ -17,14 +17,14 @@ label restore: menu: "Save changes": python: - f=open(get_path("editor.json"), "r") + f=open(get_path("quests.editor.json"), "r") alltquests["Main"]=json.load(f) f.close() f=open(get_path("quests.json"), "w") json.dump(alltquests, f, indent=1, separators=(',', ': ')) f.close() pass - "Discard changes": + "Continue editing": pass jump loop -- cgit v1.2.3-70-g09d2