Initial import
This commit is contained in:
113
Scripts/RPG/Game_Followers.rb
Normal file
113
Scripts/RPG/Game_Followers.rb
Normal file
@@ -0,0 +1,113 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#==============================================================================
|
||||
# ** Game_Followers
|
||||
#------------------------------------------------------------------------------
|
||||
# This is a wrapper for a follower array. This class is used internally for
|
||||
# the Game_Player class.
|
||||
#==============================================================================
|
||||
|
||||
class Game_Followers
|
||||
#--------------------------------------------------------------------------
|
||||
# * Public Instance Variables
|
||||
#--------------------------------------------------------------------------
|
||||
attr_accessor :visible # Player Followers ON?
|
||||
#--------------------------------------------------------------------------
|
||||
# * Object Initialization
|
||||
# leader: Lead character
|
||||
#--------------------------------------------------------------------------
|
||||
def initialize(leader)
|
||||
@visible = $data_system.opt_followers
|
||||
@gathering = false # Gathering processing underway flag
|
||||
@data = []
|
||||
@data.push(Game_Follower.new(1, leader))
|
||||
(2...$game_party.max_battle_members).each do |index|
|
||||
@data.push(Game_Follower.new(index, @data[-1]))
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Followers
|
||||
#--------------------------------------------------------------------------
|
||||
def [](index)
|
||||
@data[index]
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Iterator
|
||||
#--------------------------------------------------------------------------
|
||||
def each
|
||||
@data.each {|follower| yield follower } if block_given?
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Iterator (Reverse)
|
||||
#--------------------------------------------------------------------------
|
||||
def reverse_each
|
||||
@data.reverse.each {|follower| yield follower } if block_given?
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Refresh
|
||||
#--------------------------------------------------------------------------
|
||||
def refresh
|
||||
each {|follower| follower.refresh }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Frame Update
|
||||
#--------------------------------------------------------------------------
|
||||
def update
|
||||
if gathering?
|
||||
move unless moving? || moving?
|
||||
@gathering = false if gather?
|
||||
end
|
||||
each {|follower| follower.update }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Movement
|
||||
#--------------------------------------------------------------------------
|
||||
def move
|
||||
reverse_each {|follower| follower.chase_preceding_character }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Synchronize
|
||||
#--------------------------------------------------------------------------
|
||||
def synchronize(x, y, d)
|
||||
each do |follower|
|
||||
follower.moveto(x, y)
|
||||
follower.set_direction(d)
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Gather
|
||||
#--------------------------------------------------------------------------
|
||||
def gather
|
||||
@gathering = true
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Determine if Gathering
|
||||
#--------------------------------------------------------------------------
|
||||
def gathering?
|
||||
@gathering
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Array of Displayed Followers
|
||||
# "folloers" is typo, but retained because of the compatibility.
|
||||
#--------------------------------------------------------------------------
|
||||
def visible_folloers
|
||||
@data.select {|follower| follower.visible? }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Determine if Moving
|
||||
#--------------------------------------------------------------------------
|
||||
def moving?
|
||||
visible_folloers.any? {|follower| follower.moving? }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Determine if Gathered
|
||||
#--------------------------------------------------------------------------
|
||||
def gather?
|
||||
visible_folloers.all? {|follower| follower.gather? }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Detect Collision
|
||||
#--------------------------------------------------------------------------
|
||||
def collide?(x, y)
|
||||
visible_folloers.any? {|follower| follower.pos?(x, y) }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user