mirror of
https://github.com/bakustarver/rpgmakermlinux-cicpoffs.git
synced 2025-03-28 14:56:21 +01:00
110 lines
3.7 KiB
Ruby
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
|