Zillion: apworld-compatible package data ()

* Zillion: apworld-compatible module data

* fixed `World` import
This commit is contained in:
Doug Hoskisson 2024-03-03 07:23:02 -08:00 committed by GitHub
parent 526eb09089
commit ef37ee81f9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 20 additions and 12 deletions
setup.py
typings/kivy/graphics
worlds/zillion

View File

@ -80,7 +80,6 @@ non_apworlds: set = {
"Super Mario 64", "Super Mario 64",
"VVVVVV", "VVVVVV",
"Wargroove", "Wargroove",
"Zillion",
} }
# LogicMixin is broken before 3.10 import revamp # LogicMixin is broken before 3.10 import revamp

View File

@ -10,4 +10,4 @@ class FillType_Drawable:
class Texture: class Texture:
pass size: FillType_Vec

View File

@ -25,7 +25,7 @@ from zilliandomizer.logic_components.items import RESCUE, items as zz_items, Ite
from zilliandomizer.logic_components.locations import Location as ZzLocation, Req from zilliandomizer.logic_components.locations import Location as ZzLocation, Req
from zilliandomizer.options import Chars from zilliandomizer.options import Chars
from ..AutoWorld import World, WebWorld from worlds.AutoWorld import World, WebWorld
class ZillionSettings(settings.Group): class ZillionSettings(settings.Group):

View File

@ -1,5 +1,7 @@
import asyncio import asyncio
import base64 import base64
import io
import pkgutil
import platform import platform
from typing import Any, ClassVar, Coroutine, Dict, List, Optional, Protocol, Tuple, cast from typing import Any, ClassVar, Coroutine, Dict, List, Optional, Protocol, Tuple, cast
@ -17,7 +19,7 @@ from zilliandomizer.options import Chars
from zilliandomizer.patch import RescueInfo from zilliandomizer.patch import RescueInfo
from .id_maps import loc_name_to_id, make_id_to_others from .id_maps import loc_name_to_id, make_id_to_others
from .config import base_id, zillion_map from .config import base_id
class ZillionCommandProcessor(ClientCommandProcessor): class ZillionCommandProcessor(ClientCommandProcessor):
@ -138,7 +140,9 @@ class ZillionContext(CommonContext):
from kvui import GameManager from kvui import GameManager
from kivy.core.text import Label as CoreLabel from kivy.core.text import Label as CoreLabel
from kivy.graphics import Ellipse, Color, Rectangle from kivy.graphics import Ellipse, Color, Rectangle
from kivy.graphics.texture import Texture
from kivy.uix.layout import Layout from kivy.uix.layout import Layout
from kivy.uix.image import CoreImage
from kivy.uix.widget import Widget from kivy.uix.widget import Widget
class ZillionManager(GameManager): class ZillionManager(GameManager):
@ -150,12 +154,21 @@ class ZillionContext(CommonContext):
class MapPanel(Widget): class MapPanel(Widget):
MAP_WIDTH: ClassVar[int] = 281 MAP_WIDTH: ClassVar[int] = 281
_number_textures: List[Any] = [] map_background: CoreImage
_number_textures: List[Texture] = []
rooms: List[List[int]] = [] rooms: List[List[int]] = []
def __init__(self, **kwargs: Any) -> None: def __init__(self, **kwargs: Any) -> None:
super().__init__(**kwargs) super().__init__(**kwargs)
FILE_NAME = "empty-zillion-map-row-col-labels-281.png"
image_file_data = pkgutil.get_data(__name__, FILE_NAME)
if not image_file_data:
raise FileNotFoundError(f"{__name__=} {FILE_NAME=}")
data = io.BytesIO(image_file_data)
self.map_background = CoreImage(data, ext="png")
assert self.map_background.texture.size[0] == ZillionManager.MapPanel.MAP_WIDTH
self.rooms = [[0 for _ in range(8)] for _ in range(16)] self.rooms = [[0 for _ in range(8)] for _ in range(16)]
self._make_numbers() self._make_numbers()
@ -176,10 +189,9 @@ class ZillionContext(CommonContext):
with self.canvas: with self.canvas:
Color(1, 1, 1, 1) Color(1, 1, 1, 1)
Rectangle(source=zillion_map, Rectangle(texture=self.map_background.texture,
pos=self.pos, pos=self.pos,
size=(ZillionManager.MapPanel.MAP_WIDTH, size=self.map_background.texture.size)
int(ZillionManager.MapPanel.MAP_WIDTH * 1.456))) # aspect ratio of that image
for y in range(16): for y in range(16):
for x in range(8): for x in range(8):
num = self.rooms[15 - y][x] num = self.rooms[15 - y][x]
@ -194,7 +206,7 @@ class ZillionContext(CommonContext):
def build(self) -> Layout: def build(self) -> Layout:
container = super().build() container = super().build()
self.map_widget = ZillionManager.MapPanel(size_hint_x=None, width=0) self.map_widget = ZillionManager.MapPanel(size_hint_x=None, width=ZillionManager.MapPanel.MAP_WIDTH)
self.main_area_container.add_widget(self.map_widget) self.main_area_container.add_widget(self.map_widget)
return container return container

View File

@ -1,4 +1 @@
import os
base_id = 8675309 base_id = 8675309
zillion_map = os.path.join(os.path.dirname(__file__), "empty-zillion-map-row-col-labels-281.png")