赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 2216 |
最后登录 | 2012-5-3 |
在线时间 | 43 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 43 小时
- 注册时间
- 2010-9-20
- 帖子
- 46
|
7楼
楼主 |
发表于 2010-9-24 09:27:40
|
只看该作者
- #==============================================================================
- # ■ VX-RGSS2-2 タイトルカスタマイズ [Ver.1.0.3] by Claimh
- #------------------------------------------------------------------------------
- # タイトル表示時の付属機能の詰め合わせ
- # <機能>
- # ★ロゴ表示
- # タイトル前にロゴ(絵or文字)の表示をします。
- # ★タイトル名表示
- # タイトル名(メインタイトル/サブタイトル)の表示をします。
- # ★フェードイン
- # タイトル名、タイトルコマンドのフェードイン
- # ★タイムアウト
- # タイトル表示中に一定時間なにも操作にないとタイトル表示をやり直します。
- # ★エフェクト
- # ニューゲームなどのタイトルコマンドを選択したときのちょっとした演出効果。
- # ★テキストデモ
- # 文字のみのデモを表示します。
- # 自動で進みます(スキップも可能)
- # ★イベントデモ
- # イベントによって組まれたデモを表示します。
- # イベントの組み方は自由。ただし、自動実行にする必要有り
- # メッセージの自動送りなどの機能は入ってません。
- # ★アナザーオープニング(イベントデモ)
- # 特定のスイッチがON状態にあるときのみ表示されるイベントデモです。
- #==============================================================================
- module Title_Custom
- DISP_W = 544 # 画面幅
- DISP_H = 416 # 画面高さ
- #----------------------------------------------------------------------------
- # カスタマイズSTART
- #----------------------------------------------------------------------------
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # タイトルスキップ(デバッグ用) #
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # いつもニューゲームから始める
- TITLE_SKIP_ALL = false
- # セーブファイルがあればコンティニュー、なければニューゲームから始める
- TITLE_SKIP_CONTINUE = false
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # 機能選択(true:有効、false:無効) #
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # ロゴ表示
- LOGO = false
- # テキストデモ機能
- TEXT_DEMO = false
- # イベントデモ機能
- EVENT_DEMO = false
- # アナザーオープニング機能
- AOP_DEMO = false
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # 参考値(機能ではない) #
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # セーブファイル最大数
- SAVE_FILE_MAX = 38
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # デモ表示順序設定 #
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # 0: テキストデモ → イベントデモ ※タイムアウト時:ロゴ
- # 1: イベントデモ → テキストデモ ※タイムアウト時:ロゴ
- # 2: 通常:テキストデモ、タイムアウト時:イベントデモ(ロゴなし)
- # 3: 通常:イベントデモ、タイムアウト時:テキストデモ(ロゴなし)
- DEMO_PATTERN = 3
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # 各種機能別設定 #
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- #--------------------------------------------------------------------------
- # ● ロゴ(表示位置は自動的に中央になります)
- #--------------------------------------------------------------------------
- # ロゴ時のMEファイル名(nil:不要)
- LOGO_ME = "BGM2_001"
- # ロゴ表示フレーム数
- LOGO_F_CNT = 120
- # ロゴ表示タイプ(true:テキスト、false:画像)
- LOGO_TYPE = true
- # ロゴ表示前のトランジションファイル名(nil:不要)
- LOGO_TRN = "GUODU.png"
- #---<テキストロゴ設定>---#
- LT_NAME = "Made by Qiji19980124" # 表示文字(\n:改行)
- LT_EDGE = true # 縁文字(true:有効、false:無効)
- LT_FONT = ["微软雅黑"] # 表示フォント [第1Font,第2Font・・・]
- LT_SIZE = 48 # フォントサイズ
- LT_ITALIC = false # イタリック(true:有効、false:無効)
- LT_BOLD = true # ボールド(true:有効、false:無効)
- LT_COLOR = Color.new(255,255,255,255) # 色:Color.new(red,green,blue,alpha)
- #---<画像ロゴ設定>---#
- LG_FILE = "logo" # ロゴ画像ファイル名(Graphics/Titles)
- #--------------------------------------------------------------------------
- # ● テキストデモ演出
- #--------------------------------------------------------------------------
- # テキストデモ中のBGM(nil:不要)
- TD_BGM = "BGM2_005"
- # テキストデモ表示前のトランジションファイル名(nil:不要)
- TD_TRN = "GUODU.png"
- # フォント設定
- 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 = "Title"
- #--<一枚絵タイプ設定>--#
- # バック絵(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]
- ]
- #--------------------------------------------------------------------------
- # ● イベントデモ演出
- #--------------------------------------------------------------------------
- # イベントデモマップID
- ED_MAP_ID = 5
- # パーティー位置
- ED_START_X = 14 # X軸方向
- ED_START_Y = 23 # Y軸方向
- #--------------------------------------------------------------------------
- # ● アナザーオープニング(イベントデモと差し替え実行)
- #--------------------------------------------------------------------------
- # アナザーオープニング起動用スイッチ
- AOP_SW = 10
- # イベントデモマップID
- AOP_MAP_ID = 3
- # パーティー位置
- AOP_START_X = 10 # X軸方向
- AOP_START_Y = 5 # Y軸方向
- #--------------------------------------------------------------------------
- # ● タイトル表示
- #--------------------------------------------------------------------------
- # タイトル表示前のトランジションファイル名(nil:不要)
- TITLE_TRN = "GUODU.png"
- # タイトル背景のファイル名(Graphics/System)
- TITLE_BACK = "Title"
- #-=-=-=-=-=-=-=-=-=-=-=-=-#
- # メインタイトル設定 #
- #-=-=-=-=-=-=-=-=-=-=-=-=-#
- # メインタイトル表示有効?(true:有効 false:無効)
- TM = true
- # 表示位置(X軸方向)
- TM_X = 140
- # 表示位置(Y軸方向)
- TM_Y = 40
- # メインタイトル表示タイプ(true:テキスト false:画像)
- TM_TYPE = true
- #--<テキストタイトル設定>--#
- TMT_NAME = "哆啦A梦与大雄的~恋爱物语~" # タイトル名(改行不可)
- TMT_EDGE = true # 縁文字(true:有効、false:無効)
- TMT_FONT = ["微软雅黑"] # 表示フォント [第1Font,第2Font・・・]
- TMT_SIZE = 32 # フォントサイズ
- TMT_ITALIC = false # イタリック(true:有効、false:無効)
- TMT_BOLD = true # ボールド(true:有効、false:無効)
- TMT_COLOR = Color.new(255,100,85,255) # 色:Color.new(red,green,blue,alpha)
- #--<グラフィックタイトル設定>--#
- # タイトル画像名(Graphics/System)
- TMG_FILE = "main_title"
- #-=-=-=-=-=-=-=-=-=-=-=-#
- # サブタイトル設定 #
- #-=-=-=-=-=-=-=-=-=-=-=-#
- # サブタイトル表示有効?(true:有効 false:無効)
- TS = true
- # 表示位置(X軸方向)
- TS_X = 350
- # 表示位置(Y軸方向)
- TS_Y = 80
- # サブタイトル表示タイプ(true:テキスト false:画像)
- TS_TYPE = true
- #--<テキストタイトル設定>--#
- TST_NAME = "~Love Story~" # タイトル名(改行不可)
- TST_EDGE = true # 縁文字(true:有効、false:無効)
- TST_FONT = ["UmePlus Gothic"] # 表示フォント [第1Font,第2Font・・・]
- TST_SIZE = 24 # フォントサイズ
- TST_ITALIC = false # イタリック(true:有効、false:無効)
- TST_BOLD = false # ボールド(true:有効、false:無効)
- TST_COLOR = Color.new(75,235,210,255) # 色:Color.new(red,green,blue,alpha)
- #--<グラフィックタイトル設定>--#
- # タイトル画像名(Graphics/System)
- TSG_FILE = "sub_title"
- #-=-=-=-=-=-=-=-=-=-=-=-=-#
- # タイトルコマンド設定 #
- #-=-=-=-=-=-=-=-=-=-=-=-=-#
- # 表示順定義
- # 0: ニューゲーム
- # 1: コンティニュー
- # 2: シャットダウン
- CMD_BOX = [0, 1, 2]
- # 表示位置(X軸方向)
- CT_WIN_X = 420
- # 表示位置(Y軸方向)
- CT_WIN_Y = 240
- # 各コマンドの横ずれ値
- CT_WIN_SLIDE = 30
- # コマンドタイプ(true:テキスト false:画像)
- CMD_TYPE = true
- #--<テキストコマンド設定>--#
- # ニューゲームコマンド名
- CT_NEWGAME = "New lover"
- # コンティニューコマンド名
- CT_CONTINUE = "Load lover"
- # シャットダウンコマンド名
- CT_SHUTDOWN = "Exit"
- CT_EDGE = true # 縁文字(true:有効、false:無効)
- CT_FONT = [] # 表示フォント [第1Font,第2Font・・・]
- CT_SIZE = 22 # フォントサイズ
- CT_ITALIC = false # イタリック(true:有効、false:無効)
- CT_BOLD = false # ボールド(true:有効、false:無効)
- CT_COLOR = Color.new(255,255,255,255) # 色:Color.new(red,green,blue,alpha)
- CT_ALIGN = 0 # 0=左揃え 1=中央 2=右揃え
- # ウィンドウ透明度
- CT_WIN_OPACITY = 0
- # ウィンドウ背景透明度
- CT_WIN_BACKOPACITY = 160
- #--<画像コマンド設定>--#
- #-**注意事項**-#
- # コマンド用の画像は全て同じサイズ(幅、高さ)にしてください。
- # ニューゲームファイル名(Graphics/System)
- CG_NEWGAME = "newgame"
- # コンティニューファイル名(Graphics/System)
- CG_CONTINUE = "continue"
- # シャットダウンファイル名(Graphics/System)
- CG_SHUTDOWN = "shutdown"
- # カーゾルが当たってるときに画像チェンジ(true:有効+カーソル消 false:無効)
- CG_CHANGE = false
- # ニューゲームファイル名(Graphics/System)
- CGS_NEWGAME = "newgame_s"
- # コンティニューファイル名(Graphics/System)
- CGS_CONTINUE = "continue_s"
- # シャットダウンファイル名(Graphics/System)
- CGS_SHUTDOWN = "shutdown_s"
- #-=-=-=-=-=-=-=-=-=-=-=-=-#
- # フェードイン設定 #
- #-=-=-=-=-=-=-=-=-=-=-=-=-#
- # フェードイン機能
- FADEIN = true
- # フェードインパターン
- # 0:メインタイトル+サブタイトル+コマンド
- # 1:メインタイトル+サブタイトル → コマンド
- # 2:メインタイトル → サブタイトル+コマンド
- # 3:メインタイトル → サブタイトル → コマンド
- FADEIN_PATTERN = 3
- # フェードイン時間(フレーム数)
- # (例1)60に設定した場合
- # パターン0 => 60
- # パターン1 => 60 + 60
- # パターン3 => 60 + 60 + 60
- FADEIN_TIME = 60
- #-=-=-=-=-=-=-=-=-=-=-=-=-#
- # タイムアウト設定 #
- #-=-=-=-=-=-=-=-=-=-=-=-=-#
- # タイムアウト機能
- TIME_OUT = true
- # タイムアウト発生フレーム数
- TIME_OUT_CNT = 500
- #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
- # タイトルエフェクト設定 #
- #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
- # エフェクトは #
- # ニューゲーム、コンティニュー、シャットダウン #
- # ごとに別々の設定になります。 #
- # 全て同形式の配列での設定で下のようになります。 #
- # [ ニューゲーム選択時の動作, #
- # コンティニュー選択時の動作, #
- # シャットダウン選択時の動作 ] #
- #-----------------------------------------------------#
- # また、エフェクト処理は毎フレームごとに #
- # 加算していく形になりますので、 #
- # あまり大きな値は設定はお勧めできません。 #
- #-----------------------------------------------------#
- # タイトルエフェクト機能(true:有効 false:無効)
- EFFECT = [true, true, true]
- # エフェクト時間(フレーム数)
- EF_TIME_CNT= [ 20, 20, 20]
- #--<メインタイトル用エフェクト設定>--#
- TME_X = [ 0, 0, 0] # X軸方向のスライド
- TME_Y = [ 0, 0, 2] # Y軸方向のスライド
- TME_ZOOM_X = [ 0.0, 0.0, 0.0] # X軸方向のズーム
- TME_ZOOM_Y = [ 0.0, 0.0, 0.0] # Y軸方向のズーム
- #--<サブタイトル用エフェクト設定>--#
- TSE_X = [ 0, 0, 0] # X軸方向のスライド
- TSE_Y = [ 0, 0, 2] # Y軸方向のスライド
- TSE_ZOOM_X = [ 0.0, 0.0, 0.0] # X軸方向のズーム
- TSE_ZOOM_Y = [ 0.0, 0.0, 0.0] # Y軸方向のズーム
- #--<コマンド用エフェクト設定>--#
- CME_X = [ 0, 0, 0] # X軸方向のスライド
- CME_Y = [ 0, 0, -2] # Y軸方向のスライド
- # ※ズームは出来ません(Windowの仕様)
- #--<タイトルバック用エフェクト設定>--#
- TBE_X = [ 0, -30, 0] # X軸方向のスライド
- TBE_Y = [ 0, -28, 0] # Y軸方向のスライド
- TBE_ZOOM_X = [ 0.1, 0.1, 0.0] # X軸方向のズーム
- TBE_ZOOM_Y = [ 0.1, 0.1, 0.0] # Y軸方向のズーム
- TBE_TONE_R = [ 1, 0, 0] # 色調変更(赤)
- TBE_TONE_G = [ 0, 1, 0] # 色調変更(緑)
- TBE_TONE_B = [ 0, 0, 1] # 色調変更(青)
- TBE_TONE_S = [ 0, 0, 10] # 色調変更(グレースケール)
- #----------------------------------------------------------------------------
- # カスタマイズEND
- #----------------------------------------------------------------------------
- module_function
- #--------------------------------------------------------------------------
- # ● テキストデモ用フェードアウト処理値の参照
- #--------------------------------------------------------------------------
- def 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
- #==============================================================================
- # ■ タイトルカスタマイズ[Scene_Title]
- #------------------------------------------------------------------------------
- # タイトルカスタマイズ用にScene_Titleを再構築。
- #--< 再定義箇所 >--------------------------------------------------------------
- # Scene_Title内の全メソッド
- # (main,update,command_new_game,command_continue,command_shutdown,battle_test)
- #==============================================================================
- class Scene_Title
- # 各フェーズの定義(メンテの容易化)
- PHASE_LOGO = 1
- PHASE_TEXT_DEMO = 2
- PHASE_EVENT_DEMO = 3
- PHASE_TITLE = 4
- #--------------------------------------------------------------------------
- # ● 音楽:全停止
- #--------------------------------------------------------------------------
- def all_music_stop
- RPG::BGM.stop
- RPG::BGS.stop
- RPG::ME.stop
- end
- #--------------------------------------------------------------------------
- # ● 音楽:全フェードアウト
- #--------------------------------------------------------------------------
- def all_music_fade(msec)
- RPG::BGM.fade(msec)
- RPG::BGS.fade(msec)
- RPG::ME.fade(msec)
- end
- #--------------------------------------------------------------------------
- # ● 開始処理
- #--------------------------------------------------------------------------
- def start
- # 二度読み防止
- if $data_system.nil?
- load_database # データベースをロード
- create_game_objects # ゲームオブジェクトを作成
- end
- # セーブファイルチェック
- save_file_check
- # デバッグ実行モードチェック
- if debug_check
- return
- end
- # システムオブジェクトを作成
- if $game_system.nil?
- $game_system = Game_System.new
- end
- # タイトルフェーズの選定
- if (Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO) and $game_system.event_demo
- # イベントデモ表示フェーズ
- @phase = PHASE_EVENT_DEMO
- # ローカルフェーズ:イベントデモ表示終了
- @local_phase = 1
- else
- # ロゴ表示フェーズ
- @phase = PHASE_LOGO
- # ローカルフェーズ初期化
- @local_phase = 0
- end
- # フレームカウント初期化
- @frame_count = 0
- end
- #--------------------------------------------------------------------------
- # ● 開始後処理
- #--------------------------------------------------------------------------
- def post_start
- # 汎用スプライトを用意
- @sprite = Sprite.new(Viewport.new(0, 0, Title_Custom::DISP_W, Title_Custom::DISP_H))
- @sprite.bitmap = Bitmap.new(Title_Custom::DISP_W,Title_Custom::DISP_H)
- end
- #--------------------------------------------------------------------------
- # ● トランジション実行
- #--------------------------------------------------------------------------
- def perform_transition
- # ロゴトランジションが有効か?
- if Title_Custom::LOGO_TRN.nil? or !Title_Custom::LOGO
- # トランジション実行
- Graphics.transition
- else
- # トランジション準備
- Graphics.freeze
- end
- end
- #--------------------------------------------------------------------------
- # ● 終了前処理
- #--------------------------------------------------------------------------
- def pre_terminate
- end
- #--------------------------------------------------------------------------
- # ● 終了処理
- #--------------------------------------------------------------------------
- def terminate
- # スプライト消去
- @sprite.dispose
- end
- #--------------------------------------------------------------------------
- # ● セーブファイルチェック
- #--------------------------------------------------------------------------
- def save_file_check
- @continue_enabled = false
- @another_op = false
- # セーブファイルの有無をチェック
- for i in 0..Title_Custom::SAVE_FILE_MAX
- if FileTest.exist?("Save#{i+1}.rvdata")
- @continue_enabled = true
- # アナザーOP有効?
- if Title_Custom::AOP_DEMO
- file = File.open("Save#{i+1}.rvdata", "rb")
- characters = Marshal.load(file)
- frame_count = Marshal.load(file)
- last_bgm = Marshal.load(file)
- last_bgs = Marshal.load(file)
- game_system = Marshal.load(file)
- game_message = Marshal.load(file)
- game_switches = Marshal.load(file)
- file.close
- # アナザーOP有効フラグを確認
- if game_switches[Title_Custom::AOP_SW]
- @another_op = true
- break
- end
- else
- break
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● デバッグモードチェック
- #--------------------------------------------------------------------------
- def debug_check
- # タイトルスキップ(ニューゲーム)
- if Title_Custom::TITLE_SKIP_ALL
- command_new_game
- return true
- # タイトルスキップ(コンティニュー)
- elsif Title_Custom::TITLE_SKIP_CONTINUE
- # セーブファイルが存在すれば
- if @continue_enabled
- # つづきから
- command_continue
- else
- # はじめから
- command_new_game
- end
- return true
- end
- return false
- end
- #--------------------------------------------------------------------------
- # ● 移動フェーズの選択
- #--------------------------------------------------------------------------
- def next_phase(now_phase)
- # 現在のフェーズから遷移するフェーズを決定する
- case Title_Custom::DEMO_PATTERN
- when 0 # テキストデモ → イベントデモ ※タイムアウト時:ロゴ
- case now_phase
- when PHASE_LOGO # ロゴ表示中
- # テキストデモ
- return PHASE_TEXT_DEMO
- when PHASE_TEXT_DEMO # テキストデモ表示中
- # イベントデモ
- return PHASE_EVENT_DEMO
- when PHASE_EVENT_DEMO # イベントデモ表示中
- # タイトル表示
- return PHASE_TITLE
- when PHASE_TITLE # タイトル表示中(タイムアウト)
- if Title_Custom::LOGO or Title_Custom::TEXT_DEMO or Title_Custom::EVENT_DEMO
- # ロゴ表示
- return PHASE_LOGO
- else
- # 更新なし
- return PHASE_TITLE
- end
- end
- when 1 # イベントデモ → テキストデモ ※タイムアウト時:ロゴ
- case now_phase
- when PHASE_LOGO # ロゴ表示中
- # イベントデモ
- return PHASE_EVENT_DEMO
- when PHASE_TEXT_DEMO # テキストデモ表示中
- # タイトル表示
- return PHASE_TITLE
- when PHASE_EVENT_DEMO # イベントデモ表示中
- # テキストデモ
- return PHASE_TEXT_DEMO
- when PHASE_TITLE # タイトル表示中(タイムアウト)
- if Title_Custom::LOGO or Title_Custom::TEXT_DEMO or Title_Custom::EVENT_DEMO
- # ロゴ表示
- return PHASE_LOGO
- else
- # 更新なし
- return PHASE_TITLE
- end
- end
- when 2 # 通常:テキストデモ、タイムアウト時:イベントデモ(ロゴなし)
- case now_phase
- when PHASE_LOGO # ロゴ表示中
- # テキストデモ
- return PHASE_TEXT_DEMO
- when PHASE_TEXT_DEMO # テキストデモ表示中
- # タイトル表示
- return PHASE_TITLE
- when PHASE_EVENT_DEMO # イベントデモ表示中
- # タイトル表示
- return PHASE_TITLE
- when PHASE_TITLE # タイトル表示中(タイムアウト)
- if Title_Custom::EVENT_DEMO
- # イベントデモ
- return PHASE_EVENT_DEMO
- else
- # 更新なし
- return PHASE_TITLE
- end
- end
- when 3 # 通常:イベントデモ、タイムアウト時:テキストデモ(ロゴなし)
- case now_phase
- when PHASE_LOGO # ロゴ表示中
- # イベントデモ
- return PHASE_EVENT_DEMO
- when PHASE_TEXT_DEMO # テキストデモ表示中
- # タイトル表示
- return PHASE_TITLE
- when PHASE_EVENT_DEMO # イベントデモ表示中
- # タイトル表示
- return PHASE_TITLE
- when PHASE_TITLE # タイトル表示中(タイムアウト)
- if Title_Custom::TEXT_DEMO
- # テキストデモ
- return PHASE_TEXT_DEMO
- else
- # 更新なし
- return PHASE_TITLE
- end
- end
- else
- p "Error:DEMO_PATTERN"
- exit
- end
- end
- #--------------------------------------------------------------------------
- # ● 次のフェーズ実行前にトランジションがあるか?
- # true:なし false:あり
- #--------------------------------------------------------------------------
- def next_phase_transition?(next_phase)
- case next_phase
- when PHASE_LOGO # ロゴ表示
- return Title_Custom::LOGO_TRN.nil?
- when PHASE_TEXT_DEMO # テキストデモ
- return Title_Custom::TD_TRN.nil?
- when PHASE_EVENT_DEMO # イベントデモ(Scene_Mapにはトランジション実行がない)
- # return Title_Custom::ED_TRN.nil?
- return true
- when PHASE_TITLE # タイトル表示
- return Title_Custom::TITLE_TRN.nil?
- end
- return true
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- # フェーズによって分岐
- case @phase
- when PHASE_LOGO
- # ロゴ表示フェーズ
- update_phase_logo
- when PHASE_TEXT_DEMO
- # テキストデモ表示フェーズ
- update_phase_text_demo
- when PHASE_EVENT_DEMO
- # イベントデモ表示フェーズ
- update_phase_event_demo
- when PHASE_TITLE
- # タイトル表示フェーズ
- update_phase_title
- end
- end
- #--------------------------------------------------------------------------
- # ● ロゴ表示フェーズ:総合フレーム更新
- #--------------------------------------------------------------------------
- def update_phase_logo
- case @local_phase
- when 0 # ロゴ準備
- logo_phase_startup
- when 1 # 表示待機
- logo_phase_update
- when 2 # 表示終了
- logo_phase_end
- end
- end
- #--------------------------------------------------------------------------
- # ● ロゴ表示フェーズ:ロゴ準備
- #--------------------------------------------------------------------------
- def logo_phase_startup
- if Title_Custom::LOGO
- # ビットマップ定義
- @sprite.bitmap = Bitmap.new(Title_Custom::DISP_W,Title_Custom::DISP_H)
- # ME再生
- unless Title_Custom::LOGO_ME.nil?
- Audio.me_play("Audio/ME/" + Title_Custom::LOGO_ME)
- end
- # テキストロゴ
- if Title_Custom::LOGO_TYPE
- # フォント定義
- font = Title_Custom::LT_FONT.dup
- font.push(Font.default_name)
- @sprite.bitmap.font.name = font
- # フォントサイズ
- @sprite.bitmap.font.size = Title_Custom::LT_SIZE
- # イタリック
- @sprite.bitmap.font.italic = Title_Custom::LT_ITALIC
- # ボールド
- @sprite.bitmap.font.bold = Title_Custom::LT_BOLD
- # フォント色
- @sprite.bitmap.font.color = Title_Custom::LT_COLOR
- # 表示位置定義(自動中央表示)
- text = Title_Custom::LT_NAME.dup
- rect = @sprite.bitmap.text_size(text)
- len = text.split(/\n/)
- x = (Title_Custom::DISP_W-rect.width)/2
- y = (Title_Custom::DISP_H-len.size * rect.height)/2
- width = rect.width + (Title_Custom::LT_SIZE / 2)
- height = rect.height
- # 文字表示タイプ
- if Title_Custom::LT_EDGE
- # 縁文字
- @sprite.bitmap.draw_enter_edging_text(x, y, width, height, text, 1)
- else
- # 通常文字
- @sprite.bitmap.draw_enter_text(x, y, width, height, text, 1)
- end
- # グラフィックロゴ
- else
- @sprite.bitmap.draw_title(Title_Custom::LG_FILE, Title_Custom::DISP_W/2, Title_Custom::DISP_H/2)
- end
- # フレームカウント初期化
- @frame_count = 0
- # 表示待機フェーズに移動
- @local_phase = 1
- # トランジションの実行
- unless Title_Custom::LOGO_TRN.nil?
- # トランジション実行
- Graphics.transition(40, "Graphics/System/" + Title_Custom::LOGO_TRN)
- end
- else
- # 終了フェーズに移動
- @local_phase = 2
- end
- end
- #--------------------------------------------------------------------------
- # ● ロゴ表示フェーズ:表示待機
- #--------------------------------------------------------------------------
- def logo_phase_update
- @frame_count += 1
- # C or Bボタンが押された
- if Input.trigger?(Input::C) or Input.trigger?(Input::B)
- # 表示終了フェーズに移動
- @frame_count = Title_Custom::LOGO_F_CNT
- end
- # ロゴ表示時間終了
- if @frame_count > Title_Custom::LOGO_F_CNT
- # 表示終了フェーズに移動
- @local_phase = 2
- RPG::ME.fade(2000)
- end
- end
- #--------------------------------------------------------------------------
- # ● ロゴ表示フェーズ:表示終了
- #--------------------------------------------------------------------------
- def logo_phase_end
- # フレームカウント初期化
- @frame_count = 0
- # ローカルフェーズの初期化
- @local_phase = 0
- # 次のフェーズに移動
- @phase = next_phase(@phase)
- # 次のフェーズにトランジション実行があるか?
- unless next_phase_transition?(@phase)
- # トランジション準備
- Graphics.freeze
- end
- # ロゴ消去
- @sprite.bitmap.clear
- end
- #--------------------------------------------------------------------------
- # ● テキストデモ表示フェーズ:総合フレーム更新
- #--------------------------------------------------------------------------
- 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, Title_Custom::DISP_W, Title_Custom::DISP_H)
- viewport.z = -1000
- case Title_Custom::TD_BACK_TYPE
- when 0 # 表示なし
- when 1 # パノラマ絵
- # プレーンを定義
- @picture = Plane.new(viewport)
- file = Title_Custom::TD_PAN_BACK
- @picture.bitmap = Cache.system(file)
- when 2 # 一枚絵
- # 一枚絵用スプライトの定義
- @picture = Sprite.new(viewport)
- # 一枚絵を用意
- 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
- # ビットマップを再定義(他のフェーズの影響をなくす)
- @sprite.bitmap = Bitmap.new(Title_Custom::DISP_W,Title_Custom::DISP_H)
- # フォント設定
- 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
- # テキストIndex値の更新
- @text_index += 1
- # 表示切替フェーズに移動
- @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
- # 次のフェーズに移動
- @phase = next_phase(@phase)
- # 次のフェーズにトランジション実行があるか?
- unless next_phase_transition?(@phase)
- # トランジション準備
- Graphics.freeze
- end
- # BGMフェードアウト
- Audio.bgm_fade(4000)
- # フェードアウト処理後の初期化
- 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
- # テキスト消去
- @sprite.bitmap.clear
- end
- #--------------------------------------------------------------------------
- # ● イベントデモ表示フェーズ:総合フレーム更新
- #--------------------------------------------------------------------------
- def update_phase_event_demo
- case @local_phase
- when 0 # 表示準備
- event_phase_startup
- when 1 # 表示終了
- event_phase_end
- end
- end
- #--------------------------------------------------------------------------
- # ● イベントデモ表示フェーズ:表示準備
- #--------------------------------------------------------------------------
- def event_phase_startup
- # アナザーOP起動
- if Title_Custom::AOP_DEMO and @another_op
- map_id = Title_Custom::AOP_MAP_ID
- start_posx = Title_Custom::AOP_START_X
- start_posy = Title_Custom::AOP_START_Y
- # 通常イベントデモ起動
- elsif Title_Custom::EVENT_DEMO
- map_id = Title_Custom::ED_MAP_ID
- start_posx = Title_Custom::ED_START_X
- start_posy = Title_Custom::ED_START_Y
- else
- # 終了フェーズに移動
- @local_phase = 1
- return
- end
- $game_party.setup_starting_members # 初期パーティ
- $game_map.setup(map_id) # 初期位置のマップ
- $game_player.moveto(start_posx, start_posy)
- $game_player.refresh
- $scene = Scene_Map.new
- Graphics.fadeout(60)
- Graphics.wait(40)
- Graphics.frame_count = 0
- RPG::BGM.stop
- $game_map.autoplay
- # イベントデモ実行フラグON
- $game_system.event_demo = true
- end
- #--------------------------------------------------------------------------
- # ● イベントデモ表示フェーズ:表示終了
- #--------------------------------------------------------------------------
- def event_phase_end
- if (Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO)
- # イベントデモ実行フラグOFF
- $game_system.event_demo = false
- end
- # フレームカウント初期化
- @frame_count = 0
- # ローカルフェーズの初期化
- @local_phase = 0
- # 次のフェーズに移動
- @phase = next_phase(@phase)
- # 次のフェーズにトランジション実行があるか?
- unless next_phase_transition?(@phase)
- # トランジション準備
- Graphics.freeze
- end
- # BGMフェードアウト
- all_music_fade(400)
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:総合フレーム更新
- #--------------------------------------------------------------------------
- def update_phase_title
- case @local_phase
- when 0 # 表示準備
- title_phase_startup
- when 1 # フェードイン
- title_phase_fadein
- when 2 # 表示待機
- title_phase_update
- when 3 # エフェクト
- title_phase_effect
- when 4 # 表示終了
- title_phase_end(true)
- end
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:表示準備
- #--------------------------------------------------------------------------
- def title_phase_startup
- # 背景絵の表示準備
- @sprite.bitmap.dispose unless @sprite.bitmap.nil?
- @sprite.bitmap = Cache.system(Title_Custom::TITLE_BACK)
- # タイトル用ビューポート定義
- viewport = Viewport.new(0, 0, Title_Custom::DISP_W, Title_Custom::DISP_H)
- viewport.z = 1000
- # タイトル BGM を演奏
- $data_system.title_bgm.play
- # メインタイトルの表示準備
- if Title_Custom::TM
- @main_sprite = Sprite.new(viewport)
- @main_sprite.z = 100
- main_title_startup
- end
- # サブタイトルの表示準備
- if Title_Custom::TS
- @sub_sprite = Sprite.new(viewport)
- @sub_sprite.z = 50
- sub_title_startup
- end
- # コマンドの表示準備
- @cmd_window = Window_TitleCmd.new(@continue_enabled)
- if Title_Custom::FADEIN
- @cmd_window.opacity = 0
- @cmd_window.back_opacity = 0
- @cmd_window.contents_opacity = 0
- end
- # フレームカウント初期化
- @frame_count = 0
- # FadeInフェーズに移動
- @local_phase = 1
- @fade_in_phase = 0
- # トランジションの実行
- unless Title_Custom::TITLE_TRN.nil?
- # トランジション実行
- Graphics.transition(40, "Graphics/System/" + Title_Custom::TITLE_TRN)
- end
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:表示準備 [ メインタイトル ]
- #--------------------------------------------------------------------------
- def main_title_startup
- # テキスト
- if Title_Custom::TM_TYPE
- # ビットマップ定義
- @main_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
- # フォント定義
- font = Title_Custom::TMT_FONT
- font.push(Font.default_name)
- @main_sprite.bitmap.font.name = font
- # フォントサイズ
- @main_sprite.bitmap.font.size = Title_Custom::TMT_SIZE
- # イタリック
- @main_sprite.bitmap.font.italic = Title_Custom::TMT_ITALIC
- # ボールド
- @main_sprite.bitmap.font.bold = Title_Custom::TMT_BOLD
- # フォント色
- @main_sprite.bitmap.font.color = Title_Custom::TMT_COLOR
- # 表示位置定義
- text = Title_Custom::TMT_NAME.dup
- rect = @main_sprite.bitmap.text_size(text)
- width = rect.width + rect.height / 2
- height = rect.height
- # 文字表示タイプ
- if Title_Custom::TMT_EDGE
- # 縁文字
- @main_sprite.bitmap.draw_enter_edging_text(0, 0, width, height, text)
- else
- # 通常文字
- @main_sprite.bitmap.draw_enter_text(0, 0, width, height, text)
- end
- # グラフィック
- else
- # ビットマップ定義
- @main_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
- # グラフィック描画
- @main_sprite.bitmap.draw_title_file(Title_Custom::TMG_FILE, 0, 0)
- end
- # 表示位置
- @main_sprite.x = Title_Custom::TM_X
- @main_sprite.y = Title_Custom::TM_Y
- # フェードイン前処理
- if Title_Custom::FADEIN
- @main_sprite.opacity = 0
- end
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:表示準備 [ サブタイトル ]
- #--------------------------------------------------------------------------
- def sub_title_startup
- # テキスト
- if Title_Custom::TS_TYPE
- # ビットマップ定義
- @sub_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
- # フォント定義
- font = Title_Custom::TST_FONT.dup
- font.push(Font.default_name)
- @sub_sprite.bitmap.font.name = font
- # フォントサイズ
- @sub_sprite.bitmap.font.size = Title_Custom::TST_SIZE
- # イタリック
- @sub_sprite.bitmap.font.italic = Title_Custom::TST_ITALIC
- # ボールド
- @sub_sprite.bitmap.font.bold = Title_Custom::TST_BOLD
- # フォント色
- @sub_sprite.bitmap.font.color = Title_Custom::TST_COLOR
- # 表示位置定義
- text = Title_Custom::TST_NAME
- rect = @sub_sprite.bitmap.text_size(text)
- width = rect.width + rect.height / 2
- height = rect.height
- # 文字表示タイプ
- if Title_Custom::TST_EDGE
- # 縁文字
- @sub_sprite.bitmap.draw_enter_edging_text(0, 0, width, height, text)
- else
- # 通常文字
- @sub_sprite.bitmap.draw_enter_text(0, 0, width, height, text)
- end
- # グラフィック
- else
- # ビットマップ定義
- @sub_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
- # グラフィック描画
- @sub_sprite.bitmap.draw_title_file(Title_Custom::TSG_FILE, 0, 0)
- end
- # 表示位置
- @sub_sprite.x = Title_Custom::TS_X
- @sub_sprite.y = Title_Custom::TS_Y
- # フェードイン前処理
- if Title_Custom::FADEIN
- @sub_sprite.opacity = 0
- end
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:フェードインフェーズ
- #--------------------------------------------------------------------------
- def title_phase_fadein
- # フェードイン有効
- if Title_Custom::FADEIN
- case @fade_in_phase
- when 0
- # フェードイン準備
- fade_in_setup
- # フェードイン実行(1フレーム分のムダをなくすための対応)
- fade_in_update
- when 1
- # フェードイン実行
- fade_in_update
- end
- else
- # 表示待機フェーズに移動
- @local_phase = 2
- end
- end
- #----<フェードイン実行メソッドの定義>----#
- FADEIN_MAIN = 0
- FADEIN_SUB = 1
- FADEIN_CMD = 2
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:フェードイン [ 準備 ]
- #--------------------------------------------------------------------------
- def fade_in_setup
- # 実行するメソッドを配列化して動作を制御する
- @fadein_struct = [[],[],[]]
- # 実行フェーズ数
- @fadein_max = 0
- case Title_Custom::FADEIN_PATTERN
- when 0 # メインタイトル+サブタイトル+コマンド
- @fadein_max = 1
- if Title_Custom::TM
- @fadein_struct[0].push(FADEIN_MAIN)
- end
- if Title_Custom::TS
- @fadein_struct[0].push(FADEIN_SUB)
- end
- @fadein_struct[0].push(FADEIN_CMD)
- when 1 # メインタイトル+サブタイトル → コマンド
- @fadein_max = 2
- if Title_Custom::TM
- @fadein_struct[0].push(FADEIN_MAIN)
- end
- if Title_Custom::TS
- @fadein_struct[0].push(FADEIN_SUB)
- end
- @fadein_struct[1].push(FADEIN_CMD)
- when 2 # メインタイトル → サブタイトル+コマンド
- @fadein_max = 2
- if Title_Custom::TM
- @fadein_struct[0].push(FADEIN_MAIN)
- end
- if Title_Custom::TS
- @fadein_struct[1].push(FADEIN_SUB)
- end
- @fadein_struct[1].push(FADEIN_CMD)
- when 3 # メインタイトル → サブタイトル → コマンド
- @fadein_max = 3
- if Title_Custom::TM
- @fadein_struct[0].push(FADEIN_MAIN)
- end
- if Title_Custom::TS
- @fadein_struct[1].push(FADEIN_SUB)
- end
- @fadein_struct[2].push(FADEIN_CMD)
- end
- # フェードイン実行フェーズへ移動
- @fade_in_phase = 1
- @frame_count = 0
- @fade_in_index = 0
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:フェードイン [ メインタイトル ]
- #--------------------------------------------------------------------------
- def main_title_fadein
- @main_sprite.opacity += 255 / Title_Custom::FADEIN_TIME
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:フェードイン [ サブタイトル ]
- #--------------------------------------------------------------------------
- def sub_title_fadein
- @sub_sprite.opacity += 255 / Title_Custom::FADEIN_TIME
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:フェードイン [ コマンド ]
- #--------------------------------------------------------------------------
- def command_fadein
- if Title_Custom::CMD_TYPE
- @cmd_window.opacity += Title_Custom::CT_WIN_OPACITY / Title_Custom::FADEIN_TIME
- @cmd_window.back_opacity += Title_Custom::CT_WIN_BACKOPACITY / Title_Custom::FADEIN_TIME
- end
- @cmd_window.contents_opacity += 255 / Title_Custom::FADEIN_TIME
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:フェードイン [ 実行 ]
- #--------------------------------------------------------------------------
- def fade_in_update
- # 配列化したフェードインメソッドを実行
- for i in 0...@fadein_struct[@fade_in_index].size
- case @fadein_struct[@fade_in_index][i]
- when FADEIN_MAIN
- main_title_fadein
- when FADEIN_SUB
- sub_title_fadein
- when FADEIN_CMD
- command_fadein
- end
- end
- @frame_count += 1
- # 次のフェードインを開始する
- if @frame_count > Title_Custom::FADEIN_TIME
- @fade_in_index += 1
- @frame_count = 0
- # フェードインのオワリ
- if @fade_in_index == @fadein_max
- @fade_in_phase = 2
- # 表示待機フェーズに移動
- @local_phase = 2
- # タイムアウトの初期化
- title_time_out_update_cancel
- end
- end
- # ボタンが押されたらフェードイン終了
- if Input.trigger?(Input::B) or Input.trigger?(Input::C) or Input.dir8 != 0
- if Title_Custom::TM
- @main_sprite.opacity = 255
- end
- if Title_Custom::TS
- @sub_sprite.opacity = 255
- end
- @cmd_window.opacity = Title_Custom::CT_WIN_OPACITY
- @cmd_window.back_opacity = Title_Custom::CT_WIN_BACKOPACITY
- @cmd_window.contents_opacity = 255
- @fade_in_phase = 2
- # 表示待機フェーズに移動
- @local_phase = 2
- # タイムアウトの初期化
- title_time_out_update_cancel
- end
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:表示待機
- #--------------------------------------------------------------------------
- def title_phase_update
- @cmd_window.update
- # C ボタンが押された
- if Input.trigger?(Input::C)
- case Title_Custom::CMD_BOX[@cmd_window.index]
- when 0 # New Game
- # 決定 SE を演奏
- Sound.play_decision
- title_phase_update_next
- when 1 # Continue
- # セーブファイルがあるか?
- unless @continue_enabled
- # ブザー SE を演奏
- Sound.play_buzzer
- return
- end
- # 決定 SE を演奏
- Sound.play_decision
- title_phase_update_next
- when 2 # Shut Down
- # 決定 SE を演奏
- Sound.play_decision
- title_phase_update_next
- end
- return
- end
- # タイムアウトを見張る
- title_time_out_update
- # カーソル移動時にカーソル音を鳴らす
- if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
- # カーソル SE を演奏
- Sound.play_cursor
- # タイムアウトの初期化
- title_time_out_update_cancel
- end
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:表示待機 [ 次のフェーズに移動 ]
- #--------------------------------------------------------------------------
- def title_phase_update_next
- # エフェクトフェーズに移動
- @local_phase = 3
- # フレームカウント初期化
- @frame_count = 0
- @title_timeout_cnt = 0
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:表示待機 [ タイムアウトの見張り ]
- #--------------------------------------------------------------------------
- def title_time_out_update
- if Title_Custom::TIME_OUT
- @title_timeout_cnt += 1
- # タイムアウト発生
- if @title_timeout_cnt > Title_Custom::TIME_OUT_CNT
- if @phase != next_phase(@phase)
- # タイトル表示終了処理を先駆け実行
- title_phase_end(false)
- else
- # 同フェーズに移行する場合はタイムアウトなし
- title_time_out_update_cancel
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:表示待機 [ タイムアウトの初期化 ]
- #--------------------------------------------------------------------------
- def title_time_out_update_cancel
- @title_timeout_cnt = 0
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:エフェクト
- #--------------------------------------------------------------------------
- def title_phase_effect
- index = Title_Custom::CMD_BOX[@cmd_window.index]
- if Title_Custom::EFFECT[index]
- # エフェクト処理を実行
- main_effect_ex(index) if Title_Custom::TM
- sub_effect_ex(index) if Title_Custom::TS
- command_effect_ex(index)
- titleback_effect_ex(index)
- # フレームカウント
- @frame_count += 1
- # エフェクト処理の終了
- if @frame_count > Title_Custom::EF_TIME_CNT[index]
- # タイトル表示終了フェーズに移動
- @local_phase = 4
- end
- else
- # タイトル表示終了フェーズに移動
- @local_phase = 4
- end
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:メインタイトルエフェクト処理
- # type: 0=NewGame 1:Continue 2:Shutdown
- #--------------------------------------------------------------------------
- def main_effect_ex(type)
- @main_sprite.x += Title_Custom::TME_X[type]
- @main_sprite.y += Title_Custom::TME_Y[type]
- @main_sprite.zoom_x += Title_Custom::TME_ZOOM_X[type]
- @main_sprite.zoom_y += Title_Custom::TME_ZOOM_Y[type]
- @main_sprite.opacity -= 255 / Title_Custom::EF_TIME_CNT[type]
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:サブタイトルエフェクト処理
- # type: 0=NewGame 1=Continue 2=Shutdown
- #--------------------------------------------------------------------------
- def sub_effect_ex(type)
- @sub_sprite.x += Title_Custom::TSE_X[type]
- @sub_sprite.y += Title_Custom::TSE_Y[type]
- @sub_sprite.zoom_x += Title_Custom::TSE_ZOOM_X[type]
- @sub_sprite.zoom_y += Title_Custom::TSE_ZOOM_Y[type]
- @sub_sprite.opacity -= 255 / Title_Custom::EF_TIME_CNT[type]
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:コマンドエフェクト処理
- # type: 0=NewGame 1=Continue 2=Shutdown
- #--------------------------------------------------------------------------
- def command_effect_ex(type)
- @cmd_window.x += Title_Custom::CME_X[type]
- @cmd_window.y += Title_Custom::CME_Y[type]
- @cmd_window.contents_opacity -= 255 / Title_Custom::EF_TIME_CNT[type]
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:タイトルバックエフェクト処理
- # type: 0=NewGame 1=Continue 2=Shutdown
- #--------------------------------------------------------------------------
- def titleback_effect_ex(type)
- @sprite.x += Title_Custom::TBE_X[type]
- @sprite.y += Title_Custom::TBE_Y[type]
- @sprite.zoom_x += Title_Custom::TBE_ZOOM_X[type]
- @sprite.zoom_y += Title_Custom::TBE_ZOOM_Y[type]
- @sprite.tone.red += Title_Custom::TBE_TONE_R[type]
- @sprite.tone.green += Title_Custom::TBE_TONE_G[type]
- @sprite.tone.blue += Title_Custom::TBE_TONE_B[type]
- @sprite.tone.gray += Title_Custom::TBE_TONE_S[type]
- end
- #--------------------------------------------------------------------------
- # ● タイトル表示フェーズ:表示終了
- # pattern_flag: true=通常 false=タイムアウト
- #--------------------------------------------------------------------------
- def title_phase_end(pattern_flag)
- # メインタイトルの表示終了
- if Title_Custom::TM
- @main_sprite.dispose
- end
- # サブタイトルの表示終了
- if Title_Custom::TS
- @sub_sprite.dispose
- end
- # コマンドの表示終了
- @cmd_window.dispose
- # タイトルバックの消去
- #@sprite.bitmap.clear
- # フレームカウント初期化
- @frame_count = 0
- # ローカルフェーズの初期化
- @local_phase = 0
- @fade_in_phase = 0
- # 音楽フェードアウト
- all_music_fade(2000)
- # 終了パターンによって分岐
- case pattern_flag
- when false # タイムアウト
- # 次のフェーズに移動
- @phase = next_phase(@phase)
- # 次のフェーズにトランジション実行があるか?
- unless next_phase_transition?(@phase)
- # トランジション準備
- Graphics.freeze
- end
- when true # 通常終了
- # フェーズ終了
- @phase = 0
- # コマンド選択結果の実行
- case Title_Custom::CMD_BOX[@cmd_window.index]
- when 0 # New Game
- command_new_game
- when 1 # Continue
- command_continue
- when 2 # Shut Donw
- command_shutdown
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● コマンド : ニューゲーム
- #--------------------------------------------------------------------------
- def command_new_game
- $game_system = Game_System.new
- create_game_objects
- confirm_player_location
- $game_party.setup_starting_members # 初期パーティ
- $game_map.setup($data_system.start_map_id) # 初期位置のマップ
- $game_player.moveto($data_system.start_x, $data_system.start_y)
- $game_player.refresh
- $scene = Scene_Map.new
- $game_map.autoplay
- end
- #--------------------------------------------------------------------------
- # ● コマンド : コンティニュー
- #--------------------------------------------------------------------------
- def command_continue
- # ロード画面に切り替え
- $scene = Scene_File.new(false, true, false)
- end
- #--------------------------------------------------------------------------
- # ● コマンド : シャットダウン
- #--------------------------------------------------------------------------
- def command_shutdown
- all_music_fade(800)
- # シャットダウン
- $scene = nil
- end
- end
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # イベントデモ特有処理START #
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- if Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO
- #==============================================================================
- # ■ Game_System
- #==============================================================================
- class Game_System
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :event_demo # イベントデモ表示中フラグ
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- alias init_title initialize
- def initialize
- init_title
- @event_demo = false
- end
- end
- #==============================================================================
- # ■ Scene_Map
- #==============================================================================
- class Scene_Map
- alias event_demo_update update
- def update
- event_demo_update
- if $game_system.event_demo
- if Input.trigger?(Input::B)
- $scene = Scene_Title.new
- end
- end
- end
- end
- #==============================================================================
- # ■ Game_Interpreter
- #==============================================================================
- class Game_Interpreter
- #--------------------------------------------------------------------------
- # ● タイトルデモの終了
- #--------------------------------------------------------------------------
- def title_demo_end
- command_354
- end
- end
- end # Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- # イベントデモ特有処理END #
- #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
- #==============================================================================
- # ■ タイトルカスタマイズ[Window_TitleCmd]
- #------------------------------------------------------------------------------
- # タイトルカスタマイズ用のタイトルコマンド選択を行うウィンドウです。
- # フォントサイズに応じたWindow SizeやRectの設定に対応しています。
- #==============================================================================
- class Window_TitleCmd < Window_Selectable
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # load_flg : ロード色有効?
- #--------------------------------------------------------------------------
- def initialize(load_flg)
- @load_flg = load_flg
- @type = Title_Custom::CMD_TYPE
- @commands = Title_Custom::CMD_BOX.dup
- # テキストコマンド
- if @type
- @font_size = Title_Custom::CT_SIZE
- # コマンド配置決定
- for i in [email protected]
- case @commands[i]
- when 0 # ニューゲーム
- @commands[i] = Title_Custom::CT_NEWGAME
- when 1 # コンティニュー
- @commands[i] = Title_Custom::CT_CONTINUE
- when 2 # シャットダウン
- @commands[i] = Title_Custom::CT_SHUTDOWN
- end
- end
- # ウィンドウ幅の自動調整
- bitmap = Bitmap.new(10, 10)
- width = 0
- for i in [email protected]
- size = bitmap.text_size(@commands[i]).width
- if width < size
- width = size
- end
- end
- width += 64 + @commands.size * Title_Custom::CT_WIN_SLIDE.abs
- # 画像コマンド
- else
- @font_size = Cache.system(Title_Custom::CG_NEWGAME).height
- @serect_commands = @commands.dup
- # コマンド配置決定
- for i in [email protected]
- case @commands[i]
- when 0 # ニューゲーム
- @commands[i] = Title_Custom::CG_NEWGAME
- when 1 # コンティニュー
- @commands[i] = Title_Custom::CG_CONTINUE
- when 2 # シャットダウン
- @commands[i] = Title_Custom::CG_SHUTDOWN
- end
- end
- # コマンド配置決定
- if Title_Custom::CG_CHANGE
- for i in 0...@serect_commands.size
- case @serect_commands[i]
- when 0 # ニューゲーム
- @serect_commands[i] = Title_Custom::CGS_NEWGAME
- when 1 # コンティニュー
- @serect_commands[i] = Title_Custom::CGS_CONTINUE
- when 2 # シャットダウン
- @serect_commands[i] = Title_Custom::CGS_SHUTDOWN
- end
- end
- end
- # ウィンドウ幅の自動調整
- width = 0
- for i in [email protected]
- size = Cache.system(Title_Custom::CG_NEWGAME).width
- if width < size
- width = size
- end
- end
- width += 64 + @commands.size * Title_Custom::CT_WIN_SLIDE.abs
- end
- # コマンドの個数からウィンドウの高さを算出
- super(0, 0, width, @commands.size * (@font_size+10) + 32)
-
- self.x = Title_Custom::CT_WIN_X - self.width / 2
- self.y = Title_Custom::CT_WIN_Y
-
- @item_max = @commands.size
- self.contents = Bitmap.new(width - 32, @item_max * (@font_size+10))
- # テキストコマンド
- if @type
- # フォント定義
- font = Title_Custom::TMT_FONT
- font.push(Font.default_name)
- self.contents.font.name = font
- self.contents.font.size = @font_size
- self.contents.font.italic = Title_Custom::CT_ITALIC
- self.contents.font.bold = Title_Custom::CT_BOLD
- # 画像コマンド
- else
- font_size = Cache.system(Title_Custom::CG_NEWGAME).height
- self.opacity = 0
- self.back_opacity = 0
- #self.contents_opacity = 0
- end
-
- # インデックスの決定
- if @load_flg
- # セーブファイルがあればIndexはコンティニューにおく
- iindex = 1
- else
- # セーブファイルがない場合はIndexはニューゲームにおく
- iindex = 0
- end
- for i in 0...Title_Custom::CMD_BOX.size
- if Title_Custom::CMD_BOX[i] == iindex
- self.index = i
- end
- end
- @local_index = self.index
-
- refresh
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- for i in 0...@item_max
- draw_item(i)
- end
- end
- #--------------------------------------------------------------------------
- # ● 項目の描画
- # index : 項目番号
- #--------------------------------------------------------------------------
- def draw_item(index)
- # 開始位置の決定
- slide = Title_Custom::CT_WIN_SLIDE.abs
- if Title_Custom::CT_WIN_SLIDE > 0
- x = 8 + index * slide
- else
- x = 8 + (@commands.size - 1 - index) * slide
- end
- if @type
- # 文字色の決定
- if !@load_flg and Title_Custom::CMD_BOX[index] == 1
- self.contents.font.color = normal_color
- self.contents.font.color.alpha = 128
- else
- self.contents.font.color = Title_Custom::CT_COLOR
- end
- rect = Rect.new(x, (@font_size+10) * index, self.contents.width - 8, (@font_size+10))
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- # テキスト描画
- if Title_Custom::CT_EDGE
- self.contents.draw_edging_text(rect.x, rect.y, rect.width, rect.height, @commands[index], Title_Custom::CT_ALIGN)
- else
- self.contents.draw_text(rect, @commands[index], Title_Custom::CT_ALIGN)
- end
- else
- # 透明度の決定
- if !@load_flg and Title_Custom::CMD_BOX[index] == 1
- opacity = 80
- else
- opacity = 255
- end
- y = (@font_size+10) * index + 4
- # 画像描画
- if Title_Custom::CG_CHANGE and index == @local_index
- self.contents.draw_title_file(@serect_commands[index], x, y, opacity)
- else
- self.contents.draw_title_file(@commands[index], x, y, opacity)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● カーソルの矩形更新
- #--------------------------------------------------------------------------
- def update_cursor
- # カーソル移動があった場合のみ動作させる
- if @local_index != @index
- @local_index = @index
- # 画像チェンジ
- if Title_Custom::CG_CHANGE and !@type
- refresh
- return
- end
- # カーソルの矩形更新
- if @index < 0
- self.cursor_rect.empty
- else
- slide = Title_Custom::CT_WIN_SLIDE.abs
- if Title_Custom::CT_WIN_SLIDE > 0
- x = 4 + index * slide
- else
- x = 4 + (@commands.size - 1 - index) * slide
- end
- if @type
- if Title_Custom::CT_WIN_SLIDE != 0
- rect = self.contents.text_size(@commands[@index])
- width = rect.width
- else
- width = self.contents.width - 16
- end
- else
- width = Cache.system(Title_Custom::CG_NEWGAME).width
- end
- self.cursor_rect.set(x, (@font_size+10) * index, width + 8, (@font_size+10))
- end
- end
- end
- end
- #==============================================================================
- # ■ Bitmap拡張
- #==============================================================================
- class Bitmap
- #--------------------------------------------------------------------------
- # ● 縁文字
- #--------------------------------------------------------------------------
- def draw_edging_text(x, y, width, height, text, align=0)
- # 色を保持
- old_color = font.color.dup
- # 縁取り部分の描写(デフォルト:黒縁)
- font.color = Color.new(0, 0, 0)
- draw_text(x-1, y-1, width, height, text, align)
- draw_text(x-1, y+1, width, height, text, align)
- draw_text(x+1, y-1, width, height, text, align)
- draw_text(x+1, y+1, width, height, text, align)
- # 通常色に戻す
- font.color = old_color
- # 通常の文字を上か書きつぶす
- draw_text(x, y, width, height, text, align)
- end
- #--------------------------------------------------------------------------
- # ● 改行認識テキスト表示
- #--------------------------------------------------------------------------
- def draw_enter_text(x, y, width, height, text, align=0)
- rect = text_size(text)
- info_box = text.split(/\n/)
- for i in 0...info_box.size
- draw_text( x, y+i*rect.height, width, height, info_box[i], align)
- break if (y+i*rect.height) > self.height
- end
- end
- #--------------------------------------------------------------------------
- # ● 改行認識テキスト表示(縁文字)
- #--------------------------------------------------------------------------
- def draw_enter_edging_text(x, y, width, height, text, align=0)
- rect = text_size(text)
- info_box = text.split(/\n/)
- for i in 0...info_box.size
- draw_edging_text( x, y+i*rect.height, width, height, info_box[i], align)
- break if (y+i*rect.height) > self.height
- end
- end
- #--------------------------------------------------------------------------
- # ● タイトルファイル表示(中央表示)
- #--------------------------------------------------------------------------
- def draw_title(file_name, x, y)
- bit = Cache.system(file_name)
- cw = bit.width
- ch = bit.height
- src_rect = Rect.new(0, 0, cw, ch)
- blt(x-cw/2, y-ch/2, bit, src_rect)
- end
- #--------------------------------------------------------------------------
- # ● タイトルファイル表示(コマンド表示用)
- #--------------------------------------------------------------------------
- def draw_title_file(file_name, x, y, opacity=255)
- bit = Cache.system(file_name)
- cw = bit.width
- ch = bit.height
- src_rect = Rect.new(0, 0, cw, ch)
- blt(x, y, bit, src_rect, opacity)
- end
- end
复制代码 附上我改過的日站的Menu腳本 |
|