components_ui_label_metadata_CriticRating.bs
import "pkg:/source/utils/misc.bs"
sub init()
m.tomatoIcon = m.top.findNode("tomatoIcon")
m.criticRating = m.top.findNode("criticRating")
' Set initial text position based on iconSize
onIconSizeChanged()
end sub
sub onRatingChanged()
if not isValid(m.top.rating) then return
if m.top.rating = 0 then return
' Ensure nodes are initialized
if not isValid(m.criticRating)
m.criticRating = m.top.findNode("criticRating")
end if
if not isValid(m.tomatoIcon)
m.tomatoIcon = m.top.findNode("tomatoIcon")
end if
if isValid(m.criticRating)
m.criticRating.text = str(m.top.rating)
end if
' Select tomato icon based on rating
if isValid(m.tomatoIcon)
if m.top.rating > 60
m.tomatoIcon.uri = m.global.constants.iconTomatoFresh
else
m.tomatoIcon.uri = m.global.constants.iconTomatoRotten
end if
end if
end sub
sub onIconSizeChanged()
if not isValid(m.tomatoIcon) then return
if not isValid(m.criticRating) then return
' Update icon dimensions (both display and load dimensions for optimized texture memory)
m.tomatoIcon.height = m.top.iconSize
m.tomatoIcon.width = m.top.iconSize
m.tomatoIcon.loadHeight = m.top.iconSize
m.tomatoIcon.loadWidth = m.top.iconSize
' Update text position to maintain 0 horizontal spacing (no vertical offset)
m.criticRating.translation = [m.top.iconSize - 4, 0]
end sub