Merge pull request #386 from im-yellow/main

just a new feature for random_join.py :)
This commit is contained in:
Loup 2025-07-18 12:34:19 +05:30 committed by GitHub
commit 0bffcc0a67
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 34 additions and 1 deletions

View file

@ -279,6 +279,12 @@
} }
], ],
"versions": { "versions": {
"1.1.1": {
"api_version": 9,
"commit_sha": "0d6bd1b",
"released_on": "17-07-2025",
"md5sum": "ea9260deb1fbd2b09c756f26434176b8"
},
"1.1.0": { "1.1.0": {
"api_version": 9, "api_version": 9,
"commit_sha": "bb129cc", "commit_sha": "bb129cc",

View file

@ -93,7 +93,8 @@ class NewPublicGatherTab(PublicGatherTab, PingThread):
def _join_random_server(self) -> None: def _join_random_server(self) -> None:
name_prefixes = set() name_prefixes = set()
parties = [p for p in self._get_parties_list() if parties = [p for p in self._get_parties_list() if
(p.size >= randomjoin.minimum_players (randomjoin.party_name_contains in p.name
and p.size >= randomjoin.minimum_players
and p.size < p.size_max and (randomjoin.maximum_ping == 9999 and p.size < p.size_max and (randomjoin.maximum_ping == 9999
or (p.ping is not None or (p.ping is not None
and p.ping <= randomjoin.maximum_ping)))] and p.ping <= randomjoin.maximum_ping)))]
@ -195,6 +196,26 @@ class RandomJoinSettingsPopup(bui.Window):
max_chars=4, max_chars=4,
) )
v -= 60 v -= 60
bui.textwidget(
parent=self._root_widget,
size=(0, 0),
h_align='right',
v_align='center',
text='Party name contains',
maxwidth=c_width * 0.3,
position=(c_width * 0.4, v),
)
self._party_name_contains_edit = bui.textwidget(
parent=self._root_widget,
size=(c_width * 0.3, 40),
h_align='left',
v_align='center',
text=str(randomjoin.party_name_contains),
editable=True,
description='Party name contains your input',
position=(c_width * 0.6, v - 20),
autoselect=True,
)
# Cancel button. # Cancel button.
self.cancel_button = btn = bui.buttonwidget( self.cancel_button = btn = bui.buttonwidget(
@ -239,6 +260,7 @@ class RandomJoinSettingsPopup(bui.Window):
color=(1, 0, 0)) color=(1, 0, 0))
bui.getsound('error').play() bui.getsound('error').play()
errored = True errored = True
party_name_contains = bui.textwidget(query=self._party_name_contains_edit)
if errored: if errored:
return return
@ -264,6 +286,7 @@ class RandomJoinSettingsPopup(bui.Window):
randomjoin.maximum_ping = maximum_ping randomjoin.maximum_ping = maximum_ping
randomjoin.minimum_players = minimum_players randomjoin.minimum_players = minimum_players
randomjoin.party_name_contains = party_name_contains
randomjoin.commit_config() randomjoin.commit_config()
bui.getsound('shieldUp').play() bui.getsound('shieldUp').play()
@ -282,16 +305,19 @@ class RandomJoin:
self.cached_parties: list[PartyEntry] = [] self.cached_parties: list[PartyEntry] = []
self.maximum_ping: int = 9999 self.maximum_ping: int = 9999
self.minimum_players: int = 2 self.minimum_players: int = 2
self.party_name_contains: str = 'FFA @'
self.load_config() self.load_config()
def load_config(self) -> None: def load_config(self) -> None:
cfg = babase.app.config.get('Random Join', { cfg = babase.app.config.get('Random Join', {
'maximum_ping': self.maximum_ping, 'maximum_ping': self.maximum_ping,
'minimum_players': self.minimum_players, 'minimum_players': self.minimum_players,
'party_name_contains': self.party_name_contains,
}) })
try: try:
self.maximum_ping = cfg['maximum_ping'] self.maximum_ping = cfg['maximum_ping']
self.minimum_players = cfg['minimum_players'] self.minimum_players = cfg['minimum_players']
self.party_name_contains = cfg['party_name_contains']
except KeyError: except KeyError:
bui.screenmessage('Error: RandomJoin config is broken, resetting..', bui.screenmessage('Error: RandomJoin config is broken, resetting..',
color=(1, 0, 0), log=True) color=(1, 0, 0), log=True)
@ -302,6 +328,7 @@ class RandomJoin:
babase.app.config['Random Join'] = { babase.app.config['Random Join'] = {
'maximum_ping': self.maximum_ping, 'maximum_ping': self.maximum_ping,
'minimum_players': self.minimum_players, 'minimum_players': self.minimum_players,
'party_name_contains': self.party_name_contains,
} }
babase.app.config.commit() babase.app.config.commit()