mapmapker back to conquest.py

conquest_develop
bobloy 5 years ago
parent 0b4e0310f9
commit 11258d3e76

@ -1,7 +1,6 @@
from redbot.core import data_manager
from .conquest import Conquest
from .mapmaker import MapMaker
async def setup(bot):
@ -9,7 +8,4 @@ async def setup(bot):
data_manager.bundled_data_path(cog)
await cog.load_data()
bot.add_cog(cog)
cog2 = MapMaker(bot)
bot.add_cog(cog2)
bot.add_cog(cog)

@ -2,7 +2,6 @@ import asyncio
import json
import os
import pathlib
from abc import ABC
from shutil import copyfile
from typing import Optional
@ -41,6 +40,9 @@ class Conquest(commands.Cog):
self.ext = None
self.ext_format = None
self.mm_current_map = None
self.mm_im = None
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@ -62,6 +64,47 @@ class Conquest(commands.Cog):
self.ext = self.map_data["extension"]
self.ext_format = "JPEG" if self.ext.upper() == "JPG" else self.ext.upper()
@commands.group()
async def mapmaker(self, ctx: commands.context):
"""
Base command for managing current maps or creating new ones
"""
if ctx.invoked_subcommand is None:
pass
@mapmaker.command(name="save")
async def _mapmaker_save(self, ctx: commands.Context, *, map_name: str):
"""Save the current map to the specified map name"""
@mapmaker.command(name="upload")
async def _mapmaker_upload(self, ctx: commands.Context, map_path=""):
"""Load a map image to be modified. Upload one with this command or provide a path"""
message: discord.Message = ctx.message
if not message.attachments and not map_path:
await ctx.maybe_send_embed(
"Either upload an image with this command or provide a path to the image"
)
return
if map_path:
map_path = pathlib.Path(map_path)
if not map_path.exist():
await ctx.maybe_send_embed("Map not found at that path")
return
self.mm_im = Image.open(map_path)
if message.attachments:
attch: discord.Attachment = message.attachments[0]
self.mm_im = Image.frombytes("RGBA", (attch.width, attch.height), attch.read())
@mapmaker.command(name="load")
async def _mapmaker_load(self, ctx: commands.Context, map_name=""):
"""Load an existing map to be modified."""
await ctx.maybe_send_embed("WIP")
@commands.group()
async def conquest(self, ctx: commands.Context):
"""

@ -2,11 +2,7 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
4,
0
],
"min_bot_version": "3.3.0",
"description": "Handle war games by filling in specified territories with colors",
"hidden": false,
"install_msg": "Thank you for installing Conquest. Get started with `[p]load conquest`, then `[p]help Conquest`",
@ -23,6 +19,8 @@
"axisandallies",
"heartsofiron",
"conquest",
"rpg"
"rpg",
"mapmaker",
"tool"
]
}

@ -1,50 +0,0 @@
import discord
from redbot.core import Config, commands
from redbot.core.bot import Red
class MapMaker(commands.Cog):
"""
Create Maps to be used with Conquest
"""
def __init__(self, bot: Red):
super().__init__()
self.bot = bot
self.config = Config.get_conf(
self, identifier=77971127797107101114, force_registration=True
)
default_guild = {}
default_global = {}
self.config.register_guild(**default_guild)
self.config.register_global(**default_global)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.group()
async def mapmaker(self, ctx: commands.context):
"""
Base command for managing current maps or creating new ones
"""
if ctx.invoked_subcommand is None:
pass
@mapmaker.command(name="upload")
async def _mapmaker_upload(self, ctx: commands.Context, map_path=""):
"""Load a map image to be modified. Upload one with this command or provide a path"""
message: discord.Message = ctx.message
if not message.attachments and not map_path:
await ctx.maybe_send_embed(
"Either upload an image with this command or provide a path to the image"
)
return
await ctx.maybe_send_embed("WIP")
@mapmaker.command(name="load")
async def _mapmaker_load(self, ctx: commands.Context, map_name=""):
"""Load an existing map to be modified."""
await ctx.maybe_send_embed("WIP")

@ -121,12 +121,15 @@ class Regioner:
already_processed.update(filled)
# TODO: save mask_centers to json
return self.create_number_mask(base_img, mask_centers)
def create_number_mask(self, base_img, mask_centers):
number_img = Image.new("L", base_img.size, 255)
fnt = ImageFont.load_default()
d = ImageDraw.Draw(number_img)
for mask_num, center in mask_centers.items():
d.text(center, str(mask_num), font=fnt, fill=0)
number_img.save(self.filepath / f"numbers.png", "PNG")
return mask_centers

Loading…
Cancel
Save