Advertisement
roninator2

Yanfly System Options Addon - List Options

Nov 3rd, 2020 (edited)
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 13.57 KB | Source Code | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Yanfly System Options - List Options   ║  Version: 1.00     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║                                               ╠════════════════════╣
  7. # ║   Separate items into sections                ║    21 Jun 2019     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: Yanfly System Options                                    ║
  11. # ╚════════════════════════════════════════════════════════════════════╝
  12. # ╔════════════════════════════════════════════════════════════════════╗
  13. # ║ Brief Description:                                                 ║
  14. # ║       Variable text lists add-on for System Options                ║
  15. # ╚════════════════════════════════════════════════════════════════════╝
  16. # ╔════════════════════════════════════════════════════════════════════╗
  17. # ║ Instructions:                                                      ║
  18. # ║   Edit the categories below to suit your game                      ║
  19. # ║   You can specify in the Custom_Lists below which variable you     ║
  20. # ║   want to use and the text to be displayed.                        ║
  21. # ║   The text must be short,                                          ║
  22. # ║   otherwise you will have to adjust the script                     ║
  23. # ╚════════════════════════════════════════════════════════════════════╝
  24. # ╔════════════════════════════════════════════════════════════════════╗
  25. # ║ Updates:                                                           ║
  26. # ║ 1.00 - 21 Jun 2019 - Script finished                               ║
  27. # ║                                                                    ║
  28. # ╚════════════════════════════════════════════════════════════════════╝
  29. # ╔════════════════════════════════════════════════════════════════════╗
  30. # ║ Credits and Thanks:                                                ║
  31. # ║   Roninator2                                                       ║
  32. # ║                                                                    ║
  33. # ╚════════════════════════════════════════════════════════════════════╝
  34. # ╔════════════════════════════════════════════════════════════════════╗
  35. # ║ Terms of use:                                                      ║
  36. # ║  Follow the original Authors terms of use where applicable         ║
  37. # ║    - When not made by me (Roninator2)                              ║
  38. # ║  Free for all uses in RPG Maker except nudity                      ║
  39. # ║  Anyone using this script in their project before these terms      ║
  40. # ║  were changed are allowed to use this script even if it conflicts  ║
  41. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  42. # ║  No part of this code can be used with AI programs or tools        ║
  43. # ║  Credit must be given                                              ║
  44. # ╚════════════════════════════════════════════════════════════════════╝
  45.  
  46. module YEA
  47.   module SYSTEM
  48.     CUSTOM_LISTS ={
  49.     # -------------------------------------------------------------------------
  50.     # :list    => [Variable, Name, minimum, maximum, Color1, Color2,
  51.     #               Help Window Description, Value1, Value2, Value3, etc
  52.     #               ], # Do not remove this.
  53.     # -------------------------------------------------------------------------
  54.       :list_1  => [ 67, "Difficulty", 0, 3, 0, 7, "Change Difficulty?",
  55.                       "Easy", "Normal", "Heroic", "Legendary"
  56.                     ],
  57.     # -------------------------------------------------------------------------
  58.       :list_2  => [ 127, "Cursor", 0, 3, 0, 7, "Change the cursor for the menu.\n"+
  59.                       "Exit screen for change to take effect.",
  60.                       "Magic", "Crystal", "Hand", "None"
  61.                     ],
  62.     # -------------------------------------------------------------------------
  63.     } # Do not remove this.
  64.   end
  65. end
  66. # ╔════════════════════════════════════════════════════════════════════╗
  67. # ║                      End of editable region                        ║
  68. # ╚════════════════════════════════════════════════════════════════════╝
  69.  
  70.  
  71. class Window_SystemOptions < Window_Command
  72.   #--------------------------------------------------------------------------
  73.   # Overwrite * update_help
  74.   #--------------------------------------------------------------------------
  75.   def update_help
  76.     if current_symbol == :custom_switch || current_symbol == :custom_variable ||
  77.       current_symbol == :custom_list
  78.       text = @help_descriptions[current_ext]
  79.     else
  80.       text = @help_descriptions[current_symbol]
  81.     end
  82.     text = "" if text.nil?
  83.     @help_window.set_text(text)
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # new * process_custom_list
  87.   #--------------------------------------------------------------------------
  88.   def process_custom_list(command)
  89.     return unless YEA::SYSTEM::CUSTOM_LISTS.include?(command)
  90.     name = YEA::SYSTEM::CUSTOM_LISTS[command][1]
  91.     add_command(name, :custom_list, true, command)
  92.     @help_descriptions[command] = YEA::SYSTEM::CUSTOM_LISTS[command][6]
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # draw_item
  96.   #--------------------------------------------------------------------------
  97.   alias r2_draw_item_823gf  draw_item
  98.   def draw_item(index)
  99.     reset_font_settings
  100.     rect = item_rect(index)
  101.     contents.clear_rect(rect)
  102.     r2_draw_item_823gf(index)
  103.     case @list[index][:symbol]
  104.     when :custom_list
  105.       draw_custom_list(rect, index, @list[index][:ext])
  106.     end
  107.   end
  108.  
  109.   def item_height
  110.     line_height
  111.   end
  112.  
  113.   def line_height
  114.     return 23
  115.   end
  116.  
  117.   #--------------------------------------------------------------------------
  118.   # Overwrite * make_command_list
  119.   #--------------------------------------------------------------------------
  120.   def make_command_list
  121.     @help_descriptions = {}
  122.     for command in YEA::SYSTEM::COMMANDS
  123.       case command
  124.       when :blank
  125.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  126.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  127.       when :window_red, :window_grn, :window_blu
  128.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  129.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  130.       when :volume_bgm, :volume_bgs, :volume_sfx
  131.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  132.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  133.       when :autodash, :instantmsg, :animations
  134.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  135.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  136.       when :varmenu, :encyclopedia, :achievement, :stats, :overview, :cancel, :to_title, :shutdown
  137.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  138.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  139.       when :fullscreen
  140.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  141.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  142.       else
  143.         process_custom_list(command)
  144.         process_custom_switch(command)
  145.         process_custom_variable(command)
  146.       end
  147.     end
  148.   end
  149.    
  150.   #--------------------------------------------------------------------------
  151.   # New * draw_custom_list
  152.   #--------------------------------------------------------------------------
  153.   def draw_custom_list(rect, index, ext)
  154.     name = @list[index][:name]
  155.     change_color(normal_color)
  156.     draw_text(0, rect.y, contents.width/2, line_height, name, 1)
  157.     #---
  158.     value = $game_variables[YEA::SYSTEM::CUSTOM_LISTS[ext][0]]
  159.     minimum = YEA::SYSTEM::CUSTOM_LISTS[ext][2]
  160.     maximum = YEA::SYSTEM::CUSTOM_LISTS[ext][3]
  161.     if minimum > value
  162.       value = minimum
  163.       $game_variables[YEA::SYSTEM::CUSTOM_LISTS[ext][0]] = value
  164.     end
  165.     pos = 0
  166.     for i in minimum...maximum + 1
  167.       dx = -120
  168.       entry = YEA::SYSTEM::CUSTOM_LISTS[ext][pos + 7]
  169.       color1 = text_color(YEA::SYSTEM::CUSTOM_LISTS[ext][5].to_i)
  170.       change_color(color1)
  171.       draw_text(dx + contents.width/2 + contents.width/maximum*pos/2, rect.y, contents.width/maximum, line_height, entry, 1)
  172.       if value == i
  173.         color2 = text_color(YEA::SYSTEM::CUSTOM_LISTS[ext][4].to_i)
  174.         change_color(color2)
  175.         entry = YEA::SYSTEM::CUSTOM_LISTS[ext][pos + 7]
  176.         draw_text(dx + contents.width/2 + contents.width/maximum*pos/2, rect.y, contents.width/maximum, line_height, entry, 1)
  177.       end
  178.       pos += 1
  179.     end
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # cursor_change
  183.   #--------------------------------------------------------------------------
  184.   alias r2_cursor_change_92fkw  cursor_change
  185.   def cursor_change(direction)
  186.     r2_cursor_change_92fkw(direction)
  187.     case current_symbol
  188.     when :custom_list
  189.       change_custom_lists(direction)
  190.     end
  191.   end
  192.  
  193.   #--------------------------------------------------------------------------
  194.   # Overwrite * draw_item
  195.   #--------------------------------------------------------------------------
  196.   def draw_item(index)
  197.     reset_font_settings
  198.     contents.font.size = 20
  199.     rect = item_rect(index)
  200.     contents.clear_rect(rect)
  201.     case @list[index][:symbol]
  202.     when :blank
  203.     when :window_red, :window_grn, :window_blu
  204.       draw_window_tone(rect, index, @list[index][:symbol])
  205.     when :volume_bgm, :volume_bgs, :volume_sfx
  206.       rect.y -= 3
  207.       draw_volume(rect, index, @list[index][:symbol])
  208.     when :autodash, :instantmsg, :animations
  209.       draw_toggle(rect, index, @list[index][:symbol])
  210.     when :custom_switch
  211.       draw_custom_switch(rect, index, @list[index][:ext])
  212.     when :custom_variable
  213.       rect.y -= 3
  214.       draw_custom_variable(rect, index, @list[index][:ext])
  215.     when :fullscreen
  216.       draw_toggle(rect, index, @list[index][:symbol])
  217.     when :custom_list
  218.       draw_custom_list(rect, index, @list[index][:ext])
  219.     when :cancel, :varmenu, :encyclopedia, :achievement, :to_title, :shutdown, :stats, :overview
  220.       draw_text(item_rect_for_text(index), command_name(index), 1)
  221.     end
  222.   end
  223.   #--------------------------------------------------------------------------
  224.   # new * change_custom_lists
  225.   #--------------------------------------------------------------------------
  226.   def change_custom_lists(direction)
  227.     Sound.play_cursor
  228.     value = direction == :left ? -1 : 1
  229.     ext = current_ext
  230.     var = YEA::SYSTEM::CUSTOM_LISTS[ext][0]
  231.     minimum = YEA::SYSTEM::CUSTOM_LISTS[ext][2]
  232.     maximum = YEA::SYSTEM::CUSTOM_LISTS[ext][3]
  233.     $game_variables[var] += value
  234.     $game_variables[var] = [[$game_variables[var], minimum].max, maximum].min
  235.     draw_item(index)
  236.   end
  237.  
  238. end # Window_SystemOptions
  239.  
  240.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement