class MainMenu(object): def __init__(self, framework: ShowBase): self.f = framework self.main_frame = DirectFrame(frameSize=(self.f.a2dLeft, self.f.a2dRight, self.f.a2dBottom, self.f.a2dTop)) self.main_frame.set_transparency(1) self.title = DirectLabel(scale=0.2, pos=(0, 0, self.f.a2dTop - 0.25), frameColor=(0, 0, 0, 0), text="Battle Tank", text_fg=(0, 0, 0, 1)) self.title.set_transparency(1) self.title.reparent_to(self.main_frame) self.btn_start = self.create_btn("Start", 0.12, [settings.START_GAME_DRIVER]) self.btn_quit = self.create_btn("Quit", -0.12, [settings.QUIT_GAME_DRIVER]) self.hide() def create_btn(self, label, v_position, event_args): maps = self.f.loader.loadModel(settings.ass / "button_map") geom = (maps.find("**/btn_ready"), maps.find("**/btn_click"), maps.find("**/btn_rollover"), maps.find("**/btn_disabled")) btn = DirectButton(text=label, text_fg=(0, 0, 0, 1), text_scale=0.05, text_pos=(0.02, -0.015), text_align=TextNode.ALeft, scale=2, pos=(self.f.a2dLeft + 0.2, 0, v_position), geom=geom, relief=0, frameColor=(0, 0, 0, 0), command=self.f.messenger.send, extraArgs=event_args, pressEffect=False, rolloverSound=None, clickSound=None) btn.reparent_to(self.main_frame) return btn def show(self): self.main_frame.show() def hide(self): self.main_frame.hide() def hide_start_btn(self): self.btn_start.hide()
def __init__(self): self._weapon_buts = {} self._turn_snd = loader.loadSfx( # noqa: F821 "sounds/train/railroad_switch.ogg" ) frame = DirectFrame( parent=base.a2dBottomRight, # noqa: F821 frameSize=(-0.09, 0.09, -0.28, 0.28), pos=(-0.09, 0, 0.28), frameTexture=GUI_PIC + "metal1.png", ) frame.setTransparency(TransparencyAttrib.MAlpha) DirectFrame( # an icon for the locomotive durability parent=frame, frameSize=(-0.023, 0.023, -0.023, 0.023), pos=(0.05, 0, 0.24), frameTexture=GUI_PIC + "train.png", ).setTransparency(TransparencyAttrib.MAlpha) DirectFrame( # an icon for the locomotive speed parent=frame, frameSize=(-0.028, 0.028, -0.023, 0.023), pos=(-0.012, 0, 0.24), frameTexture=GUI_PIC + "speed.png", ).setTransparency(TransparencyAttrib.MAlpha) self._durability = DirectWaitBar( parent=frame, frameSize=(-0.225, 0.225, -0.002, 0.002), frameColor=(0.35, 0.35, 0.35, 1), range=1000, value=1000, barColor=(0.42, 0.42, 0.8, 1), pos=(0.05, 0, -0.025), ) self._durability.setR(-90) self._speed = DirectWaitBar( parent=frame, frameSize=(-0.225, 0.225, -0.002, 0.002), frameColor=(0.35, 0.35, 0.35, 1), range=1, value=1, barColor=(1, 0.63, 0, 0.6), pos=(-0.012, 0, -0.025), ) self._speed.setR(-90) DirectLabel( # speed gauge scale parent=frame, pos=(-0.05, 0, 0.19), frameSize=(-0.25, 0.25, -0.01, 0.01), frameColor=(0, 0, 0, 0), text="40-\n\n-\n\n-\n\n-\n\n20-\n\n-\n\n-\n\n-\n\n0-", text_scale=0.028, text_fg=SILVER_COL, ) frame_miles = DirectFrame( frameSize=(-0.115, 0.115, -0.06, 0.05), pos=(0, 0, -0.95), frameTexture=GUI_PIC + "metal1.png", sortOrder=-1, ) frame_miles.set_transparency(TransparencyAttrib.MAlpha) but = DirectButton( parent=frame_miles, frameSize=(-0.015, 0.015, -0.025, 0.025), frameTexture=GUI_PIC + "grenade.png", pos=(-0.075, 0, 0.015), relief="flat", ) but.setTransparency(TransparencyAttrib.MAlpha) but.bind(DGG.ENTER, self._highlight_weapon_but, extraArgs=[but]) but.bind(DGG.EXIT, self._dehighlight_weapon_but, extraArgs=[but]) self._weapon_buts["Grenade Launcher"] = { "but": but, "reload_step": 0, "dis_command": None, "reloading_len": 13, "frame": DirectFrame( parent=frame_miles, frameColor=(0, 0, 0, 0.25), pos=(-0.075, 0, -0.01), frameSize=(-0.013, 0.013, 0, 0.05), ), } but = DirectButton( parent=frame_miles, frameSize=(-0.015, 0.015, -0.025, 0.025), frameTexture=GUI_PIC + "machine_gun.png", pos=(0, 0, 0.015), relief="flat", ) but.setTransparency(TransparencyAttrib.MAlpha) but.bind(DGG.ENTER, self._highlight_weapon_but, extraArgs=[but]) but.bind(DGG.EXIT, self._dehighlight_weapon_but, extraArgs=[but]) self._weapon_buts["Machine Gun"] = { "but": but, "reload_step": 0, "dis_command": None, "reloading_len": 22, "frame": DirectFrame( parent=frame_miles, frameColor=(0, 0, 0, 0.25), pos=(0, 0, -0.01), frameSize=(-0.013, 0.013, 0, 0.05), ), } but = DirectButton( parent=frame_miles, frameSize=(-0.015, 0.015, -0.025, 0.025), frameTexture=GUI_PIC + "cluster_rocket.png", pos=(0.075, 0, 0.015), relief="flat", ) but.setTransparency(TransparencyAttrib.MAlpha) but.bind(DGG.ENTER, self._highlight_weapon_but, extraArgs=[but]) but.bind(DGG.EXIT, self._dehighlight_weapon_but, extraArgs=[but]) self._weapon_buts["Cluster Howitzer"] = { "but": but, "reload_step": 0, "dis_command": None, "reloading_len": 45, "frame": DirectFrame( parent=frame_miles, frameColor=(0, 0, 0, 0.25), pos=(0.075, 0, -0.01), frameSize=(-0.013, 0.013, 0, 0.05), ), } self._miles_meter = DirectLabel( parent=frame_miles, text="0000000", text_font=base.main_font, # noqa: F821 frameSize=(0.1, 0.1, 0.15, 0.15), text_scale=(0.033, 0.031), text_fg=RUST_COL, pos=(0, 0, -0.04), ) taskMgr.doMethodLater( # noqa: F821 0.25, self._update_speed, "update_speed_indicator" ) self._fork_lab = None