Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $imported = {} if $imported == nil
- $imported["H87_Logoshower"] = 1.2
- #===============================================================================
- # SCHERMATA DEL LOGO - ACE
- #===============================================================================
- # Autore: Holy87
- # Versione: 1.2.2
- # Difficoltà utente: ★★
- #
- # Nella versione 1.2 è stato aggiunto lo sfondo bianco
- # Novità della versione 1.1:
- # ● Possibilità di inserire video
- # ● Possibilità di inserire semplici scritte
- # ● Possibilità di riprodurre un SE all'apparizione di un logo
- # ● Effetto fade alla pressione del tasto invio
- #-------------------------------------------------------------------------------
- # Questo script serve per mostrare una serie di immagini all'apertura del gioco,
- # come il nome-firma-logo dell'autore/team, messaggi ecc...
- # Lo script consente di:
- # ● Mostrare quante successioni di immagini si voglia
- # ● Saltare in qualsiasi momento al titolo premendo Invio
- # ● Regolare per ogni immagine il tempo di comparsa e l'effetto zoom
- # ● Eseguire la musica della schermata del titolo dall'inizio
- # ● Saltare automaticamente la presentazione se si esegue da Test di gioco.
- #-------------------------------------------------------------------------------
- # Istruzioni:
- # Copiare lo script sotto Materials e prima del Main.
- # Le immagini da mostrare vanno messe nella cartella Graphics\Pictures. Le
- # immagini verranno automaticamente centrate sullo schermo quando mostrate.
- #
- #-------------------------------------------------------------------------------
- # Compatibilità:
- # Alias del metodo first_scene_class di SceneManager.
- #-------------------------------------------------------------------------------
- module H87_logo_shower
- #===============================================================================
- # ** CONFIGURAZIONE **
- #===============================================================================
- Logos = {
- # Inserisci qui in ordine le immagini da mostrare, quanto tempo deve durare
- # (in frame) e se attivare o no l'effetto zoom.
- #Tipo: 0-> Fade normale
- # 1-> Zoom normale
- # 2-> Zoom orizzontale
- # 3-> Zoom verticale
- # 4-> Increspatura
- # Se vuoi mostrare un filmato, dovrai inserire soltanto il nome.
- # Puoi inserire una frase o qualsiasi altra cosa al posto del nome
- # dell'immagine: in questo caso, comparirà un testo al posto dell'immagine.
- # Puoi andare a capo con il testo con il carattere "|"
- #ID Nome Tempo Tipo SE
- 1 => ["Logo", 100, 0],
- 2 => ["Logo iniziale|creato da Holy87", 70, 1, "Applause1"],
- 3 => ["Video"],
- 4 => ["Logo3", 150, 4],
- } # non rimuovere!
- # N.B. Il conteggio del tempo comincia dopo il termine del fade del logo.
- #Vuoi eseguire la musica del titolo anche nel logo?
- Play_music = true
- #Tempo di dissolvenza delle immagini
- Fade_time = 50
- #Tempo di dissolvenza dell'immagine finale
- Final_fade = 80
- #Saltare i logo se si avvia il gioco in modalità test?
- Jump_test = true
- #Vuoi che lo sfondo sia nero oppure bianco?
- White = false #true se lo vuoi bianco
- #Inserire il nome del carattere del logo:
- Logo_Font = "Comic Sans MS"
- #============================================================================
- # ** FINE CONFIGURAZIONE **
- # Modificare da questo punto in poi è rischioso.
- #============================================================================
- #--------------------------------------------------------------------------
- # * restituisce la velocità di dissolvenza
- #--------------------------------------------------------------------------
- def fade_speed
- return 255.0 / Fade_time
- end
- #--------------------------------------------------------------------------
- # * restituisce la velocità di dissolvenza dopo l'ultima immagine
- #--------------------------------------------------------------------------
- def final_fade_speed
- return 255.0 / Final_fade
- end
- end # modulo
- #===============================================================================
- # ** Classe Scene_Logo
- #===============================================================================
- class Scene_Logo < Scene_Base
- include H87_logo_shower # <- il modulo di prima
- #--------------------------------------------------------------------------
- # * inizio
- #--------------------------------------------------------------------------
- def start
- super
- $logo_done = true # flag che indica che il logo è stato visto
- create_logo_graphic # crea lo sprite del logo
- play_title_music if Play_music # esegui la musica del titolo
- end
- #--------------------------------------------------------------------------
- # * creazione dello sprite
- #--------------------------------------------------------------------------
- def create_logo_graphic
- @logo_base = Sprite.new
- @logo_base.opacity = 0
- @logo_base.bitmap = new_base_bitmap
- @logo_counter = 1 # contatore
- @time_counter = 0 # tempo che resta
- @logo = Sprite.new # creazione
- change_logo # aggiorna la bitmap
- end
- #--------------------------------------------------------------------------
- # * assegna la bitmap
- #--------------------------------------------------------------------------
- def new_base_bitmap
- bitmap = Bitmap.new(Graphics.width, Graphics.height)
- colore = Color.new(255,255,255)
- bitmap.fill_rect(0,0,bitmap.width,bitmap.height,colore) if White
- return bitmap
- end
- #--------------------------------------------------------------------------
- # * cambia logo e aggiorna la bitmap
- #--------------------------------------------------------------------------
- def change_logo
- if Logos[@logo_counter][1].nil?
- Graphics.play_movie("Movies/"+Logos[@logo_counter][0])
- else
- RPG::SE.new(Logos[@logo_counter][3]).play if Logos[@logo_counter][3] != nil
- initialize_logo_sprite
- preset_logo
- end
- end
- #--------------------------------------------------------------------------
- # * reinizializza gli attributi del logo
- #--------------------------------------------------------------------------
- def initialize_logo_sprite
- @logo.bitmap = logo_bitmap(Logos[@logo_counter][0])
- @logo.opacity = 0
- @logo.ox = @logo.width/2 # l'origine è al centro
- @logo.oy = @logo.height/2 # idem
- @logo.x = Graphics.width / 2 # centra l'immagine
- @logo.y = Graphics.height / 2 # idem
- @speed = 0
- @logo.zoom_x = 1
- @logo.zoom_y = 1
- @logo.wave_speed = 0
- @logo.wave_length = 0
- end
- #--------------------------------------------------------------------------
- # * imposta l'inizio del logo a seconda del tipo di comparsa
- #--------------------------------------------------------------------------
- def preset_logo
- case Logos[@logo_counter][2] # caso
- when 1
- @speed = 0.002 # velocità zoom
- @logo.zoom_x = 0.9 # proporzioni (solo del 10% più piccolo
- @logo.zoom_y = 0.9 # idem
- when 2
- @speed = 0.01
- @logo.zoom_x = 0
- when 3
- @speed = 0.01
- @logo.zoom_y = 0
- when 4
- @speed = 1
- @logo.wave_amp = 120
- @logo.wave_length = 255
- @logo.wave_speed = 360
- end
- end
- #--------------------------------------------------------------------------
- # * restituisce la bitmap del logo
- #--------------------------------------------------------------------------
- def logo_bitmap(source)
- begin
- bitmap = Cache.picture(source)
- rescue Errno::ENOENT
- line_height = 40
- text = source.split("|")
- bitmap = Bitmap.new(Graphics.width, Graphics.height)
- bitmap.font.color = White ? Color.new(0,0,0) : Color.new(255,255,255)
- bitmap.font.outline = false
- bitmap.font.size = 40
- bitmap.font.name = Logo_Font
- starting_line = (Graphics.height - text.size*line_height) / 2
- for i in 0..text.size-1
- bitmap.draw_text(0,starting_line,bitmap.width,line_height,text[i],1)
- starting_line += line_height
- end
- end
- return bitmap
- end
- #--------------------------------------------------------------------------
- # * sostituisce l'immagine con la prossima
- #--------------------------------------------------------------------------
- def next_logo
- return if Logos[@logo_counter + 1] == nil
- @logo_counter += 1
- @time_counter = 0
- change_logo
- end
- #--------------------------------------------------------------------------
- # * restituisce true se c'è un'altra immagine da mostrare
- #--------------------------------------------------------------------------
- def there_next?
- return true if Logos[@logo_counter + 1] != nil
- return false
- end
- #--------------------------------------------------------------------------
- # * aggiornamento
- #--------------------------------------------------------------------------
- def update
- super
- jump_logo if Input.trigger?(:C) # aggiorna l'input
- update_fade_logo # aggiorna l'animazione
- end
- #--------------------------------------------------------------------------
- # * aggiorna l'animazione dell'immagine
- #--------------------------------------------------------------------------
- def update_fade_logo
- @logo_base.opacity += 20
- process_appear
- process_fade
- end
- #--------------------------------------------------------------------------
- # * processo di apparizione del logo
- #--------------------------------------------------------------------------
- def process_appear
- case Logos[@logo_counter][2]
- when 1
- if @logo.zoom_x < 1
- @logo.zoom_x += @speed
- @logo.zoom_y += @speed
- end
- when 2
- @logo.zoom_x += @speed if @logo.zoom_x < 1
- when 3
- @logo.zoom_y += @speed if @logo.zoom_y < 1
- when 4
- if @logo.wave_amp > 0
- @logo.wave_amp -= @speed
- end
- @logo.update
- end
- end
- #--------------------------------------------------------------------------
- # * processo di scomparsa del logo
- #--------------------------------------------------------------------------
- def process_fade
- if Logos[@logo_counter][1] != nil and @time_counter < Logos[@logo_counter][1] # attesa frame
- @logo.opacity += fade_speed
- if @logo.opacity >= 255
- @time_counter += 1
- end
- else
- if there_next?
- @logo.opacity -= fade_speed
- else
- @logo.opacity -= final_fade_speed
- end
- if @logo.opacity == 0
- if there_next?
- next_logo
- else
- go_title
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # * finalmente, vai alla schermata del titolo
- #--------------------------------------------------------------------------
- def go_title
- SceneManager.goto(SceneManager.h87f_s_c)
- end
- #--------------------------------------------------------------------------
- # * fine
- #--------------------------------------------------------------------------
- def terminate
- @logo.opacity = 0
- super
- @logo_base.dispose if @logo_base
- if @logo
- @logo.bitmap.dispose
- @logo.dispose
- end
- end
- #--------------------------------------------------------------------------
- # * forza il title
- #--------------------------------------------------------------------------
- def jump_logo
- loop do
- @logo.opacity -= 30
- Graphics.update
- break if @logo.opacity == 0
- end
- go_title
- end
- #--------------------------------------------------------------------------
- # * esegue la musica del titolo
- #--------------------------------------------------------------------------
- def play_title_music
- $data_system.title_bgm.play
- RPG::BGS.stop
- RPG::ME.stop
- end
- end # scene_logo
- #===============================================================================
- # ** SceneManager
- #===============================================================================
- module SceneManager
- class << self; alias h87f_s_c first_scene_class; end
- #--------------------------------------------------------------------------
- # * modifica della schermata iniziale
- #--------------------------------------------------------------------------
- def self.first_scene_class
- if $BTEST
- return h87f_s_c
- elsif $TEST and H87_logo_shower::Jump_test
- return h87f_s_c
- else
- return Scene_Logo
- end
- end
- end #scenemanager
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement