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)
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)
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)
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"))
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)
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)