def updateFocus(self): Updatable.updateFocus(self) if self.canFocus and not Updatable._focusIsChecked: if self.canUpdate and self.howFocus(): Widget.widgetFocus = self Updatable._focusIsChecked = True return
def update(self, render=None): if self.canUpdate: if self._event and self.isMoving: self.move(render.convertScreenCoordToTargetPoint(\ self._event.mousePos - self._mousePosMoving)) self._mousePosMoving = self._event.mousePos self.clear(self.backgroundColor) Updatable.updateFocus(self) Updatable.update(self) self.display() if render: render.draw(self._frameSprite)
def update(self, render=None): if not render: render = Updatable.getRender(self) if render and render is not self: if self._changeWindow: self.relativeSizeOnView = self.relativeSizeOnView self.relativeSizeOnView = self.relativeSizeOnView if self._isStaticToView: self.setPosStatic(self._posStatic, False) if self.isDrawing and render.isInView(self.getRect(True)): if type(self.clipRect) is sf.Rectangle: if self.clipChild: render.clipping(self.draw, self.clipRect, self.getPos(False), super().update) else: render.clipping(self.draw, self.clipRect, self.getPos(False)) super().update(render) else: self.draw(render) super().update(render) else: super().update(render) else: super().update(render)
def setAbsolutePosOnView(self, pos, withOrigin=True): render = Updatable.getRender(self) origin = sf.Vector2(0, 0) render = self.getRender() if render: self.setPos(pos + render.getViewPosition(), withOrigin) else: self.setPos(pos, withOrigin)
def getSizeOnScreen(self, withClipping=False): scale = sf.Vector2(1,1) render = Updatable.getRender(self) if render is not self: if render.view.size.x != 0 and render.view.size.y != 0: scale = render.sizeOnScreen / render.view.size * render.viewport.size return self.getSize(withClipping) * scale
def __init__(self, parent=0, rect=sf.Rectangle()): Updatable.__init__(self,parent) self._isDrawing = True self._isStaticToView = False self.canFocus = True self.movingAllChild = False self._posStatic = False self._origin = sf.Vector2(0,0) self._posOrigin = Position.TopLeft self._pos = sf.Vector2(rect.left,rect.top) self._size = rect.size self._scale = sf.Vector2(1,1) self._relativeSizeOnView = None self._relativePositionOnView = None self.clipRect = None self.clipChild = True
def update(self): """Update the Window. It Update all event, and update framerate. It Draw and display also all widgets child""" if self.canUpdate: self._event.update() self._framerate = 1/(self._event.elapsedTime*10**-6) if self._event.isResize: Render._setSize(self,self.size) if self.event._mouseMoved: Widget.widgetFocus = None if self.event._mouseMoved and self.event.isMouseInRect(self.rect): Updatable._focusIsChecked= False Updatable.updateFocus(self) Widget.update(self, self) self.display() self.clear(self.backgroundColor)
def __init__(self, img, position): Updatable.__init__(self, img, position) self.vel = Vec2d(0.0, 0.0) self.accel = Vec2d(0.0, 0.0) self.pos = position
def returnForUpdate(self, render=None, *args, **kwargs): if self.canUpdate: if not render: render = self.getRender() return function(self, render, *args, **kwargs) return Updatable.update(self, render, *args, **kwargs)
def howFocus(self): return isinstance(self._event, EventManager) and Updatable.getRender(self).isInView(self.rect) and \ self._event.isMouseInRect(self.getRectOnScreen(True))
def _setRelativeSizeOnView(self, scale, resetOrigin = True): render = Updatable.getRender(self) if render and scale: self._relativePositionOnView = None self.setSize(render.getViewSizeWithViewportWithZoom() * scale, resetOrigin) self._relativePositionOnView = scale
def _setRelativePositionOnView(self, scale): render = Updatable.getRender(self) if render and scale: self._relativePositionOnView = None self.pos = render.getViewSizeWithViewportWithZoom() * scale self._relativePositionOnView = scale
def getSizeOnView(self, withClipping=False): render = Updatable.getRender(self) if render: return self.getSize(withClipping) * render.size / render.view.size * render.viewport.size else: return self.getSize(withClipping)
def getPosOnScreen(self, withOrigin=True, withClipping=False): render = Updatable.getRender(self) if render is not None: return render.convertTargetPointToScreenCoord(self.getPos(withOrigin, withClipping)) else: return self.getPos(withOrigin, withClipping)
def setPosOnScreen(self, position, withOrigin=True): render = Updatable.getRender(self) if not self._isStaticToView and render: self.setPos(render.convertScreenCoordToTargetPoint(position), withOrigin) elif not render and not self._isStaticToView: self.setPos(position, withOrigin)