#==============================================================================
# OUTILS
# Multi Fog 1.1
#--------------------
# Stephane, Roys
# Mai 2007
# Multi Fog
# Ajoute plusieur fog a l'ecran
# Instructions :
# - Ajouter un event et le nommer Fog
# - Ajouter en commentaire
# Inserer commentaire: Fichier Nom_du_fichier_de_fog
# Inserer commentaire: Opacite 0.255 (opacité du fog)
# Inserer commentaire: zpriorite hauteur_du_fog
# Inserer commentaire: Deplacement ox oy
# ou ox=decalage_sur_les_x à chaque frame et oy decalage_sur_les_y à chaque frame
# Inserer commentaire: transparence 0=Normal 1=Eclaircie 2=Obscurcie
# Inserer commentaire: pause nombre_de_frame (avant d'appliquer les décalages ox et oy)
#==============================================================================
#==============================================================================
# GAME MAP
#==============================================================================
class Game_Map
alias tools_multifog_game_map_setup setup
#----------------------------------------------------------------------------
attr_accessor :fogs
#----------------------------------------------------------------------------
# CONSTANTE
IDENTIFIANT_FOG = "FOG" # Nom de l'event pour detecter l'objet
#----------------------------------------------------------------------------
# SETUP
#----------------------------------------------------------------------------
def setup(map_id)
tools_multifog_game_map_setup(map_id)
# Tableau des nouveaux fogs
@fogs=[]
#---------------------------
# Analyse les events pour detecter si l'objet est ajouté
for event in @events.values
creer_fog(event) if event.name.upcase == IDENTIFIANT_FOG
end
end
#----------------------------------------------------------------------------
# CREER FOG
# Ajoute un fog à la partie dans $game_map.fogs
#----------------------------------------------------------------------------
def creer_fog(event)
# Recupère les commentaires de l'event
list=event.list
file=nil
opacite = 255
zpriorite=3000
ox=0
oy=0
transparence=0
pause=0
# Parcours les options de l'event
for ligne in list
next if ligne.code != 108 # ok si c'est un commentaire
case ligne.parameters[0].split[0].upcase
# Fichier du fog
when "FICHIER"
file=ligne.parameters[0].split[1]
when "OPACITE"
# Opacité
opacite=ligne.parameters[0].split[1].to_i
when "ZPRIORITE"
# Hauteur z
zpriorite=ligne.parameters[0].split[1].to_i
when "DEPLACEMENT"
# ox et oy
ox= ligne.parameters[0].split[1].to_i
oy= ligne.parameters[0].split[2].to_i
when "TRANSPARENCE"
transparence=ligne.parameters[0].split[1].to_i
when "PAUSE"
pause=ligne.parameters[0].split[1].to_i
end
end
return if file==nil
new_fog=Game_Event_Fog.new(file,opacite,zpriorite,ox,oy,transparence,pause)
@events.delete(event)
end
end
#==============================================================================
# GAME EVENT FOG
#==============================================================================
class Game_Event_Fog
#----------------------------------------------------------------------------
attr_accessor:file
attr_accessor:opacite
attr_accessor:zpriorite
attr_accessor:ox
attr_accessor:oy
attr_accessor:transparence
attr_accessor:lumineux
attr_accessor:pause
def initialize(file,opacite,zpriorite,ox,oy,transparence,pause)
@file=file
@opacite=opacite
@zpriorite=zpriorite
@ox=ox
@oy=oy
@transparence=transparence
@pause=pause
#---------------------------
$game_map.fogs.push(self)
end
end
#==============================================================================
# SPRITESET MAP
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
alias tools_multifog_spriteset_map_initialize initialize
alias tools_multifog_spriteset_map_dispose dispose
alias tools_multifog_spriteset_map_update update
#--------------------------------------------------------------------------
# MAIN INITIALIZE
#--------------------------------------------------------------------------
def initialize
@fogs_sprites=[]
tools_multifog_spriteset_map_initialize
for fog in $game_map.fogs
plane=Plane.new(@viewport1)
plane.bitmap = RPG::Cache.fog(fog.file, 0)
plane.opacity= fog.opacite
plane.z=fog.zpriorite
plane.ox=fog.ox
plane.oy=fog.oy
plane.blend_type =fog.transparence
@fogs_sprites.push(plane)
end
end
#--------------------------------------------------------------------------
# DISPOSE
#--------------------------------------------------------------------------
def dispose
tools_multifog_spriteset_map_dispose
for fog in @fogs_sprites
fog.dispose
end
end
#--------------------------------------------------------------------------
# UPDATE
#--------------------------------------------------------------------------
def update
tools_multifog_spriteset_map_update
for i in
0..@fogs_sprites.size-1
fog=$game_map.fogs[i]
plane=@fogs_sprites[i]
plane.ox = $game_map.display_x / 4
plane.oy = $game_map.display_y / 4
plane.tone=$game_temps.tone(true) if fog.lumineux
if fog.pause==0
plane.ox+=fog.ox*Graphics.frame_count
plane.oy+=fog.oy*Graphics.frame_count
else
plane.ox+=fog.ox*Graphics.frame_count/fog.pause
plane.oy+=fog.oy*Graphics.frame_count/fog.pause
end
end
end
end
#======================================
# MAIN
# Game Event
# Méthode pour gerer les events des pnjs et le nom de l'event
#======================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
def name
return @event.name
end
#--------------------------------------------------------------------------
def id
return @id
end
end