Holy87

Debug Frame VX

Jul 12th, 2013
89
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $imported = {} if $imported == nil
  2. $imported["H87_DebugConsolle"] = true
  3. #===============================================================================
  4. # TERMINALE DI DEBUG
  5. #===============================================================================
  6. # Autore: Holy87
  7. # Versione: 1.0
  8. #-------------------------------------------------------------------------------
  9. # Questo script è indirizzato fondamentalmente a scripters e a eventer esperti
  10. # quando per testare i loro script hanno bisogno di avere sotto controllo alcuni
  11. # parametri. Su VX Ace è già presente nativamente la finestra di terminale, con
  12. # cui vedere i messaggi nello script stampati con la funzione print(). Nel VX,
  13. # la funzione print() fa uscire un menu di popup che però interrompe il gioco,
  14. # e per messaggi multipli può essere piuttosto fastidioso. Questo script mostra
  15. # messaggi dagli script direttamente su schermo senza interrompere il gioco.
  16. #-------------------------------------------------------------------------------
  17. # Istruzioni:
  18. # Copiare lo script sotto Materials, prima del Main. Inserire negli script la
  19. # funzione DF.print("messaggio") per far mostrare una stringa sullo schermo.
  20. # Se scrivi DF.print("messaggio",true) la stringa sarà
  21. # di colore rosso (per evidenziare i messaggi che ritieni importanti)
  22. #-------------------------------------------------------------------------------
  23. # Note:
  24. # Questo script fa tutto e niente. Sbizzarritevi!
  25. # Il terminale viene mostrato solo se il gioco viene avviato in modalità Test.
  26. #-------------------------------------------------------------------------------
  27. # Compatibilità:
  28. # Scene_Base
  29. # - alias start, update, terminate
  30. #-------------------------------------------------------------------------------
  31.  
  32. module DF
  33.   module SETTINGS
  34. #===============================================================================
  35. # ** CONFIGURAZIONE **
  36. #===============================================================================
  37.     #Righe massime da mostrare. Oltre questo numero quelli precedenti verranno
  38.     # eliminati.
  39.     Max = 25
  40.    
  41.     #Tempo di scomparsa del terminale se non viene mostrato alcun messaggio.
  42.     FadeTime = 2200#in frame
  43.    
  44.     #Impostazioni del testo
  45.     Size = 15 #grandezza del testo
  46.     Line = 17 #altezza della riga
  47.    
  48.    
  49.    
  50.    
  51.   end
  52. #===============================================================================
  53. # ** FINE CONFIGURAZIONE **
  54. # Attenzione: Non modificare ciò che c'è oltre, a meno che tu non sappia ciò che
  55. # fai! C'è gente che si è suicidata per molto meno, fidati.
  56. #===============================================================================
  57.   def self.activated?
  58.     return $TEST
  59.   end
  60.  
  61.   #-----------------------------------------------------------------------------
  62.   # *chiamata
  63.   #-----------------------------------------------------------------------------
  64.   def self.print(line,red = false)
  65.     line.inspect.split(/[\r\n]+/).each { |riga|
  66.       $scene.push_debug_text(riga,red)
  67.     }
  68.   end
  69. end
  70.  
  71. #===============================================================================
  72. # ** Classe DebugFrame
  73. #===============================================================================
  74. class DebugFrame
  75.  
  76.   #-----------------------------------------------------------------------------
  77.   # * inizializzazione
  78.   #-----------------------------------------------------------------------------
  79.   def initialize(viewport)
  80.     if DF.activated?
  81.       @text = []
  82.       @sprite = Sprite.new(viewport)
  83.       @sprite.bitmap = nuovo_bitmap
  84.       @visible = true
  85.     else
  86.       @visible = false
  87.     end
  88.   end
  89.  
  90.   #-----------------------------------------------------------------------------
  91.   # * creazione della bitmap
  92.   #-----------------------------------------------------------------------------
  93.   def nuovo_bitmap(text = nil,red=false)
  94.     @timer = 0
  95.     @sprite.opacity = 255
  96.     bitmap = Bitmap.new(Graphics.width,Graphics.height)
  97.     bitmap.font.size = DF::SETTINGS::Size
  98.     line = DF::SETTINGS::Line
  99.     if text != nil and text != ""
  100.       bitmap.gradient_fill_rect(0,0,Graphics.width/2,line*@text.size,Color.new(0,0,0,150),Color.new(0,0,0,0))
  101.       for i in 0..text.size-1
  102.         if red
  103.           bitmap.font.color = Color.new(255,0,0)
  104.         else
  105.           bitmap.font.color = Color.new(255,255,255)
  106.         end
  107.         bitmap.draw_text(4,line*i,Graphics.width,line,text[i])
  108.       end
  109.     end
  110.     return bitmap
  111.   end
  112.  
  113.   #-----------------------------------------------------------------------------
  114.   # * aggiornamento
  115.   #-----------------------------------------------------------------------------
  116.   def update
  117.     return if DF::SETTINGS::FadeTime == 0
  118.     @timer += 1
  119.     if @timer > DF::SETTINGS::FadeTime
  120.       @sprite.opacity -= 1
  121.     end
  122.   end
  123.  
  124.   #-----------------------------------------------------------------------------
  125.   # * eliminazione
  126.   #-----------------------------------------------------------------------------
  127.   def dispose
  128.     @sprite.bitmap.dispose
  129.     @sprite.dispose
  130.   end  
  131.  
  132.   #-----------------------------------------------------------------------------
  133.   # * inserimento di una nuova riga
  134.   #-----------------------------------------------------------------------------
  135.   def push_text(line,red=false)
  136.     return unless DF.activated?
  137.     if @text.size < DF::SETTINGS::Max
  138.       @text.push(line.to_s)
  139.     else
  140.       for i in 1..@text.size-1
  141.         @text[i-1]=@text[i]
  142.       end
  143.       @text[i] = line
  144.     end
  145.     @sprite.bitmap = nuovo_bitmap(@text,red)
  146.   end
  147.  
  148.   #-----------------------------------------------------------------------------
  149.   # * layer z
  150.   #-----------------------------------------------------------------------------
  151.   def z=(value)
  152.     @sprite.z = value
  153.   end
  154. end
  155.  
  156. #===============================================================================
  157. # ** Classe Scene_Base
  158. #===============================================================================
  159. class Scene_Base
  160.   #-----------------------------------------------------------------------------
  161.   # * alias di start
  162.   #-----------------------------------------------------------------------------
  163.   alias h87_df_start start unless $@
  164.   def start
  165.     h87_df_start
  166.     if DF.activated?
  167.       @debugViewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  168.       @debugframe = DebugFrame.new(@debugViewport)
  169.       @debugViewport.z = 999
  170.     end
  171.   end
  172.  
  173.   #-----------------------------------------------------------------------------
  174.   # * inserimento del debug_text
  175.   #-----------------------------------------------------------------------------
  176.   def push_debug_text(line,red=false)
  177.     return if @debugframe == nil
  178.     @debugframe.push_text(line,red)
  179.   end
  180.  
  181.   #-----------------------------------------------------------------------------
  182.   # * aggiornamento
  183.   #-----------------------------------------------------------------------------
  184.   alias h87_df_update update unless $@
  185.   def update
  186.     h87_df_update
  187.     @debugframe.update if DF.activated?
  188.   end
  189.  
  190.   #-----------------------------------------------------------------------------
  191.   # * terminazione
  192.   #-----------------------------------------------------------------------------
  193.   alias h87_df_terminate terminate unless $@
  194.   def terminate
  195.     h87_df_terminate
  196.     if DF.activated?
  197.       @debugframe.dispose
  198.       @debugViewport.dispose
  199.     end
  200.   end
  201.  
  202. end #scene_base
RAW Paste Data