Source code for RWESharp.widgets.TileSettingsViewport
from PySide6.QtCore import QPointF, QPoint
from RWESharp.widgets.SimpleViewport import SimpleViewport
from RWS.Core import CELLSIZE, SPRITESIZE
from PySide6.QtGui import QPixmap
[docs]
class TileSettingsViewport(SimpleViewport):
[docs]
def __init__(self, parent=None):
super().__init__(parent)
from BaseMod.tiles.tileUIConnectors import TileSettings
self.tilel1 = self.workscene.addPixmap(QPixmap())
self.tilel2 = self.workscene.addPixmap(QPixmap())
self.tilel3 = self.workscene.addPixmap(QPixmap())
self.colortable = None
self.drawoption = 0
self.ui: TileSettings | None = None
self.set_mappos()
[docs]
def add_manager(self, manager, ui):
super().add_manager(manager)
self.ui = ui
self.redraw()
[docs]
def redraw(self):
self.colortable = self.manager.basemod.tileview.colortable
tile = self.manager.tiles["Four Holes"]
self.tilel1.setPixmap(tile.return_tile_pixmap(self.drawoption, 0, self.colortable))
self.tilel2.setPixmap(tile.return_tile_pixmap(self.drawoption, 1, self.colortable))
self.tilel3.setPixmap(tile.return_tile_pixmap(self.drawoption, 2, self.colortable))
self.update_preview()
@property
def current_layer(self):
return self.ui.ui.LayerSlider.value()
[docs]
def update_preview(self):
if self.drawoption > 2:
self.tilel1.setOpacity((self.rp if self.current_layer == 0 else self.rs) / 255)
self.tilel2.setOpacity((self.rp if self.current_layer == 1 else self.rs) / 255)
self.tilel3.setOpacity((self.rp if self.current_layer == 2 else self.rs) / 255)
return
self.tilel1.setOpacity((self.np if self.current_layer == 0 else self.ns) / 255)
if self.current_layer == 1 and not self.ui.renderall.value:
self.tilel1.setOpacity(0)
self.tilel2.setOpacity((self.np if self.current_layer == 1 else self.ns) / 255)
if self.current_layer == 2 and not self.ui.renderall.value:
self.tilel1.setOpacity(0)
self.tilel2.setOpacity(0)
self.tilel3.setOpacity((self.np if self.current_layer == 2 else self.ns) / 255)
self.set_mapzoom()
@property
def rp(self):
return self.ui.rp.value if self.ui.ui.Pshow.isChecked() else 0
@property
def np(self):
return self.ui.np.value if self.ui.ui.Pshow.isChecked() else 0
@property
def rs(self):
return self.ui.rs.value if self.ui.ui.Sshow.isChecked() else 0
@property
def ns(self):
return self.ui.ns.value if self.ui.ui.Sshow.isChecked() else 0
[docs]
def set_pos(self, pos: QPointF | QPoint):
super().set_pos(pos)
self.set_mappos()
[docs]
def set_mappos(self):
self.tilel1.setPos(self.topleft.pos())
self.tilel2.setPos(self.topleft.pos() + QPoint(CELLSIZE, 0) * self.zoom)
self.tilel3.setPos(self.topleft.pos() + QPoint(CELLSIZE * 2, 0) * self.zoom)
[docs]
def wheelEvent(self, event):
super().wheelEvent(event)
self.set_mapzoom()
[docs]
def set_mapzoom(self):
self.tilel1.setScale(self.zoom * ((CELLSIZE / SPRITESIZE) if self.drawoption == 0 else 1))
self.tilel2.setScale(self.zoom * ((CELLSIZE / SPRITESIZE) if self.drawoption == 0 else 1))
self.tilel3.setScale(self.zoom * ((CELLSIZE / SPRITESIZE) if self.drawoption == 0 else 1))
self.tilel2.setData(0, 100)
[docs]
def update_option(self, option):
self.drawoption = option
self.redraw()