rest converted, time to fix maps
This commit is contained in:
parent
2315bd9fc3
commit
978d6f8627
@ -1,5 +1,6 @@
|
||||
import asyncio
|
||||
import json
|
||||
import logging
|
||||
import pathlib
|
||||
from collections import defaultdict
|
||||
from io import BytesIO
|
||||
@ -20,6 +21,8 @@ from conquest.regioner import ConquestMap, MapMaker, composite_regions
|
||||
|
||||
ERROR_CONQUEST_SET_MAP = "No map is currently set. See `[p]conquest set map`"
|
||||
|
||||
log = logging.getLogger("red.fox_v3.conquest")
|
||||
|
||||
|
||||
class Conquest(commands.Cog):
|
||||
"""
|
||||
@ -83,28 +86,28 @@ class Conquest(commands.Cog):
|
||||
"""
|
||||
self.asset_path = bundled_data_path(self) / "assets"
|
||||
for guild in self.bot.guilds:
|
||||
game_name = await self.config.guild(guild).current_game()
|
||||
if game_name is not None:
|
||||
await self.load_guild_data(guild, game_name)
|
||||
game_data = await self.config.guild(guild).current_game()
|
||||
if game_data is not None:
|
||||
await self.load_guild_data(guild, **game_data)
|
||||
|
||||
# for guild_id, game_name in self.current_maps.items():
|
||||
# await self.current_map_load(guild_id, game_name)
|
||||
|
||||
async def load_guild_data(self, guild: discord.Guild, game_name: str):
|
||||
map_data = await self.config.games.get_raw(game_name)
|
||||
if map_data is None:
|
||||
return False
|
||||
map_name = map_data["map_name"]
|
||||
map_path = self._path_if_custom(map_data["is_custom"]) / map_name
|
||||
async def load_guild_data(self, guild: discord.Guild, map_name: str, is_custom: bool):
|
||||
# map_data = await self.config.games.get_raw(game_name)
|
||||
# if map_data is None:
|
||||
# return False
|
||||
# map_name = map_data["map_name"]
|
||||
map_path = self._path_if_custom(is_custom) / map_name
|
||||
|
||||
if (
|
||||
not (self.current_map_folder / guild.id).exists()
|
||||
or not (self.current_map_folder / guild.id / map_name).exists()
|
||||
not (self.current_map_folder / str(guild.id)).exists()
|
||||
or not (self.current_map_folder / str(guild.id) / map_name).exists()
|
||||
):
|
||||
return False
|
||||
|
||||
self.current_games[guild.id] = ConquestGame(
|
||||
map_path, map_name, self.current_map_folder / guild.id / map_name
|
||||
map_path, map_name, self.current_map_folder / str(guild.id) / map_name
|
||||
)
|
||||
|
||||
return True
|
||||
@ -274,7 +277,7 @@ class Conquest(commands.Cog):
|
||||
return
|
||||
|
||||
self.mm = MapMaker(map_path)
|
||||
await self.mm.load_data()
|
||||
# await self.mm.load_data()
|
||||
|
||||
await ctx.tick()
|
||||
|
||||
@ -500,7 +503,7 @@ class Conquest(commands.Cog):
|
||||
|
||||
@conquest_set.command(name="map")
|
||||
async def _conquest_set_map(
|
||||
self, ctx: Context, mapname: str, is_custom: bool = False, reset: bool = False
|
||||
self, ctx: Context, mapname: str, reset: bool = False, is_custom: bool = False
|
||||
):
|
||||
"""
|
||||
Select a map from current available maps
|
||||
@ -516,9 +519,10 @@ class Conquest(commands.Cog):
|
||||
)
|
||||
return
|
||||
|
||||
self.current_games[ctx.guild.id] = ConquestGame(
|
||||
map_dir, mapname, self.current_map_folder / ctx.guild.id / mapname
|
||||
)
|
||||
guild_folder = self.current_map_folder / str(ctx.guild.id)
|
||||
if not guild_folder.exists():
|
||||
guild_folder.mkdir()
|
||||
self.current_games[ctx.guild.id] = ConquestGame(map_dir, mapname, guild_folder / mapname)
|
||||
|
||||
# self.current_map = mapname
|
||||
# self.is_custom = is_custom
|
||||
@ -529,6 +533,12 @@ class Conquest(commands.Cog):
|
||||
|
||||
await self.current_games[ctx.guild.id].resume_game(ctx, reset)
|
||||
|
||||
new_game = self.default_games.copy()
|
||||
new_game["map_name"] = mapname
|
||||
new_game["is_custom"] = is_custom
|
||||
|
||||
await self.config.guild(ctx.guild).current_game.set(new_game)
|
||||
|
||||
# current_map_folder = await self._get_current_map_folder()
|
||||
# current_map = current_map_folder / f"current.{self.ext}"
|
||||
#
|
||||
@ -603,7 +613,7 @@ class Conquest(commands.Cog):
|
||||
await ctx.maybe_send_embed(f"Invalid color {color}")
|
||||
return
|
||||
|
||||
if start_region < end_region:
|
||||
if start_region > end_region:
|
||||
start_region, end_region = end_region, start_region
|
||||
|
||||
if end_region > current_game.region_max or start_region < 1:
|
||||
@ -654,4 +664,3 @@ class Conquest(commands.Cog):
|
||||
map_file = await current_game.get_maybe_zoomed_map("current")
|
||||
|
||||
await ctx.send(file=map_file)
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
import asyncio
|
||||
import json
|
||||
import logging
|
||||
import pathlib
|
||||
from shutil import copyfile
|
||||
from types import SimpleNamespace
|
||||
@ -11,6 +12,8 @@ from redbot.core import commands
|
||||
|
||||
from conquest.regioner import ConquestMap, composite_regions
|
||||
|
||||
log = logging.getLogger("red.fox_v3.conquest.conquestgame")
|
||||
|
||||
|
||||
class ConquestGame:
|
||||
ext = "PNG"
|
||||
@ -35,7 +38,9 @@ class ConquestGame:
|
||||
self.numbered_current_map = self.current_map_folder / self.numbered_current_filename
|
||||
|
||||
self.zoomed_numbered_current_filename = f"current_zoomed_numbered.{self.ext}"
|
||||
self.zoomed_numbered_current_map = self.current_map_folder / self.zoomed_numbered_current_filename
|
||||
self.zoomed_numbered_current_map = (
|
||||
self.current_map_folder / self.zoomed_numbered_current_filename
|
||||
)
|
||||
|
||||
self.region_max = self.source_map.region_max
|
||||
|
||||
@ -64,7 +69,7 @@ class ConquestGame:
|
||||
async def _process_take_regions(self, color, regions):
|
||||
im = Image.open(self.current_map)
|
||||
|
||||
out: Image.Image = await composite_regions(
|
||||
out: Optional[Image.Image] = await composite_regions(
|
||||
im,
|
||||
regions,
|
||||
color,
|
||||
@ -74,7 +79,9 @@ class ConquestGame:
|
||||
# self.zoom_is_out_of_date.current = True
|
||||
|
||||
async def create_numbered_map(self):
|
||||
if not self.source_map.numbers_path().exists(): # No numbers map, can't add numbers to current
|
||||
if (
|
||||
not self.source_map.numbers_path().exists()
|
||||
): # No numbers map, can't add numbers to current
|
||||
return self.source_map.numbered_path()
|
||||
|
||||
current_map = Image.open(self.current_map)
|
||||
@ -92,7 +99,13 @@ class ConquestGame:
|
||||
return self.numbered_current_map
|
||||
|
||||
async def create_zoomed_map(
|
||||
self, x, y, zoom, source_map: Union[Image.Image, pathlib.Path], target_path: pathlib.Path, **kwargs
|
||||
self,
|
||||
x,
|
||||
y,
|
||||
zoom,
|
||||
source_map: Union[Image.Image, pathlib.Path],
|
||||
target_path: pathlib.Path,
|
||||
**kwargs,
|
||||
):
|
||||
"""Pass out_of_date when created a zoomed map based on something other than the settings json"""
|
||||
# if out_of_date:
|
||||
|
@ -1,5 +1,6 @@
|
||||
import asyncio
|
||||
import json
|
||||
import logging
|
||||
import pathlib
|
||||
import shutil
|
||||
from io import BytesIO
|
||||
@ -8,6 +9,8 @@ from typing import List, Union
|
||||
from PIL import Image, ImageChops, ImageColor, ImageDraw, ImageFont, ImageOps
|
||||
from PIL.ImageDraw import _color_diff
|
||||
|
||||
log = logging.getLogger("red.fox_v3.conquest.regioner")
|
||||
|
||||
|
||||
async def composite_regions(im, regions, color, masks_path) -> Union[Image.Image, None]:
|
||||
im2 = Image.new("RGB", im.size, color)
|
||||
@ -137,6 +140,8 @@ class ConquestMap:
|
||||
self.region_max = None
|
||||
self.regions = {}
|
||||
|
||||
self.load_data()
|
||||
|
||||
def masks_path(self):
|
||||
return self.path / "masks"
|
||||
|
||||
@ -152,7 +157,7 @@ class ConquestMap:
|
||||
def numbered_path(self):
|
||||
return self.path / "numbered.png"
|
||||
|
||||
async def load_data(self):
|
||||
def load_data(self):
|
||||
with self.data_path().open() as dp:
|
||||
data = json.load(dp)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user