11import logging
22import time
33from collections .abc import Callable
4+ from typing import TYPE_CHECKING
45
56from pygame .rect import Rect
67from pygame .surface import Surface
78
8- from pyscroll .common import surface_clipping_context
9+ from pyscroll .common import ColorRGB , ColorRGBA , surface_clipping_context
910from pyscroll .data import PyscrollDataAdapter
1011from pyscroll .group import Renderable
1112from pyscroll .orthographic import BufferedRenderer , _default_scaler
12- from pyscroll .sprite_manager import IsometricSpriteRenderer
13- from pyscroll .tile_renderer import IsometricTileRenderer
13+ from pyscroll .quadtree import FastQuadTree
14+ from pyscroll .sprite_manager import IsometricSpriteRenderer , SpriteRendererProtocol
15+ from pyscroll .tile_renderer import IsometricTileRenderer , TileRendererProtocol
1416from pyscroll .viewport import IsometricViewport
1517
1618log = logging .getLogger (__file__ )
@@ -39,9 +41,7 @@ def __init__(
3941 sprite_damage_height : int = 0 ,
4042 zoom : float = 1.0 ,
4143 ) -> None :
42-
4344 viewport = IsometricViewport (data , size , zoom , clamp_camera )
44-
4545 super ().__init__ (
4646 data = data ,
4747 size = size ,
@@ -55,13 +55,19 @@ def __init__(
5555 zoom = zoom ,
5656 viewport = viewport ,
5757 )
58-
59- self .tile_renderer = IsometricTileRenderer (data , colorkey , alpha )
60- self .sprite_renderer = IsometricSpriteRenderer ()
61-
6258 self ._last_offset : tuple [int , int ] | None = None
6359 self ._redraw_cutoff : int = 0
6460
61+ def _create_tile_renderer (
62+ self , colorkey : ColorRGB | None = None , alpha : bool = False
63+ ) -> TileRendererProtocol :
64+ return IsometricTileRenderer (self .data , colorkey , alpha )
65+
66+ def _create_sprite_renderer (
67+ self , data : PyscrollDataAdapter , layer_quadtree : FastQuadTree
68+ ) -> SpriteRendererProtocol :
69+ return IsometricSpriteRenderer ()
70+
6571 def redraw_tiles (self , surface : Surface ) -> None :
6672 """Redraw the entire visible portion of the isometric tile buffer."""
6773 tile_view = self .viewport .tile_view
0 commit comments