#============================================================================== # ■ VXAce-RGSS3-8-opt 熟練度画面 [Ver.1.0.0] by Claimh #------------------------------------------------------------------------------ # ・各属性の熟練度と属性有効度を表示する画面です。 #============================================================================== class Window_ElementStatus < Window_Selectable ELEMENTS=[] # 表示属性(1列目) ELEMENTS[0] = [SysUpdate::AX, SysUpdate::CRAW, SysUpdate::LANCE, SysUpdate::SWORD, SysUpdate::JSWORD, SysUpdate::ARROW, SysUpdate::KNIFE, SysUpdate::HAMMER, SysUpdate::KNIFE, SysUpdate::WAND, SysUpdate::GUN] # 表示属性(2列目) ELEMENTS[1] = [SysUpdate::FIRE, SysUpdate::ICE, SysUpdate::THUNDER, SysUpdate::WATER, SysUpdate::GROUND, SysUpdate::WIND, SysUpdate::LIGHT, SysUpdate::DARK] # 表示項目 # 0..属性有効度 1..現在EXP/次EXP 2..LvUPに必要なEXP DISPLAY = 0 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(actor) super(0, 0, Graphics.width, Graphics.height) @actor = actor refresh end #-------------------------------------------------------------------------- # ● 桁数の取得 #-------------------------------------------------------------------------- def col_max return 2 end #-------------------------------------------------------------------------- # ● アクターの設定 #-------------------------------------------------------------------------- def actor=(actor) return if @actor == actor @actor = actor refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_status(0) draw_horz_line(line_height) # ELEMENTS.each_index do |i| ELEMENTS[i].each_index do |j| draw_actor_attr(ELEMENTS[i][j], i * item_width, line_height * (j+2)) end end end #-------------------------------------------------------------------------- # ● アクター情報の描画 #-------------------------------------------------------------------------- def draw_actor_status(y) draw_actor_name(@actor, 4, y) draw_actor_class(@actor, 128, y) draw_actor_nickname(@actor, 288, y) end #-------------------------------------------------------------------------- # ● 熟練度 + 属性有効度 #-------------------------------------------------------------------------- def draw_actor_attr(attr_id, x, y) draw_attr_icon_lv(@actor, attr_id, x + 10, y) case DISPLAY when 0; draw_attr_rate(@actor, attr_id, x + 70, y) when 1; draw_attr_current_next(@actor, attr_id, x + 80, y) when 2; draw_attr_next(@actor, attr_id, x + 120, y) end end #-------------------------------------------------------------------------- # ● 水平線の描画 #-------------------------------------------------------------------------- def draw_horz_line(y) line_y = y + line_height / 2 - 1 contents.fill_rect(0, line_y, contents_width, 2, line_color) end #-------------------------------------------------------------------------- # ● 水平線の色を取得 #-------------------------------------------------------------------------- def line_color color = normal_color color.alpha = 48 color end end #============================================================================== # ■ Scene_ElementStatus #============================================================================== class Scene_ElementStatus < Scene_MenuBase #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- def start super @status_window = Window_ElementStatus.new(@actor) @status_window.set_handler(:cancel, method(:return_scene)) @status_window.set_handler(:pagedown, method(:next_actor)) @status_window.set_handler(:pageup, method(:prev_actor)) @status_window.activate end #-------------------------------------------------------------------------- # ● アクターの切り替え #-------------------------------------------------------------------------- def on_actor_change @status_window.actor = @actor @status_window.activate end end #============================================================================== # ■ Window_MenuCommand #============================================================================== class Window_MenuCommand < Window_Command #-------------------------------------------------------------------------- # ● 独自コマンドの追加用 #-------------------------------------------------------------------------- alias add_original_commands_dictionary add_original_commands def add_original_commands add_original_commands_dictionary add_command("熟練度", :attr_level, main_commands_enabled) end end #============================================================================== # ■ Scene_Menu #============================================================================== class Scene_Menu < Scene_MenuBase #-------------------------------------------------------------------------- # ● コマンドウィンドウの作成 #-------------------------------------------------------------------------- alias create_command_window_sysupdate create_command_window def create_command_window create_command_window_sysupdate @command_window.set_handler(:attr_level, method(:command_personal)) end #-------------------------------------------------------------------------- # ● 個人コマンド[決定] #-------------------------------------------------------------------------- alias on_personal_ok_sysupdate on_personal_ok def on_personal_ok if @command_window.current_symbol == :attr_level SceneManager.call(Scene_ElementStatus) end on_personal_ok_sysupdate end end