Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # =============================================================================
- # TheoAllen - Animated Battleback
- # Version : 1.0b
- # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
- # (English Documentation)
- # =============================================================================
- ($imported ||= {})[:Theo_AnimBattleBack] = true
- # =============================================================================
- # Change Logs:
- # -----------------------------------------------------------------------------
- # 2014.07.15 - Fixed bug where you couldn't put unanimated battleback
- # 2013.10.28 - Finished script
- # =============================================================================
- =begin
- ------------------------------------------------------------------------
- Introduction :
- ------------------------------------------------------------------------
- Want some animated battleback? Well, this script may grant your wish. I hope
- so
- ------------------------------------------------------------------------
- How to use :
- ------------------------------------------------------------------------
- Put this script below material but above main.
- Create a folder inside folder Graphics. Name it "AnimBatleBack"
- Prepare the background image for battleback, name it with format
- "filename_01.png". Prepare the next frame image and name it with
- "filename_02.png". You may insert as many as you like. Remember to include
- frame number in the image filename. ("_02.png _03.png" etc ...)
- In order to use animated battleback in a certain map, use a notetag
- <anim bb: animaton_key> where "animation_key" is a "key" which located at
- configuration below. Remember, the notetag doesn't require quotes ("") to
- write. Just put <anim bb: your_key>
- ------------------------------------------------------------------------
- Terms of use :
- ------------------------------------------------------------------------
- Credit me, TheoAllen. You are free to edit this script by your own. As long
- as you don't claim it yours. For commercial purpose, don't forget to give me
- a free copy of the game.
- =end
- # =============================================================================
- # Configuration
- # =============================================================================
- module Theo
- module AnimBB
- # --------------------------------------------------------------------------
- # Animated Battleback Database
- # --------------------------------------------------------------------------
- # Manuals :
- #
- # Key --> A keyword that to be used in map notetag
- # Name --> Graphics file name (without "_01.png")
- # Frame --> Max frame for animation
- # Rate --> Refresh rate. The lower value, the faster animation will be
- # shown
- # --------------------------------------------------------------------------
- List = {
- # "Key" => ["Name" , Frame, Rate],
- "mansion" => ["mansion" , 8, 4],
- "dtown" => ["deserttown", 7, 10],
- # Add by yourself
- } # <-- Don't touch at all cost!
- end
- end
- # =============================================================================
- # End of Configuration
- # =============================================================================
- class << Cache
- def animbattleback(filename, index)
- file = filename + sprintf("_%02d", index)
- load_bitmap("Graphics/AnimBattleBack/", file)
- end
- end
- class Game_System
- attr_accessor :anim_bb
- alias theo_animbb_init initialize
- def initialize
- theo_animbb_init
- @anim_bb = ""
- end
- end
- class Game_Map
- alias theo_animbb_setup setup
- def setup(map_id)
- theo_animbb_setup(map_id)
- setup_animbb
- end
- def setup_animbb
- $game_system.anim_bb = ""
- @map.note.split(/[\r\n]+/).each do |line|
- if line =~ /<(?:anim bb|anim_bb):[ ]*(.+)>/i
- $game_system.anim_bb = $1.to_s
- end
- end
- end
- end
- class AnimBB < Sprite
- attr_reader :name
- attr_reader :index
- def initialize(viewport)
- super(viewport)
- init_member
- end
- def init_member
- @name = $game_system.anim_bb
- @count = 0
- @index = 1
- refresh_bitmap
- end
- def refresh_bitmap
- if name.empty?
- self.bitmap = Cache.empty_bitmap
- else
- self.bitmap = Cache.animbattleback(file, index)
- end
- end
- def file
- Theo::AnimBB::List[name][0]
- end
- def max_index
- Theo::AnimBB::List[name][1]
- end
- def rate
- Theo::AnimBB::List[name][2]
- end
- def need_refresh?
- @count % rate == 0 && !name.empty?
- end
- def change_index
- @index += 1
- if @index == max_index
- @index = 1
- end
- refresh_bitmap
- end
- def update
- super
- return if name.empty?
- @count += 1
- change_index if need_refresh?
- end
- end
- class Spriteset_Battle
- alias theo_animbb_create_viewports create_viewports
- def create_viewports
- theo_animbb_create_viewports
- create_animbb
- end
- def create_animbb
- @animbb = AnimBB.new(@viewport1)
- @animbb.z = 5
- center_sprite(@animbb)
- end
- alias theo_animbb_update update
- def update
- theo_animbb_update
- @animbb.update
- end
- alias theo_animbb_dispose dispose
- def dispose
- theo_animbb_dispose
- @animbb.dispose
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment