コード例 #1
0
    def load_tree_items(self, item_store: TreeStore, root_node):
        self._validator = DungeonValidator(self.get_mappa().floor_lists)
        root = item_store.append(root_node, [
            ICON_ROOT, DUNGEONS_NAME, self, MainController, 0, False, '', True
        ])
        self._tree_model = item_store
        self._root_iter = root

        static_data = self.project.get_rom_module().get_static_data()
        self._fixed_floor_data = self.project.open_file_in_rom(
            FIXED_PATH, FileType.FIXED_BIN, static_data=static_data)
        self._dungeon_bin: DungeonBinPack = self.project.open_file_in_rom(
            DUNGEON_BIN, FileType.DUNGEON_BIN, static_data=static_data)

        self._validator.validate(self.get_dungeon_list())

        self._fill_dungeon_tree()

        # Fixed rooms
        self._fixed_floor_root_iter = item_store.append(
            root_node, [
                ICON_FIXED_ROOMS, FIXED_ROOMS_NAME, self, FixedRoomsController,
                0, False, '', True
            ])
        for i in range(0, len(self._fixed_floor_data.fixed_floors)):
            self._fixed_floor_iters.append(
                item_store.append(self._fixed_floor_root_iter, [
                    ICON_FIXED_ROOMS,
                    f(_('Fixed Room {i}')), self, FixedController, i, False,
                    '', True
                ]))

        recursive_generate_item_store_row_label(self._tree_model[root])
        recursive_generate_item_store_row_label(
            self._tree_model[self._fixed_floor_root_iter])
コード例 #2
0
    def load_tree_items(self, item_store: TreeStore, root_node):
        self.dungeon_bin: DungeonBinPack = self.project.open_file_in_rom(
            DUNGEON_BIN,
            FileType.DUNGEON_BIN,
            static_data=self.project.get_rom_module().get_static_data())

        root = item_store.append(root_node, [
            'skytemple-e-dungeon-tileset-symbolic', DUNGEON_GRAPHICS_NAME,
            self, MainController, 0, False, '', True
        ])
        self._tree_model = item_store
        self._tree_level_iter = []
        for i in range(0, NUMBER_OF_TILESETS):
            self._tree_level_iter.append(
                item_store.append(root, [
                    'skytemple-e-dungeon-tileset-symbolic',
                    f"{_('Tileset')} {i}", self, TilesetController, i, False,
                    '', True
                ]))
        for i in range(0, NUMBER_OF_BACKGROUNDS):
            self._tree_level_iter.append(
                item_store.append(root, [
                    'skytemple-e-mapbg-symbolic',
                    f"{_('Background')} {i + NUMBER_OF_TILESETS}", self,
                    DungeonBgController, i, False, '', True
                ]))
        self._tree_level_iter.append(
            item_store.append(root, [
                'skytemple-e-dungeon-tileset-symbolic',
                _("Color Map"), self, ColvecController, i, False, '', True
            ]))
        self._colvec_pos = len(self._tree_level_iter) - 1
        recursive_generate_item_store_row_label(self._tree_model[root])
コード例 #3
0
ファイル: module.py プロジェクト: SygnaMaestroke/skytemple
    def load_tree_items(self, item_store: TreeStore, root_node):
        root = item_store.append(root_node, [
            'skytemple-e-monster-symbolic', MONSTER_NAME, self, MainController,
            0, False, '', True
        ])
        self._tree_model = item_store
        self._tree_iter__entity_roots = {}
        self._tree_iter__entries = {}

        monster_entries_by_base_id: Dict[int, List[MdEntry]] = {}
        for entry in self.monster_md.entries:
            if entry.md_index_base not in monster_entries_by_base_id:
                monster_entries_by_base_id[entry.md_index_base] = []
            monster_entries_by_base_id[entry.md_index_base].append(entry)

        for baseid, entry_list in monster_entries_by_base_id.items():
            name = self.project.get_string_provider().get_value(
                StringType.POKEMON_NAMES, baseid)
            ent_root = item_store.append(
                root, self.generate_entry__entity_root(baseid, name))
            self._tree_iter__entity_roots[baseid] = ent_root

            for entry in entry_list:
                self._tree_iter__entries[entry.md_index] = item_store.append(
                    ent_root,
                    self.generate_entry__entry(entry.md_index, entry.gender))

        recursive_generate_item_store_row_label(self._tree_model[root])
コード例 #4
0
ファイル: module.py プロジェクト: riiswa/skytemple
 def load_tree_items(self, item_store: TreeStore, root_node):
     root = item_store.append(root_node, [
         'skytemple-view-list-symbolic', GROUND_LISTS, self, MainController,
         0, False, '', True
     ])
     self._actor_tree_iter = item_store.append(root, [
         'skytemple-e-actor-symbolic',
         _('Actors'), self, ActorListController, 0, False, '', True
     ])
     self._starters_tree_iter = item_store.append(root, [
         'skytemple-e-monster-symbolic',
         _('Starters'), self, StartersListController, 0, False, '', True
     ])
     self._recruitment_tree_iter = item_store.append(
         root, [
             'skytemple-e-monster-symbolic',
             _('Recruitment List'), self, RecruitmentListController, 0,
             False, '', True
         ])
     self._world_map_tree_iter = item_store.append(root, [
         'skytemple-e-worldmap-symbolic',
         _('World Map Markers'), self, WorldMapController, 0, False, '',
         True
     ])
     self._rank_list_tree_iter = item_store.append(root, [
         'skytemple-view-list-symbolic',
         _('Rank List'), self, RankListController, 0, False, '', True
     ])
     self._item_lists_tree_iter = item_store.append(root, [
         'skytemple-view-list-symbolic',
         _('Item Lists'), self, ItemListsController, 0, False, '', True
     ])
     self._menu_list_tree_iter = item_store.append(root, [
         'skytemple-view-list-symbolic',
         _('Menu List'), self, MenuListController, 0, False, '', True
     ])
     self._item_effects_tree_iter = item_store.append(
         root, [
             'skytemple-view-list-symbolic',
             _('Item Effects'), self, ItemEffectsController, 0, False, '',
             True
         ])
     self._move_effects_tree_iter = item_store.append(
         root, [
             'skytemple-view-list-symbolic',
             _('Move Effects'), self, MoveEffectsController, 0, False, '',
             True
         ])
     generate_item_store_row_label(item_store[root])
     generate_item_store_row_label(item_store[self._actor_tree_iter])
     generate_item_store_row_label(item_store[self._starters_tree_iter])
     generate_item_store_row_label(item_store[self._recruitment_tree_iter])
     generate_item_store_row_label(item_store[self._world_map_tree_iter])
     generate_item_store_row_label(item_store[self._rank_list_tree_iter])
     generate_item_store_row_label(item_store[self._menu_list_tree_iter])
     generate_item_store_row_label(item_store[self._item_lists_tree_iter])
     generate_item_store_row_label(item_store[self._move_effects_tree_iter])
     generate_item_store_row_label(item_store[self._item_effects_tree_iter])
     self._tree_model = item_store
コード例 #5
0
 def load_tree_items(self, item_store: TreeStore, root_node):
     root = item_store.append(root_node, [
         'skytemple-e-string-symbolic', TEXT_STRINGS, self, MainController, 0, False, '', True
     ])
     config = self.project.get_rom_module().get_static_data()
     for language in config.string_index_data.languages:
         self._tree_iters[language.filename] = item_store.append(root, [
             'skytemple-e-string-symbolic', language.name_localized, self, StringsController, language, False, '', True
         ])
     self._tree_model = item_store
     recursive_generate_item_store_row_label(self._tree_model[root])
コード例 #6
0
ファイル: module.py プロジェクト: marius851000/skytemple
    def load_tree_items(self, item_store: TreeStore, root_node):
        root = item_store.append(root_node, [
            'skytemple-e-object-symbolic', OBJECT_SPRTIES, self, ObjectMainController, 0, False, '', True
        ])
        self._tree_model = item_store
        self._tree_level_iter = {}

        for name in self.list_of_obj_sprites:
            self._tree_level_iter[name] = item_store.append(root, [
                'skytemple-e-object-symbolic', name, self,  ObjectController, name, False, '', True
            ])

        recursive_generate_item_store_row_label(self._tree_model[root])
コード例 #7
0
ファイル: module.py プロジェクト: tech-ticks/skytemple
    def load_tree_items(self, item_store: TreeStore, root_node):
        root = item_store.append(root_node, [
            'skytemple-e-bgp-symbolic', BACKGROUNDS_NAME, self, MainController, 0, False, '', True
        ])
        self._tree_model = item_store
        self._tree_level_iter = []
        for i, bgp_name in enumerate(self.list_of_bgps):
            self._tree_level_iter.append(
                item_store.append(root, [
                    'skytemple-e-bgp-symbolic', bgp_name, self,  BgpController, i, False, '', True
                ])
            )

        recursive_generate_item_store_row_label(self._tree_model[root])
コード例 #8
0
 def _create_tree_node(self, store: Gtk.TreeStore,
                       it: Optional[Gtk.TreeIter], node: Union[lark.Tree,
                                                               lark.Token]):
     if isinstance(node, lark.Tree):
         children = store.append(it, [node.data, "", -1, -1, -1, -1, ""])
         for child in node.children:
             self._create_tree_node(store, children, child)
     else:
         content = str(node)
         for char, esc in ParsingResultsView.ESCAPE_CHARS.items():
             content = content.replace(char, esc)
         store.append(it, [
             node.type, content, node.line, node.column, node.end_line,
             node.end_column, "{}:{}".format(node.line, node.column)
         ])
コード例 #9
0
ファイル: module.py プロジェクト: riiswa/skytemple
 def load_tree_items(self, item_store: TreeStore, root_node: TreeIter):
     self._item_store = item_store
     self._root_node = item_store.append(root_node, [
         'skytemple-e-rom-symbolic', os.path.basename(self.project.filename), self,
         MainController, 0, False, '', True
     ])
     generate_item_store_row_label(item_store[self._root_node])
コード例 #10
0
ファイル: module.py プロジェクト: SygnaMaestroke/skytemple
 def load_tree_items(self, item_store: TreeStore, root_node):
     self._tree_iter = item_store.append(root_node, [
         'skytemple-e-patch-symbolic', 'ASM Patches', self, MainController,
         0, False, '', True
     ])
     generate_item_store_row_label(item_store[self._tree_iter])
     self._tree_model = item_store
コード例 #11
0
    def load_tree_items(self, item_store: TreeStore, root_node):
        if self._errored:
            display_error(
                self._errored,
                _("The dungeon floor data of this ROM is corrupt. SkyTemple will still try to open it, "
                  "but dungeon editing will not be available. Expect other bugs. Please fix your ROM."
                  ), _("SkyTemple"))
            return
        self._validator = DungeonValidator(self.get_mappa().floor_lists)
        root = item_store.append(root_node, [
            ICON_ROOT, DUNGEONS_NAME, self, MainController, 0, False, '', True
        ])
        self._tree_model = item_store
        self._root_iter = root

        static_data = self.project.get_rom_module().get_static_data()
        self._fixed_floor_data = self.project.open_file_in_rom(
            FIXED_PATH, FileType.FIXED_BIN, static_data=static_data)
        self._dungeon_bin_context: ModelContext[
            DungeonBinPack] = self.project.open_file_in_rom(
                DUNGEON_BIN,
                FileType.DUNGEON_BIN,
                static_data=static_data,
                threadsafe=True)

        self._validator.validate(self.get_dungeon_list())

        self._fill_dungeon_tree()

        # Fixed rooms
        self._fixed_floor_root_iter = item_store.append(
            root_node, [
                ICON_FIXED_ROOMS, FIXED_ROOMS_NAME, self, FixedRoomsController,
                0, False, '', True
            ])
        for i in range(0, len(self._fixed_floor_data.fixed_floors)):
            self._fixed_floor_iters.append(
                item_store.append(self._fixed_floor_root_iter, [
                    ICON_FIXED_ROOMS,
                    f(_('Fixed Room {i}')), self, FixedController, i, False,
                    '', True
                ]))

        recursive_generate_item_store_row_label(self._tree_model[root])
        recursive_generate_item_store_row_label(
            self._tree_model[self._fixed_floor_root_iter])
コード例 #12
0
    def load_tree_items(self, item_store: TreeStore, root_node):
        root_items = item_store.append(root_node, [
            'skytemple-e-item-symbolic', ITEMS, self, MainItemsController, 0, False, '', True
        ])
        root_moves = item_store.append(root_node, [
            'skytemple-e-move-symbolic', MOVES, self, MainMovesController, 0, False, '', True
        ])
        self._item_lists_tree_iter = item_store.append(root_items, [
            'skytemple-view-list-symbolic', _('Item Lists'), self, ItemListsController, 0, False, '', True
        ])
        self._item_effects_tree_iter = item_store.append(root_items, [
            'skytemple-view-list-symbolic', _('Item Effects'), self, ItemEffectsController, 0, False, '', True
        ])
        self._move_effects_tree_iter = item_store.append(root_moves, [
            'skytemple-view-list-symbolic', _('Move Effects'), self, MoveEffectsController, 0, False, '', True
        ])

        for i, item in enumerate(self.get_item_p().item_list):
            name = self.project.get_string_provider().get_value(StringType.ITEM_NAMES, i)
            self.item_iters[i] = (item_store.append(root_items, [
                'skytemple-e-item-symbolic', f'#{i:04}: {name}', self, ItemController, i, False, '', True
            ]))

        for i, item in enumerate(self.get_waza_p().moves):
            name = self.project.get_string_provider().get_value(StringType.MOVE_NAMES, i)
            self.move_iters[i] = (item_store.append(root_moves, [
                'skytemple-e-move-symbolic', f'#{i:04}: {name}', self, MoveController, i, False, '', True
            ]))

        recursive_generate_item_store_row_label(item_store[root_items])
        recursive_generate_item_store_row_label(item_store[root_moves])
        self._tree_model = item_store
コード例 #13
0
ファイル: module.py プロジェクト: marius851000/skytemple
    def load_tree_items(self, item_store: TreeStore, root_node):
        self.dungeon_bin_context: ModelContext[
            DungeonBinPack] = self.project.open_file_in_rom(
                DUNGEON_BIN,
                FileType.DUNGEON_BIN,
                static_data=self.project.get_rom_module().get_static_data(),
                threadsafe=True)

        root = self._root_node = item_store.append(root_node, [
            'skytemple-e-dungeon-tileset-symbolic', DUNGEON_GRAPHICS_NAME,
            self, MainController, 0, False, '', True
        ])
        tileset_root = item_store.append(root, [
            'skytemple-e-dungeon-tileset-symbolic', TILESETS_NAME, self,
            TilesetMainController, 0, False, '', True
        ])
        bg_root = item_store.append(root, [
            'skytemple-e-mapbg-symbolic', BACKGROUNDS_NAMES, self,
            DungeonBgMainController, 0, False, '', True
        ])
        self._tree_model = item_store
        self._tree_level_iter = []
        for i in range(0, NUMBER_OF_TILESETS):
            self._tree_level_iter.append(
                item_store.append(tileset_root, [
                    'skytemple-e-dungeon-tileset-symbolic',
                    f"{_('Tileset')} {i}", self, TilesetController, i, False,
                    '', True
                ]))
        for i in range(0, NUMBER_OF_BACKGROUNDS):
            self._tree_level_iter.append(
                item_store.append(bg_root, [
                    'skytemple-e-mapbg-symbolic',
                    f"{_('Background')} {i + NUMBER_OF_TILESETS}", self,
                    DungeonBgController, i, False, '', True
                ]))
        self._tree_level_iter.append(
            item_store.append(root, [
                'skytemple-e-graphics-symbolic', f"Traps", self,
                TrpItmImgController, ImgType.TRP, False, '', True
            ]))
        self._traps_pos = len(self._tree_level_iter) - 1
        self._tree_level_iter.append(
            item_store.append(root, [
                'skytemple-e-graphics-symbolic', f"Items", self,
                TrpItmImgController, ImgType.ITM, False, '', True
            ]))
        self._items_pos = len(self._tree_level_iter) - 1
        self._tree_level_iter.append(
            item_store.append(root, [
                'skytemple-e-dungeon-tileset-symbolic',
                _("Color Map"), self, ColvecController, i, False, '', True
            ]))
        self._colvec_pos = len(self._tree_level_iter) - 1
        recursive_generate_item_store_row_label(self._tree_model[root])
コード例 #14
0
ファイル: module.py プロジェクト: SkyTemple/skytemple
    def load_tree_items(self, item_store: TreeStore, root_node):

        root = item_store.append(root_node, [
            'skytemple-e-patch-symbolic', PATCHES, self, MainController, 0,
            False, '', True
        ])

        self._asm_iter = item_store.append(root, [
            'skytemple-e-patch-symbolic',
            _('ASM'), self, AsmController, 0, False, '', True
        ])
        self._asm_special_procs = item_store.append(self._asm_iter, [
            'skytemple-e-special-symbolic',
            _('Special Process Effects'), self, SPEffectsController, 0, False,
            '', True
        ])
        self._asm_item_effects = item_store.append(self._asm_iter, [
            'skytemple-e-item-symbolic',
            _('Item Effects'), self, ItemEffectsController, 0, False, '', True
        ])
        self._asm_move_effects = item_store.append(self._asm_iter, [
            'skytemple-e-move-symbolic',
            _('Move Effects'), self, MoveEffectsController, 0, False, '', True
        ])

        self._asm_iter = item_store.append(root, [
            'skytemple-e-patch-symbolic',
            _('C/Rust'), self, CotController, 0, False, '', True
        ])

        self._asm_iter = item_store.append(root, [
            'skytemple-e-patch-symbolic',
            _('Symbols'), self, PmdSkyDebugController, 0, False, '', True
        ])

        recursive_generate_item_store_row_label(item_store[root])
        self._tree_model = item_store
コード例 #15
0
 def load_tree_items(self, item_store: TreeStore, root_node):
     root = item_store.append(root_node, [
         'skytemple-view-list-symbolic', GROUND_LISTS, self, MainController,
         0, False, '', True
     ])
     self._actor_tree_iter = item_store.append(root, [
         'skytemple-e-actor-symbolic',
         _('Actors'), self, ActorListController, 0, False, '', True
     ])
     self._starters_tree_iter = item_store.append(root, [
         'skytemple-e-monster-symbolic',
         _('Starters'), self, StartersListController, 0, False, '', True
     ])
     self._recruitment_tree_iter = item_store.append(
         root, [
             'skytemple-e-monster-symbolic',
             _('Recruitment List'), self, RecruitmentListController, 0,
             False, '', True
         ])
     self._world_map_tree_iter = item_store.append(root, [
         'skytemple-e-worldmap-symbolic',
         _('World Map Markers'), self, WorldMapController, 0, False, '',
         True
     ])
     self._rank_list_tree_iter = item_store.append(root, [
         'skytemple-view-list-symbolic',
         _('Rank List'), self, RankListController, 0, False, '', True
     ])
     self._menu_list_tree_iter = item_store.append(root, [
         'skytemple-view-list-symbolic',
         _('Menu List'), self, MenuListController, 0, False, '', True
     ])
     self._sp_effects_tree_iter = item_store.append(root, [
         'skytemple-view-list-symbolic',
         _('Special Process Effects'), self, SPEffectsController, 0, False,
         '', True
     ])
     self._dun_inter_tree_iter = item_store.append(root, [
         'skytemple-view-list-symbolic',
         _('Dungeon Interruptions'), self, DungeonInterruptController, 0,
         False, '', True
     ])
     self._animations_tree_iter = item_store.append(root, [
         'skytemple-view-list-symbolic',
         _('Animations'), self, AnimationsController, 0, False, '', True
     ])
     self._dungeon_music_tree_iter = item_store.append(
         root, [
             'skytemple-e-music-symbolic',
             _('Dungeon Music'), self, DungeonMusicController, 0, False, '',
             True
         ])
     self._guest_pokemon_root_iter = item_store.append(
         root, [
             'skytemple-e-monster-symbolic',
             _('Guest Pokémon'), self, GuestPokemonController, 0, False, '',
             True
         ])
     self._special_episodes_root_iter = item_store.append(
         root, [
             'skytemple-e-monster-symbolic',
             _('Special Episode PCs'), self, SpecialPcsController, 0, False,
             '', True
         ])
     self._tactics_root_iter = item_store.append(root, [
         'skytemple-view-list-symbolic',
         _('Tactics'), self, TacticsController, 0, False, '', True
     ])
     self._iq_tree_iter = item_store.append(root, [
         'skytemple-view-list-symbolic',
         _('IQ'), self, IqController, 0, False, '', True
     ])
     self._misc_settings_tree_iter = item_store.append(
         root, [
             'skytemple-view-list-symbolic',
             _('Misc. Settings'), self, MiscSettingsController, 0, False,
             '', True
         ])
     generate_item_store_row_label(item_store[root])
     generate_item_store_row_label(item_store[self._actor_tree_iter])
     generate_item_store_row_label(item_store[self._starters_tree_iter])
     generate_item_store_row_label(item_store[self._recruitment_tree_iter])
     generate_item_store_row_label(item_store[self._world_map_tree_iter])
     generate_item_store_row_label(item_store[self._rank_list_tree_iter])
     generate_item_store_row_label(item_store[self._menu_list_tree_iter])
     generate_item_store_row_label(item_store[self._sp_effects_tree_iter])
     generate_item_store_row_label(item_store[self._dun_inter_tree_iter])
     generate_item_store_row_label(item_store[self._animations_tree_iter])
     generate_item_store_row_label(
         item_store[self._dungeon_music_tree_iter])
     generate_item_store_row_label(
         item_store[self._misc_settings_tree_iter])
     generate_item_store_row_label(
         item_store[self._guest_pokemon_root_iter])
     generate_item_store_row_label(
         item_store[self._special_episodes_root_iter])
     generate_item_store_row_label(item_store[self._tactics_root_iter])
     generate_item_store_row_label(item_store[self._iq_tree_iter])
     self._tree_model = item_store
コード例 #16
0
ファイル: module.py プロジェクト: SkyTemple/skytemple
    def load_tree_items(self, item_store: TreeStore, root_node):
        # -> Script [main]
        root = item_store.append(root_node, [
            'skytemple-e-ground-symbolic', SCRIPT_SCENES, self, MainController,
            0, False, '', True
        ])
        self._root = root

        self._tree_model = item_store

        #    -> Common [common]
        item_store.append(root, [
            'skytemple-e-script-symbolic', SCRIPT_SCRIPTS, self, SsbController,
            0, False, '', True
        ])

        sub_nodes = {
            'S':
            item_store.append(root, [
                'skytemple-folder-symbolic',
                _('S - System'), self, FolderController,
                _('S - System'), False, '', True
            ]),
            'T':
            item_store.append(root, [
                'skytemple-folder-symbolic',
                _('T - Town'), self, FolderController,
                _('T - Town'), False, '', True
            ]),
            'D':
            item_store.append(root, [
                'skytemple-folder-symbolic',
                _('D - Dungeon'), self, FolderController,
                _('D - Dungeon'), False, '', True
            ]),
            'G':
            item_store.append(root, [
                'skytemple-folder-symbolic',
                _('G - Guild'), self, FolderController,
                _('G - Guild'), False, '', True
            ]),
            'H':
            item_store.append(root, [
                'skytemple-folder-symbolic',
                _('H - Habitat'), self, FolderController,
                _('H - Habitat'), False, '', True
            ]),
            'P':
            item_store.append(root, [
                'skytemple-folder-symbolic',
                _('P - Places'), self, FolderController,
                _('P - Places'), False, '', True
            ]),
            'V':
            item_store.append(root, [
                'skytemple-folder-symbolic',
                _('V - Visual'), self, FolderController,
                _('V - Visual'), False, '', True
            ])
        }
        # Other
        other = item_store.append(root, [
            'skytemple-folder-symbolic',
            _('Others'), self, FolderController, None, False, '', True
        ])
        self._other_node = other
        self._sub_nodes = sub_nodes

        for i, map_obj in enumerate(
                self.script_engine_file_tree['maps'].values()):
            parent = other
            if map_obj['name'][0] in sub_nodes.keys():
                parent = sub_nodes[map_obj['name'][0]]
            self._map_ssas[map_obj['name']] = {}
            self._map_ssss[map_obj['name']] = {}
            #    -> (Map Name) [map]
            map_root = item_store.append(parent, [
                'skytemple-folder-symbolic', map_obj['name'], self,
                MapController, map_obj['name'], False, '', True
            ])
            self._map_scene_root[map_obj['name']] = map_root

            if map_obj['enter_sse'] is not None:
                #          -> Enter [sse]
                self._map_sse[map_obj['name']] = item_store.append(
                    map_root, [
                        'skytemple-e-ground-symbolic',
                        _('Enter (sse)'), self, SsaController, {
                            'map': map_obj['name'],
                            'file':
                            f"{SCRIPT_DIR}/{map_obj['name']}/{map_obj['enter_sse']}",
                            'type': 'sse',
                            'scripts': map_obj['enter_ssbs'].copy()
                        }, False, '', True
                    ])

            #       -> Acting Scripts [lsd]
            acting_root = item_store.append(map_root, [
                'skytemple-folder-open-symbolic',
                _('Acting (ssa)'), self, LsdController, map_obj['name'], False,
                '', True
            ])
            self._acting_roots[map_obj['name']] = acting_root
            for ssa, ssb in map_obj['ssas']:
                stem = ssa[:-len(SSA_EXT)]
                #             -> Scene [ssa]
                filename = f"{SCRIPT_DIR}/{map_obj['name']}/{ssa}"
                self._map_ssas[map_obj['name']][filename] = item_store.append(
                    acting_root, [
                        'skytemple-e-ground-symbolic', stem, self,
                        SsaController, {
                            'map': map_obj['name'],
                            'file': filename,
                            'type': 'ssa',
                            'scripts': [ssb]
                        }, False, '', True
                    ])

            #       -> Sub Scripts [sub]
            sub_root = item_store.append(map_root, [
                'skytemple-folder-open-symbolic',
                _('Sub (sss)'), self, SubController, map_obj['name'], False,
                '', True
            ])
            self._sub_roots[map_obj['name']] = sub_root
            for sss, ssbs in map_obj['subscripts'].items():
                stem = sss[:-len(SSS_EXT)]
                #             -> Scene [sss]
                filename = f"{SCRIPT_DIR}/{map_obj['name']}/{sss}"
                self._map_ssss[map_obj['name']][filename] = item_store.append(
                    sub_root, [
                        'skytemple-e-ground-symbolic', stem, self,
                        SsaController, {
                            'map': map_obj['name'],
                            'file': filename,
                            'type': 'sss',
                            'scripts': ssbs.copy()
                        }, False, '', True
                    ])

        recursive_generate_item_store_row_label(self._tree_model[root])
