|
6 | 6 | from core.dynmap import Dynmap |
7 | 7 | from core.dynmapcoords import DynmapCoords |
8 | 8 | from core.gridref import GridRef |
| 9 | +from core.journeymap import JourneyMap |
9 | 10 | from core.map import Map |
10 | 11 | from core.state import State |
11 | 12 | from models.config import Config |
@@ -132,14 +133,55 @@ def download(self): |
132 | 133 | except Exception: |
133 | 134 | self.view.display_error('Failed to download tiles') |
134 | 135 | return |
| 136 | + elif user_input['source'] == 'JourneyMap': |
| 137 | + if user_input['coord_mode'] == 'mc': |
| 138 | + from_region_x = int(input_range['from_x']) >> 4 >> 5 |
| 139 | + from_region_y = int(input_range['from_z']) >> 4 >> 5 |
| 140 | + to_region_x = int(input_range['to_x']) >> 4 >> 5 |
| 141 | + to_region_y = int(input_range['to_z']) >> 4 >> 5 |
| 142 | + elif user_input['coord_mode'] == 'grid': |
| 143 | + try: |
| 144 | + from_region_x, from_region_y = GridRef.grid_ref_to_mc(input_range['from']) |
| 145 | + except ValueError as e: |
| 146 | + self.view.display_error('From grid reference: {}'.format(str(e))) |
| 147 | + return |
| 148 | + |
| 149 | + try: |
| 150 | + to_region_x, to_region_y = GridRef.grid_ref_to_mc(input_range['to']) |
| 151 | + except ValueError as e: |
| 152 | + self.view.display_error('To grid reference: {}'.format(str(e))) |
| 153 | + return |
| 154 | + elif user_input['coord_mode'] == 'dynmap': |
| 155 | + self.view.display_error('Dynmap tile coordinates cannot be used with JourneyMap source') |
| 156 | + return |
| 157 | + else: |
| 158 | + self.view.display_error('Invalid coordinate mode') |
| 159 | + return |
| 160 | + |
| 161 | + low_region_x = min(from_region_x, to_region_x) |
| 162 | + low_region_y = min(from_region_y, to_region_y) |
| 163 | + high_region_x = max(from_region_x, to_region_x) |
| 164 | + high_region_y = max(from_region_y, to_region_y) |
135 | 165 |
|
136 | 166 | try: |
137 | | - Map.stitch(tiles_dir, user_input['output_dir'], stitch_args, self.update_progress) |
| 167 | + stitch_args = JourneyMap.download_tiles(tiles_dir, self.state.selected_server.journeymap_url, |
| 168 | + user_input['map_id'], input_range['zoom'], low_region_x, |
| 169 | + low_region_y, high_region_x, high_region_y, |
| 170 | + self.update_progress) |
138 | 171 | except Exception: |
139 | | - self.view.display_error('Failed to stitch tiles') |
| 172 | + self.view.display_error('Failed to download tiles') |
140 | 173 | return |
| 174 | + else: |
| 175 | + self.view.display_error('Invalid source') |
| 176 | + return |
| 177 | + |
| 178 | + try: |
| 179 | + Map.stitch(tiles_dir, user_input['output_dir'], stitch_args, self.update_progress) |
| 180 | + except Exception: |
| 181 | + self.view.display_error('Failed to stitch tiles') |
| 182 | + return |
141 | 183 |
|
142 | | - self.update_progress('Idle', 0, 1) |
| 184 | + self.update_progress('Idle', 0, 1) |
143 | 185 |
|
144 | 186 | def update_progress(self, message: str, i, total): |
145 | 187 | self.progress_msg = message |
|
0 commit comments