#============================================================================== # ■ VX-RGSS-2-txt TitleCustom【テキストデモ】 by Claimh #------------------------------------------------------------------------------ # TEXT_DEMOが有効のときに使用します。 #============================================================================== module Title_Custom #-------------------------------------------------------------------------- # ● テキストデモ演出 #-------------------------------------------------------------------------- # テキストデモ中のBGM(nil:不要) TD_BGM = "Scene5" # テキストデモ表示前のトランジションファイル名(nil:不要) TD_TRN = "cc_transition2" # フォント設定 TD_EDGE = true # 縁文字(true:有効、false:無効) TD_FONT = ["UmePlus Gothic"] # 表示フォント [第1Font,第2Font・・・] TD_SIZE = 22 # フォントサイズ TD_ITALIC = false # イタリック(true:有効、false:無効) TD_BOLD = true # ボールド(true:有効、false:無効) TD_COLOR = Color.new(255,255,255,255) # 色:Color.new(red,green,blue,alpha) #-=-=-=-=-=-=-=-# # 背景設定 # #-=-=-=-=-=-=-=-# # バック絵表示タイプ(0:黒背景 1:パノラマ 2:一枚絵) TD_BACK_TYPE = 1 #--<パノラマタイプ設定>--# # パノラマ絵(Graphics/System) TD_PAN_BACK = "Title2" #--<一枚絵タイプ設定>--# # バック絵(Graphics/System) TD_PCT_BACK = "Title2" # バック絵表示位置(X座標) TD_BACK_X = 0 # バック絵表示位置(Y座標) TD_BACK_Y = 0 #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-# # フェードアウト機能設定 # #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-# # フェードアウト機能(true:有効 false:無効) # (テキスト切り替え時にフェードアウトさせる) TD_FADEOUT = true # フェードアウト期間フレーム数 TDF_CNT = 10 #-=-=-=-=-=-=-=-=-=-=-=-# # 表示テキスト設定 # #-=-=-=-=-=-=-=-=-=-=-=-# # 1テキストあたりの表示フレーム数(フェードアウト期間除く) TD_F_CNT = 20 # 表示テキスト(表示順に配列に入れる) TD_TEXT = [ # ["表示文字(\n改行)", 表示X位置, 表示Y位置 # (,X方向移動, Y方向移動, ズームX, ズームY)] # ※()内はフェードアウト有効時のみ使用するので必須ではない ["表示1", 320, 240, 1, 2, 0.3, 0.4], ["表示2", 200, 100, 0, 2, 0.1, -0.1], ["表示3", 10, 50, 2, 2], ["表示4", 20, 300, ], ["表示5", 400, 380, -1, -2, 0.1, 0.2] ] ## module function ############################################################ #-------------------------------------------------------------------------- # ● テキストデモ用フェードアウト処理値の参照 #-------------------------------------------------------------------------- def self.get_fade_param(index,type) if TD_TEXT[index].nil? or TD_TEXT[index][type].nil? return 0.0 else return TD_TEXT[index][type] end end end class Scene_Title #-------------------------------------------------------------------------- # ● テキストデモ表示フェーズ:総合フレーム更新 #-------------------------------------------------------------------------- def update_phase_text_demo case @local_phase when 0; text_phase_startup # 表示準備 when 1; text_phase_update # 表示待機 when 2; text_phase_fadeout # フェードアウト when 3; text_phase_change # 表示切替 when 4; text_phase_end # 表示終了 end end #-------------------------------------------------------------------------- # ● テキストデモ表示フェーズ:表示準備 #-------------------------------------------------------------------------- def text_phase_startup if Title_Custom::TEXT_DEMO # BGMを再生 unless Title_Custom::TD_BGM.nil? Audio.bgm_play("Audio/BGM/" + Title_Custom::TD_BGM) end # ビューポートを定義 viewport = Viewport.new(0, 0, 640, 480) viewport.z = -1000 case Title_Custom::TD_BACK_TYPE when 0 # 表示なし when 1 # パノラマ絵 # プレーンを定義 @picture = Plane.new(viewport) path = "Graphics/Panoramas/" file = Title_Custom::TD_PAN_BACK @picture.bitmap = Cache.system(file) when 2 # 一枚絵 # 一枚絵用スプライトの定義 @picture = Sprite.new(viewport) # 一枚絵を用意 path = "Graphics/Titles/" file = Title_Custom::TD_PCT_BACK @picture.bitmap = Cache.system(file) @picture.x = Title_Custom::TD_BACK_X @picture.y = Title_Custom::TD_BACK_Y else p "Error:TD_BACK_TYPE" exit end reset_sprite # スプライトのリセット # フォント設定 font = Title_Custom::TD_FONT.dup font.push(Font.default_name) @sprite.bitmap.font.name = font # フォントサイズ @sprite.bitmap.font.size = Title_Custom::TD_SIZE # イタリック @sprite.bitmap.font.italic = Title_Custom::TD_ITALIC # ボールド @sprite.bitmap.font.bold = Title_Custom::TD_BOLD # フォント色 @sprite.bitmap.font.color = Title_Custom::TD_COLOR # テキストIndex値の初期化 @text_index = 0 # 最初の文字をセットするために表示切替フェーズに移動 @local_phase = 3 # トランジションの実行 unless Title_Custom::TD_TRN.nil? # トランジション実行 Graphics.transition(40,"Graphics/System/" + Title_Custom::TD_TRN) end else # 終了フェーズに移動 @local_phase = 4 end end #-------------------------------------------------------------------------- # ● テキストデモ表示フェーズ:表示待機 #-------------------------------------------------------------------------- def text_phase_update @frame_count += 1 # Cボタンが押された if Input.trigger?(Input::C) @frame_count = Title_Custom::TD_F_CNT # 表示切替フェーズに強制移動 # Bボタンが押された elsif Input.trigger?(Input::B) @local_phase = 4 # 表示終了フェーズに強制移動 return end # 表示切替タイミングに来た if @frame_count > Title_Custom::TD_F_CNT @frame_count = 0 # フレームカウント初期化 @local_phase = 2 # フェードアウトフェーズに移動 end end #-------------------------------------------------------------------------- # ● テキストデモ表示フェーズ:フェードアウト #-------------------------------------------------------------------------- def text_phase_fadeout # フェードアウト有効? if Title_Custom::TD_FADEOUT # Bボタンが押された if Input.trigger?(Input::B) @local_phase = 4 # 表示終了フェーズに強制移動 return end @frame_count += 1 # フレームカウント # 移動処理 @sprite.x += Title_Custom.get_fade_param(@text_index, 3) @sprite.y += Title_Custom.get_fade_param(@text_index, 4) # ズーム処理 @sprite.zoom_x += Title_Custom.get_fade_param(@text_index, 5) @sprite.zoom_y += Title_Custom.get_fade_param(@text_index, 6) # フェードアウト @sprite.opacity -= 255 / Title_Custom::TDF_CNT # フェードアウト期間の終了? if @frame_count > Title_Custom::TDF_CNT @frame_count = 0 # フレームカウント初期化 @text_index += 1 # テキストIndex値の更新 @local_phase = 3 # 表示切替フェーズに移動 end else @local_phase = 3 # 表示切替フェーズに移動 end end #-------------------------------------------------------------------------- # ● テキストデモ表示フェーズ:テキスト切り替え #-------------------------------------------------------------------------- def text_phase_change # テキスト消去 @sprite.bitmap.clear # フェードアウト処理後の初期化 if Title_Custom::TD_FADEOUT @sprite.x = 0 @sprite.y = 0 @sprite.zoom_x = 1.0 @sprite.zoom_y = 1.0 @sprite.opacity = 255 end # 全てのテキスト表示が完了した? if @text_index == Title_Custom::TD_TEXT.size @local_phase = 4 # 表示終了フェーズに移動 return end # テキスト表示 text = Title_Custom::TD_TEXT[@text_index][0].dup rect = @sprite.bitmap.text_size(text) width = rect.width + rect.height if Title_Custom::TD_EDGE # 縁文字 @sprite.bitmap.draw_enter_edging_text(0, 0, width, rect.height, text) else # 通常文字 @sprite.bitmap.draw_enter_text(0, 0, width, rect.height, text) end # 表示位置 @sprite.x = Title_Custom::TD_TEXT[@text_index][1] @sprite.y = Title_Custom::TD_TEXT[@text_index][2] @local_phase = 1 # 表示待機フェーズに移動 end #-------------------------------------------------------------------------- # ● テキストデモ表示フェーズ:表示終了 #-------------------------------------------------------------------------- def text_phase_end if Title_Custom::TEXT_DEMO case Title_Custom::TD_BACK_TYPE when 1..2 # パノラマまたは一枚絵 @picture.dispose # バック絵を削除 end end @frame_count = 0 # フレームカウント初期化 @local_phase = 0 # ローカルフェーズの初期化 change_phase # 次のフェーズに移動 # 次のフェーズにトランジション実行があるか? Graphics.freeze unless next_phase_transition?(@phase) Audio.bgm_fade(4000) # BGMフェードアウト reset_sprite # スプライトのリセット end end