Update terminal.py for 1.7.36+ support

• Logs of previous game launch are also saved now
• Added new function `export_logs`: (logs are saved to 'Download' folder)
• Added new function `version`: (it tells the current version of terminal)
• Bug fix: creating sys in newer versions (it is now required to add `build number` to the sys folder name)
• Removed screenmessages for deleting scripts: (the game now tells about the required app restart & also automatically quits)
• Improved make_folder code
This commit is contained in:
! Freaku 2024-08-14 18:43:14 +05:30 committed by GitHub
parent b5b4aea822
commit da8b39a9bc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,8 +1,13 @@
# Made by your friend: Freaku # Made by your friend: Freaku
__version__ = '1.7.36+'
# Starting versioning of terminal.py henceforth,
# since many users complained problems which was actually caused due to them using an older version of us.
# Defines a simple plugin that allows you to: # Defines a simple plugin that allows you to:
### See any errors of your mods (if present) in folder BombSquad/console/logs.txt ### See any errors of your mods (if present) in folder BombSquad/console/logs.txt
### Export logs (current & logs generated in previous launch too)
### Get config contents ### Get config contents
### Create/Delete system scripts ### Create/Delete system scripts
### Get 3D co-ordinate points in any Map! ### Get 3D co-ordinate points in any Map!
@ -81,14 +86,15 @@ import bascenev1 as bs
import bauiv1 as bui import bauiv1 as bui
from efro.log import LogLevel from efro.log import LogLevel
from bauiv1lib.fileselector import FileSelectorWindow from bauiv1lib.fileselector import FileSelectorWindow
from bauiv1lib.confirm import ConfirmWindow
folder = _babase.app.env.python_directory_user + "/console/" folder = _babase.app.env.python_directory_user + "/console/"
log_post = folder + 'logs.txt' log_post = folder + 'logs.txt'
previous_log_post = folder + 'logs (previous game launch).txt'
config_post = folder + 'config.txt' config_post = folder + 'config.txt'
def make_folder(): def make_folder():
if not os.path.exists(folder): os.makedirs(folder, exist_ok=True)
os.makedirs(folder)
def make_config(entry): def make_config(entry):
with open(config_post, 'w+') as e: with open(config_post, 'w+') as e:
@ -132,8 +138,6 @@ def make_sys_wordaround(path):
def yeet_sys(): def yeet_sys():
import babase.modutils as utils import babase.modutils as utils
utils.delete_user_system_scripts() utils.delete_user_system_scripts()
bui.screenmessage('Scripts deleted!',color=(1, 1, 0))
bui.screenmessage('Restart BombSquad to use internal',color=(1, 1, 0))
def copy_internal_packages(path): def copy_internal_packages(path):
copy_dir = folder + path.split('//')[1] copy_dir = folder + path.split('//')[1]
@ -143,11 +147,37 @@ def copy_internal_packages(path):
os.remove(content_zip) os.remove(content_zip)
bui.screenmessage('Copying completed!') bui.screenmessage('Copying completed!')
class reConfirmWindow(ConfirmWindow):
def __init__(self, *args, path, **kwargs):
super().__init__(*args, **kwargs)
self._path = path
def _ok(self) -> None:
if not self.root_widget:
return
bui.containerwidget(
edit=self.root_widget,
transition=(
'out_left'
if self._transition_out is None
else self._transition_out
),
)
if self._action is not None:
self._action(self._path, create_subfolder = True)
def _cancel(self) -> None:
super()._cancel()
if self._action is not None:
self._action(self._path, create_subfolder=False)
# ba_meta export plugin # ba_meta export plugin
class get_logs(babase.Plugin): class get_logs(babase.Plugin):
def __init__(self): def __init__(self):
make_folder() make_folder()
if os.path.exists(log_post):
os.rename(log_post, previous_log_post)
open(log_post, 'w+').close() open(log_post, 'w+').close()
dump_cache_logs() dump_cache_logs()
baenv._EnvGlobals.get().config.log_handler.add_callback(make_logs) baenv._EnvGlobals.get().config.log_handler.add_callback(make_logs)
@ -169,7 +199,8 @@ class system_scripts(babase.Plugin):
return True return True
def show_settings_ui(self, source_widget): def show_settings_ui(self, source_widget):
path = _babase.app.env.python_directory_user +'/sys/'+_babase.app.env.engine_version env = _babase.app.env
path = env.python_directory_user + '/sys/' + env.engine_version + '_' + str(env.engine_build_number)
if not os.path.exists(path): if not os.path.exists(path):
# Old method: # Old method:
# import babase.modutils as utils # import babase.modutils as utils
@ -203,6 +234,56 @@ class internal_packages(babase.Plugin):
threading.Thread(target=copy_internal_packages, args=(path, )).start() threading.Thread(target=copy_internal_packages, args=(path, )).start()
# ba_meta export plugin
class export_logs(babase.Plugin):
def has_settings_ui(self):
return True
def show_settings_ui(self, source_widget):
default_directory = _babase.app.env.python_directory_user
if babase.app.classic.platform == 'android':
default_directory = '/storage/emulated/0/Download/'
reConfirmWindow(height = 120, width = 400, text_scale = 5.5,
text = 'Create a separate BombSquad folder\n inside ' + default_directory + '?',
ok_text = 'Yes, save to folder\nDownload/BombSquad/',
cancel_text = 'No, save directly to\n folder Download/',
action = self.start_export_logs,
path = default_directory)
return
FileSelectorWindow(default_directory,
callback=self.start_export_logs,
show_base_path=True,
allow_folders=True)
def start_export_logs(self, path: str, create_subfolder: bool = False):
if create_subfolder:
path = path + 'BombSquad/'
os.makedirs(path, exist_ok=True)
if os.path.exists(log_post):
with open(path + '/logs.txt', 'w+') as e:
e.write(open(log_post).read())
e.close()
bui.screenmessage('logs.txt saved')
if os.path.exists(previous_log_post):
with open(path + '/logs (previous game launch).txt', 'w+') as e:
e.write(open(previous_log_post).read())
e.close()
bui.screenmessage('logs (previous game launch).txt saved')
# ba_meta export plugin
class version(babase.Plugin):
def has_settings_ui(self):
return True
def show_settings_ui(self, source_widget):
bui.screenmessage('Tested for bs version: ' + __version__)
bui.screenmessage("If you're facing any errors,\nUpdate the plugin: https://github.com/Freaku17/BombSquad-Mods-byFreaku")
return