Advertisement
IceDragon200

ISS-SwapXT V0.9

May 13th, 2011
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 16.17 KB | None | 0 0
  1. #==============================================================================#
  2. # ** ISS - SwapXT ( Remixed )
  3. #==============================================================================#
  4. # ** Date Created  : 05/12/2011
  5. # ** Date Modified : 05/13/2011
  6. # ** Original By   : Marco Di Antonio (bulletxt@gmail.com) (BulletXt)
  7. # ** Rewritten By  : IceDragon
  8. # ** ID            : R01
  9. # ** Version       : 0.9
  10. #==============================================================================#
  11. # ============================================================================ #
  12. # // This is SwapXT script that must be put in your VX game script section. // #
  13. # // It's Plug&Play.                                                        // #
  14. # // Use SwapXT application to do swaps once you put this into your VX game.// #
  15. # ============================================================================ #
  16. # Currently, realtime swapping isn't supported sorry about that ,x,
  17. $imported = {} if $imported == nil
  18. $imported["ISS-SwapXT"] = true
  19. #==============================================================================#
  20. # ISS::SwapXT
  21. #==============================================================================#
  22. module ISS
  23.   module SwapXT
  24.     EVENT_SWAPPING_SWITCH_ID = nil
  25.   end
  26. #==============================================================================#
  27. # SwapXT::Game_SwapXT
  28. #==============================================================================#
  29.   class SwapXT::Game_SwapXT
  30.    
  31.   #--------------------------------------------------------------------------#
  32.   # * Constants
  33.   #--------------------------------------------------------------------------#    
  34.     RMVX_FEXTENSION      = ".rvdata"
  35.     SWAPXT_FEXTENSION    = ".stx"
  36.     SWAPXT_MAIN_PATH     = "swapxt/"
  37.     PROFILE_TILE_PATH    = "tiles/"
  38.     PROFILE_PASS_PATH    = "passages/"
  39.     DEF_TILE_PATH        = "Graphics/System/"
  40.     DEF_EXTRA_TILEFOLDER = "extra_tiles/"
  41.     DEF_PASSAGE_PATH     = "Graphics/System/"
  42.     DEF_EXTRA_PASSFOLDER = "extra_tiles/"
  43.     FILEEMPTY_STRING     = "empty::*::"
  44.     DEFAULT_TILES        = Array.new(9).map! { "" } # // I have no idea why I did this...
  45.     DEFAULT_TILES[0]     = "TileA1"
  46.     DEFAULT_TILES[1]     = "TileA2"
  47.     DEFAULT_TILES[2]     = "TileA3"
  48.     DEFAULT_TILES[3]     = "TileA4"
  49.     DEFAULT_TILES[4]     = "TileA5"
  50.     DEFAULT_TILES[5]     = "TileB"
  51.     DEFAULT_TILES[6]     = "TileC"
  52.     DEFAULT_TILES[7]     = "TileD"
  53.     DEFAULT_TILES[8]     = "TileE"
  54.    
  55.   #--------------------------------------------------------------------------#
  56.   # * Public Instance Variables
  57.   #--------------------------------------------------------------------------#  
  58.     attr_accessor :loaded_system
  59.     attr_accessor :swap_tiles
  60.    
  61.   #--------------------------------------------------------------------------#
  62.   # * method :initialize
  63.   #--------------------------------------------------------------------------#    
  64.     def initialize()
  65.       setup( -1 )
  66.     end
  67.    
  68.   #--------------------------------------------------------------------------#
  69.   # * method :setup
  70.   #--------------------------------------------------------------------------#    
  71.     def setup( map_id )
  72.       @swap_tiles       = Array.new(9).map! { FILEEMPTY_STRING }
  73.       @swap_passages    = FILEEMPTY_STRING # // System.rvdata name
  74.       @swap_realtime    = false
  75.       @swap_tile_profile= false
  76.       @swap_pass_profile= false
  77.       @map_id           = map_id
  78.       @loaded_system    = nil
  79.       load_tile_profile( @map_id )
  80.       load_passage_profile( @map_id )
  81.       load_system_data()
  82.     end  
  83.    
  84.   #--------------------------------------------------------------------------#
  85.   # * method :tile_bitmapname
  86.   #--------------------------------------------------------------------------#      
  87.     def tile_bitmapname( t, defal=false )
  88.       case t
  89.       when 0, :a1
  90.         return DEFAULT_TILES[0] if @swap_tiles[0] == FILEEMPTY_STRING or defal
  91.         return sprintf( "%s%s", DEF_EXTRA_TILEFOLDER, @swap_tiles[0] )  
  92.       when 1, :a2
  93.         return DEFAULT_TILES[1] if @swap_tiles[1] == FILEEMPTY_STRING or defal
  94.         return sprintf( "%s%s", DEF_EXTRA_TILEFOLDER, @swap_tiles[1] )  
  95.       when 2, :a3
  96.         return DEFAULT_TILES[2] if @swap_tiles[2] == FILEEMPTY_STRING or defal
  97.         return sprintf( "%s%s", DEF_EXTRA_TILEFOLDER, @swap_tiles[2] )  
  98.       when 3, :a4
  99.         return DEFAULT_TILES[3] if @swap_tiles[3] == FILEEMPTY_STRING or defal
  100.         return sprintf( "%s%s", DEF_EXTRA_TILEFOLDER, @swap_tiles[3] )  
  101.       when 4, :a5
  102.         return DEFAULT_TILES[4] if @swap_tiles[4] == FILEEMPTY_STRING or defal
  103.         return sprintf( "%s%s", DEF_EXTRA_TILEFOLDER, @swap_tiles[4] )  
  104.       when 5, :b
  105.         return DEFAULT_TILES[5] if @swap_tiles[5] == FILEEMPTY_STRING or defal
  106.         return sprintf( "%s%s", DEF_EXTRA_TILEFOLDER, @swap_tiles[5] )  
  107.       when 6, :c
  108.         return DEFAULT_TILES[6] if @swap_tiles[6] == FILEEMPTY_STRING or defal
  109.         return sprintf( "%s%s", DEF_EXTRA_TILEFOLDER, @swap_tiles[6] )  
  110.       when 7, :d  
  111.         return DEFAULT_TILES[7] if @swap_tiles[7] == FILEEMPTY_STRING or defal
  112.         return sprintf( "%s%s", DEF_EXTRA_TILEFOLDER, @swap_tiles[7] )  
  113.       when 8, :e
  114.         return DEFAULT_TILES[8] if @swap_tiles[8] == FILEEMPTY_STRING or defal
  115.         return sprintf( "%s%s", DEF_EXTRA_TILEFOLDER, @swap_tiles[8] )  
  116.       end  
  117.     end
  118.    
  119.   #--------------------------------------------------------------------------#
  120.   # * method :load_tile_profile
  121.   #--------------------------------------------------------------------------#    
  122.     def load_tile_profile( map_id )
  123.       ext = SWAPXT_FEXTENSION
  124.       pth = SWAPXT_MAIN_PATH
  125.       tpth= PROFILE_TILE_PATH
  126.       mid = map_id
  127.       nm = sprintf( "%s%s%s%s", pth, tpth, mid, ext )
  128.       if FileTest.exist?( nm )
  129.         @swap_tile_profile = true ; i = 0
  130.         File.read( nm ).split( "\n" ).each { |t|
  131.           @swap_tiles[i] = t ; i += 1
  132.         }  
  133.       end  
  134.     end
  135.    
  136.   #--------------------------------------------------------------------------#
  137.   # * method :load_passage_profile
  138.   #--------------------------------------------------------------------------#    
  139.     def load_passage_profile( map_id )
  140.       ext = SWAPXT_FEXTENSION
  141.       pth = SWAPXT_MAIN_PATH
  142.       ppth= PROFILE_PASS_PATH
  143.       mid = map_id
  144.       nm = sprintf( "%s%s%s%s", pth, ppth, mid, ext )
  145.       if FileTest.exist?( nm )
  146.         @swap_pass_profile = true
  147.         @swap_passages = ( File.read( nm ).split( "\n" ) )[0]
  148.       end
  149.     end
  150.    
  151.   #--------------------------------------------------------------------------#
  152.   # * method :load_system_data
  153.   #--------------------------------------------------------------------------#    
  154.     def load_system_data()
  155.       return if @swap_passages == FILEEMPTY_STRING
  156.       ext = RMVX_FEXTENSION
  157.       pth = DEF_PASSAGE_PATH    
  158.       ppth= DEF_EXTRA_PASSFOLDER
  159.       nm  = sprintf( "%s%s%s%s", pth, ppth, @swap_passages, ext)
  160.       if FileTest.exist?( nm )
  161.         @loaded_system = load_data( nm )
  162.       else
  163.         m = ISS::SwapXT::ErrorHandler::ERROR_MESSAGES["SystemDataDoesntExist"]
  164.         m = sprintf( m, @swap_passages + ext )
  165.         ::ISS::SwapXT::ErrorHandler.throw_error( m )
  166.         return
  167.       end  
  168.     end
  169.    
  170.   #--------------------------------------------------------------------------#
  171.   # * class method :startup_error_checking
  172.   #--------------------------------------------------------------------------#    
  173.     def self.startup_error_checking()
  174.       if ::ISS::SwapXT::ErrorHandler.tile_error?()
  175.         m = ISS::SwapXT::ErrorHandler::ERROR_MESSAGES["SwappedTileExists"]
  176.         ::ISS::SwapXT::ErrorHandler.throw_error( m )
  177.         return
  178.       end
  179.       if ::ISS::SwapXT::ErrorHandler.passage_error?()
  180.         m = ISS::SwapXT::ErrorHandler::ERROR_MESSAGES["SwappedPassageExists"]
  181.         ::ISS::SwapXT::ErrorHandler.throw_error( m )
  182.         return
  183.       end
  184.     end
  185.    
  186.   end # // SwapXT::Game_SwapXT
  187. #==============================================================================#
  188. # SwapXT::ErrorHandler
  189. #==============================================================================#  
  190.   class SwapXT::ErrorHandler
  191.    
  192.   #--------------------------------------------------------------------------#
  193.   # * Constants
  194.   #--------------------------------------------------------------------------#
  195.     EXTENSIONS = [".png"]
  196.     TILENAMES  = {
  197.       0 => "A1",
  198.       1 => "A2",
  199.       2 => "A3",
  200.       3 => "A4",
  201.       4 => "A5",
  202.       5 => "B",
  203.       6 => "C",
  204.       7 => "D",
  205.       8 => "E"
  206.     } # // Do Not Remove
  207.     SWAP_PREFILENAME      = "swapped_"
  208.     PASSAGE_WARN_FILENAME = "passage_warning"
  209.    
  210.     ERROR_HEADER   = "SwapXT Error Encountered:"
  211.     ERROR_MESSAGES = {
  212.     # // Swapped tiles exists message
  213.       "SwappedTileExists" => %Q(
  214.       #{ERROR_HEADER}
  215.       You are not allowed to start your game with swapped tilesets.
  216.       You must unload your tilesets with SwapXT application first.
  217.       Open SwapXT, click at top Tools->Restore all Tilesets
  218.       ),
  219.     # // Swapped passage exists message
  220.       "SwappedPassageExists" => %Q(
  221.       #{ERROR_HEADER}
  222.       You are not allowed to start your game with swapped passage settings.
  223.       You must unload your passage setting with SwapXT application first.
  224.       Open SwapXT, go on PassageSetting tab and click on Restore to Default.
  225.       ),
  226.       "SystemDataDoesntExist"=> %Q(
  227.       #{ERROR_HEADER}
  228.       Cannot load passage data
  229.       %s does not exist. Please check to ensure the file is spelt correctly,
  230.       or if the file exists.
  231.       )
  232.     }
  233.    
  234.   #--------------------------------------------------------------------------#
  235.   # * class method :tile_error?
  236.   #--------------------------------------------------------------------------#    
  237.     def self.tile_error?()
  238.       spf = SWAP_PREFILENAME
  239.       tln = TILENAMES
  240.       pth = ::ISS::SwapXT::Game_SwapXT::DEF_TILE_PATH
  241.       # ---------------------------------------------------------------------- #
  242.       tln.keys.each { |i|
  243.         EXTENSIONS.each { |ext|
  244.           nm = sprintf( "%s%s%s%s", pth, spf, tln[i], ext)
  245.           return true if FileTest.exist?( nm )
  246.         } # // EXTENSIONS
  247.       } # // TILENAMES.keys
  248.       # ---------------------------------------------------------------------- #
  249.       return false # // No problems
  250.     end
  251.    
  252.   #--------------------------------------------------------------------------#
  253.   # * class method :passage_error?
  254.   #--------------------------------------------------------------------------#    
  255.     def self.passage_error?()
  256.       pwf = PASSAGE_WARN_FILENAME
  257.       pth = ::ISS::SwapXT::Game_SwapXT::SWAPXT_MAIN_PATH
  258.       ext = ::ISS::SwapXT::Game_SwapXT::SWAPXT_FEXTENSION
  259.       # ---------------------------------------------------------------------- #
  260.       nm  = sprintf( "%s%s%s", pth, pwf, ext )
  261.       # ---------------------------------------------------------------------- #
  262.       return true if FileTest.exist?( nm )
  263.       # ---------------------------------------------------------------------- #
  264.       return false # // No problems
  265.     end
  266.    
  267.   #--------------------------------------------------------------------------#
  268.   # * class method :throw_warning
  269.   #--------------------------------------------------------------------------#    
  270.     def self.throw_warning( string ) ; p string end
  271.   #--------------------------------------------------------------------------#
  272.   # * class method :throw_error
  273.   #--------------------------------------------------------------------------#      
  274.     def self.throw_error( string ) ; print string ; exit end
  275.  
  276.   end # // SwapXT::ErrorHandler
  277.  
  278. end # // ISS
  279.  
  280. #==============================================================================#
  281. # Game_Map
  282. #==============================================================================#
  283. class Game_Map
  284.  
  285.   #--------------------------------------------------------------------------#
  286.   # * alias method :setup
  287.   #--------------------------------------------------------------------------#
  288.   alias iss_swapxt_gmp_setup setup unless $@
  289.   def setup( map_id )
  290.     iss_swapxt_gmp_setup( map_id )
  291.     $game_swapxt.setup( map_id )
  292.     unless $game_swapxt.loaded_system.nil?()
  293.       @passages = $game_swapxt.loaded_system.passages
  294.     end  
  295.   end
  296.  
  297. end
  298.  
  299. #==============================================================================#
  300. # Scene_Title
  301. #==============================================================================#
  302. class Sprite_Character < Sprite_Base
  303.  
  304.   #--------------------------------------------------------------------------#
  305.   # * overwrite method :tileset_bitmap
  306.   #--------------------------------------------------------------------------#
  307.   def tileset_bitmap( tile_id )
  308.     set_number = tile_id / 256
  309.     if ::ISS::SwapXT::EVENT_SWAPPING_SWITCH_ID.nil?() ; defal = false
  310.     else ; defal = $game_switches[::ISS::SwapXT::EVENT_SWAPPING_SWITCH_ID] ; end
  311.     btmpnm = $game_swapxt.tile_bitmapname( set_number+5, defal )
  312.     return Cache.system( btmpnm ) if set_number >= 0 && set_number <= 4
  313.     return nil
  314.   end  
  315.  
  316. end
  317.  
  318. #==============================================================================#
  319. # Spriteset_Map
  320. #==============================================================================#
  321. class Spriteset_Map
  322.  
  323.   #--------------------------------------------------------------------------#
  324.   # * alias method :create_tilemap
  325.   #--------------------------------------------------------------------------#  
  326.   alias iss_swapxt_spmp_create_tilemap create_tilemap unless $@
  327.   def create_tilemap()
  328.     iss_swapxt_spmp_create_tilemap()
  329.     set_tilemapBitmaps( @tilemap )
  330.   end
  331.  
  332.   #--------------------------------------------------------------------------#
  333.   # * new method :set_tilemapBitmaps
  334.   #--------------------------------------------------------------------------#  
  335.   def set_tilemapBitmaps( tilemap )
  336.     gsxt = $game_swapxt
  337.     9.times { |i|
  338.       tilemap.bitmaps[i] = Cache.system( gsxt.tile_bitmapname( i, false ) )
  339.     }
  340.   end
  341.  
  342. end
  343.  
  344. #==============================================================================#
  345. # Scene_Title
  346. #==============================================================================#
  347. class Scene_Title < Scene_Base
  348.  
  349.   #--------------------------------------------------------------------------#
  350.   # * alias method :start
  351.   #--------------------------------------------------------------------------#  
  352.   alias iss_swapxt_scnt_start start unless $@
  353.   def start()
  354.     iss_swapxt_scnt_start()
  355.     ::ISS::SwapXT::Game_SwapXT.startup_error_checking()
  356.   end
  357.  
  358.   #--------------------------------------------------------------------------#
  359.   # * alias method :create_game_objects
  360.   #--------------------------------------------------------------------------#    
  361.   alias iss_swapxt_scnt_create_game_objects create_game_objects unless $@
  362.   def create_game_objects()
  363.     iss_swapxt_scnt_create_game_objects()
  364.     $game_swapxt = ISS::SwapXT::Game_SwapXT.new()
  365.   end
  366.  
  367. end
  368.  
  369. #==============================================================================#
  370. # Scene_File
  371. #==============================================================================#
  372. class Scene_File < Scene_Base
  373.  
  374.   #--------------------------------------------------------------------------#
  375.   # * alias method :write_save_data
  376.   #--------------------------------------------------------------------------#
  377.   alias iss_swapxt_scnf_write_save_data write_save_data unless $@
  378.   def write_save_data( file )
  379.     iss_swapxt_scnf_write_save_data( file )
  380.     Marshal.dump( $game_swapxt,      file )
  381.   end  
  382.  
  383.   #--------------------------------------------------------------------------#
  384.   # * alias method :read_save_data
  385.   #--------------------------------------------------------------------------#
  386.   alias iss_swapxt_scnf_read_save_data read_save_data unless $@
  387.   def read_save_data( file )
  388.     iss_swapxt_scnf_read_save_data( file )
  389.     $game_swapxt    = Marshal.load( file )
  390.   end
  391.  
  392. end
  393.  
  394. #=*==========================================================================*=#
  395. # ** END OF FILE
  396. #=*==========================================================================*=#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement