# 这里设置几种时间段 用于某房间或者商店何时可以进入
def self.kind_of_time(kind)
case kind
when 1 #时间段1 上午8点到晚上8点
if @@time >= 8*60 and @@time < 20*60
return true
end
when 2 #时间段2 中午12点到晚上6点
if @@time >= 12*60 and @@time < 18*60
return true
end
when 3 #时间段3 晚上六点到晚上12点
if @@time >= 18*60 and @@time < 24*60
return true
end
when 4#时间段4 (酒吧分2个间段 0:00-6.00 , 20:00-24:00)
if @@time >= 0*60 and @@time < 6*60
return true
end
if @@time >= 20*60 and @@time < 24*60
return true
end
end
end
def self.start
$game_system.time_window_need_refresh = true
self.time
self.change
end
def self.init_set_text
@@time = (@@time - MAX) if @@time >= MAX
hour = @@time / 60
min = @@time % 60
@@text = sprintf("%02d:%02d", hour, min)
end
def self.time=(time)
@@time = time * 60
hour = @@time / 60
min = @@time % 60
@@text = sprintf("%02d:%02d", hour, min)
$game_system.time_window_need_refresh = true
end
def self.time
case @@time_world
when 1
time = HOUSE_TIME[$game_map.map_id]
when 2
time = HOUSE_TIME2[$game_map.map_id]
end
@@time += (time.to_i * @@time_speed) unless self.stop!
@@time = (@@time - MAX) if @@time >= MAX
hour = @@time / 60
min = @@time % 60
text = sprintf("%02d:%02d", hour, min)
case hour
when 6..15 # 白天
@@kind = 0
when 16..20 # 黄昏
@@kind = 1
when 21..23 #夜晚
@@kind = 2
when 0..5 #夜晚
@@kind = 3
end
@@text = text
$game_system.time_window_need_refresh = true
end
def self.set_text
return @@text
end
def self.set_time
return @@time
end
def self.change #改变天气(色相)
case @@kind
when 0
$game_screen.start_tone_change(DAY,0)
when 1
$game_screen.start_tone_change(DUSK,0)
when 2
$game_screen.start_tone_change(EVE,0)
when 3
$game_screen.start_tone_change(EVE,0)
end
if HOUSE.include?($game_map.map_id)
$game_screen.start_tone_change(DAY,0)
end
end
def self.start_trace
Kernel.trace_var :$game_temp.player_transferring,@@proc
end
def self.stop_trace
Kernel.trace_var(:$game_temp.player_transferring,nil)
end
class Scene_Map
#--------------------------------------------------------------------------
# ● 主角的场所移动
#--------------------------------------------------------------------------
def transfer_player
# 清除主角场所移动调试标志
$game_temp.player_transferring = false
# 移动目标与现在的地图有差异的情况下
if $game_map.map_id != $game_temp.player_new_map_id
# 设置新地图
$game_map.setup($game_temp.player_new_map_id)
end
Time_System.start
# 设置主角位置
$game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
# 设置主角朝向
case $game_temp.player_new_direction
when 2 # 下
$game_player.turn_down
when 4 # 左
$game_player.turn_left
when 6 # 右
$game_player.turn_right
when 8 # 上
$game_player.turn_up
end
# 矫正主角姿势
$game_player.straighten
# 刷新地图 (执行并行事件)
$game_map.update
# 在生成活动块
@spriteset.dispose
@spriteset = Spriteset_Map.new
# 处理过渡中的情况下
if $game_temp.transition_processing
# 清除过渡处理中标志
$game_temp.transition_processing = false
# 执行过渡
Graphics.transition(20)
end
# 执行地图设置的 BGM、BGS 的自动切换
$game_map.autoplay
# 设置画面
Graphics.frame_reset
# 刷新输入信息
Input.update
end
end
class Game_Map
attr_reader :map_id
end
class Scene_Title
alias ori_command_new_game command_new_game
def command_new_game
ori_command_new_game
Time_System.load
end
end
class Scene_Save < Scene_File
def on_decision(filename)
# 演奏存档 SE
$game_system.se_play($data_system.save_se)
Time_System.save_time
# 写入存档数据
file = File.open(filename, "wb")
write_save_data(file)
file.close
# 如果被事件调用
if $game_temp.save_calling
# 清除存档调用标志
$game_temp.save_calling = false
# 切换到地图画面
$scene = Scene_Map.new
return
end
# 切换到菜单画面
$scene = Scene_Menu.new(4)
end
end
class Scene_Load < Scene_File
def on_decision(filename)
unless FileTest.exist?(filename)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.load_se)
file = File.open(filename, "rb")
read_save_data(file)
file.close
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
$game_map.update
Time_System.load
$scene = Scene_Map.new
end
end
class Scene_Map
alias ori_main main
def main
@time_window = Window_Base.new(0,0,100,64)
@time_window.x = Time_System::X
@time_window.y = Time_System::Y
@time_window.opacity = 128
@time_window.visible = Time_System::VISIBLE
@time_window.contents = Bitmap.new(64,32)
$game_system.time_window_need_refresh = true
ori_main
@time_window.dispose
end
alias ori_update update
def update
if $game_system.time_window_need_refresh
time_window_refresh
end
ori_update
end
def time_window_refresh
@time_window.contents.clear
@time_window.contents.draw_text(0,0,100,32,Time_System.set_text)
$game_system.time_window_need_refresh = false
end
end