All pastes #20730 Raw Edit

Miscellany

public ruby v1 · immutable
#20730 ·published 2005-08-22 11:03 UTC
rendered paste body
#==============================================================================# &#9632; Scene_Party#------------------------------------------------------------------------------# Minkoff's Party Switching System#==============================================================================class Scene_Party  #--------------------------------------------------------------------------  # &#9679; Configuration  #--------------------------------------------------------------------------  def config    $game_actors[1].mandatory = true    $game_actors[3].available = true    $game_actors[4].available = true    $game_actors[5].available = true  end  #--------------------------------------------------------------------------  # &#9679; 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  #--------------------------------------------------------------------------  # &#9679; 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  #--------------------------------------------------------------------------  # &#9679; 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  #--------------------------------------------------------------------------  # &#9679; 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 or $game_party.actors[@party_window.index].mandatory        $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  #--------------------------------------------------------------------------  # &#9679; 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.current[@reserve_window.index].id)        @reserve_window.refresh        @party_window.refresh      end      return    end  endend#==============================================================================# &#9632; 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  endend#==============================================================================# &#9632; Window_Reserves#==============================================================================class Window_Reserves < Window_Selectable  #--------------------------------------------------------------------------  # &#9679; Make Reserves Readable  #--------------------------------------------------------------------------  attr_reader :current  #--------------------------------------------------------------------------  # &#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    @offset = 0    refresh    self.active = false    self.index = -1  end  #--------------------------------------------------------------------------  # &#9679; Update  #--------------------------------------------------------------------------  def update    super    return unless self.active    if Input.repeat?(Input::RIGHT) and @offset < @reserves.size - 4      $game_system.se_play($data_system.cursor_se)      @offset += 4      refresh    elsif Input.repeat?(Input::LEFT) and @offset > 0      $game_system.se_play($data_system.cursor_se)      @offset -= 4      refresh    end  end  #--------------------------------------------------------------------------  # &#9679; Refresh  #--------------------------------------------------------------------------  def refresh    self.contents.clear    @reserves = []    @current = []    for i in 1...$game_actors.data.size      if $game_actors[i].available and !$game_party.actors.include?($game_actors[i])        @reserves.push($game_actors[i])      end    end    for i in 0..3      @current.push(@reserves[i + @offset]) if @reserves[i + @offset]    end    @item_max = @current.size    for i in 0..@current.size      x = 64      y = i * 116      actor = @current[i]      if actor        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    @index = [@index, @item_max - 1].min  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  endend#==============================================================================# &#9632; Scene_Title#==============================================================================class Scene_Title  #--------------------------------------------------------------------------  # &#9679; New Game  #--------------------------------------------------------------------------  alias party_switching_command_new_game command_new_game  def command_new_game    party_switching_command_new_game    for i in 1...$game_actors.data.size      if $game_party.actors.include?($game_actors[i])        $game_actors[i].available = true      else        $game_actors[i].available = false      end      $game_actors[i].mandatory = false    end    Scene_Party.new.config  endend#==============================================================================# &#9632; Game_Actor#==============================================================================class Game_Actor  #--------------------------------------------------------------------------  # &#9679; Make Variables Accessible  #--------------------------------------------------------------------------  attr_accessor :available  attr_accessor :mandatoryend#==============================================================================# &#9632; Game_Actors#==============================================================================class Game_Actors  #--------------------------------------------------------------------------  # &#9679; Make Data Readable  #--------------------------------------------------------------------------  attr_reader :dataend