コード例 #17
0
ファイル: module.py プロジェクト: retke/skytemple
    def load_tree_items(self, item_store: TreeStore, root_node):
        root = item_store.append(root_node, [
            'skytemple-e-mapbg-symbolic', MAPBG_NAME, self, MainController, 0,
            False, '', True
        ])
        sub_nodes = {
            'S':
            item_store.append(root, [
                'skytemple-folder-symbolic', 'S - System', self,
                FolderController, 'S - System', False, '', True
            ]),
            'T':
            item_store.append(root, [
                'skytemple-folder-symbolic', 'T - Town', self,
                FolderController, 'T - Town', False, '', True
            ]),
            'D':
            item_store.append(root, [
                'skytemple-folder-symbolic', 'D - Dungeon', self,
                FolderController, 'D - Dungeon', False, '', True
            ]),
            'G':
            item_store.append(root, [
                'skytemple-folder-symbolic', 'G - Guild', self,
                FolderController, 'G - Guild', False, '', True
            ]),
            'H':
            item_store.append(root, [
                'skytemple-folder-symbolic', 'H - Habitat', self,
                FolderController, 'H - Habitat', False, '', True
            ]),
            'P':
            item_store.append(root, [
                'skytemple-folder-symbolic', 'P - Places', self,
                FolderController, 'P - Places', False, '', True
            ]),
            'V':
            item_store.append(root, [
                'skytemple-folder-symbolic', 'V - Visual', self,
                FolderController, 'V - Visual', False, '', True
            ]),
            'W':
            item_store.append(root, [
                'skytemple-folder-symbolic', 'W - Weather', self,
                FolderController, 'W - Weather', False, '', True
            ])
        }
        # Other
        other = item_store.append(root, [
            'skytemple-folder-symbolic', 'Other', self, FolderController, None,
            False, '', True
        ])
        self._tree_model = item_store
        self._tree_level_iter = []
        for i, level in enumerate(self.bgs.level):
            parent = other
            if level.bma_name[0] in sub_nodes.keys():
                parent = sub_nodes[level.bma_name[0]]
            self._tree_level_iter.append(
                item_store.append(
                    parent,
                    [
                        # TODO: Name from Strings
                        'skytemple-e-mapbg-symbolic',
                        level.bma_name,
                        self,
                        BgController,
                        i,
                        False,
                        '',
                        True
                    ]))

        recursive_generate_item_store_row_label(self._tree_model[root])
