diff options
| author | Amir Rajan <[email protected]> | 2020-08-06 08:12:27 -0500 |
|---|---|---|
| committer | Amir Rajan <[email protected]> | 2020-08-06 08:12:27 -0500 |
| commit | 64046616ce54fff32c3dd949a4b7702136f38a3e (patch) | |
| tree | 1fff22cf553b2cf3eb5fe8095b572fd0cce63196 /samples | |
| parent | 161d498dc905f04b595c927309993acdcb4d394c (diff) | |
| download | dragonruby-game-toolkit-contrib-64046616ce54fff32c3dd949a4b7702136f38a3e.tar.gz dragonruby-game-toolkit-contrib-64046616ce54fff32c3dd949a4b7702136f38a3e.zip | |
Synced with 1.14
Diffstat (limited to 'samples')
| -rw-r--r-- | samples/99_sample_sprite_animation_creator/app/main.rb | 447 | ||||
| -rw-r--r-- | samples/99_sample_sprite_animation_creator/license-for-sample.txt | 9 | ||||
| -rw-r--r-- | samples/99_sample_sprite_animation_creator/replay.txt | 908 | ||||
| -rw-r--r-- | samples/99_sample_sprite_animation_creator/sprites/square-blue.png | bin | 0 -> 283 bytes | |||
| -rw-r--r-- | samples/99_sample_sprite_animation_creator/sprites/square-white.png | bin | 0 -> 279 bytes |
5 files changed, 1364 insertions, 0 deletions
diff --git a/samples/99_sample_sprite_animation_creator/app/main.rb b/samples/99_sample_sprite_animation_creator/app/main.rb new file mode 100644 index 0000000..14456e3 --- /dev/null +++ b/samples/99_sample_sprite_animation_creator/app/main.rb @@ -0,0 +1,447 @@ +class OneBitLowrezPaint + attr_gtk + + def tick + outputs.background_color = [0, 0, 0] + defaults + render_instructions + render_canvas + render_buttons_frame_selection + render_animation_frame_thumbnails + render_animation + input_mouse_click + input_keyboard + calc_auto_export + calc_buttons_frame_selection + calc_animation_frames + process_queue_create_sprite + process_queue_reset_sprite + process_queue_update_rt_animation_frame + end + + def defaults + state.animation_frames_per_second = 12 + queues.create_sprite ||= [] + queues.reset_sprite ||= [] + queues.update_rt_animation_frame ||= [] + + if !state.animation_frames + state.animation_frames ||= [] + add_animation_frame_to_end + end + + state.last_mouse_down ||= 0 + state.last_mouse_up ||= 0 + + state.buttons_frame_selection.left = 10 + state.buttons_frame_selection.top = grid.top - 10 + state.buttons_frame_selection.size = 20 + + defaults_canvas_sprite + + state.edit_mode ||= :drawing + end + + def defaults_canvas_sprite + rt_canvas.size = 16 + rt_canvas.zoom = 30 + rt_canvas.width = rt_canvas.size * rt_canvas.zoom + rt_canvas.height = rt_canvas.size * rt_canvas.zoom + rt_canvas.sprite = { x: 0, + y: 0, + w: rt_canvas.width, + h: rt_canvas.height, + path: :rt_canvas }.center_inside_rect(x: 0, y: 0, w: 640, h: 720) + + return unless state.tick_count == 1 + + outputs[:rt_canvas].width = rt_canvas.width + outputs[:rt_canvas].height = rt_canvas.height + outputs[:rt_canvas].sprites << (rt_canvas.size + 1).map_with_index do |x| + (rt_canvas.size + 1).map_with_index do |y| + path = 'sprites/square-white.png' + path = 'sprites/square-blue.png' if x == 7 || x == 8 + { x: x * rt_canvas.zoom, + y: y * rt_canvas.zoom, + w: rt_canvas.zoom, + h: rt_canvas.zoom, + path: path, + a: 50 } + end + end + end + + def render_instructions + instructions = <<-S +* Instructions: +- All data is stored in the ~canvas~ directory. +- Hold ~d~ to set the edit mode to erase. +- Release ~d~ to set the edit mode drawing. +- Press ~a~ to added a frame to the end. +- Press ~b~ to select the previous frame. +- Press ~f~ to select the next frame. +- Press ~c~ to copy a frame. +- Press ~v~ to paste a copied frame into the selected frame. +- Press ~x~ to delete the currently selected frame. +- Press ~w~ to save the canvas and export all sprites. +- Press ~l~ to load the canvas. +S + + instructions.strip.each_line.with_index do |l, i| + outputs.labels << { x: 840, y: 500 - (i * 20), text: "#{l}", + r: 180, g: 180, b: 180, size_enum: -3 } + end + end + + def render_canvas + return if state.tick_count.zero? + outputs.sprites << rt_canvas.sprite + end + + def render_buttons_frame_selection + args.outputs.primitives << state.buttons_frame_selection.items.map_with_index do |b, i| + label = { x: b.x + state.buttons_frame_selection.size.half, + y: b.y, + text: "#{i + 1}", r: 180, g: 180, b: 180, + size_enum: -4, alignment_enum: 1 }.label + + selection_border = b.merge(r: 40, g: 40, b: 40).border + + if i == state.animation_frames_selected_index + selection_border = b.merge(r: 40, g: 230, b: 200).border + end + + [selection_border, label] + end + end + + def render_animation_frame_thumbnails + return if state.tick_count.zero? + + outputs[:current_animation_frame].width = rt_canvas.size + outputs[:current_animation_frame].height = rt_canvas.size + outputs[:current_animation_frame].solids << selected_animation_frame[:pixels].map_with_index do |f, i| + { x: f.x, + y: f.y, + w: 1, + h: 1, r: 255, g: 255, b: 255 } + end + + outputs.sprites << rt_canvas.sprite.merge(path: :current_animation_frame) + + state.animation_frames.map_with_index do |animation_frame, animation_frame_index| + outputs.sprites << state.buttons_frame_selection[:items][animation_frame_index][:inner_rect] + .merge(path: animation_frame[:rt_name]) + end + end + + def render_animation + sprite_index = 0.frame_index count: state.animation_frames.length, + hold_for: 60 / state.animation_frames_per_second, + repeat: true + + args.outputs.sprites << { x: 700 - 8, + y: 120, + w: 16, + h: 16, + path: (sprite_path sprite_index) } + + args.outputs.sprites << { x: 700 - 16, + y: 230, + w: 32, + h: 32, + path: (sprite_path sprite_index) } + + args.outputs.sprites << { x: 700 - 32, + y: 360, + w: 64, + h: 64, + path: (sprite_path sprite_index) } + + args.outputs.sprites << { x: 700 - 64, + y: 520, + w: 128, + h: 128, + path: (sprite_path sprite_index) } + end + + def input_mouse_click + if inputs.mouse.up + state.last_mouse_up = state.tick_count + elsif inputs.mouse.moved && user_is_editing? + edit_current_animation_frame inputs.mouse.point + end + + return unless inputs.mouse.click + + clicked_frame_button = state.buttons_frame_selection.items.find do |b| + inputs.mouse.point.inside_rect? b + end + + if (clicked_frame_button) + state.animation_frames_selected_index = clicked_frame_button[:index] + end + + if (inputs.mouse.point.inside_rect? rt_canvas.sprite) + state.last_mouse_down = state.tick_count + edit_current_animation_frame inputs.mouse.point + end + end + + def input_keyboard + # w to save + if inputs.keyboard.key_down.w + t = Time.now + state.save_description = "Time: #{t} (#{t.to_i})" + gtk.serialize_state 'canvas/state.txt', state + gtk.serialize_state "tmp/canvas_backups/#{t.to_i}/state.txt", state + animation_frames.each_with_index do |animation_frame, i| + queues.update_rt_animation_frame << { index: i, + at: state.tick_count + i, + queue_sprite_creation: true } + queues.create_sprite << { index: i, + at: state.tick_count + animation_frames.length + i, + path_override: "tmp/canvas_backups/#{t.to_i}/sprite-#{i}.png" } + end + gtk.notify! "Canvas saved." + end + + # l to load + if inputs.keyboard.key_down.l + args.state = gtk.deserialize_state 'canvas/state.txt' + animation_frames.each_with_index do |a, i| + queues.update_rt_animation_frame << { index: i, + at: state.tick_count + i, + queue_sprite_creation: true } + end + gtk.notify! "Canvas loaded." + end + + # d to go into delete mode, release to paint + if inputs.keyboard.key_held.d + state.edit_mode = :erasing + gtk.notify! "Erasing." if inputs.keyboard.key_held.d == (state.tick_count - 1) + elsif inputs.keyboard.key_up.d + state.edit_mode = :drawing + gtk.notify! "Drawing." + end + + # a to add a frame to the end + if inputs.keyboard.key_down.a + queues.create_sprite << { index: state.animation_frames_selected_index, + at: state.tick_count } + queues.create_sprite << { index: state.animation_frames_selected_index + 1, + at: state.tick_count } + add_animation_frame_to_end + gtk.notify! "Frame added to end." + end + + # c or t to copy + if (inputs.keyboard.key_down.c || inputs.keyboard.key_down.t) + state.clipboard = [selected_animation_frame[:pixels]].flatten + gtk.notify! "Current frame copied." + end + + # v or q to paste + if (inputs.keyboard.key_down.v || inputs.keyboard.key_down.q) && state.clipboard + selected_animation_frame[:pixels] = [state.clipboard].flatten + queues.update_rt_animation_frame << { index: state.animation_frames_selected_index, + at: state.tick_count, + queue_sprite_creation: true } + gtk.notify! "Pasted." + end + + # f to go forward/next frame + if (inputs.keyboard.key_down.f) + if (state.animation_frames_selected_index == (state.animation_frames.length - 1)) + state.animation_frames_selected_index = 0 + else + state.animation_frames_selected_index += 1 + end + gtk.notify! "Next frame." + end + + # b to go back/previous frame + if (inputs.keyboard.key_down.b) + if (state.animation_frames_selected_index == 0) + state.animation_frames_selected_index = state.animation_frames.length - 1 + else + state.animation_frames_selected_index -= 1 + end + gtk.notify! "Previous frame." + end + + # x to delete frame + if (inputs.keyboard.key_down.x) && animation_frames.length > 1 + state.clipboard = selected_animation_frame[:pixels] + state.animation_frames = animation_frames.find_all { |v| v[:index] != state.animation_frames_selected_index } + if state.animation_frames_selected_index >= state.animation_frames.length + state.animation_frames_selected_index = state.animation_frames.length - 1 + end + gtk.notify! "Frame deleted." + end + end + + def calc_auto_export + return if user_is_editing? + return if state.last_mouse_up.elapsed_time != 30 + # auto export current animation frame if there is no editing for 30 ticks + queues.create_sprite << { index: state.animation_frames_selected_index, + at: state.tick_count } + end + + def calc_buttons_frame_selection + state.buttons_frame_selection.items = animation_frames.length.map_with_index do |i| + { x: state.buttons_frame_selection.left + i * state.buttons_frame_selection.size, + y: state.buttons_frame_selection.top - state.buttons_frame_selection.size, + inner_rect: { + x: (state.buttons_frame_selection.left + 2) + i * state.buttons_frame_selection.size, + y: (state.buttons_frame_selection.top - state.buttons_frame_selection.size + 2), + w: 16, + h: 16, + }, + w: state.buttons_frame_selection.size, + h: state.buttons_frame_selection.size, + index: i } + end + end + + def calc_animation_frames + animation_frames.each_with_index do |animation_frame, i| + animation_frame[:index] = i + animation_frame[:rt_name] = "animation_frame_#{i}" + end + end + + def process_queue_create_sprite + sprites_to_create = queues.create_sprite + .find_all { |h| h[:at].elapsed? } + + queues.create_sprite = queues.create_sprite - sprites_to_create + + sprites_to_create.each do |h| + export_animation_frame h[:index], h[:path_override] + end + end + + def process_queue_reset_sprite + sprites_to_reset = queues.reset_sprite + .find_all { |h| h[:at].elapsed? } + + queues.reset_sprite -= sprites_to_reset + + sprites_to_reset.each { |h| gtk.reset_sprite (sprite_path h[:index]) } + end + + def process_queue_update_rt_animation_frame + animation_frames_to_update = queues.update_rt_animation_frame + .find_all { |h| h[:at].elapsed? } + + queues.update_rt_animation_frame -= animation_frames_to_update + + animation_frames_to_update.each do |h| + update_animation_frame_render_target animation_frames[h[:index]] + + if h[:queue_sprite_creation] + queues.create_sprite << { index: h[:index], + at: state.tick_count + 1 } + end + end + end + + def update_animation_frame_render_target animation_frame + return if !animation_frame + + outputs[animation_frame[:rt_name]].width = state.rt_canvas.size + outputs[animation_frame[:rt_name]].height = state.rt_canvas.size + outputs[animation_frame[:rt_name]].solids << animation_frame[:pixels].map do |f| + { x: f.x, + y: f.y, + w: 1, + h: 1, r: 255, g: 255, b: 255 } + end + end + + def animation_frames + state.animation_frames + end + + def add_animation_frame_to_end + animation_frames << { + index: animation_frames.length, + pixels: [], + rt_name: "animation_frame_#{animation_frames.length}" + } + + state.animation_frames_selected_index = (animation_frames.length - 1) + queues.update_rt_animation_frame << { index: state.animation_frames_selected_index, + at: state.tick_count, + queue_sprite_creation: true } + end + + def sprite_path i + "canvas/sprite-#{i}.png" + end + + def export_animation_frame i, path_override = nil + return if !state.animation_frames[i] + + outputs.screenshots << state.buttons_frame_selection + .items[i][:inner_rect] + .merge(path: path_override || (sprite_path i)) + + outputs.screenshots << state.buttons_frame_selection + .items[i][:inner_rect] + .merge(path: "tmp/sprite_backups/#{Time.now.to_i}-sprite-#{i}.png") + + queues.reset_sprite << { index: i, at: state.tick_count } + end + + def selected_animation_frame + state.animation_frames[state.animation_frames_selected_index] + end + + def edit_current_animation_frame point + draw_area_point = (to_draw_area point) + if state.edit_mode == :drawing && (!selected_animation_frame[:pixels].include? draw_area_point) + selected_animation_frame[:pixels] << draw_area_point + queues.update_rt_animation_frame << { index: state.animation_frames_selected_index, + at: state.tick_count, + queue_sprite_creation: !user_is_editing? } + elsif state.edit_mode == :erasing && (selected_animation_frame[:pixels].include? draw_area_point) + selected_animation_frame[:pixels] = selected_animation_frame[:pixels].reject { |p| p == draw_area_point } + queues.update_rt_animation_frame << { index: state.animation_frames_selected_index, + at: state.tick_count, + queue_sprite_creation: !user_is_editing? } + end + end + + def user_is_editing? + state.last_mouse_down > state.last_mouse_up + end + + def to_draw_area point + x, y = point + x -= rt_canvas.sprite.x + y -= rt_canvas.sprite.y + { x: x.idiv(rt_canvas.zoom), + y: y.idiv(rt_canvas.zoom) } + end + + def rt_canvas + state.rt_canvas ||= state.new_entity(:rt_canvas) + end + + def queues + state.queues ||= state.new_entity(:queues) + end +end + +$game = OneBitLowrezPaint.new + +def tick args + $game.args = args + $game.tick +end + +# $gtk.reset diff --git a/samples/99_sample_sprite_animation_creator/license-for-sample.txt b/samples/99_sample_sprite_animation_creator/license-for-sample.txt new file mode 100644 index 0000000..376dd0e --- /dev/null +++ b/samples/99_sample_sprite_animation_creator/license-for-sample.txt @@ -0,0 +1,9 @@ +Copyright 2019 Anton K. (ai Doge) + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/samples/99_sample_sprite_animation_creator/replay.txt b/samples/99_sample_sprite_animation_creator/replay.txt new file mode 100644 index 0000000..ca25af6 --- /dev/null +++ b/samples/99_sample_sprite_animation_creator/replay.txt @@ -0,0 +1,908 @@ +replay_version 2.0 +stopped_at 2856 +seed 100 +recorded_at Thu Aug 06 06:37:39 2020 +[:key_up_raw, 13, 0, 2, 1, 2] +[:mouse_move, 280, 591, 2, 2, 73] +[:mouse_move, 290, 613, 2, 3, 74] +[:mouse_move, 292, 621, 2, 4, 75] +[:mouse_move, 284, 628, 2, 5, 76] +[:mouse_move, 272, 628, 2, 6, 77] +[:mouse_move, 255, 628, 2, 7, 78] +[:mouse_move, 215, 606, 2, 8, 79] +[:mouse_move, 193, 590, 2, 9, 80] +[:mouse_move, 156, 544, 2, 10, 81] +[:mouse_move, 151, 535, 2, 11, 82] +[:mouse_move, 138, 503, 2, 12, 83] +[:mouse_move, 137, 490, 2, 13, 84] +[:mouse_move, 137, 472, 2, 14, 85] +[:mouse_move, 139, 470, 2, 15, 86] +[:mouse_move, 145, 462, 2, 16, 87] +[:mouse_move, 149, 459, 2, 17, 89] +[:mouse_move, 150, 458, 2, 18, 90] +[:mouse_move, 151, 457, 2, 19, 91] +[:mouse_move, 152, 457, 2, 20, 92] +[:mouse_move, 152, 456, 2, 21, 93] +[:mouse_move, 152, 451, 2, 22, 114] +[:mouse_move, 153, 442, 2, 23, 115] +[:mouse_move, 158, 427, 2, 24, 116] +[:mouse_move, 160, 422, 2, 25, 117] +[:mouse_move, 166, 404, 2, 26, 118] +[:mouse_move, 169, 398, 2, 27, 119] +[:mouse_move, 175, 386, 2, 28, 120] +[:mouse_move, 180, 378, 2, 29, 121] +[:mouse_move, 183, 373, 2, 30, 122] +[:mouse_move, 185, 370, 2, 31, 123] +[:mouse_move, 188, 366, 2, 32, 124] +[:mouse_move, 189, 364, 2, 33, 125] +[:mouse_move, 190, 362, 2, 34, 126] +[:mouse_move, 191, 361, 2, 35, 128] +[:mouse_button_pressed, 1, 0, 1, 36, 291] +[:mouse_move, 190, 358, 2, 37, 291] +[:mouse_move, 190, 357, 2, 38, 292] +[:mouse_move, 189, 354, 2, 39, 293] +[:mouse_move, 186, 346, 2, 40, 294] +[:mouse_move, 185, 344, 2, 41, 295] +[:mouse_move, 182, 326, 2, 42, 296] +[:mouse_move, 182, 323, 2, 43, 296] +[:mouse_move, 182, 318, 2, 44, 297] +[:mouse_move, 182, 315, 2, 45, 298] +[:mouse_move, 182, 311, 2, 46, 299] +[:mouse_move, 183, 307, 2, 47, 301] +[:mouse_move, 185, 302, 2, 48, 302] +[:mouse_move, 187, 299, 2, 49, 303] +[:mouse_move, 190, 295, 2, 50, 304] +[:mouse_move, 193, 292, 2, 51, 305] +[:mouse_move, 199, 287, 2, 52, 306] +[:mouse_move, 203, 283, 2, 53, 307] +[:mouse_move, 206, 280, 2, 54, 308] +[:mouse_move, 216, 273, 2, 55, 309] +[:mouse_move, 220, 271, 2, 56, 310] +[:mouse_move, 232, 264, 2, 57, 311] +[:mouse_move, 238, 261, 2, 58, 312] +[:mouse_move, 250, 256, 2, 59, 313] +[:mouse_move, 256, 253, 2, 60, 314] +[:mouse_move, 266, 251, 2, 61, 315] +[:mouse_move, 275, 248, 2, 62, 316] +[:mouse_move, 288, 245, 2, 63, 317] +[:mouse_move, 294, 245, 2, 64, 318] +[:mouse_move, 307, 245, 2, 65, 319] +[:mouse_move, 316, 245, 2, 66, 320] +[:mouse_move, 332, 247, 2, 67, 321] +[:mouse_move, 343, 250, 2, 68, 322] +[:mouse_move, 350, 253, 2, 69, 323] +[:mouse_move, 367, 261, 2, 70, 324] +[:mouse_move, 385, 272, 2, 71, 325] +[:mouse_move, 394, 279, 2, 72, 326] +[:mouse_move, 408, 294, 2, 73, 327] +[:mouse_move, 416, 301, 2, 74, 328] +[:mouse_move, 426, 318, 2, 75, 329] +[:mouse_move, 432, 326, 2, 76, 330] +[:mouse_move, 439, 342, 2, 77, 331] +[:mouse_move, 442, 351, 2, 78, 332] +[:mouse_move, 447, 369, 2, 79, 333] +[:mouse_move, 449, 382, 2, 80, 334] +[:mouse_move, 451, 405, 2, 81, 335] +[:mouse_move, 452, 410, 2, 82, 336] +[:mouse_move, 452, 417, 2, 83, 337] +[:mouse_move, 449, 426, 2, 84, 338] +[:mouse_move, 444, 437, 2, 85, 338] +[:mouse_move, 440, 441, 2, 86, 339] +[:mouse_move, 430, 450, 2, 87, 340] +[:mouse_move, 423, 456, 2, 88, 341] +[:mouse_move, 412, 464, 2, 89, 342] +[:mouse_move, 407, 467, 2, 90, 343] +[:mouse_move, 402, 470, 2, 91, 344] +[:mouse_move, 382, 480, 2, 92, 345] +[:mouse_move, 371, 485, 2, 93, 346] +[:mouse_move, 351, 491, 2, 94, 347] +[:mouse_move, 344, 492, 2, 95, 348] +[:mouse_move, 321, 498, 2, 96, 349] +[:mouse_move, 312, 499, 2, 97, 350] +[:mouse_move, 290, 497, 2, 98, 351] +[:mouse_move, 283, 496, 2, 99, 352] +[:mouse_move, 266, 490, 2, 100, 353] +[:mouse_move, 260, 487, 2, 101, 354] +[:mouse_move, 246, 478, 2, 102, 355] +[:mouse_move, 241, 472, 2, 103, 356] +[:mouse_move, 230, 461, 2, 104, 357] +[:mouse_move, 226, 455, 2, 105, 358] +[:mouse_move, 217, 443, 2, 106, 359] +[:mouse_move, 213, 435, 2, 107, 360] +[:mouse_move, 207, 422, 2, 108, 361] +[:mouse_move, 205, 418, 2, 109, 362] +[:mouse_move, 201, 401, 2, 110, 363] +[:mouse_move, 199, 396, 2, 111, 364] +[:mouse_move, 197, 385, 2, 112, 365] +[:mouse_move, 197, 380, 2, 113, 366] +[:mouse_move, 196, 372, 2, 114, 367] +[:mouse_move, 196, 367, 2, 115, 368] +[:mouse_move, 195, 361, 2, 116, 369] +[:mouse_move, 195, 358, 2, 117, 370] +[:mouse_move, 195, 353, 2, 118, 371] +[:mouse_move, 195, 347, 2, 119, 372] +[:mouse_move, 196, 344, 2, 120, 373] +[:mouse_move, 196, 338, 2, 121, 374] +[:mouse_move, 197, 337, 2, 122, 375] +[:mouse_move, 197, 334, 2, 123, 376] +[:mouse_move, 197, 333, 2, 124, 377] +[:mouse_move, 197, 332, 2, 125, 379] +[:mouse_button_up, 1, 0, 1, 126, 393] +[:mouse_move, 224, 331, 2, 127, 394] +[:mouse_move, 237, 327, 2, 128, 395] +[:mouse_move, 257, 317, 2, 129, 396] +[:mouse_move, 267, 310, 2, 130, 397] +[:mouse_move, 289, 295, 2, 131, 398] +[:mouse_move, 315, 268, 2, 132, 399] +[:mouse_move, 340, 234, 2, 133, 400] +[:mouse_move, 353, 204, 2, 134, 401] +[:mouse_move, 359, 188, 2, 135, 402] +[:mouse_move, 361, 172, 2, 136, 403] +[:mouse_move, 361, 163, 2, 137, 404] +[:mouse_move, 361, 154, 2, 138, 405] +[:mouse_move, 361, 152, 2, 139, 406] +[:mouse_move, 361, 151, 2, 140, 407] +[:mouse_move, 361, 150, 2, 141, 408] +[:key_down_raw, 97, 0, 2, 142, 408] +[:mouse_move, 360, 150, 2, 143, 408] +[:mouse_move, 360, 151, 2, 144, 412] +[:key_up_raw, 97, 0, 2, 145, 412] +[:mouse_move, 360, 152, 2, 146, 413] +[:mouse_move, 360, 153, 2, 147, 414] +[:mouse_move, 360, 155, 2, 148, 415] +[:mouse_move, 360, 157, 2, 149, 416] +[:mouse_move, 361, 170, 2, 150, 417] +[:mouse_move, 361, 171, 2, 151, 418] +[:mouse_move, 361, 174, 2, 152, 419] +[:mouse_move, 361, 175, 2, 153, 421] +[:mouse_move, 361, 176, 2, 154, 423] +[:mouse_move, 359, 179, 2, 155, 425] +[:mouse_move, 359, 180, 2, 156, 427] +[:mouse_move, 358, 181, 2, 157, 428] +[:mouse_move, 358, 182, 2, 158, 429] +[:mouse_move, 358, 183, 2, 159, 430] +[:mouse_move, 345, 202, 2, 160, 431] +[:mouse_move, 340, 207, 2, 161, 432] +[:mouse_move, 337, 210, 2, 162, 433] +[:mouse_move, 335, 213, 2, 163, 434] +[:mouse_move, 331, 217, 2, 164, 435] +[:mouse_move, 327, 221, 2, 165, 436] +[:mouse_move, 325, 223, 2, 166, 437] +[:mouse_move, 325, 224, 2, 167, 438] +[:mouse_move, 322, 226, 2, 168, 439] +[:mouse_move, 322, 228, 2, 169, 440] +[:mouse_move, 321, 229, 2, 170, 441] +[:mouse_move, 321, 230, 2, 171, 445] +[:mouse_move, 320, 231, 2, 172, 463] +[:mouse_move, 319, 233, 2, 173, 465] +[:mouse_move, 318, 233, 2, 174, 466] +[:mouse_move, 318, 234, 2, 175, 467] +[:mouse_move, 316, 236, 2, 176, 468] +[:mouse_move, 315, 236, 2, 177, 469] +[:mouse_move, 314, 238, 2, 178, 470] +[:mouse_move, 313, 238, 2, 179, 471] +[:mouse_move, 312, 239, 2, 180, 472] +[:mouse_move, 311, 240, 2, 181, 474] +[:mouse_move, 310, 240, 2, 182, 477] +[:mouse_button_pressed, 1, 0, 1, 183, 499] +[:mouse_move, 307, 239, 2, 184, 499] +[:mouse_move, 303, 238, 2, 185, 500] +[:mouse_move, 295, 234, 2, 186, 501] +[:mouse_move, 291, 233, 2, 187, 502] +[:mouse_move, 262, 231, 2, 188, 503] +[:mouse_move, 256, 232, 2, 189, 504] +[:mouse_move, 254, 233, 2, 190, 505] +[:mouse_move, 249, 236, 2, 191, 506] +[:mouse_move, 246, 239, 2, 192, 507] +[:mouse_move, 243, 242, 2, 193, 508] +[:mouse_move, 241, 244, 2, 194, 509] +[:mouse_move, 235, 250, 2, 195, 510] +[:mouse_move, 234, 252, 2, 196, 511] +[:mouse_move, 230, 258, 2, 197, 512] +[:mouse_move, 227, 262, 2, 198, 513] +[:mouse_move, 223, 268, 2, 199, 514] +[:mouse_move, 221, 270, 2, 200, 515] +[:mouse_move, 219, 273, 2, 201, 516] +[:mouse_move, 217, 277, 2, 202, 517] +[:mouse_move, 215, 281, 2, 203, 518] +[:mouse_move, 213, 288, 2, 204, 519] +[:mouse_move, 212, 292, 2, 205, 520] +[:mouse_move, 211, 302, 2, 206, 521] +[:mouse_move, 210, 307, 2, 207, 522] +[:mouse_move, 210, 318, 2, 208, 523] +[:mouse_move, 210, 323, 2, 209, 524] +[:mouse_move, 212, 335, 2, 210, 525] +[:mouse_move, 214, 340, 2, 211, 526] +[:mouse_move, 218, 351, 2, 212, 527] +[:mouse_move, 222, 356, 2, 213, 528] +[:mouse_move, 230, 368, 2, 214, 529] +[:mouse_move, 235, 374, 2, 215, 530] +[:mouse_move, 247, 387, 2, 216, 531] +[:mouse_move, 254, 393, 2, 217, 532] +[:mouse_move, 268, 407, 2, 218, 533] +[:mouse_move, 275, 413, 2, 219, 534] +[:mouse_move, 290, 424, 2, 220, 535] +[:mouse_move, 298, 429, 2, 221, 536] +[:mouse_move, 311, 436, 2, 222, 537] +[:mouse_move, 319, 441, 2, 223, 538] +[:mouse_move, 333, 445, 2, 224, 539] +[:mouse_move, 337, 446, 2, 225, 540] +[:mouse_move, 350, 448, 2, 226, 541] +[:mouse_move, 357, 448, 2, 227, 542] +[:mouse_move, 368, 445, 2, 228, 543] +[:mouse_move, 376, 440, 2, 229, 544] +[:mouse_move, 382, 435, 2, 230, 545] +[:mouse_move, 393, 424, 2, 231, 546] +[:mouse_move, 398, 418, 2, 232, 547] +[:mouse_move, 405, 404, 2, 233, 548] +[:mouse_move, 408, 397, 2, 234, 549] +[:mouse_move, 414, 385, 2, 235, 550] +[:mouse_move, 415, 380, 2, 236, 551] +[:mouse_move, 418, 368, 2, 237, 552] +[:mouse_move, 419, 362, 2, 238, 553] +[:mouse_move, 420, 352, 2, 239, 554] +[:mouse_move, 420, 349, 2, 240, 555] +[:mouse_move, 420, 342, 2, 241, 556] +[:mouse_move, 420, 340, 2, 242, 557] +[:mouse_move, 420, 339, 2, 243, 558] +[:mouse_move, 420, 337, 2, 244, 559] +[:mouse_move, 420, 336, 2, 245, 560] +[:mouse_move, 420, 334, 2, 246, 561] +[:mouse_move, 417, 332, 2, 247, 562] +[:mouse_move, 416, 331, 2, 248, 563] +[:mouse_move, 412, 327, 2, 249, 564] +[:mouse_move, 410, 325, 2, 250, 565] +[:mouse_move, 402, 320, 2, 251, 566] +[:mouse_move, 397, 317, 2, 252, 567] +[:mouse_move, 385, 312, 2, 253, 568] +[:mouse_move, 379, 310, 2, 254, 569] +[:mouse_move, 366, 305, 2, 255, 570] +[:mouse_move, 358, 303, 2, 256, 571] +[:mouse_move, 352, 302, 2, 257, 572] +[:mouse_move, 338, 300, 2, 258, 573] +[:mouse_move, 331, 300, 2, 259, 574] +[:mouse_move, 314, 300, 2, 260, 575] +[:mouse_move, 307, 301, 2, 261, 576] +[:mouse_move, 293, 302, 2, 262, 577] +[:mouse_move, 288, 303, 2, 263, 578] +[:mouse_move, 275, 305, 2, 264, 579] +[:mouse_move, 267, 305, 2, 265, 580] +[:mouse_move, 258, 307, 2, 266, 581] +[:mouse_move, 250, 308, 2, 267, 582] +[:mouse_move, 239, 310, 2, 268, 583] +[:mouse_move, 233, 311, 2, 269, 584] +[:mouse_move, 225, 312, 2, 270, 585] +[:mouse_move, 222, 313, 2, 271, 586] +[:mouse_move, 217, 315, 2, 272, 587] +[:mouse_move, 215, 315, 2, 273, 588] +[:mouse_move, 212, 317, 2, 274, 589] +[:mouse_move, 212, 318, 2, 275, 590] +[:mouse_move, 211, 319, 2, 276, 591] +[:mouse_move, 211, 320, 2, 277, 593] +[:mouse_button_up, 1, 0, 1, 278, 608] +[:mouse_move, 215, 335, 2, 279, 608] +[:mouse_move, 220, 349, 2, 280, 609] +[:mouse_move, 225, 378, 2, 281, 610] +[:mouse_move, 226, 403, 2, 282, 612] +[:mouse_move, 226, 419, 2, 283, 613] +[:mouse_move, 220, 442, 2, 284, 614] +[:mouse_move, 210, 449, 2, 285, 615] +[:mouse_move, 196, 450, 2, 286, 616] +[:mouse_move, 187, 450, 2, 287, 617] +[:mouse_move, 173, 441, 2, 288, 618] +[:mouse_move, 168, 435, 2, 289, 619] +[:mouse_move, 164, 427, 2, 290, 620] +[:mouse_move, 161, 422, 2, 291, 621] +[:mouse_move, 159, 415, 2, 292, 622] +[:mouse_move, 159, 414, 2, 293, 623] +[:mouse_move, 159, 412, 2, 294, 624] +[:mouse_move, 159, 411, 2, 295, 625] +[:mouse_move, 159, 410, 2, 296, 627] +[:mouse_move, 160, 410, 2, 297, 632] +[:mouse_move, 161, 410, 2, 298, 639] +[:key_down_raw, 97, 0, 2, 299, 673] +[:key_up_raw, 97, 0, 2, 300, 677] +[:mouse_move, 161, 409, 2, 301, 680] +[:mouse_move, 162, 408, 2, 302, 682] +[:mouse_move, 162, 407, 2, 303, 683] +[:mouse_move, 163, 405, 2, 304, 684] +[:mouse_move, 164, 403, 2, 305, 685] +[:mouse_move, 164, 402, 2, 306, 689] +[:key_down_raw, 98, 0, 2, 307, 705] +[:key_up_raw, 98, 0, 2, 308, 709] +[:key_down_raw, 99, 0, 2, 309, 723] +[:key_up_raw, 99, 0, 2, 310, 729] +[:key_down_raw, 98, 0, 2, 311, 763] +[:key_up_raw, 98, 0, 2, 312, 769] +[:key_down_raw, 102, 0, 2, 313, 874] +[:key_up_raw, 102, 0, 2, 314, 877] +[:key_down_raw, 102, 0, 2, 315, 881] +[:key_up_raw, 102, 0, 2, 316, 886] +[:key_down_raw, 113, 0, 2, 317, 898] +[:key_up_raw, 113, 0, 2, 318, 902] +[:mouse_move, 167, 401, 2, 319, 945] +[:mouse_move, 170, 399, 2, 320, 946] +[:mouse_move, 180, 393, 2, 321, 947] +[:mouse_move, 190, 388, 2, 322, 948] +[:mouse_move, 202, 382, 2, 323, 949] +[:mouse_move, 216, 376, 2, 324, 950] +[:mouse_move, 226, 375, 2, 325, 951] +[:mouse_move, 235, 374, 2, 326, 952] +[:mouse_move, 245, 375, 2, 327, 953] +[:mouse_move, 247, 377, 2, 328, 954] +[:mouse_move, 255, 383, 2, 329, 955] +[:mouse_move, 261, 387, 2, 330, 956] +[:mouse_move, 270, 391, 2, 331, 957] +[:mouse_move, 275, 393, 2, 332, 958] +[:mouse_move, 285, 393, 2, 333, 959] +[:mouse_move, 296, 392, 2, 334, 960] +[:mouse_move, 318, 377, 2, 335, 961] +[:mouse_move, 331, 365, 2, 336, 962] +[:mouse_move, 368, 335, 2, 337, 963] +[:mouse_move, 386, 319, 2, 338, 964] +[:mouse_move, 404, 303, 2, 339, 965] +[:mouse_move, 426, 281, 2, 340, 966] +[:mouse_move, 438, 269, 2, 341, 967] +[:mouse_move, 449, 257, 2, 342, 968] +[:mouse_move, 456, 250, 2, 343, 969] +[:mouse_move, 467, 237, 2, 344, 970] +[:mouse_move, 468, 235, 2, 345, 971] +[:mouse_move, 471, 231, 2, 346, 972] +[:mouse_move, 472, 230, 2, 347, 973] +[:mouse_move, 473, 228, 2, 348, 974] +[:mouse_move, 474, 228, 2, 349, 975] +[:mouse_move, 475, 226, 2, 350, 976] +[:mouse_move, 475, 225, 2, 351, 977] +[:mouse_move, 476, 223, 2, 352, 978] +[:mouse_move, 476, 222, 2, 353, 980] +[:mouse_button_pressed, 1, 0, 1, 354, 992] +[:mouse_move, 473, 223, 2, 355, 992] +[:mouse_move, 470, 225, 2, 356, 993] +[:mouse_move, 466, 226, 2, 357, 994] +[:mouse_move, 460, 229, 2, 358, 995] +[:mouse_move, 455, 231, 2, 359, 996] +[:mouse_move, 401, 266, 2, 360, 997] +[:mouse_move, 381, 280, 2, 361, 998] +[:mouse_move, 371, 287, 2, 362, 999] +[:mouse_move, 354, 301, 2, 363, 1000] +[:mouse_move, 346, 308, 2, 364, 1001] +[:mouse_move, 329, 323, 2, 365, 1002] +[:mouse_move, 322, 331, 2, 366, 1003] +[:mouse_move, 307, 343, 2, 367, 1004] +[:mouse_move, 301, 349, 2, 368, 1005] +[:mouse_move, 287, 362, 2, 369, 1006] +[:mouse_move, 281, 369, 2, 370, 1007] +[:mouse_move, 264, 387, 2, 371, 1008] +[:mouse_move, 256, 396, 2, 372, 1009] +[:mouse_move, 246, 407, 2, 373, 1010] +[:mouse_move, 234, 420, 2, 374, 1012] +[:mouse_move, 231, 423, 2, 375, 1013] +[:mouse_move, 226, 430, 2, 376, 1014] +[:mouse_move, 224, 432, 2, 377, 1015] +[:mouse_move, 223, 434, 2, 378, 1016] +[:mouse_move, 221, 436, 2, 379, 1017] +[:mouse_move, 220, 438, 2, 380, 1018] +[:mouse_move, 219, 439, 2, 381, 1019] +[:mouse_move, 218, 440, 2, 382, 1020] +[:mouse_move, 217, 441, 2, 383, 1021] +[:mouse_move, 216, 442, 2, 384, 1023] +[:mouse_move, 214, 445, 2, 385, 1024] +[:mouse_move, 212, 447, 2, 386, 1025] +[:mouse_move, 211, 448, 2, 387, 1026] +[:mouse_move, 209, 450, 2, 388, 1027] +[:mouse_move, 209, 451, 2, 389, 1028] +[:mouse_move, 208, 452, 2, 390, 1029] +[:mouse_move, 207, 452, 2, 391, 1030] +[:mouse_move, 206, 453, 2, 392, 1031] +[:mouse_move, 206, 454, 2, 393, 1032] +[:mouse_move, 204, 456, 2, 394, 1033] +[:mouse_move, 203, 457, 2, 395, 1034] +[:mouse_move, 202, 458, 2, 396, 1035] +[:mouse_button_up, 1, 0, 1, 397, 1050] +[:mouse_move, 217, 484, 2, 398, 1050] +[:mouse_move, 232, 510, 2, 399, 1051] +[:mouse_move, 256, 554, 2, 400, 1052] +[:mouse_move, 266, 571, 2, 401, 1053] +[:mouse_move, 278, 588, 2, 402, 1054] +[:mouse_move, 288, 604, 2, 403, 1055] +[:mouse_move, 299, 620, 2, 404, 1056] +[:mouse_move, 302, 624, 2, 405, 1057] +[:mouse_move, 303, 626, 2, 406, 1058] +[:mouse_move, 303, 624, 2, 407, 1062] +[:mouse_move, 302, 622, 2, 408, 1063] +[:mouse_move, 302, 621, 2, 409, 1064] +[:mouse_move, 301, 619, 2, 410, 1065] +[:mouse_move, 301, 618, 2, 411, 1066] +[:mouse_move, 301, 617, 2, 412, 1068] +[:mouse_move, 301, 616, 2, 413, 1072] +[:mouse_move, 301, 615, 2, 414, 1075] +[:mouse_move, 301, 614, 2, 415, 1076] +[:mouse_move, 301, 612, 2, 416, 1077] +[:mouse_move, 301, 611, 2, 417, 1078] +[:mouse_move, 299, 604, 2, 418, 1079] +[:mouse_move, 297, 599, 2, 419, 1080] +[:mouse_move, 292, 586, 2, 420, 1081] +[:mouse_move, 268, 518, 2, 421, 1082] +[:mouse_move, 261, 492, 2, 422, 1083] +[:mouse_move, 252, 466, 2, 423, 1084] +[:mouse_move, 243, 437, 2, 424, 1085] +[:mouse_move, 239, 425, 2, 425, 1086] +[:mouse_move, 218, 366, 2, 426, 1087] +[:mouse_move, 216, 360, 2, 427, 1088] +[:mouse_move, 215, 358, 2, 428, 1089] +[:mouse_move, 216, 358, 2, 429, 1100] +[:mouse_move, 216, 360, 2, 430, 1102] +[:mouse_move, 217, 360, 2, 431, 1103] +[:mouse_move, 221, 366, 2, 432, 1104] +[:mouse_move, 225, 372, 2, 433, 1105] +[:mouse_move, 232, 383, 2, 434, 1106] +[:mouse_move, 237, 391, 2, 435, 1107] +[:mouse_move, 242, 399, 2, 436, 1108] +[:mouse_move, 245, 404, 2, 437, 1109] +[:mouse_move, 248, 409, 2, 438, 1110] +[:mouse_move, 249, 410, 2, 439, 1111] +[:mouse_move, 250, 411, 2, 440, 1112] +[:mouse_move, 250, 412, 2, 441, 1118] +[:mouse_move, 251, 412, 2, 442, 1125] +[:mouse_move, 251, 413, 2, 443, 1127] +[:key_down_raw, 97, 0, 2, 444, 1217] +[:key_up_raw, 97, 0, 2, 445, 1221] +[:key_down_raw, 97, 0, 2, 446, 1233] +[:key_up_raw, 97, 0, 2, 447, 1237] +[:key_down_raw, 98, 0, 2, 448, 1248] +[:key_up_raw, 98, 0, 2, 449, 1252] +[:key_down_raw, 98, 0, 2, 450, 1256] +[:key_up_raw, 98, 0, 2, 451, 1258] +[:key_down_raw, 98, 0, 2, 452, 1293] +[:key_up_raw, 98, 0, 2, 453, 1297] +[:key_down_raw, 99, 0, 2, 454, 1334] +[:key_up_raw, 99, 0, 2, 455, 1339] +[:key_down_raw, 98, 0, 2, 456, 1419] +[:key_up_raw, 98, 0, 2, 457, 1422] +[:key_down_raw, 98, 0, 2, 458, 1426] +[:key_up_raw, 98, 0, 2, 459, 1429] +[:key_down_raw, 98, 0, 2, 460, 1473] +[:key_up_raw, 98, 0, 2, 461, 1478] +[:key_down_raw, 113, 0, 2, 462, 1534] +[:key_up_raw, 113, 0, 2, 463, 1538] +[:key_down_raw, 98, 0, 2, 464, 1636] +[:key_up_raw, 98, 0, 2, 465, 1642] +[:key_down_raw, 102, 0, 2, 466, 1676] +[:key_up_raw, 102, 0, 2, 467, 1680] +[:key_down_raw, 102, 0, 2, 468, 1684] +[:key_up_raw, 102, 0, 2, 469, 1688] +[:key_down_raw, 113, 0, 2, 470, 1697] +[:key_up_raw, 113, 0, 2, 471, 1700] +[:key_down_raw, 98, 0, 2, 472, 1739] +[:key_up_raw, 98, 0, 2, 473, 1742] +[:key_down_raw, 98, 0, 2, 474, 1746] +[:key_up_raw, 98, 0, 2, 475, 1748] +[:key_down_raw, 102, 0, 2, 476, 1866] +[:key_up_raw, 102, 0, 2, 477, 1871] +[:key_down_raw, 120, 0, 2, 478, 1891] +[:key_up_raw, 120, 0, 2, 479, 1896] +[:mouse_move, 251, 415, 2, 480, 1934] +[:mouse_move, 255, 423, 2, 481, 1935] +[:mouse_move, 261, 433, 2, 482, 1936] +[:mouse_move, 277, 463, 2, 483, 1937] +[:mouse_move, 288, 481, 2, 484, 1938] +[:mouse_move, 302, 510, 2, 485, 1939] +[:mouse_move, 310, 526, 2, 486, 1940] +[:mouse_move, 323, 551, 2, 487, 1941] +[:mouse_move, 324, 554, 2, 488, 1942] +[:mouse_move, 327, 562, 2, 489, 1943] +[:mouse_move, 328, 565, 2, 490, 1944] +[:mouse_move, 328, 567, 2, 491, 1945] +[:mouse_move, 328, 566, 2, 492, 1949] +[:mouse_move, 326, 564, 2, 493, 1950] +[:mouse_move, 325, 562, 2, 494, 1951] +[:mouse_move, 323, 556, 2, 495, 1952] +[:mouse_move, 323, 553, 2, 496, 1953] +[:mouse_move, 321, 549, 2, 497, 1954] +[:mouse_move, 320, 545, 2, 498, 1955] +[:mouse_move, 319, 540, 2, 499, 1956] +[:mouse_move, 319, 538, 2, 500, 1957] +[:mouse_move, 319, 535, 2, 501, 1958] +[:mouse_move, 319, 534, 2, 502, 1959] +[:mouse_move, 319, 533, 2, 503, 2199] +[:mouse_move, 318, 533, 2, 504, 2201] +[:mouse_move, 317, 531, 2, 505, 2207] +[:mouse_move, 316, 530, 2, 506, 2208] +[:mouse_move, 314, 527, 2, 507, 2209] +[:mouse_move, 311, 522, 2, 508, 2210] +[:mouse_move, 300, 505, 2, 509, 2211] +[:mouse_move, 293, 492, 2, 510, 2212] +[:mouse_move, 272, 455, 2, 511, 2213] +[:key_down_raw, 100, 0, 2, 512, 2214] +[:mouse_move, 259, 434, 2, 513, 2214] +[:mouse_move, 243, 403, 2, 514, 2215] +[:mouse_move, 232, 382, 2, 515, 2216] +[:mouse_move, 221, 355, 2, 516, 2217] +[:mouse_move, 220, 351, 2, 517, 2218] +[:mouse_move, 218, 344, 2, 518, 2219] +[:mouse_move, 216, 335, 2, 519, 2220] +[:mouse_move, 216, 332, 2, 520, 2221] +[:mouse_move, 216, 327, 2, 521, 2222] +[:key_down_raw, 100, 0, 2, 522, 2229] +[:key_down_raw, 100, 0, 2, 523, 2231] +[:key_down_raw, 100, 0, 2, 524, 2233] +[:key_down_raw, 100, 0, 2, 525, 2235] +[:key_down_raw, 100, 0, 2, 526, 2237] +[:mouse_button_pressed, 1, 0, 1, 527, 2238] +[:key_down_raw, 100, 0, 2, 528, 2239] +[:mouse_move, 216, 325, 2, 529, 2239] +[:mouse_move, 216, 315, 2, 530, 2240] +[:key_down_raw, 100, 0, 2, 531, 2241] +[:mouse_move, 216, 305, 2, 532, 2241] +[:mouse_move, 219, 281, 2, 533, 2242] +[:key_down_raw, 100, 0, 2, 534, 2243] +[:mouse_move, 230, 234, 2, 535, 2243] +[:mouse_move, 231, 228, 2, 536, 2243] +[:key_down_raw, 100, 0, 2, 537, 2244] +[:mouse_move, 233, 223, 2, 538, 2244] +[:mouse_move, 237, 214, 2, 539, 2245] +[:mouse_move, 244, 207, 2, 540, 2246] +[:key_down_raw, 100, 0, 2, 541, 2246] +[:mouse_move, 247, 204, 2, 542, 2247] +[:mouse_move, 254, 199, 2, 543, 2248] +[:key_down_raw, 100, 0, 2, 544, 2248] +[:mouse_move, 257, 197, 2, 545, 2249] +[:mouse_move, 262, 194, 2, 546, 2250] +[:key_down_raw, 100, 0, 2, 547, 2250] +[:mouse_move, 264, 194, 2, 548, 2251] +[:mouse_move, 268, 193, 2, 549, 2252] +[:key_down_raw, 100, 0, 2, 550, 2252] +[:mouse_move, 269, 193, 2, 551, 2253] +[:mouse_move, 271, 193, 2, 552, 2254] +[:key_down_raw, 100, 0, 2, 553, 2254] +[:mouse_move, 272, 195, 2, 554, 2255] +[:mouse_move, 274, 202, 2, 555, 2256] +[:key_down_raw, 100, 0, 2, 556, 2256] +[:mouse_move, 275, 208, 2, 557, 2257] +[:mouse_move, 276, 225, 2, 558, 2258] +[:key_down_raw, 100, 0, 2, 559, 2258] +[:mouse_move, 275, 234, 2, 560, 2259] +[:mouse_move, 270, 247, 2, 561, 2260] +[:key_down_raw, 100, 0, 2, 562, 2260] +[:mouse_move, 265, 255, 2, 563, 2261] +[:mouse_move, 254, 270, 2, 564, 2262] +[:key_down_raw, 100, 0, 2, 565, 2262] +[:mouse_move, 248, 275, 2, 566, 2263] +[:mouse_move, 235, 285, 2, 567, 2264] +[:key_down_raw, 100, 0, 2, 568, 2264] +[:mouse_move, 232, 287, 2, 569, 2265] +[:mouse_move, 223, 291, 2, 570, 2266] +[:key_down_raw, 100, 0, 2, 571, 2266] +[:mouse_move, 219, 293, 2, 572, 2267] +[:mouse_move, 214, 295, 2, 573, 2268] +[:key_down_raw, 100, 0, 2, 574, 2268] +[:mouse_move, 212, 296, 2, 575, 2269] +[:mouse_move, 210, 297, 2, 576, 2270] +[:key_down_raw, 100, 0, 2, 577, 2270] +[:mouse_move, 208, 297, 2, 578, 2270] +[:mouse_move, 208, 298, 2, 579, 2271] +[:mouse_move, 207, 298, 2, 580, 2272] +[:key_down_raw, 100, 0, 2, 581, 2272] +[:mouse_move, 206, 298, 2, 582, 2273] +[:key_down_raw, 100, 0, 2, 583, 2274] +[:mouse_move, 206, 297, 2, 584, 2276] +[:key_down_raw, 100, 0, 2, 585, 2276] +[:mouse_move, 207, 291, 2, 586, 2276] +[:mouse_move, 209, 285, 2, 587, 2277] +[:mouse_move, 213, 271, 2, 588, 2278] +[:key_down_raw, 100, 0, 2, 589, 2278] +[:mouse_move, 215, 265, 2, 590, 2278] +[:mouse_move, 221, 251, 2, 591, 2279] +[:mouse_move, 227, 238, 2, 592, 2280] +[:key_down_raw, 100, 0, 2, 593, 2280] +[:mouse_move, 231, 228, 2, 594, 2280] +[:mouse_move, 235, 219, 2, 595, 2281] +[:mouse_move, 240, 211, 2, 596, 2282] +[:key_down_raw, 100, 0, 2, 597, 2282] +[:mouse_move, 247, 203, 2, 598, 2283] +[:mouse_move, 250, 199, 2, 599, 2284] +[:key_down_raw, 100, 0, 2, 600, 2284] +[:mouse_move, 259, 194, 2, 601, 2285] +[:mouse_move, 264, 193, 2, 602, 2286] +[:key_down_raw, 100, 0, 2, 603, 2286] +[:mouse_move, 276, 192, 2, 604, 2287] +[:mouse_move, 281, 192, 2, 605, 2288] +[:key_down_raw, 100, 0, 2, 606, 2288] +[:mouse_move, 289, 194, 2, 607, 2289] +[:mouse_move, 294, 194, 2, 608, 2290] +[:key_down_raw, 100, 0, 2, 609, 2290] +[:mouse_move, 301, 197, 2, 610, 2291] +[:key_down_raw, 100, 0, 2, 611, 2292] +[:mouse_move, 305, 199, 2, 612, 2292] +[:mouse_move, 308, 201, 2, 613, 2293] +[:key_down_raw, 100, 0, 2, 614, 2294] +[:mouse_move, 310, 201, 2, 615, 2294] +[:mouse_move, 311, 202, 2, 616, 2295] +[:mouse_move, 312, 203, 2, 617, 2296] +[:key_down_raw, 100, 0, 2, 618, 2296] +[:mouse_move, 312, 205, 2, 619, 2298] +[:key_down_raw, 100, 0, 2, 620, 2298] +[:mouse_move, 312, 207, 2, 621, 2299] +[:mouse_move, 310, 216, 2, 622, 2300] +[:key_down_raw, 100, 0, 2, 623, 2300] +[:mouse_move, 306, 224, 2, 624, 2301] +[:mouse_move, 298, 235, 2, 625, 2302] +[:key_down_raw, 100, 0, 2, 626, 2302] +[:mouse_move, 295, 238, 2, 627, 2303] +[:mouse_move, 286, 247, 2, 628, 2304] +[:key_down_raw, 100, 0, 2, 629, 2304] +[:mouse_move, 280, 252, 2, 630, 2305] +[:mouse_move, 270, 261, 2, 631, 2306] +[:key_down_raw, 100, 0, 2, 632, 2306] +[:mouse_move, 267, 263, 2, 633, 2307] +[:mouse_move, 258, 274, 2, 634, 2308] +[:key_down_raw, 100, 0, 2, 635, 2308] +[:mouse_move, 254, 279, 2, 636, 2309] +[:mouse_move, 245, 295, 2, 637, 2310] +[:key_down_raw, 100, 0, 2, 638, 2310] +[:mouse_move, 242, 303, 2, 639, 2311] +[:mouse_move, 240, 315, 2, 640, 2312] +[:key_down_raw, 100, 0, 2, 641, 2312] +[:mouse_move, 238, 323, 2, 642, 2313] +[:mouse_move, 238, 335, 2, 643, 2314] +[:key_down_raw, 100, 0, 2, 644, 2314] +[:mouse_move, 238, 338, 2, 645, 2315] +[:mouse_move, 238, 345, 2, 646, 2316] +[:key_down_raw, 100, 0, 2, 647, 2316] +[:mouse_move, 241, 349, 2, 648, 2317] +[:mouse_move, 247, 350, 2, 649, 2318] +[:key_down_raw, 100, 0, 2, 650, 2318] +[:mouse_move, 252, 350, 2, 651, 2319] +[:mouse_move, 260, 344, 2, 652, 2320] +[:key_down_raw, 100, 0, 2, 653, 2320] +[:mouse_move, 264, 340, 2, 654, 2321] +[:mouse_move, 266, 337, 2, 655, 2322] +[:key_down_raw, 100, 0, 2, 656, 2322] +[:mouse_move, 268, 334, 2, 657, 2322] +[:mouse_move, 270, 331, 2, 658, 2323] +[:mouse_move, 271, 329, 2, 659, 2324] +[:key_down_raw, 100, 0, 2, 660, 2324] +[:mouse_move, 272, 326, 2, 661, 2324] +[:mouse_move, 272, 323, 2, 662, 2325] +[:mouse_move, 272, 319, 2, 663, 2326] +[:key_down_raw, 100, 0, 2, 664, 2326] +[:mouse_move, 271, 317, 2, 665, 2326] +[:mouse_move, 266, 312, 2, 666, 2327] +[:mouse_move, 262, 310, 2, 667, 2328] +[:key_down_raw, 100, 0, 2, 668, 2328] +[:mouse_move, 256, 308, 2, 669, 2328] +[:mouse_move, 249, 306, 2, 670, 2329] +[:mouse_move, 243, 305, 2, 671, 2330] +[:key_down_raw, 100, 0, 2, 672, 2330] +[:mouse_move, 236, 304, 2, 673, 2330] +[:mouse_move, 231, 304, 2, 674, 2331] +[:mouse_move, 226, 306, 2, 675, 2332] +[:key_down_raw, 100, 0, 2, 676, 2332] +[:mouse_move, 219, 309, 2, 677, 2332] +[:mouse_move, 211, 315, 2, 678, 2333] +[:mouse_move, 206, 323, 2, 679, 2334] +[:key_down_raw, 100, 0, 2, 680, 2334] +[:mouse_move, 200, 332, 2, 681, 2334] +[:mouse_move, 197, 340, 2, 682, 2335] +[:mouse_move, 195, 344, 2, 683, 2336] +[:key_down_raw, 100, 0, 2, 684, 2336] +[:mouse_move, 190, 353, 2, 685, 2336] +[:mouse_move, 190, 358, 2, 686, 2337] +[:mouse_move, 188, 363, 2, 687, 2338] +[:key_down_raw, 100, 0, 2, 688, 2338] +[:mouse_move, 187, 376, 2, 689, 2339] +[:mouse_move, 187, 379, 2, 690, 2340] +[:key_down_raw, 100, 0, 2, 691, 2340] +[:mouse_move, 195, 388, 2, 692, 2341] +[:mouse_move, 201, 391, 2, 693, 2342] +[:key_down_raw, 100, 0, 2, 694, 2342] +[:mouse_move, 212, 395, 2, 695, 2343] +[:mouse_move, 218, 395, 2, 696, 2344] +[:key_down_raw, 100, 0, 2, 697, 2344] +[:mouse_move, 229, 395, 2, 698, 2345] +[:mouse_move, 234, 393, 2, 699, 2346] +[:key_down_raw, 100, 0, 2, 700, 2346] +[:mouse_move, 241, 385, 2, 701, 2347] +[:key_down_raw, 100, 0, 2, 702, 2348] +[:mouse_move, 245, 380, 2, 703, 2348] +[:mouse_move, 247, 374, 2, 704, 2349] +[:mouse_move, 251, 366, 2, 705, 2350] +[:key_down_raw, 100, 0, 2, 706, 2350] +[:mouse_move, 252, 363, 2, 707, 2351] +[:mouse_move, 254, 359, 2, 708, 2352] +[:key_down_raw, 100, 0, 2, 709, 2352] +[:mouse_move, 254, 357, 2, 710, 2353] +[:mouse_move, 255, 356, 2, 711, 2354] +[:key_down_raw, 100, 0, 2, 712, 2354] +[:mouse_move, 256, 357, 2, 713, 2356] +[:key_down_raw, 100, 0, 2, 714, 2356] +[:mouse_move, 257, 360, 2, 715, 2357] +[:mouse_move, 259, 373, 2, 716, 2358] +[:key_down_raw, 100, 0, 2, 717, 2358] +[:mouse_move, 260, 382, 2, 718, 2359] +[:mouse_move, 263, 395, 2, 719, 2360] +[:key_down_raw, 100, 0, 2, 720, 2360] +[:mouse_move, 263, 402, 2, 721, 2361] +[:mouse_move, 264, 414, 2, 722, 2362] +[:key_down_raw, 100, 0, 2, 723, 2362] +[:mouse_move, 265, 420, 2, 724, 2363] +[:mouse_move, 266, 428, 2, 725, 2364] +[:key_down_raw, 100, 0, 2, 726, 2364] +[:mouse_move, 267, 431, 2, 727, 2365] +[:mouse_move, 270, 434, 2, 728, 2366] +[:key_down_raw, 100, 0, 2, 729, 2366] +[:mouse_move, 273, 437, 2, 730, 2367] +[:mouse_move, 279, 437, 2, 731, 2368] +[:key_down_raw, 100, 0, 2, 732, 2368] +[:mouse_move, 281, 437, 2, 733, 2369] +[:mouse_move, 290, 436, 2, 734, 2370] +[:key_down_raw, 100, 0, 2, 735, 2370] +[:mouse_move, 294, 434, 2, 736, 2371] +[:mouse_move, 301, 431, 2, 737, 2372] +[:key_down_raw, 100, 0, 2, 738, 2372] +[:mouse_move, 304, 431, 2, 739, 2373] +[:mouse_move, 312, 428, 2, 740, 2374] +[:key_down_raw, 100, 0, 2, 741, 2374] +[:mouse_move, 318, 427, 2, 742, 2375] +[:mouse_move, 325, 425, 2, 743, 2376] +[:key_down_raw, 100, 0, 2, 744, 2376] +[:mouse_move, 327, 424, 2, 745, 2377] +[:mouse_move, 330, 423, 2, 746, 2378] +[:key_down_raw, 100, 0, 2, 747, 2378] +[:mouse_move, 333, 422, 2, 748, 2378] +[:mouse_move, 335, 422, 2, 749, 2379] +[:mouse_move, 338, 420, 2, 750, 2380] +[:key_down_raw, 100, 0, 2, 751, 2380] +[:mouse_move, 340, 420, 2, 752, 2380] +[:mouse_move, 344, 419, 2, 753, 2381] +[:mouse_move, 347, 419, 2, 754, 2382] +[:key_down_raw, 100, 0, 2, 755, 2382] +[:mouse_move, 351, 419, 2, 756, 2382] +[:mouse_move, 353, 419, 2, 757, 2383] +[:mouse_move, 358, 419, 2, 758, 2384] +[:key_down_raw, 100, 0, 2, 759, 2384] +[:mouse_move, 360, 419, 2, 760, 2384] +[:mouse_move, 365, 419, 2, 761, 2385] +[:mouse_move, 367, 419, 2, 762, 2386] +[:key_down_raw, 100, 0, 2, 763, 2386] +[:mouse_move, 373, 420, 2, 764, 2386] +[:mouse_move, 378, 420, 2, 765, 2387] +[:mouse_move, 382, 420, 2, 766, 2388] +[:key_down_raw, 100, 0, 2, 767, 2388] +[:mouse_move, 389, 419, 2, 768, 2389] +[:mouse_move, 394, 417, 2, 769, 2390] +[:key_down_raw, 100, 0, 2, 770, 2390] +[:mouse_move, 401, 411, 2, 771, 2391] +[:mouse_move, 404, 407, 2, 772, 2392] +[:key_down_raw, 100, 0, 2, 773, 2392] +[:mouse_move, 411, 398, 2, 774, 2393] +[:mouse_move, 412, 394, 2, 775, 2394] +[:key_down_raw, 100, 0, 2, 776, 2394] +[:mouse_move, 415, 387, 2, 777, 2395] +[:mouse_move, 416, 383, 2, 778, 2396] +[:key_down_raw, 100, 0, 2, 779, 2396] +[:mouse_move, 418, 375, 2, 780, 2397] +[:mouse_move, 418, 370, 2, 781, 2398] +[:key_down_raw, 100, 0, 2, 782, 2398] +[:mouse_move, 419, 359, 2, 783, 2399] +[:mouse_move, 419, 354, 2, 784, 2400] +[:key_down_raw, 100, 0, 2, 785, 2400] +[:mouse_move, 419, 348, 2, 786, 2401] +[:mouse_move, 419, 344, 2, 787, 2402] +[:key_down_raw, 100, 0, 2, 788, 2402] +[:mouse_move, 419, 341, 2, 789, 2403] +[:mouse_move, 419, 338, 2, 790, 2404] +[:key_down_raw, 100, 0, 2, 791, 2404] +[:mouse_move, 419, 337, 2, 792, 2405] +[:mouse_move, 417, 336, 2, 793, 2406] +[:key_down_raw, 100, 0, 2, 794, 2406] +[:mouse_move, 415, 336, 2, 795, 2408] +[:key_down_raw, 100, 0, 2, 796, 2408] +[:mouse_move, 414, 336, 2, 797, 2409] +[:key_down_raw, 100, 0, 2, 798, 2410] +[:key_down_raw, 100, 0, 2, 799, 2412] +[:mouse_move, 414, 334, 2, 800, 2414] +[:key_down_raw, 100, 0, 2, 801, 2414] +[:mouse_move, 416, 334, 2, 802, 2416] +[:key_down_raw, 100, 0, 2, 803, 2416] +[:mouse_move, 418, 339, 2, 804, 2418] +[:key_down_raw, 100, 0, 2, 805, 2418] +[:mouse_move, 419, 347, 2, 806, 2419] +[:mouse_move, 420, 366, 2, 807, 2420] +[:key_down_raw, 100, 0, 2, 808, 2420] +[:mouse_move, 420, 383, 2, 809, 2421] +[:mouse_move, 412, 412, 2, 810, 2422] +[:key_down_raw, 100, 0, 2, 811, 2422] +[:mouse_move, 409, 420, 2, 812, 2423] +[:mouse_move, 402, 433, 2, 813, 2424] +[:key_down_raw, 100, 0, 2, 814, 2424] +[:mouse_move, 399, 439, 2, 815, 2425] +[:mouse_move, 395, 446, 2, 816, 2426] +[:key_down_raw, 100, 0, 2, 817, 2426] +[:mouse_move, 393, 448, 2, 818, 2427] +[:mouse_move, 390, 451, 2, 819, 2428] +[:key_down_raw, 100, 0, 2, 820, 2428] +[:mouse_move, 389, 452, 2, 821, 2429] +[:mouse_move, 387, 453, 2, 822, 2430] +[:key_down_raw, 100, 0, 2, 823, 2430] +[:mouse_move, 385, 453, 2, 824, 2431] +[:mouse_move, 383, 453, 2, 825, 2432] +[:key_down_raw, 100, 0, 2, 826, 2432] +[:mouse_move, 381, 453, 2, 827, 2432] +[:mouse_move, 379, 452, 2, 828, 2433] +[:mouse_move, 377, 451, 2, 829, 2434] +[:key_down_raw, 100, 0, 2, 830, 2434] +[:mouse_move, 376, 449, 2, 831, 2434] +[:mouse_move, 374, 445, 2, 832, 2435] +[:mouse_move, 373, 442, 2, 833, 2436] +[:key_down_raw, 100, 0, 2, 834, 2436] +[:mouse_move, 371, 437, 2, 835, 2436] +[:mouse_move, 370, 435, 2, 836, 2437] +[:mouse_move, 370, 432, 2, 837, 2438] +[:key_down_raw, 100, 0, 2, 838, 2438] +[:mouse_move, 370, 428, 2, 839, 2438] +[:mouse_move, 370, 424, 2, 840, 2439] +[:mouse_move, 370, 419, 2, 841, 2440] +[:key_down_raw, 100, 0, 2, 842, 2440] +[:mouse_move, 370, 417, 2, 843, 2440] +[:mouse_move, 371, 414, 2, 844, 2441] +[:mouse_move, 373, 411, 2, 845, 2442] +[:key_down_raw, 100, 0, 2, 846, 2442] +[:mouse_move, 376, 409, 2, 847, 2442] +[:mouse_move, 378, 407, 2, 848, 2443] +[:mouse_move, 380, 406, 2, 849, 2444] +[:key_down_raw, 100, 0, 2, 850, 2444] +[:mouse_move, 383, 405, 2, 851, 2444] +[:mouse_move, 385, 405, 2, 852, 2445] +[:mouse_move, 386, 404, 2, 853, 2446] +[:key_down_raw, 100, 0, 2, 854, 2446] +[:mouse_move, 388, 403, 2, 855, 2447] +[:mouse_move, 389, 403, 2, 856, 2448] +[:key_down_raw, 100, 0, 2, 857, 2448] +[:key_down_raw, 100, 0, 2, 858, 2450] +[:key_down_raw, 100, 0, 2, 859, 2452] +[:key_down_raw, 100, 0, 2, 860, 2454] +[:key_down_raw, 100, 0, 2, 861, 2456] +[:mouse_move, 389, 404, 2, 862, 2458] +[:key_down_raw, 100, 0, 2, 863, 2458] +[:key_down_raw, 100, 0, 2, 864, 2460] +[:key_down_raw, 100, 0, 2, 865, 2462] +[:key_down_raw, 100, 0, 2, 866, 2464] +[:key_down_raw, 100, 0, 2, 867, 2466] +[:key_up_raw, 100, 0, 2, 868, 2468] +[:mouse_button_up, 1, 0, 1, 869, 2473] +[:mouse_move, 276, 362, 2, 870, 2473] +[:mouse_move, 239, 339, 2, 871, 2474] +[:mouse_move, 210, 314, 2, 872, 2475] +[:mouse_move, 186, 291, 2, 873, 2476] +[:mouse_move, 167, 265, 2, 874, 2477] +[:mouse_move, 159, 253, 2, 875, 2478] +[:mouse_move, 154, 245, 2, 876, 2479] +[:mouse_move, 150, 236, 2, 877, 2480] +[:mouse_move, 149, 234, 2, 878, 2481] +[:mouse_move, 149, 232, 2, 879, 2482] +[:mouse_move, 152, 232, 2, 880, 2484] +[:mouse_move, 154, 233, 2, 881, 2485] +[:mouse_move, 157, 236, 2, 882, 2486] +[:mouse_move, 159, 238, 2, 883, 2487] +[:mouse_move, 163, 242, 2, 884, 2488] +[:mouse_move, 165, 245, 2, 885, 2489] +[:mouse_move, 170, 253, 2, 886, 2490] +[:mouse_move, 173, 257, 2, 887, 2491] +[:mouse_move, 180, 270, 2, 888, 2492] +[:mouse_move, 183, 275, 2, 889, 2493] +[:mouse_move, 190, 287, 2, 890, 2494] +[:mouse_move, 192, 290, 2, 891, 2495] +[:mouse_move, 199, 303, 2, 892, 2496] +[:mouse_move, 203, 307, 2, 893, 2497] +[:mouse_move, 206, 313, 2, 894, 2498] +[:mouse_move, 207, 317, 2, 895, 2499] +[:mouse_move, 209, 321, 2, 896, 2500] +[:mouse_move, 210, 322, 2, 897, 2501] +[:mouse_move, 211, 324, 2, 898, 2502] +[:mouse_move, 212, 325, 2, 899, 2504] +[:mouse_move, 213, 326, 2, 900, 2505] +[:mouse_move, 214, 326, 2, 901, 2510] +[:key_down_raw, 96, 0, 2, 902, 2711] +[:key_up_raw, 96, 0, 2, 903, 2716] +[:key_down_raw, 13, 0, 2, 904, 2856] diff --git a/samples/99_sample_sprite_animation_creator/sprites/square-blue.png b/samples/99_sample_sprite_animation_creator/sprites/square-blue.png Binary files differnew file mode 100644 index 0000000..b840849 --- /dev/null +++ b/samples/99_sample_sprite_animation_creator/sprites/square-blue.png diff --git a/samples/99_sample_sprite_animation_creator/sprites/square-white.png b/samples/99_sample_sprite_animation_creator/sprites/square-white.png Binary files differnew file mode 100644 index 0000000..378c565 --- /dev/null +++ b/samples/99_sample_sprite_animation_creator/sprites/square-white.png |
