diff options
author | Jesusaves <cpntb1@ymail.com> | 2020-12-16 19:41:56 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2020-12-16 19:41:56 -0300 |
commit | 4492fb781ac9a3f5707a3d83f033d7807cd5b8cd (patch) | |
tree | d0bd72a92a4e2bb32462c1a93b23a616e71cd42e /game/01_init.rpy | |
parent | e4a937a0a27e7024e730a778b13e92a9f4dd0d9a (diff) | |
download | client-4492fb781ac9a3f5707a3d83f033d7807cd5b8cd.tar.gz client-4492fb781ac9a3f5707a3d83f033d7807cd5b8cd.tar.bz2 client-4492fb781ac9a3f5707a3d83f033d7807cd5b8cd.tar.xz client-4492fb781ac9a3f5707a3d83f033d7807cd5b8cd.zip |
Split defs.rpy in five files
Diffstat (limited to 'game/01_init.rpy')
-rw-r--r-- | game/01_init.rpy | 325 |
1 files changed, 325 insertions, 0 deletions
diff --git a/game/01_init.rpy b/game/01_init.rpy new file mode 100644 index 0000000..ddc00f4 --- /dev/null +++ b/game/01_init.rpy @@ -0,0 +1,325 @@ +######################################################################################## +# 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 +######################################################################################## +# Definitions + +init -3 python: + renpy.add_python_directory("python-extra") + import requests, zlib, base64, sys, copy, uuid, time, json + import websock as wsock + + # set PYTHON_VERSION variable (should be 2713, 3605 could fail) + PYTHON_VERSION="%d%d%02d" % (sys.version_info.major, sys.version_info.minor, sys.version_info.micro) + PYTHON_VERSION=int(PYTHON_VERSION) + + # Ren'Py should come with Python 2.7.10 (2710), but just in case + # After all, I only tested with 2.7.10, 2.7.13 and 2.7.15 + if (PYTHON_VERSION < 2700 or PYTHON_VERSION > 3000): + raise Exception("WARNING: Python version is not 2.7\nStrange bugs may happen on your client.\n\nClick on \"Ignore\" to continue.\nClick on \"Quit\" to exit.") + + # Why setting this...? + ApTimer="" + + # Configuration + config.autoreload = False + config.save_on_mobile_background = False + persistent.release_name = "Christmas" + if persistent.host is None: + persistent.host="spheres.tmw2.org" + persistent.serverlist=[["TMW2", "spheres.tmw2.org", 61000]] + # FIXME: Set good defaults (=bad) for Android + if renpy.android: + persistent.nothreading=False + persistent.ssl_enabled=False + else: + persistent.serverlist.append(["Localhost", "localhost", 61000]) + if (persistent.allfiles is None): + persistent.allfiles=[] + allfiles=[] + HOST=str(persistent.host) + PORT=str(persistent.port) + UPDP=10302 + FAILUREMSG="Request failed, Please try again" + OFFLINEMSG="401 Unauthorized" + OKMSG="200 OK" + TIMEOUT_INTERVAL=3.0 + MAX_IRC_BUFFER=50 + SSL_IS_BROKEN=False + CERT_NONE=0 + debug=copy.copy(config.developer) + + # Error Codes + ERR_JSONDECODER=101 + ERR_LOGIN_DEFAULT=102 + ERR_INVALID=103 + ERR_TIMEOUT=104 + ERR_NOGEMS=105 + ERR_INVFULL=106 + ERR_OK=200 + + # All error code library + ERRNO=[FAILUREMSG, OFFLINEMSG, OKMSG, ERR_LOGIN_DEFAULT, ERR_INVALID, ERR_TIMEOUT, ERR_NOGEMS, ERR_INVFULL, ERR_OK] + + # Core musics/sfx + MUSIC_OPENING="sfx/bgm01.mp3" + MUSIC_TOWN="sfx/bgm02.mp3" + + # Spheres actions + AP_NONE =False + AP_SPHERE =1 + AP_SKILL =2 + + # Status + ST_TOWN =0 + ST_QUEST =1 + + # Unit flags + UF_NOLVL =1 + UF_NOPART =2 + UF_EXPUP =4 + UF_EVOMAT =8 + UF_SUPEREVO =64 + + # Jobs + Job_Swordsman =1 + Job_Assassin =2 + Job_Mage =3 + Job_Archer =4 + Job_Gunner =5 + + # IRC flags + IRC_AUTH_NONE =0 + IRC_AUTH_USER =1 + IRC_AUTH_NICK =2 + IRC_AUTH_CHAN =3 + + # Smart Print command + def stdout(message): + if debug: + if renpy.android: + if not renpy.is_init_phase(): + renpy.notify(message) + else: + print(message) + renpy.write_log("[DEBUG] %s" % message) + else: + renpy.write_log("[GAME] %s" % message) + return + + # Smart wait + def sdelay(delta=0.02): + try: + renpy.pause(delta, hard=True) + except: + time.sleep(delta) + return + + + # Global classes + # We need to override standard list method. Original by Triptych (stackoverflow) + class dlist(list): + + def __setitem__(self, index, value): + size = len(self) + if index >= size: + self.extend(None for _ in range(size, index + 1)) + + list.__setitem__(self, index, value) + + class ExecuteOnCall(): + def __init__(self, callable, *args, **kwargs): + self.callable = callable + self.args = args + self.kwargs = kwargs + + def __call__(self): + rv = self.callable(*self.args, **self.kwargs) + return rv + + def id(self): + return self.__call__() + + class RetString(): + def __init__(self, string): + self.string = string + + def __call__(self): + return self.string + + def id(self): + return self.__call__() + + # Screen Functions/class + # Override + class SpheresMainMenu(MainMenu): + def __call__(self): + + if not self.get_sensitive(): + return + + if self.confirm: + if config.autosave_on_quit: + renpy.force_autosave() + + layout.yesno_screen(layout.MAIN_MENU, SpheresMainMenu(False)) + else: + # Flush labels/sockets/timers as needed + renpy.call_in_new_context("quit") + # Restart + renpy.full_restart(config.game_main_transition) + + class ExtraImage(renpy.display.im.Image): + """ + Custom image manipulator, based on bink's code, topic 11732 + """ + + def __init__(self, loc, **properties): + """ + @param loc: Where the image really is (get_path already applied) + """ + + super(ExtraImage, self).__init__(loc, **properties) + self.loc = loc + + def load(self, unscaled=False): # W0221 + try: + #page = open(self.loc, "rb") + #pd = page.read() + #picdata = os.tmpfile() + #picdata.write(pd) + #picdata.seek(0) # reset seek position + stdout("Requested to open: %s" % repr(self.loc)) + picdata = open(self.loc, "rb") + stdout("Picdata is open (%s)" % self.loc) + + if unscaled: + surf = renpy.display.pgrender.load_image_unscaled(picdata, self.loc) + else: + surf = renpy.display.pgrender.load_image(picdata, self.loc) + + stdout("Picdata was closed") + picdata.close() + #page.close() + + return surf + except Exception, e: + if renpy.config.missing_image_callback: + im = renpy.config.missing_image_callback(self.loc) + if im is None: + raise e + return im.load() + raise + + def virtpos(posix): + if isinstance(posix, float): + return posix*1024 + else: + return posix/1024.0 + + # File Managment Functions + def get_path(path): + if True or renpy.android: + path=path.replace("/", "_") + #return renpy.loader.get_path(path) + return renpy.config.savedir + "/" + path + else: + return renpy.loader.get_path(path) + + def get_path_if_exists(path): + if True or renpy.android: + path=path.replace("/", "_") + #return renpy.loader.get_path(path) + return renpy.config.savedir + "/" + path + else: + return renpy.loader.transfn(path) + + # URL3 Function + def GAME_UPDATER(): + global tr_load + tr_load=False + + # If no version is provided, we are using default files + # Default files version is "1" (Should never happen) + if (persistent.version is None): + persistent.version=1 + + # Download upstream version + x=requests.get("http://"+HOST+'/version.txt') + try: + ver=int(x.text) + except: + stdout("IMPOSSIBLE TO DETERMINE VERSION") + raise Exception("Could not estabilish a connection to update server:\n%s is not valid." % x.text) # TODO: Show this beautifully? + # TODO: Should we set a "ver"? + + if (int(persistent.version) < ver): + # TODO: Check if the server have SSL support + stdout("Downloading updated game data...") + + # Download quests.json + f=open(get_path("quests.json"), "w") + stdout("Downloading quests.json") + x=requests.get("http://"+HOST+'/quests.json') + f.write(x.text) + f.close() + + # Download units.json + f=open(get_path("units.json"), "w") + stdout("Downloading units.json") + x=requests.get("http://"+HOST+'/units.json') + f.write(x.text) + f.close() + + # Download story.json + f=open(get_path("story.json"), "w") + stdout("Downloading story.json") + x=requests.get("http://"+HOST+'/story.json') + f.write(x.text) + f.close() + + # Download world.json + f=open(get_path("world.json"), "w") + stdout("Downloading world.json") + x=requests.get("http://"+HOST+'/world.json') + f.write(x.text) + f.close() + + # Download bar.json + f=open(get_path("bar.json"), "w") + stdout("Downloading bar.json") + x=requests.get("http://"+HOST+'/bar.json') + f.write(x.text) + f.close() + + # Download summons.json + f=open(get_path("summons.json"), "w") + stdout("Downloading summons.json") + x=requests.get("http://"+HOST+'/summons.json') + f.write(x.text) + f.close() + + persistent.version=ver + stdout("Update complete") + + # Download server news + # Handled by GAME_LOADER + + tr_uptodate=True + tr_load=True + return tr_load + |