components_ui_label_metadata_CommunityRating.bs

import "pkg:/source/utils/misc.bs"

sub init()
  m.star = m.top.findNode("star")
  m.communityRating = m.top.findNode("communityRating")
  m.star.blendColor = m.global.constants.colorYellow

  ' 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 label node is initialized
  if not isValid(m.communityRating)
    m.communityRating = m.top.findNode("communityRating")
  end if

  if isValid(m.communityRating)
    ' Format rating to one decimal place
    m.communityRating.text = str(int(m.top.rating * 10) / 10)
  end if
end sub

sub onIconSizeChanged()
  if not isValid(m.star) then return
  if not isValid(m.communityRating) then return

  ' Update icon dimensions (both display and load dimensions for optimized texture memory)
  m.star.height = m.top.iconSize
  m.star.width = m.top.iconSize
  m.star.loadHeight = m.top.iconSize
  m.star.loadWidth = m.top.iconSize

  m.communityRating.translation = [m.top.iconSize - 8, 0]
end sub