menu_helpers.lua 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. if UiContainer == nil then UiContainer = {} end
  2. print("ADD helpers")
  3. --- Populates a character data.
  4. --
  5. -- @param widget Name of the widget with the character data.
  6. -- @param character The character to get the data from. If nill, the character details will be
  7. -- hidden.
  8. UiContainer.populate_character_data = function(widget, character)
  9. if character == nil then
  10. ui_manager:get_widget(widget):set_visible(false)
  11. return 0
  12. end
  13. -- TODO: When MAX HP and MP values are fixed, use them instead of base.
  14. local char_id = character.char_id
  15. ui_manager:get_widget(widget):set_visible(true)
  16. -- Critical?
  17. if character.stats.hp.current == 0 then
  18. ui_manager:get_widget(widget .. ".Data.HpCurrent"):set_colour(1.0, 0, 0)
  19. elseif character.stats.hp.current <= character.stats.hp.base / 4 then
  20. ui_manager:get_widget(widget .. ".Data.HpCurrent"):set_colour(1.0, 1.0, 0)
  21. else
  22. ui_manager:get_widget(widget .. ".Data.HpCurrent"):set_colour(0.9, 0.9, 0.9)
  23. end
  24. -- Text data
  25. ui_manager:get_widget(widget .. ".Data.Name"):set_text(character.name)
  26. ui_manager:get_widget(widget .. ".Data.LvNumber"):set_text(tostring(character.level))
  27. ui_manager:get_widget(widget .. ".Data.HpCurrent"):set_text(tostring(character.stats.hp.current))
  28. ui_manager:get_widget(widget .. ".Data.HpMax"):set_text(tostring(character.stats.hp.base))
  29. ui_manager:get_widget(widget .. ".Data.MpCurrent"):set_text(tostring(character.stats.mp.current))
  30. ui_manager:get_widget(widget .. ".Data.MpMax"):set_text(tostring(character.stats.mp.base))
  31. -- Calculate the HP and MP bar.
  32. local max_hp_width= ui_manager:get_widget(widget .. ".Data.HpLine"):get_width()
  33. local hp_width = character.stats.hp.current * max_hp_width / character.stats.hp.base
  34. ui_manager:get_widget(widget .. ".Data.HpLineCurrent"):set_width(hp_width)
  35. local max_mp_width= ui_manager:get_widget(widget .. ".Data.MpLine"):get_width()
  36. local mp_width = character.stats.mp.current * max_mp_width / character.stats.mp.base
  37. ui_manager:get_widget(widget .. ".Data.MpLineCurrent"):set_width(mp_width)
  38. -- Status (Fury/Sadness)
  39. local fury = false
  40. local sadness = false
  41. for _, st in ipairs(character.status) do
  42. if st == 4 then
  43. sadness = true
  44. break
  45. elseif st == 5 then
  46. fury = true
  47. break
  48. end
  49. end
  50. if fury == true then
  51. ui_manager:get_widget(widget .. ".Data.Status"):set_colour(0.8, 0, 1)
  52. ui_manager:get_widget(widget .. ".Data.Status"):set_text("Fury")
  53. elseif sadness == true then
  54. ui_manager:get_widget(widget .. ".Data.Status"):set_colour(0.8, 0, 1)
  55. ui_manager:get_widget(widget .. ".Data.Status"):set_text("Sadness")
  56. elseif sadness == false and fury == false then
  57. ui_manager:get_widget(widget .. ".Data.Status"):set_colour(0.8, 0, 1)
  58. ui_manager:get_widget(widget .. ".Data.Status"):set_text("")
  59. end
  60. return 0
  61. end