Esempio n. 1
0
    def __init__(self, canvas, top_left_pixel, bf_width, bf_height):
        self.canvas = canvas

        self.xoffset = top_left_pixel[0]
        self.yoffset = top_left_pixel[1]

        self.bf_width = bf_width
        self.bf_height = bf_height

        self.hex_radius = ui_cfg.hex_radius
        self.spacing = -self.hex_radius // 2

        self.card_instances = []
        self.bases = {}

        base0x = self.xoffset
        base0y = self.yoffset
        self.bases[0] = TKPlayerBase(self.canvas, (base0x, base0y), bf_height,
                TKPlayerBase.LEFT)

        bfx = base0x + self.bases[0].get_pixel_width() + self.spacing 
        bfy = base0y
        self.battlefield = TKBattlefield(self.canvas, (bfx, bfy), bf_width,
                bf_height)

        base1x = bfx + self.battlefield.get_pixel_width() + self.spacing
        base1y = base0y
        self.bases[1] = TKPlayerBase(self.canvas, (base1x, base1y), bf_height,
                TKPlayerBase.RIGHT)
Esempio n. 2
0
class TKGameBoard:
    def __init__(self, canvas, top_left_pixel, bf_width, bf_height):
        self.canvas = canvas

        self.xoffset = top_left_pixel[0]
        self.yoffset = top_left_pixel[1]

        self.bf_width = bf_width
        self.bf_height = bf_height

        self.hex_radius = ui_cfg.hex_radius
        self.spacing = -self.hex_radius // 2

        self.card_instances = []
        self.bases = {}

        base0x = self.xoffset
        base0y = self.yoffset
        self.bases[0] = TKPlayerBase(self.canvas, (base0x, base0y), bf_height,
                TKPlayerBase.LEFT)

        bfx = base0x + self.bases[0].get_pixel_width() + self.spacing 
        bfy = base0y
        self.battlefield = TKBattlefield(self.canvas, (bfx, bfy), bf_width,
                bf_height)

        base1x = bfx + self.battlefield.get_pixel_width() + self.spacing
        base1y = base0y
        self.bases[1] = TKPlayerBase(self.canvas, (base1x, base1y), bf_height,
                TKPlayerBase.RIGHT)
        
    def paint(self, fn_battlefield_sector):
        self.bases[0].paint()
        self.battlefield.paint(fn_battlefield_sector)
        self.bases[1].paint()

    def paint_unit_on_battlefield(self, pos, unit):
        pixel = self.get_center_pixel_for_battlefield_position(pos)
        unit.paint(self.canvas, pixel)
        self.card_instances.append(unit)

    def paint_spell_in_base(self, player_id, slot_num, spell_instance):
        self._paint_instance_in_base(player_id, 
                (TKPlayerBase.SPELL_COLUMN_INDEX, slot_num),
                spell_instance)

    def paint_building_in_base(self, player_id, slot_num, building_instance):
        self._paint_instance_in_base(player_id, 
                (TKPlayerBase.BUILDING_COLUMN_INDEX, slot_num),
                building_instance)

    def _paint_instance_in_base(self, player_id, slot, instance):
        pixel = self.get_center_pixel_for_player_base_slot(player_id, slot)
        instance.paint(self.canvas, pixel)
        self.card_instances.append(instance)

    def clear(self):
        for instance in self.card_instances:
            instance.clear(self.canvas)
        self.card_instances = []

    def get_pixel_height(self):
        return max(self.battlefield.get_pixel_height(), \
                self.bases[0].get_pixel_height(), \
                self.bases[1].get_pixel_height())

    def get_pixel_width(self):
        return self.bases[0].get_pixel_width() + \
                self.battlefield.get_pixel_width() + \
                self.bases[1].get_pixel_width() + (2 * self.spacing)

    def get_center_pixel_for_battlefield_position(self, pos):
        vp = BoardTools.get_visual_position_for_backend_position(pos, \
                self.bf_height)
        pixel = self.battlefield.get_center_pixel_for_visual_position(vp)
        return pixel

    def get_center_pixel_for_player_base_slot(self, player_id, slot):
        pixel = self.bases[player_id].get_center_pixel_for_slot(slot)
        return pixel