Beispiel #1
0
 def add(type, img):
     # spacing here are hard-coded so the layout breaks when font is changed
     img = img.scale((30, 45))
     line = ui.HorizontalLayoutWidget()
     img_l = ui.LinearLayoutWidget()
     img_l.add(ui.Image(img))
     img_l.add(ui.Spacing(0, 6))
     line.add(img_l)
     if type != 0:
         line.add(ui.Spacing(10, 0))
         w = 40
         line.add(
             ui.Button(' - ',
                       functools.partial(change, type, -1),
                       font=font,
                       force_width=w))
         line.add(ui.Spacing(10, 0))
         line.add(
             ui.Button(' + ',
                       functools.partial(change, type, +1),
                       font=font,
                       force_width=w))
     else:
         line.add(ui.Spacing(116, 0))
     line.add(ui.Spacing(10, 0))
     line.add(ui.Label('%d%%' % tpl[type], font=font))
     panel.add(line)
Beispiel #2
0
def create_aligned_widget(widget, align, size=None):
    if not size:
        size = ui.screen_size
    if align & ui.RIGHT:
        widget = SpacingLayoutWidget(ui.Spacing(0,0), widget, (size[0], 0))
    if align & ui.BOTTOM:
        widget = SpacingLayoutWidget(ui.Spacing(0,0), widget, (0, size[1]))
    return widget
Beispiel #3
0
 def __init__(self, player):
     super(ConditionsWidget, self).__init__()
     p = ui.HorizontalLayoutWidget()
     p.add(ui.Spacing(10, 0))
     p.add(ui.Label('   ', image=player.get_flag()))
     p.add(ui.Spacing(10, 0))
     self.accepting = ui.Label('?')
     p.add(self.accepting)
     self.add(p)
     self.panel = ui.LinearLayoutWidget()
     self.add(self.panel)
Beispiel #4
0
def main_menu():
    global main_menu_item
    main_menu_item = menu = PrettyMenu()

    version = 'version %s' % features.get('app.version')
    if features.get('gold.status') != 'none':
        version += '+' + features.get('gold.status')
    if features.get('gold.session_warning'):
        version += ' WARNING! Login with Dropbox in options menu to save your purchases.'
    menu.add(ui.Label('civsync.com; ' + version,
                      color=(255, 0, 0, 150), font=ui.consolefont), (0, 0))

    new_game_button = MenuButton('New\ngame', new_game_menu)
    menu.left.add(new_game_button)

    load_game_button = MenuButton('Load\ngame', save.load_dialog)
    menu.left.add(load_game_button)

    if features.get('gold.enable'):
        gold_button = MenuButton(u'civsync\n  Gold', gold.menu)
        gold_button.fg = (255, 215, 0)
        gold_button.bg = (255, 215, 0, 100)
        menu.left.add(gold_button)

    if features.get('app.multiplayer'):
        menu.left.add(MenuButton('Connect', save.connect_dialog))

    menu.right.add(MenuButton('', options.show_options, image=ui.load_image('data/user/options.png')))
    menu.right.add(MenuButton('Exit', ui.back))
    menu.right.add(ui.Spacing(0, 0))

    ui.replace(menu)
Beispiel #5
0
    def __init__(self, client):
        super(ScreenWidget, self).__init__()
        self.client = client

        self.map = MapWidget(client)
        self.overview = OverviewWidget(client)
        self.console = ConsoleWidget(client)
        self.menu = gamemenu.Menu(client)
        self.end_turn_button = ui.Button('End turn', self.client.end_turn)
        self.empire_button = ui.Button('Empire', self.empire_dialog)
        self.taxes_panel = TaxesPanel(client)

        self.left_panel = ui.LinearLayoutWidget(spacing=0, center=True)
        self.map_wrapper = ui.AbsoluteLayoutWidget()

        self.add(self.left_panel)
        self.add(self.map_wrapper)

        self.map_wrapper.add(self.map, (0, 0))
        self.map_wrapper.add(self.menu, (0, 0), align=ui.BOTTOM)

        self.left_panel.add(self.overview)
        self.left_panel.add(self.console.scroll)
        self.left_panel.add(self.end_turn_button)
        self.left_panel.add(self.taxes_panel)
        self.left_panel.add(ui.Spacing(0, 10))
        self.left_panel.add(self.empire_button)

        if features.get('app.full_label_toggle_button'):
            full_label_toggle_button = ui.Button('city labels', client.toggle_full_labels, font=ui.consolefont)
            self.left_panel.add(full_label_toggle_button)

        # key_end_turn()

        self.focus = self.map
Beispiel #6
0
def main_menu():
    global main_menu_item
    main_menu_item = menu = PrettyMenu()

    menu.add(
        ui.Label('version %s' % features.get('app.version'),
                 color=(255, 0, 0, 150),
                 font=ui.consolefont), (0, 0))
    new_game_button = MenuButton('New\ngame', new_game_menu)
    menu.left.add(new_game_button)
    load_game_button = MenuButton('Load\ngame', save.load_dialog)
    menu.left.add(load_game_button)
    if features.get('app.multiplayer'):
        menu.left.add(MenuButton('Connect', save.connect_dialog))

    menu.right.add(MenuButton('Feed\nback', feedback))
    menu.right.add(
        MenuButton(
            '',
            options.show_options,
            image=ui.load_image('data/user/options.png').convert_alpha()))
    menu.right.add(MenuButton('Exit', ui.back))
    menu.right.add(ui.Spacing(0, 0))

    ui.replace(menu)
Beispiel #7
0
    def __init__(self):
        ui.AbsoluteLayoutWidget.__init__(self)

        self.load_background()

        self.left = ui.HorizontalLayoutWidget(spacing=10)
        self.left.add(ui.Spacing(0, 0))
        self.right = ui.HorizontalLayoutWidget(spacing=10)
        self.cont = SpacingLayoutWidget(self.left, self.right, (ui.screen_width, 0))
        self.add(create_aligned_widget(self.cont, ui.BOTTOM, (0, ui.screen_height - 10)), (0,0))
Beispiel #8
0
    def __init__(self, client):
        super(ScreenWidget, self).__init__()
        width = 150

        def make_button(name, func):
            return ui.Button(name,
                             func,
                             force_width=ui.scale_for_device(width - 15),
                             padding=1)

        self.client = client

        if features.get('app.map_tiles'):
            import maptiles
            self.map = maptiles.MapWidget(client)
        else:
            self.map = mapdrawer.MapWidget(client, ui.init_zoom_levels())
        self.overview = OverviewWidget(client)
        self.console = ConsoleWidget(client)
        self.menu = gamemenu.Menu(client, ui.screen_width - width)
        self.end_turn_button = make_button('End turn', self.client.end_turn)
        self.empire_button = make_button('Empire', self.empire_dialog)
        self.taxes_panel = TaxesPanel(client)

        self.left_panel = ui.LinearLayoutWidget(spacing=0,
                                                center=True,
                                                marginleft=0)
        self.left_panel.widget_background = (190, 160, 110, 170)

        self.add(self.map, (0, 0))
        self.add(self.menu, (width, 0), align=ui.BOTTOM)
        self.add(self.left_panel, (0, 0), align=ui.LEFT)
        self.update_layout()

        self.left_panel.add(self.overview)
        self.left_panel.add(self.console.scroll)
        self.left_panel.add(self.end_turn_button)
        self.left_panel.add(self.taxes_panel)
        self.left_panel.add(ui.Spacing(0, 10))
        self.left_panel.add(self.empire_button)
        self.left_panel.add(self.menu.left_widget)

        if features.get('app.full_label_toggle_button'):
            full_label_toggle_button = ui.Button('city labels',
                                                 client.toggle_full_labels,
                                                 font=ui.consolefont)
            self.left_panel.add(full_label_toggle_button)

        # key_end_turn()

        self.focus = self.map
Beispiel #9
0
    def setup_units_in_city(self):
        def focus(unit):
            unit.focus()
            ui.back()

        for unit in self.city.get_units():
            callback = functools.partial(focus, unit)
            panel = ui.LinearLayoutWidget(center=True)
            panel.add(ui.Image(unit.get_image(), callback=callback))
            panel.add(
                ui.Label(unit.get_name(),
                         font=ui.consolefont,
                         callback=callback))
            self.units_in_city.add(panel)
            self.units_in_city.add(ui.Spacing(10, 0))
Beispiel #10
0
    def unit_select_dialog_popup(self, units):
        def focus(unit):
            unit.focus()
            ui.back()

        panel = ui.LinearLayoutWidget(
            spacing=0
        )  #No vertical spacing because Images already contains margins.
        for unit in units:
            name = unit.get_name()
            callback = functools.partial(focus, unit)
            p = ui.HorizontalLayoutWidget(spacing=10)
            surf = unit.get_image()
            w, h = surf.get_size()
            image = surf.scale(
                (ui.scale_for_device(w), ui.scale_for_device(h)))
            surf.destroy()
            p.add(ui.Image(image, callback))
            container = ui.LinearLayoutWidget(spacing=0)
            container.add(ui.Spacing(0, ui.scale_for_device(8)))
            container.add(ui.Button(name, callback))
            p.add(container)
            panel.add(p)
        ui.set_dialog(panel, scroll=True)