Source code for RWESharp.Renderable.RenderTile
from RWESharp.Renderable.RenderImage import RenderImage
from RWESharp.Loaders.Tile import Tile
from RWESharp.info import CELLSIZE
from PySide6.QtCore import QSize, QPoint, QPointF
from PySide6.QtGui import QPixmap
from PySide6.QtWidgets import QGraphicsPixmapItem
[docs]
class RenderTile(RenderImage):
[docs]
def __init__(self, module, depth, layer: int, add_renderable: bool = True):
super().__init__(module, depth, QSize(1, 1), add_renderable=False)
self.colsimage = QPixmap(1, 1)
self.colsimage_rendered = QGraphicsPixmapItem(self.colsimage)
self.layer = layer
self.tile = None
self.drawoption = 0
if add_renderable:
self.module.add_renderable(self)
[docs]
def set_tile(self, tile: Tile, colortable, option: int = 0):
self.drawoption = option
self.image = tile.return_tile_pixmap(self.drawoption, self.layer, colortable, False)
self.colsimage = tile.collisions_image()
self.redraw()
self.tile = tile
self.zoom_event()
[docs]
def redraw(self) -> None:
super().redraw()
self.colsimage_rendered.setPixmap(self.colsimage)
[docs]
def init_graphics(self, viewport):
super().init_graphics(viewport)
self.viewport.workscene.addItem(self.colsimage_rendered)
[docs]
def remove_graphics(self, viewport):
super().remove_graphics(viewport)
viewport.workscene.removeItem(self.colsimage_rendered)
[docs]
def move_event(self):
if self.tile is None:
return
super().move_event()
self.setPos(self.offset)
[docs]
def setPos(self, pos: QPointF):
super().setPos(pos)
self.colsimage_rendered.setPos(self.actual_offset)
if self.drawoption == 0:
self.renderedtexture.setPos(self.actual_offset)
return
self.renderedtexture.setPos(self.actual_offset - (QPoint(1, 1) * self.tile.bfTiles * CELLSIZE * self.zoom))
[docs]
def zoom_event(self):
self.colsimage_rendered.setScale(self.zoom)
self.scale = (20 / 16) if self.drawoption == 0 else 1
super().zoom_event()