Holy87

Common Text Input

Sep 20th, 2020 (edited)
793
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #===============================================================================
  2. # Inserimento Semplice di Holy87
  3. # Difficoltà utente: ★★
  4. # Versione 1.0
  5. # Licenza: CC. Chiunque può scaricare, modificare, distribuire e utilizzare
  6. # lo script nei propri progetti, sia amatoriali che commerciali. Vietata
  7. # l'attribuzione impropria.
  8. #===============================================================================
  9. # Questo script permette ai maker di far inserire del testo al
  10. # giocatore e memorizzarlo all'interno di una VARIABILE DI GIOCO.
  11. #===============================================================================
  12. # ISTRUZIONI: inserire lo script sotto Materials, prima del Main. Richiede
  13. # lo script "Interfaccia Tastiera".
  14. #
  15. # ■ Utilizzo:
  16. # Esegui il comando evento "chiama script" e inserisci questo comando:
  17. # call_text_input(titolo, id_variabile[, max_caratteri[, opzioni]])
  18. # dove titolo è il testo mostrato come titolo della finestra ed id_variabile è
  19. # la variabile dove verrà memorizzato il testo. I parametri max_caratteri e
  20. # opzioni sono facoltativi. Esempio:
  21. # call_text_input("Dai un soprannome a \\N[1]", 15, 20)
  22. # Mostrerà una finestra con titolo "Dai un soprannome a Eric", verrà memorizzato
  23. # nella variabile 15 e potrà avere massimo 20 caratteri. Come opzioni controlla
  24. # la guida nel sistema di input.
  25. #===============================================================================
  26.  
  27.  
  28. # --- NON MODIFICARE OLTRE SE NON SAI QUELLO CHE FAI! ---
  29.  
  30.  
  31. #===============================================================================
  32. # ** Window_CommonTextInput
  33. #-------------------------------------------------------------------------------
  34. # simple text input window that shows also the title
  35. #===============================================================================
  36. class Window_CommonTextInput < Window_TextInput
  37.   attr_accessor :variable_id
  38.  
  39.   # @param [Hash] options
  40.   def set_options(options)
  41.     @title = options[:title]
  42.     @variable_id = options[:variable_id]
  43.     initialize_input_parameters(options)
  44.     adjust_width
  45.     adjust_height
  46.     create_contents
  47.     center_window
  48.     refresh
  49.   end
  50.  
  51.   # input rectangle
  52.   # @return [Rect]
  53.   def text_input_rect
  54.     Rect.new(0, line_height, contents_width, line_height * (@max_lines ? @max_lines : 1))
  55.   end
  56.  
  57.   def refresh
  58.     contents.clear
  59.     draw_text_ex(0, 0, @title) if @title
  60.     super
  61.   end
  62.  
  63.   # adjusts width calculating the space required for text input
  64.   def adjust_width
  65.     self.width = [[text_size('O' * @max_characters).width + padding * 2,
  66.     @title ? text_size(@title).width + padding * 2 : 0].max, Graphics.width].min
  67.   end
  68.  
  69.   # adjust height regarting the number of lines
  70.   def adjust_height
  71.     self.height = fitting_height(1 + @max_lines)
  72.   end
  73.  
  74.   # centers the window on the screen
  75.   def center_window
  76.     self.x = (Graphics.width - self.width) / 2
  77.     self.y = (Graphics.height - self.height) / 2
  78.     refresh_cursor_position
  79.   end
  80. end
  81.  
  82. #===============================================================================
  83. # ** Scene_Map
  84. #===============================================================================
  85. class Scene_Map < Scene_Base
  86.   alias h87_ti_create_all_windows create_all_windows unless $@
  87.   alias h87_ti_scene_change_ok? scene_change_ok? unless $@
  88.   attr_accessor :text_input_window
  89.  
  90.   def create_all_windows
  91.     h87_ti_create_all_windows
  92.     create_text_input_window
  93.   end
  94.  
  95.   # can change scene?
  96.   # @return [TrueClass, FalseClass]
  97.   def scene_change_ok?
  98.     return false if @text_input_window.active?
  99.     h87_ti_scene_change_ok?
  100.   end
  101.  
  102.   # creates the text input window
  103.   def create_text_input_window
  104.     @text_input_window = Window_CommonTextInput.new(0, 0, 100, 100)
  105.     @text_input_window.openness = 0
  106.   end
  107. end
  108.  
  109. #===============================================================================
  110. # ** Game_Player
  111. #===============================================================================
  112. class Game_Player < Game_Character
  113.   alias h87_ti_movable? movable? unless $@
  114.  
  115.   # player movable?
  116.   def movable?
  117.     return false if SceneManager.scene_is?(Scene_Map) and SceneManager.scene.text_input_window.active?
  118.     h87_ti_movable?
  119.   end
  120. end
  121.  
  122. #===============================================================================
  123. # ** Game_Interpreter
  124. #===============================================================================
  125. class Game_Interpreter
  126.   # calls the text input process
  127.   # calls the text input window
  128.   # @param [String] title
  129.   # @param [Fixnum] variable_id
  130.   # @param [Fixnum] max_char
  131.   # @param [Hash] options
  132.   def call_text_input(title, variable_id, max_char = 20, options = {})
  133.     return unless SceneManager.scene_is?(Scene_Map)
  134.     options[:max_characters] = max_char
  135.     options[:variable_id] = variable_id
  136.     options[:title] = title
  137.     text_input_window.set_options(options)
  138.     text_input_window.set_done_handler(method(:done_typing))
  139.     text_input_window.open
  140.     text_input_window.activate
  141.   end
  142.  
  143.   # @return [Window_CommonTextInput]
  144.   def text_input_window
  145.     SceneManager.scene.text_input_window
  146.   end
  147.  
  148.   # end the text input sequence and stores the data in the variable
  149.   def done_typing
  150.     variable_id = text_input_window.variable_id
  151.     $game_variables[variable_id] = text_input_window.text
  152.     text_input_window.close
  153.   end
  154. end
RAW Paste Data