238 lines
No EOL
9.5 KiB
Ruby
238 lines
No EOL
9.5 KiB
Ruby
#==============================================================================
|
|
# ■ Scene_Learn
|
|
#------------------------------------------------------------------------------
|
|
# 技習得画面の処理を行うクラスです。
|
|
#==============================================================================
|
|
|
|
class Scene_Learn < Scene_ItemBase
|
|
#--------------------------------------------------------------------------
|
|
# ● 開始処理
|
|
#--------------------------------------------------------------------------
|
|
def start
|
|
super
|
|
create_help_window
|
|
create_point_window
|
|
create_category_window
|
|
create_item_window
|
|
create_result_window
|
|
create_yesno_window
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● ヘルプウィンドウの作成
|
|
#--------------------------------------------------------------------------
|
|
def create_help_window
|
|
super
|
|
@help_window.y = Graphics.height - @help_window.height
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● カテゴリウィンドウの作成
|
|
#--------------------------------------------------------------------------
|
|
def create_category_window
|
|
@category_window = Window_LearnCategory.new
|
|
@category_window.viewport = @viewport
|
|
@category_window.help_window = @help_window
|
|
@category_window.y = @point_window.height
|
|
@category_window.set_handler(:learn, method(:on_category_ok))
|
|
@category_window.set_handler(:skillup, method(:on_category_ok))
|
|
@category_window.set_handler(:cancel, method(:return_scene))
|
|
@category_window.set_handler(:pagedown, method(:next_actor))
|
|
@category_window.set_handler(:pageup, method(:prev_actor))
|
|
@category_window.point_window = @point_window
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● アイテムウィンドウの作成
|
|
#--------------------------------------------------------------------------
|
|
def create_item_window
|
|
wx = 0
|
|
wy = @category_window.y + @category_window.height
|
|
ww = Graphics.width
|
|
wh = Graphics.height - wy - @help_window.height
|
|
@item_window = Window_SkillUpList.new(wx, wy, ww, wh)
|
|
@item_window.actor = @actor
|
|
@item_window.viewport = @viewport
|
|
@item_window.help_window = @help_window
|
|
@item_window.point_window = @point_window
|
|
@item_window.set_handler(:ok, method(:item_select))
|
|
@item_window.set_handler(:cancel, method(:return_category))
|
|
@item_window.set_handler(:hide_change, method(:hide_skill))
|
|
@category_window.item_window = @item_window
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● ポイントウィンドウの作成
|
|
#--------------------------------------------------------------------------
|
|
def create_point_window
|
|
wy = 0 #@help_window.height
|
|
@point_window = Window_LearnPoint.new(wy)
|
|
@point_window.actor = @actor
|
|
@point_window.viewport = @viewport
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● リザルトウィンドウの作成
|
|
#--------------------------------------------------------------------------
|
|
def create_result_window
|
|
@result_window = Window_LearnResult.new
|
|
@result_window.viewport = @viewport
|
|
@category_window.result_window = @result_window
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● はい、いいえウィンドウの作成
|
|
#--------------------------------------------------------------------------
|
|
def create_yesno_window
|
|
@yesno_window = Window_YesNoChoice.new
|
|
@yesno_window.viewport = @viewport
|
|
@yesno_window.y = @result_window.y + @result_window.height
|
|
@yesno_window.set_handler(:yes_select, method(:on_item_ok))
|
|
@yesno_window.set_handler(:no_select, method(:on_item_cancel))
|
|
@yesno_window.set_handler(:cancel, method(:on_item_cancel))
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● 現在選択されているアイテムの習得値取得
|
|
#--------------------------------------------------------------------------
|
|
def skill_ap
|
|
if @category_window.current_symbol == :learn
|
|
Learn.l_flag(item)[0]
|
|
else
|
|
return 0 if !item
|
|
base = Learn.lvup_point(item)[0]
|
|
plus = Learn.lvup_point(item)[1]
|
|
return base + plus * (@actor.skill_lv(item.id) - 1)
|
|
end
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● アイテム[選択]
|
|
#--------------------------------------------------------------------------
|
|
def item_select
|
|
@result_window.learn_skill = item
|
|
@result_window.point = skill_ap
|
|
@result_window.show
|
|
@yesno_window.show.activate
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● カテゴリ[決定]
|
|
#--------------------------------------------------------------------------
|
|
def on_category_ok
|
|
@item_window.activate
|
|
@item_window.select_last
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● カテゴリ[キャンセル]
|
|
#--------------------------------------------------------------------------
|
|
def return_category
|
|
@item_window.unselect
|
|
@point_window.set_item_point(0)
|
|
@category_window.activate
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● アイテム[決定]
|
|
#--------------------------------------------------------------------------
|
|
def on_item_ok
|
|
play_se_for_learn
|
|
@result_window.hide
|
|
@yesno_window.hide
|
|
@actor.ap -= skill_ap
|
|
@point_window.point = @actor.ap
|
|
if @category_window.current_symbol == :learn
|
|
@actor.learn_skill(item.id)
|
|
else
|
|
@actor.skill_lv_up(item.id, 1)
|
|
end
|
|
@item_window.refresh
|
|
@item_window.activate
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● アイテム[キャンセル]
|
|
#--------------------------------------------------------------------------
|
|
def on_item_cancel
|
|
Sound.play_cancel
|
|
@result_window.hide
|
|
@yesno_window.select(0)
|
|
@yesno_window.hide.deactivate
|
|
@item_window.refresh
|
|
@item_window.activate
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● アクターの切り替え
|
|
#--------------------------------------------------------------------------
|
|
def on_actor_change
|
|
@point_window.actor = @actor
|
|
@point_window.set_item_point(0)
|
|
@item_window.actor = @actor
|
|
@item_window.refresh
|
|
@category_window.activate
|
|
@category_window.index = 0
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● スキル表示の切り替え
|
|
#--------------------------------------------------------------------------
|
|
def hide_skill
|
|
@item_window.hide_change
|
|
@item_window.index = 0
|
|
#@item_window.refresh
|
|
#@item_window.activate
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● 技習得時の SE 演奏
|
|
#--------------------------------------------------------------------------
|
|
def play_se_for_learn
|
|
Sound.play_use_skill
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Window_MenuCommand
|
|
#------------------------------------------------------------------------------
|
|
# メニュー画面で表示するコマンドウィンドウです。
|
|
#==============================================================================
|
|
|
|
class Window_MenuCommand < Window_Command
|
|
#--------------------------------------------------------------------------
|
|
# ● コマンドリストの作成 ※再定義 並び替え削除
|
|
#--------------------------------------------------------------------------
|
|
def make_command_list
|
|
add_main_commands
|
|
#add_formation_command
|
|
add_original_commands
|
|
add_save_command
|
|
add_game_end_command
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● 主要コマンドをリストに追加 ※エイリアス
|
|
#--------------------------------------------------------------------------
|
|
alias learn_add_main_commands add_main_commands
|
|
def add_main_commands
|
|
learn_add_main_commands
|
|
add_command(Vocab::learn, :learn, main_commands_enabled)
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Scene_Menu
|
|
#------------------------------------------------------------------------------
|
|
# メニュー画面の処理を行うクラスです。
|
|
#==============================================================================
|
|
|
|
class Scene_Menu < Scene_MenuBase
|
|
#--------------------------------------------------------------------------
|
|
# ● コマンドウィンドウの作成 ※エイリアス
|
|
#--------------------------------------------------------------------------
|
|
alias learn_create_command_window create_command_window
|
|
def create_command_window
|
|
learn_create_command_window
|
|
@command_window.set_handler(:learn, method(:command_personal))
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● 個人コマンド[決定] ※再定義
|
|
#--------------------------------------------------------------------------
|
|
def on_personal_ok
|
|
case @command_window.current_symbol
|
|
when :skill
|
|
SceneManager.call(Scene_Skill)
|
|
when :equip
|
|
SceneManager.call(Scene_Equip)
|
|
when :status
|
|
SceneManager.call(Scene_Status)
|
|
when :learn
|
|
SceneManager.call(Scene_Learn)
|
|
end
|
|
end
|
|
end |