Exemple #1
0
    def render(self, console):
        elements = []

        console.draw_rect(x=self.x,
                          y=self.y,
                          height=self.height,
                          width=self.width,
                          ch=1,
                          bg=self.color)

        action_log_target = self.engine.selected_entity

        if action_log_target == None or not gen.has_member(
                action_log_target, "recent_actions"):
            action_log_target = self.engine.hunter

        elements.extend([
            ui_elem.HeaderFooter(),
            ui_elem.Break(),
            ui_elem.Text(f"{action_log_target.entity_name} Action Log:"),
        ])

        num_actions_possible = self.height - 5
        recent_actions_subset = action_log_target.recent_actions[
            -num_actions_possible:]

        for action in recent_actions_subset:
            elements.append(ui_elem.PaddedText(action, 1))

        elements = self.pad_elements_with_breaks(elements, self.height)
        elements = self.truncate_elements(elements)
        elements.append(ui_elem.HeaderFooter())

        self.base_render(console, elements, self.x, self.y, self.width)
Exemple #2
0
    def get_cumulative_elements_height(self, elements, i):
        height = 0
        for j in range(len(elements[0:i])):
            if gen.has_member(elements[j], 'height'):
                height += elements[j].height
            else:
                height += 1

        return height
Exemple #3
0
    def get_entity_counts(self):
        counts = {
            bb.BerryBush: self.berry_bush_count,
            dr.Buck: 0,
            dr.Doe: 0,
            htr.Hunter: 0,
            wlf.Wolf: 0,
            rbt.Rabbit: 0,
        }

        for entity in self.intelligent_entities:
            if (gen.has_member(entity, 'alive')
                    and entity.alive) or not gen.has_member(entity, 'alive'):
                if not entity.__class__ in counts:
                    counts[entity.__class__] = 1
                else:
                    counts[entity.__class__] += 1

        return counts
Exemple #4
0
    def perform(self):
        cooldown = self.default_cooldown

        if len(self.action_queue) > 0:
            action = self.action_queue.popleft()
            cooldown = action.cooldown if gen.has_member(action, 'cooldown') else self.default_cooldown 
            action.perform()
        else:
            actions = self.decide_what_to_do()
            for a in actions:
                self.action_queue.append(a)
        
        return cooldown