Project1

标题: Cache脚本出现问题? [打印本页]

作者: qiji19980124    时间: 2010-9-23 16:31
标题: Cache脚本出现问题?

就是在日站找了个菜单自定义化的脚本,
之后在菜单点击退出就会出现这个……
作者: wsmyzc    时间: 2010-9-23 16:59
缺少pointer图片,估计还会缺别的素材。。
作者: qiji19980124    时间: 2010-9-23 17:11
回复 wsmyzc 的帖子


    可是我并没有看到脚本说明里说什么pointer额……
作者: wsmyzc    时间: 2010-9-23 19:27
有范例的话最好下范例,然后按位置把素材放好
作者: 小鱼子    时间: 2010-9-23 20:04
嗯,你的文件夹怎么会在
system里???
放错地了吧?
作者: qiji19980124    时间: 2010-9-24 09:13
回复 wsmyzc 的帖子

範例是什麼?
   
作者: qiji19980124    时间: 2010-9-24 09:27
  1. #==============================================================================
  2. # ■ VX-RGSS2-2 タイトルカスタマイズ [Ver.1.0.3]        by Claimh
  3. #------------------------------------------------------------------------------
  4. # タイトル表示時の付属機能の詰め合わせ
  5. #  <機能>
  6. #     ★ロゴ表示
  7. #         タイトル前にロゴ(絵or文字)の表示をします。
  8. #     ★タイトル名表示
  9. #         タイトル名(メインタイトル/サブタイトル)の表示をします。
  10. #     ★フェードイン
  11. #         タイトル名、タイトルコマンドのフェードイン
  12. #     ★タイムアウト
  13. #         タイトル表示中に一定時間なにも操作にないとタイトル表示をやり直します。
  14. #     ★エフェクト
  15. #         ニューゲームなどのタイトルコマンドを選択したときのちょっとした演出効果。
  16. #     ★テキストデモ
  17. #         文字のみのデモを表示します。
  18. #         自動で進みます(スキップも可能)
  19. #     ★イベントデモ
  20. #         イベントによって組まれたデモを表示します。
  21. #         イベントの組み方は自由。ただし、自動実行にする必要有り
  22. #         メッセージの自動送りなどの機能は入ってません。
  23. #     ★アナザーオープニング(イベントデモ)
  24. #         特定のスイッチがON状態にあるときのみ表示されるイベントデモです。
  25. #==============================================================================

  26. module Title_Custom
  27.   DISP_W = 544  # 画面幅
  28.   DISP_H = 416  # 画面高さ
  29. #----------------------------------------------------------------------------
  30. #   カスタマイズSTART
  31. #----------------------------------------------------------------------------
  32. #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  33. #  タイトルスキップ(デバッグ用)   #
  34. #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  35.   # いつもニューゲームから始める
  36.   TITLE_SKIP_ALL = false
  37.   # セーブファイルがあればコンティニュー、なければニューゲームから始める
  38.   TITLE_SKIP_CONTINUE = false

  39. #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  40. #  機能選択(true:有効、false:無効)        #
  41. #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  42.   # ロゴ表示
  43.   LOGO = false

  44.   # テキストデモ機能
  45.   TEXT_DEMO = false

  46.   # イベントデモ機能
  47.   EVENT_DEMO = false

  48.   # アナザーオープニング機能
  49.   AOP_DEMO = false

  50. #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  51. #  参考値(機能ではない)     #
  52. #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  53.   # セーブファイル最大数
  54.   SAVE_FILE_MAX = 38

  55. #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  56. #  デモ表示順序設定         #
  57. #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  58.   # 0: テキストデモ → イベントデモ  ※タイムアウト時:ロゴ
  59.   # 1: イベントデモ → テキストデモ  ※タイムアウト時:ロゴ
  60.   # 2: 通常:テキストデモ、タイムアウト時:イベントデモ(ロゴなし)
  61.   # 3: 通常:イベントデモ、タイムアウト時:テキストデモ(ロゴなし)
  62.   DEMO_PATTERN = 3

  63. #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  64. #  各種機能別設定           #
  65. #-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  66.   #--------------------------------------------------------------------------
  67.   # ● ロゴ(表示位置は自動的に中央になります)
  68.   #--------------------------------------------------------------------------
  69.   # ロゴ時のMEファイル名(nil:不要)
  70.   LOGO_ME = "BGM2_001"

  71.   # ロゴ表示フレーム数
  72.   LOGO_F_CNT = 120
  73.   # ロゴ表示タイプ(true:テキスト、false:画像)
  74.   LOGO_TYPE = true
  75.   # ロゴ表示前のトランジションファイル名(nil:不要)
  76.   LOGO_TRN = "GUODU.png"

  77.   #---<テキストロゴ設定>---#
  78.   LT_NAME = "Made by Qiji19980124"         # 表示文字(\n:改行)
  79.   LT_EDGE = true                          # 縁文字(true:有効、false:無効)
  80.   LT_FONT = ["微软雅黑"]               # 表示フォント  [第1Font,第2Font・・・]
  81.   LT_SIZE = 48                            # フォントサイズ
  82.   LT_ITALIC = false                       # イタリック(true:有効、false:無効)
  83.   LT_BOLD = true                          # ボールド(true:有効、false:無効)
  84.   LT_COLOR = Color.new(255,255,255,255)      # 色:Color.new(red,green,blue,alpha)

  85.   #---<画像ロゴ設定>---#
  86.   LG_FILE = "logo"                        # ロゴ画像ファイル名(Graphics/Titles)

  87.   #--------------------------------------------------------------------------
  88.   # ● テキストデモ演出
  89.   #--------------------------------------------------------------------------
  90.   # テキストデモ中のBGM(nil:不要)
  91.   TD_BGM = "BGM2_005"

  92.   # テキストデモ表示前のトランジションファイル名(nil:不要)
  93.   TD_TRN = "GUODU.png"

  94.   # フォント設定
  95.   TD_EDGE = true                          # 縁文字(true:有効、false:無効)
  96.   TD_FONT = ["UmePlus Gothic"]            # 表示フォント  [第1Font,第2Font・・・]
  97.   TD_SIZE = 22                            # フォントサイズ
  98.   TD_ITALIC = false                       # イタリック(true:有効、false:無効)
  99.   TD_BOLD = true                          # ボールド(true:有効、false:無効)
  100.   TD_COLOR = Color.new(255,255,255,255)   # 色:Color.new(red,green,blue,alpha)

  101.   #-=-=-=-=-=-=-=-#
  102.   #   背景設定    #
  103.   #-=-=-=-=-=-=-=-#
  104.   # バック絵表示タイプ(0:黒背景 1:パノラマ 2:一枚絵)
  105.   TD_BACK_TYPE = 1

  106.   #--<パノラマタイプ設定>--#
  107.   # パノラマ絵(Graphics/System)
  108.   TD_PAN_BACK = "Title"

  109.   #--<一枚絵タイプ設定>--#
  110.   # バック絵(Graphics/System)
  111.   TD_PCT_BACK = "Title2"
  112.   # バック絵表示位置(X座標)
  113.   TD_BACK_X = 0
  114.   # バック絵表示位置(Y座標)
  115.   TD_BACK_Y = 0


  116.   #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
  117.   #   フェードアウト機能設定    #
  118.   #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
  119.   # フェードアウト機能(true:有効 false:無効)
  120.   #  (テキスト切り替え時にフェードアウトさせる)
  121.   TD_FADEOUT = true

  122.   # フェードアウト期間フレーム数
  123.   TDF_CNT = 10

  124.   #-=-=-=-=-=-=-=-=-=-=-=-#
  125.   #   表示テキスト設定    #
  126.   #-=-=-=-=-=-=-=-=-=-=-=-#
  127.   # 1テキストあたりの表示フレーム数(フェードアウト期間除く)
  128.   TD_F_CNT = 20

  129.   # 表示テキスト(表示順に配列に入れる)
  130.   TD_TEXT = [
  131.     # ["表示文字(\n改行)", 表示X位置, 表示Y位置
  132.     #  (,X方向移動, Y方向移動, ズームX, ズームY)]
  133.     #   ※()内はフェードアウト有効時のみ使用するので必須ではない
  134.     ["表示1", 320, 240,  1,  2,  0.3,  0.4],
  135.     ["表示2", 200, 100,  0,  2,  0.1, -0.1],
  136.     ["表示3",  10,  50,  2,  2],
  137.     ["表示4",  20, 300,  ],
  138.     ["表示5", 400, 380, -1, -2,  0.1,  0.2]
  139.   ]

  140.   #--------------------------------------------------------------------------
  141.   # ● イベントデモ演出
  142.   #--------------------------------------------------------------------------
  143.   # イベントデモマップID
  144.   ED_MAP_ID = 5
  145.   # パーティー位置
  146.   ED_START_X = 14   # X軸方向
  147.   ED_START_Y = 23    # Y軸方向

  148.   #--------------------------------------------------------------------------
  149.   # ● アナザーオープニング(イベントデモと差し替え実行)
  150.   #--------------------------------------------------------------------------
  151.   # アナザーオープニング起動用スイッチ
  152.   AOP_SW = 10
  153.   # イベントデモマップID
  154.   AOP_MAP_ID = 3
  155.   # パーティー位置
  156.   AOP_START_X = 10   # X軸方向
  157.   AOP_START_Y = 5    # Y軸方向

  158.   #--------------------------------------------------------------------------
  159.   # ● タイトル表示
  160.   #--------------------------------------------------------------------------
  161.   # タイトル表示前のトランジションファイル名(nil:不要)
  162.   TITLE_TRN = "GUODU.png"

  163.   # タイトル背景のファイル名(Graphics/System)
  164.   TITLE_BACK = "Title"

  165.   #-=-=-=-=-=-=-=-=-=-=-=-=-#
  166.   #   メインタイトル設定    #
  167.   #-=-=-=-=-=-=-=-=-=-=-=-=-#
  168.   # メインタイトル表示有効?(true:有効 false:無効)
  169.   TM = true

  170.   # 表示位置(X軸方向)
  171.   TM_X = 140
  172.   # 表示位置(Y軸方向)
  173.   TM_Y = 40

  174.   # メインタイトル表示タイプ(true:テキスト false:画像)
  175.   TM_TYPE = true

  176.   #--<テキストタイトル設定>--#
  177.   TMT_NAME = "哆啦A梦与大雄的~恋爱物语~"                  # タイトル名(改行不可)
  178.   TMT_EDGE = true                          # 縁文字(true:有効、false:無効)
  179.   TMT_FONT = ["微软雅黑"]            # 表示フォント  [第1Font,第2Font・・・]
  180.   TMT_SIZE = 32                            # フォントサイズ
  181.   TMT_ITALIC = false                       # イタリック(true:有効、false:無効)
  182.   TMT_BOLD = true                          # ボールド(true:有効、false:無効)
  183.   TMT_COLOR = Color.new(255,100,85,255)    # 色:Color.new(red,green,blue,alpha)

  184.   #--<グラフィックタイトル設定>--#
  185.   # タイトル画像名(Graphics/System)
  186.   TMG_FILE = "main_title"


  187.   #-=-=-=-=-=-=-=-=-=-=-=-#
  188.   #   サブタイトル設定    #
  189.   #-=-=-=-=-=-=-=-=-=-=-=-#
  190.   # サブタイトル表示有効?(true:有効 false:無効)
  191.   TS = true

  192.   # 表示位置(X軸方向)
  193.   TS_X = 350
  194.   # 表示位置(Y軸方向)
  195.   TS_Y = 80

  196.   # サブタイトル表示タイプ(true:テキスト false:画像)
  197.   TS_TYPE = true

  198.   #--<テキストタイトル設定>--#
  199.   TST_NAME = "~Love Story~"               # タイトル名(改行不可)
  200.   TST_EDGE = true                          # 縁文字(true:有効、false:無効)
  201.   TST_FONT = ["UmePlus Gothic"]            # 表示フォント  [第1Font,第2Font・・・]
  202.   TST_SIZE = 24                            # フォントサイズ
  203.   TST_ITALIC = false                       # イタリック(true:有効、false:無効)
  204.   TST_BOLD = false                         # ボールド(true:有効、false:無効)
  205.   TST_COLOR = Color.new(75,235,210,255)    # 色:Color.new(red,green,blue,alpha)

  206.   #--<グラフィックタイトル設定>--#
  207.   # タイトル画像名(Graphics/System)
  208.   TSG_FILE = "sub_title"


  209.   #-=-=-=-=-=-=-=-=-=-=-=-=-#
  210.   #  タイトルコマンド設定   #
  211.   #-=-=-=-=-=-=-=-=-=-=-=-=-#
  212.   # 表示順定義
  213.   #   0: ニューゲーム
  214.   #   1: コンティニュー
  215.   #   2: シャットダウン
  216.   CMD_BOX = [0, 1, 2]

  217.   # 表示位置(X軸方向)
  218.   CT_WIN_X = 420
  219.   # 表示位置(Y軸方向)
  220.   CT_WIN_Y = 240
  221.   # 各コマンドの横ずれ値
  222.   CT_WIN_SLIDE = 30

  223.   # コマンドタイプ(true:テキスト false:画像)
  224.   CMD_TYPE = true

  225.   #--<テキストコマンド設定>--#
  226.   # ニューゲームコマンド名
  227.   CT_NEWGAME = "New lover"
  228.   # コンティニューコマンド名
  229.   CT_CONTINUE = "Load lover"
  230.   # シャットダウンコマンド名
  231.   CT_SHUTDOWN = "Exit"

  232.   CT_EDGE = true                          # 縁文字(true:有効、false:無効)
  233.   CT_FONT = []                            # 表示フォント  [第1Font,第2Font・・・]
  234.   CT_SIZE = 22                            # フォントサイズ
  235.   CT_ITALIC = false                       # イタリック(true:有効、false:無効)
  236.   CT_BOLD = false                         # ボールド(true:有効、false:無効)
  237.   CT_COLOR = Color.new(255,255,255,255)   # 色:Color.new(red,green,blue,alpha)
  238.   CT_ALIGN = 0                            # 0=左揃え 1=中央 2=右揃え
  239.   # ウィンドウ透明度
  240.   CT_WIN_OPACITY = 0
  241.   # ウィンドウ背景透明度
  242.   CT_WIN_BACKOPACITY = 160

  243.   #--<画像コマンド設定>--#
  244.   #-**注意事項**-#
  245.   # コマンド用の画像は全て同じサイズ(幅、高さ)にしてください。

  246.   # ニューゲームファイル名(Graphics/System)
  247.   CG_NEWGAME = "newgame"
  248.   # コンティニューファイル名(Graphics/System)
  249.   CG_CONTINUE = "continue"
  250.   # シャットダウンファイル名(Graphics/System)
  251.   CG_SHUTDOWN = "shutdown"
  252.   # カーゾルが当たってるときに画像チェンジ(true:有効+カーソル消 false:無効)
  253.   CG_CHANGE = false
  254.   # ニューゲームファイル名(Graphics/System)
  255.   CGS_NEWGAME = "newgame_s"
  256.   # コンティニューファイル名(Graphics/System)
  257.   CGS_CONTINUE = "continue_s"
  258.   # シャットダウンファイル名(Graphics/System)
  259.   CGS_SHUTDOWN = "shutdown_s"

  260.   #-=-=-=-=-=-=-=-=-=-=-=-=-#
  261.   #   フェードイン設定      #
  262.   #-=-=-=-=-=-=-=-=-=-=-=-=-#
  263.   # フェードイン機能
  264.   FADEIN = true

  265.   # フェードインパターン
  266.   #   0:メインタイトル+サブタイトル+コマンド
  267.   #   1:メインタイトル+サブタイトル → コマンド
  268.   #   2:メインタイトル → サブタイトル+コマンド
  269.   #   3:メインタイトル → サブタイトル → コマンド
  270.   FADEIN_PATTERN = 3

  271.   # フェードイン時間(フレーム数)
  272.   #  (例1)60に設定した場合
  273.   #         パターン0 => 60
  274.   #         パターン1 => 60 + 60
  275.   #         パターン3 => 60 + 60 + 60
  276.   FADEIN_TIME = 60

  277.   #-=-=-=-=-=-=-=-=-=-=-=-=-#
  278.   #   タイムアウト設定      #
  279.   #-=-=-=-=-=-=-=-=-=-=-=-=-#
  280.   # タイムアウト機能
  281.   TIME_OUT = true

  282.   # タイムアウト発生フレーム数
  283.   TIME_OUT_CNT = 500


  284.   #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
  285.   #   タイトルエフェクト設定                            #
  286.   #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
  287.   #  エフェクトは                                       #
  288.   #     ニューゲーム、コンティニュー、シャットダウン    #
  289.   #  ごとに別々の設定になります。                       #
  290.   #  全て同形式の配列での設定で下のようになります。     #
  291.   #  [ ニューゲーム選択時の動作,                        #
  292.   #    コンティニュー選択時の動作,                      #
  293.   #    シャットダウン選択時の動作 ]                     #
  294.   #-----------------------------------------------------#
  295.   #  また、エフェクト処理は毎フレームごとに             #
  296.   #  加算していく形になりますので、                     #
  297.   #  あまり大きな値は設定はお勧めできません。           #
  298.   #-----------------------------------------------------#
  299.   # タイトルエフェクト機能(true:有効 false:無効)
  300.   EFFECT     = [true, true, true]

  301.   # エフェクト時間(フレーム数)
  302.   EF_TIME_CNT= [  20,   20,   20]

  303.   #--<メインタイトル用エフェクト設定>--#
  304.   TME_X      = [   0,    0,    0]  # X軸方向のスライド
  305.   TME_Y      = [   0,    0,    2]  # Y軸方向のスライド
  306.   TME_ZOOM_X = [ 0.0,  0.0,  0.0]  # X軸方向のズーム
  307.   TME_ZOOM_Y = [ 0.0,  0.0,  0.0]  # Y軸方向のズーム

  308.   #--<サブタイトル用エフェクト設定>--#
  309.   TSE_X      = [   0,    0,    0]  # X軸方向のスライド
  310.   TSE_Y      = [   0,    0,    2]  # Y軸方向のスライド
  311.   TSE_ZOOM_X = [ 0.0,  0.0,  0.0]  # X軸方向のズーム
  312.   TSE_ZOOM_Y = [ 0.0,  0.0,  0.0]  # Y軸方向のズーム

  313.   #--<コマンド用エフェクト設定>--#
  314.   CME_X      = [   0,    0,    0]  # X軸方向のスライド
  315.   CME_Y      = [   0,    0,   -2]  # Y軸方向のスライド
  316.   # ※ズームは出来ません(Windowの仕様)

  317.   #--<タイトルバック用エフェクト設定>--#
  318.   TBE_X      = [   0,  -30,    0]  # X軸方向のスライド
  319.   TBE_Y      = [   0,  -28,    0]  # Y軸方向のスライド
  320.   TBE_ZOOM_X = [ 0.1,  0.1,  0.0]  # X軸方向のズーム
  321.   TBE_ZOOM_Y = [ 0.1,  0.1,  0.0]  # Y軸方向のズーム
  322.   TBE_TONE_R = [   1,    0,    0]  # 色調変更(赤)
  323.   TBE_TONE_G = [   0,    1,    0]  # 色調変更(緑)
  324.   TBE_TONE_B = [   0,    0,    1]  # 色調変更(青)
  325.   TBE_TONE_S = [   0,    0,   10]  # 色調変更(グレースケール)

  326. #----------------------------------------------------------------------------
  327. #   カスタマイズEND
  328. #----------------------------------------------------------------------------
  329.   module_function
  330.   #--------------------------------------------------------------------------
  331.   # ● テキストデモ用フェードアウト処理値の参照
  332.   #--------------------------------------------------------------------------
  333.   def get_fade_param(index,type)
  334.     if TD_TEXT[index].nil? or TD_TEXT[index][type].nil?
  335.       return 0.0
  336.     else
  337.       return TD_TEXT[index][type]
  338.     end
  339.   end
  340. end



  341. #==============================================================================
  342. # ■ タイトルカスタマイズ[Scene_Title]
  343. #------------------------------------------------------------------------------
  344. #  タイトルカスタマイズ用にScene_Titleを再構築。
  345. #--< 再定義箇所 >--------------------------------------------------------------
  346. # Scene_Title内の全メソッド
  347. #  (main,update,command_new_game,command_continue,command_shutdown,battle_test)
  348. #==============================================================================
  349. class Scene_Title
  350.   # 各フェーズの定義(メンテの容易化)
  351.   PHASE_LOGO       = 1
  352.   PHASE_TEXT_DEMO  = 2
  353.   PHASE_EVENT_DEMO = 3
  354.   PHASE_TITLE      = 4
  355.   #--------------------------------------------------------------------------
  356.   # ● 音楽:全停止
  357.   #--------------------------------------------------------------------------
  358.   def all_music_stop
  359.     RPG::BGM.stop
  360.     RPG::BGS.stop
  361.     RPG::ME.stop
  362.   end
  363.   #--------------------------------------------------------------------------
  364.   # ● 音楽:全フェードアウト
  365.   #--------------------------------------------------------------------------
  366.   def all_music_fade(msec)
  367.     RPG::BGM.fade(msec)
  368.     RPG::BGS.fade(msec)
  369.     RPG::ME.fade(msec)
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ● 開始処理
  373.   #--------------------------------------------------------------------------
  374.   def start
  375.     # 二度読み防止
  376.     if $data_system.nil?
  377.       load_database                     # データベースをロード
  378.       create_game_objects               # ゲームオブジェクトを作成
  379.     end
  380.     # セーブファイルチェック
  381.     save_file_check
  382.     # デバッグ実行モードチェック
  383.     if debug_check
  384.       return
  385.     end
  386.     # システムオブジェクトを作成
  387.     if $game_system.nil?
  388.       $game_system = Game_System.new
  389.     end
  390.     # タイトルフェーズの選定
  391.     if (Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO) and $game_system.event_demo
  392.       # イベントデモ表示フェーズ
  393.       @phase = PHASE_EVENT_DEMO
  394.       # ローカルフェーズ:イベントデモ表示終了
  395.       @local_phase = 1
  396.     else
  397.       # ロゴ表示フェーズ
  398.       @phase = PHASE_LOGO
  399.       # ローカルフェーズ初期化
  400.       @local_phase = 0
  401.     end
  402.     # フレームカウント初期化
  403.     @frame_count = 0
  404.   end
  405.   #--------------------------------------------------------------------------
  406.   # ● 開始後処理
  407.   #--------------------------------------------------------------------------
  408.   def post_start
  409.     # 汎用スプライトを用意
  410.     @sprite = Sprite.new(Viewport.new(0, 0, Title_Custom::DISP_W, Title_Custom::DISP_H))
  411.     @sprite.bitmap = Bitmap.new(Title_Custom::DISP_W,Title_Custom::DISP_H)
  412.   end
  413.   #--------------------------------------------------------------------------
  414.   # ● トランジション実行
  415.   #--------------------------------------------------------------------------
  416.   def perform_transition
  417.     # ロゴトランジションが有効か?
  418.     if Title_Custom::LOGO_TRN.nil? or !Title_Custom::LOGO
  419.       # トランジション実行
  420.       Graphics.transition
  421.     else
  422.       # トランジション準備
  423.       Graphics.freeze
  424.     end
  425.   end
  426.   #--------------------------------------------------------------------------
  427.   # ● 終了前処理
  428.   #--------------------------------------------------------------------------
  429.   def pre_terminate
  430.   end
  431.   #--------------------------------------------------------------------------
  432.   # ● 終了処理
  433.   #--------------------------------------------------------------------------
  434.   def terminate
  435.     # スプライト消去
  436.     @sprite.dispose
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # ● セーブファイルチェック
  440.   #--------------------------------------------------------------------------
  441.   def save_file_check
  442.     @continue_enabled = false
  443.     @another_op = false
  444.     # セーブファイルの有無をチェック
  445.     for i in 0..Title_Custom::SAVE_FILE_MAX
  446.       if FileTest.exist?("Save#{i+1}.rvdata")
  447.         @continue_enabled = true
  448.         # アナザーOP有効?
  449.         if Title_Custom::AOP_DEMO
  450.           file = File.open("Save#{i+1}.rvdata", "rb")
  451.           characters          = Marshal.load(file)
  452.           frame_count         = Marshal.load(file)
  453.           last_bgm            = Marshal.load(file)
  454.           last_bgs            = Marshal.load(file)
  455.           game_system         = Marshal.load(file)
  456.           game_message        = Marshal.load(file)
  457.           game_switches       = Marshal.load(file)
  458.           file.close
  459.           # アナザーOP有効フラグを確認
  460.           if game_switches[Title_Custom::AOP_SW]
  461.             @another_op = true
  462.             break
  463.           end
  464.         else
  465.           break
  466.         end
  467.       end
  468.     end
  469.   end
  470.   #--------------------------------------------------------------------------
  471.   # ● デバッグモードチェック
  472.   #--------------------------------------------------------------------------
  473.   def debug_check
  474.     # タイトルスキップ(ニューゲーム)
  475.     if Title_Custom::TITLE_SKIP_ALL
  476.       command_new_game
  477.       return true
  478.     # タイトルスキップ(コンティニュー)
  479.     elsif Title_Custom::TITLE_SKIP_CONTINUE
  480.       # セーブファイルが存在すれば
  481.       if @continue_enabled
  482.         # つづきから
  483.         command_continue
  484.       else
  485.         # はじめから
  486.         command_new_game
  487.       end
  488.       return true
  489.     end
  490.     return false
  491.   end
  492.   #--------------------------------------------------------------------------
  493.   # ● 移動フェーズの選択
  494.   #--------------------------------------------------------------------------
  495.   def next_phase(now_phase)
  496.     # 現在のフェーズから遷移するフェーズを決定する
  497.     case Title_Custom::DEMO_PATTERN
  498.     when 0  # テキストデモ → イベントデモ  ※タイムアウト時:ロゴ
  499.       case now_phase
  500.       when PHASE_LOGO       # ロゴ表示中
  501.         # テキストデモ
  502.         return PHASE_TEXT_DEMO
  503.       when PHASE_TEXT_DEMO  # テキストデモ表示中
  504.         # イベントデモ
  505.         return PHASE_EVENT_DEMO
  506.       when PHASE_EVENT_DEMO # イベントデモ表示中
  507.         # タイトル表示
  508.         return PHASE_TITLE
  509.       when PHASE_TITLE      # タイトル表示中(タイムアウト)
  510.         if Title_Custom::LOGO or Title_Custom::TEXT_DEMO or Title_Custom::EVENT_DEMO
  511.           # ロゴ表示
  512.           return PHASE_LOGO
  513.         else
  514.           # 更新なし
  515.           return PHASE_TITLE
  516.         end
  517.       end
  518.     when 1 # イベントデモ → テキストデモ  ※タイムアウト時:ロゴ
  519.       case now_phase
  520.       when PHASE_LOGO       # ロゴ表示中
  521.         # イベントデモ
  522.         return PHASE_EVENT_DEMO
  523.       when PHASE_TEXT_DEMO  # テキストデモ表示中
  524.         # タイトル表示
  525.         return PHASE_TITLE
  526.       when PHASE_EVENT_DEMO # イベントデモ表示中
  527.         # テキストデモ
  528.         return PHASE_TEXT_DEMO
  529.       when PHASE_TITLE      # タイトル表示中(タイムアウト)
  530.         if Title_Custom::LOGO or Title_Custom::TEXT_DEMO or Title_Custom::EVENT_DEMO
  531.           # ロゴ表示
  532.           return PHASE_LOGO
  533.         else
  534.           # 更新なし
  535.           return PHASE_TITLE
  536.         end
  537.       end
  538.     when 2 # 通常:テキストデモ、タイムアウト時:イベントデモ(ロゴなし)
  539.       case now_phase
  540.       when PHASE_LOGO       # ロゴ表示中
  541.         # テキストデモ
  542.         return PHASE_TEXT_DEMO
  543.       when PHASE_TEXT_DEMO  # テキストデモ表示中
  544.         # タイトル表示
  545.         return PHASE_TITLE
  546.       when PHASE_EVENT_DEMO # イベントデモ表示中
  547.         # タイトル表示
  548.         return PHASE_TITLE
  549.       when PHASE_TITLE      # タイトル表示中(タイムアウト)
  550.         if Title_Custom::EVENT_DEMO
  551.           # イベントデモ
  552.           return PHASE_EVENT_DEMO
  553.         else
  554.           # 更新なし
  555.           return PHASE_TITLE
  556.         end
  557.       end
  558.     when 3 # 通常:イベントデモ、タイムアウト時:テキストデモ(ロゴなし)
  559.       case now_phase
  560.       when PHASE_LOGO       # ロゴ表示中
  561.         # イベントデモ
  562.         return PHASE_EVENT_DEMO
  563.       when PHASE_TEXT_DEMO  # テキストデモ表示中
  564.         # タイトル表示
  565.         return PHASE_TITLE
  566.       when PHASE_EVENT_DEMO # イベントデモ表示中
  567.         # タイトル表示
  568.         return PHASE_TITLE
  569.       when PHASE_TITLE      # タイトル表示中(タイムアウト)
  570.         if Title_Custom::TEXT_DEMO
  571.           # テキストデモ
  572.           return PHASE_TEXT_DEMO
  573.         else
  574.           # 更新なし
  575.           return PHASE_TITLE
  576.         end
  577.       end
  578.     else
  579.       p "Error:DEMO_PATTERN"
  580.       exit
  581.     end
  582.   end
  583.   #--------------------------------------------------------------------------
  584.   # ● 次のフェーズ実行前にトランジションがあるか?
  585.   #    true:なし false:あり
  586.   #--------------------------------------------------------------------------
  587.   def next_phase_transition?(next_phase)
  588.     case next_phase
  589.     when PHASE_LOGO       # ロゴ表示
  590.       return Title_Custom::LOGO_TRN.nil?
  591.     when PHASE_TEXT_DEMO  # テキストデモ
  592.       return Title_Custom::TD_TRN.nil?
  593.     when PHASE_EVENT_DEMO # イベントデモ(Scene_Mapにはトランジション実行がない)
  594.       # return Title_Custom::ED_TRN.nil?
  595.       return true
  596.     when PHASE_TITLE      # タイトル表示
  597.       return Title_Custom::TITLE_TRN.nil?
  598.     end
  599.     return true
  600.   end
  601.   #--------------------------------------------------------------------------
  602.   # ● フレーム更新
  603.   #--------------------------------------------------------------------------
  604.   def update
  605.     # フェーズによって分岐
  606.     case @phase
  607.     when PHASE_LOGO
  608.       # ロゴ表示フェーズ
  609.       update_phase_logo
  610.     when PHASE_TEXT_DEMO
  611.       # テキストデモ表示フェーズ
  612.       update_phase_text_demo
  613.     when PHASE_EVENT_DEMO
  614.       # イベントデモ表示フェーズ
  615.       update_phase_event_demo
  616.     when PHASE_TITLE
  617.       # タイトル表示フェーズ
  618.       update_phase_title
  619.     end
  620.   end
  621.   #--------------------------------------------------------------------------
  622.   # ● ロゴ表示フェーズ:総合フレーム更新
  623.   #--------------------------------------------------------------------------
  624.   def update_phase_logo
  625.     case @local_phase
  626.     when 0  # ロゴ準備
  627.       logo_phase_startup
  628.     when 1  # 表示待機
  629.       logo_phase_update
  630.     when 2  # 表示終了
  631.       logo_phase_end
  632.     end
  633.   end
  634.   #--------------------------------------------------------------------------
  635.   # ● ロゴ表示フェーズ:ロゴ準備
  636.   #--------------------------------------------------------------------------
  637.   def logo_phase_startup
  638.     if Title_Custom::LOGO
  639.       # ビットマップ定義
  640.       @sprite.bitmap = Bitmap.new(Title_Custom::DISP_W,Title_Custom::DISP_H)
  641.       # ME再生
  642.       unless Title_Custom::LOGO_ME.nil?
  643.         Audio.me_play("Audio/ME/" + Title_Custom::LOGO_ME)
  644.       end
  645.       # テキストロゴ
  646.       if Title_Custom::LOGO_TYPE
  647.         # フォント定義
  648.         font = Title_Custom::LT_FONT.dup
  649.         font.push(Font.default_name)
  650.         @sprite.bitmap.font.name = font
  651.         # フォントサイズ
  652.         @sprite.bitmap.font.size = Title_Custom::LT_SIZE
  653.         # イタリック
  654.         @sprite.bitmap.font.italic = Title_Custom::LT_ITALIC
  655.         # ボールド
  656.         @sprite.bitmap.font.bold = Title_Custom::LT_BOLD
  657.         # フォント色
  658.         @sprite.bitmap.font.color = Title_Custom::LT_COLOR
  659.         # 表示位置定義(自動中央表示)
  660.         text = Title_Custom::LT_NAME.dup
  661.         rect = @sprite.bitmap.text_size(text)
  662.         len = text.split(/\n/)
  663.         x = (Title_Custom::DISP_W-rect.width)/2
  664.         y = (Title_Custom::DISP_H-len.size * rect.height)/2
  665.         width = rect.width + (Title_Custom::LT_SIZE / 2)
  666.         height = rect.height
  667.         # 文字表示タイプ
  668.         if Title_Custom::LT_EDGE
  669.           # 縁文字
  670.           @sprite.bitmap.draw_enter_edging_text(x, y, width, height, text, 1)
  671.         else
  672.           # 通常文字
  673.           @sprite.bitmap.draw_enter_text(x, y, width, height, text, 1)
  674.         end
  675.       # グラフィックロゴ
  676.       else
  677.         @sprite.bitmap.draw_title(Title_Custom::LG_FILE, Title_Custom::DISP_W/2, Title_Custom::DISP_H/2)
  678.       end
  679.       # フレームカウント初期化
  680.       @frame_count = 0
  681.       # 表示待機フェーズに移動
  682.       @local_phase = 1
  683.       # トランジションの実行
  684.       unless Title_Custom::LOGO_TRN.nil?
  685.         # トランジション実行
  686.         Graphics.transition(40, "Graphics/System/" + Title_Custom::LOGO_TRN)
  687.       end
  688.     else
  689.       # 終了フェーズに移動
  690.       @local_phase = 2
  691.     end
  692.   end
  693.   #--------------------------------------------------------------------------
  694.   # ● ロゴ表示フェーズ:表示待機
  695.   #--------------------------------------------------------------------------
  696.   def logo_phase_update
  697.     @frame_count += 1
  698.     # C or Bボタンが押された
  699.     if Input.trigger?(Input::C) or Input.trigger?(Input::B)
  700.       # 表示終了フェーズに移動
  701.       @frame_count = Title_Custom::LOGO_F_CNT
  702.     end
  703.     # ロゴ表示時間終了
  704.     if @frame_count > Title_Custom::LOGO_F_CNT
  705.       # 表示終了フェーズに移動
  706.       @local_phase = 2
  707.       RPG::ME.fade(2000)
  708.     end
  709.   end
  710.   #--------------------------------------------------------------------------
  711.   # ● ロゴ表示フェーズ:表示終了
  712.   #--------------------------------------------------------------------------
  713.   def logo_phase_end
  714.     # フレームカウント初期化
  715.     @frame_count = 0
  716.     # ローカルフェーズの初期化
  717.     @local_phase = 0
  718.     # 次のフェーズに移動
  719.     @phase = next_phase(@phase)
  720.     # 次のフェーズにトランジション実行があるか?
  721.     unless next_phase_transition?(@phase)
  722.       # トランジション準備
  723.       Graphics.freeze
  724.     end
  725.     # ロゴ消去
  726.     @sprite.bitmap.clear
  727.   end
  728.   #--------------------------------------------------------------------------
  729.   # ● テキストデモ表示フェーズ:総合フレーム更新
  730.   #--------------------------------------------------------------------------
  731.   def update_phase_text_demo
  732.     case @local_phase
  733.     when 0  # 表示準備
  734.       text_phase_startup
  735.     when 1  # 表示待機
  736.       text_phase_update
  737.     when 2  # フェードアウト
  738.       text_phase_fadeout
  739.     when 3  # 表示切替
  740.       text_phase_change
  741.     when 4  # 表示終了
  742.       text_phase_end
  743.     end
  744.   end
  745.   #--------------------------------------------------------------------------
  746.   # ● テキストデモ表示フェーズ:表示準備
  747.   #--------------------------------------------------------------------------
  748.   def text_phase_startup
  749.     if Title_Custom::TEXT_DEMO
  750.       # BGMを再生
  751.       unless Title_Custom::TD_BGM.nil?
  752.         Audio.bgm_play("Audio/BGM/" + Title_Custom::TD_BGM)
  753.       end
  754.       # ビューポートを定義
  755.       viewport = Viewport.new(0, 0, Title_Custom::DISP_W, Title_Custom::DISP_H)
  756.       viewport.z = -1000
  757.       case Title_Custom::TD_BACK_TYPE
  758.       when 0  # 表示なし
  759.       when 1  # パノラマ絵
  760.         # プレーンを定義
  761.         @picture = Plane.new(viewport)
  762.         file = Title_Custom::TD_PAN_BACK
  763.         @picture.bitmap = Cache.system(file)
  764.       when 2  # 一枚絵
  765.         # 一枚絵用スプライトの定義
  766.         @picture = Sprite.new(viewport)
  767.         # 一枚絵を用意
  768.         file = Title_Custom::TD_PCT_BACK
  769.         @picture.bitmap = Cache.system(file)
  770.         @picture.x = Title_Custom::TD_BACK_X
  771.         @picture.y = Title_Custom::TD_BACK_Y
  772.       else
  773.         p "Error:TD_BACK_TYPE"
  774.         exit
  775.       end
  776.       # ビットマップを再定義(他のフェーズの影響をなくす)
  777.       @sprite.bitmap = Bitmap.new(Title_Custom::DISP_W,Title_Custom::DISP_H)
  778.       # フォント設定
  779.       font = Title_Custom::TD_FONT.dup
  780.       font.push(Font.default_name)
  781.       @sprite.bitmap.font.name = font
  782.       # フォントサイズ
  783.       @sprite.bitmap.font.size = Title_Custom::TD_SIZE
  784.       # イタリック
  785.       @sprite.bitmap.font.italic = Title_Custom::TD_ITALIC
  786.       # ボールド
  787.       @sprite.bitmap.font.bold = Title_Custom::TD_BOLD
  788.       # フォント色
  789.       @sprite.bitmap.font.color = Title_Custom::TD_COLOR
  790.       # テキストIndex値の初期化
  791.       @text_index = 0
  792.       # 最初の文字をセットするために表示切替フェーズに移動
  793.       @local_phase = 3
  794.       # トランジションの実行
  795.       unless Title_Custom::TD_TRN.nil?
  796.         # トランジション実行
  797.         Graphics.transition(40,"Graphics/System/" + Title_Custom::TD_TRN)
  798.       end
  799.     else
  800.       # 終了フェーズに移動
  801.       @local_phase = 4
  802.     end
  803.   end
  804.   #--------------------------------------------------------------------------
  805.   # ● テキストデモ表示フェーズ:表示待機
  806.   #--------------------------------------------------------------------------
  807.   def text_phase_update
  808.     @frame_count += 1
  809.     # Cボタンが押された
  810.     if Input.trigger?(Input::C)
  811.       # 表示切替フェーズに強制移動
  812.       @frame_count = Title_Custom::TD_F_CNT
  813.     # Bボタンが押された
  814.     elsif Input.trigger?(Input::B)
  815.       # 表示終了フェーズに強制移動
  816.       @local_phase = 4
  817.       return
  818.     end
  819.     # 表示切替タイミングに来た
  820.     if @frame_count > Title_Custom::TD_F_CNT
  821.       # フレームカウント初期化
  822.       @frame_count = 0
  823.       # フェードアウトフェーズに移動
  824.       @local_phase = 2
  825.     end
  826.   end
  827.   #--------------------------------------------------------------------------
  828.   # ● テキストデモ表示フェーズ:フェードアウト
  829.   #--------------------------------------------------------------------------
  830.   def text_phase_fadeout
  831.     # フェードアウト有効?
  832.     if Title_Custom::TD_FADEOUT
  833.       # Bボタンが押された
  834.       if Input.trigger?(Input::B)
  835.         # 表示終了フェーズに強制移動
  836.         @local_phase = 4
  837.         return
  838.       end
  839.       # フレームカウント
  840.       @frame_count += 1
  841.       # 移動処理
  842.       @sprite.x += Title_Custom.get_fade_param(@text_index, 3)
  843.       @sprite.y += Title_Custom.get_fade_param(@text_index, 4)
  844.       # ズーム処理
  845.       @sprite.zoom_x += Title_Custom.get_fade_param(@text_index, 5)
  846.       @sprite.zoom_y += Title_Custom.get_fade_param(@text_index, 6)
  847.       # フェードアウト
  848.       @sprite.opacity -= 255 / Title_Custom::TDF_CNT
  849.       # フェードアウト期間の終了?
  850.       if @frame_count > Title_Custom::TDF_CNT
  851.         # フレームカウント初期化
  852.         @frame_count = 0
  853.         # テキストIndex値の更新
  854.         @text_index += 1
  855.         # 表示切替フェーズに移動
  856.         @local_phase = 3
  857.       end
  858.     else
  859.       # 表示切替フェーズに移動
  860.       @local_phase = 3
  861.     end
  862.   end
  863.   #--------------------------------------------------------------------------
  864.   # ● テキストデモ表示フェーズ:テキスト切り替え
  865.   #--------------------------------------------------------------------------
  866.   def text_phase_change
  867.     # テキスト消去
  868.     @sprite.bitmap.clear
  869.     # フェードアウト処理後の初期化
  870.     if Title_Custom::TD_FADEOUT
  871.       @sprite.x = 0
  872.       @sprite.y = 0
  873.       @sprite.zoom_x = 1.0
  874.       @sprite.zoom_y = 1.0
  875.       @sprite.opacity = 255
  876.     end
  877.     # 全てのテキスト表示が完了した?
  878.     if @text_index == Title_Custom::TD_TEXT.size
  879.       # 表示終了フェーズに移動
  880.       @local_phase = 4
  881.       return
  882.     end
  883.     # テキスト表示
  884.     text = Title_Custom::TD_TEXT[@text_index][0].dup
  885.     rect = @sprite.bitmap.text_size(text)
  886.     width = rect.width + rect.height
  887.     if Title_Custom::TD_EDGE
  888.       # 縁文字
  889.       @sprite.bitmap.draw_enter_edging_text(0, 0, width, rect.height, text)
  890.     else
  891.       # 通常文字
  892.       @sprite.bitmap.draw_enter_text(0, 0, width, rect.height, text)
  893.     end
  894.     # 表示位置
  895.     @sprite.x = Title_Custom::TD_TEXT[@text_index][1]
  896.     @sprite.y = Title_Custom::TD_TEXT[@text_index][2]
  897.     # 表示待機フェーズに移動
  898.     @local_phase = 1
  899.   end
  900.   #--------------------------------------------------------------------------
  901.   # ● テキストデモ表示フェーズ:表示終了
  902.   #--------------------------------------------------------------------------
  903.   def text_phase_end
  904.     if Title_Custom::TEXT_DEMO
  905.       case Title_Custom::TD_BACK_TYPE
  906.       when 1..2  # パノラマまたは一枚絵
  907.         # バック絵を削除
  908.         @picture.dispose
  909.       end
  910.     end
  911.     # フレームカウント初期化
  912.     @frame_count = 0
  913.     # ローカルフェーズの初期化
  914.     @local_phase = 0
  915.     # 次のフェーズに移動
  916.     @phase = next_phase(@phase)
  917.     # 次のフェーズにトランジション実行があるか?
  918.     unless next_phase_transition?(@phase)
  919.       # トランジション準備
  920.       Graphics.freeze
  921.     end
  922.     # BGMフェードアウト
  923.     Audio.bgm_fade(4000)
  924.     # フェードアウト処理後の初期化
  925.     if Title_Custom::TD_FADEOUT
  926.       @sprite.x = 0
  927.       @sprite.y = 0
  928.       @sprite.zoom_x = 1.0
  929.       @sprite.zoom_y = 1.0
  930.       @sprite.opacity = 255
  931.     end
  932.     # テキスト消去
  933.     @sprite.bitmap.clear
  934.   end
  935.   #--------------------------------------------------------------------------
  936.   # ● イベントデモ表示フェーズ:総合フレーム更新
  937.   #--------------------------------------------------------------------------
  938.   def update_phase_event_demo
  939.     case @local_phase
  940.     when 0  # 表示準備
  941.       event_phase_startup
  942.     when 1  # 表示終了
  943.       event_phase_end
  944.     end
  945.   end
  946.   #--------------------------------------------------------------------------
  947.   # ● イベントデモ表示フェーズ:表示準備
  948.   #--------------------------------------------------------------------------
  949.   def event_phase_startup
  950.     # アナザーOP起動
  951.     if Title_Custom::AOP_DEMO and @another_op
  952.       map_id = Title_Custom::AOP_MAP_ID
  953.       start_posx = Title_Custom::AOP_START_X
  954.       start_posy = Title_Custom::AOP_START_Y
  955.     # 通常イベントデモ起動
  956.     elsif Title_Custom::EVENT_DEMO
  957.       map_id = Title_Custom::ED_MAP_ID
  958.       start_posx = Title_Custom::ED_START_X
  959.       start_posy = Title_Custom::ED_START_Y
  960.     else
  961.       # 終了フェーズに移動
  962.       @local_phase = 1
  963.       return
  964.     end
  965.     $game_party.setup_starting_members            # 初期パーティ
  966.     $game_map.setup(map_id)    # 初期位置のマップ
  967.     $game_player.moveto(start_posx, start_posy)
  968.     $game_player.refresh
  969.     $scene = Scene_Map.new
  970.     Graphics.fadeout(60)
  971.     Graphics.wait(40)
  972.     Graphics.frame_count = 0
  973.     RPG::BGM.stop
  974.     $game_map.autoplay
  975.     # イベントデモ実行フラグON
  976.     $game_system.event_demo = true
  977.   end
  978.   #--------------------------------------------------------------------------
  979.   # ● イベントデモ表示フェーズ:表示終了
  980.   #--------------------------------------------------------------------------
  981.   def event_phase_end
  982.     if (Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO)
  983.       # イベントデモ実行フラグOFF
  984.       $game_system.event_demo = false
  985.     end
  986.     # フレームカウント初期化
  987.     @frame_count = 0
  988.     # ローカルフェーズの初期化
  989.     @local_phase = 0
  990.     # 次のフェーズに移動
  991.     @phase = next_phase(@phase)
  992.     # 次のフェーズにトランジション実行があるか?
  993.     unless next_phase_transition?(@phase)
  994.       # トランジション準備
  995.       Graphics.freeze
  996.     end
  997.     # BGMフェードアウト
  998.     all_music_fade(400)
  999.   end
  1000.   #--------------------------------------------------------------------------
  1001.   # ● タイトル表示フェーズ:総合フレーム更新
  1002.   #--------------------------------------------------------------------------
  1003.   def update_phase_title
  1004.     case @local_phase
  1005.     when 0  # 表示準備
  1006.       title_phase_startup
  1007.     when 1  # フェードイン
  1008.       title_phase_fadein
  1009.     when 2  # 表示待機
  1010.       title_phase_update
  1011.     when 3  # エフェクト
  1012.       title_phase_effect
  1013.     when 4  # 表示終了
  1014.       title_phase_end(true)
  1015.     end
  1016.   end
  1017.   #--------------------------------------------------------------------------
  1018.   # ● タイトル表示フェーズ:表示準備
  1019.   #--------------------------------------------------------------------------
  1020.   def title_phase_startup
  1021.     # 背景絵の表示準備
  1022.     @sprite.bitmap.dispose unless @sprite.bitmap.nil?
  1023.     @sprite.bitmap = Cache.system(Title_Custom::TITLE_BACK)
  1024.     # タイトル用ビューポート定義
  1025.     viewport = Viewport.new(0, 0, Title_Custom::DISP_W, Title_Custom::DISP_H)
  1026.     viewport.z = 1000
  1027.     # タイトル BGM を演奏
  1028.     $data_system.title_bgm.play
  1029.     # メインタイトルの表示準備
  1030.     if Title_Custom::TM
  1031.       @main_sprite = Sprite.new(viewport)
  1032.       @main_sprite.z = 100
  1033.       main_title_startup
  1034.     end
  1035.     # サブタイトルの表示準備
  1036.     if Title_Custom::TS
  1037.       @sub_sprite = Sprite.new(viewport)
  1038.       @sub_sprite.z = 50
  1039.       sub_title_startup
  1040.     end
  1041.     # コマンドの表示準備
  1042.     @cmd_window = Window_TitleCmd.new(@continue_enabled)
  1043.     if Title_Custom::FADEIN
  1044.       @cmd_window.opacity = 0
  1045.       @cmd_window.back_opacity = 0
  1046.       @cmd_window.contents_opacity = 0
  1047.     end
  1048.     # フレームカウント初期化
  1049.     @frame_count = 0
  1050.     # FadeInフェーズに移動
  1051.     @local_phase = 1
  1052.     @fade_in_phase = 0
  1053.     # トランジションの実行
  1054.     unless Title_Custom::TITLE_TRN.nil?
  1055.       # トランジション実行
  1056.       Graphics.transition(40, "Graphics/System/" + Title_Custom::TITLE_TRN)
  1057.     end
  1058.   end
  1059.   #--------------------------------------------------------------------------
  1060.   # ● タイトル表示フェーズ:表示準備 [ メインタイトル ]
  1061.   #--------------------------------------------------------------------------
  1062.   def main_title_startup
  1063.     # テキスト
  1064.     if Title_Custom::TM_TYPE
  1065.       # ビットマップ定義
  1066.       @main_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
  1067.       # フォント定義
  1068.       font = Title_Custom::TMT_FONT
  1069.       font.push(Font.default_name)
  1070.       @main_sprite.bitmap.font.name = font
  1071.       # フォントサイズ
  1072.       @main_sprite.bitmap.font.size = Title_Custom::TMT_SIZE
  1073.       # イタリック
  1074.       @main_sprite.bitmap.font.italic = Title_Custom::TMT_ITALIC
  1075.       # ボールド
  1076.       @main_sprite.bitmap.font.bold = Title_Custom::TMT_BOLD
  1077.       # フォント色
  1078.       @main_sprite.bitmap.font.color = Title_Custom::TMT_COLOR
  1079.       # 表示位置定義
  1080.       text = Title_Custom::TMT_NAME.dup
  1081.       rect = @main_sprite.bitmap.text_size(text)
  1082.       width = rect.width + rect.height / 2
  1083.       height = rect.height
  1084.       # 文字表示タイプ
  1085.       if Title_Custom::TMT_EDGE
  1086.         # 縁文字
  1087.         @main_sprite.bitmap.draw_enter_edging_text(0, 0, width, height, text)
  1088.       else
  1089.         # 通常文字
  1090.         @main_sprite.bitmap.draw_enter_text(0, 0, width, height, text)
  1091.       end
  1092.     # グラフィック
  1093.     else
  1094.       # ビットマップ定義
  1095.       @main_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
  1096.       # グラフィック描画
  1097.       @main_sprite.bitmap.draw_title_file(Title_Custom::TMG_FILE, 0, 0)
  1098.     end
  1099.     # 表示位置
  1100.     @main_sprite.x = Title_Custom::TM_X
  1101.     @main_sprite.y = Title_Custom::TM_Y
  1102.     # フェードイン前処理
  1103.     if Title_Custom::FADEIN
  1104.       @main_sprite.opacity = 0
  1105.     end
  1106.   end
  1107.   #--------------------------------------------------------------------------
  1108.   # ● タイトル表示フェーズ:表示準備 [ サブタイトル ]
  1109.   #--------------------------------------------------------------------------
  1110.   def sub_title_startup
  1111.     # テキスト
  1112.     if Title_Custom::TS_TYPE
  1113.       # ビットマップ定義
  1114.       @sub_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
  1115.       # フォント定義
  1116.       font = Title_Custom::TST_FONT.dup
  1117.       font.push(Font.default_name)
  1118.       @sub_sprite.bitmap.font.name = font
  1119.       # フォントサイズ
  1120.       @sub_sprite.bitmap.font.size = Title_Custom::TST_SIZE
  1121.       # イタリック
  1122.       @sub_sprite.bitmap.font.italic = Title_Custom::TST_ITALIC
  1123.       # ボールド
  1124.       @sub_sprite.bitmap.font.bold = Title_Custom::TST_BOLD
  1125.       # フォント色
  1126.       @sub_sprite.bitmap.font.color = Title_Custom::TST_COLOR
  1127.       # 表示位置定義
  1128.       text = Title_Custom::TST_NAME
  1129.       rect = @sub_sprite.bitmap.text_size(text)
  1130.       width = rect.width + rect.height / 2
  1131.       height = rect.height
  1132.       # 文字表示タイプ
  1133.       if Title_Custom::TST_EDGE
  1134.         # 縁文字
  1135.         @sub_sprite.bitmap.draw_enter_edging_text(0, 0, width, height, text)
  1136.       else
  1137.         # 通常文字
  1138.         @sub_sprite.bitmap.draw_enter_text(0, 0, width, height, text)
  1139.       end
  1140.     # グラフィック
  1141.     else
  1142.       # ビットマップ定義
  1143.       @sub_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
  1144.       # グラフィック描画
  1145.       @sub_sprite.bitmap.draw_title_file(Title_Custom::TSG_FILE, 0, 0)
  1146.     end
  1147.     # 表示位置
  1148.     @sub_sprite.x = Title_Custom::TS_X
  1149.     @sub_sprite.y = Title_Custom::TS_Y
  1150.     # フェードイン前処理
  1151.     if Title_Custom::FADEIN
  1152.       @sub_sprite.opacity = 0
  1153.     end
  1154.   end
  1155.   #--------------------------------------------------------------------------
  1156.   # ● タイトル表示フェーズ:フェードインフェーズ
  1157.   #--------------------------------------------------------------------------
  1158.   def title_phase_fadein
  1159.     # フェードイン有効
  1160.     if Title_Custom::FADEIN
  1161.       case @fade_in_phase
  1162.       when 0
  1163.         # フェードイン準備
  1164.         fade_in_setup
  1165.         # フェードイン実行(1フレーム分のムダをなくすための対応)
  1166.         fade_in_update
  1167.       when 1
  1168.         # フェードイン実行
  1169.         fade_in_update
  1170.       end
  1171.     else
  1172.       # 表示待機フェーズに移動
  1173.       @local_phase = 2
  1174.     end
  1175.   end
  1176.   #----<フェードイン実行メソッドの定義>----#
  1177.   FADEIN_MAIN = 0
  1178.   FADEIN_SUB = 1
  1179.   FADEIN_CMD = 2
  1180.   #--------------------------------------------------------------------------
  1181.   # ● タイトル表示フェーズ:フェードイン [ 準備 ]
  1182.   #--------------------------------------------------------------------------
  1183.   def fade_in_setup
  1184.     # 実行するメソッドを配列化して動作を制御する
  1185.     @fadein_struct = [[],[],[]]
  1186.     # 実行フェーズ数
  1187.     @fadein_max = 0
  1188.     case Title_Custom::FADEIN_PATTERN
  1189.     when 0  # メインタイトル+サブタイトル+コマンド
  1190.       @fadein_max = 1
  1191.       if Title_Custom::TM
  1192.         @fadein_struct[0].push(FADEIN_MAIN)
  1193.       end
  1194.       if Title_Custom::TS
  1195.         @fadein_struct[0].push(FADEIN_SUB)
  1196.       end
  1197.       @fadein_struct[0].push(FADEIN_CMD)
  1198.     when 1  # メインタイトル+サブタイトル → コマンド
  1199.       @fadein_max = 2
  1200.       if Title_Custom::TM
  1201.         @fadein_struct[0].push(FADEIN_MAIN)
  1202.       end
  1203.       if Title_Custom::TS
  1204.         @fadein_struct[0].push(FADEIN_SUB)
  1205.       end
  1206.       @fadein_struct[1].push(FADEIN_CMD)
  1207.     when 2  # メインタイトル → サブタイトル+コマンド
  1208.       @fadein_max = 2
  1209.       if Title_Custom::TM
  1210.         @fadein_struct[0].push(FADEIN_MAIN)
  1211.       end
  1212.       if Title_Custom::TS
  1213.         @fadein_struct[1].push(FADEIN_SUB)
  1214.       end
  1215.       @fadein_struct[1].push(FADEIN_CMD)
  1216.     when 3  # メインタイトル → サブタイトル → コマンド
  1217.       @fadein_max = 3
  1218.       if Title_Custom::TM
  1219.         @fadein_struct[0].push(FADEIN_MAIN)
  1220.       end
  1221.       if Title_Custom::TS
  1222.         @fadein_struct[1].push(FADEIN_SUB)
  1223.       end
  1224.       @fadein_struct[2].push(FADEIN_CMD)
  1225.     end
  1226.     # フェードイン実行フェーズへ移動
  1227.     @fade_in_phase = 1
  1228.     @frame_count = 0
  1229.     @fade_in_index = 0
  1230.   end
  1231.   #--------------------------------------------------------------------------
  1232.   # ● タイトル表示フェーズ:フェードイン [ メインタイトル ]
  1233.   #--------------------------------------------------------------------------
  1234.   def main_title_fadein
  1235.     @main_sprite.opacity += 255 / Title_Custom::FADEIN_TIME
  1236.   end
  1237.   #--------------------------------------------------------------------------
  1238.   # ● タイトル表示フェーズ:フェードイン [ サブタイトル ]
  1239.   #--------------------------------------------------------------------------
  1240.   def sub_title_fadein
  1241.     @sub_sprite.opacity += 255 / Title_Custom::FADEIN_TIME
  1242.   end
  1243.   #--------------------------------------------------------------------------
  1244.   # ● タイトル表示フェーズ:フェードイン [ コマンド ]
  1245.   #--------------------------------------------------------------------------
  1246.   def command_fadein
  1247.     if Title_Custom::CMD_TYPE
  1248.       @cmd_window.opacity += Title_Custom::CT_WIN_OPACITY / Title_Custom::FADEIN_TIME
  1249.       @cmd_window.back_opacity += Title_Custom::CT_WIN_BACKOPACITY / Title_Custom::FADEIN_TIME
  1250.     end
  1251.     @cmd_window.contents_opacity += 255 / Title_Custom::FADEIN_TIME
  1252.   end
  1253.   #--------------------------------------------------------------------------
  1254.   # ● タイトル表示フェーズ:フェードイン [ 実行 ]
  1255.   #--------------------------------------------------------------------------
  1256.   def fade_in_update
  1257.     # 配列化したフェードインメソッドを実行
  1258.     for i in 0...@fadein_struct[@fade_in_index].size
  1259.       case @fadein_struct[@fade_in_index][i]
  1260.       when FADEIN_MAIN
  1261.         main_title_fadein
  1262.       when FADEIN_SUB
  1263.         sub_title_fadein
  1264.       when FADEIN_CMD
  1265.         command_fadein
  1266.       end
  1267.     end
  1268.     @frame_count += 1
  1269.     # 次のフェードインを開始する
  1270.     if @frame_count > Title_Custom::FADEIN_TIME
  1271.       @fade_in_index += 1
  1272.       @frame_count = 0
  1273.       # フェードインのオワリ
  1274.       if @fade_in_index == @fadein_max
  1275.         @fade_in_phase = 2
  1276.         # 表示待機フェーズに移動
  1277.         @local_phase = 2
  1278.         # タイムアウトの初期化
  1279.         title_time_out_update_cancel
  1280.       end
  1281.     end
  1282.     # ボタンが押されたらフェードイン終了
  1283.     if Input.trigger?(Input::B) or Input.trigger?(Input::C) or Input.dir8 != 0
  1284.       if Title_Custom::TM
  1285.         @main_sprite.opacity = 255
  1286.       end
  1287.       if Title_Custom::TS
  1288.         @sub_sprite.opacity = 255
  1289.       end
  1290.       @cmd_window.opacity = Title_Custom::CT_WIN_OPACITY
  1291.       @cmd_window.back_opacity = Title_Custom::CT_WIN_BACKOPACITY
  1292.       @cmd_window.contents_opacity = 255
  1293.       @fade_in_phase = 2
  1294.       # 表示待機フェーズに移動
  1295.       @local_phase = 2
  1296.       # タイムアウトの初期化
  1297.       title_time_out_update_cancel
  1298.     end
  1299.   end
  1300.   #--------------------------------------------------------------------------
  1301.   # ● タイトル表示フェーズ:表示待機
  1302.   #--------------------------------------------------------------------------
  1303.   def title_phase_update
  1304.     @cmd_window.update
  1305.     # C ボタンが押された
  1306.     if Input.trigger?(Input::C)
  1307.       case Title_Custom::CMD_BOX[@cmd_window.index]
  1308.       when 0 # New Game
  1309.         # 決定 SE を演奏
  1310.         Sound.play_decision
  1311.         title_phase_update_next
  1312.       when 1 # Continue
  1313.         # セーブファイルがあるか?
  1314.         unless @continue_enabled
  1315.           # ブザー SE を演奏
  1316.           Sound.play_buzzer
  1317.           return
  1318.         end
  1319.         # 決定 SE を演奏
  1320.         Sound.play_decision
  1321.         title_phase_update_next
  1322.       when 2 # Shut Down
  1323.         # 決定 SE を演奏
  1324.         Sound.play_decision
  1325.         title_phase_update_next
  1326.       end
  1327.       return
  1328.     end
  1329.     # タイムアウトを見張る
  1330.     title_time_out_update
  1331.     # カーソル移動時にカーソル音を鳴らす
  1332.     if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
  1333.       # カーソル SE を演奏
  1334.       Sound.play_cursor
  1335.       # タイムアウトの初期化
  1336.       title_time_out_update_cancel
  1337.     end
  1338.   end
  1339.   #--------------------------------------------------------------------------
  1340.   # ● タイトル表示フェーズ:表示待機 [ 次のフェーズに移動 ]
  1341.   #--------------------------------------------------------------------------
  1342.   def title_phase_update_next
  1343.     # エフェクトフェーズに移動
  1344.     @local_phase = 3
  1345.     # フレームカウント初期化
  1346.     @frame_count = 0
  1347.     @title_timeout_cnt = 0
  1348.   end
  1349.   #--------------------------------------------------------------------------
  1350.   # ● タイトル表示フェーズ:表示待機 [ タイムアウトの見張り ]
  1351.   #--------------------------------------------------------------------------
  1352.   def title_time_out_update
  1353.     if Title_Custom::TIME_OUT
  1354.       @title_timeout_cnt += 1
  1355.       # タイムアウト発生
  1356.       if @title_timeout_cnt > Title_Custom::TIME_OUT_CNT
  1357.         if @phase != next_phase(@phase)
  1358.           # タイトル表示終了処理を先駆け実行
  1359.           title_phase_end(false)
  1360.         else
  1361.           # 同フェーズに移行する場合はタイムアウトなし
  1362.           title_time_out_update_cancel
  1363.         end
  1364.       end
  1365.     end
  1366.   end
  1367.   #--------------------------------------------------------------------------
  1368.   # ● タイトル表示フェーズ:表示待機 [ タイムアウトの初期化 ]
  1369.   #--------------------------------------------------------------------------
  1370.   def title_time_out_update_cancel
  1371.     @title_timeout_cnt = 0
  1372.   end
  1373.   #--------------------------------------------------------------------------
  1374.   # ● タイトル表示フェーズ:エフェクト
  1375.   #--------------------------------------------------------------------------
  1376.   def title_phase_effect
  1377.     index = Title_Custom::CMD_BOX[@cmd_window.index]
  1378.     if Title_Custom::EFFECT[index]
  1379.       # エフェクト処理を実行
  1380.       main_effect_ex(index) if Title_Custom::TM
  1381.       sub_effect_ex(index) if Title_Custom::TS
  1382.       command_effect_ex(index)
  1383.       titleback_effect_ex(index)
  1384.       # フレームカウント
  1385.       @frame_count += 1
  1386.       # エフェクト処理の終了
  1387.       if @frame_count > Title_Custom::EF_TIME_CNT[index]
  1388.         # タイトル表示終了フェーズに移動
  1389.         @local_phase = 4
  1390.       end
  1391.     else
  1392.       # タイトル表示終了フェーズに移動
  1393.       @local_phase = 4
  1394.     end
  1395.   end
  1396.   #--------------------------------------------------------------------------
  1397.   # ● タイトル表示フェーズ:メインタイトルエフェクト処理
  1398.   #     type: 0=NewGame 1:Continue 2:Shutdown
  1399.   #--------------------------------------------------------------------------
  1400.   def main_effect_ex(type)
  1401.     @main_sprite.x += Title_Custom::TME_X[type]
  1402.     @main_sprite.y += Title_Custom::TME_Y[type]
  1403.     @main_sprite.zoom_x += Title_Custom::TME_ZOOM_X[type]
  1404.     @main_sprite.zoom_y += Title_Custom::TME_ZOOM_Y[type]
  1405.     @main_sprite.opacity -= 255 / Title_Custom::EF_TIME_CNT[type]
  1406.   end
  1407.   #--------------------------------------------------------------------------
  1408.   # ● タイトル表示フェーズ:サブタイトルエフェクト処理
  1409.   #     type: 0=NewGame 1=Continue 2=Shutdown
  1410.   #--------------------------------------------------------------------------
  1411.   def sub_effect_ex(type)
  1412.     @sub_sprite.x += Title_Custom::TSE_X[type]
  1413.     @sub_sprite.y += Title_Custom::TSE_Y[type]
  1414.     @sub_sprite.zoom_x += Title_Custom::TSE_ZOOM_X[type]
  1415.     @sub_sprite.zoom_y += Title_Custom::TSE_ZOOM_Y[type]
  1416.     @sub_sprite.opacity -= 255 / Title_Custom::EF_TIME_CNT[type]
  1417.   end
  1418.   #--------------------------------------------------------------------------
  1419.   # ● タイトル表示フェーズ:コマンドエフェクト処理
  1420.   #     type: 0=NewGame 1=Continue 2=Shutdown
  1421.   #--------------------------------------------------------------------------
  1422.   def command_effect_ex(type)
  1423.     @cmd_window.x += Title_Custom::CME_X[type]
  1424.     @cmd_window.y += Title_Custom::CME_Y[type]
  1425.     @cmd_window.contents_opacity -= 255 / Title_Custom::EF_TIME_CNT[type]
  1426.   end
  1427.   #--------------------------------------------------------------------------
  1428.   # ● タイトル表示フェーズ:タイトルバックエフェクト処理
  1429.   #     type: 0=NewGame 1=Continue 2=Shutdown
  1430.   #--------------------------------------------------------------------------
  1431.   def titleback_effect_ex(type)
  1432.     @sprite.x += Title_Custom::TBE_X[type]
  1433.     @sprite.y += Title_Custom::TBE_Y[type]
  1434.     @sprite.zoom_x += Title_Custom::TBE_ZOOM_X[type]
  1435.     @sprite.zoom_y += Title_Custom::TBE_ZOOM_Y[type]
  1436.     @sprite.tone.red += Title_Custom::TBE_TONE_R[type]
  1437.     @sprite.tone.green += Title_Custom::TBE_TONE_G[type]
  1438.     @sprite.tone.blue += Title_Custom::TBE_TONE_B[type]
  1439.     @sprite.tone.gray += Title_Custom::TBE_TONE_S[type]
  1440.   end
  1441.   #--------------------------------------------------------------------------
  1442.   # ● タイトル表示フェーズ:表示終了
  1443.   #    pattern_flag: true=通常 false=タイムアウト
  1444.   #--------------------------------------------------------------------------
  1445.   def title_phase_end(pattern_flag)
  1446.     # メインタイトルの表示終了
  1447.     if Title_Custom::TM
  1448.       @main_sprite.dispose
  1449.     end
  1450.     # サブタイトルの表示終了
  1451.     if Title_Custom::TS
  1452.       @sub_sprite.dispose
  1453.     end
  1454.     # コマンドの表示終了
  1455.     @cmd_window.dispose
  1456.     # タイトルバックの消去
  1457.     #@sprite.bitmap.clear
  1458.     # フレームカウント初期化
  1459.     @frame_count = 0
  1460.     # ローカルフェーズの初期化
  1461.     @local_phase = 0
  1462.     @fade_in_phase = 0
  1463.     # 音楽フェードアウト
  1464.     all_music_fade(2000)
  1465.     # 終了パターンによって分岐
  1466.     case pattern_flag
  1467.     when false  # タイムアウト
  1468.       # 次のフェーズに移動
  1469.       @phase = next_phase(@phase)
  1470.       # 次のフェーズにトランジション実行があるか?
  1471.       unless next_phase_transition?(@phase)
  1472.         # トランジション準備
  1473.         Graphics.freeze
  1474.       end
  1475.     when true   # 通常終了
  1476.       # フェーズ終了
  1477.       @phase = 0
  1478.       # コマンド選択結果の実行
  1479.       case Title_Custom::CMD_BOX[@cmd_window.index]
  1480.       when 0 # New Game
  1481.         command_new_game
  1482.       when 1 # Continue
  1483.         command_continue
  1484.       when 2 # Shut Donw
  1485.         command_shutdown
  1486.       end
  1487.     end
  1488.   end
  1489.   #--------------------------------------------------------------------------
  1490.   # ● コマンド : ニューゲーム
  1491.   #--------------------------------------------------------------------------
  1492.   def command_new_game
  1493.     $game_system = Game_System.new
  1494.     create_game_objects
  1495.     confirm_player_location
  1496.     $game_party.setup_starting_members            # 初期パーティ
  1497.     $game_map.setup($data_system.start_map_id)    # 初期位置のマップ
  1498.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  1499.     $game_player.refresh
  1500.     $scene = Scene_Map.new
  1501.     $game_map.autoplay
  1502.   end
  1503.   #--------------------------------------------------------------------------
  1504.   # ● コマンド : コンティニュー
  1505.   #--------------------------------------------------------------------------
  1506.   def command_continue
  1507.     # ロード画面に切り替え
  1508.     $scene = Scene_File.new(false, true, false)
  1509.   end
  1510.   #--------------------------------------------------------------------------
  1511.   # ● コマンド : シャットダウン
  1512.   #--------------------------------------------------------------------------
  1513.   def command_shutdown
  1514.     all_music_fade(800)
  1515.     # シャットダウン
  1516.     $scene = nil
  1517.   end
  1518. end


  1519. #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  1520. #   イベントデモ特有処理START     #
  1521. #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  1522. if Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO

  1523. #==============================================================================
  1524. # ■ Game_System
  1525. #==============================================================================
  1526. class Game_System
  1527.   #--------------------------------------------------------------------------
  1528.   # ● 公開インスタンス変数
  1529.   #--------------------------------------------------------------------------
  1530.   attr_accessor :event_demo             # イベントデモ表示中フラグ
  1531.   #--------------------------------------------------------------------------
  1532.   # ● オブジェクト初期化
  1533.   #--------------------------------------------------------------------------
  1534.   alias init_title initialize
  1535.   def initialize
  1536.     init_title
  1537.     @event_demo = false
  1538.   end
  1539. end

  1540. #==============================================================================
  1541. # ■ Scene_Map
  1542. #==============================================================================
  1543. class Scene_Map
  1544.   alias event_demo_update update
  1545.   def update
  1546.     event_demo_update
  1547.     if $game_system.event_demo
  1548.       if Input.trigger?(Input::B)
  1549.         $scene = Scene_Title.new
  1550.       end
  1551.     end
  1552.   end
  1553. end

  1554. #==============================================================================
  1555. # ■ Game_Interpreter
  1556. #==============================================================================
  1557. class Game_Interpreter
  1558.   #--------------------------------------------------------------------------
  1559.   # ● タイトルデモの終了
  1560.   #--------------------------------------------------------------------------
  1561.   def title_demo_end
  1562.     command_354
  1563.   end
  1564. end

  1565. end # Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO
  1566. #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
  1567. #   イベントデモ特有処理END       #
  1568. #-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#




  1569. #==============================================================================
  1570. # ■ タイトルカスタマイズ[Window_TitleCmd]
  1571. #------------------------------------------------------------------------------
  1572. #  タイトルカスタマイズ用のタイトルコマンド選択を行うウィンドウです。
  1573. #   フォントサイズに応じたWindow SizeやRectの設定に対応しています。
  1574. #==============================================================================
  1575. class Window_TitleCmd < Window_Selectable
  1576.   #--------------------------------------------------------------------------
  1577.   # ● オブジェクト初期化
  1578.   #     load_flg     : ロード色有効?
  1579.   #--------------------------------------------------------------------------
  1580.   def initialize(load_flg)
  1581.     @load_flg = load_flg
  1582.     @type = Title_Custom::CMD_TYPE
  1583.     @commands = Title_Custom::CMD_BOX.dup
  1584.     # テキストコマンド
  1585.     if @type
  1586.       @font_size = Title_Custom::CT_SIZE
  1587.       # コマンド配置決定
  1588.       for i in [email protected]
  1589.         case @commands[i]
  1590.         when 0  # ニューゲーム
  1591.           @commands[i] = Title_Custom::CT_NEWGAME
  1592.         when 1  # コンティニュー
  1593.           @commands[i] = Title_Custom::CT_CONTINUE
  1594.         when 2  # シャットダウン
  1595.           @commands[i] = Title_Custom::CT_SHUTDOWN
  1596.         end
  1597.       end
  1598.       # ウィンドウ幅の自動調整
  1599.       bitmap = Bitmap.new(10, 10)
  1600.       width = 0
  1601.       for i in [email protected]
  1602.         size = bitmap.text_size(@commands[i]).width
  1603.         if width < size
  1604.           width = size
  1605.         end
  1606.       end
  1607.       width += 64 + @commands.size * Title_Custom::CT_WIN_SLIDE.abs
  1608.     # 画像コマンド
  1609.     else
  1610.       @font_size = Cache.system(Title_Custom::CG_NEWGAME).height
  1611.       @serect_commands = @commands.dup
  1612.       # コマンド配置決定
  1613.       for i in [email protected]
  1614.         case @commands[i]
  1615.         when 0  # ニューゲーム
  1616.           @commands[i] = Title_Custom::CG_NEWGAME
  1617.         when 1  # コンティニュー
  1618.           @commands[i] = Title_Custom::CG_CONTINUE
  1619.         when 2  # シャットダウン
  1620.           @commands[i] = Title_Custom::CG_SHUTDOWN
  1621.         end
  1622.       end
  1623.       # コマンド配置決定
  1624.       if Title_Custom::CG_CHANGE
  1625.         for i in 0...@serect_commands.size
  1626.           case @serect_commands[i]
  1627.           when 0  # ニューゲーム
  1628.             @serect_commands[i] = Title_Custom::CGS_NEWGAME
  1629.           when 1  # コンティニュー
  1630.             @serect_commands[i] = Title_Custom::CGS_CONTINUE
  1631.           when 2  # シャットダウン
  1632.             @serect_commands[i] = Title_Custom::CGS_SHUTDOWN
  1633.           end
  1634.         end
  1635.       end
  1636.       # ウィンドウ幅の自動調整
  1637.       width = 0
  1638.       for i in [email protected]
  1639.         size = Cache.system(Title_Custom::CG_NEWGAME).width
  1640.         if width < size
  1641.           width = size
  1642.         end
  1643.       end
  1644.       width += 64 + @commands.size * Title_Custom::CT_WIN_SLIDE.abs
  1645.     end
  1646.     # コマンドの個数からウィンドウの高さを算出
  1647.     super(0, 0, width, @commands.size * (@font_size+10) + 32)
  1648.    
  1649.     self.x = Title_Custom::CT_WIN_X - self.width / 2
  1650.     self.y = Title_Custom::CT_WIN_Y
  1651.    
  1652.     @item_max = @commands.size
  1653.     self.contents = Bitmap.new(width - 32, @item_max * (@font_size+10))
  1654.     # テキストコマンド
  1655.     if @type
  1656.       # フォント定義
  1657.       font = Title_Custom::TMT_FONT
  1658.       font.push(Font.default_name)
  1659.       self.contents.font.name = font
  1660.       self.contents.font.size = @font_size
  1661.       self.contents.font.italic = Title_Custom::CT_ITALIC
  1662.       self.contents.font.bold = Title_Custom::CT_BOLD
  1663.     # 画像コマンド
  1664.     else
  1665.       font_size = Cache.system(Title_Custom::CG_NEWGAME).height
  1666.       self.opacity = 0
  1667.       self.back_opacity = 0
  1668.       #self.contents_opacity = 0
  1669.     end
  1670.    
  1671.     # インデックスの決定
  1672.     if @load_flg
  1673.       # セーブファイルがあればIndexはコンティニューにおく
  1674.       iindex = 1
  1675.     else
  1676.       # セーブファイルがない場合はIndexはニューゲームにおく
  1677.       iindex = 0
  1678.     end
  1679.     for i in 0...Title_Custom::CMD_BOX.size
  1680.       if Title_Custom::CMD_BOX[i] == iindex
  1681.         self.index = i
  1682.       end
  1683.     end
  1684.     @local_index = self.index
  1685.    
  1686.     refresh
  1687.   end
  1688.   #--------------------------------------------------------------------------
  1689.   # ● リフレッシュ
  1690.   #--------------------------------------------------------------------------
  1691.   def refresh
  1692.     self.contents.clear
  1693.     for i in 0...@item_max
  1694.       draw_item(i)
  1695.     end
  1696.   end
  1697.   #--------------------------------------------------------------------------
  1698.   # ● 項目の描画
  1699.   #     index : 項目番号
  1700.   #--------------------------------------------------------------------------
  1701.   def draw_item(index)
  1702.     # 開始位置の決定
  1703.     slide = Title_Custom::CT_WIN_SLIDE.abs
  1704.     if Title_Custom::CT_WIN_SLIDE > 0
  1705.       x = 8 + index * slide
  1706.     else
  1707.       x = 8 + (@commands.size - 1 - index) * slide
  1708.     end
  1709.     if @type
  1710.       # 文字色の決定
  1711.       if !@load_flg and Title_Custom::CMD_BOX[index] == 1
  1712.         self.contents.font.color = normal_color
  1713.         self.contents.font.color.alpha = 128
  1714.       else
  1715.         self.contents.font.color = Title_Custom::CT_COLOR
  1716.       end
  1717.       rect = Rect.new(x, (@font_size+10) * index, self.contents.width - 8, (@font_size+10))
  1718.       self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  1719.       # テキスト描画
  1720.       if Title_Custom::CT_EDGE
  1721.         self.contents.draw_edging_text(rect.x, rect.y, rect.width, rect.height, @commands[index], Title_Custom::CT_ALIGN)
  1722.       else
  1723.         self.contents.draw_text(rect, @commands[index], Title_Custom::CT_ALIGN)
  1724.       end
  1725.     else
  1726.       # 透明度の決定
  1727.       if !@load_flg and Title_Custom::CMD_BOX[index] == 1
  1728.         opacity = 80
  1729.       else
  1730.         opacity = 255
  1731.       end
  1732.       y = (@font_size+10) * index + 4
  1733.       # 画像描画
  1734.       if Title_Custom::CG_CHANGE and index == @local_index
  1735.         self.contents.draw_title_file(@serect_commands[index], x, y, opacity)
  1736.       else
  1737.         self.contents.draw_title_file(@commands[index], x, y, opacity)
  1738.       end
  1739.     end
  1740.   end
  1741.   #--------------------------------------------------------------------------
  1742.   # ● カーソルの矩形更新
  1743.   #--------------------------------------------------------------------------
  1744.   def update_cursor
  1745.     # カーソル移動があった場合のみ動作させる
  1746.     if @local_index != @index
  1747.       @local_index = @index
  1748.       # 画像チェンジ
  1749.       if Title_Custom::CG_CHANGE and !@type
  1750.         refresh
  1751.         return
  1752.       end
  1753.       # カーソルの矩形更新
  1754.       if @index < 0
  1755.         self.cursor_rect.empty
  1756.       else
  1757.         slide = Title_Custom::CT_WIN_SLIDE.abs
  1758.         if Title_Custom::CT_WIN_SLIDE > 0
  1759.           x = 4 + index * slide
  1760.         else
  1761.           x = 4 + (@commands.size - 1 - index) * slide
  1762.         end
  1763.         if @type
  1764.           if Title_Custom::CT_WIN_SLIDE != 0
  1765.             rect = self.contents.text_size(@commands[@index])
  1766.             width = rect.width
  1767.           else
  1768.             width = self.contents.width - 16
  1769.           end
  1770.         else
  1771.           width = Cache.system(Title_Custom::CG_NEWGAME).width
  1772.         end
  1773.         self.cursor_rect.set(x, (@font_size+10) * index, width + 8, (@font_size+10))
  1774.       end
  1775.     end
  1776.   end
  1777. end




  1778. #==============================================================================
  1779. # ■ Bitmap拡張
  1780. #==============================================================================
  1781. class Bitmap
  1782.   #--------------------------------------------------------------------------
  1783.   # ● 縁文字
  1784.   #--------------------------------------------------------------------------
  1785.   def draw_edging_text(x, y, width, height, text, align=0)
  1786.     # 色を保持
  1787.     old_color = font.color.dup
  1788.     # 縁取り部分の描写(デフォルト:黒縁)
  1789.     font.color = Color.new(0, 0, 0)
  1790.     draw_text(x-1, y-1, width, height, text, align)
  1791.     draw_text(x-1, y+1, width, height, text, align)
  1792.     draw_text(x+1, y-1, width, height, text, align)
  1793.     draw_text(x+1, y+1, width, height, text, align)
  1794.     # 通常色に戻す
  1795.     font.color = old_color
  1796.     # 通常の文字を上か書きつぶす
  1797.     draw_text(x, y, width, height, text, align)
  1798.   end
  1799.   #--------------------------------------------------------------------------
  1800.   # ● 改行認識テキスト表示
  1801.   #--------------------------------------------------------------------------
  1802.   def draw_enter_text(x, y, width, height, text, align=0)
  1803.     rect = text_size(text)
  1804.     info_box = text.split(/\n/)
  1805.     for i in 0...info_box.size
  1806.       draw_text( x, y+i*rect.height, width, height, info_box[i], align)
  1807.       break if (y+i*rect.height) > self.height
  1808.     end
  1809.   end
  1810.   #--------------------------------------------------------------------------
  1811.   # ● 改行認識テキスト表示(縁文字)
  1812.   #--------------------------------------------------------------------------
  1813.   def draw_enter_edging_text(x, y, width, height, text, align=0)
  1814.     rect = text_size(text)
  1815.     info_box = text.split(/\n/)
  1816.     for i in 0...info_box.size
  1817.       draw_edging_text( x, y+i*rect.height, width, height, info_box[i], align)
  1818.       break if (y+i*rect.height) > self.height
  1819.     end
  1820.   end
  1821.   #--------------------------------------------------------------------------
  1822.   # ● タイトルファイル表示(中央表示)
  1823.   #--------------------------------------------------------------------------
  1824.   def draw_title(file_name, x, y)
  1825.     bit = Cache.system(file_name)
  1826.     cw = bit.width
  1827.     ch = bit.height
  1828.     src_rect = Rect.new(0, 0, cw, ch)
  1829.     blt(x-cw/2, y-ch/2, bit, src_rect)
  1830.   end
  1831.   #--------------------------------------------------------------------------
  1832.   # ● タイトルファイル表示(コマンド表示用)
  1833.   #--------------------------------------------------------------------------
  1834.   def draw_title_file(file_name, x, y, opacity=255)
  1835.     bit = Cache.system(file_name)
  1836.     cw = bit.width
  1837.     ch = bit.height
  1838.     src_rect = Rect.new(0, 0, cw, ch)
  1839.     blt(x, y, bit, src_rect, opacity)
  1840.   end
  1841. end




复制代码
附上我改過的日站的Menu腳本
作者: wsmyzc    时间: 2010-9-24 09:56
你直接把网站丢上来比较好,有些是指明素材放在哪里的,而没有付上范例的




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1