Ejemplo n.º 1
0
class Animation(Composite):
    images = array(AnimImage)
    frames = array(Frame)

    def load_in_place(self, byte_array, pre_generate_images=False):
        Composite.load_in_place(self, byte_array)
        names_to_image = {}
        for anim_image in self.images:
            names_to_image[anim_image.name] = anim_image

        if pre_generate_images:
            window = tk.Toplevel()
            progress = ttk.Progressbar(window,
                                       orient=tk.HORIZONTAL,
                                       maximum=len(self.frames) - 1,
                                       length=200,
                                       mode='determinate')

            ttk.Label(window, text='Loading Animation',
                      style='Title.TLabel').pack()
            progress.pack(expand=tk.YES,
                          fill=tk.X,
                          padx=(10, 10),
                          pady=(0, 10))
        for ind, frm in enumerate(self.frames):
            for drawn in frm.images:
                drawn.set_image(names_to_image[drawn.name])
            if pre_generate_images:
                frm.pre_generate_images()
                progress.step(1)
                window.update()
        if pre_generate_images:
            window.destroy()
Ejemplo n.º 2
0
class Trainer(Composite):
    name = SaveableString
    animation = SaveableString
    before_convo = SaveableString
    after_convo = SaveableString
    lose_message = SaveableString
    playlist = SaveableString
    background_image = SaveableString
    sight_range = U8
    peoplemon = array(Peoplemon)
    items = array(U16, U8)
    ai_type = U8
    behavior = Behavior
Ejemplo n.º 3
0
class Options(Composite):
    line = SaveableString
    options = array(Option)

    def __str__(self):
        return '<Option> Line: {}, Options: {}'.format(
            self.line.get(), [option.line.get() for option in self.options])
Ejemplo n.º 4
0
class Peoplemon(Composite):
    id = U16
    name = SaveableString
    description = SaveableString
    type = U8
    special_ability_id = U8
    base_stats = Stats
    valid_moves = array(AvailableMove)
    learn_moves = array(LearnMove)
    evolve_level = U8
    evolve_id = U8
    base_xp_yield = U16
    xp_group = U8
    ev_stats = Stats

    def __str__(self):
        return 'ID: {:^3} | Name: "{}" | Desc: {}'.format(
            self.id.get(), self.name.get(),
            self.description.get()[:20])
Ejemplo n.º 5
0
    def __init__(self, parent=None):
        self.gui = ItemEditorGUI(parent)
        self.sort_connector = SortConnector(self.gui.items,
                                            self.gui.sort.combo, SORT_MAP)
        self.items = array(Item)()
        self.main_saveable = self.items

        self.item_connector = ArrayConnector(self.items, self.gui.items,
                                             self.gui.add_button, self.gui.id,
                                             self.gui.name, self.gui.price,
                                             self.gui.description)
        self.gui.items.signal_select.connect(self.on_select)
Ejemplo n.º 6
0
    def __init__(self, parent=None):
        self.gui = MoveEditorGUI(parent)
        self.moves = array(Move)()
        self.main_saveable = self.moves
        self.sort_var = tk.StringVar(parent)
        self.sort_var.trace('w', lambda *args: self.gui.items.set_key(SORT_MAP[self.sort_var.get()]))
        self.sort_var.set('Move ID')
        self.gui.sort.combo.config(values=list(SORT_MAP.keys()), textvariable=self.sort_var)

        gui = self.gui
        self.item_connector = ArrayConnector(self.moves, self.gui.items, self.gui.add_button,
                                             gui.name, gui.id, gui.classification, gui.attack, gui.accuracy,
                                             gui.effect, gui.priority, gui.pp, gui.type, gui.chance, gui.intensity,
                                             gui.score, gui.attacker_anim, gui.defender_anim, gui.is_special,
                                             gui.targets_self, gui.description)
        self.gui.items.signal_select.connect(self.on_select)
Ejemplo n.º 7
0
class FollowPathBehavior(Composite):
    reverse_loop = U8
    nodes = array(Node)

    def to_byte_array(self):
        data = bytearray()
        num_nodes = U8(len(self.nodes))
        data += num_nodes.to_byte_array()
        data += self.reverse_loop.to_byte_array()
        for item in self.nodes:
            data += item.to_byte_array()
        return data

    def load_in_place(self, byte_array):
        num_nodes = U8
        num_nodes.load_in_place(byte_array)
        self.reverse_loop.load_in_place(byte_array)
        self.nodes.clear()
        for i in range(num_nodes):
            self.nodes.append(Node.from_byte_array(byte_array))
Ejemplo n.º 8
0
    def __init__(self, parent=None):
        self.gui = PeoplemonEditorGUI(parent)
        self.peoplemon_array = array(Peoplemon)()
        self.main_saveable = self.peoplemon_array

        gui = self.gui
        self.learn_move_connector = None
        self.available_move_connector = None
        self.item_connector = ArrayConnector(
            self.peoplemon_array, self.gui.items, self.gui.add_button,
            gui.description, gui.id, gui.name, gui.base_xp, gui.xp_group,
            gui.special_id, gui.type, gui.evolve_level, gui.evolve_id,
            gui.base_stats, gui.ev_stats, gui.learn_list, gui.learn_move_id,
            gui.learn_level, gui.available_list, gui.available_move_id,
            gui.add_available_button, gui.add_learn_move)
        self.gui.items.signal_select.connect(self.on_select)
        self.sort_connector = SortConnector(gui.items, gui.sort.combo,
                                            SORT_MAP)
        gui.learn_list.set_key(lambda learn: learn.learn_level.get())
        gui.available_list.set_key(lambda move: move.get())
Ejemplo n.º 9
0
class Frame(Composite):
    RETURN_GET = True
    length = saveable_int('u32')
    images = array(DrawnImage)

    def __init__(self):
        Composite.__init__(self)
        self.length = 30
        self.last_selected = None
        self.half_transparent_images = []

    def pre_generate_images(self):
        for img in self.images:
            img.create_image()
            img.create_half_transparent()

    def draw(self, canvas):
        _ids = {}
        for ind, img in enumerate(self.images):
            img.level = ind
            _id = img.draw(canvas)
            _ids[_id] = img
        return _ids

    def pre_generate_half_transparent(self):
        for img in self.images:
            img.pre_generate_half_transparent()

    def draw_half_transparent(self, canvas):
        for img in self.images:
            img.draw_half_transparent(canvas)

    def copy(self):
        new = Frame()
        new.length = self.length
        for image in self.images:
            new.images.append(image.copy())
        if self.last_selected:
            new.last_selected = new.images[self.images.index(
                self.last_selected)]
        return new
Ejemplo n.º 10
0
class TravelEditor:
    MapType = array(Location)

    def __init__(self, parent=None):
        self.gui = TravelEditorGUI(parent)
        self.maps = self.MapType()
        self.main_saveable = self.maps
        for entry in self.gui.entries:
            entry.state(('disabled', ))
        self.cur_selected = None

        self.array_connector = ArrayConnector(self.maps, self.gui.maps,
                                              self.gui.add_button,
                                              *self.gui.entries)
        self.gui.maps.signal_select.connect(self.select_override)
        self.gui.maps.set_key(lambda map: map.spawn_id.get())

    def select_override(self, ind):
        if ind is not None:
            current = self.array_connector.cur_selection
            int_map = {
                self.gui.entry_x: current.x,
                self.gui.entry_y: current.y,
                self.gui.entry_spawn: current.spawn_id
            }
            str_map = {
                self.gui.entry_display: current.display_name,
                self.gui.entry_ref: current.reference_name,
                self.gui.entry_map: current.map_name
            }
            for entry, saveable in int_map.items():
                entry.entry.config(textvariable=make_int_var(saveable))
            for entry, saveable in str_map.items():
                entry.entry.config(textvariable=make_str_var(saveable))

    def pack(self, **kwargs):
        self.gui.pack(**kwargs)
Ejemplo n.º 11
0
 class Bar(Composite):
     a = saveable_int('u32')
     b = array(saveable_int('u16'))
     c = SaveableString
Ejemplo n.º 12
0
class AnimationOld(Composite):
    texture = SaveableString
    images = array(AnimImageOld)
    frames = array(Frame)
Ejemplo n.º 13
0
 class Bar(Union):
     a = U32
     b = U16
     c = SaveableString
     d = array(U32)
Ejemplo n.º 14
0
class FrameExport(Composite):
    length = saveable_int('u32')
    pieces = array(PieceExport)
Ejemplo n.º 15
0
class WildPeoplemon(Composite):
    id = U16
    min_lvl = U16
    max_lvl = U16
    rarity = U16
    overrides = array(Override)
Ejemplo n.º 16
0
class AnimationExport(Composite):
    texture = SaveableString
    loop = saveable_int('u8')
    frames = array(FrameExport)
Ejemplo n.º 17
0
class Playlist(array(Song)):
    pass