Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # ** Pausing with F12
- #------------------------------------------------------------------------------
- # Zeriab
- # Version 1.1
- # 2009-05-25 (Year-Month-Day)
- #------------------------------------------------------------------------------
- # * Version History :
- #
- # Version 1.0 -------------------------------------------------- (2009-05-22)
- # - First release
- #
- # Version 1.1 -------------------------------------------------- (2009-05-25)
- # - The pause image now appears immediately when F12 is pressed.
- # - Transitions are cut short rather than restarted when F12 is pressed.
- #------------------------------------------------------------------------------
- # * Description :
- #
- # This script changes the functionality of pressing F12 during the game
- # from resetting the game to (un)pausing the game. A picture is displayed
- # while the game is paused. (Having a picture is optional)
- #------------------------------------------------------------------------------
- # * License :
- #
- # Copyright (C) 2009 Zeriab
- #
- # This software is provided 'as-is', without any express or implied warranty.
- # In no event will the authors be held liable for any damages arising from
- # the use of this software.
- # Permission is granted to anyone to use this software for any purpose,
- # including commercial applications, and to alter it and redistribute it
- # freely, subject to the following restrictions:
- # 1. The origin of this software must not be misrepresented; you must not
- # claim that you wrote the original software. If you use this software
- # in a product, an acknowledgment in the product documentation would
- # be appreciated but is not required.
- # 2. Altered source versions must be plainly marked as such, and must not
- # be misrepresented as being the original software.
- # 3. This notice may not be removed or altered from any source distribution.
- #------------------------------------------------------------------------------
- # * Compatibility :
- #
- # Is most likely not compatible with other F12 prevention scripts.
- #------------------------------------------------------------------------------
- # * Instructions :
- #
- # Place this script anywhere above main.
- # The image file 'pause' present in Graphics/Pictures is used.
- # Note: No picture is shown if there is no 'pause' in Graphics/Pictures.
- #==============================================================================
- #=============================================================================
- # ** Reset class (because it won't be defined until F12 is pressed otherwise)
- #=============================================================================
- class Reset < Exception
- end
- #=============================================================================
- # ** Module Graphics
- #=============================================================================
- module Graphics
- class << self
- #-------------------------------------------------------------------------
- # * Aliases Graphics.update and Graphics.transition
- #-------------------------------------------------------------------------
- unless self.method_defined?(:zeriab_f12_pause_update)
- alias_method(:zeriab_f12_pause_update, :update)
- alias_method(:zeriab_f12_pause_transition, :transition)
- end
- #-------------------------------------------------------------------------
- # Change the update method so F12 toggles pause
- #-------------------------------------------------------------------------
- def update(*args)
- # Try to update normally
- begin
- zeriab_f12_pause_update(*args)
- return
- rescue Reset
- # Do nothing
- end
- # F12 has been pressed
- done = false
- # Store frame count
- frame_count = Graphics.frame_count
- # Show pause image
- @sprite = Sprite.new
- @sprite.z = 9999
- begin
- @sprite.bitmap = RPG::Cache.picture('pause')
- rescue
- @sprite.bitmap = Bitmap.new(32,32)
- end
- # Keep trying to do the update
- while !done
- begin
- zeriab_f12_pause_update(*args)
- done = true
- rescue Reset
- # Do Nothing
- end
- end
- # F12 has been released, update until it is pressed again
- while done
- begin
- zeriab_f12_pause_update(*args)
- rescue Reset
- done = false
- end
- end
- # F12 has been pressed, keep trying to update
- while !done
- begin
- zeriab_f12_pause_update(*args)
- done = true
- rescue Reset
- # Do nothing
- end
- end
- # F12 has been released, dispose pause image
- @sprite.dispose
- # Set proper frame count
- Graphics.frame_count = frame_count
- end
- #-------------------------------------------------------------------------
- # Changes the transition so it is cut short if F12 is pressed
- #-------------------------------------------------------------------------
- def transition(*args)
- done = false
- # Keep trying to do the transition
- while !done
- begin
- zeriab_f12_pause_transition(*args)
- done = true
- rescue Reset
- # Set transition length to 0 frames.
- args[0] = 0
- end
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement