#============================================================================== # ■ Class Game_System #------------------------------------------------------------------------------ # Script permettant la gestion du jour et de la nuit sur la map en surchargeant le script Game_System # # Version Date Auteur Commentaires # 1.00 18/03/2007 Tonyryu Création # 2.00 04/11/2008 Tonyryu Optimisation complète # 2.01 02/05/2010 Tonyryu Correction d'une erreur de syntaxe # # Attention : Ce script est ma propriété en tant que création et il est donc # soumis au droit de la propriété intellectuelle ( http://www.irpi.ccip.fr/ ). # En aucun cas, il ne doit être copié ou publié vers un autre forum sans en # avoir reçu mon accord au préalable. # #============================================================================== class Game_System attr_accessor :jn_actif #-------------------------------------------------------------------------- # ● initialize #-------------------------------------------------------------------------- alias jn_initialize initialize def initialize jn_initialize # Paramètres modifiables #---------------------------------------------------------------- # Opacité max apliqué la nuit sur le calque de nuit @opaciteMax = 200 # Définir les temps en seconde : jour, crépuscule, nuit, aube jn_definirTps(10,10,10,10) #---------------------------------------------------------------- @sprNuit = Sprite.new @sprNuit.opacity = 0 @sprNuit.z = 9999 @sprNuit.bitmap = Bitmap.new(640,480) # Dessiner le calque de nuit : rouge, vert, bleu (0-255) jn_dessiner(0,0,45) # Initialisation du décalage @jn_decalage = 0 # Desactiver le systeme @jn_actif = false end #-------------------------------------------------------------------------- # ● jn_update #-------------------------------------------------------------------------- def jn_update if @jn_actif # Calculer le nbre de seconde écoulé depuis le début de la journée # Calculer les frames totals d'une journée jn_frameTotal = @tpsJN * Graphics.frame_rate # Calculer la valeur des frames du jeux par modulo des frames totals de la journée jn_frameActuel = ( Graphics.frame_count + @jn_decalage) % jn_frameTotal # Si c'est la journée if jn_frameActuel < ( @tpsJour * Graphics.frame_rate) opacite = 0 @phase = 1 end # Si c'est le crépuscule if (jn_frameActuel >= ( @tpsJour * Graphics.frame_rate) ) and (jn_frameActuel < (( @tpsCrep + @tpsJour) * Graphics.frame_rate) ) # Calculer les frames facteurs et sur le moment du crépuscule frFacteur = jn_frameActuel - (@tpsJour * Graphics.frame_rate) frCrep = @tpsCrep * Graphics.frame_rate opacite = (@opaciteMax * frFacteur) / frCrep @phase = 2 end # Si c'est la nuit if (jn_frameActuel >= ((@tpsCrep + @tpsJour) * Graphics.frame_rate) ) and (jn_frameActuel < ((@tpsCrep + @tpsJour + @tpsNuit) * Graphics.frame_rate) ) opacite = @opaciteMax @phase = 3 end # Si c'est l'aube if jn_frameActuel >= ((@tpsCrep + @tpsJour + @tpsNuit) * Graphics.frame_rate) # Calculer les frames facteurs et sur le moment de l'aube frFacteur = jn_frameActuel - ((@tpsCrep + @tpsJour + @tpsNuit) * Graphics.frame_rate) frAube = @tpsAube * Graphics.frame_rate opacite = @opaciteMax - ((@opaciteMax * frFacteur) / frAube) @phase = 4 end else opacite = 0 end # Modifier l'opacité du calque de nuit @sprNuit.opacity = opacite end #-------------------------------------------------------------------------- # ● jn_dessiner # - pRouge : valeur de la couleur rouge (RVB) -150 par defaut # - pVert : valeur de la couleur verte (RVB) -150 par defaut # - pBleu : valeur de la couleur bleu (RVB) -100 par defaut #-------------------------------------------------------------------------- def jn_dessiner(pRouge = 0, pVert = 0, pBleu = 0) @sprNuit.bitmap.clear @sprNuit.bitmap.fill_rect(0, 0, 640, 480, Color.new(pRouge,pVert,pBleu)) end #-------------------------------------------------------------------------- # ● jn_definirTps # - pTpsJour : durée en seconde de la journée # - pTpsCrepuscule : durée en seconde du tombé de la nuit # - pTpsNuit : durée en seconde de la nuit # - pTpsAube : durée en seconde du levé du jour #-------------------------------------------------------------------------- def jn_definirTps(pTpsJour, pTpsCrepuscule, pTpsNuit, pTpsAube) # initialisations des temps de chaque partie de la journée avec les valeurs des paramètres @tpsJour = pTpsJour @tpsCrep = pTpsCrepuscule @tpsNuit = pTpsNuit @tpsAube = pTpsAube @tpsJN = @tpsCrep + @tpsNuit + @tpsAube + @tpsJour end #-------------------------------------------------------------------------- # ● jn_sortirMap #-------------------------------------------------------------------------- def jn_sortirMap @sprNuit.opacity = 0 end #-------------------------------------------------------------------------- # ● jn_entrerMap #-------------------------------------------------------------------------- def jn_entrerMap jn_update end #-------------------------------------------------------------------------- # ● jn_jour? # # Permet de vérifier si c'est actuellement le jour #-------------------------------------------------------------------------- def jn_jour? return @phase == 1 end #-------------------------------------------------------------------------- # ● jn_crepuscul? # # Permet de vérifier si c'est actuellement le crepuscul #-------------------------------------------------------------------------- def jn_crepuscul? return @phase == 2 end #-------------------------------------------------------------------------- # ● jn_nuit? # # Permet de vérifier si c'est actuellement le nuit #-------------------------------------------------------------------------- def jn_nuit? return @phase == 3 end #-------------------------------------------------------------------------- # ● jn_aube? # # Permet de vérifier si c'est actuellement l'aube #-------------------------------------------------------------------------- def jn_aube? return @phase == 4 end #-------------------------------------------------------------------------- # ● jn_dispose #-------------------------------------------------------------------------- def jn_dispose @sprNuit.bitmap.dispose @sprNuit.dispose end end #============================================================================== # ■ Class Scene_Map #------------------------------------------------------------------------------ # Surcharge de Scene_Map permettant la gestion du systeme jour/nuit sur les maps #============================================================================== class Scene_Map alias old_main main def main $game_system.jn_entrerMap old_main $game.jn_sortirMap end alias old_update update def update $game_system.jn_update old_update end end