Advertisement
roninator2

Yanfly System Options - Addon - Sections

Nov 17th, 2024
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 16.67 KB | Source Code | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Yanfly System Options - Sections       ║  Version: 1.00     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║                                               ╠════════════════════╣
  7. # ║   Separate items into sections                ║    17 Nov 2024     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: Yanfly System Options                                    ║
  11. # ║ Supports: Yanfly System Options Full screen addon                  ║
  12. # ║ Supports: Roninator2 System Options Lists addon                    ║
  13. # ╚════════════════════════════════════════════════════════════════════╝
  14. # ╔════════════════════════════════════════════════════════════════════╗
  15. # ║ Brief Description:                                                 ║
  16. # ║       Create categories for the options to separate them           ║
  17. # ╚════════════════════════════════════════════════════════════════════╝
  18. # ╔════════════════════════════════════════════════════════════════════╗
  19. # ║ Instructions:                                                      ║
  20. # ║   Edit the categories below to suit your game                      ║
  21. # ║   Items used need to match Yanfly System Options list              ║
  22. # ║     as this script will overwrite options not selected if          ║
  23. # ║     they have been entered in here                                 ║
  24. # ║ Script Order:                                                      ║
  25. # ║    Yanfly System Options                                           ║
  26. # ║    Roninator2 System Options Lists addon (if used)                 ║
  27. # ║    This script                                                     ║
  28. # ╚════════════════════════════════════════════════════════════════════╝
  29. # ╔════════════════════════════════════════════════════════════════════╗
  30. # ║ Updates:                                                           ║
  31. # ║ 1.00 - 17 Nov 2024 - Script finished                               ║
  32. # ║                                                                    ║
  33. # ╚════════════════════════════════════════════════════════════════════╝
  34. # ╔════════════════════════════════════════════════════════════════════╗
  35. # ║ Credits and Thanks:                                                ║
  36. # ║   Roninator2                                                       ║
  37. # ║                                                                    ║
  38. # ╚════════════════════════════════════════════════════════════════════╝
  39. # ╔════════════════════════════════════════════════════════════════════╗
  40. # ║ Terms of use:                                                      ║
  41. # ║  Follow the original Authors terms of use where applicable         ║
  42. # ║    - When not made by me (Roninator2)                              ║
  43. # ║  Free for all uses in RPG Maker except nudity                      ║
  44. # ║  Anyone using this script in their project before these terms      ║
  45. # ║  were changed are allowed to use this script even if it conflicts  ║
  46. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  47. # ║  No part of this code can be used with AI programs or tools        ║
  48. # ║  Credit must be given                                              ║
  49. # ╚════════════════════════════════════════════════════════════════════╝
  50.  
  51. module YEA
  52.   module SYSTEM
  53.     SECTIONS =[
  54.       :window_settings,
  55.       :sound_settings,
  56.       :switches, # comment out if not using switches
  57.       :variables, # comment out if not using variables
  58. #~       :lists,  # only for my list expansion script
  59.       :custom1,
  60.       :custom2,
  61.     ] # Do not remove this.
  62.    
  63.     CUSTOM_LISTS ={} # delete this line if you use my list expansion script
  64.    
  65.     SECTIONS_COMMANDS ={
  66.       :window_settings  => [:window_red,
  67.                             :window_grn,
  68.                             :window_blu,
  69.                            ],
  70.       :sound_settings   => [:volume_bgm,
  71.                             :volume_bgs,
  72.                             :volume_sfx,
  73.                             ],
  74.       :switches         => [:switch_1,
  75.                             :switch_2,
  76.                             ],
  77.       :lists            => [:list_1,
  78.                             :list_2,
  79.                             ],
  80.       :variables        => [:variable_1,
  81.                             :variable_2,
  82.                             ],
  83.       :custom1          => [:autodash,
  84.                             :instantmsg,
  85.                             :animations,
  86.                             ],
  87.       :custom2          => [:to_title,
  88.                             :shutdown,
  89.                             ],
  90.     } # Do not remove this.
  91.    
  92.     SECTION_VOCAB ={
  93.     # -------------------------------------------------------------------------
  94.     # :command    => ["Command Name"],
  95.     # -------------------------------------------------------------------------
  96.       :window_settings      => ["Window"],
  97.     # -------------------------------------------------------------------------
  98.       :sound_settings       => ["Sound"],
  99.     # -------------------------------------------------------------------------
  100.       :switches             => ["Switches"],
  101.     # -------------------------------------------------------------------------
  102.       :variables            => ["Variables"],
  103.     # -------------------------------------------------------------------------
  104.       :lists                => ["Lists"],
  105.     # -------------------------------------------------------------------------
  106.       :custom1              => ["Marvelous"],
  107.     # -------------------------------------------------------------------------
  108.       :custom2              => ["Last One"],
  109.     # -------------------------------------------------------------------------
  110.     } # Do not remove this.
  111.    
  112.     SWAP_MESSAGE = "Press Q or W to switch <- category ->"
  113.   end
  114. end
  115. # ╔════════════════════════════════════════════════════════════════════╗
  116. # ║                      End of editable region                        ║
  117. # ╚════════════════════════════════════════════════════════════════════╝
  118.  
  119. #==============================================================================
  120. # ■ Window_SystemOptions
  121. #==============================================================================
  122.  
  123. class Window_SystemOptions < Window_Command
  124.  
  125.   #--------------------------------------------------------------------------
  126.   # initialize
  127.   #--------------------------------------------------------------------------
  128.   def initialize(help_window, section_window)
  129.     @section = 0
  130.     @help_window = help_window
  131.     @section_window = section_window
  132.     super(0, @help_window.height + @section_window.height)
  133.     refresh
  134.     change_color(system_color)
  135.     draw_text(0,height - 56,Graphics.width,24, YEA::SYSTEM::SWAP_MESSAGE, 0)
  136.   end
  137.  
  138.   #--------------------------------------------------------------------------
  139.   # window_height
  140.   #--------------------------------------------------------------------------
  141.   def window_height; return Graphics.height - @help_window.height - @section_window.height; end
  142.  
  143.   #--------------------------------------------------------------------------
  144.   # make_command_list
  145.   #--------------------------------------------------------------------------
  146.   def make_command_list
  147.     @help_descriptions = {}
  148.     sym = YEA::SYSTEM::SECTIONS[@section]
  149.     for command in YEA::SYSTEM::SECTIONS_COMMANDS[sym]
  150.       case command
  151.       when :blank
  152.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  153.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  154.       when :window_red, :window_grn, :window_blu
  155.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  156.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  157.       when :volume_bgm, :volume_bgs, :volume_sfx
  158.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  159.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  160.       when :autodash, :instantmsg, :animations
  161.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  162.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  163.       when :to_title, :shutdown
  164.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  165.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  166.       #--------------------------------------------------------------------------
  167.       #  Fullscreen++ Add-on
  168.       #--------------------------------------------------------------------------
  169.       when :fullscreen, :ratio
  170.         add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
  171.         @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]
  172.       #--------------------------------------------------------------------------
  173.       #  Fullscreen++ Add-on
  174.       #--------------------------------------------------------------------------
  175.       else
  176.         process_custom_list(command) if !YEA::SYSTEM::CUSTOM_LISTS.empty?
  177.         process_custom_switch(command)
  178.         process_custom_variable(command)
  179.       end
  180.     end
  181.   end
  182.  
  183.   #--------------------------------------------------------------------------
  184.   # find group to contol
  185.   #--------------------------------------------------------------------------
  186.   def swap(index)
  187.     @section = index
  188.     select(0)
  189.     refresh
  190.     change_color(system_color)
  191.     draw_text(0,height - 56,Graphics.width,24, YEA::SYSTEM::SWAP_MESSAGE, 0)
  192.   end
  193.  
  194. end
  195.  
  196. #==============================================================================
  197. # ■ Window_SystemSections
  198. #==============================================================================
  199.  
  200. class Window_SystemSections < Window_HorzCommand
  201.  
  202.   #--------------------------------------------------------------------------
  203.   # initialize
  204.   #--------------------------------------------------------------------------
  205.   def initialize(help_window)
  206.     @help_window = help_window
  207.     super(0, @help_window.height)
  208.     self.deactivate
  209.     refresh
  210.   end
  211.  
  212.   #--------------------------------------------------------------------------
  213.   # window_width
  214.   #--------------------------------------------------------------------------
  215.   def window_width; return Graphics.width; end
  216.  
  217.   #--------------------------------------------------------------------------
  218.   # window_height
  219.   #--------------------------------------------------------------------------
  220.   def window_height; return fitting_height(1); end
  221.  
  222.   #--------------------------------------------------------------------------
  223.   # make_command_list
  224.   #--------------------------------------------------------------------------
  225.   def make_command_list
  226.     for command in YEA::SYSTEM::SECTIONS
  227.       add_command(YEA::SYSTEM::SECTION_VOCAB[command][0], command)
  228.     end
  229.   end
  230.  
  231.   #--------------------------------------------------------------------------
  232.   # * Move Cursor One Page Down
  233.   #--------------------------------------------------------------------------
  234.   def cursor_pagedown(wrap = false)
  235.     if col_max >= 2 && (index < item_max - 1 || (wrap && horizontal?))
  236.       select((index + 1) % item_max)
  237.     end
  238.   end
  239.  
  240.   #--------------------------------------------------------------------------
  241.   # * Move Cursor One Page Up
  242.   #--------------------------------------------------------------------------
  243.   def cursor_pageup(wrap = false)
  244.     if col_max >= 2 && (index > 0 || (wrap && horizontal?))
  245.       select((index - 1 + item_max) % item_max)
  246.     end
  247.   end
  248.  
  249.   #--------------------------------------------------------------------------
  250.   # * Move Cursor Right
  251.   #--------------------------------------------------------------------------
  252.   def cursor_right(wrap = false)
  253.   end
  254.  
  255.   #--------------------------------------------------------------------------
  256.   # * Move Cursor Left
  257.   #--------------------------------------------------------------------------
  258.   def cursor_left(wrap = false)
  259.   end
  260.  
  261. end
  262.  
  263. class Scene_System < Scene_MenuBase
  264.  
  265.   #--------------------------------------------------------------------------
  266.   # start
  267.   #--------------------------------------------------------------------------
  268.   def start
  269.     super
  270.     create_help_window
  271.     create_section_window
  272.     create_command_window
  273.   end
  274.  
  275.   #--------------------------------------------------------------------------
  276.   # create_command_window
  277.   #--------------------------------------------------------------------------
  278.   def create_section_window
  279.     @section_window = Window_SystemSections.new(@help_window)
  280.     @section_window.deactivate
  281.   end
  282.  
  283.   #--------------------------------------------------------------------------
  284.   # create_command_window
  285.   #--------------------------------------------------------------------------
  286.   def create_command_window
  287.     @command_window = Window_SystemOptions.new(@help_window, @section_window)
  288.     @command_window.set_handler(:cancel, method(:return_scene))
  289.     @command_window.set_handler(:to_title, method(:command_to_title))
  290.     @command_window.set_handler(:shutdown, method(:command_shutdown))
  291.     @command_window.set_handler(:pagedown, method(:swap_left))
  292.     @command_window.set_handler(:pageup, method(:swap_right))
  293.   end
  294.  
  295.   #--------------------------------------------------------------------------
  296.   # swap_left
  297.   #--------------------------------------------------------------------------
  298.   def swap_left
  299.     @section_window.activate
  300.     @section_window.cursor_pagedown
  301.     @command_window.swap(@section_window.index)
  302.     @section_window.deactivate
  303.     @command_window.activate
  304.   end
  305.  
  306.   #--------------------------------------------------------------------------
  307.   # swap_right
  308.   #--------------------------------------------------------------------------
  309.   def swap_right
  310.     @section_window.activate
  311.     @section_window.cursor_pageup
  312.     @command_window.swap(@section_window.index)
  313.     @section_window.deactivate
  314.     @command_window.activate
  315.   end
  316.  
  317. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement