# ba_meta require api 7 import ba import random from bastd.ui.gather.publictab import PublicGatherTab old_build_join_tab = PublicGatherTab._build_join_tab # ba_meta export ba.Plugin class RandomJoinPlugin(ba.Plugin): def on_app_running(self) -> None: PublicGatherTab._build_join_tab = RandomJoinPlugin.new_build_join_tab def join_random_server(self) -> None: a = set() parties = [] for key, party in self._parties_sorted: parties.append(party) a.add(party.name[:4]) random.choice(list(a)) parties = [p for p in parties if p.name[:4] in a] party = random.choice(parties) ba.internal.connect_to_party(party.address, party.port) def new_build_join_tab(self, region_width: float, region_height: float) -> None: old_build_join_tab(self, region_width, region_height) c_width = region_width c_height = region_height - 20 sub_scroll_height = c_height - 125 sub_scroll_width = 830 v = c_height - 35 v -= 60 filter_txt = ba.Lstr(resource='filterText') self._random_join_button = ba.buttonwidget( parent=self._container, label='guess it', size=(90, 45), position=(750, v + 50), on_activate_call=ba.WeakCall(RandomJoinPlugin.join_random_server, self), ) ba.widget(edit=self._random_join_button, up_widget=self._host_text, left_widget=self._filter_text)