Example #1
0
    def __init__(self, x, y, width, height):
        super().__init__("scenario", x, y)
        self.title = element.Text("event-title",
                                  x,
                                  y,
                                  "",
                                  36,
                                  width=width,
                                  justify="left")
        self.body = element.Text("event-body",
                                 x + 12,
                                 y + 48,
                                 "",
                                 18,
                                 width=width - 24,
                                 justify="left")
        self.choice_elements = []
        self.location = None
        self.dialogue = None
        self.width = width
        self.height = height

        self.add_renderable(
            element.Frame("frame", x, y + 40, width, height - 20))
        self.add_renderable(self.title)
        self.add_renderable(self.body)
Example #2
0
    def __init__(self, x, y, width, height):
        """Travel manager handles the movement"""
        super().__init__("loot", x, y)
        self.width = width
        self.height = height
        self.loot = None
        self.item_elements = []
        self.item_text_elements = []
        self.overflow = []

        # Window
        self.add_renderable(element.Frame("frame", x, y, width, height))

        # Slots and slot text
        for i in range(5):
            text = element.Text("item-text-%d" % i,
                                x + 84,
                                y + 36 + i * 60,
                                "",
                                20,
                                width=width - 84)
            slot = element.ItemSlot("item-%d" % i, x + 24, y + 24 + i * 60,
                                    "any", None)
            slot.on_change = self.update_text(slot, text)
            self.item_elements.append(slot)
            self.item_text_elements.append(text)
            self.add_renderable(slot)
            self.add_renderable(text)
Example #3
0
    def __init__(self, x, y, width, height, game):
        super().__init__("party-info", x, y)

        # Frame
        self.add_renderable(element.Frame("frame", x, y, width, height))

        # Shards
        self.add_renderable(
            element.Text("shard-text",
                         x + 12,
                         y + 12,
                         "Shards: ",
                         20,
                         width=width - 24,
                         justify="left"))
        self.shard_element = element.Text("shard-amount",
                                          x + 12,
                                          y + 12,
                                          "",
                                          20,
                                          width=width - 24,
                                          justify="right")
        self.add_renderable(self.shard_element)

        # Item slots
        self.item_elements = []
        item_x = x + 12
        item_y = y + 100
        self.add_renderable(
            element.Text("inventory-text",
                         item_x + 4,
                         item_y - 32,
                         "Party Inventory",
                         24,
                         width=180,
                         justify="left"))
        for i in range(16):
            item_element = element.ItemSlot("item-slot-%d" % i,
                                            item_x + (i % 4) * 60,
                                            item_y + (i // 4) * 60, "any",
                                            (game.party.inventory, i))
            self.item_elements.append(item_element)
            self.add_renderable(item_element)
Example #4
0
    def __init__(self, x, y, slots):
        super().__init__("castbar", x, y)
        self.character = None
        self.add_renderable(element.Frame("cast_bar_frame", x, y,
            56 * slots + 14, 68))

        self.skill_elements = []
        for i in range(slots):
            skill = element.CastBarSlot("slot-%d" % i, x + 8 + i * 56, y + 7,
                None)
            self.skill_elements.append(skill)
            self.add_renderable(skill)
            self.add_renderable(element.Text("slot-text-%d" % i,
                x + i * 56, y + 40, str(i + 1), 16, width=56,
                justify="right"))
Example #5
0
    def __init__(self, monster, x, y):
        super(MonsterManager, self).__init__()
        SCALE = 4  # TEMPORARY VARIABLE
        self.monster = monster
        self.highlight = False

        # Load monster neutral image
        try:
            raw_image = pygame.image.load( \
                monster.graphic["neutral"]).convert_alpha()
            raw_image = pygame.transform.scale(raw_image, \
                (raw_image.get_width()*SCALE, raw_image.get_height()*SCALE))
        except pygame.error:
            raw_image = pygame.Surface((70 * SCALE, 20 * SCALE))
            raw_image.fill((255, 255, 255))
            raw_image.blit(
                element.Text.draw(monster.name, 20, (0, 0, 0), 70 * SCALE,
                                  element.Text.CENTER), (0, 10))

        # Create image element
        self.image_element = element.Image(raw_image,
                                           x - raw_image.get_width() // 2,
                                           y - raw_image.get_height())
        self.renderables.append(self.image_element)

        # Store raw image
        self.neutral_image = raw_image

        # Create selection image
        selection_image = pygame.Surface(
            (self.neutral_image.get_width() + 10,
             self.neutral_image.get_height() + 85), pygame.SRCALPHA)
        selection_image.fill((0, 0, 0, 0))
        pygame.draw.rect(selection_image, (255, 0, 0),
                         selection_image.get_rect(), 1)
        self.selection_element = element.Image(
            selection_image, x - raw_image.get_width() // 2 - 5,
            y - raw_image.get_height() - 80)

        # Load monster hover image
        try:
            raw_image = pygame.image.load( \
                monster.graphic["hover"]).convert_alpha()
        except pygame.error:
            raw_image = pygame.Surface((70, 20))
            raw_image.fill((255, 255, 0))
            raw_image.blit(
                element.Text.draw(monster.name, 20, (0, 0, 0), 70 * SCALE,
                                  element.Text.CENTER), (0, 10))

        # Store hover image
        self.hover_image = pygame.transform.scale(
            raw_image,
            (raw_image.get_width() * SCALE, raw_image.get_height() * SCALE))

        # Create text element
        self.text_element = element.Text(
            monster.name.title(), 20, x,
            y - self.image_element.surface.get_height() - 75)
        self.text_element.x = x - self.text_element.surface.get_width() // 2
        self.renderables.append(self.text_element)

        # Store hovered and neutral text surfaces
        self.neutral_name = self.text_element.surface
        self.hover_name = element.Text.draw(monster.name.title(), 20,
                                            (255, 255, 0), None,
                                            element.Text.LEFT)

        # Create health and action bars
        self.health_bar = element.Bar(32 * SCALE, 2 * SCALE, (116, 154, 104),
                                      x - 16 * SCALE,
                                      y - self.neutral_image.get_height() - 40)
        self.action_bar = element.Bar(32 * SCALE, 2 * SCALE, (212, 196, 148),
                                      x - 16 * SCALE,
                                      y - self.neutral_image.get_height() - 25)
        health_missing = element.Bar(32 * SCALE, 2 * SCALE, (30, 30, 30),
                                     x - 16 * SCALE,
                                     y - self.neutral_image.get_height() - 40)
        action_missing = element.Bar(32 * SCALE, 2 * SCALE, (30, 30, 30),
                                     x - 16 * SCALE,
                                     y - self.neutral_image.get_height() - 25)
        self.renderables.append(health_missing)
        self.renderables.append(action_missing)
        self.renderables.append(self.health_bar)
        self.renderables.append(self.action_bar)
Example #6
0
    def __init__(self, x, y, width, height):
        super().__init__("character", x, y)

        self.character = None
        self.name_element = element.Text("name",
                                         x + 16,
                                         y + 188,
                                         "",
                                         24,
                                         width=132)
        self.image_element = element.Image(
            "portrait", x + 36, y, draw_rect(144, 140, (255, 255, 255)))
        self.stats_element = element.Text("stats",
                                          x + 16,
                                          y + 216,
                                          "",
                                          18,
                                          width=132,
                                          justify="right")
        self.health = element.PercentBar("player-health", x + 20, y + 128,
                                         draw_rect(128, 8, (50, 255, 50)))
        self.health_text = element.Text("health-text",
                                        x + 20,
                                        y + 138,
                                        "",
                                        16,
                                        width=132,
                                        justify="right")
        self.action = element.PercentBar("player-action", x + 20, y + 162,
                                         draw_rect(128, 8, (50, 100, 50)))
        self.action_text = element.Text("action-text",
                                        x + 20,
                                        y + 172,
                                        "",
                                        16,
                                        width=132,
                                        justify="right")

        self.add_renderable(element.Frame("frame", x, y, width, height))
        self.add_renderable(self.health)
        self.add_renderable(self.health_text)
        self.add_renderable(self.action)
        self.add_renderable(self.action_text)
        self.add_renderable(self.name_element)
        self.add_renderable(self.image_element)
        self.add_renderable(self.stats_element)
        self.add_renderable(
            element.Text("health-btext",
                         x + 20,
                         y + 138,
                         "Health:",
                         16,
                         width=132,
                         justify="left"))
        self.add_renderable(
            element.Text("action-btext",
                         x + 20,
                         y + 172,
                         "Action:",
                         16,
                         width=132,
                         justify="left"))
        self.add_renderable(
            element.Text("stat-text",
                         x + 16,
                         y + 216,
                         self._stat_text,
                         18,
                         width=132))
        self.add_renderable(
            element.Image("health-border", x + 16, y + 124,
                          "image/ui/player_bar.png", 4))
        self.add_renderable(
            element.Image("action-border", x + 16, y + 158,
                          "image/ui/player_bar.png", 4))

        # Level up
        self.shard_element = element.Text("required-shard",
                                          x + 280,
                                          y + 36,
                                          "",
                                          20,
                                          width=200)
        self.add_renderable(self.shard_element)
        self.add_renderable(
            element.Text("required-text",
                         x + 280,
                         y + 16,
                         "Shards Required: ",
                         20,
                         width=200))
        self.add_renderable(
            element.Button("level-up",
                           self.level_up,
                           text="Level Up",
                           size=20,
                           x=x + 168,
                           y=y + 16,
                           width=100,
                           height=50))

        # Equipment Slots
        self.equipment_elements = {}
        equipment_x = x + 420
        equipment_y = y + 16
        # Hand
        self.add_renderable(
            element.Text("text-hand1",
                         equipment_x,
                         equipment_y + 56,
                         "Hand",
                         16,
                         width=54,
                         justify="center"))
        self.equipment_elements["hand1"] = element.ItemSlot(
            "equipment-hand1", equipment_x, equipment_y, "hand", None,
            self.update_stats())

        # Hand
        self.add_renderable(
            element.Text("text-hand2",
                         equipment_x + 60,
                         equipment_y + 56,
                         "Hand",
                         16,
                         width=54,
                         justify="center"))
        self.equipment_elements["hand2"] = element.ItemSlot(
            "equipment-hand2", equipment_x + 60, equipment_y, "hand", None,
            self.update_stats())

        # Body
        self.add_renderable(
            element.Text("text-body",
                         equipment_x,
                         equipment_y + 136,
                         "Body",
                         16,
                         width=54,
                         justify="center"))
        self.equipment_elements["body"] = element.ItemSlot(
            "equipment-body", equipment_x, equipment_y + 80, "body", None,
            self.update_stats())

        # Legs
        self.add_renderable(
            element.Text("text-legs",
                         equipment_x + 60,
                         equipment_y + 136,
                         "Legs",
                         16,
                         width=54,
                         justify="center"))
        self.equipment_elements["legs"] = element.ItemSlot(
            "equipment-legs", equipment_x + 60, equipment_y + 80, "legs", None,
            self.update_stats())

        # Feet
        self.add_renderable(
            element.Text("text-feet",
                         equipment_x,
                         equipment_y + 216,
                         "Feet",
                         16,
                         width=54,
                         justify="center"))
        self.equipment_elements["feet"] = element.ItemSlot(
            "equipment-feet", equipment_x, equipment_y + 160, "feet", None,
            self.update_stats())

        # Head
        self.add_renderable(
            element.Text("text-head",
                         equipment_x + 60,
                         equipment_y + 216,
                         "Head",
                         16,
                         width=54,
                         justify="center"))
        self.equipment_elements["head"] = element.ItemSlot(
            "equipment-head", equipment_x + 60, equipment_y + 160, "head",
            None, self.update_stats())

        # Extra
        self.add_renderable(
            element.Text("text-extra1",
                         equipment_x,
                         equipment_y + 296,
                         "Extra",
                         16,
                         width=54,
                         justify="center"))
        self.equipment_elements["extra1"] = element.ItemSlot(
            "equipment-extra1", equipment_x, equipment_y + 240, "extra", None,
            self.update_stats())

        # Extra
        self.add_renderable(
            element.Text("text-extra2",
                         equipment_x + 60,
                         equipment_y + 296,
                         "Extra",
                         16,
                         width=54,
                         justify="center"))
        self.equipment_elements["extra2"] = element.ItemSlot(
            "equipment-extra2", equipment_x + 60, equipment_y + 240, "extra",
            None, self.update_stats())

        for elem in self.equipment_elements.values():
            self.add_renderable(elem)

        # Move slots
        move_x = x + 168
        move_y = y + 152
        self.move_elements = []
        self.add_renderable(
            element.Text("moves-text",
                         move_x + 4,
                         move_y - 32,
                         "Abilities",
                         24,
                         width=132,
                         justify="left"))
        for i in range(12):
            item_element = element.MoveSlot("move-slot-%d" % i,
                                            move_x + (i % 4) * 60,
                                            move_y + (i // 4) * 60, None)
            self.move_elements.append(item_element)
            self.add_renderable(item_element)