热度 48|
=begin
===============================================================================
LOGO By喵呜喵5
===============================================================================
【说明】
游戏开始时显示LOGO
LOGO的数量、淡入淡出时间、等待时间、显示LOGO时播放的SE都可以自由的设置
LOGO的图片素材放在 Graphics\System 目录下
=end
$m5script ||= {};$m5script[:M5Logo20141006] = 20141206
module M5Logo20141006
LIST = {
#==============================================================================
# 设定部分
#==============================================================================
# 设置格式:
# "文件名" => [淡入的速度,淡出的速度,LOGO等待的时间,是否允许跳过等待,播放的SE],
# LOGO文件名和SE文件名请用双引号括起来,
# 如果不允许跳过等待,最后一项请填入0
# 等待的时间如果为负数时将会永远等待下去直到玩家按确定键跳过等待
# 如果不需要播放SE的话,最后一项不填就好了
# 请不要忘记末尾的逗号
"LOGO1" => [10,10,-1,0,"Cat"],
"LOGO2" => [10,10,120,0],
} # 请不要删除本行
SKIP = false # false / true
# 这里设置为true时,在测试模式下开始游戏不会显示LOGO
#==============================================================================
# 设定结束
#==============================================================================
end
#--------------------------------------------------------------------------
# ● LOGO精灵的类
#--------------------------------------------------------------------------
class Sprite_Logo < Sprite
include M5Logo20141006
#--------------------------------------------------------------------------
# ● 载入
#--------------------------------------------------------------------------
def initialize
super(nil)
new_logo("")
end
#--------------------------------------------------------------------------
# ● 显示新的LOGO
#--------------------------------------------------------------------------
def new_logo(filename)
@logo_name = filename
self.bitmap = Cache.system(@logo_name)
self.opacity = 0
@open = true
end
#--------------------------------------------------------------------------
# ● 更新
#--------------------------------------------------------------------------
def update
super
update_open if self.opacity != 255 && @open
update_close if self.opacity != 0 && !@open
update_input if self.opacity == 255
self.bitmap.dispose if self.opacity == 0 && !@open
Graphics.update
Input.update
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
self.viewport.dispose if self.viewport
super
end
#--------------------------------------------------------------------------
# ● 等待LOGO显示结束
#--------------------------------------------------------------------------
def update_input
sename = LIST[@logo_name][4]
Audio.se_play("Audio/SE/#{sename}",80,100) if sename
wait = LIST[@logo_name][2].to_i
loop do
break if update_skip
break if wait== 0
wait -= 1
Input.update
Graphics.update
end
@open = false
end
#--------------------------------------------------------------------------
# ● 跳过等待
#--------------------------------------------------------------------------
def update_skip
false
end
#--------------------------------------------------------------------------
# ● LOGO淡入
#--------------------------------------------------------------------------
def update_open
self.opacity += open_speed.abs
end
#--------------------------------------------------------------------------
# ● LOGO淡出
#--------------------------------------------------------------------------
def update_close
self.opacity -= close_speed.abs
end
#--------------------------------------------------------------------------
# ● 淡入速度
#--------------------------------------------------------------------------
def open_speed
LIST[@logo_name][0].to_i
end
#--------------------------------------------------------------------------
# ● 淡出速度
#--------------------------------------------------------------------------
def close_speed
LIST[@logo_name][1].to_i
end
#--------------------------------------------------------------------------
# ● LOGO是否淡出完毕?
#--------------------------------------------------------------------------
def finish
return self.bitmap.disposed?
end
end
#--------------------------------------------------------------------------
# ● LOGO精灵的类(允许跳过等待)
#--------------------------------------------------------------------------
class Sprite_Logo2 < Sprite_Logo
#--------------------------------------------------------------------------
# ● 跳过等待
#--------------------------------------------------------------------------
def update_skip
return Input.trigger?(:C)
end
end
#--------------------------------------------------------------------------
# ● SceneManager - first_scene_class重定义
#--------------------------------------------------------------------------
class << SceneManager
alias m5_20140622_first_scene_class first_scene_class
def first_scene_class
return m5_20140622_first_scene_class if $BTEST
return m5_20140622_first_scene_class if $TEST && M5Logo20141006::SKIP
Scene_Logo
end
end
#--------------------------------------------------------------------------
# ● LOGO的场景
#--------------------------------------------------------------------------
class Scene_Logo < Scene_Base
include M5Logo20141006
#--------------------------------------------------------------------------
# ● 载入LOGO精灵
#--------------------------------------------------------------------------
def start
super
@logo = Sprite_Logo.new
@logo2 = Sprite_Logo2.new
end
#--------------------------------------------------------------------------
# ● 更新
#--------------------------------------------------------------------------
def update
super
LIST.each do |filename,setting|
if setting[3] == 0 && setting[2] > 0
update_logo1(filename)
else
update_logo2(filename)
end
end
SceneManager.call(SceneManager.m5_20140622_first_scene_class)
end
#--------------------------------------------------------------------------
# ● 更新无法跳过等待的LOGO
#--------------------------------------------------------------------------
def update_logo1(logoname)
@logo.new_logo(logoname)
@logo.update until @logo.finish
end
#--------------------------------------------------------------------------
# ● 更新允许跳过等待的LOGO
#--------------------------------------------------------------------------
def update_logo2(logoname)
@logo2.new_logo(logoname)
@logo2.update until @logo2.finish
end
#--------------------------------------------------------------------------
# ● 结束处理
#--------------------------------------------------------------------------
def terminate
super
@logo.dispose
@logo2.dispose
end
end
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-4-28 08:40
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.