Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
    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