TextLabel click listener
parent
ec550683f8
commit
975948f068
|
@ -2,6 +2,7 @@ import pygame
|
|||
from pygame import Surface, Rect
|
||||
from pygame.font import Font
|
||||
|
||||
from sprite.BoundingBox import BoundingBox
|
||||
from sprite.PositionScale import PositionScale
|
||||
from ui_elements.UiElement import UiElement
|
||||
|
||||
|
@ -44,3 +45,31 @@ class TextLabel(UiElement):
|
|||
|
||||
def set_text(self, new_text: str):
|
||||
self.text = new_text
|
||||
|
||||
def collides_point(self, position):
|
||||
x, y = self.get_bounding_box().get_position()
|
||||
# check for the collision on the x-axis
|
||||
if position[1] < y:
|
||||
return False
|
||||
if position[1] > y + self.current_height:
|
||||
return False
|
||||
|
||||
# the y-axis check is dependent on the alignment
|
||||
|
||||
if position[0] < x:
|
||||
return False
|
||||
if position[0] > x + self.current_width:
|
||||
return False
|
||||
|
||||
# if the point is not outside the text, it is inside the text
|
||||
return True
|
||||
|
||||
def get_bounding_box(self) -> BoundingBox:
|
||||
bounding_box_x = self.x_position
|
||||
if self.alignment == "right":
|
||||
bounding_box_x = self.x_position - self.current_width
|
||||
elif self.alignment == "center":
|
||||
bounding_box_x = self.x_position - self.current_width / 2
|
||||
|
||||
return BoundingBox(bounding_box_x, self.y_position, self.current_width, self.current_height)
|
||||
|
||||
|
|
Loading…
Reference in New Issue