mirror of
https://github.com/imayushsaini/Bombsquad-Ballistica-Modded-Server.git
synced 2025-10-20 00:00:39 +00:00
remove unused code
This commit is contained in:
parent
4de315cbc0
commit
60530651e4
2 changed files with 0 additions and 655 deletions
488
dist/ba_root/mods/create_server.py
vendored
488
dist/ba_root/mods/create_server.py
vendored
|
|
@ -1,488 +0,0 @@
|
|||
# ba_meta require api 9
|
||||
"""Functionality related to teams mode score screen."""
|
||||
from __future__ import annotations
|
||||
import threading
|
||||
|
||||
import _bascenev1
|
||||
import bascenev1
|
||||
import yaml
|
||||
import requests
|
||||
import os
|
||||
import tomllib
|
||||
from bascenev1 import DEFAULT_TEAM_NAMES, DEFAULT_TEAM_COLORS, Session
|
||||
from tools.file_handle import OpenJson
|
||||
|
||||
|
||||
from typing import TYPE_CHECKING, Sequence
|
||||
import setting
|
||||
|
||||
import babase
|
||||
import bascenev1 as bs
|
||||
from bascenev1lib.actor.text import Text
|
||||
from bascenev1._activity import Activity
|
||||
if TYPE_CHECKING:
|
||||
from typing import Optional
|
||||
from bascenev1._player import EmptyPlayer # pylint: disable=W0611
|
||||
from bascenev1._team import EmptyTeam # pylint: disable=W0611
|
||||
import _babase
|
||||
from babase._general import Call
|
||||
import _thread
|
||||
import time
|
||||
import urllib.request
|
||||
import json
|
||||
import custom_hooks
|
||||
from plugins import bombsquad_service
|
||||
from playersdata import pdata
|
||||
API = "https://bcs.ballistica.workers.dev"
|
||||
current_settings = setting.get_settings_data()
|
||||
DEFAULT_DATA_PATH = os.path.join(
|
||||
_babase.env()["python_directory_user"], "defaults" + os.sep
|
||||
)
|
||||
SETTINGS_PATH = _babase.env().get("python_directory_user", "") + "/setting.json"
|
||||
PLAYERS_DATA_PATH = os.path.join(
|
||||
_babase.env()["python_directory_user"], "playersdata" + os.sep
|
||||
)
|
||||
|
||||
ip = "unknown"
|
||||
|
||||
|
||||
class CreateServerActivity(Activity[EmptyPlayer, EmptyTeam]):
|
||||
"""Base class for score screens."""
|
||||
|
||||
def __init__(self, settings: dict):
|
||||
super().__init__(settings=settings)
|
||||
self._score_display_sound = bs.getsound('scoreHit01')
|
||||
self._score_display_sound_small = bs.getsound('scoreHit02')
|
||||
|
||||
self._show_up_next: bool = True
|
||||
self._background: Optional[bs.Actor] = None
|
||||
|
||||
def on_transition_in(self) -> None:
|
||||
# pylint: disable=cyclic-import
|
||||
# FIXME: Don't use bascenev1lib from babase.
|
||||
from bascenev1lib.actor import background
|
||||
super().on_transition_in()
|
||||
self._background = background.Background(fade_time=0.5,
|
||||
start_faded=False,
|
||||
show_logo=False)
|
||||
|
||||
def on_begin(self) -> None:
|
||||
super().on_begin()
|
||||
session = self.session
|
||||
if self._show_up_next and isinstance(session, bs.MultiTeamSession):
|
||||
txt = "create free server now"
|
||||
Text(txt,
|
||||
maxwidth=900,
|
||||
h_attach=Text.HAttach.CENTER,
|
||||
v_attach=Text.VAttach.BOTTOM,
|
||||
h_align=Text.HAlign.CENTER,
|
||||
v_align=Text.VAlign.CENTER,
|
||||
position=(0, 53),
|
||||
flash=False,
|
||||
color=(0.3, 0.3, 0.35, 1.0),
|
||||
transition=Text.Transition.FADE_IN,
|
||||
transition_delay=2.0).autoretain()
|
||||
# self.add_instructions()
|
||||
# self.add_variables_placeholders()
|
||||
self.add_credits()
|
||||
self.add_promotion()
|
||||
|
||||
def add_promotion(self):
|
||||
self.heading = bs.newnode('text', attrs={'text': "CREATE FREE SERVER",
|
||||
'position': (0, -90),
|
||||
'h_align': 'center',
|
||||
'v_attach': 'top',
|
||||
'h_attach': 'center',
|
||||
'scale': 2
|
||||
|
||||
})
|
||||
self.h = bs.newnode('text', attrs={'text': "Youtube : Hey Smoothy \nDiscord : https://discord.gg/ucyaesh\nWeb : https://bombsquad-community.web.app",
|
||||
'position': (-520, -100),
|
||||
'color': (0.7, 0.6, 0.5),
|
||||
'h_attach': 'right'
|
||||
})
|
||||
self.start_h = bs.newnode('text', attrs={'text': "Type passcode to start your server \ngenerate your passcode from discord server",
|
||||
'position': (0, -220),
|
||||
'scale': 1.3,
|
||||
'color': (0.3, 0.7, 0.4),
|
||||
'h_align': 'center',
|
||||
'v_attach': 'top',
|
||||
'h_attach': 'center',
|
||||
})
|
||||
self.ipport = bs.newnode('text', attrs={'text': "IP:"+ip+" PORT:"+str(bs.get_game_port()),
|
||||
'position': (0, -160),
|
||||
'scale': 1,
|
||||
'color': (0.7, 0.7, 0.4),
|
||||
'h_align': 'center',
|
||||
'v_attach': 'top',
|
||||
'h_attach': 'center',
|
||||
})
|
||||
|
||||
def add_credits(self):
|
||||
self.h = bs.newnode('text', attrs={'text': "By : BCS Community",
|
||||
'position': (80, -200),
|
||||
|
||||
'h_attach': 'left'
|
||||
})
|
||||
self.NAMES = bs.newnode('text', attrs={'text': "Contributors : Mr.Smoothy, Rikko, Doffy, Snowee, Freaku, NK2, \n "
|
||||
+"Vishuu, Loupie, brostos , Brother board and more ..",
|
||||
'position': (80, -240),
|
||||
|
||||
'h_attach': 'left'
|
||||
})
|
||||
self.note = bs.newnode('text', attrs={'text': "*Note: Server will restart after configuration, rejoin back.",
|
||||
'position': (80, -320),
|
||||
|
||||
'h_attach': 'left'
|
||||
})
|
||||
|
||||
def add_instructions(self):
|
||||
|
||||
self.server_name_heading = bs.newnode('text', attrs={'text': "Party Name:",
|
||||
'position': (80, 180),
|
||||
'color': (1, 0.4, 0.4),
|
||||
'h_attach': 'left'
|
||||
})
|
||||
self.server_name_instructions = bs.newnode('text', attrs={'text': "eg: /setname pro boxing FFA",
|
||||
'position': (80, 150),
|
||||
'color': (1, 1, 0),
|
||||
'h_attach': 'left'
|
||||
})
|
||||
self.playlist_heading = bs.newnode('text', attrs={'text': "Playlist:",
|
||||
'position': (80, 80),
|
||||
'color': (1, 0.4, 0.4),
|
||||
'h_attach': 'left'
|
||||
})
|
||||
self.playlist_instructions = bs.newnode('text', attrs={'text': "eg: /setplaylist 34234",
|
||||
'position': (80, 50),
|
||||
'color': (1, 1, 0),
|
||||
'h_attach': 'left'
|
||||
})
|
||||
self.size_heading = bs.newnode('text', attrs={'text': "Party Size:",
|
||||
'position': (80, -20),
|
||||
'color': (1, 0.4, 0.4),
|
||||
'h_attach': 'left'
|
||||
})
|
||||
self.size_instructions = bs.newnode('text', attrs={'text': "eg: /setsize 8",
|
||||
'position': (80, -50),
|
||||
'color': (1, 1, 0),
|
||||
'h_attach': 'left'
|
||||
})
|
||||
|
||||
def add_variables_placeholders(self):
|
||||
self.server_name = bs.newnode('text', attrs={'text': "pro boxing FFA",
|
||||
'position': (250, 180),
|
||||
'color': (0.4, 1, 0.4),
|
||||
'h_attach': 'left'
|
||||
})
|
||||
self.playlist_code = bs.newnode('text', attrs={'text': "12345",
|
||||
'position': (250, 80),
|
||||
'color': (0.4, 1, 0.4),
|
||||
'h_attach': 'left'
|
||||
})
|
||||
self.part_size = bs.newnode('text', attrs={'text': "8",
|
||||
'position': (250, -20),
|
||||
'color': (0.4, 1, 0.4),
|
||||
'h_attach': 'left'
|
||||
})
|
||||
|
||||
def show_player_scores(self,
|
||||
delay: float = 2.5,
|
||||
results: Optional[bs.GameResults] = None,
|
||||
scale: float = 1.0,
|
||||
x_offset: float = 0.0,
|
||||
y_offset: float = 0.0) -> None:
|
||||
"""Show scores for individual players."""
|
||||
# pylint: disable=too-many-locals
|
||||
# pylint: disable=too-many-statements
|
||||
|
||||
pass
|
||||
|
||||
|
||||
# ============= session ======================
|
||||
|
||||
|
||||
class createServerSession(Session):
|
||||
def __init__(self) -> None:
|
||||
"""Set up playlists and launches a babase.Activity to accept joiners."""
|
||||
# pylint: disable=cyclic-import
|
||||
|
||||
app = _babase.app
|
||||
cfg = app.config
|
||||
|
||||
if self.use_teams:
|
||||
team_names = cfg.get('Custom Team Names', DEFAULT_TEAM_NAMES)
|
||||
team_colors = cfg.get('Custom Team Colors', DEFAULT_TEAM_COLORS)
|
||||
else:
|
||||
team_names = None
|
||||
team_colors = None
|
||||
|
||||
# print('FIXME: TEAM BASE SESSION WOULD CALC DEPS.')
|
||||
depsets: Sequence[bascenev1.DependencySet] = []
|
||||
|
||||
super().__init__(depsets,
|
||||
team_names=team_names,
|
||||
team_colors=team_colors,
|
||||
min_players=1,
|
||||
max_players=self.get_max_players())
|
||||
|
||||
self.setactivity(bs.newactivity(CreateServerActivity))
|
||||
|
||||
def on_player_request(self, player: bs.SessionPlayer):
|
||||
|
||||
return False
|
||||
|
||||
def get_max_players(self) -> int:
|
||||
return 3
|
||||
|
||||
|
||||
def update_ip():
|
||||
global ip
|
||||
try:
|
||||
r = urllib.request.urlopen("https://api.ipify.org/?format=json")
|
||||
ip = json.loads(r.read())["ip"]
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
req = urllib.request.Request(
|
||||
f'{API}/serveravailable')
|
||||
req.add_header('servername', ip+":"+str(bs.get_game_port()))
|
||||
f = urllib.request.urlopen(req, data=urllib.parse.urlencode({
|
||||
"nothing": "nothing"}).encode())
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
def validate(display_string, pbid, passcode):
|
||||
try:
|
||||
req = urllib.request.Request(
|
||||
f'{API}/verifypasscode')
|
||||
req.add_header('passcode', passcode)
|
||||
# req.add_header('servername', str(server_name_v.encode('utf-8'))+f' {ip} {str(bs.get_game_port())}')
|
||||
# req.add_header("playerid", str(owner["name"].encode('utf-8'))+" - "+ owner["id"])
|
||||
print("sending request to master server with passcode "+passcode)
|
||||
f = requests.post(f'{API}/verifypasscode', json={
|
||||
"servername": f'{display_string} {ip} {str(bs.get_game_port())}',
|
||||
"playerid": pbid,
|
||||
}, headers={'passcode': passcode})
|
||||
|
||||
rescode = f.status_code
|
||||
if rescode == 200:
|
||||
json_response = f.json()
|
||||
return json_response["password"]
|
||||
return None
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return None
|
||||
|
||||
|
||||
def get_server_api():
|
||||
try:
|
||||
print("making request to get api")
|
||||
f = requests.post(f'{API}/getapi', json={
|
||||
"address": f'{ip}:{str(bs.get_game_port())}',
|
||||
})
|
||||
if f.status_code == 200:
|
||||
api_link = f.text
|
||||
return f'https://imayushsaini.github.io/ballistica-ui/?api={api_link}'
|
||||
else:
|
||||
return 'https://discord.gg/ucyaesh'
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return 'https://discord.gg/ucyaesh'
|
||||
|
||||
|
||||
def reset_server():
|
||||
bs.set_public_party_max_size(3)
|
||||
_bascenev1.set_public_party_name("CREATE FREE SERVER")
|
||||
_bascenev1.set_public_party_stats_url('https://discord.gg/ucyaesh')
|
||||
update_ip()
|
||||
babase.pushcall(Call(bs.new_host_session, createServerSession))
|
||||
resetProfiles()
|
||||
|
||||
|
||||
def resetProfiles():
|
||||
# clear cache , update files , load files
|
||||
pdata.CacheData.custom = {}
|
||||
pdata.CacheData.roles = {}
|
||||
pdata.CacheData.blacklist = {}
|
||||
pdata.CacheData.profiles = {}
|
||||
print("starting profiles reset")
|
||||
with OpenJson(PLAYERS_DATA_PATH + "profiles.json") as profiles_file:
|
||||
profiles_file.dump(profiles, indent=4)
|
||||
pdata.get_profiles()
|
||||
with OpenJson(PLAYERS_DATA_PATH + "custom.json") as custom_file:
|
||||
custom_file.dump(custom, indent=4)
|
||||
pdata.get_custom()
|
||||
with OpenJson(PLAYERS_DATA_PATH + "roles.json") as roles_file:
|
||||
roles_file.dump(roles, indent=4)
|
||||
pdata.get_roles()
|
||||
with OpenJson(PLAYERS_DATA_PATH + "blacklist.json") as roles_file:
|
||||
roles_file.dump(blacklist, indent=4)
|
||||
pdata.get_blacklist()
|
||||
with OpenJson(SETTINGS_PATH) as settings_file:
|
||||
settings_file.dump(default_settings, indent=4)
|
||||
print("SERVER reset done")
|
||||
|
||||
|
||||
def start(display_string, pbid, passcode):
|
||||
print("lets start")
|
||||
password = validate(display_string, pbid, passcode)
|
||||
|
||||
if not password:
|
||||
bs.chatmessage("Invalid passcode , or passcode expired")
|
||||
bs.chatmessage('get new passcode from discord server')
|
||||
return
|
||||
else:
|
||||
print("got password"+password)
|
||||
server_name = f'{display_string} \'s Server'
|
||||
|
||||
bs.get_foreground_host_session().end()
|
||||
|
||||
# _thread.start_new_thread(withDelay, (DualTeamSession,))
|
||||
_bascenev1.set_admins(pbid)
|
||||
|
||||
bs.chatmessage("Your server is nearly ready")
|
||||
bs.chatmessage(f"Server Name: {display_string}'s Server")
|
||||
bs.chatmessage("IP:"+ip + " PORT:"+str(bs.get_game_port()))
|
||||
bs.chatmessage("configuring your server.....")
|
||||
bs.chatmessage(
|
||||
"server will restart after configuration, hold on and join back")
|
||||
print("get server ready ...............")
|
||||
_thread.start_new_thread(get_server_ready, (password, server_name, pbid,))
|
||||
|
||||
|
||||
def get_server_ready(password, server_name, owner_id):
|
||||
save_new_password(password)
|
||||
pdata.CacheData.roles["owner"]["ids"].append(owner_id)
|
||||
with OpenJson(PLAYERS_DATA_PATH + "roles.json") as roles_file:
|
||||
roles_file.dump(pdata.CacheData.roles, indent=4)
|
||||
print(" player role cache dumped")
|
||||
# update server name at last , as it will restart server.
|
||||
server_config = default_config
|
||||
server_config["party_name"] = server_name
|
||||
# stats_url = get_server_api()
|
||||
# server_config['stats_url'] = stats_url custom_hooks will add stats url is we service enabled
|
||||
bombsquad_service.update_server_config(server_config)
|
||||
|
||||
|
||||
def save_new_password(password: str):
|
||||
current_settings["ballistica_web"]["server_password"] = password
|
||||
bombsquad_service.update_server_settings(current_settings)
|
||||
print("new server password saved in settings")
|
||||
|
||||
|
||||
def exit_server():
|
||||
bs.chatmessage("Time Up , create new server ")
|
||||
bs.chatmessage("Join discord , https://discord.gg/ucyaesh")
|
||||
_babase.quit()
|
||||
|
||||
|
||||
org_filter_chat = custom_hooks.filter_chat_message
|
||||
|
||||
|
||||
def newFilterChat(msg, clientid):
|
||||
chat_parse(msg, clientid)
|
||||
return org_filter_chat(msg, clientid)
|
||||
|
||||
|
||||
custom_hooks.filter_chat_message = newFilterChat
|
||||
|
||||
|
||||
def chat_parse(msg: str, client_id):
|
||||
if bs.get_foreground_host_activity().__class__.__name__ == "CreateServerActivity":
|
||||
act = bs.get_foreground_host_activity()
|
||||
if msg.isdigit():
|
||||
for ros in bs.get_game_roster():
|
||||
if ros['client_id'] == client_id:
|
||||
display_string = ros['display_string']
|
||||
account_id = ros["account_id"]
|
||||
start(display_string, account_id, msg.strip())
|
||||
else:
|
||||
print("message is not a valid digit"+str(msg))
|
||||
|
||||
|
||||
# mgr.cmd("import _babase,ba;from createServer import createServerSession;bs.new_host_session(createServerSession)")
|
||||
# babase._servermanager me createServer.reset_server()
|
||||
# settings.json
|
||||
# disable /ban command
|
||||
# reset complete profiles.json / and other json
|
||||
# increase server exit time to 160
|
||||
# disable ideal kick
|
||||
roles = {}
|
||||
custom = {}
|
||||
profiles = {}
|
||||
blacklist = {}
|
||||
default_settings = {}
|
||||
default_config = {}
|
||||
|
||||
|
||||
def load_defaults():
|
||||
global roles
|
||||
global custom
|
||||
global profiles
|
||||
global blacklist
|
||||
global default_settings
|
||||
global default_config
|
||||
print("loading default configuration")
|
||||
with open(DEFAULT_DATA_PATH + "profiles.json", "r") as f:
|
||||
profiles = json.load(f)
|
||||
with open(DEFAULT_DATA_PATH + "roles.json", "r") as f:
|
||||
roles = json.load(f)
|
||||
with open(DEFAULT_DATA_PATH + "blacklist.json", "r") as f:
|
||||
blacklist = json.load(f)
|
||||
with open(DEFAULT_DATA_PATH + "custom.json", "r") as f:
|
||||
custom = json.load(f)
|
||||
with open(DEFAULT_DATA_PATH + "settings.json", "r") as f:
|
||||
default_settings = json.load(f)
|
||||
with open(DEFAULT_DATA_PATH + "config.toml", "rb") as f:
|
||||
default_config = tomllib.load(f)
|
||||
|
||||
|
||||
# ba_meta export plugin
|
||||
class EntryPoint(babase.Plugin):
|
||||
|
||||
def on_app_running(self) -> None:
|
||||
self.t0 = bs.AppTimer(30, babase.Call(self.check_remaining_time))
|
||||
self.t1 = bs.AppTimer(60 * 30, babase.Call(self.check_remaining_time),
|
||||
repeat=True)
|
||||
|
||||
def get_remaining_time(self, server_key: str, callback):
|
||||
try:
|
||||
print("making request to get passcode")
|
||||
f = requests.post(f'{API}/getpasscode', json={
|
||||
"token": server_key,
|
||||
})
|
||||
if f.status_code == 200:
|
||||
json_response = f.json()
|
||||
print(json_response)
|
||||
callback(json_response["minutesLeft"])
|
||||
elif f.status_code == 403:
|
||||
print("got 403 response means 0")
|
||||
callback(0)
|
||||
else:
|
||||
print("fallback to 60")
|
||||
callback(60)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
callback(60)
|
||||
|
||||
def on_response(self, duration: float):
|
||||
print(duration)
|
||||
if duration <= 0:
|
||||
print("duration less then 0, resetting server")
|
||||
load_defaults() # multithread me please
|
||||
print("load default done")
|
||||
time.sleep(4)
|
||||
babase.pushcall(
|
||||
babase.Call(
|
||||
reset_server
|
||||
),
|
||||
from_other_thread=True,
|
||||
)
|
||||
|
||||
def check_remaining_time(self):
|
||||
if bs.get_foreground_host_activity().__class__.__name__ != "CreateServerActivity":
|
||||
t = threading.Thread(target=self.get_remaining_time, args=(
|
||||
current_settings["ballistica_web"]["server_password"], self.on_response))
|
||||
t.start()
|
||||
167
dist/ba_root/mods/port.py
vendored
167
dist/ba_root/mods/port.py
vendored
|
|
@ -1,167 +0,0 @@
|
|||
# Usage: port_7_to_8.py <plugin-name> <client/server type of mod>
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
|
||||
def port(file_path):
|
||||
with open(file_path, "rb") as fin:
|
||||
print("Porting " + os.path.basename(file_path))
|
||||
content = fin.read().decode("utf-8")
|
||||
if "# ba_meta require api 8" in content:
|
||||
return
|
||||
content = content.replace("# ba_meta require api 7",
|
||||
"# ba_meta require api 8")
|
||||
content = content.replace("# ba_meta export game",
|
||||
"# ba_meta export bascenev1.GameActivity")
|
||||
|
||||
content = content.replace("user_agent_string", "legacy_user_agent_string")
|
||||
content = content.replace("_ba.", "_babase.")
|
||||
content = content.replace("_ba.", "_babase.")
|
||||
content = content.replace("ba.", "babase.")
|
||||
content = content.replace("import _ba\n", "import _babase")
|
||||
content = re.sub(r'\bimport _ba\b', "import _babase", content)
|
||||
content = re.sub(r'\bimport ba(\b|\.(\w+))',
|
||||
"import babase\nimport bauiv1 as bui\nimport bascenev1 as bs",
|
||||
content)
|
||||
content = content.replace("babase.app.ui", "bui.app.ui_v1")
|
||||
content = content.replace("babase.app.accounts_v1",
|
||||
"bui.app.classic.accounts")
|
||||
|
||||
###################################################################################
|
||||
# Comment out one of these as per your requirements, depending whether to
|
||||
# stay local or if it'll also be needed to transmitted to the clients.
|
||||
|
||||
## For local:
|
||||
if bool(False):
|
||||
content = content.replace("_babase.screenmessage", "bui.screenmessage")
|
||||
content = content.replace("babase.screenmessage", "bui.screenmessage")
|
||||
content = content.replace("babase.getsound", "bui.getsound")
|
||||
content = content.replace("babase.gettexture", "bui.gettexture")
|
||||
content = content.replace("babase.getmesh", "bui.getmesh")
|
||||
content = content.replace("babase.getcollisionmesh",
|
||||
"bui.getcollisionmesh")
|
||||
else:
|
||||
## For transmission:
|
||||
content = content.replace("babase.screenmessage", "bs.broadcastmessage")
|
||||
content = content.replace("babase.getsound", "bs.getsound")
|
||||
content = content.replace("babase.getmesh", "bs.getmesh")
|
||||
content = content.replace("babase.getcollisionmesh",
|
||||
"bs.getcollisionmesh")
|
||||
###################################################################################
|
||||
content = content.replace("babase.open_url", "bui.open_url")
|
||||
content = content.replace("babase.IntSetting", "bs.IntSetting")
|
||||
content = content.replace("babase.IntChoiceSetting", "bs.IntChoiceSetting")
|
||||
content = content.replace("babase.FloatChoiceSetting",
|
||||
"bs.FloatChoiceSetting")
|
||||
content = content.replace("babase.BoolSetting", "bs.BoolSetting")
|
||||
content = content.replace("babase.Actor", "bs.Actor")
|
||||
content = content.replace("babase.Player", "bs.Player")
|
||||
content = content.replace("babase.PlayerDiedMessage",
|
||||
"bs.PlayerDiedMessage")
|
||||
content = content.replace("babase.time", "bs.time")
|
||||
content = content.replace("babase.Timer", "bs.Timer")
|
||||
content = content.replace("babase.newnode", "bs.newnode")
|
||||
content = content.replace("babase.Node", "bs.Node")
|
||||
content = content.replace("babase.emitfx", "bs.emitfx")
|
||||
content = content.replace("babase.animate", "bs.animate")
|
||||
content = content.replace("babase.FreeForAllSession",
|
||||
"bs.FreeForAllSession")
|
||||
content = content.replace("babase.DualTeamSession", "bs.DualTeamSession")
|
||||
content = content.replace("babase.MultiTeamSession", "bs.MultiTeamSession")
|
||||
content = content.replace("babase.TeamGameActivity", "bs.TeamGameActivity")
|
||||
content = content.replace("babase.Team", "bs.Team")
|
||||
content = content.replace("babase.Session", "bs.Session")
|
||||
content = content.replace("babase.Material", "bs.Material")
|
||||
content = content.replace("babase.WeakCall", "bs.WeakCall")
|
||||
content = content.replace("babase.DieMessage", "bs.DieMessage")
|
||||
content = content.replace("babase.OutOfBoundsMessage",
|
||||
"bs.OutOfBoundsMessage")
|
||||
content = content.replace("babase.DroppedMessage", "bs.DroppedMessage")
|
||||
content = content.replace("babase.HitMessage", "bs.HitMessage")
|
||||
content = content.replace("babase.NotFoundError", "bs.NotFoundError")
|
||||
content = content.replace("babase.getcollision", "bs.getcollision")
|
||||
content = content.replace("babase.app.lang", "bs.app.lang")
|
||||
content = content.replace("babase.MusicType", "bs.MusicType")
|
||||
content = content.replace("babase.gettexture", "bs.gettexture")
|
||||
content = content.replace("babase.getactivity", "bs.getactivity")
|
||||
content = content.replace("babase.getactivity", "bs.getactivity")
|
||||
content = content.replace("babase.CelebrateMessage", "bs.CelebrateMessage")
|
||||
content = content.replace("babase.ScoreConfig", "bs.ScoreConfig")
|
||||
content = content.replace("babase.ScoreType", "bs.ScoreType")
|
||||
content = content.replace("babase.GameResults", "bs.GameResults")
|
||||
content = content.replace("babase.getmaps", "bs.app.classic.getmaps")
|
||||
content = content.replace("babase.cameraflash", "bs.cameraflash")
|
||||
content = content.replace("babase.getmodel", "bs.getmesh")
|
||||
content = content.replace("model", "mesh")
|
||||
|
||||
content = content.replace("babase.Window", "bui.Window")
|
||||
content = content.replace("babase.Widget", "bui.Widget")
|
||||
content = content.replace("babase.widget", "bui.widget")
|
||||
content = content.replace("babase.containerwidget", "bui.containerwidget")
|
||||
content = content.replace("babase.scrollwidget", "bui.scrollwidget")
|
||||
content = content.replace("babase.buttonwidget", "bui.buttonwidget")
|
||||
content = content.replace("babase.textwidget", "bui.textwidget")
|
||||
content = content.replace("babase.checkboxwidget", "bui.checkboxwidget")
|
||||
content = content.replace("babase.imagewidget", "bui.imagewidget")
|
||||
content = content.replace("_bui", "bui")
|
||||
# Converting `ba.playsound(abc)` to `abc.play()` is tricky.
|
||||
# Do it manually in case regex substitution fails.
|
||||
content = re.sub(
|
||||
r'babase\.playsound\(\s*([^,\n]+),\s*([^,\n]+),\s*position=([^,\n]+)\)',
|
||||
r'\1.play(\2, position=\3)',
|
||||
content,
|
||||
flags=re.MULTILINE
|
||||
)
|
||||
content = re.sub("babase\.playsound\((.+?), (.+?), (.+?)\)",
|
||||
"\\1.play(\\2, \\3)", content)
|
||||
content = re.sub(
|
||||
r'babase\.playsound\(([^,\n]+),\s*position=([^,\n]+)\)',
|
||||
r'\1.play(position=\2)',
|
||||
content
|
||||
)
|
||||
content = re.sub("babase\.playsound\((.*)\)", "\\1.play()", content)
|
||||
|
||||
content = content.replace("babase.internal.add_transaction",
|
||||
"bui.app.plus.add_v1_account_transaction")
|
||||
content = content.replace("babase.internal.run_transaction",
|
||||
"bui.app.plus.run_v1_account_transaction")
|
||||
content = content.replace("_babase.add_transaction",
|
||||
"bui.app.plus.add_v1_account_transaction")
|
||||
content = content.replace("_babase.run_transactions",
|
||||
"bui.app.plus.run_v1_account_transactions")
|
||||
content = content.replace("_babase.InputType", "babase.InputType")
|
||||
content = content.replace("bastd.ui", "bauiv1lib")
|
||||
content = content.replace("bastd", "bascenev1lib")
|
||||
content = content.replace("timetype=", "")
|
||||
content = content.replace("babase.columnwidget", "bui.columnwidget")
|
||||
content = content.replace("_babase.get_chat_messages",
|
||||
"bs.get_chat_messages")
|
||||
content = content.replace("_babase.get_foreground_host_session",
|
||||
"bs.get_foreground_host_session")
|
||||
content = re.sub(r'bs\.Timer\(([^)]*)\bTimeType\.REAL\b([^)]*)\)',
|
||||
r'babase.AppTimer(\1\2)', content)
|
||||
print("Done porting to API 8 " + os.path.basename(file_path))
|
||||
with open(file_path, "w") as f:
|
||||
f.write(content)
|
||||
|
||||
|
||||
def list_python_files(directory='.'):
|
||||
python_files = []
|
||||
|
||||
for dirpath, dirnames, filenames in os.walk(directory):
|
||||
for filename in filenames:
|
||||
if filename.endswith('.py'):
|
||||
python_files.append(os.path.join(dirpath, filename))
|
||||
|
||||
return python_files
|
||||
|
||||
|
||||
def start():
|
||||
current_directory = os.getcwd()
|
||||
py_files = list_python_files(current_directory)
|
||||
for file in py_files:
|
||||
port(file)
|
||||
|
||||
|
||||
start()
|
||||
Loading…
Add table
Add a link
Reference in a new issue