Ejemplo n.º 1
0
 def __init__(self, cog_h, engine, orb):
     self.cog_h = cog_h
     self.engine = engine
     self.orb = orb
     #
     self.track_prime_console = orb.track(TrackPrimeConsole)
     #
     self.rail_menu = RailMenu()
Ejemplo n.º 2
0
class CogToMenu:
    def __init__(self, cog_h, engine, orb):
        self.cog_h = cog_h
        self.engine = engine
        self.orb = orb
        #
        self.track_prime_console = orb.track(TrackPrimeConsole)
        #
        self.rail_menu = RailMenu()

    def on_init(self):
        console_type = self.track_prime_console.console_type
        height = self.track_prime_console.height
        width = self.track_prime_console.width
        #
        rail_h = '%s/menu' % (self.cog_h)
        self.rail_menu.zero(
            rail_h=rail_h,
            cb_menu_selection=self.cb_menu_selection,
            cb_menu_asks_display_to_clear=self.cb_menu_asks_display_to_clear,
            cb_menu_asks_display_to_write=self.cb_menu_asks_display_to_write,
            height=self.track_prime_console.height,
            width=self.track_prime_console.width,
            title=APP_NAME)
        self.rail_menu.add_menu_item(menu_keycode=MENU_KEYCODE_NEW_GAME,
                                     text='new game')
        self.rail_menu.add_menu_item(menu_keycode=MENU_KEYCODE_QUIT,
                                     text='quit')
        self.nearcast.menu_focus()

    def on_menu_focus(self):
        self.rail_menu.render_menu()

    def on_menu_select(self, menu_keycode):
        d = {
            MENU_KEYCODE_NEW_GAME: self._mi_new_game,
            MENU_KEYCODE_CONTINUE: self._mi_continue,
            MENU_KEYCODE_QUIT: self._mi_quit
        }
        if menu_keycode not in d:
            return
        fn = d[menu_keycode]
        fn()

    def on_game_new(self):
        if not self.rail_menu.has_menu_keycode(MENU_KEYCODE_CONTINUE):
            self.rail_menu.add_menu_item(menu_keycode=MENU_KEYCODE_CONTINUE,
                                         text='continue')

    #
    def cb_menu_selection(self, cs_menu_selection):
        rail_h = cs_menu_selection.rail_h
        keycode = cs_menu_selection.keycode
        #
        self.nearcast.menu_select(menu_keycode=keycode)

    def cb_menu_asks_display_to_clear(self, cs_menu_asks_display_to_clear):
        rail_h = cs_menu_asks_display_to_clear.rail_h
        #
        self.nearcast.term_clear()

    def cb_menu_asks_display_to_write(self, cs_menu_asks_display_to_write):
        rail_h = cs_menu_asks_display_to_write.rail_h
        drop = cs_menu_asks_display_to_write.drop
        rest = cs_menu_asks_display_to_write.rest
        s = cs_menu_asks_display_to_write.s
        #
        self.nearcast.term_write(drop=drop,
                                 rest=rest,
                                 s=s,
                                 cpair=solent_cpair('blue'))

    #
    def _mi_new_game(self):
        self.nearcast.game_new()
        self.nearcast.game_focus()

    def _mi_continue(self):
        self.nearcast.game_focus()

    def _mi_quit(self):
        raise SolentQuitException()