diff --git a/conquest/conquest.py b/conquest/conquest.py index 83af876..8b8f4a8 100644 --- a/conquest/conquest.py +++ b/conquest/conquest.py @@ -177,13 +177,17 @@ class Conquest(commands.Cog): """Debug commands for making maps. Don't use unless directed to.""" pass - @_mapmaker_debug.command(name="recalculatecenter") - async def _mapmaker_debug_recalculatecenter(self, ctx: Context, region: int = None): - """Recaculate the center point for the given region. + @_mapmaker_debug.command(name="recalculate") + async def _mapmaker_debug_recalculate(self, ctx: Context, region: int = None): + """Recaculate the center point and weight for the given region. Processes all regions if region isn't specified.""" + if not self.mm: + await ctx.maybe_send_embed("No map currently being worked on") + return - await self.mm.recalculate_center(region) + async with ctx.typing(): + await self.mm.recalculate_region(region) await ctx.tick() @@ -398,6 +402,52 @@ class Conquest(commands.Cog): else: await ctx.maybe_send_embed(f"Failed to delete masks") + @_mapmaker_masks.command(name="cleanup", aliases=["reduce", "prune"]) + async def _mapmaker_masks_prune(self, ctx: Context): + """ + Removes deleted masks, and reduces the ID numbers down to the lowest available. + + Warning: Backup your files before running this. Any errors will break your masks. + """ + if not self.mm: + await ctx.maybe_send_embed("No map currently being worked on") + return + + masks_dir = self.mm.masks_path() + if not masks_dir.exists() or not masks_dir.is_dir(): + await ctx.maybe_send_embed("There are no masks") + return + + async with ctx.typing(): + result = await self.mm.prune_masks() + if result: + await ctx.maybe_send_embed(f"Pruned masks: {result}") + else: + await ctx.maybe_send_embed(f"Failed to cleanup masks") + + @_mapmaker_masks.command(name="convert") + async def _mapmaker_masks_convert(self, ctx: Context): + """ + Converts all mask images into 1-bit black-only masks. + + Warning: This may take a while. + """ + if not self.mm: + await ctx.maybe_send_embed("No map currently being worked on") + return + + masks_dir = self.mm.masks_path() + if not masks_dir.exists() or not masks_dir.is_dir(): + await ctx.maybe_send_embed("There are no masks") + return + + async with ctx.typing(): + result = await self.mm.convert_masks() + if result: + await ctx.maybe_send_embed(f"All masks converted") + else: + await ctx.maybe_send_embed(f"Failed to convert masks") + @_mapmaker_masks.command(name="merge", aliases=["combine"]) async def _mapmaker_masks_combine( self, ctx: Context, mask_list: Greedy[int], recommended=False