コード例 #18
0
ファイル: module.py プロジェクト: SkyTemple/skytemple
    def load_tree_items(self, item_store: TreeStore, root_node):
        self.dungeon_bin_context = self.project.open_file_in_rom(
            DUNGEON_BIN_PATH,
            FileType.DUNGEON_BIN,
            static_data=self.project.get_rom_module().get_static_data(),
            threadsafe=True)
        with self.dungeon_bin_context as dungeon_bin:
            self.list_of_wtes_dungeon_bin = dungeon_bin.get_files_with_ext(
                WTE_FILE_EXT)
            self.list_of_wtus_dungeon_bin = dungeon_bin.get_files_with_ext(
                WTU_FILE_EXT)
            self.list_of_zmappats_dungeon_bin = dungeon_bin.get_files_with_ext(
                ZMAPPAT_FILE_EXT)

        root = item_store.append(root_node, [
            'skytemple-e-graphics-symbolic', MISC_GRAPHICS, self,
            MainController, 0, False, '', True
        ])
        self._tree_model = item_store
        self._tree_level_iter = {}
        self._tree_level_dungeon_iter = {}

        # chr at the beginning:
        for i, name in enumerate(self.list_of_chrs):
            self._tree_level_iter[name] = item_store.append(
                root, [
                    'skytemple-e-graphics-symbolic', name, self, ChrController,
                    name, False, '', True
                ])

        sorted_entries = {}
        for name in self.list_of_w16s:
            sorted_entries[name] = False
        for name in self.list_of_wtes:
            sorted_entries[name] = True
        sorted_entries = {
            k: v
            for k, v in sorted(sorted_entries.items(),
                               key=lambda item: item[0])
        }

        for i, (name, is_wte) in enumerate(sorted_entries.items()):
            if not is_wte:
                self._tree_level_iter[name] = item_store.append(
                    root, [
                        'skytemple-e-graphics-symbolic', name, self,
                        W16Controller,
                        self.list_of_w16s.index(name), False, '', True
                    ])
            else:
                wtu_name = name[:-3] + WTU_FILE_EXT
                if wtu_name not in self.list_of_wtus:
                    wtu_name = None
                self._tree_level_iter[name] = item_store.append(
                    root, [
                        'skytemple-e-graphics-symbolic', name, self,
                        WteWtuController,
                        WteOpenSpec(name, wtu_name, False), False, '', True
                    ])

        # fonts at the end:
        for i, name in enumerate(self.list_of_font_dats):
            spec = FontOpenSpec(name, None, FontType.FONT_DAT)
            self._tree_level_iter[spec.get_row_name()] = item_store.append(
                root, [
                    'skytemple-e-graphics-symbolic',
                    spec.get_row_name(), self, FontController, spec, False, '',
                    True
                ])

        for i, name in enumerate(self.list_of_font_sir0s):
            spec = FontOpenSpec(name, None, FontType.FONT_SIR0)
            self._tree_level_iter[spec.get_row_name()] = item_store.append(
                root, [
                    'skytemple-e-graphics-symbolic',
                    spec.get_row_name(), self, FontController, spec, False, '',
                    True
                ])

        for i, name in enumerate(self.list_of_banner_fonts):
            for assoc in FONT_PAL_ASSOC:
                if name == assoc[0]:
                    none_assoc = False
                    pal_name = assoc[1]
                    if pal_name not in self.list_of_bins:
                        pal_name = None
                    if not none_assoc or pal_name != None:
                        if pal_name == None:
                            none_assoc = True
                        spec = FontOpenSpec(name, pal_name,
                                            FontType.BANNER_FONT)
                        self._tree_level_iter[
                            spec.get_row_name()] = item_store.append(
                                root, [
                                    'skytemple-e-graphics-symbolic',
                                    spec.get_row_name(), self, FontController,
                                    spec, False, '', True
                                ])

        for i, name in enumerate(self.list_of_graphic_fonts):
            pal_name = name[:-3] + PAL_FILE_EXT
            if pal_name not in self.list_of_pals:
                pal_name = None
            spec = FontOpenSpec(name, pal_name, FontType.GRAPHIC_FONT)
            self._tree_level_iter[spec.get_row_name()] = item_store.append(
                root, [
                    'skytemple-e-graphics-symbolic',
                    spec.get_row_name(), self, GraphicFontController, spec,
                    False, '', True
                ])

        # dungeon bin entries at the end:
        for i, name in enumerate(
                self.list_of_wtes_dungeon_bin):  # type: ignore
            wtu_name = name[:-3] + WTU_FILE_EXT
            if name[:-3] + WTU_FILE_EXT not in self.list_of_wtus_dungeon_bin:  # type: ignore
                wtu_name = None
            self._tree_level_dungeon_iter[name] = item_store.append(
                root, [
                    'skytemple-e-graphics-symbolic', 'dungeon.bin:' + name,
                    self, WteWtuController,
                    WteOpenSpec(name, wtu_name, True), False, '', True
                ])
        # zmappat at the end:
        for i, name in enumerate(
                self.list_of_zmappats_dungeon_bin):  # type: ignore
            self._tree_level_dungeon_iter[name] = item_store.append(
                root, [
                    'skytemple-e-graphics-symbolic', 'dungeon.bin:' + name,
                    self, ZMappaTController, name, False, '', True
                ])

        # cart removed at the end:
        self._tree_level_iter[CART_REMOVED_NAME] = item_store.append(
            root, [
                'skytemple-e-graphics-symbolic', CART_REMOVED_NAME, self,
                CartRemovedController, CART_REMOVED_NAME, False, '', True
            ])

        recursive_generate_item_store_row_label(
            self._tree_model[root])  # type: ignore