Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

#===============================================================================

# By trebor777
# Date: 26/10/2008
# Version 1.5 - Updated 27/10/2008
#------------------------------------------------------------------------------# RMVX Avi Player
#
# Instructions:
# Video Specification ( to ensure good playability )
# Recommended encoding: Xvid + MP3 CBR (very important to keep a constant
# bit rate for the audio, else it won't play it)
# Video Resolution : Up to 640*480
# Save the videos into a new folder called Movies in your project root folder.
#
# Call in an event(using the call script command) or in your script:
#
# Movie.play("myvideo",width,height)
# Movie.play("myvideo")
#
# By providing the dimensions of your video, if smaller than 640*480, the script
# will stretch it in the window(or in the screen if in fullscreen), to fit a
# width of 640px, but keeping the original aspect ratio.
#
# Don't need to provide the dimensions if the video is 640*480.
#===============================================================================
module Movie
attr_accessor :fps
def self.play(movie, width=Graphics.width, height=Graphics.height)
movie= "./Movies/#{movie}.avi"
fps = 24
readini= Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p
), 'l'
wnd= Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
@mplayer= Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V')
@detector = Win32API.new('user32','GetSystemMetrics','%w(l)','L')
timer= 1.0/fps
info= " " * 255
game_name= "\0" * 256
readini.call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
hwnd= wnd.call(0,0,nil,game_name).to_s
@mplayer.call("open #{movie} alias FILM style child parent #{hwnd}",0,0,0)
@mplayer.call("status FILM length",info,255,0)
movie_lenght = info.unpack("a*")[0].gsub!("\000","").to_i
@ratio = height.to_f/width
@width = 0
self.update_stretch
@mplayer.call("play FILM window",info,255,0)
loop do
sleep(timer)
Input.update
update_stretch
@mplayer.call("status FILM mode",info,255,0)
break if Input.repeat?(Input::B) or info.unpack("aaaa")=="stop".split(//)
end
@mplayer.call("close FILM",0,0,0)
Input.update
end
def self.update_stretch
n_w = @detector.call(0)

if @width != n_w
@width = n_w
w = (n_w == 640)? 640 : Graphics.width
h = (n_w == 640)? 480 : Graphics.height
new_height = (w*@ratio).round
@mplayer.call("put FILM window at 0 #{(h-new_height)/2} #{w} #{new_height}
",0,0,0)
end
end
end

You might also like