rpgmaker-linux/Kawariki-patches/ports/TH_SimpleAudioEncryption.rb
2024-11-27 19:54:06 +02:00

110 lines
3.7 KiB
Ruby

=begin
#===============================================================================
Title: Simple Audio Encryption MKXP-Z
Author: Taeyeon Mori
Date: Feb 23, 2022
Original Title: Simple Audio Encryption
Original Author: Hime
Original Date: Mar 22, 2014
Original URL: http://www.himeworks.com/2014/03/21/simple-audio-encryption/
--------------------------------------------------------------------------------
** Original Terms of Use
* Free to use in non-commercial projects
* Contact me for commercial use
* No real support. The script is provided as-is
* Will do bug fixes, but no compatibility patches
* Features may be requested but no guarantees, especially if it is non-trivial
* Credits to Hime Works in your project
* Preserve this header
#===============================================================================
=end
$imported = {} if $imported.nil?
$imported[:TH_SimpleAudioEncryption] = true
module TH
module Crypt
@@video_extensions = [".ogv"]
@@audio_extensions = ["", ".ogg", ".mp3", ".mid", ".wav"]
@@cache = {}
def self.find_real_path(path, exts)
# return unmodified if we can verify that it exists outside archive
return path if exts.any? {|ext| File.exist? (path + ext)}
exts.each do|ext|
# There is no way to check if a file exists in the archive from Ruby
# So we try to load it to a string and see if it fails.
# This is expensive so make sure to cache the result of this method
candidate = "Data/" + path + ext
begin
# MKXP-Z extension
load_data candidate, true
rescue
next
end
Preload.print "TH_SAE: Found #{path} at #{candidate}"
return candidate
end
# return nil if not found
return nil
end
def self.real_path(path, exts)
# Check cache
real_path = @@cache[path]
return real_path unless real_path.nil?
# Try to find
real_path = self.find_real_path path, exts
# Just fall back to the original path if not found
# Otherwise, we'll repeat the expensive lookup
# whenever this path comes up
real_path = path if real_path.nil?
# Save to cache
@@cache[path] = real_path
return real_path
end
def self.real_audio_path(path)
self.real_path path, @@audio_extensions
end
def self.real_video_path(path)
self.real_path path, @@video_extensions
end
end
end
module Audio
class << self
alias :th_simple_audio_decryption_bgm_play :bgm_play
alias :th_simple_audio_decryption_bgs_play :bgs_play
alias :th_simple_audio_decryption_me_play :me_play
alias :th_simple_audio_decryption_se_play :se_play
end
def self.bgm_play(name, *args)
th_simple_audio_decryption_bgm_play(TH::Crypt::real_audio_path(name), *args)
end
def self.bgs_play(name, *args)
th_simple_audio_decryption_bgs_play(TH::Crypt::real_audio_path(name), *args)
end
def self.me_play(name, *args)
th_simple_audio_decryption_me_play(TH::Crypt::real_audio_path(name), *args)
end
def self.se_play(name, *args)
th_simple_audio_decryption_se_play(TH::Crypt::real_audio_path(name), *args)
end
end
module Graphics
class << self
alias :th_simple_audio_encryption_play_movie :play_movie
end
def self.play_movie(name, *args)
th_simple_audio_encryption_play_movie(TH::Crypt::real_video_path(name), *args)
end
end