Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $imported = {} if $imported == nil
- $imported["H87_TitleMenu"] = true
- #==============================================================================
- # * New Menu Title v1.3
- # Creato da Holy 87
- # Difficoltà utente: ★★★
- #------------------------------------------------------------------------------
- # 13/08/2013 -> Versione 1.3 -> Possibilità di personalizzazione da altri script
- # 01/06/2012 -> Versione 1.1 -> Modifiche al cursore
- # 20/02/2012 -> Script finito
- # 16/02/2012 -> Script iniziato
- #------------------------------------------------------------------------------
- # Questo script crea una nuova variante del menu nella schermata del Titolo.
- #==============================================================================
- # * ISTRUZIONI *
- #==============================================================================
- # Piazza lo scritp sotto Materials e prima del Main. Imposta le immagini che
- # verranno usate come icone, lo script ne adatterà automaticamente la posizione.
- #==============================================================================
- # * COMPATIBILITA' *
- #==============================================================================
- # Scene_Title > alias metodi: command_new_game; command_continue;
- # command_shutdown; create_command_window; update; terminate
- # Window_TitleCommand > riscrittura del metodo open
- #==============================================================================
- # PER FARE IN MODO DI AGGIUNGERE ALTRI MENU DAL TITOLO
- #==============================================================================
- # Nella classe scene_title, crea un alias al metodo crea_contenuti_personalizzati
- # aggiungendo un nuovo elemento, ad esempio:
- # if $imported["H87_TitleMenu"]
- # alias metodo_aliasato crea_contenuti_personalizzati
- # def crea_contenuti_personalizzati
- # metodo_aliasato
- # add_cursor(:nomecursore,:metodo_chiamato,"immpulsante","immfumetto")
- # end;end
- #==============================================================================
- module MT_Setup
- #==============================================================================
- # * CONFIGURAZIONE *
- #==============================================================================
- # * Preferenze del Menu
- #==============================================================================
- #Imposta l'altezza del menu rispetto allo schermo
- AltezzaBarra = 190
- #Imposta la distanza in pixel tra gli oggetti del Menu
- Distanza = 10
- #==============================================================================
- # * Grafica degli Oggetti
- #==============================================================================
- OBJGRAPH = {
- :newgame => "T_New", #Immagine del comando Nuovo Gioco
- :load => "T_Load", #Immagine del comando Carica
- :exit => "T_Exit", #Immagine del comando Esci
- } # non rimuovere la parentesi!
- BALOONGRAPH = {
- :newgame => "B_New", #Immagine del Fumetto Nuovo Gioco
- :load => "B_Load", #Immagine del Fumetto Carica
- :exit => "B_Exit", #Immagine del Fumetto Esci
- } # non rimuovere la parentesi!
- EVENTS = { #non modificare questo, sono i metodi che vengono chiamati
- :newgame => "command_new_game", #comando nuova partita
- :load => "command_continue", #comando carica
- :exit => "command_shutdown", #comando esci
- }
- #Immagine della barra di sfondo ai comandi.
- BARGRAPH = "SfondoBarraTitle"
- #==============================================================================
- # * Preferenze Grafiche
- #==============================================================================
- #Vuoi che la comparsa del menu dei comandi sia animata?
- Animazione = true
- #Setta la velocità di apparizione dei comandi (solo se Animazione = true).
- #0: Contemporaneamente, 1: Velocissimo, 2: Veloce...
- SPEEDANIM = 1
- #Setta la velotità del cursore nello spostamento(NON METTERE 0)
- CursorSpeed = 3 #1: Istantaneo, 2: Velocissimo, 3: Veloce, 4:Lento...
- #Imposta la distanza da sinistra alla punta che avrà il fumetto.
- DDP = 27
- #==============================================================================
- # * FINE DELLA CONFIGURAZIONE *
- # Non modificare oltre questa riga, se non sai cosa stai facendo!
- #==============================================================================
- end
- #==============================================================================
- # * Classe Scene_Title
- #==============================================================================
- class Scene_Title < Scene_Base
- #--------------------------------------------------------------------------
- # * Alias del metodo di Aggiornamento
- #--------------------------------------------------------------------------
- alias h87_cc_update update unless $@
- def update
- if Input.trigger?(:C) # Se si preme Invio
- pressione_invio
- end
- if Input.repeat?(:LEFT) #Se si preme Sinistra
- pressione_sinistra
- end
- if Input.repeat?(:RIGHT) #Se si preme Destra
- pressione_destra
- end
- h87_cc_update
- animazione_menu #Sequenza d'apertura del menu
- animazione_fumetto #sequenza di animazione del fumetto
- animazione_cursore
- @Baloon.opacity += 25 if @CommandsActive
- end
- #--------------------------------------------------------------------------
- # * alias del metodo di chiusura
- #--------------------------------------------------------------------------
- alias h87_terminate terminate unless $@
- def terminate
- elimina_menu
- h87_terminate
- delete_objects
- end
- #--------------------------------------------------------------------------
- # * Inizializza le variabili
- #--------------------------------------------------------------------------
- def inizializza_variabili
- @command_locked = []
- @command_viewport = Viewport.new(0,0,Graphics.width, Graphics.height)
- @command_viewport.z = 99
- @title_state = 0 #lo stato del titolo
- @cursore = 0
- @cursore = 1 if continue_enabled
- crea_contenuti_iniziali
- crea_contenuti_personalizzati
- crea_contenuti_finali
- #------------------------------------------------
- @num_oggetti = @oggetti.size
- @CommandsActive = false #all'inizio non possono essere mossi comandi
- @colore=0 #serve per memorizzare il colore dell'oggetto selezionato
- end
- #--------------------------------------------------------------------------
- # * creazione dei comandi nuovo e carica
- #--------------------------------------------------------------------------
- def crea_contenuti_iniziali
- @oggetti = []
- puls = MT_Setup::OBJGRAPH
- balo = MT_Setup::BALOONGRAPH
- comm = MT_Setup::EVENTS
- #Cambia l'ordine di queste righe per cambiare l'ordine del menu.
- add_cursor(:newgame,comm[:newgame],puls[:newgame],balo[:newgame])
- add_cursor(:load,comm[:load],puls[:load],balo[:load],continue_enabled)
- end
- #--------------------------------------------------------------------------
- # * metodo che quando aliasato inserisce comandi extra intermedi
- #--------------------------------------------------------------------------
- def crea_contenuti_personalizzati
- end
- #--------------------------------------------------------------------------
- # * crea il comando esci
- #--------------------------------------------------------------------------
- def crea_contenuti_finali
- puls = MT_Setup::OBJGRAPH
- balo = MT_Setup::BALOONGRAPH
- comm = MT_Setup::EVENTS
- add_cursor(:exit,comm[:exit],puls[:exit],balo[:exit])
- end
- #--------------------------------------------------------------------------
- # * restituisce la grafica del pulsante
- #--------------------------------------------------------------------------
- def grafica_oggetto(i)
- return @immagini[i] if @immagini[i] != nil
- return ""
- end
- #--------------------------------------------------------------------------
- # * restituisce la grafica del fumetto
- #--------------------------------------------------------------------------
- def fumetto_oggetto(i)
- return @fumetti[i] if @fumetti[i] != nil
- return ""
- end
- #--------------------------------------------------------------------------
- # * Ridefinizione della creazione della finestra di comando
- #--------------------------------------------------------------------------
- alias h87mt_ccw create_command_window unless $@
- def create_command_window
- h87mt_ccw
- inizializza_variabili
- @sfondobarra = Sprite.new(@command_viewport)
- @sfondobarra.bitmap = Cache.system(MT_Setup::BARGRAPH)
- @sfondobarra.y = MT_Setup::AltezzaBarra
- @sfondobarra.z = 1
- @posix = MT_Setup::Distanza
- @selettore = []
- for i in 0..@num_oggetti-1 #crea le immagini dei pulsanti
- @selettore[i] = Sprite.new(@command_viewport)
- @selettore[i].bitmap = Cache.system(grafica_oggetto(@oggetti[i]))
- @selettore[i].x = @posix
- @selettore[i].z = 10
- @selettore[i].y = MT_Setup::AltezzaBarra + @sfondobarra.height/2 - @selettore[i].height/2
- @posix += MT_Setup::Distanza + @selettore[i].width
- end
- inizializza_fumetto # crea l'immagine del fumetto
- crea_immagine if @agg_disp # crea il popup di aggiornamento
- if MT_Setup::Animazione #rende gli oggetti trasparenti se si anima
- @old_position = []
- for i in 0..@selettore.size-1
- @old_position[i] = @selettore[i].y
- @selettore[i].y -= 21
- @selettore[i].opacity = 0
- @anim_counter = 0
- end
- @timemax = MT_Setup::SPEEDANIM*@selettore.size
- end
- @CommandsActive = true unless MT_Setup::Animazione
- end
- #--------------------------------------------------------------------------
- # * Crea l'immagine del fumetto di descrizione.
- #--------------------------------------------------------------------------
- def inizializza_fumetto
- @Baloon = Sprite.new(@command_viewport)
- @Baloon.opacity = 0
- @Baloon.z = 20
- aggiorna_cursore
- end
- #--------------------------------------------------------------------------
- # * Anima i componenti del menu
- #--------------------------------------------------------------------------
- def animazione_menu
- if MT_Setup::Animazione and @title_state == 0
- for i in 0..@selettore.size-1
- if @anim_counter > @timemax*i
- @selettore[i].opacity += 10
- @selettore[i].y += 4 if @selettore[i].y < @old_position[i]
- @selettore[i].y -= 1 if @selettore[i].y > @old_position[i]
- end
- end
- @anim_counter += 1
- if @selettore[@selettore.size-1].opacity >= 255
- @CommandsActive = true
- aggiorna_cursore
- @title_state = 1
- end
- end
- if @title_state == 1 and MT_Setup::Animazione
- for i in 0..@selettore.size-1
- @selettore[i].y -= 1 if @selettore[i].y > @old_position[i]
- end
- end
- end
- #--------------------------------------------------------------------------
- # * questo metodo aggiunge nuovi cursori settando evento e grafica
- #--------------------------------------------------------------------------
- def add_cursor(cursore,comando,graf_pulsante,graf_baloon,enabled=true)
- @immagini = {} if @immagini.nil?
- @fumetti = {} if @fumetti.nil?
- @comandi = {} if @comandi.nil?
- @immagini[cursore]= graf_pulsante
- @fumetti[cursore]= graf_baloon
- @comandi[cursore]= comando
- lock_command(cursore) unless enabled
- @oggetti.push(cursore)
- end
- #--------------------------------------------------------------------------
- # * Esecuzione del comando Invio
- #--------------------------------------------------------------------------
- def pressione_invio
- eval(@comandi[@oggetti[@cursore]])
- end
- #--------------------------------------------------------------------------
- # * Esecuzione del tasto Sinistra
- #--------------------------------------------------------------------------
- def pressione_sinistra
- if @CommandsActive
- Sound.play_cursor
- @cursore -= 1
- @cursore = @num_oggetti-1 if @cursore < 0
- aggiorna_cursore
- end
- end
- #--------------------------------------------------------------------------
- # * Esecuzione del tasto Destra
- #--------------------------------------------------------------------------
- def pressione_destra
- if @CommandsActive
- Sound.play_cursor
- @cursore += 1
- @cursore = 0 if @cursore > @num_oggetti -1
- aggiorna_cursore
- end
- end
- #--------------------------------------------------------------------------
- # * Sequenza di aggiornamento del cursore
- #--------------------------------------------------------------------------
- def aggiorna_cursore
- @Baloon.bitmap = Cache.system(fumetto_oggetto(@oggetti[@cursore]))
- @prossimaX = @selettore[@cursore].x + @selettore[@cursore].width/2-MT_Setup::DDP
- @prossimaY = @selettore[@cursore].y + @selettore[@cursore].height+10
- @selettore[@cursore].y += 7 if MT_Setup::Animazione and @CommandsActive
- @Baloon.x = @prossimaX if @Baloon.x == 0
- @Baloon.y = @prossimaY if @Baloon.x == 0
- @colore = 0
- @cursore_in_movimento = true
- end
- #--------------------------------------------------------------------------
- # * Animazione dei movimenti del fumetto
- #--------------------------------------------------------------------------
- def animazione_fumetto
- if @cursore_in_movimento
- @distanzaX = @prossimaX-@Baloon.x
- @distanzaY = @prossimaY-@Baloon.y
- @Baloon.x += @distanzaX/MT_Setup::CursorSpeed
- @Baloon.y += @distanzaY/MT_Setup::CursorSpeed
- end
- end
- #--------------------------------------------------------------------------
- # * Illumina l'oggetto selezionato
- #--------------------------------------------------------------------------
- def animazione_cursore
- @colore +=3 if @colore < 60
- for i in 0..@selettore.size-1
- grigio = command_avaiable?(@oggetti[i]) ? 0 : 255
- if i == @cursore
- @selettore[i].tone.set(@colore,@colore,@colore,grigio)
- else
- @selettore[i].tone.set(0,0,0,grigio)
- end
- end
- end
- #--------------------------------------------------------------------------
- # * restituisce true se il comando è attivo
- #--------------------------------------------------------------------------
- def command_avaiable?(command)
- return !@command_locked.include?(command)
- end
- #--------------------------------------------------------------------------
- # * blocca un comando rendendolo grigio
- #--------------------------------------------------------------------------
- def lock_command(command)
- @command_locked.push(command)
- end
- #--------------------------------------------------------------------------
- # * sblocca il comando
- #--------------------------------------------------------------------------
- def unlock_command(command)
- @command_locked.delete(command)
- end
- #--------------------------------------------------------------------------
- # * Provvede alla cancellazione degli oggetti di gioco
- #--------------------------------------------------------------------------
- def delete_objects
- for i in 0..@selettore.size-1
- @selettore[i].dispose
- end
- @Baloon.dispose
- @sfondobarra.dispose
- @command_viewport.dispose
- end
- #--------------------------------------------------------------------------
- # * Crea il popup di aggiornamento
- #--------------------------------------------------------------------------
- def crea_immagine
- @imm_popup = Sprite.new(@command_viewport)
- @imm_popup.bitmap = Cache.system(MT_Setup::Up_Popup)
- @imm_popup.x = @selettore[@upd_n].x + @selettore[@upd_n].width/2 - @imm_popup.width/2
- @imm_popup.y = @selettore[@upd_n].y-5-@imm_popup.height
- @imm_popup.y += 14 if MT_Setup::Animazione
- @imm_popup.z = 99
- end
- #--------------------------------------------------------------------------
- # * Nasconde il Menu per non mostrarlo in altre scene.
- #--------------------------------------------------------------------------
- def elimina_menu
- @title_state = 2
- for i in 0..@selettore.size-1
- @selettore[i].opacity = 0
- end
- @imm_popup.opacity = 0 if @imm_popup != nil
- @Baloon.opacity = 0
- @sfondobarra.opacity = 0
- end
- #--------------------------------------------------------------------------
- # * Metodo ridefinito
- #--------------------------------------------------------------------------
- alias h87_newg command_new_game unless $@
- def command_new_game
- Sound.play_ok
- h87_newg
- end
- #--------------------------------------------------------------------------
- # * Metodo ridefinito
- #--------------------------------------------------------------------------
- alias h87_end command_shutdown unless $@
- def command_shutdown
- Sound.play_ok
- h87_end
- end
- #--------------------------------------------------------------------------
- # * alias del comando continua
- #--------------------------------------------------------------------------
- alias h87_cc_cont command_continue unless $@
- def command_continue
- if continue_enabled
- Sound.play_ok
- h87_cc_cont
- else
- Sound.play_buzzer
- end
- end
- #--------------------------------------------------------------------------
- # * restituisce true se c'è un salvataggio
- #--------------------------------------------------------------------------
- def continue_enabled
- return DataManager.save_file_exists?
- end
- end #scene_title
- class Window_TitleCommand < Window_Command
- def open;end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement