game.loading do |loader|
loader.add :window, :system => "window"
loader.add :gui_item, :system => "gui_item"
loader.add :nd3_image, 22
loader.add :mapchip, 192
end
game.on_init do
set_window_image :window
set_gui_image :gui_item
scene_change :start_scene
end
scene :start_scene do |scene|
scene.on_init do
speak("マップ描画のテストです。画面をタップすると終了します。")
map_sprite = scene.add :image, :name => :map_sprite, :template => :map, :center_position => [400, 225]
scene.add :image, :name => :nd3_sprite, :template => :nd3, :center_position => [48, 48]
map_sprite.event :on_click do |event|
speak("メニューに戻ります")
game.change_project "start_menu"
end
end
end
sprite_template :map do |st|
st.texture :mapchip
st.dest_size 800, 448
st.center_offset 400, 224
st.animation :default do |commands|
commands.proc_call do |sprite|
dest_rects = []
14.times do |j|
25.times do |i|
dest_rects << -400 + 0 + i * 32 # x
dest_rects << -224 + 0 + j * 32 # y
dest_rects << 32 # w
dest_rects << 32 # h
end
end
colors = []
(25*14).times do
colors << 255 # R
colors << 255 # G
colors << 255 # B
colors << 255 # A
end
# 草原で塗りつぶす
# 隣のチップを巻き込まないために元画像のサイズを1px小さく指定
# その際、0.5pxずらす
src_rects = []
14.times do |j|
25.times do |i|
src_rects << 0.5 # x
src_rects << 0.5 # y
src_rects << 31 # w
src_rects << 31 # h
end
end
# 黄色い横一本道を10マスつける
# マップエディタが欲しい(^^;
10.times do |i|
src_rects[(25*1 + i + 3) * 4 + 0] = 32.5 # x
src_rects[(25*1 + i + 3) * 4 + 1] = 0.5 # y
src_rects[(25*1 + i + 3) * 4 + 2] = 31 # w
src_rects[(25*1 + i + 3) * 4 + 3] = 31 # h
end
sprite.set_rects dest_rects, colors, src_rects
end
end
end
sprite_template :nd3 do |st|
st.texture :nd3_image
st.src_size 32, 32
st.dest_size 32, 32
st.center_offset 32/2, 32/2
st.motion :default do |commands|
commands.loop true
commands.proc_call do |sprite|
sprite.change_animation :down
end
commands.move_to_v 32, 386, 4
commands.wait_motion
commands.proc_call do |sprite|
sprite.change_animation :right
end
commands.move_to_v 736, 386, 4
commands.wait_motion
commands.proc_call do |sprite|
sprite.change_animation :up
end
commands.move_to_v 736, 32, 4
commands.wait_motion
commands.proc_call do |sprite|
sprite.change_animation :left
end
commands.move_to_v 32, 32, 4
commands.wait_motion
end
st.animation :down do |commands|
commands.loop true
commands.copy_rect :frame => 16, :src => [0, 0]
commands.wait_animation
commands.copy_rect :frame => 16, :src => [1, 0]
commands.wait_animation
end
st.animation :up do |commands|
commands.loop true
commands.copy_rect :frame => 16, :src => [0, 3]
commands.wait_animation
commands.copy_rect :frame => 16, :src => [1, 3]
commands.wait_animation
end
st.animation :left do |commands|
commands.loop true
commands.copy_rect :frame => 16, :src => [0, 1]
commands.wait_animation
commands.copy_rect :frame => 16, :src => [1, 1]
commands.wait_animation
end
st.animation :right do |commands|
commands.loop true
commands.copy_rect :frame => 16, :src => [0, 2]
commands.wait_animation
commands.copy_rect :frame => 16, :src => [1, 2]
commands.wait_animation
end
end