Advertisement
roninator2

Actor HUD on Map - Simple

Nov 20th, 2024
414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 11.16 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Actor HUD on Map                       ║  Version: 1.03a    ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║     Trimmed down version                      ╠════════════════════╣
  7. # ║    Show a HUD on the map                      ║    10 Oct 2021     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║        Allows to display actor data on screen                      ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║   Adjust the settings to your preference                           ║
  20. # ║   Not compatible with Vlue Sleek gauges                            ║
  21. # ╚════════════════════════════════════════════════════════════════════╝
  22. # ╔════════════════════════════════════════════════════════════════════╗
  23. # ║ Updates:                                                           ║
  24. # ║ 1.00 - 10 Oct 2021 - Script finished                               ║
  25. # ║ 1.01 - 12 Oct 2021 - Added more options                            ║
  26. # ║ 1.02 - 15 Oct 2021 - fixed not updating when removing actors       ║
  27. # ║ 1.03 - 16 Oct 2021 - reduced to minimum requested data             ║
  28. # ║                                                                    ║
  29. # ╚════════════════════════════════════════════════════════════════════╝
  30. # ╔════════════════════════════════════════════════════════════════════╗
  31. # ║ Credits and Thanks:                                                ║
  32. # ║   Roninator2                                                       ║
  33. # ║                                                                    ║
  34. # ╚════════════════════════════════════════════════════════════════════╝
  35. # ╔════════════════════════════════════════════════════════════════════╗
  36. # ║ Terms of use:                                                      ║
  37. # ║  Follow the original Authors terms of use where applicable         ║
  38. # ║    - When not made by me (Roninator2)                              ║
  39. # ║  Free for all uses in RPG Maker except nudity                      ║
  40. # ║  Anyone using this script in their project before these terms      ║
  41. # ║  were changed are allowed to use this script even if it conflicts  ║
  42. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  43. # ║  No part of this code can be used with AI programs or tools        ║
  44. # ║  Credit must be given                                              ║
  45. # ╚════════════════════════════════════════════════════════════════════╝
  46.  
  47. module R2_MAP_HUD
  48.   # Configure options
  49.  
  50.   Hud_X         = 0      # Hud Position
  51.   Hud_Y         = 300     # Hud Position
  52.   Hud_Width     = 300     # Hud Width
  53.   Hud_Height    = 120     # Hud Height
  54.  
  55.   Actor_Shown   = 0       # 0 = party leader, 1 = first follower
  56.  
  57.   Key_Cycle     = :CTRL   # Key to cycle actors
  58.   Use_Cycle     = true   # Option to use cycle control
  59.  
  60.   Show_Face     = true    # Show face graphic
  61.   Face_X        = 0       # Face graphic X position
  62.   Face_Y        = 0       # Face graphic Y position
  63.   Face_Index    = 0       # Index of face Graphic
  64.  
  65.   Show_HP       = true    # Show HP bar
  66.   HP_X          = 120     # HP bar X position
  67.   HP_Y          = 50      # HP bar Y position
  68.   HP_Width      = 124     # HP bar width
  69.   HP_Height     = 20      # HP bar heigth
  70.  
  71.   HP_Color1     = 22      # Set the HP color
  72.   HP_Color2     = 26      # Set the HP color
  73.  
  74.   Window_Opacity      = 0         # window visibility, does not affect contents
  75.   Window_Back_Opacity = 0         # Window background opacity
  76.   Window_Graphic      = "Window"  # Window Graphic file to use
  77.  
  78.   Font          = "Arial"
  79.   Font_Size     = 20
  80.  
  81.   Toggle        = :ALT
  82.   Toggle_Switch = 4 # if switch is on, hud can be displayed
  83.       # if switch is off hud cannot be displayed
  84.   Formation_Switch = 2 # switch to update hud when changing formation
  85. end
  86.  
  87. # ╔════════════════════════════════════════════════════════════════════╗
  88. # ║                      End of editable region                        ║
  89. # ╚════════════════════════════════════════════════════════════════════╝
  90.  
  91. class Actor_Hud_Window < Window_Base
  92.   def initialize(id)
  93.     x = R2_MAP_HUD::Hud_X
  94.     y = R2_MAP_HUD::Hud_Y
  95.     w = R2_MAP_HUD::Hud_Width
  96.     h = R2_MAP_HUD::Hud_Height
  97.     super(x,y,w,h)
  98.     self.windowskin = Cache.system(R2_MAP_HUD::Window_Graphic)
  99.     self.opacity = R2_MAP_HUD::Window_Opacity
  100.     self.back_opacity = R2_MAP_HUD::Window_Back_Opacity
  101.     self.contents_opacity = 255
  102.     @current_actor = id
  103.     @old_actor = 0
  104.     refresh
  105.   end
  106.  
  107.   def actor_data
  108.     switch_actor if @current_actor > ($game_party.members.size - 1)
  109.     @old_actor = @current_actor
  110.     @actor = $game_party.members[@current_actor]
  111.     face = R2_MAP_HUD::Face_Index > 0 ? R2_MAP_HUD::Face_Index : @actor.face_index
  112.     # actor image
  113.     draw_face(@actor.face_name, face, R2_MAP_HUD::Face_X, R2_MAP_HUD::Face_Y, enabled = true) if R2_MAP_HUD::Show_Face
  114.     width = R2_MAP_HUD::HP_Width
  115.     draw_actor_hud_hp(@actor, R2_MAP_HUD::HP_X, R2_MAP_HUD::HP_Y, width) if R2_MAP_HUD::Show_HP
  116.     @current_hp = @actor.hp
  117.   end
  118.  
  119.   def draw_actor_hud_hp(actor, x, y, width = 124, height = R2_MAP_HUD::HP_Height)
  120.     color1 = text_color(R2_MAP_HUD::HP_Color1)
  121.     color2 = text_color(R2_MAP_HUD::HP_Color2)
  122.     draw_gauge(x, y, width, actor.hp_rate, color1, color2)
  123.   end
  124.  
  125.   def draw_gauge(x, y, width, rate, color1, color2)
  126.     fill_w = (width * rate).to_i
  127.     gauge_y = y + line_height - 8
  128.     height = R2_MAP_HUD::HP_Height
  129.     contents.fill_rect(x, gauge_y, width, height, gauge_back_color)
  130.     contents.gradient_fill_rect(x, gauge_y, fill_w, height, color1, color2)
  131.   end
  132.  
  133.   def refresh
  134.     self.contents.clear
  135.     font = R2_MAP_HUD::Font
  136.     font_size = R2_MAP_HUD::Font_Size
  137.     self.contents.font = Font.new(font, font_size)
  138.     actor_data
  139.   end
  140.  
  141.   def hud_data_changed
  142.     return true if @current_actor != @old_actor
  143.     return true if @current_hp != @actor.hp
  144.     return false
  145.   end
  146.  
  147.   alias r2_hud_update_vlue    update
  148.   def update
  149.     refresh if hud_data_changed
  150.     r2_hud_update_vlue
  151.   end
  152.  
  153.   def switch_actor
  154.     @old_actor = @current_actor
  155.     @current_actor += 1
  156.     if @current_actor > ($game_party.members.size - 1 )
  157.       @current_actor = 0
  158.     end
  159.     update
  160.   end
  161.  
  162.   def c_actor
  163.     return @current_actor
  164.   end
  165.  
  166.   def formation_change(id)
  167.     @current_actor = id
  168.   end
  169. end
  170.  
  171. class Scene_Map < Scene_Base
  172.   alias r2_map_hud_start  start
  173.   def start
  174.     r2_map_hud_start
  175.     @map_hud_seen = true if @map_hud_seen.nil?
  176.     start_hud
  177.   end
  178.   def start_hud
  179.     @actor_shown = R2_MAP_HUD::Actor_Shown == 0 ? $game_party.leader : $game_party.members[R2_MAP_HUD::Actor_Shown] if @actor_shown.nil?
  180.     @map_hud = Actor_Hud_Window.new(@actor_shown.id)
  181.   end
  182.   alias r2_map_update_switch_actor    update
  183.   def update
  184.     r2_map_update_switch_actor
  185.     if $game_switches[R2_MAP_HUD::Toggle_Switch] == false
  186.       @map_hud.close
  187.     end
  188.     if Input.trigger?(R2_MAP_HUD::Toggle)
  189.       @map_hud_seen = !@map_hud_seen
  190.     end
  191.     if @map_hud_seen == false
  192.       @map_hud.close if @map_hud.open?
  193.     else
  194.       @map_hud.open if @map_hud.close?
  195.     end
  196.     if Input.trigger?(R2_MAP_HUD::Key_Cycle)
  197.       @map_hud.switch_actor if R2_MAP_HUD::Use_Cycle
  198.     end
  199.     hud_update if @actor_shown != $game_party.members[@map_hud.c_actor]
  200.     if $game_switches[R2_MAP_HUD::Formation_Switch] == true
  201.       @map_hud.formation_change(0)
  202.       @map_hud.refresh
  203.       @actor_shown = $game_party.members[0]
  204.       $game_switches[R2_MAP_HUD::Formation_Switch] = false
  205.     end
  206.   end
  207.   def hud_update
  208.     return if @actor_shown.nil?
  209.     @map_hud.refresh
  210.     @actor_shown = $game_party.members[@map_hud.c_actor]
  211.   end
  212. end
  213.  
  214. class Scene_Menu < Scene_MenuBase
  215.   alias r2_on_formation_ok_actor_hud  on_formation_ok
  216.   def on_formation_ok
  217.     r2_on_formation_ok_actor_hud
  218.     $game_switches[R2_MAP_HUD::Formation_Switch] = true
  219.   end
  220. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement