All pastes #20517 Raw Edit

Untitled

public text v1 · immutable
#20517 ·published 2005-08-20 05:20 UTC
rendered paste body
#==============================================================================
# ■ Scene_Party
#------------------------------------------------------------------------------
# Minkoff's Party Switching System
#==============================================================================

class Scene_Party
  #--------------------------------------------------------------------------
  # ● Main
  #--------------------------------------------------------------------------
  def main
    s1 = "Add Member"
    s2 = "Del Member"
    s3 = "Cancel"
    @command_window = Window_Command.new(160, [s1, s2, s3])
    @command_window.back_opacity = 180
    @command_window.index = 0
    @party_window = Window_Party.new
    @party_window.back_opacity = 180
    @party_window.x = 0
    @party_window.y = 128
    @reserve_window = Window_Reserves.new
    @reserve_window.back_opacity = 180
    @reserve_window.x = 160
    @reserve_window.y = 0
    @spriteset = Spriteset_Map.new
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @command_window.dispose
    @party_window.dispose
    @reserve_window.dispose
    @spriteset.dispose
  end
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------
  def update
    @command_window.update
    @party_window.update
    @reserve_window.update
    @spriteset.update
    if @command_window.active
      update_command
      return
    end
    if @party_window.active
      update_party
      return
    end
    if @reserve_window.active
      update_reserve
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● Update Command Window
  #--------------------------------------------------------------------------
  def update_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @reserve_window.active = true
        @reserve_window.index = 0
      when 1
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @party_window.active = true
        @party_window.index = 0
      when 2
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● Update Party Window
  #--------------------------------------------------------------------------
  def update_party
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @party_window.active = false
      @party_window.index = -1
      return
    end
    if Input.trigger?(Input::C)
      if $game_party.actors.size == 1
        $game_system.se_play($data_system.buzzer_se)
      else
        $game_system.se_play($data_system.decision_se)
        $game_party.remove_actor($game_party.actors[@party_window.index].id)
        @reserve_window.refresh
        @party_window.refresh
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● Update Reserve Window
  #--------------------------------------------------------------------------
  def update_reserve
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @reserve_window.active = false
      @reserve_window.index = -1
      return
    end
    if Input.trigger?(Input::C)
      if $game_party.actors.size == 4
        $game_system.se_play($data_system.buzzer_se)
      else
        $game_system.se_play($data_system.decision_se)
        $game_party.add_actor(@reserve_window.reserves[@reserve_window.index].id)
        @reserve_window.refresh
        @party_window.refresh
      end
      return
    end
  end
end

#==============================================================================
# ■ Window_Party
#==============================================================================

class Window_Party < Window_Selectable
  #--------------------------------------------------------------------------
  # &#9679; Initialize
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 160, 352)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # &#9679; Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      x = 8
      y = i * 84
      actor = $game_party.actors[i]
      draw_actor_graphic(actor, x + 96, y + 56)
      draw_actor_name(actor, x, y)
      draw_actor_level(actor, x, y + 24)
    end
  end
  #--------------------------------------------------------------------------
  # &#9679; Update Cursor
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(0, @index * 84, 128, 64)
    end
  end
end

#==============================================================================
# &#9632; Window_Reserves
#==============================================================================

class Window_Reserves < Window_Selectable
  #--------------------------------------------------------------------------
  # &#9679; Make Reserves Readable
  #--------------------------------------------------------------------------
  attr_reader :reserves
  #--------------------------------------------------------------------------
  # &#9679; Initialize
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 480, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # &#9679; Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @reserves = []
    for i in 1...$game_actors.data.size
      @reserves.push($game_actors[i]) unless $game_party.actors.include?($game_actors[i])
    end
    @item_max = @reserves.size
    for i in 0...@reserves.size
      x = 64
      y = i * 116
      actor = @reserves[i]
      draw_actor_graphic(actor, x - 40, y + 80)
      draw_actor_name(actor, x, y)
      draw_actor_class(actor, x + 144, y)
      draw_actor_level(actor, x, y + 32)
      draw_actor_state(actor, x + 90, y + 32)
      draw_actor_exp(actor, x, y + 64)
      draw_actor_hp(actor, x + 236, y + 32)
      draw_actor_sp(actor, x + 236, y + 64)
    end
  end
  #--------------------------------------------------------------------------
  # &#9679; Update Cursor
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
    end
  end
end

#==============================================================================
# &#9632; Game_Actors
#==============================================================================

class Game_Actors
  #--------------------------------------------------------------------------
  # &#9679; Make Data Readable
  #--------------------------------------------------------------------------
  attr_reader :data
end