设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 908|回复: 0
打印 上一主题 下一主题

[已经过期] 关于BMSP 暦システム菜单窗口内容的显示方式

[复制链接]

Lv2.观梦者

梦石
0
星屑
457
在线时间
1409 小时
注册时间
2010-9-23
帖子
557
跳转到指定楼层
1
发表于 2016-3-29 21:16:08 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如图所示,这个脚本在菜单中显示时间和日期是竖着排列的,想让它横着排列,应该修改哪里呢。 = =



RUBY 代码复制
  1. #==============================================================================
  2. # ■ BMSP 暦システム[KOYOMISYSTEM] Ver1.24 2014/08/09
  3. #------------------------------------------------------------------------------
  4. #  日付,時間の概念を導入します.
  5. #==============================================================================
  6. #------------------------------------------------------------------------------
  7. # ■内容
  8. # ゲームに日付,時間の概念を導入します.
  9. # 自由に暦を設定して任意のタイミングで時間を進めることができます.
  10. # 時間に合わせて画面の色調を自動で変更することも可能です.
  11. #
  12. # 位置:特に指定はありません
  13. #
  14. # ■使用方法
  15. # スクリプトに丸ごと貼り付けていただければ使用できます.
  16. #
  17. # ●暦の設定
  18. # まずは詳細設定にて暦の設定を行って下さい.
  19. #
  20. # ○RANKS:ランクの設定を行います.
  21. # ランクとは秒,分,時,,などのような時間の単位を表します.
  22. # ランクは上から順にランク0,ランク1と呼び,
  23. # あるランクの値が上限を超えると一つ上のランクに繰り上げされます.
  24. # 各ランクは
  25. #   ランク名 => 値の範囲
  26. # のように設定します.
  27. # 例
  28. #   RANKS = {
  29. #     :sec => 0...60,
  30. #     :min => 0...60,
  31. #     :hour => 0...24,
  32. #     :day => 1..30,
  33. #     :mon => 1..12,
  34. #     :year => 1..9999
  35. #   }
  36. # 上記の例ではランクの低い順に秒,分,時,日,月,年を設定しています.
  37. # また,それぞれ取り得る値の範囲も指定しています.
  38. # (一月30日で年は便宜上9999年を上限としています)
  39. # 例えばdayが25のときに7加算され32になると,
  40. # 結果としてdayは2になり,monは1加算されます.
  41. # このようにして基本となる暦を作成します.
  42. # この部分を任意に変えることで自由な暦を設定できます.
  43. #
  44. # ○ SPECIAL_EXP:ランク以外の特別な暦情報を設定します
  45. # 例えば曜日や季節,時間帯などを設定することができます.
  46. # 設定の仕方は以下のフォーマットにしたがってください.
  47. #   SPECIAL_EXP[:%special%] = ->(cal){
  48. #      任意の式
  49. #   }
  50. # %special%に設定する名前を指定し,対応する任意の式を記述します.
  51. # このときcalにより暦オブジェクトが参照できます.
  52. # 例・時間帯の設定
  53. #   SPECIAL_EXP[:timezone] = ->(cal){
  54. #     case cal.hour
  55. #    when 4,5
  56. #       0 # 早朝は0を返す
  57. #     when 6,7,8
  58. #       1 # 朝は1を返す
  59. #     when 9...16
  60. #       2 # 昼は2を返す
  61. #     when 16,17
  62. #       3 # 夕方は3を返す
  63. #     when 18...22
  64. #       4 # 夜は4を返す
  65. #     when 22...24,0...4
  66. #      5 # 深夜は5を返す
  67. #     end
  68. #   }
  69. #
  70. # ○ TRANSFORM:表示変換の設定を行います.
  71. # 暦を文字列として表現する際,整数以外の形式で表示したい場合に使用します.
  72. # また,全く新しい独自の表示形式を指定することも可能
  73. # 例・月の文字列表記
  74. #   TRANSFORM[:mon] = ->(cal){
  75. #     ["Jan", "Fab", "Mar", "Apr", "May", "Jun",
  76. #      "Jul", "Aug", "Seq", "Oct", "Nov", "Dec"][cal.mon]
  77. #   }
  78. #
  79. # ○ INITIAL_CAL:ゲーム開始時の暦を設定します.
  80. # 設定したいランクと対応する値を指定します.
  81. # 指定されなかったランクの初期値は値の範囲のうち最小のものになります.
  82. # 例
  83. #   INITIAL_CAL = {
  84. #     :day => 15,
  85. #     :mon => 12,
  86. #     :year => 2011
  87. #   }
  88. # この例では2011年12月15日0時0分0秒が初期値となります.
  89. #
  90. # ○ MAP_WINDOW:マップで暦ウインドウを表示するかを設定します.
  91. # この設定はゲーム中以下のスクリプトにて切り替え可能です.
  92. #   $game_map.koyomi_display = true/false
  93. #
  94. # ○ MAP_WINDOW_FADE:マップでの暦ウインドウをフェードするか設定します.
  95. # trueのとき一定時間表示したあとフェードアウトします.
  96. # falseのとき暦ウインドウを常に表示します.
  97. #
  98. # ○ HIDE_MAP_WINDOW:マップで暦ウインドウを常に表示するとき,
  99. #                     ウインドウを一時的に消去できるか設定します.
  100. # この設定はゲーム中以下のスクリプトによって切り替え可能です.
  101. #   $game_koyomi.hide_map_window = true/false
  102. # ○ HIDE_KEY:マップで暦ウインドウを一時的に消去するボタンです.
  103. #              もう一度押すと再び表示します.
  104. # また,次のスクリプトをマップ上で実行するとイベント側から暦ウインドウの
  105. # 一時消去および再表示を行うことができます.
  106. #   $game_map.hide_koyomi_window = true/false
  107. #
  108. # ○ MAP_WINDOW_FORMAT:マップでの暦ウインドウの表示内容を設定します.
  109. # 配列でフォーマットを指定します.一つの要素につき一行となります.
  110. # フォーマットについては後述のメソッドstrftimeを参照してください.
  111. #
  112. # ○ MENU_WINDOW:メニューで暦ウインドウを表示するかを設定します.
  113. #
  114. # ○ MENU_WINDOW_FORAMT:メニューでの暦ウインドウの表示内容を設定します.
  115. # 設定の仕方はMAP_WINDOW_FORMATと同様です.
  116. #
  117. # ○ AUTO_TONE:暦による画面の色調の自動変更を設定します.
  118. # trueの時時間によって画面の色調が自動で変更されます.
  119. # また,イベントコマンドによる画面の色調変更は機能しなくなります.
  120. # ただし,後述する色調固定マップでは機能します.
  121. # この設定はゲーム中以下のスクリプトにて切り替え可能です.
  122. #   $game_koyomi.auto_tone = true/false
  123. #
  124. # ○ AUTO_TONE_DURATION:デフォルトの色調変更時間の設定です.
  125. # 色調変更の条件で色調変更時間が指定されない場合はこの値が適用されます.
  126. #
  127. # ○ AUTO_TONE_COND:色調変更の条件を設定します.
  128. # 色調を変更する条件となる時間とそれに対応する色調(Tone)を指定します.
  129. # 上にある条件ほど優先的にマッチします.
  130. # 条件の指定方法は条件に設定したいrankをキーにして対応する値を直接指定するか
  131. # 値の範囲で指定します.22..4(22...24かつ0..4)のような指定も可能です.
  132. # 範囲に関しては(0...3)の場合0から2まで,0...3の場合0から3までを表します.
  133. # また,対応する色調は以下で指定します.
  134. #   Tone.new(赤(-255~255),緑(-255~255),青(-255~255),グレー(0~255))
  135. # 例・時間帯によって色調を変える
  136. # AUTO_TONE_COND = {
  137. #   {:hour => 16...18} => Tone.new(68,-34,-34,0),
  138. #   {:hour => 18...22} => Tone.new(-34,-34,0,34),
  139. #   {:hour => 22...4} => Tone.new(-68,-68,0,68),
  140. #   {:hour => 4...6} => Tone.new(-34,-34,-34,34),
  141. #   {:hour => 6...9} => Tone.new(34,34,34,34)
  142. # }
  143. #
  144. # ○ FIX_TONE_ON_BATTLE:バトル画面では画面の色調を変更しない設定にできます.
  145. # trueの場合マップで色調が自動変更されている場合でも画面の色調はデフォルト(0,0,0,0)になります.
  146. # また,色調固定マップの場合でもデフォルトの色調になります.
  147. #
  148. # ○ AUTO_TIME_PASS:時間が自動経過するかを設定します.
  149. # この設定はゲーム中以下のスクリプトによって切り替え可能です.
  150. #   $game_koyomi.auto_time_pass = true/false
  151. #
  152. # ○ AUTO_TIME_PASS_DURATION:時間の自動経過間隔を設定します.
  153. # 指定したフレームが経過するごとにTIME_PASSINGで指定した分の時間が経過します.
  154. #
  155. # ○ TIME_PASSING:時間の自動経過量を設定します.
  156. # 加算したいランクと対応する加算量を指定してください.
  157. # 例・1分30秒ずつ加算する
  158. #   TIME_PASSING = {:min => 1, :sec => 30}
  159. #
  160. # ○ STOP_ON_EVENT:イベント中は時間の自動経過を停止するか設定します.
  161. # この設定はゲーム中以下のスクリプトによって切り替え可能です.
  162. #   $game_koyomi.stop_auto_time_pass_on_event = true/false
  163. #
  164. # ○ STOP_ON_BATTLE:バトル中は時間の自動経過を停止するか設定します.
  165. # この設定はゲーム中以下のスクリプトによって切り替え可能です.
  166. #   $game_koyomi.stop_auto_time_pass_on_battle = true/false
  167. #
  168. # ○ MOVE_TIME_PASS:場所移動による時間経過を設定します.
  169. # 「場所移動」が行われる度に時間を経過させることができます.
  170. # 加算したいランクと対応する加算量を指定してください.
  171. # 場所移動により加算したくない場合は空のハッシュを指定してください.
  172. #
  173. # ○ BATTLE_START_TIME_PASS:戦闘開始による時間経過を設定します.
  174. # 戦闘開始時に時間を経過させることができます.
  175. # 加算したいランクと対応する加算量を指定してください.
  176. # 加算したくない場合は空のハッシュを指定してください.
  177. #
  178. # ○ BATTLE_END_TIME_PASS:戦闘終了による時間経過を設定します.
  179. # 戦闘終了時に時間を経過させることができます.
  180. # 加算したいランクと対応する加算量を指定してください.
  181. # 加算したくない場合は空のハッシュを指定してください.
  182. #
  183. # ●暦の操作
  184. # ゲーム中は基本的にスクリプトコマンドから$game_koyomiにアクセスすることで暦を操作できます.
  185. # 以下は$game_koyomiからできる主な操作一覧です.
  186. # ○ $game_koyomi.auto_tone = true/false
  187. # 時間による画面色調の自動変更をするかどうか設定できます.
  188. #
  189. # ○ $game_koyomi.tone_temp_duration = int
  190. # これを設定した次の画面色調自動変更時のみ指定した時間で色調が変化します.
  191. # イベント等で時間を進めた際早く色調を切り替えたいときなどに利用します.
  192. #
  193. # ○ $game_koyomi.move_temp_time_pass = {:rank => value, ...}
  194. # これを指定した次の場所移動時のみ指定した分だけ時間が経過します.
  195. #
  196. # ○ $game_koyomi.battle_start_temp_time_pass = {:rank => value, ...}
  197. # これを指定した次の戦闘開始時のみ指定した分だけ時間が経過します.
  198. #
  199. # ○ $game_koyomi.battle_end_temp_time_pass = {:rank => value, ...}
  200. # これを指定した次の戦闘終了時時のみ指定した分だけ時間が経過します.
  201. #
  202. # ○ $game_koyomi.auto_time_pass = true/false
  203. # 自動で時間を経過させるか設定できます.
  204. #
  205. # ○ $game_koyomi.stop_auto_time_pass_on_event = true/false
  206. # 自動で時間が経過するとき,イベント中は時間経過を停止するか設定できます.
  207. #
  208. # ○ $game_koyomi.stop_auto_time_pass_on_battlet = true/false
  209. # 自動で時間が経過するとき,バトル中は時間経過を停止するか設定できます.
  210. #
  211. # ○ $game_koyomi.rank
  212. # 設定した各ランクの値を取得できます.
  213. # 例・現在の月を取得
  214. #   $game_koyomi.mon
  215. #
  216. # ○ $game_koyomi.rank = value
  217. # 設定した各ランクの値を変更できます.
  218. # 例・現在の月を3に設定
  219. #   $game_koyomi.mon = 3
  220. # 例・3時間進める
  221. #   $game_koyomi.hour += 3
  222. #
  223. # ○ $game_koyomi.special
  224. # 設定した各特殊表現の値を取得できます.
  225. # 例・現在の時間帯を取得
  226. #   $game_koyomi.timezone
  227. #
  228. # ○ $game_koyomi.set(init)
  229. # 暦をセットします.
  230. # initは各ランクと対応する値のハッシュか,後述する起算時からのランク0からみた経過時間
  231. # を指定します.
  232. # 例・ハッシュで暦をセット
  233. #   $game_koyomi.set(year: 2011, mon: 12. day: 15)
  234. # 例・ある暦から得た起算時からの経過時間で暦をセット
  235. #   $game_koyomi.set(koyomi.to_i)
  236. #
  237. # ○ $game_koyomi.time_pass(amount)
  238. # amountに各ランクと対応する値のハッシュを指定して,その分だけ時間を経過させます.
  239. # 例・1月と3時間だけ時間をすすめる
  240. #   $game_koyomi.time_pass(mon: 1, hour: 3)
  241. #
  242. # ○ $game_koyomi.to_i
  243. # 起算時からのランク0からみた経過時間を取得します.
  244. # この結果を変数などに保存することで容易に暦を復元できます.
  245. # 例・暦を整数にして保存・復元する
  246. #   koyomi = $game_koyomi.to_i
  247. #   $game_koyomi.set(koyomi)
  248. #
  249. # ○ $game_koyomi.strftime(format)
  250. # formatに変換文字列を指定して現在の暦を文字列にします.
  251. # format中には以下の二つの特別な文字列を記述することで暦の値を置き換えることができます.
  252. #   <<表示桁#rank>>
  253. # 表示桁は先頭に - または 0 を付けた数字と置き換えます.
  254. # rankは設定したランクのいずれかと置き換えます.
  255. # ランクの値が指定した数字の桁分の幅の文字列と置換されます.
  256. # 先頭に 0 をつけると余った桁0で埋められます.
  257. # 先頭に - をつけると右寄せとなります.
  258. #   <<label>>
  259. # labelはTRANSFORMで指定した変換ラベルと置き換えます.
  260. # TRANSFORMで設定した内容に従って文字列に置換されます.
  261. # 例・2011年12月15日4時00分00秒の暦のとき
  262. #   $game_koyomi.strftime("<<4#year>>-<<4#mon>>-<<04#day>>")
  263. #   #=> 2011-  12-0015
  264. #   $game_koyomi.strftime("<<mon>>-<<-4#day>>:<<timezone>>")
  265. #   #=> Dec-15  :早朝
  266. #
  267. # ●マップの個別設定
  268. # マップのメモ欄に以下を記述することでマップごとに設定を行うことができます.
  269. #   ==暦非表示==
  270. # マップで暦ウインドウを表示する場合でもこの記述があるマップは暦ウインドウを表示しません.
  271. #
  272. #   ==暦停止==
  273. # 自動で時間が経過する場合でもこの記述があるマップは自動で時間が経過しません.
  274. #
  275. #   ==色調固定[r,g,b,gray]==
  276. # 自動で画面色調が変更される場合でもこの記述があるマップは指定した色調になります.
  277. # 屋内マップなどで利用します.薄暗い洞窟等も表現可能です.
  278. # r,g,b,grayはそれぞれ色調(トーン)を指定する値です.
  279. # 例・時間にかかわらず薄暗い洞窟
  280. #   ==色調固定[-34,-34,-34,34]==
  281. #
  282. # ■注意
  283. # このスクリプトでは
  284. # 「RPG::Map」「Game_Map」「Scene_Menu」「Scene_Map」
  285. # 「Game_Screen」「Game_Troop」「Scene_Battle」
  286. # のメソッドを改変しています.
  287. # ■情報
  288. # このスクリプトはgentlawkによって作られたものです.
  289. # 利用規約は[url]http://blueredzone.com[/url]をご覧ください.
  290. #------------------------------------------------------------------------------
  291. module BMSP
  292.   @@includes ||= {}
  293.   @@includes[:KoyomiSystem] = 1.24
  294.   module KoyomiSystem
  295.     #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
  296.     #詳細設定
  297.     # ランクの設定
  298.     RANKS = {
  299.       :sec => 0...60,
  300.       :min => 0...60,
  301.       :hour => 0...24,
  302.       :day => 1..30,
  303.       :mon => 1..12,
  304.       :year => 1..9999
  305.     }
  306.     #------------------------------------------------------------
  307.     # ランク以外の暦情報の設定
  308.     SPECIAL_EXP = {}
  309.     SPECIAL_EXP[:timezone] = ->(cal){
  310.       case cal.hour
  311.       when 4,5
  312.         0 # 早朝は0を返す
  313.       when 6,7,8
  314.         1 # 朝は1を返す
  315.       when 9...16
  316.         2 # 昼は2を返す
  317.       when 16,17
  318.         3 # 夕方は3を返す
  319.       when 18...22
  320.         4 # 夜は4を返す
  321.       when 22...24,0...4
  322.         5 # 深夜は5を返す
  323.       end
  324.     }
  325.     #------------------------------------------------------------
  326.     # 表示変換の設定
  327.     TRANSFORM = {}
  328.     TRANSFORM[:mon] = ->(cal){
  329.       ["Jan", "Fab", "Mar", "Apr", "May", "Jun",
  330.        "Jul", "Aug", "Seq", "Oct", "Nov", "Dec"][cal.mon]
  331.     }
  332.     TRANSFORM[:timezone] = ->(cal){
  333.       case cal.timezone # 上で設定した時間帯で条件分岐
  334.       when 0
  335.         "早朝"
  336.       when 1
  337.         "朝"
  338.       when 2
  339.         "昼"
  340.       when 3
  341.         "夕方"
  342.       when 4
  343.         "夜"
  344.       when 5
  345.         "深夜"
  346.       end
  347.     }
  348.     #------------------------------------------------------------
  349.     # ゲーム開始時の暦
  350.     INITIAL_CAL = {
  351.       :sec => 0,
  352.       :min => 0,
  353.       :hour => 0,
  354.       :day => 15,
  355.       :mon => 12,
  356.       :year => 2011
  357.     }
  358.     #------------------------------------------------------------
  359.     # マップで暦ウインドウを表示するか
  360.     MAP_WINDOW = true
  361.     # マップでの暦ウインドウをフェードするか(falseで常に表示)
  362.     MAP_WINDOW_FADE = false
  363.     # マップでの暦ウインドウの一時消去を許可するか(trueで許可)
  364.     HIDE_MAP_WINDOW = true
  365.     # マップでの暦ウインドウの一時消去ボタン
  366.     # (:DOWN,:UP,:LEFT,:RIGHT,:A,:B,:C,:X,:Y,:Z,:L,:R,:SHIFT,:CTRL,:ALT)
  367.     HIDE_KEY = :L
  368.     # マップでの暦ウインドウの表示内容
  369.     MAP_WINDOW_FORMAT = [
  370.       "<<4#year>>年<<2#mon>>月<<2#day>>日",
  371.       "<<02#hour>>:<<02#min>>:<<02#sec>> [<<timezone>>]"
  372.     ]
  373.     # メニューで暦ウインドウを表示するか
  374.     MENU_WINDOW = true
  375.     # メニューでの暦ウインドウの表示内容
  376.     MENU_WINDOW_FORMAT = [
  377.       "<<4#year>>-<<2#mon>>-<<2#day>>",
  378.       "<<02#hour>>:<<02#min>>:<<02#sec>>"
  379.     ]
  380.     #------------------------------------------------------------
  381.     # 暦による画面の色調の自動変更
  382.     AUTO_TONE = true
  383.     # デフォルト色調変更時間
  384.     AUTO_TONE_DURATION = 120
  385.     # 色調変更の条件
  386.     AUTO_TONE_COND = {
  387.       {:hour => 16...18} => Tone.new(68,-34,-34,0),
  388.       {:hour => 18...22} => Tone.new(-34,-34,0,34),
  389.       {:hour => 22...4} => Tone.new(-68,-68,0,68),
  390.       {:hour => 4...6} => Tone.new(-34,-34,-34,34),
  391.       {:hour => 6...9} => Tone.new(34,34,34,34)
  392.     }
  393.     # バトル画面では色調を変更しない
  394.     FIX_TONE_ON_BATTLE = false
  395.     #------------------------------------------------------------
  396.     # 時間が自動経過するか
  397.     AUTO_TIME_PASS = true
  398.     # 時間の自動経過間隔
  399.     AUTO_TIME_PASS_DURATION = 30
  400.     # 時間の自動経過量
  401.     TIME_PASSING = {:min => 10}
  402.     # イベント中は自動経過を停止するか
  403.     STOP_ON_EVENT = true
  404.     # バトル中は自動経過を停止するか
  405.     STOP_ON_BATTLE = false
  406.     #------------------------------------------------------------
  407.     # 場所移動による時間経過
  408.     MOVE_TIME_PASS = {:min => 5}
  409.     # 戦闘開始による時間経過
  410.     BATTLE_START_TIME_PASS = {}
  411.     # 戦闘終了による時間経過
  412.     BATTLE_END_TIME_PASS = {}
  413.     #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ● 導入スクリプトのチェック
  417.   #--------------------------------------------------------------------------
  418.   class << self
  419.     if method_defined?(:check_script)
  420.       alias koyomisystem_check_script check_script
  421.     end
  422.   end
  423.   def self.check_script(script, version)
  424.     if methods.include?(:koyomisystem_check_script)
  425.       koyomisystem_check_script(script, version)
  426.     end
  427.     @@includes[script] && @@includes[script] >= version
  428.   end
  429. end
  430. #==============================================================================
  431. # ■ RPG::Map
  432. #==============================================================================
  433. class RPG::Map
  434.   #--------------------------------------------------------------------------
  435.   # ● 暦ウインドウ表示のマップか
  436.   #--------------------------------------------------------------------------
  437.   def bmsp_koyomisystem_display_koyomi_on_map?
  438.     return @bmsp_koyomi_display if @bmsp_koyomi_display
  439.     @bmsp_koyomi_display = !self.note.include?('==暦非表示==')
  440.   end
  441.   #--------------------------------------------------------------------------
  442.   # ● 色調固定
  443.   #--------------------------------------------------------------------------
  444.   def bmsp_koyomisystem_fix_tone
  445.     return @bmsp_fix_tone unless @bmsp_fix_tone.nil?
  446.     if self.note =~ /==色調固定\[([+-]?\d+),([+-]?\d+),([+-]?\d+),([+-]?\d+)\]==/
  447.       r,g,b,gray = $1.to_i,$2.to_i,$3.to_i,$4.to_i
  448.       @bmsp_fix_tone = Tone.new(r,g,b,gray)
  449.     else
  450.       @bmsp_fix_tone = false
  451.     end
  452.   end
  453.   #--------------------------------------------------------------------------
  454.   # ● 暦停止のマップか
  455.   #--------------------------------------------------------------------------
  456.   def bmsp_koyomisystem_koyomi_stop?
  457.     return @bmsp_koyomi_stop if @bmsp_koyomi_stop
  458.     @bmsp_koyomi_stop = self.note.include?('==暦停止==')
  459.   end
  460. end
  461. #==============================================================================
  462. # ■ Game_Koyomi
  463. #==============================================================================
  464. class Game_Koyomi
  465.   #============================================================================
  466.   # ■ Ranks
  467.   #============================================================================
  468.   module Ranks
  469.     #--------------------------------------------------------------------------
  470.     # ● モジュール変数
  471.     #--------------------------------------------------------------------------
  472.     @@ranks = BMSP::KoyomiSystem::RANKS
  473.     @@transform = BMSP::KoyomiSystem::TRANSFORM
  474.     #--------------------------------------------------------------------------
  475.     # ● ランクの取得
  476.     #--------------------------------------------------------------------------
  477.     def self.ranks
  478.       @@ranks
  479.     end
  480.     #--------------------------------------------------------------------------
  481.     # ● 表示変換
  482.     #--------------------------------------------------------------------------
  483.     def self.transform(label)
  484.       @@transform[label]
  485.     end
  486.     #--------------------------------------------------------------------------
  487.     # ● ランクの取得(順位指定)
  488.     #--------------------------------------------------------------------------
  489.     def self.rank(i)
  490.       r = @@ranks.to_a[i]
  491.       return nil if r.nil?
  492.       r.first
  493.     end
  494.     #--------------------------------------------------------------------------
  495.     # ● ノーマライズ
  496.     #--------------------------------------------------------------------------
  497.     def self.normalize(i, rank)
  498.       i - @@ranks[rank].min
  499.     end
  500.     #--------------------------------------------------------------------------
  501.     # ● 指定した範囲の値か
  502.     #--------------------------------------------------------------------------
  503.     def self.include_range?(rank, range, value)
  504.       rank_min = @@ranks[rank].min
  505.       rank_max = @@ranks[rank].max
  506.       range_min = range.min
  507.       range_max = range.max
  508.       unless range_min.nil? || range_max.nil? # 有効なRange
  509.         min = [[range_min, rank_min].max, rank_max].min
  510.         max = [[range_max, rank_min].max, rank_max].min
  511.         (min..max).include?(value)
  512.       else # 無効なRange
  513.         first = range.first
  514.         last = range.last
  515.         nf = [[first, rank_min].max, rank_max].min
  516.         nl = [[last, rank_min].max, rank_max].min
  517.         range1 = (nf..rank_max)
  518.         range2 = nl <= last && range.exclude_end? ? (rank_min...nl) : (rank_min..nl)
  519.         range1.include?(value) || range2.include?(value)
  520.       end
  521.     end
  522.     #--------------------------------------------------------------------------
  523.     # ● ランクを一つ進める
  524.     #--------------------------------------------------------------------------
  525.     def self.succ(rank)
  526.       find = false
  527.       @@ranks.each do |r,|
  528.         return r if find
  529.         find = true if r == rank
  530.       end
  531.       return nil
  532.     end
  533.   end
  534.   #============================================================================
  535.   #--------------------------------------------------------------------------
  536.   # ● 公開インスタンス変数
  537.   #--------------------------------------------------------------------------
  538.   attr_accessor :auto_tone # 画面の色調自動変更フラグ
  539.   attr_accessor :tone_temp_duration # 画面の色調時間一時変更フラグ
  540.   attr_accessor :move_temp_time_pass # 場所移動による時間経過一時変更フラグ
  541.   attr_accessor :battle_start_temp_time_pass # 戦闘開始による時間経過一時変更フラグ
  542.   attr_accessor :battle_end_temp_time_pass # 戦闘終了による時間経過一時変更フラグ
  543.   attr_accessor :auto_time_pass # 時間自動経過フラグ
  544.   attr_accessor :stop_auto_time_pass_on_event # イベント中時間自動経過停止フラグ
  545.   attr_accessor :stop_auto_time_pass_on_battle # バトル中時間自動経過停止フラグ
  546.   attr_reader :fix_tone_on_battle # バトル画面色調固定フラグ
  547.   attr_accessor :hide_map_window # 暦ウインドウ一時消去許可フラグ
  548.   #--------------------------------------------------------------------------
  549.   # ● ランクアクセサの定義
  550.   #--------------------------------------------------------------------------
  551.   Ranks.ranks.each_key do |rank|
  552.     reader = rank
  553.     writer = :"#{rank}="
  554.     define_method(reader){ @calendar[rank] }
  555.     define_method(writer){ |value| @calendar[rank] = value; fit; value }
  556.   end
  557.   #--------------------------------------------------------------------------
  558.   # ● 特別表現リーダーの定義
  559.   #--------------------------------------------------------------------------
  560.   BMSP::KoyomiSystem::SPECIAL_EXP.each do |special, exp|
  561.     define_method(special){ exp.call(self) }
  562.   end
  563.   #--------------------------------------------------------------------------
  564.   # ● オブジェクト初期化
  565.   #--------------------------------------------------------------------------
  566.   def initialize(init= {})
  567.     # 各種設定の初期化
  568.     @auto_tone = BMSP::KoyomiSystem::AUTO_TONE
  569.     @tone_temp_duration = 0
  570.     @default_tone = Tone.new(0,0,0,0)
  571.     @auto_time_pass = BMSP::KoyomiSystem::AUTO_TIME_PASS
  572.     @auto_time_pass_amount = {
  573.       :duration => BMSP::KoyomiSystem::AUTO_TIME_PASS_DURATION,
  574.       :amount => BMSP::KoyomiSystem::TIME_PASSING
  575.     }
  576.     @move_time_pass = BMSP::KoyomiSystem::MOVE_TIME_PASS
  577.     @battle_start_time_pass = BMSP::KoyomiSystem::BATTLE_START_TIME_PASS
  578.     @battle_end_time_pass = BMSP::KoyomiSystem::BATTLE_END_TIME_PASS
  579.     @stop_auto_time_pass_on_event = BMSP::KoyomiSystem::STOP_ON_EVENT
  580.     @stop_auto_time_pass_on_battle = BMSP::KoyomiSystem::STOP_ON_BATTLE
  581.     @fix_tone_on_battle = BMSP::KoyomiSystem::FIX_TONE_ON_BATTLE
  582.     @hide_map_window = BMSP::KoyomiSystem::HIDE_MAP_WINDOW
  583.     # 暦の初期化
  584.     set(init)
  585.   end
  586.   #--------------------------------------------------------------------------
  587.   # ● 範囲外の暦を修正
  588.   #--------------------------------------------------------------------------
  589.   def fit
  590.     carry = 0
  591.     @calendar.each_key do |rank|
  592.       @calendar[rank] += carry
  593.       value = @calendar[rank]
  594.       if Ranks.ranks[rank].include?(value)
  595.         carry = 0
  596.       else
  597.         n_value = Ranks.normalize(value, rank)
  598.         card = Ranks.ranks[rank].count
  599.         carry = n_value / card
  600.         @calendar[rank] = n_value % card + Ranks.ranks[rank].min
  601.       end
  602.     end
  603.     @int = calc_to_i
  604.   end
  605.   #--------------------------------------------------------------------------
  606.   # ● 暦のセット
  607.   #--------------------------------------------------------------------------
  608.   def set(init)
  609.     @calendar = {}
  610.     ini_h = init.is_a?(Hash) ? init : {}
  611.     Ranks.ranks.each_key do |rank|
  612.       @calendar[rank] =
  613.         ini_h[rank] ? ini_h[rank] : Ranks.ranks[rank].min
  614.     end
  615.     @calendar[Ranks.rank(0)] += init if init.is_a?(Integer)
  616.     fit
  617.   end
  618.   #--------------------------------------------------------------------------
  619.   # ● 時間自動経過の設定
  620.   #--------------------------------------------------------------------------
  621.   def set_auto_time_pass(passing)
  622.     @auto_time_pass_amount[:duration] = passing[:duration] if passing[:duration]
  623.     @auto_time_pass_amount[:amount] = passing[:amount] if passing[:amount]
  624.   end
  625.   #--------------------------------------------------------------------------
  626.   # ● フレーム更新
  627.   #--------------------------------------------------------------------------
  628.   def update(screen)
  629.     update_auto_time_pass
  630.     update_auto_tone(screen)
  631.   end
  632.   #--------------------------------------------------------------------------
  633.   # ● 時間経過
  634.   #--------------------------------------------------------------------------
  635.   def time_pass(amount)
  636.     amount.each do |rank, value|
  637.       next unless @calendar[rank]
  638.       @calendar[rank] += value
  639.     end
  640.     fit
  641.   end
  642.   #--------------------------------------------------------------------------
  643.   # ● イベント中判定
  644.   #--------------------------------------------------------------------------
  645.   def check_event_running?
  646.     if $game_party.in_battle
  647.       $game_troop.interpreter.running?
  648.     elsif !$BTEST
  649.       $game_map.interpreter.running?
  650.     end
  651.   end
  652.   #--------------------------------------------------------------------------
  653.   # ● 時間自動経過
  654.   #--------------------------------------------------------------------------
  655.   def update_auto_time_pass
  656.     return unless @auto_time_pass
  657.     return if @stop_auto_time_pass_on_event && check_event_running?
  658.     return if @stop_auto_time_pass_on_battle && $game_party.in_battle
  659.     return if !$BTEST && $game_map.map.bmsp_koyomisystem_koyomi_stop?
  660.     if @auto_time_pass_amount[:duration] > 0
  661.       return if Graphics.frame_count % @auto_time_pass_amount[:duration] != 0
  662.       time_pass(@auto_time_pass_amount[:amount])
  663.     end
  664.   end
  665.   #--------------------------------------------------------------------------
  666.   # ● 場所移動による時間経過
  667.   #--------------------------------------------------------------------------
  668.   def move_time_pass
  669.     unless @move_temp_time_pass
  670.       time_pass(@move_time_pass)
  671.     else
  672.       time_pass(@move_temp_time_pass)
  673.       @move_temp_time_pass = nil
  674.     end
  675.   end
  676.   #--------------------------------------------------------------------------
  677.   # ● 戦闘開始による時間経過
  678.   #--------------------------------------------------------------------------
  679.   def battle_start_time_pass
  680.     unless @battle_start_temp_time_pass
  681.       time_pass(@battle_start_time_pass)
  682.     else
  683.       time_pass(@battler_start_temp_time_pass)
  684.       @battle_start_temp_time_pass = nil
  685.     end
  686.   end
  687.   #--------------------------------------------------------------------------
  688.   # ● 戦闘終了による時間経過
  689.   #--------------------------------------------------------------------------
  690.   def battle_end_time_pass
  691.     unless @battle_end_temp_time_pass
  692.       time_pass(@battle_end_time_pass)
  693.     else
  694.       time_pass(@battler_end_temp_time_pass)
  695.       @battle_end_temp_time_pass = nil
  696.     end
  697.   end
  698.   #--------------------------------------------------------------------------
  699.   # ● 画面の色調自動変更
  700.   #--------------------------------------------------------------------------
  701.   def update_auto_tone(screen)
  702.     return if !@auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  703.     return if $game_party.in_battle && @fix_tone_on_battle
  704.     target_tone,duration = get_match_tone
  705.     return if target_tone.nil? || screen.tone_target == target_tone
  706.     # 変更時間の設定
  707.     duration = BMSP::KoyomiSystem::AUTO_TONE_DURATION if duration.nil?
  708.     duration = @tone_temp_duration ? @tone_temp_duration : duration
  709.     @tone_temp_duration = nil
  710.     # 色調変更
  711.     screen.start_tone_change(target_tone, duration)
  712.   end
  713.   #--------------------------------------------------------------------------
  714.   # ● 条件にマッチする色調の取得
  715.   #--------------------------------------------------------------------------
  716.   def get_match_tone
  717.     BMSP::KoyomiSystem::AUTO_TONE_COND.each do |cond, (tone,duration)|
  718.       next unless cond.each { |rank, range|
  719.         case range
  720.         when Range
  721.           break unless Ranks.include_range?(rank, range, @calendar[rank])
  722.         else # それ以外(整数指定)
  723.           break if @calendar[rank] != range
  724.         end
  725.       }
  726.       return tone,duration
  727.     end
  728.     @default_tone
  729.   end
  730.   #--------------------------------------------------------------------------
  731.   # ● 暦を一つ進める
  732.   #--------------------------------------------------------------------------
  733.   def succ
  734.     rank0 = Ranks.rank(0)
  735.     @calendar[rank0] += 1
  736.     fit
  737.   end
  738.   #--------------------------------------------------------------------------
  739.   # ● 文字列フォーマット
  740.   #--------------------------------------------------------------------------
  741.   def strftime(format)
  742.     format = format.dup
  743.     Ranks.ranks.each_key do |rank|
  744.       pattern = /<<(-?)(0?)(\d)#(#{rank.to_s})>>/
  745.       format.gsub!(pattern){
  746.         left,zero,digit,r = $1,$2,$3,$4
  747.         sprintf("%#{left + zero + digit}d", @calendar[rank])
  748.       }
  749.     end
  750.     format.gsub!(/<<(.+?)>>/){
  751.      trans =  Ranks.transform($1.to_sym)
  752.      trans.nil? ? "###" : trans.call(self)
  753.     }
  754.     format
  755.   end
  756.   #--------------------------------------------------------------------------
  757.   # ● オブジェクト複製
  758.   #--------------------------------------------------------------------------
  759.   def dup
  760.     Marshal.load(Marshal.dump self)
  761.   end
  762.   #--------------------------------------------------------------------------
  763.   # ● 起算時からのランク0からみた経過時間の計算
  764.   #--------------------------------------------------------------------------
  765.   def calc_to_i
  766.     @int = @calendar.each.reverse_each.inject(0) { |sum, (rank, value)|
  767.       sum * Ranks.ranks[rank].count + Ranks.normalize(value, rank)
  768.     }
  769.   end
  770.   #--------------------------------------------------------------------------
  771.   # ● 起算時からのランク0からみた経過時間の取得
  772.   #--------------------------------------------------------------------------
  773.   def to_i
  774.     @int
  775.   end
  776.   #--------------------------------------------------------------------------
  777.   # ● 比較演算子
  778.   #--------------------------------------------------------------------------
  779.   def ==(koyomi)
  780.     self.to_i == koyomi.to_i
  781.   end
  782.   def !=(koyomi)
  783.     self.to_i != koyomi.to_i
  784.   end
  785.   def <(koyomi)
  786.     self.to_i < koyomi.to_i
  787.   end
  788.   def <=(koyomi)
  789.     self.to_i <= koyomi.to_i
  790.   end
  791.   def >(koyomi)
  792.     self.to_i > koyomi.to_i
  793.   end
  794.   def >=(koyomi)
  795.     self.to_i >= koyomi.to_i
  796.   end
  797.   def <=>(koyomi)
  798.     self.to_i <=> koyomi.to_i
  799.   end
  800. end
  801. #==============================================================================
  802. # ■ DataManager
  803. #==============================================================================
  804. module DataManager
  805.   #--------------------------------------------------------------------------
  806.   # ● 各種ゲームオブジェクトの作成
  807.   #--------------------------------------------------------------------------
  808.   instance_eval{ alias bmsp_koyomisystem_create_game_objects create_game_objects }
  809.   def self.create_game_objects
  810.     bmsp_koyomisystem_create_game_objects
  811.     $game_koyomi = Game_Koyomi.new(BMSP::KoyomiSystem::INITIAL_CAL)
  812.   end
  813.   #--------------------------------------------------------------------------
  814.   # ● セーブ内容の作成
  815.   #--------------------------------------------------------------------------
  816.   instance_eval{ alias bmsp_koyomisystem_make_save_contents make_save_contents }
  817.   def self.make_save_contents
  818.     contents = bmsp_koyomisystem_make_save_contents
  819.     contents[:koyomi] = $game_koyomi
  820.     contents
  821.   end
  822.   #--------------------------------------------------------------------------
  823.   # ● セーブ内容の展開
  824.   #--------------------------------------------------------------------------
  825.   instance_eval{ alias bmsp_koyomisystem_extract_save_contents extract_save_contents }
  826.   def self.extract_save_contents(contents)
  827.     bmsp_koyomisystem_extract_save_contents(contents)
  828.     $game_koyomi = contents[:koyomi]
  829.   end
  830. end
  831. #==============================================================================
  832. # ■ Game_Map
  833. #==============================================================================
  834. class Game_Map
  835.   #--------------------------------------------------------------------------
  836.   # ● 公開インスタンス変数
  837.   #--------------------------------------------------------------------------
  838.   attr_reader :map # 現在のマップデータ
  839.   attr_accessor :koyomi_display             # 暦表示フラグ
  840.   #--------------------------------------------------------------------------
  841.   # ● オブジェクト初期化
  842.   #--------------------------------------------------------------------------
  843.   alias bmsp_koyomisytem_initialize initialize
  844.   def initialize
  845.     bmsp_koyomisytem_initialize
  846.     @koyomi_display = BMSP::KoyomiSystem::MAP_WINDOW
  847.   end
  848.   #--------------------------------------------------------------------------
  849.   # ● セットアップ
  850.   #--------------------------------------------------------------------------
  851.   alias bmsp_koyomisystem_setup setup
  852.   def setup(map_id)
  853.     bmsp_koyomisystem_setup(map_id)
  854.     # 色調固定処理
  855.     bmsp_koyomisystem_change_fix_tone
  856.   end
  857.   #--------------------------------------------------------------------------
  858.   # ● 色調固定マップの処理
  859.   #--------------------------------------------------------------------------
  860.   def bmsp_koyomisystem_change_fix_tone
  861.     tone = self.map.bmsp_koyomisystem_fix_tone
  862.     if tone # 色調固定
  863.       self.screen.start_tone_change(tone, 0)
  864.     else # それ以外
  865.       if $game_koyomi.auto_tone
  866.         tone,duration = $game_koyomi.get_match_tone
  867.         self.screen.start_tone_change(tone, 0)
  868.       else
  869.         self.screen.start_tone_change(Tone.new(0,0,0,0), 0)
  870.       end
  871.     end
  872.   end
  873.   #--------------------------------------------------------------------------
  874.   # ● 暦ウィンドウの一時消去
  875.   #--------------------------------------------------------------------------
  876.   def hide_koyomi_window=(hidden)
  877.     return unless SceneManager.scene_is?(Scene_Map)
  878.  
  879.     koyomi_window = SceneManager.scene.instance_eval{@bmsp_koyomi_window}
  880.     if $game_map.koyomi_display && !BMSP::KoyomiSystem::MAP_WINDOW_FADE
  881.       if $game_koyomi.hide_map_window
  882.         koyomi_window.hide_window if koyomi_window.hidden != hidden
  883.       end
  884.     end
  885.   end
  886. end
  887. #==============================================================================
  888. # ■ Scene_Menu
  889. #==============================================================================
  890. class Scene_Menu < Scene_MenuBase
  891.   #--------------------------------------------------------------------------
  892.   # ● 開始処理
  893.   #--------------------------------------------------------------------------
  894.   alias bmsp_koyomisystem_start start
  895.   def start
  896.     bmsp_koyomisystem_start
  897.     bmsp_koyomisystem_create_koyomi_window if BMSP::KoyomiSystem::MENU_WINDOW
  898.   end
  899.   #--------------------------------------------------------------------------
  900.   # ● 暦ウィンドウの作成
  901.   #--------------------------------------------------------------------------
  902.   def bmsp_koyomisystem_create_koyomi_window
  903.     @bmsp_koyomi_window = BMSP::KoyomiSystem::Window_MenuKoyomi.new
  904.     @bmsp_koyomi_window.x = 0
  905.     @bmsp_koyomi_window.y = Graphics.height - @gold_window.height - @bmsp_koyomi_window.height
  906.     if BMSP.check_script(:EXPDistribution, 1.00) && BMSP::EXPDistribution::EXP_WINDOW
  907.       @bmsp_koyomi_window.y -= @bmsp_koyomi_window.fitting_height(1)
  908.     end
  909.   end
  910. end
  911. #==============================================================================
  912. # ■ Scene_Map
  913. #==============================================================================
  914. class Scene_Map < Scene_Base
  915.   #--------------------------------------------------------------------------
  916.   # ● 全ウィンドウの作成
  917.   #--------------------------------------------------------------------------
  918.   alias bmsp_koyomisystem_create_all_windows create_all_windows
  919.   def create_all_windows
  920.     bmsp_koyomisystem_create_all_windows
  921.     bmsp_koyomisystem_create_koyomi_window
  922.   end
  923.   #--------------------------------------------------------------------------
  924.   # ● 暦ウィンドウの作成
  925.   #--------------------------------------------------------------------------
  926.   def bmsp_koyomisystem_create_koyomi_window
  927.     @bmsp_koyomi_window = BMSP::KoyomiSystem::Window_MapKoyomi.new
  928.   end
  929.   #--------------------------------------------------------------------------
  930.   # ● 場所移動前の処理
  931.   #--------------------------------------------------------------------------
  932.   alias bmsp_koyomisystem_pre_transfer pre_transfer
  933.   def pre_transfer
  934.     @bmsp_koyomi_window.close
  935.     bmsp_koyomisystem_pre_transfer
  936.     bmsp_koyomisystem_move_time_pass
  937.   end
  938.   #--------------------------------------------------------------------------
  939.   # ● 場所移動後の処理
  940.   #--------------------------------------------------------------------------
  941.   alias bmsp_koyomisystem_post_transfer post_transfer
  942.   def post_transfer
  943.     @bmsp_koyomi_window.open unless BMSP::KoyomiSystem::MAP_WINDOW_FADE
  944.     bmsp_koyomisystem_post_transfer
  945.     @bmsp_koyomi_window.open if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  946.   end
  947.   #--------------------------------------------------------------------------
  948.   # ● 場所移動による時間経過
  949.   #--------------------------------------------------------------------------
  950.   def bmsp_koyomisystem_move_time_pass
  951.     $game_koyomi.move_time_pass
  952.   end
  953. end
  954. #==============================================================================
  955. # ■ BMSP::KoyomiSystem::Window_MenuKoyomi
  956. #==============================================================================
  957. class BMSP::KoyomiSystem::Window_MenuKoyomi < Window_Base
  958.   #--------------------------------------------------------------------------
  959.   # ● オブジェクト初期化
  960.   #--------------------------------------------------------------------------
  961.   def initialize
  962.     line_number = BMSP::KoyomiSystem::MENU_WINDOW_FORMAT.size
  963.     super(0, 0, window_width, fitting_height(line_number))
  964.     @time = $game_koyomi.to_i
  965.     @formats = BMSP::KoyomiSystem::MENU_WINDOW_FORMAT
  966.     refresh
  967.   end
  968.   #--------------------------------------------------------------------------
  969.   # ● ウィンドウ幅の取得
  970.   #--------------------------------------------------------------------------
  971.   def window_width
  972.     return 160
  973.   end
  974.   #--------------------------------------------------------------------------
  975.   # ● フレーム更新
  976.   #--------------------------------------------------------------------------
  977.   def update
  978.     super
  979.     refresh if redraw?
  980.   end
  981.   #--------------------------------------------------------------------------
  982.   # ● 再描画するか
  983.   #--------------------------------------------------------------------------
  984.   def redraw?
  985.     if $game_koyomi.to_i != @time
  986.       @time = $game_koyomi.to_i
  987.       return true
  988.     end
  989.     false
  990.   end
  991.   #--------------------------------------------------------------------------
  992.   # ● リフレッシュ
  993.   #--------------------------------------------------------------------------
  994.   def refresh
  995.     contents.clear
  996.     draw_background(contents.rect)
  997.     rect = contents.rect
  998.     rect.height = line_height
  999.     rect.y = 0
  1000.     @formats.each do |format|
  1001.       draw_text(rect, $game_koyomi.strftime(format), 1)
  1002.       rect.y += line_height
  1003.     end
  1004.   end
  1005.   #--------------------------------------------------------------------------
  1006.   # ● 背景の描画
  1007.   #--------------------------------------------------------------------------
  1008.   def draw_background(rect)
  1009.   end
  1010. end
  1011. #==============================================================================
  1012. # ■ BMSP::KoyomiSystem::Window_MapKoyomi
  1013. #==============================================================================
  1014. class BMSP::KoyomiSystem::Window_MapKoyomi < BMSP::KoyomiSystem::Window_MenuKoyomi
  1015.   #--------------------------------------------------------------------------
  1016.   # ● 公開インスタンス変数
  1017.   #--------------------------------------------------------------------------
  1018.   attr_reader :hidden
  1019.   #--------------------------------------------------------------------------
  1020.   # ● オブジェクト初期化
  1021.   #--------------------------------------------------------------------------
  1022.   def initialize
  1023.     super
  1024.     line_number = BMSP::KoyomiSystem::MAP_WINDOW_FORMAT.size
  1025.     x= Graphics.width - window_width
  1026.     move(x, 0, window_width, fitting_height(line_number))
  1027.     self.opacity = 0
  1028.     if BMSP::KoyomiSystem::MAP_WINDOW_FADE || !$game_map.koyomi_display
  1029.       self.contents_opacity = 0
  1030.     end
  1031.     @show_count = BMSP::KoyomiSystem::MAP_WINDOW_FADE ? 0 : 1
  1032.     @time = $game_koyomi.to_i
  1033.     @formats = BMSP::KoyomiSystem::MAP_WINDOW_FORMAT
  1034.     @hidden = false
  1035.     open
  1036.   end
  1037.   #--------------------------------------------------------------------------
  1038.   # ● ウィンドウ幅の取得
  1039.   #--------------------------------------------------------------------------
  1040.   def window_width
  1041.     return 320
  1042.   end
  1043.   #--------------------------------------------------------------------------
  1044.   # ● フレーム更新
  1045.   #--------------------------------------------------------------------------
  1046.   def update
  1047.     super
  1048.     if @show_count > 0 && BMSP::KoyomiSystem::MAP_WINDOW_FADE
  1049.       if $game_map.koyomi_display || self.contents_opacity != 0
  1050.         update_fadein
  1051.         @show_count -= 1
  1052.       end
  1053.     elsif @show_count == 0
  1054.       update_fadeout
  1055.     elsif $game_map.koyomi_display && !BMSP::KoyomiSystem::MAP_WINDOW_FADE
  1056.       if $game_koyomi.hide_map_window
  1057.         hide_window if Input.trigger?(BMSP::KoyomiSystem::HIDE_KEY)
  1058.       else # 一時消去中にウインドウの消去が禁止になった場合は表示する
  1059.         hide_window if @hidden
  1060.       end
  1061.       if @show_count > 1
  1062.         @hidden ? update_fadeout : update_fadein
  1063.         @show_count -= 1
  1064.       end
  1065.     end
  1066.   end
  1067.   #--------------------------------------------------------------------------
  1068.   # ● フェードインの更新
  1069.   #--------------------------------------------------------------------------
  1070.   def update_fadein
  1071.     self.contents_opacity += 16
  1072.   end
  1073.   #--------------------------------------------------------------------------
  1074.   # ● フェードアウトの更新
  1075.   #--------------------------------------------------------------------------
  1076.   def update_fadeout
  1077.     self.contents_opacity -= 16
  1078.   end
  1079.   #--------------------------------------------------------------------------
  1080.   # ● ウインドウの一時消去切り替え
  1081.   #--------------------------------------------------------------------------
  1082.   def hide_window
  1083.     @hidden = !@hidden
  1084.     @show_count = 17
  1085.   end
  1086.   #--------------------------------------------------------------------------
  1087.   # ● ウィンドウを開く
  1088.   #--------------------------------------------------------------------------
  1089.   def open
  1090.     refresh
  1091.     if $game_map.map.bmsp_koyomisystem_display_koyomi_on_map?
  1092.       if !$game_map.koyomi_display
  1093.         @show_count = 0
  1094.         self.contents_opacity = 0
  1095.       elsif BMSP::KoyomiSystem::MAP_WINDOW_FADE
  1096.         @show_count = 150
  1097.         self.contents_opacity = 0
  1098.       else
  1099.         if @hidden # 一時消去中
  1100.           @show_count = 1
  1101.           self.contents_opacity = 0
  1102.         else
  1103.           @show_count = 1
  1104.           self.contents_opacity = 255
  1105.         end
  1106.       end
  1107.     else
  1108.       @show_count = 0
  1109.       self.contents_opacity = 0
  1110.     end
  1111.     self
  1112.   end
  1113.   #--------------------------------------------------------------------------
  1114.   # ● ウィンドウを閉じる
  1115.   #--------------------------------------------------------------------------
  1116.   def close
  1117.     @show_count = 0 if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  1118.     self
  1119.   end
  1120.   #--------------------------------------------------------------------------
  1121.   # ● 背景の描画
  1122.   #--------------------------------------------------------------------------
  1123.   def draw_background(rect)
  1124.     temp_rect = rect.clone
  1125.     temp_rect.width /= 2
  1126.     contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
  1127.     temp_rect.x = temp_rect.width
  1128.     contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  1129.   end
  1130.   #--------------------------------------------------------------------------
  1131.   # ● 背景色 1 の取得
  1132.   #--------------------------------------------------------------------------
  1133.   def back_color1
  1134.     Color.new(0, 0, 0, 192)
  1135.   end
  1136.   #--------------------------------------------------------------------------
  1137.   # ● 背景色 2 の取得
  1138.   #--------------------------------------------------------------------------
  1139.   def back_color2
  1140.     Color.new(0, 0, 0, 0)
  1141.   end
  1142. end
  1143. #==============================================================================
  1144. # ■ Game_Screen
  1145. #==============================================================================
  1146. class Game_Screen
  1147.   #--------------------------------------------------------------------------
  1148.   # ● 公開インスタンス変数
  1149.   #--------------------------------------------------------------------------
  1150.   attr_reader :tone_target
  1151.   #--------------------------------------------------------------------------
  1152.   # ● フレーム更新
  1153.   #--------------------------------------------------------------------------
  1154.   alias bmsp_koyomisystem_update update
  1155.   def update
  1156.     bmsp_koyomisystem_update
  1157.     bmsp_koyomisystem_update_koyomi
  1158.   end
  1159.   #--------------------------------------------------------------------------
  1160.   # ● 暦の更新
  1161.   #--------------------------------------------------------------------------
  1162.   def bmsp_koyomisystem_update_koyomi
  1163.     $game_koyomi.update(self)
  1164.   end
  1165. end
  1166. #==============================================================================
  1167. # ■ Game_Troop
  1168. #==============================================================================
  1169. class Game_Troop < Game_Unit
  1170.   #--------------------------------------------------------------------------
  1171.   # ● セットアップ
  1172.   #--------------------------------------------------------------------------
  1173.   def setup(troop_id)
  1174.     clear
  1175.     @troop_id = troop_id
  1176.     @enemies = []
  1177.     troop.members.each do |member|
  1178.       next unless $data_enemies[member.enemy_id]
  1179.       enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
  1180.       enemy.hide if member.hidden
  1181.       enemy.screen_x = member.x
  1182.       enemy.screen_y = member.y
  1183.       @enemies.push(enemy)
  1184.     end
  1185.     init_screen_tone
  1186.     make_unique_names
  1187.   end
  1188.   #--------------------------------------------------------------------------
  1189.   # ● 画面の色調を初期化
  1190.   #--------------------------------------------------------------------------
  1191.   alias bmsp_koyomisystem_init_screen_tone init_screen_tone
  1192.   def init_screen_tone
  1193.     bmsp_koyomisystem_init_screen_tone
  1194.     bmsp_koyomisystem_battle_start_time_pass
  1195.     bmsp_koyomisystem_fix_tone_on_battle
  1196.   end
  1197.   #--------------------------------------------------------------------------
  1198.   # ● 戦闘開始による時間経過
  1199.   #--------------------------------------------------------------------------
  1200.   def bmsp_koyomisystem_battle_start_time_pass
  1201.     $game_koyomi.battle_start_time_pass
  1202.     return if !@auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  1203.     tone,duration = $game_koyomi.get_match_tone
  1204.     $game_troop.screen.start_tone_change(tone, 0)
  1205.   end
  1206.   #--------------------------------------------------------------------------
  1207.   # ● バトル中の色調固定
  1208.   #--------------------------------------------------------------------------
  1209.   def bmsp_koyomisystem_fix_tone_on_battle
  1210.     return unless $game_koyomi.fix_tone_on_battle
  1211.     $game_troop.screen.start_tone_change(Tone.new(0,0,0,0), 0)
  1212.   end
  1213. end
  1214. #==============================================================================
  1215. # ■ Scene_Battle
  1216. #==============================================================================
  1217. class Scene_Battle < Scene_Base
  1218.   #--------------------------------------------------------------------------
  1219.   # ● 終了処理
  1220.   #--------------------------------------------------------------------------
  1221.   alias bmsp_koyomisystem_terminate terminate
  1222.   def terminate
  1223.     bmsp_koyomisystem_terminate
  1224.     bmsp_koyomisystem_battle_end_time_pass
  1225.   end
  1226.   #--------------------------------------------------------------------------
  1227.   # ● 戦闘終了による時間経過
  1228.   #--------------------------------------------------------------------------
  1229.   def bmsp_koyomisystem_battle_end_time_pass
  1230.     $game_koyomi.battle_end_time_pass
  1231.     return if !$game_koyomi.auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  1232.     tone,duration = $game_koyomi.get_match_tone
  1233.     $game_map.screen.start_tone_change(tone, 0)
  1234.   end
  1235. end

点评

899至910  发表于 2016-3-29 22:41
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 09:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表