SHARE
TWEET

MenuTitle - Ace

Holy87 Aug 13th, 2013 562 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $imported = {} if $imported == nil
  2. $imported["H87_TitleMenu"] = true
  3. #==============================================================================
  4. # * New Menu Title v1.3
  5. # Creato da Holy 87
  6. # Difficoltà utente: ★★★
  7. #------------------------------------------------------------------------------
  8. # 13/08/2013 -> Versione 1.3 -> Possibilità di personalizzazione da altri script
  9. # 01/06/2012 -> Versione 1.1 -> Modifiche al cursore
  10. # 20/02/2012 -> Script finito
  11. # 16/02/2012 -> Script iniziato
  12. #------------------------------------------------------------------------------
  13. #  Questo script crea una nuova variante del menu nella schermata del Titolo.
  14. #==============================================================================
  15. # * ISTRUZIONI *
  16. #==============================================================================
  17. # Piazza lo scritp sotto Materials e prima del Main. Imposta le immagini che
  18. # verranno usate come icone, lo script ne adatterà automaticamente la posizione.
  19. #==============================================================================
  20. # * COMPATIBILITA' *
  21. #==============================================================================
  22. # Scene_Title > alias metodi: command_new_game; command_continue;
  23. # command_shutdown; create_command_window; update; terminate
  24. # Window_TitleCommand > riscrittura del metodo open
  25. #==============================================================================
  26. # PER FARE IN MODO DI AGGIUNGERE ALTRI MENU DAL TITOLO
  27. #==============================================================================
  28. # Nella classe scene_title, crea un alias al metodo crea_contenuti_personalizzati
  29. # aggiungendo un nuovo elemento, ad esempio:
  30.  
  31. # if $imported["H87_TitleMenu"]
  32. # alias metodo_aliasato crea_contenuti_personalizzati
  33. # def crea_contenuti_personalizzati
  34. #   metodo_aliasato
  35. #   add_cursor(:nomecursore,:metodo_chiamato,"immpulsante","immfumetto")
  36. # end;end
  37.  
  38. #==============================================================================
  39. module MT_Setup
  40. #==============================================================================
  41. # * CONFIGURAZIONE *
  42. #==============================================================================
  43. # * Preferenze del Menu
  44. #==============================================================================  
  45.   #Imposta l'altezza del menu rispetto allo schermo
  46.   AltezzaBarra = 190
  47.  
  48.   #Imposta la distanza in pixel tra gli oggetti del Menu
  49.   Distanza = 10
  50.  
  51. #==============================================================================
  52. # * Grafica degli Oggetti
  53. #==============================================================================
  54.   OBJGRAPH = {
  55.   :newgame => "T_New",   #Immagine del comando Nuovo Gioco
  56.   :load    => "T_Load",  #Immagine del comando Carica
  57.   :exit    => "T_Exit",  #Immagine del comando Esci
  58.   } # non rimuovere la parentesi!
  59.  
  60.   BALOONGRAPH = {
  61.   :newgame => "B_New",   #Immagine del Fumetto Nuovo Gioco
  62.   :load    => "B_Load",  #Immagine del Fumetto Carica
  63.   :exit    => "B_Exit",  #Immagine del Fumetto Esci
  64.   } # non rimuovere la parentesi!
  65.  
  66.   EVENTS = { #non modificare questo, sono i metodi che vengono chiamati
  67.   :newgame => "command_new_game", #comando nuova partita
  68.   :load    => "command_continue", #comando carica
  69.   :exit    => "command_shutdown", #comando esci
  70.   }
  71.  
  72.   #Immagine della barra di sfondo ai comandi.
  73.   BARGRAPH = "SfondoBarraTitle"
  74. #==============================================================================
  75. # * Preferenze Grafiche
  76. #==============================================================================
  77. #Vuoi che la comparsa del menu dei comandi sia animata?
  78.   Animazione = true
  79.  
  80. #Setta la velocità di apparizione dei comandi (solo se Animazione = true).
  81. #0: Contemporaneamente, 1: Velocissimo, 2: Veloce...
  82.   SPEEDANIM = 1
  83.  
  84.   #Setta la velotità del cursore nello spostamento(NON METTERE 0)
  85.   CursorSpeed = 3 #1: Istantaneo, 2: Velocissimo, 3: Veloce, 4:Lento...
  86.  
  87.   #Imposta la distanza da sinistra alla punta che avrà il fumetto.
  88.   DDP = 27
  89. #==============================================================================
  90. # * FINE DELLA CONFIGURAZIONE *
  91. # Non modificare oltre questa riga, se non sai cosa stai facendo!
  92. #==============================================================================
  93. end
  94.  
  95.  
  96.  
  97.  
  98.  
  99. #==============================================================================
  100. # * Classe Scene_Title
  101. #==============================================================================
  102. class Scene_Title < Scene_Base
  103.  
  104.   #--------------------------------------------------------------------------
  105.   # * Alias del metodo di Aggiornamento
  106.   #--------------------------------------------------------------------------
  107.   alias h87_cc_update update unless $@
  108.   def update
  109.     if Input.trigger?(:C) # Se si preme Invio
  110.       pressione_invio
  111.     end
  112.     if Input.repeat?(:LEFT) #Se si preme Sinistra
  113.       pressione_sinistra
  114.     end
  115.     if Input.repeat?(:RIGHT) #Se si preme Destra
  116.       pressione_destra
  117.     end
  118.     h87_cc_update
  119.     animazione_menu #Sequenza d'apertura del menu
  120.     animazione_fumetto #sequenza di animazione del fumetto
  121.     animazione_cursore
  122.     @Baloon.opacity += 25 if @CommandsActive
  123.   end
  124.  
  125.   #--------------------------------------------------------------------------
  126.   # * alias del metodo di chiusura
  127.   #--------------------------------------------------------------------------
  128.   alias h87_terminate terminate unless $@
  129.   def terminate
  130.     elimina_menu
  131.     h87_terminate
  132.     delete_objects
  133.   end
  134.  
  135.   #--------------------------------------------------------------------------
  136.   # * Inizializza le variabili
  137.   #--------------------------------------------------------------------------
  138.   def inizializza_variabili
  139.     @command_locked = []
  140.     @command_viewport = Viewport.new(0,0,Graphics.width, Graphics.height)
  141.     @command_viewport.z = 99
  142.     @title_state = 0 #lo stato del titolo
  143.     @cursore = 0
  144.     @cursore = 1 if continue_enabled
  145.     crea_contenuti_iniziali
  146.     crea_contenuti_personalizzati
  147.     crea_contenuti_finali
  148.     #------------------------------------------------
  149.     @num_oggetti = @oggetti.size
  150.     @CommandsActive = false #all'inizio non possono essere mossi comandi
  151.     @colore=0 #serve per memorizzare il colore dell'oggetto selezionato
  152.   end
  153.  
  154.   #--------------------------------------------------------------------------
  155.   # * creazione dei comandi nuovo e carica
  156.   #--------------------------------------------------------------------------
  157.   def crea_contenuti_iniziali
  158.     @oggetti = []
  159.     puls = MT_Setup::OBJGRAPH
  160.     balo = MT_Setup::BALOONGRAPH
  161.     comm = MT_Setup::EVENTS
  162.     #Cambia l'ordine di queste righe per cambiare l'ordine del menu.
  163.     add_cursor(:newgame,comm[:newgame],puls[:newgame],balo[:newgame])
  164.     add_cursor(:load,comm[:load],puls[:load],balo[:load],continue_enabled)
  165.   end
  166.  
  167.   #--------------------------------------------------------------------------
  168.   # * metodo che quando aliasato inserisce comandi extra intermedi
  169.   #--------------------------------------------------------------------------
  170.   def crea_contenuti_personalizzati
  171.   end
  172.  
  173.   #--------------------------------------------------------------------------
  174.   # * crea il comando esci
  175.   #--------------------------------------------------------------------------
  176.   def crea_contenuti_finali
  177.     puls = MT_Setup::OBJGRAPH
  178.     balo = MT_Setup::BALOONGRAPH
  179.     comm = MT_Setup::EVENTS
  180.     add_cursor(:exit,comm[:exit],puls[:exit],balo[:exit])
  181.   end
  182.  
  183.   #--------------------------------------------------------------------------
  184.   # * restituisce la grafica del pulsante
  185.   #--------------------------------------------------------------------------
  186.   def grafica_oggetto(i)
  187.     return @immagini[i] if @immagini[i] != nil
  188.     return ""
  189.   end
  190.  
  191.   #--------------------------------------------------------------------------
  192.   # * restituisce la grafica del fumetto
  193.   #--------------------------------------------------------------------------
  194.   def fumetto_oggetto(i)
  195.     return @fumetti[i] if @fumetti[i] != nil
  196.     return ""
  197.   end
  198.  
  199.   #--------------------------------------------------------------------------
  200.   # * Ridefinizione della creazione della finestra di comando
  201.   #--------------------------------------------------------------------------
  202.   alias h87mt_ccw create_command_window unless $@
  203.   def create_command_window
  204.     h87mt_ccw
  205.     inizializza_variabili
  206.     @sfondobarra = Sprite.new(@command_viewport)
  207.     @sfondobarra.bitmap = Cache.system(MT_Setup::BARGRAPH)
  208.     @sfondobarra.y = MT_Setup::AltezzaBarra
  209.     @sfondobarra.z = 1
  210.     @posix = MT_Setup::Distanza
  211.     @selettore = []
  212.     for i in 0..@num_oggetti-1 #crea le immagini dei pulsanti
  213.       @selettore[i] = Sprite.new(@command_viewport)
  214.       @selettore[i].bitmap = Cache.system(grafica_oggetto(@oggetti[i]))
  215.       @selettore[i].x = @posix
  216.       @selettore[i].z = 10
  217.       @selettore[i].y = MT_Setup::AltezzaBarra + @sfondobarra.height/2 - @selettore[i].height/2
  218.       @posix += MT_Setup::Distanza + @selettore[i].width
  219.     end
  220.     inizializza_fumetto # crea l'immagine del fumetto
  221.     crea_immagine if @agg_disp # crea il popup di aggiornamento
  222.     if MT_Setup::Animazione #rende gli oggetti trasparenti se si anima
  223.       @old_position = []
  224.       for i in 0..@selettore.size-1
  225.         @old_position[i] = @selettore[i].y
  226.         @selettore[i].y -= 21
  227.         @selettore[i].opacity = 0
  228.         @anim_counter = 0
  229.       end
  230.       @timemax = MT_Setup::SPEEDANIM*@selettore.size
  231.     end
  232.     @CommandsActive = true unless MT_Setup::Animazione
  233.   end
  234.  
  235.   #--------------------------------------------------------------------------
  236.   # * Crea l'immagine del fumetto di descrizione.
  237.   #--------------------------------------------------------------------------
  238.   def inizializza_fumetto
  239.     @Baloon = Sprite.new(@command_viewport)
  240.     @Baloon.opacity = 0
  241.     @Baloon.z = 20
  242.     aggiorna_cursore
  243.   end
  244.        
  245.   #--------------------------------------------------------------------------
  246.   # * Anima i componenti del menu
  247.   #--------------------------------------------------------------------------
  248.   def animazione_menu
  249.     if MT_Setup::Animazione and @title_state == 0
  250.       for i in 0..@selettore.size-1
  251.         if @anim_counter > @timemax*i
  252.           @selettore[i].opacity += 10
  253.           @selettore[i].y += 4 if @selettore[i].y < @old_position[i]
  254.           @selettore[i].y -= 1 if @selettore[i].y > @old_position[i]
  255.         end
  256.       end
  257.       @anim_counter += 1
  258.       if @selettore[@selettore.size-1].opacity >= 255
  259.         @CommandsActive = true
  260.         aggiorna_cursore
  261.         @title_state = 1
  262.       end
  263.     end
  264.     if @title_state == 1 and MT_Setup::Animazione
  265.       for i in 0..@selettore.size-1
  266.         @selettore[i].y -= 1 if @selettore[i].y > @old_position[i]
  267.       end
  268.     end
  269.   end
  270.  
  271.   #--------------------------------------------------------------------------
  272.   # * questo metodo aggiunge nuovi cursori settando evento e grafica
  273.   #--------------------------------------------------------------------------
  274.   def add_cursor(cursore,comando,graf_pulsante,graf_baloon,enabled=true)
  275.     @immagini = {} if @immagini.nil?
  276.     @fumetti = {} if @fumetti.nil?
  277.     @comandi = {} if @comandi.nil?
  278.     @immagini[cursore]= graf_pulsante
  279.     @fumetti[cursore]= graf_baloon
  280.     @comandi[cursore]= comando
  281.     lock_command(cursore) unless enabled
  282.     @oggetti.push(cursore)
  283.   end
  284.  
  285.   #--------------------------------------------------------------------------
  286.   # * Esecuzione del comando Invio
  287.   #--------------------------------------------------------------------------
  288.   def pressione_invio
  289.     eval(@comandi[@oggetti[@cursore]])
  290.   end
  291.  
  292.   #--------------------------------------------------------------------------
  293.   # * Esecuzione del tasto Sinistra
  294.   #--------------------------------------------------------------------------
  295.   def pressione_sinistra
  296.     if @CommandsActive
  297.       Sound.play_cursor
  298.       @cursore -= 1
  299.       @cursore = @num_oggetti-1 if @cursore < 0
  300.       aggiorna_cursore
  301.     end
  302.   end
  303.  
  304.   #--------------------------------------------------------------------------
  305.   # * Esecuzione del tasto Destra
  306.   #--------------------------------------------------------------------------
  307.   def pressione_destra
  308.     if @CommandsActive
  309.       Sound.play_cursor
  310.       @cursore += 1
  311.       @cursore = 0 if @cursore > @num_oggetti -1
  312.       aggiorna_cursore
  313.     end
  314.   end
  315.  
  316.   #--------------------------------------------------------------------------
  317.   # * Sequenza di aggiornamento del cursore
  318.   #--------------------------------------------------------------------------
  319.   def aggiorna_cursore
  320.     @Baloon.bitmap = Cache.system(fumetto_oggetto(@oggetti[@cursore]))
  321.     @prossimaX = @selettore[@cursore].x + @selettore[@cursore].width/2-MT_Setup::DDP
  322.     @prossimaY = @selettore[@cursore].y + @selettore[@cursore].height+10
  323.     @selettore[@cursore].y += 7 if MT_Setup::Animazione and @CommandsActive
  324.     @Baloon.x = @prossimaX if @Baloon.x == 0
  325.     @Baloon.y = @prossimaY if @Baloon.x == 0
  326.     @colore = 0
  327.     @cursore_in_movimento = true
  328.   end
  329.  
  330.   #--------------------------------------------------------------------------
  331.   # * Animazione dei movimenti del fumetto
  332.   #--------------------------------------------------------------------------
  333.   def animazione_fumetto
  334.     if @cursore_in_movimento
  335.       @distanzaX = @prossimaX-@Baloon.x
  336.       @distanzaY = @prossimaY-@Baloon.y
  337.       @Baloon.x += @distanzaX/MT_Setup::CursorSpeed
  338.       @Baloon.y += @distanzaY/MT_Setup::CursorSpeed
  339.     end
  340.   end
  341.  
  342.   #--------------------------------------------------------------------------
  343.   # * Illumina l'oggetto selezionato
  344.   #--------------------------------------------------------------------------
  345.   def animazione_cursore
  346.     @colore +=3 if @colore < 60
  347.     for i in 0..@selettore.size-1
  348.       grigio = command_avaiable?(@oggetti[i]) ? 0 : 255
  349.       if i == @cursore
  350.         @selettore[i].tone.set(@colore,@colore,@colore,grigio)
  351.       else
  352.         @selettore[i].tone.set(0,0,0,grigio)
  353.       end
  354.     end
  355.   end
  356.  
  357.   #--------------------------------------------------------------------------
  358.   # * restituisce true se il comando è attivo
  359.   #--------------------------------------------------------------------------
  360.   def command_avaiable?(command)
  361.     return !@command_locked.include?(command)
  362.   end
  363.  
  364.   #--------------------------------------------------------------------------
  365.   # * blocca un comando rendendolo grigio
  366.   #--------------------------------------------------------------------------
  367.   def lock_command(command)
  368.     @command_locked.push(command)
  369.   end
  370.  
  371.   #--------------------------------------------------------------------------
  372.   # * sblocca il comando
  373.   #--------------------------------------------------------------------------
  374.   def unlock_command(command)
  375.     @command_locked.delete(command)
  376.   end
  377.  
  378.   #--------------------------------------------------------------------------
  379.   # * Provvede alla cancellazione degli oggetti di gioco
  380.   #--------------------------------------------------------------------------
  381.   def delete_objects
  382.     for i in 0..@selettore.size-1
  383.       @selettore[i].dispose
  384.     end
  385.     @Baloon.dispose
  386.     @sfondobarra.dispose
  387.     @command_viewport.dispose
  388.   end
  389.  
  390.   #--------------------------------------------------------------------------
  391.   # * Crea il popup di aggiornamento
  392.   #--------------------------------------------------------------------------
  393.   def crea_immagine
  394.     @imm_popup = Sprite.new(@command_viewport)
  395.     @imm_popup.bitmap = Cache.system(MT_Setup::Up_Popup)
  396.     @imm_popup.x = @selettore[@upd_n].x + @selettore[@upd_n].width/2 - @imm_popup.width/2
  397.     @imm_popup.y = @selettore[@upd_n].y-5-@imm_popup.height
  398.     @imm_popup.y += 14 if MT_Setup::Animazione
  399.     @imm_popup.z = 99
  400.   end
  401.  
  402.   #--------------------------------------------------------------------------
  403.   # * Nasconde il Menu per non mostrarlo in altre scene.
  404.   #--------------------------------------------------------------------------
  405.   def elimina_menu
  406.     @title_state = 2
  407.     for i in 0..@selettore.size-1
  408.       @selettore[i].opacity = 0
  409.     end
  410.     @imm_popup.opacity = 0 if @imm_popup != nil
  411.     @Baloon.opacity = 0
  412.     @sfondobarra.opacity = 0
  413.   end
  414.  
  415.   #--------------------------------------------------------------------------
  416.   # * Metodo ridefinito
  417.   #--------------------------------------------------------------------------
  418.   alias h87_newg command_new_game unless $@
  419.   def command_new_game
  420.     Sound.play_ok
  421.     h87_newg
  422.   end
  423.  
  424.   #--------------------------------------------------------------------------
  425.   # * Metodo ridefinito
  426.   #--------------------------------------------------------------------------
  427.   alias h87_end command_shutdown unless $@
  428.   def command_shutdown
  429.     Sound.play_ok
  430.     h87_end
  431.   end
  432.  
  433.   #--------------------------------------------------------------------------
  434.   # * alias del comando continua
  435.   #--------------------------------------------------------------------------
  436.   alias h87_cc_cont command_continue unless $@
  437.   def command_continue
  438.     if continue_enabled
  439.       Sound.play_ok
  440.       h87_cc_cont
  441.     else
  442.       Sound.play_buzzer
  443.     end
  444.   end
  445.  
  446.   #--------------------------------------------------------------------------
  447.   # * restituisce true se c'è un salvataggio
  448.   #--------------------------------------------------------------------------
  449.   def continue_enabled
  450.     return DataManager.save_file_exists?
  451.   end
  452.  
  453. end #scene_title
  454.  
  455. class Window_TitleCommand < Window_Command
  456.   def open;end
  457. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top