#============================================================================== # ■ VXAce-RGSS3-1 用語辞典[シーンクラス] by Claimh #------------------------------------------------------------------------------ # 用語辞典の表示状態を制御するシーンクラス。 # 各用語の未読から既読への表示更新もここで行う。 #============================================================================== class Scene_Dictionary < Scene_MenuBase #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize @category = -1 end #-------------------------------------------------------------------------- # ● 準備 #-------------------------------------------------------------------------- def prepare(category=-1) @category = category end #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- def start super create_category_window create_item_window create_info_window create_collect_window init_multi_design end #-------------------------------------------------------------------------- # ● カテゴリウィンドウの作成 #-------------------------------------------------------------------------- def create_category_window @ct_window = Window_DictMenu.new @ct_window.viewport = @viewport @ct_window.set_handler(:ok, method(:on_category_ok)) @ct_window.set_handler(:cancel, method(:return_scene)) end #-------------------------------------------------------------------------- # ● ワードウィンドウの作成 #-------------------------------------------------------------------------- def create_item_window @words_window = Window_Dictionary.new @words_window.viewport = @viewport @words_window.set_handler(:cancel, method(:on_word_cancel)) if Dictionary.d_info_visible # infoが常時表示なら @words_window.set_handler(:pageup, method(:on_info_pageup)) @words_window.set_handler(:pagedown, method(:on_info_pagedown)) else @words_window.set_handler(:ok, method(:on_word_ok)) end end #-------------------------------------------------------------------------- # ● インフォウィンドウの作成 #-------------------------------------------------------------------------- def create_info_window @info_window = Window_DictInfo.new @info_window.viewport = @viewport @info_window.set_handler(:ok, method(:on_info_cancel)) @info_window.set_handler(:cancel, method(:on_info_cancel)) @info_window.set_handler(:pageup, method(:on_info_pageup)) @info_window.set_handler(:pagedown, method(:on_info_pagedown)) @info_window.set_handler(:pageright, method(:on_info_right)) @info_window.set_handler(:pageleft, method(:on_info_left)) end #-------------------------------------------------------------------------- # ● 収集率ウィンドウの作成 #-------------------------------------------------------------------------- def create_collect_window @collect_window = Window_DictCollect.new(@category) @collect_window.viewport = @viewport end #-------------------------------------------------------------------------- # ● マルチデザインの初期設定 #-------------------------------------------------------------------------- def init_multi_design if Dictionary.d_category_visible @ct_window.activate @ct_window.help_window = @words_window if Dictionary.d_category_shorten @words_window.hide end else @ct_window.hide @words_window.activate @words_window.data_refresh(@category, true) @words_window.index = 0 end @words_window.help_window = @info_window end #-------------------------------------------------------------------------- # ● カテゴリ選択 #-------------------------------------------------------------------------- def on_category_ok @words_window.activate if Dictionary.d_category_shorten @ct_window.height = 48 @ct_top_row = @ct_window.top_row @ct_window.update_cursor @words_window.show end end #-------------------------------------------------------------------------- # ● word選択 #-------------------------------------------------------------------------- def on_word_ok if Dictionary.d_info_visible # infoが常時表示なら色更新のみ if @words_window.current_dict.show_flg and @words_window.current_dict.color != 0 @words_window.update_dict_color end @words_window.activate else show_info end end #-------------------------------------------------------------------------- # ● インフォ表示 #-------------------------------------------------------------------------- def show_info Sound.play_ok @words_window.update_dict_color @words_window.deactivate @info_window.activate @info_window.show unless Dictionary.d_info_visible end #-------------------------------------------------------------------------- # ● wordキャンセル #-------------------------------------------------------------------------- def on_word_cancel Sound.play_cancel if Dictionary.d_category_visible @ct_window.activate @words_window.deactivate if Dictionary.d_category_shorten @ct_window.height = Dictionary.d_category_rect(48).height @ct_window.top_row = @ct_top_row @ct_window.update_cursor @words_window.hide end else return_scene end @info_window.refresh(nil) end #-------------------------------------------------------------------------- # ● infoキャンセル #-------------------------------------------------------------------------- def on_info_cancel @info_window.deactivate @info_window.hide unless Dictionary.d_info_visible @words_window.activate end #-------------------------------------------------------------------------- # ● 情報 UP #-------------------------------------------------------------------------- def on_info_pageup @info_window.page_up end #-------------------------------------------------------------------------- # ● 情報 DOWN #-------------------------------------------------------------------------- def on_info_pagedown @info_window.page_dw end #-------------------------------------------------------------------------- # ● 次の情報へ #-------------------------------------------------------------------------- def on_info_right return if @words_window.index == (@words_window.item_max-1) org_main_index = @words_window.index loop do @words_window.index += 1 break if @words_window.current_dict.show_flg # 表示可能 if @words_window.index == (@words_window.item_max-1) @words_window.index = org_main_index return end end Sound.play_cursor @words_window.update_dict_color @info_window.refresh(@words_window.current_dict, 0) end #-------------------------------------------------------------------------- # ● 前の情報へ #-------------------------------------------------------------------------- def on_info_left return if @words_window.index == 0 org_main_index = @words_window.index loop do @words_window.index -= 1 break if @words_window.current_dict.show_flg # 表示可能 if @words_window.index == 0 @words_window.index = org_main_index return end end Sound.play_cursor @words_window.update_dict_color @info_window.refresh(@words_window.current_dict, 0) end end