summaryrefslogtreecommitdiffhomepage
path: root/docs/parse_log.txt
diff options
context:
space:
mode:
authorAmir Rajan <[email protected]>2021-12-10 00:09:48 -0600
committerAmir Rajan <[email protected]>2021-12-10 00:09:48 -0600
commiteaa29e72939f5edf61735ccbb73c36ee89369f65 (patch)
treec310fac2e39bd799bf7fc1f73d35c12bcc5187b7 /docs/parse_log.txt
parent33dfdde9ae03e3218b4796f3595d3b727f626587 (diff)
downloaddragonruby-game-toolkit-contrib-eaa29e72939f5edf61735ccbb73c36ee89369f65.tar.gz
dragonruby-game-toolkit-contrib-eaa29e72939f5edf61735ccbb73c36ee89369f65.zip
Synced with DragonRuby Game Toolkit v3.2.
Diffstat (limited to 'docs/parse_log.txt')
-rw-r--r--docs/parse_log.txt15673
1 files changed, 12380 insertions, 3293 deletions
diff --git a/docs/parse_log.txt b/docs/parse_log.txt
index 07e163d..047852d 100644
--- a/docs/parse_log.txt
+++ b/docs/parse_log.txt
@@ -5269,11 +5269,18 @@ Shows the mouse cursor.
*** True Line Result
*** ~.hide_cursor~
** Processing line: ~Hides the mouse cursor.~
-** Processing line: ~*** ~.cursor_shown?~~
+** Processing line: ~*** ~.set_cursor path, dx, dy~~
- Header detected.
*** True Line Result
Hides the mouse cursor.
*** True Line Result
+*** ~.set_cursor path, dx, dy~
+** Processing line: ~Sets the system cursor to a sprite ~path~ with an offset of ~dx~ and ~dy~.~
+** Processing line: ~*** ~.cursor_shown?~~
+- Header detected.
+*** True Line Result
+Sets the system cursor to a sprite ~path~ with an offset of ~dx~ and ~dy~.
+*** True Line Result
*** ~.cursor_shown?~
** Processing line: ~Returns ~true~ if the mouse cursor is shown.~
** Processing line: ~*** ~.set_window_fullscreen enabled~~
@@ -5407,6 +5414,119 @@ This function takes in two parameters. The first parameter is the file path and
- End of paragraph detected.
*** True Line Result
+** Processing line: ~* DOCS: ~GTK::Runtime#benchmark~~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+* DOCS: ~GTK::Runtime#benchmark~
+** Processing line: ~You can use this function to compare the relative performance of methods.~
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+You can use this function to compare the relative performance of methods.
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ # press r to run benchmark~
+- Inside source: true
+*** True Line Result
+ # press r to run benchmark
+** Processing line: ~ if args.inputs.keyboard.key_down.r~
+- Inside source: true
+*** True Line Result
+ if args.inputs.keyboard.key_down.r
+** Processing line: ~ args.gtk.console.show~
+- Inside source: true
+*** True Line Result
+ args.gtk.console.show
+** Processing line: ~ args.gtk.benchmark iterations: 1000, # number of iterations~
+- Inside source: true
+*** True Line Result
+ args.gtk.benchmark iterations: 1000, # number of iterations
+** Processing line: ~ # label for experiment~
+- Inside source: true
+*** True Line Result
+ # label for experiment
+** Processing line: ~ using_numeric_map: -> () {~
+- Inside source: true
+*** True Line Result
+ using_numeric_map: -> () {
+** Processing line: ~ # experiment body~
+- Inside source: true
+*** True Line Result
+ # experiment body
+** Processing line: ~ v = 100.map do |i|~
+- Inside source: true
+*** True Line Result
+ v = 100.map do |i|
+** Processing line: ~ i * 100~
+- Inside source: true
+*** True Line Result
+ i * 100
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ },~
+- Inside source: true
+*** True Line Result
+ },
+** Processing line: ~ # label for experiment~
+- Inside source: true
+*** True Line Result
+ # label for experiment
+** Processing line: ~ using_numeric_times: -> () {~
+- Inside source: true
+*** True Line Result
+ using_numeric_times: -> () {
+** Processing line: ~ # experiment body~
+- Inside source: true
+*** True Line Result
+ # experiment body
+** Processing line: ~ v = []~
+- Inside source: true
+*** True Line Result
+ v = []
+** Processing line: ~ 100.times do |i|~
+- Inside source: true
+*** True Line Result
+ 100.times do |i|
+** Processing line: ~ v << i * 100~
+- Inside source: true
+*** True Line Result
+ v << i * 100
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
** Processing line: ~* DOCS: ~Array~~
- Header detected.
*** True Line Result
@@ -15439,10 +15559,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# To see how many frames its been since the click occurred
-** Processing line: ~ # Use args.inputs.mouse.click.creat_at_elapsed~
+** Processing line: ~ # Use args.inputs.mouse.click.created_at_elapsed~
- Inside source: true
*** True Line Result
- # Use args.inputs.mouse.click.creat_at_elapsed
+ # Use args.inputs.mouse.click.created_at_elapsed
** Processing line: ~~
- Inside source: true
*** True Line Result
@@ -26059,18 +26179,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def calc_player_dx
-** Processing line: ~ player.y += player.dy~
+** Processing line: ~ player.dx = player.dx.clamp(-5, 5)~
- Inside source: true
*** True Line Result
- player.y += player.dy
-** Processing line: ~ player.dy += state.gravity~
+ player.dx = player.dx.clamp(-5, 5)
+** Processing line: ~ player.dx *= 0.9~
- Inside source: true
*** True Line Result
- player.dy += state.gravity
-** Processing line: ~ player.dy += player.dy * state.drag ** 2 * -1~
+ player.dx *= 0.9
+** Processing line: ~ player.x += player.dx~
- Inside source: true
*** True Line Result
- player.dy += player.dy * state.drag ** 2 * -1
+ player.x += player.dx
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -26083,18 +26203,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def calc_player_dy
-** Processing line: ~ player.dx = player.dx.clamp(-5, 5)~
+** Processing line: ~ player.y += player.dy~
- Inside source: true
*** True Line Result
- player.dx = player.dx.clamp(-5, 5)
-** Processing line: ~ player.dx *= 0.9~
+ player.y += player.dy
+** Processing line: ~ player.dy += state.gravity~
- Inside source: true
*** True Line Result
- player.dx *= 0.9
-** Processing line: ~ player.x += player.dx~
+ player.dy += state.gravity
+** Processing line: ~ player.dy += player.dy * state.drag ** 2 * -1~
- Inside source: true
*** True Line Result
- player.x += player.dx
+ player.dy += player.dy * state.drag ** 2 * -1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -26679,14 +26799,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ # Sets default values~
+** Processing line: ~ def init_game~
- Inside source: true
*** True Line Result
- # Sets default values
-** Processing line: ~ def defaults~
-- Inside source: true
-*** True Line Result
- def defaults
+ def init_game
** Processing line: ~ s.platforms ||= [ # initializes platforms collection with two platforms using hashes~
- Inside source: true
*** True Line Result
@@ -26775,6 +26891,26 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
+** Processing line: ~ # Sets default values~
+- Inside source: true
+*** True Line Result
+ # Sets default values
+** Processing line: ~ def defaults~
+- Inside source: true
+*** True Line Result
+ def defaults
+** Processing line: ~ init_game~
+- Inside source: true
+*** True Line Result
+ init_game
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~ # Outputs objects onto the screen~
- Inside source: true
*** True Line Result
@@ -27123,10 +27259,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
else
+** Processing line: ~ # game over~
+- Inside source: true
+*** True Line Result
+ # game over
** Processing line: ~ s.as_hash.clear # otherwise clear the hash (no new platform is necessary)~
- Inside source: true
*** True Line Result
s.as_hash.clear # otherwise clear the hash (no new platform is necessary)
+** Processing line: ~ init_game~
+- Inside source: true
+*** True Line Result
+ init_game
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -38011,14 +38155,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def tick
-** Processing line: ~ state.current_turn ||= :x~
-- Inside source: true
-*** True Line Result
- state.current_turn ||= :x
-** Processing line: ~ state.space_combinations = [-1, 0, 1].product([-1, 0, 1]).to_a~
+** Processing line: ~ init_new_game~
- Inside source: true
*** True Line Result
- state.space_combinations = [-1, 0, 1].product([-1, 0, 1]).to_a
+ init_new_game
** Processing line: ~ render_board~
- Inside source: true
*** True Line Result
@@ -38035,6 +38175,54 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
+** Processing line: ~ def init_new_game~
+- Inside source: true
+*** True Line Result
+ def init_new_game
+** Processing line: ~ state.current_turn ||= :x~
+- Inside source: true
+*** True Line Result
+ state.current_turn ||= :x
+** Processing line: ~ state.space_combinations ||= [-1, 0, 1].product([-1, 0, 1]).to_a~
+- Inside source: true
+*** True Line Result
+ state.space_combinations ||= [-1, 0, 1].product([-1, 0, 1]).to_a
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ state.spaces ||= {}~
+- Inside source: true
+*** True Line Result
+ state.spaces ||= {}
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ state.space_combinations.each do |x, y|~
+- Inside source: true
+*** True Line Result
+ state.space_combinations.each do |x, y|
+** Processing line: ~ state.spaces[x] ||= {}~
+- Inside source: true
+*** True Line Result
+ state.spaces[x] ||= {}
+** Processing line: ~ state.spaces[x][y] ||= state.new_entity(:space)~
+- Inside source: true
+*** True Line Result
+ state.spaces[x][y] ||= state.new_entity(:space)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~ # Uses borders to create grid squares for the game's board. Also outputs the game pieces using labels.~
- Inside source: true
*** True Line Result
@@ -38335,6 +38523,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
gtk.reset
+** Processing line: ~ init_new_game~
+- Inside source: true
+*** True Line Result
+ init_new_game
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -39603,10 +39795,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# Find all zombies that intersect with the player. They are considered killed.
-** Processing line: ~ killed_this_frame = state.zombies.find_all { |z| z.sprite.intersect_rect? state.player_sprite }~
+** Processing line: ~ killed_this_frame = state.zombies.find_all { |z| z.sprite && (z.sprite.intersect_rect? state.player_sprite) }~
- Inside source: true
*** True Line Result
- killed_this_frame = state.zombies.find_all { |z| z.sprite.intersect_rect? state.player_sprite }
+ killed_this_frame = state.zombies.find_all { |z| z.sprite && (z.sprite.intersect_rect? state.player_sprite) }
** Processing line: ~ state.zombies = state.zombies - killed_this_frame # remove newly killed zombies from zombies collection~
- Inside source: true
*** True Line Result
@@ -43235,6 +43427,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def playtime_str t
+** Processing line: ~ return "" unless t~
+- Inside source: true
+*** True Line Result
+ return "" unless t
** Processing line: ~ minutes = (t / 60.0).floor~
- Inside source: true
*** True Line Result
@@ -43683,10 +43879,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
col: 2,
-** Processing line: ~ percentage: audio_entry.playtime / audio_entry.length_,~
+** Processing line: ~ percentage: (audio_entry.playtime || 1) / (audio_entry.length_ || 1),~
- Inside source: true
*** True Line Result
- percentage: audio_entry.playtime / audio_entry.length_,
+ percentage: (audio_entry.playtime || 1) / (audio_entry.length_ || 1),
** Processing line: ~ text: "#{playtime_str(audio_entry.playtime)} / #{playtime_str(audio_entry.length_)}")~
- Inside source: true
*** True Line Result
@@ -44231,10 +44427,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
{ name: :splash, path: "sounds/splash.wav" },
-** Processing line: ~ { name: :drum, path: "sounds/drum.wav" },~
+** Processing line: ~ { name: :drum, path: "sounds/drum.mp3" },~
- Inside source: true
*** True Line Result
- { name: :drum, path: "sounds/drum.wav" },
+ { name: :drum, path: "sounds/drum.mp3" },
** Processing line: ~ { name: :spring, path: "sounds/spring.wav" },~
- Inside source: true
*** True Line Result
@@ -44487,70 +44683,6 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
-** Processing line: ~*** Advanced Audio - Audio Mixer - Metadata - ios_metadata.txt~
-- Header detected.
-*** True Line Result
-
-*** True Line Result
-*** Advanced Audio - Audio Mixer - Metadata - ios_metadata.txt
-** Processing line: ~#+begin_src ruby~
-- Line was identified as the beginning of a code block.
-*** True Line Result
-
-*** True Line Result
-#+begin_src ruby
-** Processing line: ~ # ./samples/07_advanced_audio/01_audio_mixer/metadata/ios_metadata.txt~
-- Inside source: true
-*** True Line Result
- # ./samples/07_advanced_audio/01_audio_mixer/metadata/ios_metadata.txt
-** Processing line: ~ # ios_metadata.txt is used by the Pro version of DragonRuby Game Toolkit to create iOS apps.~
-- Inside source: true
-*** True Line Result
- # ios_metadata.txt is used by the Pro version of DragonRuby Game Toolkit to create iOS apps.
-** Processing line: ~ # Information about the Pro version can be found at: http://dragonruby.org/toolkit/game#purchase~
-- Inside source: true
-*** True Line Result
- # Information about the Pro version can be found at: http://dragonruby.org/toolkit/game#purchase
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # teamid needs to be set to your assigned Team Id which can be found at https://developer.apple.com/account/#/membership/~
-- Inside source: true
-*** True Line Result
- # teamid needs to be set to your assigned Team Id which can be found at https://developer.apple.com/account/#/membership/
-** Processing line: ~ teamid=~
-- Inside source: true
-*** True Line Result
- teamid=
-** Processing line: ~ # appid needs to be set to your application identifier which can be found at https://developer.apple.com/account/resources/identifiers/list~
-- Inside source: true
-*** True Line Result
- # appid needs to be set to your application identifier which can be found at https://developer.apple.com/account/resources/identifiers/list
-** Processing line: ~ appid=~
-- Inside source: true
-*** True Line Result
- appid=
-** Processing line: ~ # appname is the name you want to show up underneath the app icon on the device. Keep it under 10 characters.~
-- Inside source: true
-*** True Line Result
- # appname is the name you want to show up underneath the app icon on the device. Keep it under 10 characters.
-** Processing line: ~ appname=~
-- Inside source: true
-*** True Line Result
- appname=
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~#+end_src~
-- Line was identified as the end of a code block.
-*** True Line Result
-#+end_src
-** Processing line: ~~
-- End of paragraph detected.
-*** True Line Result
-
** Processing line: ~*** Advanced Audio - Sound Synthesis - main.rb~
- Header detected.
*** True Line Result
@@ -46951,6 +47083,542 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
+** Processing line: ~*** Advanced Rendering - Labels With Wrapped Text - main.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+*** Advanced Rendering - Labels With Wrapped Text - main.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./samples/07_advanced_rendering/00_labels_with_wrapped_text/app/main.rb~
+- Inside source: true
+*** True Line Result
+ # ./samples/07_advanced_rendering/00_labels_with_wrapped_text/app/main.rb
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ # defaults~
+- Inside source: true
+*** True Line Result
+ # defaults
+** Processing line: ~ args.state.scroll_location ||= 0~
+- Inside source: true
+*** True Line Result
+ args.state.scroll_location ||= 0
+** Processing line: ~ args.state.textbox.messages ||= []~
+- Inside source: true
+*** True Line Result
+ args.state.textbox.messages ||= []
+** Processing line: ~ args.state.textbox.scroll ||= 0~
+- Inside source: true
+*** True Line Result
+ args.state.textbox.scroll ||= 0
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # render~
+- Inside source: true
+*** True Line Result
+ # render
+** Processing line: ~ args.outputs.background_color = [0, 0, 0, 255]~
+- Inside source: true
+*** True Line Result
+ args.outputs.background_color = [0, 0, 0, 255]
+** Processing line: ~ render_messages args~
+- Inside source: true
+*** True Line Result
+ render_messages args
+** Processing line: ~ render_instructions args~
+- Inside source: true
+*** True Line Result
+ render_instructions args
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # inputs~
+- Inside source: true
+*** True Line Result
+ # inputs
+** Processing line: ~ if args.inputs.keyboard.key_down.one~
+- Inside source: true
+*** True Line Result
+ if args.inputs.keyboard.key_down.one
+** Processing line: ~ queue_message args, "Hello there neighbour! my name is mark, how is your day today?"~
+- Inside source: true
+*** True Line Result
+ queue_message args, "Hello there neighbour! my name is mark, how is your day today?"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if args.inputs.keyboard.key_down.two~
+- Inside source: true
+*** True Line Result
+ if args.inputs.keyboard.key_down.two
+** Processing line: ~ queue_message args, "I'm doing great sir, actually I'm having a picnic today"~
+- Inside source: true
+*** True Line Result
+ queue_message args, "I'm doing great sir, actually I'm having a picnic today"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if args.inputs.keyboard.key_down.three~
+- Inside source: true
+*** True Line Result
+ if args.inputs.keyboard.key_down.three
+** Processing line: ~ queue_message args, "Well that sounds wonderful!"~
+- Inside source: true
+*** True Line Result
+ queue_message args, "Well that sounds wonderful!"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if args.inputs.keyboard.key_down.home~
+- Inside source: true
+*** True Line Result
+ if args.inputs.keyboard.key_down.home
+** Processing line: ~ args.state.scroll_location = 1~
+- Inside source: true
+*** True Line Result
+ args.state.scroll_location = 1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if args.inputs.keyboard.key_down.delete~
+- Inside source: true
+*** True Line Result
+ if args.inputs.keyboard.key_down.delete
+** Processing line: ~ clear_message_queue args~
+- Inside source: true
+*** True Line Result
+ clear_message_queue args
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def queue_message args, msg~
+- Inside source: true
+*** True Line Result
+ def queue_message args, msg
+** Processing line: ~ args.state.textbox.messages.concat msg.wrapped_lines 50~
+- Inside source: true
+*** True Line Result
+ args.state.textbox.messages.concat msg.wrapped_lines 50
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def clear_message_queue args~
+- Inside source: true
+*** True Line Result
+ def clear_message_queue args
+** Processing line: ~ args.state.textbox.messages = nil~
+- Inside source: true
+*** True Line Result
+ args.state.textbox.messages = nil
+** Processing line: ~ args.state.textbox.scroll = 0~
+- Inside source: true
+*** True Line Result
+ args.state.textbox.scroll = 0
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def render_messages args~
+- Inside source: true
+*** True Line Result
+ def render_messages args
+** Processing line: ~ args.outputs[:textbox].w = 400~
+- Inside source: true
+*** True Line Result
+ args.outputs[:textbox].w = 400
+** Processing line: ~ args.outputs[:textbox].h = 720~
+- Inside source: true
+*** True Line Result
+ args.outputs[:textbox].h = 720
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.outputs.primitives << args.state.textbox.messages.each_with_index.map do |s, idx|~
+- Inside source: true
+*** True Line Result
+ args.outputs.primitives << args.state.textbox.messages.each_with_index.map do |s, idx|
+** Processing line: ~ {~
+- Inside source: true
+*** True Line Result
+ {
+** Processing line: ~ x: 0,~
+- Inside source: true
+*** True Line Result
+ x: 0,
+** Processing line: ~ y: 20 * (args.state.textbox.messages.size - idx) + args.state.textbox.scroll * 20,~
+- Inside source: true
+*** True Line Result
+ y: 20 * (args.state.textbox.messages.size - idx) + args.state.textbox.scroll * 20,
+** Processing line: ~ text: s,~
+- Inside source: true
+*** True Line Result
+ text: s,
+** Processing line: ~ size_enum: -3,~
+- Inside source: true
+*** True Line Result
+ size_enum: -3,
+** Processing line: ~ alignment_enum: 0,~
+- Inside source: true
+*** True Line Result
+ alignment_enum: 0,
+** Processing line: ~ r: 255, g:255, b: 255, a: 255~
+- Inside source: true
+*** True Line Result
+ r: 255, g:255, b: 255, a: 255
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.outputs[:textbox].labels << args.state.textbox.messages.each_with_index.map do |s, idx|~
+- Inside source: true
+*** True Line Result
+ args.outputs[:textbox].labels << args.state.textbox.messages.each_with_index.map do |s, idx|
+** Processing line: ~ {~
+- Inside source: true
+*** True Line Result
+ {
+** Processing line: ~ x: 0,~
+- Inside source: true
+*** True Line Result
+ x: 0,
+** Processing line: ~ y: 20 * (args.state.textbox.messages.size - idx) + args.state.textbox.scroll * 20,~
+- Inside source: true
+*** True Line Result
+ y: 20 * (args.state.textbox.messages.size - idx) + args.state.textbox.scroll * 20,
+** Processing line: ~ text: s,~
+- Inside source: true
+*** True Line Result
+ text: s,
+** Processing line: ~ size_enum: -3,~
+- Inside source: true
+*** True Line Result
+ size_enum: -3,
+** Processing line: ~ alignment_enum: 0,~
+- Inside source: true
+*** True Line Result
+ alignment_enum: 0,
+** Processing line: ~ r: 255, g:255, b: 255, a: 255~
+- Inside source: true
+*** True Line Result
+ r: 255, g:255, b: 255, a: 255
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.outputs[:textbox].borders << [0, 0, args.outputs[:textbox].w, 720]~
+- Inside source: true
+*** True Line Result
+ args.outputs[:textbox].borders << [0, 0, args.outputs[:textbox].w, 720]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.state.textbox.scroll += args.inputs.mouse.wheel.y unless args.inputs.mouse.wheel.nil?~
+- Inside source: true
+*** True Line Result
+ args.state.textbox.scroll += args.inputs.mouse.wheel.y unless args.inputs.mouse.wheel.nil?
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if args.state.scroll_location > 0~
+- Inside source: true
+*** True Line Result
+ if args.state.scroll_location > 0
+** Processing line: ~ args.state.textbox.scroll = 0~
+- Inside source: true
+*** True Line Result
+ args.state.textbox.scroll = 0
+** Processing line: ~ args.state.scroll_location = 0~
+- Inside source: true
+*** True Line Result
+ args.state.scroll_location = 0
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.outputs.sprites << [900, 0, args.outputs[:textbox].w, 720, :textbox]~
+- Inside source: true
+*** True Line Result
+ args.outputs.sprites << [900, 0, args.outputs[:textbox].w, 720, :textbox]
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def render_instructions args~
+- Inside source: true
+*** True Line Result
+ def render_instructions args
+** Processing line: ~ args.outputs.labels << [30,~
+- Inside source: true
+*** True Line Result
+ args.outputs.labels << [30,
+** Processing line: ~ 30.from_top,~
+- Inside source: true
+*** True Line Result
+ 30.from_top,
+** Processing line: ~ "press 1, 2, 3 to display messages, MOUSE WHEEL to scroll, HOME to go to top, BACKSPACE to delete.",~
+- Inside source: true
+*** True Line Result
+ "press 1, 2, 3 to display messages, MOUSE WHEEL to scroll, HOME to go to top, BACKSPACE to delete.",
+** Processing line: ~ 0, 255, 255]~
+- Inside source: true
+*** True Line Result
+ 0, 255, 255]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.outputs.primitives << [0, 55.from_top, 1280, 30, :pixel, 0, 255, 0, 0, 0].sprite~
+- Inside source: true
+*** True Line Result
+ args.outputs.primitives << [0, 55.from_top, 1280, 30, :pixel, 0, 255, 0, 0, 0].sprite
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
+** Processing line: ~*** Advanced Rendering - Rotating Label - main.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+*** Advanced Rendering - Rotating Label - main.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./samples/07_advanced_rendering/00_rotating_label/app/main.rb~
+- Inside source: true
+*** True Line Result
+ # ./samples/07_advanced_rendering/00_rotating_label/app/main.rb
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ # set the render target width and height to match the label~
+- Inside source: true
+*** True Line Result
+ # set the render target width and height to match the label
+** Processing line: ~ args.outputs[:scene].w = 220~
+- Inside source: true
+*** True Line Result
+ args.outputs[:scene].w = 220
+** Processing line: ~ args.outputs[:scene].h = 30~
+- Inside source: true
+*** True Line Result
+ args.outputs[:scene].h = 30
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # make the background transparent~
+- Inside source: true
+*** True Line Result
+ # make the background transparent
+** Processing line: ~ args.outputs[:scene].background_color = [255, 255, 255, 0]~
+- Inside source: true
+*** True Line Result
+ args.outputs[:scene].background_color = [255, 255, 255, 0]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # set the blendmode of the label to 0 (no blending)~
+- Inside source: true
+*** True Line Result
+ # set the blendmode of the label to 0 (no blending)
+** Processing line: ~ # center it inside of the scene~
+- Inside source: true
+*** True Line Result
+ # center it inside of the scene
+** Processing line: ~ # set the vertical_alignment_enum to 1 (center)~
+- Inside source: true
+*** True Line Result
+ # set the vertical_alignment_enum to 1 (center)
+** Processing line: ~ args.outputs[:scene].labels << { x: 0,~
+- Inside source: true
+*** True Line Result
+ args.outputs[:scene].labels << { x: 0,
+** Processing line: ~ y: 15,~
+- Inside source: true
+*** True Line Result
+ y: 15,
+** Processing line: ~ text: "label in render target",~
+- Inside source: true
+*** True Line Result
+ text: "label in render target",
+** Processing line: ~ blendmode_enum: 0,~
+- Inside source: true
+*** True Line Result
+ blendmode_enum: 0,
+** Processing line: ~ vertical_alignment_enum: 1 }~
+- Inside source: true
+*** True Line Result
+ vertical_alignment_enum: 1 }
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # add a border to the render target~
+- Inside source: true
+*** True Line Result
+ # add a border to the render target
+** Processing line: ~ args.outputs[:scene].borders << { x: 0,~
+- Inside source: true
+*** True Line Result
+ args.outputs[:scene].borders << { x: 0,
+** Processing line: ~ y: 0,~
+- Inside source: true
+*** True Line Result
+ y: 0,
+** Processing line: ~ w: args.outputs[:scene].w,~
+- Inside source: true
+*** True Line Result
+ w: args.outputs[:scene].w,
+** Processing line: ~ h: args.outputs[:scene].h }~
+- Inside source: true
+*** True Line Result
+ h: args.outputs[:scene].h }
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # add the rendertarget to the main output as a sprite~
+- Inside source: true
+*** True Line Result
+ # add the rendertarget to the main output as a sprite
+** Processing line: ~ args.outputs.sprites << { x: 640 - args.outputs[:scene].w.half,~
+- Inside source: true
+*** True Line Result
+ args.outputs.sprites << { x: 640 - args.outputs[:scene].w.half,
+** Processing line: ~ y: 360 - args.outputs[:scene].h.half,~
+- Inside source: true
+*** True Line Result
+ y: 360 - args.outputs[:scene].h.half,
+** Processing line: ~ w: args.outputs[:scene].w,~
+- Inside source: true
+*** True Line Result
+ w: args.outputs[:scene].w,
+** Processing line: ~ h: args.outputs[:scene].h,~
+- Inside source: true
+*** True Line Result
+ h: args.outputs[:scene].h,
+** Processing line: ~ angle: args.state.tick_count,~
+- Inside source: true
+*** True Line Result
+ angle: args.state.tick_count,
+** Processing line: ~ path: :scene }~
+- Inside source: true
+*** True Line Result
+ path: :scene }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
** Processing line: ~*** Advanced Rendering - Simple Render Targets - main.rb~
- Header detected.
*** True Line Result
@@ -51995,6 +52663,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~ def new_room~
- Inside source: true
*** True Line Result
@@ -56503,6 +57175,362 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
+** Processing line: ~*** Performance - Sprites As Struct - main.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+*** Performance - Sprites As Struct - main.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./samples/09_performance/03_sprites_as_struct/app/main.rb~
+- Inside source: true
+*** True Line Result
+ # ./samples/09_performance/03_sprites_as_struct/app/main.rb
+** Processing line: ~ # create a Struct variant that allows for named parameters on construction.~
+- Inside source: true
+*** True Line Result
+ # create a Struct variant that allows for named parameters on construction.
+** Processing line: ~ class NamedStruct < Struct~
+- Inside source: true
+*** True Line Result
+ class NamedStruct < Struct
+** Processing line: ~ def initialize **opts~
+- Inside source: true
+*** True Line Result
+ def initialize **opts
+** Processing line: ~ super(*members.map { |k| opts[k] })~
+- Inside source: true
+*** True Line Result
+ super(*members.map { |k| opts[k] })
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # create a Star NamedStruct~
+- Inside source: true
+*** True Line Result
+ # create a Star NamedStruct
+** Processing line: ~ Star = NamedStruct.new(:x, :y, :w, :h, :path, :s,~
+- Inside source: true
+*** True Line Result
+ Star = NamedStruct.new(:x, :y, :w, :h, :path, :s,
+** Processing line: ~ :angle, :angle_anchor_x, :angle_anchor_y,~
+- Inside source: true
+*** True Line Result
+ :angle, :angle_anchor_x, :angle_anchor_y,
+** Processing line: ~ :r, :g, :b, :a,~
+- Inside source: true
+*** True Line Result
+ :r, :g, :b, :a,
+** Processing line: ~ :tile_x, :tile_y,~
+- Inside source: true
+*** True Line Result
+ :tile_x, :tile_y,
+** Processing line: ~ :tile_w, :tile_h,~
+- Inside source: true
+*** True Line Result
+ :tile_w, :tile_h,
+** Processing line: ~ :source_x, :source_y,~
+- Inside source: true
+*** True Line Result
+ :source_x, :source_y,
+** Processing line: ~ :source_w, :source_h,~
+- Inside source: true
+*** True Line Result
+ :source_w, :source_h,
+** Processing line: ~ :flip_horizontally, :flip_vertically,~
+- Inside source: true
+*** True Line Result
+ :flip_horizontally, :flip_vertically,
+** Processing line: ~ :blendmode_enum)~
+- Inside source: true
+*** True Line Result
+ :blendmode_enum)
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # Sprites represented as Structs. They require a little bit more code than Hashes,~
+- Inside source: true
+*** True Line Result
+ # Sprites represented as Structs. They require a little bit more code than Hashes,
+** Processing line: ~ # but are the a little faster to render too.~
+- Inside source: true
+*** True Line Result
+ # but are the a little faster to render too.
+** Processing line: ~ def random_x args~
+- Inside source: true
+*** True Line Result
+ def random_x args
+** Processing line: ~ (args.grid.w.randomize :ratio) * -1~
+- Inside source: true
+*** True Line Result
+ (args.grid.w.randomize :ratio) * -1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def random_y args~
+- Inside source: true
+*** True Line Result
+ def random_y args
+** Processing line: ~ (args.grid.h.randomize :ratio) * -1~
+- Inside source: true
+*** True Line Result
+ (args.grid.h.randomize :ratio) * -1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def random_speed~
+- Inside source: true
+*** True Line Result
+ def random_speed
+** Processing line: ~ 1 + (4.randomize :ratio)~
+- Inside source: true
+*** True Line Result
+ 1 + (4.randomize :ratio)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def new_star args~
+- Inside source: true
+*** True Line Result
+ def new_star args
+** Processing line: ~ Star.new x: (random_x args),~
+- Inside source: true
+*** True Line Result
+ Star.new x: (random_x args),
+** Processing line: ~ y: (random_y args),~
+- Inside source: true
+*** True Line Result
+ y: (random_y args),
+** Processing line: ~ w: 4, h: 4,~
+- Inside source: true
+*** True Line Result
+ w: 4, h: 4,
+** Processing line: ~ path: 'sprites/tiny-star.png',~
+- Inside source: true
+*** True Line Result
+ path: 'sprites/tiny-star.png',
+** Processing line: ~ s: random_speed~
+- Inside source: true
+*** True Line Result
+ s: random_speed
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def move_star args, star~
+- Inside source: true
+*** True Line Result
+ def move_star args, star
+** Processing line: ~ star.x += star[:s]~
+- Inside source: true
+*** True Line Result
+ star.x += star[:s]
+** Processing line: ~ star.y += star[:s]~
+- Inside source: true
+*** True Line Result
+ star.y += star[:s]
+** Processing line: ~ if star.x > args.grid.w || star.y > args.grid.h~
+- Inside source: true
+*** True Line Result
+ if star.x > args.grid.w || star.y > args.grid.h
+** Processing line: ~ star.x = (random_x args)~
+- Inside source: true
+*** True Line Result
+ star.x = (random_x args)
+** Processing line: ~ star.y = (random_y args)~
+- Inside source: true
+*** True Line Result
+ star.y = (random_y args)
+** Processing line: ~ star[:s] = random_speed~
+- Inside source: true
+*** True Line Result
+ star[:s] = random_speed
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ args.state.star_count ||= 0~
+- Inside source: true
+*** True Line Result
+ args.state.star_count ||= 0
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # sets console command when sample app initially opens~
+- Inside source: true
+*** True Line Result
+ # sets console command when sample app initially opens
+** Processing line: ~ if Kernel.global_tick_count == 0~
+- Inside source: true
+*** True Line Result
+ if Kernel.global_tick_count == 0
+** Processing line: ~ puts ""~
+- Inside source: true
+*** True Line Result
+ puts ""
+** Processing line: ~ puts ""~
+- Inside source: true
+*** True Line Result
+ puts ""
+** Processing line: ~ puts "========================================================="~
+- Inside source: true
+*** True Line Result
+ puts "========================================================="
+** Processing line: ~ puts "* INFO: Sprites, Structs"~
+- Inside source: true
+*** True Line Result
+ puts "* INFO: Sprites, Structs"
+** Processing line: ~ puts "* INFO: Please specify the number of sprites to render."~
+- Inside source: true
+*** True Line Result
+ puts "* INFO: Please specify the number of sprites to render."
+** Processing line: ~ args.gtk.console.set_command "reset_with count: 100"~
+- Inside source: true
+*** True Line Result
+ args.gtk.console.set_command "reset_with count: 100"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # init~
+- Inside source: true
+*** True Line Result
+ # init
+** Processing line: ~ if args.state.tick_count == 0~
+- Inside source: true
+*** True Line Result
+ if args.state.tick_count == 0
+** Processing line: ~ args.state.stars = args.state.star_count.map { |i| new_star args }~
+- Inside source: true
+*** True Line Result
+ args.state.stars = args.state.star_count.map { |i| new_star args }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # update~
+- Inside source: true
+*** True Line Result
+ # update
+** Processing line: ~ args.state.stars.each { |s| move_star args, s }~
+- Inside source: true
+*** True Line Result
+ args.state.stars.each { |s| move_star args, s }
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # render~
+- Inside source: true
+*** True Line Result
+ # render
+** Processing line: ~ args.outputs.sprites << args.state.stars~
+- Inside source: true
+*** True Line Result
+ args.outputs.sprites << args.state.stars
+** Processing line: ~ args.outputs.background_color = [0, 0, 0]~
+- Inside source: true
+*** True Line Result
+ args.outputs.background_color = [0, 0, 0]
+** Processing line: ~ args.outputs.primitives << args.gtk.current_framerate_primitives~
+- Inside source: true
+*** True Line Result
+ args.outputs.primitives << args.gtk.current_framerate_primitives
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # resets game, and assigns star count given by user~
+- Inside source: true
+*** True Line Result
+ # resets game, and assigns star count given by user
+** Processing line: ~ def reset_with count: count~
+- Inside source: true
+*** True Line Result
+ def reset_with count: count
+** Processing line: ~ $gtk.reset~
+- Inside source: true
+*** True Line Result
+ $gtk.reset
+** Processing line: ~ $gtk.args.state.star_count = count~
+- Inside source: true
+*** True Line Result
+ $gtk.args.state.star_count = count
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
** Processing line: ~*** Performance - Sprites As Strict Entities - main.rb~
- Header detected.
*** True Line Result
@@ -56515,10 +57543,10 @@ Follows is a source code listing for all files that have been open sourced. This
*** True Line Result
#+begin_src ruby
-** Processing line: ~ # ./samples/09_performance/03_sprites_as_strict_entities/app/main.rb~
+** Processing line: ~ # ./samples/09_performance/04_sprites_as_strict_entities/app/main.rb~
- Inside source: true
*** True Line Result
- # ./samples/09_performance/03_sprites_as_strict_entities/app/main.rb
+ # ./samples/09_performance/04_sprites_as_strict_entities/app/main.rb
** Processing line: ~ # Sprites represented as StrictEntities using the queue ~args.outputs.sprites~~
- Inside source: true
*** True Line Result
@@ -56831,10 +57859,10 @@ Follows is a source code listing for all files that have been open sourced. This
*** True Line Result
#+begin_src ruby
-** Processing line: ~ # ./samples/09_performance/04_sprites_as_classes/app/main.rb~
+** Processing line: ~ # ./samples/09_performance/05_sprites_as_classes/app/main.rb~
- Inside source: true
*** True Line Result
- # ./samples/09_performance/04_sprites_as_classes/app/main.rb
+ # ./samples/09_performance/05_sprites_as_classes/app/main.rb
** Processing line: ~ # Sprites represented as Classes using the queue ~args.outputs.sprites~.~
- Inside source: true
*** True Line Result
@@ -57079,10 +58107,10 @@ Follows is a source code listing for all files that have been open sourced. This
*** True Line Result
#+begin_src ruby
-** Processing line: ~ # ./samples/09_performance/05_static_sprites_as_classes/app/main.rb~
+** Processing line: ~ # ./samples/09_performance/06_static_sprites_as_classes/app/main.rb~
- Inside source: true
*** True Line Result
- # ./samples/09_performance/05_static_sprites_as_classes/app/main.rb
+ # ./samples/09_performance/06_static_sprites_as_classes/app/main.rb
** Processing line: ~ # Sprites represented as Classes using the queue ~args.outputs.static_sprites~.~
- Inside source: true
*** True Line Result
@@ -57331,10 +58359,10 @@ Follows is a source code listing for all files that have been open sourced. This
*** True Line Result
#+begin_src ruby
-** Processing line: ~ # ./samples/09_performance/06_static_sprites_as_classes_with_custom_drawing/app/main.rb~
+** Processing line: ~ # ./samples/09_performance/07_static_sprites_as_classes_with_custom_drawing/app/main.rb~
- Inside source: true
*** True Line Result
- # ./samples/09_performance/06_static_sprites_as_classes_with_custom_drawing/app/main.rb
+ # ./samples/09_performance/07_static_sprites_as_classes_with_custom_drawing/app/main.rb
** Processing line: ~ # Sprites represented as Classes, with a draw_override method, and using the queue ~args.outputs.static_sprites~.~
- Inside source: true
*** True Line Result
@@ -57711,10 +58739,10 @@ Follows is a source code listing for all files that have been open sourced. This
*** True Line Result
#+begin_src ruby
-** Processing line: ~ # ./samples/09_performance/07_collision_limits/app/main.rb~
+** Processing line: ~ # ./samples/09_performance/08_collision_limits/app/main.rb~
- Inside source: true
*** True Line Result
- # ./samples/09_performance/07_collision_limits/app/main.rb
+ # ./samples/09_performance/08_collision_limits/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
@@ -57947,6 +58975,110 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
+** Processing line: ~*** Advanced Debugging - Logging - main.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+*** Advanced Debugging - Logging - main.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./samples/10_advanced_debugging/00_logging/app/main.rb~
+- Inside source: true
+*** True Line Result
+ # ./samples/10_advanced_debugging/00_logging/app/main.rb
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ args.outputs.background_color = [255, 255, 255, 0]~
+- Inside source: true
+*** True Line Result
+ args.outputs.background_color = [255, 255, 255, 0]
+** Processing line: ~ if args.state.tick_count == 0~
+- Inside source: true
+*** True Line Result
+ if args.state.tick_count == 0
+** Processing line: ~ args.gtk.log_spam "log level spam"~
+- Inside source: true
+*** True Line Result
+ args.gtk.log_spam "log level spam"
+** Processing line: ~ args.gtk.log_debug "log level debug"~
+- Inside source: true
+*** True Line Result
+ args.gtk.log_debug "log level debug"
+** Processing line: ~ args.gtk.log_info "log level info"~
+- Inside source: true
+*** True Line Result
+ args.gtk.log_info "log level info"
+** Processing line: ~ args.gtk.log_warn "log level warn"~
+- Inside source: true
+*** True Line Result
+ args.gtk.log_warn "log level warn"
+** Processing line: ~ args.gtk.log_error "log level error"~
+- Inside source: true
+*** True Line Result
+ args.gtk.log_error "log level error"
+** Processing line: ~ args.gtk.log_unfiltered "log level unfiltered"~
+- Inside source: true
+*** True Line Result
+ args.gtk.log_unfiltered "log level unfiltered"
+** Processing line: ~ puts "This is a puts call"~
+- Inside source: true
+*** True Line Result
+ puts "This is a puts call"
+** Processing line: ~ args.gtk.console.show~
+- Inside source: true
+*** True Line Result
+ args.gtk.console.show
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if args.state.tick_count == 60~
+- Inside source: true
+*** True Line Result
+ if args.state.tick_count == 60
+** Processing line: ~ puts "This is a puts call on tick 60"~
+- Inside source: true
+*** True Line Result
+ puts "This is a puts call on tick 60"
+** Processing line: ~ elsif args.state.tick_count == 120~
+- Inside source: true
+*** True Line Result
+ elsif args.state.tick_count == 120
+** Processing line: ~ puts "This is a puts call on tick 120"~
+- Inside source: true
+*** True Line Result
+ puts "This is a puts call on tick 120"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
** Processing line: ~*** Advanced Debugging - Trace Debugging - main.rb~
- Header detected.
*** True Line Result
@@ -62527,6 +63659,14 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# ./samples/11_http/01_retrieve_images/app/main.rb
+** Processing line: ~ $gtk.register_cvar 'app.warn_seconds', "seconds to wait before starting", :uint, 11~
+- Inside source: true
+*** True Line Result
+ $gtk.register_cvar 'app.warn_seconds', "seconds to wait before starting", :uint, 11
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
@@ -62543,10 +63683,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# Show a warning at the start.
-** Processing line: ~ args.state.warning_debounce ||= 11 * 60~
+** Processing line: ~ args.state.warning_debounce ||= args.cvars['app.warn_seconds'].value * 60~
- Inside source: true
*** True Line Result
- args.state.warning_debounce ||= 11 * 60
+ args.state.warning_debounce ||= args.cvars['app.warn_seconds'].value * 60
** Processing line: ~ if args.state.warning_debounce > 0~
- Inside source: true
*** True Line Result
@@ -62751,22 +63891,22 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
-** Processing line: ~*** Http - Web Server - main.rb~
+** Processing line: ~*** Http - In Game Web Server Http Get - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
-*** Http - Web Server - main.rb
+*** Http - In Game Web Server Http Get - main.rb
** Processing line: ~#+begin_src ruby~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src ruby
-** Processing line: ~ # ./samples/11_http/02_web_server/app/main.rb~
+** Processing line: ~ # ./samples/11_http/02_in_game_web_server_http_get/app/main.rb~
- Inside source: true
*** True Line Result
- # ./samples/11_http/02_web_server/app/main.rb
+ # ./samples/11_http/02_in_game_web_server_http_get/app/main.rb
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
@@ -62775,6 +63915,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
args.state.port ||= 3000
+** Processing line: ~ args.state.reqnum ||= 0~
+- Inside source: true
+*** True Line Result
+ args.state.reqnum ||= 0
** Processing line: ~ # by default the embedded webserver runs on port 9001 (the port number is over 9000) and is disabled in a production build~
- Inside source: true
*** True Line Result
@@ -62887,6 +64031,322 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
+** Processing line: ~*** Http - In Game Web Server Http Post - main.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+*** Http - In Game Web Server Http Post - main.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./samples/11_http/03_in_game_web_server_http_post/app/main.rb~
+- Inside source: true
+*** True Line Result
+ # ./samples/11_http/03_in_game_web_server_http_post/app/main.rb
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ # defaults~
+- Inside source: true
+*** True Line Result
+ # defaults
+** Processing line: ~ args.state.post_button = args.layout.rect(row: 0, col: 0, w: 5, h: 1).merge(text: "execute http_post")~
+- Inside source: true
+*** True Line Result
+ args.state.post_button = args.layout.rect(row: 0, col: 0, w: 5, h: 1).merge(text: "execute http_post")
+** Processing line: ~ args.state.post_body_button = args.layout.rect(row: 1, col: 0, w: 5, h: 1).merge(text: "execute http_post_body")~
+- Inside source: true
+*** True Line Result
+ args.state.post_body_button = args.layout.rect(row: 1, col: 0, w: 5, h: 1).merge(text: "execute http_post_body")
+** Processing line: ~ args.state.request_to_s ||= ""~
+- Inside source: true
+*** True Line Result
+ args.state.request_to_s ||= ""
+** Processing line: ~ args.state.request_body ||= ""~
+- Inside source: true
+*** True Line Result
+ args.state.request_body ||= ""
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # render~
+- Inside source: true
+*** True Line Result
+ # render
+** Processing line: ~ args.state.post_button.yield_self do |b|~
+- Inside source: true
+*** True Line Result
+ args.state.post_button.yield_self do |b|
+** Processing line: ~ args.outputs.borders << b~
+- Inside source: true
+*** True Line Result
+ args.outputs.borders << b
+** Processing line: ~ args.outputs.labels << b.merge(text: b.text,~
+- Inside source: true
+*** True Line Result
+ args.outputs.labels << b.merge(text: b.text,
+** Processing line: ~ y: b.y + 30,~
+- Inside source: true
+*** True Line Result
+ y: b.y + 30,
+** Processing line: ~ x: b.x + 10)~
+- Inside source: true
+*** True Line Result
+ x: b.x + 10)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.state.post_body_button.yield_self do |b|~
+- Inside source: true
+*** True Line Result
+ args.state.post_body_button.yield_self do |b|
+** Processing line: ~ args.outputs.borders << b~
+- Inside source: true
+*** True Line Result
+ args.outputs.borders << b
+** Processing line: ~ args.outputs.labels << b.merge(text: b.text,~
+- Inside source: true
+*** True Line Result
+ args.outputs.labels << b.merge(text: b.text,
+** Processing line: ~ y: b.y + 30,~
+- Inside source: true
+*** True Line Result
+ y: b.y + 30,
+** Processing line: ~ x: b.x + 10)~
+- Inside source: true
+*** True Line Result
+ x: b.x + 10)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ draw_label args, 0, 6, "Request:", args.state.request_to_s~
+- Inside source: true
+*** True Line Result
+ draw_label args, 0, 6, "Request:", args.state.request_to_s
+** Processing line: ~ draw_label args, 0, 14, "Request Body Unaltered:", args.state.request_body~
+- Inside source: true
+*** True Line Result
+ draw_label args, 0, 14, "Request Body Unaltered:", args.state.request_body
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # input~
+- Inside source: true
+*** True Line Result
+ # input
+** Processing line: ~ if args.inputs.mouse.click~
+- Inside source: true
+*** True Line Result
+ if args.inputs.mouse.click
+** Processing line: ~ # ============= HTTP_POST =============~
+- Inside source: true
+*** True Line Result
+ # ============= HTTP_POST =============
+** Processing line: ~ if (args.inputs.mouse.inside_rect? args.state.post_button)~
+- Inside source: true
+*** True Line Result
+ if (args.inputs.mouse.inside_rect? args.state.post_button)
+** Processing line: ~ # ========= DATA TO SEND ===========~
+- Inside source: true
+*** True Line Result
+ # ========= DATA TO SEND ===========
+** Processing line: ~ form_fields = { "userId" => "#{Time.now.to_i}" }~
+- Inside source: true
+*** True Line Result
+ form_fields = { "userId" => "#{Time.now.to_i}" }
+** Processing line: ~ # ==================================~
+- Inside source: true
+*** True Line Result
+ # ==================================
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.gtk.http_post "http://localhost:9001/testing",~
+- Inside source: true
+*** True Line Result
+ args.gtk.http_post "http://localhost:9001/testing",
+** Processing line: ~ form_fields,~
+- Inside source: true
+*** True Line Result
+ form_fields,
+** Processing line: ~ ["Content-Type: application/x-www-form-urlencoded"]~
+- Inside source: true
+*** True Line Result
+ ["Content-Type: application/x-www-form-urlencoded"]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.gtk.notify! "http_post"~
+- Inside source: true
+*** True Line Result
+ args.gtk.notify! "http_post"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # ============= HTTP_POST_BODY =============~
+- Inside source: true
+*** True Line Result
+ # ============= HTTP_POST_BODY =============
+** Processing line: ~ if (args.inputs.mouse.inside_rect? args.state.post_body_button)~
+- Inside source: true
+*** True Line Result
+ if (args.inputs.mouse.inside_rect? args.state.post_body_button)
+** Processing line: ~ # =========== DATA TO SEND ==============~
+- Inside source: true
+*** True Line Result
+ # =========== DATA TO SEND ==============
+** Processing line: ~ json = "{ \"userId\": \"#{Time.now.to_i}\"}"~
+- Inside source: true
+*** True Line Result
+ json = "{ \"userId\": \"#{Time.now.to_i}\"}"
+** Processing line: ~ # ==================================~
+- Inside source: true
+*** True Line Result
+ # ==================================
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.gtk.http_post_body "http://localhost:9001/testing",~
+- Inside source: true
+*** True Line Result
+ args.gtk.http_post_body "http://localhost:9001/testing",
+** Processing line: ~ json,~
+- Inside source: true
+*** True Line Result
+ json,
+** Processing line: ~ ["Content-Type: application/json", "Content-Length: #{json.length}"]~
+- Inside source: true
+*** True Line Result
+ ["Content-Type: application/json", "Content-Length: #{json.length}"]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ args.gtk.notify! "http_post_body"~
+- Inside source: true
+*** True Line Result
+ args.gtk.notify! "http_post_body"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # calc~
+- Inside source: true
+*** True Line Result
+ # calc
+** Processing line: ~ args.inputs.http_requests.each do |r|~
+- Inside source: true
+*** True Line Result
+ args.inputs.http_requests.each do |r|
+** Processing line: ~ puts "#{r}"~
+- Inside source: true
+*** True Line Result
+ puts "#{r}"
+** Processing line: ~ if r.uri == "/testing"~
+- Inside source: true
+*** True Line Result
+ if r.uri == "/testing"
+** Processing line: ~ puts r~
+- Inside source: true
+*** True Line Result
+ puts r
+** Processing line: ~ args.state.request_to_s = "#{r}"~
+- Inside source: true
+*** True Line Result
+ args.state.request_to_s = "#{r}"
+** Processing line: ~ args.state.request_body = r.raw_body~
+- Inside source: true
+*** True Line Result
+ args.state.request_body = r.raw_body
+** Processing line: ~ r.respond 200, "ok"~
+- Inside source: true
+*** True Line Result
+ r.respond 200, "ok"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def draw_label args, row, col, header, text~
+- Inside source: true
+*** True Line Result
+ def draw_label args, row, col, header, text
+** Processing line: ~ label_pos = args.layout.rect(row: row, col: col, w: 0, h: 0)~
+- Inside source: true
+*** True Line Result
+ label_pos = args.layout.rect(row: row, col: col, w: 0, h: 0)
+** Processing line: ~ args.outputs.labels << "#{header}\n\n#{text}".wrapped_lines(80).map_with_index do |l, i|~
+- Inside source: true
+*** True Line Result
+ args.outputs.labels << "#{header}\n\n#{text}".wrapped_lines(80).map_with_index do |l, i|
+** Processing line: ~ { x: label_pos.x, y: label_pos.y - (i * 15), text: l, size_enum: -2 }~
+- Inside source: true
+*** True Line Result
+ { x: label_pos.x, y: label_pos.y - (i * 15), text: l, size_enum: -2 }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
** Processing line: ~*** C Extensions - Basics - main.rb~
- Header detected.
*** True Line Result
@@ -70687,10 +72147,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# Every tick, new args are passed, and the Breadth First Search tick is called
-** Processing line: ~ $breadcrumbs ||= Breadcrumbs.new(args)~
+** Processing line: ~ $breadcrumbs ||= Breadcrumbs.new~
- Inside source: true
*** True Line Result
- $breadcrumbs ||= Breadcrumbs.new(args)
+ $breadcrumbs ||= Breadcrumbs.new
** Processing line: ~ $breadcrumbs.args = args~
- Inside source: true
*** True Line Result
@@ -73295,10 +74755,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# Every tick, new args are passed, and the Breadth First Search tick is called
-** Processing line: ~ $early_exit_breadth_first_search ||= EarlyExitBreadthFirstSearch.new(args)~
+** Processing line: ~ $early_exit_breadth_first_search ||= EarlyExitBreadthFirstSearch.new~
- Inside source: true
*** True Line Result
- $early_exit_breadth_first_search ||= EarlyExitBreadthFirstSearch.new(args)
+ $early_exit_breadth_first_search ||= EarlyExitBreadthFirstSearch.new
** Processing line: ~ $early_exit_breadth_first_search.args = args~
- Inside source: true
*** True Line Result
@@ -76699,10 +78159,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# Every tick, new args are passed, and the Dijkstra tick method is called
-** Processing line: ~ $movement_costs ||= Movement_Costs.new(args)~
+** Processing line: ~ $movement_costs ||= Movement_Costs.new~
- Inside source: true
*** True Line Result
- $movement_costs ||= Movement_Costs.new(args)
+ $movement_costs ||= Movement_Costs.new
** Processing line: ~ $movement_costs.args = args~
- Inside source: true
*** True Line Result
@@ -80647,10 +82107,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# Every tick, new args are passed, and the Breadth First Search tick is called
-** Processing line: ~ $heuristic_with_walls ||= Heuristic_With_Walls.new(args)~
+** Processing line: ~ $heuristic_with_walls ||= Heuristic_With_Walls.new~
- Inside source: true
*** True Line Result
- $heuristic_with_walls ||= Heuristic_With_Walls.new(args)
+ $heuristic_with_walls ||= Heuristic_With_Walls.new
** Processing line: ~ $heuristic_with_walls.args = args~
- Inside source: true
*** True Line Result
@@ -84727,10 +86187,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# Every tick, new args are passed, and the Breadth First Search tick is called
-** Processing line: ~ $heuristic ||= Heuristic.new(args)~
+** Processing line: ~ $heuristic ||= Heuristic.new~
- Inside source: true
*** True Line Result
- $heuristic ||= Heuristic.new(args)
+ $heuristic ||= Heuristic.new
** Processing line: ~ $heuristic.args = args~
- Inside source: true
*** True Line Result
@@ -88871,10 +90331,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# Every tick, new args are passed, and the Breadth First Search tick is called
-** Processing line: ~ $a_star_algorithm ||= A_Star_Algorithm.new(args)~
+** Processing line: ~ $a_star_algorithm ||= A_Star_Algorithm.new~
- Inside source: true
*** True Line Result
- $a_star_algorithm ||= A_Star_Algorithm.new(args)
+ $a_star_algorithm ||= A_Star_Algorithm.new
** Processing line: ~ $a_star_algorithm.args = args~
- Inside source: true
*** True Line Result
@@ -91031,6 +92491,1438 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
+** Processing line: ~*** 3d - Yaw Pitch Roll - main.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+*** 3d - Yaw Pitch Roll - main.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./samples/99_genre_3d/03_yaw_pitch_roll/app/main.rb~
+- Inside source: true
+*** True Line Result
+ # ./samples/99_genre_3d/03_yaw_pitch_roll/app/main.rb
+** Processing line: ~ class Game~
+- Inside source: true
+*** True Line Result
+ class Game
+** Processing line: ~ attr_gtk~
+- Inside source: true
+*** True Line Result
+ attr_gtk
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def tick~
+- Inside source: true
+*** True Line Result
+ def tick
+** Processing line: ~ defaults~
+- Inside source: true
+*** True Line Result
+ defaults
+** Processing line: ~ render~
+- Inside source: true
+*** True Line Result
+ render
+** Processing line: ~ input~
+- Inside source: true
+*** True Line Result
+ input
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def matrix_mul m, v~
+- Inside source: true
+*** True Line Result
+ def matrix_mul m, v
+** Processing line: ~ (hmap x: ((m.x.x * v.x) + (m.x.y * v.y) + (m.x.z * v.z) + (m.x.w * v.w)),~
+- Inside source: true
+*** True Line Result
+ (hmap x: ((m.x.x * v.x) + (m.x.y * v.y) + (m.x.z * v.z) + (m.x.w * v.w)),
+** Processing line: ~ y: ((m.y.x * v.x) + (m.y.y * v.y) + (m.y.z * v.z) + (m.y.w * v.w)),~
+- Inside source: true
+*** True Line Result
+ y: ((m.y.x * v.x) + (m.y.y * v.y) + (m.y.z * v.z) + (m.y.w * v.w)),
+** Processing line: ~ z: ((m.z.x * v.x) + (m.z.y * v.y) + (m.z.z * v.z) + (m.z.w * v.w)),~
+- Inside source: true
+*** True Line Result
+ z: ((m.z.x * v.x) + (m.z.y * v.y) + (m.z.z * v.z) + (m.z.w * v.w)),
+** Processing line: ~ w: ((m.w.x * v.x) + (m.w.y * v.y) + (m.w.z * v.z) + (m.w.w * v.w)))~
+- Inside source: true
+*** True Line Result
+ w: ((m.w.x * v.x) + (m.w.y * v.y) + (m.w.z * v.z) + (m.w.w * v.w)))
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def player_ship~
+- Inside source: true
+*** True Line Result
+ def player_ship
+** Processing line: ~ [~
+- Inside source: true
+*** True Line Result
+ [
+** Processing line: ~ # engine back~
+- Inside source: true
+*** True Line Result
+ # engine back
+** Processing line: ~ { x: -1, y: -1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -1, z: 1, w: 0 },
+** Processing line: ~ { x: -1, y: 1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 1, z: 1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1, y: 1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 1, z: 1, w: 0 },
+** Processing line: ~ { x: 1, y: 1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 1, z: 1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1, y: 1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 1, z: 1, w: 0 },
+** Processing line: ~ { x: 1, y: -1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -1, z: 1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1, y: -1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -1, z: 1, w: 0 },
+** Processing line: ~ { x: -1, y: -1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -1, z: 1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # engine front~
+- Inside source: true
+*** True Line Result
+ # engine front
+** Processing line: ~ { x: -1, y: -1, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -1, z: -1, w: 0 },
+** Processing line: ~ { x: -1, y: 1, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 1, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1, y: 1, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 1, z: -1, w: 0 },
+** Processing line: ~ { x: 1, y: 1, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 1, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1, y: 1, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 1, z: -1, w: 0 },
+** Processing line: ~ { x: 1, y: -1, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -1, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1, y: -1, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -1, z: -1, w: 0 },
+** Processing line: ~ { x: -1, y: -1, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -1, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # engine left~
+- Inside source: true
+*** True Line Result
+ # engine left
+** Processing line: ~ { x: -1, z: -1, y: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, z: -1, y: -1, w: 0 },
+** Processing line: ~ { x: -1, z: -1, y: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, z: -1, y: 1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1, z: -1, y: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, z: -1, y: 1, w: 0 },
+** Processing line: ~ { x: -1, z: 1, y: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, z: 1, y: 1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1, z: 1, y: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, z: 1, y: 1, w: 0 },
+** Processing line: ~ { x: -1, z: 1, y: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, z: 1, y: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1, z: 1, y: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, z: 1, y: -1, w: 0 },
+** Processing line: ~ { x: -1, z: -1, y: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, z: -1, y: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # engine right~
+- Inside source: true
+*** True Line Result
+ # engine right
+** Processing line: ~ { x: 1, z: -1, y: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, z: -1, y: -1, w: 0 },
+** Processing line: ~ { x: 1, z: -1, y: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, z: -1, y: 1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1, z: -1, y: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, z: -1, y: 1, w: 0 },
+** Processing line: ~ { x: 1, z: 1, y: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, z: 1, y: 1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1, z: 1, y: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, z: 1, y: 1, w: 0 },
+** Processing line: ~ { x: 1, z: 1, y: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, z: 1, y: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1, z: 1, y: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, z: 1, y: -1, w: 0 },
+** Processing line: ~ { x: 1, z: -1, y: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, z: -1, y: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # top front of engine to front of ship~
+- Inside source: true
+*** True Line Result
+ # top front of engine to front of ship
+** Processing line: ~ { x: 1, y: 1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 1, z: 1, w: 0 },
+** Processing line: ~ { x: 0, y: -1, z: 9, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 0, y: -1, z: 9, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 0, y: -1, z: 9, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 0, y: -1, z: 9, w: 0 },
+** Processing line: ~ { x: -1, y: 1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 1, z: 1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # bottom front of engine~
+- Inside source: true
+*** True Line Result
+ # bottom front of engine
+** Processing line: ~ { x: 1, y: -1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -1, z: 1, w: 0 },
+** Processing line: ~ { x: 0, y: -1, z: 9, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 0, y: -1, z: 9, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1, y: -1, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -1, z: 1, w: 0 },
+** Processing line: ~ { x: 0, y: -1, z: 9, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 0, y: -1, z: 9, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # right wing~
+- Inside source: true
+*** True Line Result
+ # right wing
+** Processing line: ~ # front of wing~
+- Inside source: true
+*** True Line Result
+ # front of wing
+** Processing line: ~ { x: 1, y: 0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 0.10, z: 1, w: 0 },
+** Processing line: ~ { x: 9, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 9, y: 0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 9, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 9, y: 0.10, z: -1, w: 0 },
+** Processing line: ~ { x: 10, y: 0.10, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 10, y: 0.10, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # back of wing~
+- Inside source: true
+*** True Line Result
+ # back of wing
+** Processing line: ~ { x: 1, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 0.10, z: -1, w: 0 },
+** Processing line: ~ { x: 9, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 9, y: 0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 10, y: 0.10, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 10, y: 0.10, z: -2, w: 0 },
+** Processing line: ~ { x: 8, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 8, y: 0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # front of wing~
+- Inside source: true
+*** True Line Result
+ # front of wing
+** Processing line: ~ { x: 1, y: -0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -0.10, z: 1, w: 0 },
+** Processing line: ~ { x: 9, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 9, y: -0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 9, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 9, y: -0.10, z: -1, w: 0 },
+** Processing line: ~ { x: 10, y: -0.10, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 10, y: -0.10, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # back of wing~
+- Inside source: true
+*** True Line Result
+ # back of wing
+** Processing line: ~ { x: 1, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -0.10, z: -1, w: 0 },
+** Processing line: ~ { x: 9, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 9, y: -0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 10, y: -0.10, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 10, y: -0.10, z: -2, w: 0 },
+** Processing line: ~ { x: 8, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 8, y: -0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # left wing~
+- Inside source: true
+*** True Line Result
+ # left wing
+** Processing line: ~ # front of wing~
+- Inside source: true
+*** True Line Result
+ # front of wing
+** Processing line: ~ { x: -1, y: 0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 0.10, z: 1, w: 0 },
+** Processing line: ~ { x: -9, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -9, y: 0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -9, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -9, y: 0.10, z: -1, w: 0 },
+** Processing line: ~ { x: -10, y: 0.10, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -10, y: 0.10, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # back of wing~
+- Inside source: true
+*** True Line Result
+ # back of wing
+** Processing line: ~ { x: -1, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 0.10, z: -1, w: 0 },
+** Processing line: ~ { x: -9, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -9, y: 0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -10, y: 0.10, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -10, y: 0.10, z: -2, w: 0 },
+** Processing line: ~ { x: -8, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -8, y: 0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # front of wing~
+- Inside source: true
+*** True Line Result
+ # front of wing
+** Processing line: ~ { x: -1, y: -0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -0.10, z: 1, w: 0 },
+** Processing line: ~ { x: -9, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -9, y: -0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -9, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -9, y: -0.10, z: -1, w: 0 },
+** Processing line: ~ { x: -10, y: -0.10, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -10, y: -0.10, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # back of wing~
+- Inside source: true
+*** True Line Result
+ # back of wing
+** Processing line: ~ { x: -1, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -0.10, z: -1, w: 0 },
+** Processing line: ~ { x: -9, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -9, y: -0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -10, y: -0.10, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -10, y: -0.10, z: -2, w: 0 },
+** Processing line: ~ { x: -8, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -8, y: -0.10, z: -1, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # left fin~
+- Inside source: true
+*** True Line Result
+ # left fin
+** Processing line: ~ # top~
+- Inside source: true
+*** True Line Result
+ # top
+** Processing line: ~ { x: -1, y: 0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 0.10, z: 1, w: 0 },
+** Processing line: ~ { x: -1, y: 3, z: -3, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 3, z: -3, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 0.10, z: -1, w: 0 },
+** Processing line: ~ { x: -1, y: 3, z: -3, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: 3, z: -3, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1.1, y: 0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1.1, y: 0.10, z: 1, w: 0 },
+** Processing line: ~ { x: -1.1, y: 3, z: -3, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1.1, y: 3, z: -3, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1.1, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1.1, y: 0.10, z: -1, w: 0 },
+** Processing line: ~ { x: -1.1, y: 3, z: -3, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1.1, y: 3, z: -3, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # bottom~
+- Inside source: true
+*** True Line Result
+ # bottom
+** Processing line: ~ { x: -1, y: -0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -0.10, z: 1, w: 0 },
+** Processing line: ~ { x: -1, y: -2, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -2, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -0.10, z: -1, w: 0 },
+** Processing line: ~ { x: -1, y: -2, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1, y: -2, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1.1, y: -0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1.1, y: -0.10, z: 1, w: 0 },
+** Processing line: ~ { x: -1.1, y: -2, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1.1, y: -2, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: -1.1, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1.1, y: -0.10, z: -1, w: 0 },
+** Processing line: ~ { x: -1.1, y: -2, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: -1.1, y: -2, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # right fin~
+- Inside source: true
+*** True Line Result
+ # right fin
+** Processing line: ~ { x: 1, y: 0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 0.10, z: 1, w: 0 },
+** Processing line: ~ { x: 1, y: 3, z: -3, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 3, z: -3, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 0.10, z: -1, w: 0 },
+** Processing line: ~ { x: 1, y: 3, z: -3, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: 3, z: -3, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1.1, y: 0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1.1, y: 0.10, z: 1, w: 0 },
+** Processing line: ~ { x: 1.1, y: 3, z: -3, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1.1, y: 3, z: -3, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1.1, y: 0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1.1, y: 0.10, z: -1, w: 0 },
+** Processing line: ~ { x: 1.1, y: 3, z: -3, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1.1, y: 3, z: -3, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # bottom~
+- Inside source: true
+*** True Line Result
+ # bottom
+** Processing line: ~ { x: 1, y: -0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -0.10, z: 1, w: 0 },
+** Processing line: ~ { x: 1, y: -2, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -2, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -0.10, z: -1, w: 0 },
+** Processing line: ~ { x: 1, y: -2, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1, y: -2, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1.1, y: -0.10, z: 1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1.1, y: -0.10, z: 1, w: 0 },
+** Processing line: ~ { x: 1.1, y: -2, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1.1, y: -2, z: -2, w: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { x: 1.1, y: -0.10, z: -1, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1.1, y: -0.10, z: -1, w: 0 },
+** Processing line: ~ { x: 1.1, y: -2, z: -2, w: 0 },~
+- Inside source: true
+*** True Line Result
+ { x: 1.1, y: -2, z: -2, w: 0 },
+** Processing line: ~ ]~
+- Inside source: true
+*** True Line Result
+ ]
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def defaults~
+- Inside source: true
+*** True Line Result
+ def defaults
+** Processing line: ~ state.points ||= player_ship~
+- Inside source: true
+*** True Line Result
+ state.points ||= player_ship
+** Processing line: ~ state.shifted_points ||= state.points.map { |point| point }~
+- Inside source: true
+*** True Line Result
+ state.shifted_points ||= state.points.map { |point| point }
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ state.scale ||= 1~
+- Inside source: true
+*** True Line Result
+ state.scale ||= 1
+** Processing line: ~ state.angle_x ||= 0~
+- Inside source: true
+*** True Line Result
+ state.angle_x ||= 0
+** Processing line: ~ state.angle_y ||= 0~
+- Inside source: true
+*** True Line Result
+ state.angle_y ||= 0
+** Processing line: ~ state.angle_z ||= 0~
+- Inside source: true
+*** True Line Result
+ state.angle_z ||= 0
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def matrix_new x0, y0, z0, w0, x1, y1, z1, w1, x2, y2, z2, w2, x3, y3, z3, w3~
+- Inside source: true
+*** True Line Result
+ def matrix_new x0, y0, z0, w0, x1, y1, z1, w1, x2, y2, z2, w2, x3, y3, z3, w3
+** Processing line: ~ (hmap x: (hmap x: x0, y: y0, z: z0, w: w0),~
+- Inside source: true
+*** True Line Result
+ (hmap x: (hmap x: x0, y: y0, z: z0, w: w0),
+** Processing line: ~ y: (hmap x: x1, y: y1, z: z1, w: w1),~
+- Inside source: true
+*** True Line Result
+ y: (hmap x: x1, y: y1, z: z1, w: w1),
+** Processing line: ~ z: (hmap x: x2, y: y2, z: z2, w: w2),~
+- Inside source: true
+*** True Line Result
+ z: (hmap x: x2, y: y2, z: z2, w: w2),
+** Processing line: ~ w: (hmap x: x3, y: y3, z: z3, w: w3))~
+- Inside source: true
+*** True Line Result
+ w: (hmap x: x3, y: y3, z: z3, w: w3))
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def angle_z_matrix degrees~
+- Inside source: true
+*** True Line Result
+ def angle_z_matrix degrees
+** Processing line: ~ cos_t = Math.cos degrees.to_radians~
+- Inside source: true
+*** True Line Result
+ cos_t = Math.cos degrees.to_radians
+** Processing line: ~ sin_t = Math.sin degrees.to_radians~
+- Inside source: true
+*** True Line Result
+ sin_t = Math.sin degrees.to_radians
+** Processing line: ~ (matrix_new cos_t, -sin_t, 0, 0,~
+- Inside source: true
+*** True Line Result
+ (matrix_new cos_t, -sin_t, 0, 0,
+** Processing line: ~ sin_t, cos_t, 0, 0,~
+- Inside source: true
+*** True Line Result
+ sin_t, cos_t, 0, 0,
+** Processing line: ~ 0, 0, 1, 0,~
+- Inside source: true
+*** True Line Result
+ 0, 0, 1, 0,
+** Processing line: ~ 0, 0, 0, 1)~
+- Inside source: true
+*** True Line Result
+ 0, 0, 0, 1)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def angle_y_matrix degrees~
+- Inside source: true
+*** True Line Result
+ def angle_y_matrix degrees
+** Processing line: ~ cos_t = Math.cos degrees.to_radians~
+- Inside source: true
+*** True Line Result
+ cos_t = Math.cos degrees.to_radians
+** Processing line: ~ sin_t = Math.sin degrees.to_radians~
+- Inside source: true
+*** True Line Result
+ sin_t = Math.sin degrees.to_radians
+** Processing line: ~ (matrix_new cos_t, 0, sin_t, 0,~
+- Inside source: true
+*** True Line Result
+ (matrix_new cos_t, 0, sin_t, 0,
+** Processing line: ~ 0, 1, 0, 0,~
+- Inside source: true
+*** True Line Result
+ 0, 1, 0, 0,
+** Processing line: ~ -sin_t, 0, cos_t, 0,~
+- Inside source: true
+*** True Line Result
+ -sin_t, 0, cos_t, 0,
+** Processing line: ~ 0, 0, 0, 1)~
+- Inside source: true
+*** True Line Result
+ 0, 0, 0, 1)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def angle_x_matrix degrees~
+- Inside source: true
+*** True Line Result
+ def angle_x_matrix degrees
+** Processing line: ~ cos_t = Math.cos degrees.to_radians~
+- Inside source: true
+*** True Line Result
+ cos_t = Math.cos degrees.to_radians
+** Processing line: ~ sin_t = Math.sin degrees.to_radians~
+- Inside source: true
+*** True Line Result
+ sin_t = Math.sin degrees.to_radians
+** Processing line: ~ (matrix_new 1, 0, 0, 0,~
+- Inside source: true
+*** True Line Result
+ (matrix_new 1, 0, 0, 0,
+** Processing line: ~ 0, cos_t, -sin_t, 0,~
+- Inside source: true
+*** True Line Result
+ 0, cos_t, -sin_t, 0,
+** Processing line: ~ 0, sin_t, cos_t, 0,~
+- Inside source: true
+*** True Line Result
+ 0, sin_t, cos_t, 0,
+** Processing line: ~ 0, 0, 0, 1)~
+- Inside source: true
+*** True Line Result
+ 0, 0, 0, 1)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def scale_matrix factor~
+- Inside source: true
+*** True Line Result
+ def scale_matrix factor
+** Processing line: ~ (matrix_new factor, 0, 0, 0,~
+- Inside source: true
+*** True Line Result
+ (matrix_new factor, 0, 0, 0,
+** Processing line: ~ 0, factor, 0, 0,~
+- Inside source: true
+*** True Line Result
+ 0, factor, 0, 0,
+** Processing line: ~ 0, 0, factor, 0,~
+- Inside source: true
+*** True Line Result
+ 0, 0, factor, 0,
+** Processing line: ~ 0, 0, 0, 1)~
+- Inside source: true
+*** True Line Result
+ 0, 0, 0, 1)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def input~
+- Inside source: true
+*** True Line Result
+ def input
+** Processing line: ~ if (inputs.keyboard.shift && inputs.keyboard.p)~
+- Inside source: true
+*** True Line Result
+ if (inputs.keyboard.shift && inputs.keyboard.p)
+** Processing line: ~ state.scale -= 0.1~
+- Inside source: true
+*** True Line Result
+ state.scale -= 0.1
+** Processing line: ~ elsif inputs.keyboard.p~
+- Inside source: true
+*** True Line Result
+ elsif inputs.keyboard.p
+** Processing line: ~ state.scale += 0.1~
+- Inside source: true
+*** True Line Result
+ state.scale += 0.1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if inputs.mouse.wheel~
+- Inside source: true
+*** True Line Result
+ if inputs.mouse.wheel
+** Processing line: ~ state.scale += inputs.mouse.wheel.y~
+- Inside source: true
+*** True Line Result
+ state.scale += inputs.mouse.wheel.y
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ state.scale = state.scale.clamp(0.1, 1000)~
+- Inside source: true
+*** True Line Result
+ state.scale = state.scale.clamp(0.1, 1000)
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if (inputs.keyboard.shift && inputs.keyboard.y) || inputs.keyboard.right~
+- Inside source: true
+*** True Line Result
+ if (inputs.keyboard.shift && inputs.keyboard.y) || inputs.keyboard.right
+** Processing line: ~ state.angle_y += 1~
+- Inside source: true
+*** True Line Result
+ state.angle_y += 1
+** Processing line: ~ elsif (inputs.keyboard.y) || inputs.keyboard.left~
+- Inside source: true
+*** True Line Result
+ elsif (inputs.keyboard.y) || inputs.keyboard.left
+** Processing line: ~ state.angle_y -= 1~
+- Inside source: true
+*** True Line Result
+ state.angle_y -= 1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if (inputs.keyboard.shift && inputs.keyboard.x) || inputs.keyboard.down~
+- Inside source: true
+*** True Line Result
+ if (inputs.keyboard.shift && inputs.keyboard.x) || inputs.keyboard.down
+** Processing line: ~ state.angle_x -= 1~
+- Inside source: true
+*** True Line Result
+ state.angle_x -= 1
+** Processing line: ~ elsif (inputs.keyboard.x || inputs.keyboard.up)~
+- Inside source: true
+*** True Line Result
+ elsif (inputs.keyboard.x || inputs.keyboard.up)
+** Processing line: ~ state.angle_x += 1~
+- Inside source: true
+*** True Line Result
+ state.angle_x += 1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if inputs.keyboard.shift && inputs.keyboard.z~
+- Inside source: true
+*** True Line Result
+ if inputs.keyboard.shift && inputs.keyboard.z
+** Processing line: ~ state.angle_z += 1~
+- Inside source: true
+*** True Line Result
+ state.angle_z += 1
+** Processing line: ~ elsif inputs.keyboard.z~
+- Inside source: true
+*** True Line Result
+ elsif inputs.keyboard.z
+** Processing line: ~ state.angle_z -= 1~
+- Inside source: true
+*** True Line Result
+ state.angle_z -= 1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if inputs.keyboard.zero~
+- Inside source: true
+*** True Line Result
+ if inputs.keyboard.zero
+** Processing line: ~ state.angle_x = 0~
+- Inside source: true
+*** True Line Result
+ state.angle_x = 0
+** Processing line: ~ state.angle_y = 0~
+- Inside source: true
+*** True Line Result
+ state.angle_y = 0
+** Processing line: ~ state.angle_z = 0~
+- Inside source: true
+*** True Line Result
+ state.angle_z = 0
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ angle_x = state.angle_x~
+- Inside source: true
+*** True Line Result
+ angle_x = state.angle_x
+** Processing line: ~ angle_y = state.angle_y~
+- Inside source: true
+*** True Line Result
+ angle_y = state.angle_y
+** Processing line: ~ angle_z = state.angle_z~
+- Inside source: true
+*** True Line Result
+ angle_z = state.angle_z
+** Processing line: ~ scale = state.scale~
+- Inside source: true
+*** True Line Result
+ scale = state.scale
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ s_matrix = scale_matrix state.scale~
+- Inside source: true
+*** True Line Result
+ s_matrix = scale_matrix state.scale
+** Processing line: ~ x_matrix = angle_z_matrix angle_z~
+- Inside source: true
+*** True Line Result
+ x_matrix = angle_z_matrix angle_z
+** Processing line: ~ y_matrix = angle_y_matrix angle_y~
+- Inside source: true
+*** True Line Result
+ y_matrix = angle_y_matrix angle_y
+** Processing line: ~ z_matrix = angle_x_matrix angle_x~
+- Inside source: true
+*** True Line Result
+ z_matrix = angle_x_matrix angle_x
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ state.shifted_points = state.points.map do |point|~
+- Inside source: true
+*** True Line Result
+ state.shifted_points = state.points.map do |point|
+** Processing line: ~ (matrix_mul s_matrix,~
+- Inside source: true
+*** True Line Result
+ (matrix_mul s_matrix,
+** Processing line: ~ (matrix_mul z_matrix,~
+- Inside source: true
+*** True Line Result
+ (matrix_mul z_matrix,
+** Processing line: ~ (matrix_mul x_matrix,~
+- Inside source: true
+*** True Line Result
+ (matrix_mul x_matrix,
+** Processing line: ~ (matrix_mul y_matrix, point)))).merge(original: point)~
+- Inside source: true
+*** True Line Result
+ (matrix_mul y_matrix, point)))).merge(original: point)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def thick_line line~
+- Inside source: true
+*** True Line Result
+ def thick_line line
+** Processing line: ~ [~
+- Inside source: true
+*** True Line Result
+ [
+** Processing line: ~ line.merge(y: line.y - 1, y2: line.y2 - 1, r: 0, g: 0, b: 0),~
+- Inside source: true
+*** True Line Result
+ line.merge(y: line.y - 1, y2: line.y2 - 1, r: 0, g: 0, b: 0),
+** Processing line: ~ line.merge(x: line.x - 1, x2: line.x2 - 1, r: 0, g: 0, b: 0),~
+- Inside source: true
+*** True Line Result
+ line.merge(x: line.x - 1, x2: line.x2 - 1, r: 0, g: 0, b: 0),
+** Processing line: ~ line.merge(x: line.x - 0, x2: line.x2 - 0, r: 0, g: 0, b: 0),~
+- Inside source: true
+*** True Line Result
+ line.merge(x: line.x - 0, x2: line.x2 - 0, r: 0, g: 0, b: 0),
+** Processing line: ~ line.merge(y: line.y + 1, y2: line.y2 + 1, r: 0, g: 0, b: 0),~
+- Inside source: true
+*** True Line Result
+ line.merge(y: line.y + 1, y2: line.y2 + 1, r: 0, g: 0, b: 0),
+** Processing line: ~ line.merge(x: line.x + 1, x2: line.x2 + 1, r: 0, g: 0, b: 0)~
+- Inside source: true
+*** True Line Result
+ line.merge(x: line.x + 1, x2: line.x2 + 1, r: 0, g: 0, b: 0)
+** Processing line: ~ ]~
+- Inside source: true
+*** True Line Result
+ ]
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def render~
+- Inside source: true
+*** True Line Result
+ def render
+** Processing line: ~ outputs.lines << state.shifted_points.each_slice(2).map do |(p1, p2)|~
+- Inside source: true
+*** True Line Result
+ outputs.lines << state.shifted_points.each_slice(2).map do |(p1, p2)|
+** Processing line: ~ perc = 0~
+- Inside source: true
+*** True Line Result
+ perc = 0
+** Processing line: ~ thick_line({ x: p1.x.*(10) + 640, y: p1.y.*(10) + 320,~
+- Inside source: true
+*** True Line Result
+ thick_line({ x: p1.x.*(10) + 640, y: p1.y.*(10) + 320,
+** Processing line: ~ x2: p2.x.*(10) + 640, y2: p2.y.*(10) + 320,~
+- Inside source: true
+*** True Line Result
+ x2: p2.x.*(10) + 640, y2: p2.y.*(10) + 320,
+** Processing line: ~ r: 255 * perc,~
+- Inside source: true
+*** True Line Result
+ r: 255 * perc,
+** Processing line: ~ g: 255 * perc,~
+- Inside source: true
+*** True Line Result
+ g: 255 * perc,
+** Processing line: ~ b: 255 * perc })~
+- Inside source: true
+*** True Line Result
+ b: 255 * perc })
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ outputs.labels << [ 10, 700, "angle_x: #{state.angle_x.to_sf}", 0]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [ 10, 700, "angle_x: #{state.angle_x.to_sf}", 0]
+** Processing line: ~ outputs.labels << [ 10, 670, "x, shift+x", 0]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [ 10, 670, "x, shift+x", 0]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ outputs.labels << [210, 700, "angle_y: #{state.angle_y.to_sf}", 0]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [210, 700, "angle_y: #{state.angle_y.to_sf}", 0]
+** Processing line: ~ outputs.labels << [210, 670, "y, shift+y", 0]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [210, 670, "y, shift+y", 0]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ outputs.labels << [410, 700, "angle_z: #{state.angle_z.to_sf}", 0]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [410, 700, "angle_z: #{state.angle_z.to_sf}", 0]
+** Processing line: ~ outputs.labels << [410, 670, "z, shift+z", 0]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [410, 670, "z, shift+z", 0]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ outputs.labels << [610, 700, "scale: #{state.scale.to_sf}", 0]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [610, 700, "scale: #{state.scale.to_sf}", 0]
+** Processing line: ~ outputs.labels << [610, 670, "p, shift+p", 0]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [610, 670, "p, shift+p", 0]
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ $game = Game.new~
+- Inside source: true
+*** True Line Result
+ $game = Game.new
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ $game.args = args~
+- Inside source: true
+*** True Line Result
+ $game.args = args
+** Processing line: ~ $game.tick~
+- Inside source: true
+*** True Line Result
+ $game.tick
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def set_angles x, y, z~
+- Inside source: true
+*** True Line Result
+ def set_angles x, y, z
+** Processing line: ~ $game.state.angle_x = x~
+- Inside source: true
+*** True Line Result
+ $game.state.angle_x = x
+** Processing line: ~ $game.state.angle_y = y~
+- Inside source: true
+*** True Line Result
+ $game.state.angle_y = y
+** Processing line: ~ $game.state.angle_z = z~
+- Inside source: true
+*** True Line Result
+ $game.state.angle_z = z
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ $gtk.reset~
+- Inside source: true
+*** True Line Result
+ $gtk.reset
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
** Processing line: ~*** Arcade - Bullet Hell - main.rb~
- Header detected.
*** True Line Result
@@ -93519,18 +96411,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def render_score
-** Processing line: ~ outputs.primitives << [10, 710, "HI SCORE: #{state.hi_score}", large_white_typeset].label~
+** Processing line: ~ outputs.primitives << { x: 10, y: 710, text: "HI SCORE: #{state.hi_score}", **large_white_typeset }~
- Inside source: true
*** True Line Result
- outputs.primitives << [10, 710, "HI SCORE: #{state.hi_score}", large_white_typeset].label
-** Processing line: ~ outputs.primitives << [10, 680, "SCORE: #{state.score}", large_white_typeset].label~
+ outputs.primitives << { x: 10, y: 710, text: "HI SCORE: #{state.hi_score}", **large_white_typeset }
+** Processing line: ~ outputs.primitives << { x: 10, y: 680, text: "SCORE: #{state.score}", **large_white_typeset }~
- Inside source: true
*** True Line Result
- outputs.primitives << [10, 680, "SCORE: #{state.score}", large_white_typeset].label
-** Processing line: ~ outputs.primitives << [10, 650, "DIFFICULTY: #{state.difficulty.upcase}", large_white_typeset].label~
+ outputs.primitives << { x: 10, y: 680, text: "SCORE: #{state.score}", **large_white_typeset }
+** Processing line: ~ outputs.primitives << { x: 10, y: 650, text: "DIFFICULTY: #{state.difficulty.upcase}", **large_white_typeset }~
- Inside source: true
*** True Line Result
- outputs.primitives << [10, 650, "DIFFICULTY: #{state.difficulty.upcase}", large_white_typeset].label
+ outputs.primitives << { x: 10, y: 650, text: "DIFFICULTY: #{state.difficulty.upcase}", **large_white_typeset }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -93555,54 +96447,54 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ outputs.labels << [640, 700, "Flappy Dragon", 50, 1, 255, 255, 255]~
+** Processing line: ~ outputs.labels << { x: 640, y: 700, text: "Flappy Dragon", size_enum: 50, alignment_enum: 1, **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 700, "Flappy Dragon", 50, 1, 255, 255, 255]
-** Processing line: ~ outputs.labels << [640, 500, "Instructions: Press Spacebar to flap. Don't die.", 4, 1, 255, 255, 255]~
+ outputs.labels << { x: 640, y: 700, text: "Flappy Dragon", size_enum: 50, alignment_enum: 1, **white }
+** Processing line: ~ outputs.labels << { x: 640, y: 500, text: "Instructions: Press Spacebar to flap. Don't die.", size_enum: 4, alignment_enum: 1, **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 500, "Instructions: Press Spacebar to flap. Don't die.", 4, 1, 255, 255, 255]
-** Processing line: ~ outputs.labels << [430, 430, "[Tab] Change difficulty", 4, 0, 255, 255, 255]~
+ outputs.labels << { x: 640, y: 500, text: "Instructions: Press Spacebar to flap. Don't die.", size_enum: 4, alignment_enum: 1, **white }
+** Processing line: ~ outputs.labels << { x: 430, y: 430, text: "[Tab] Change difficulty", size_enum: 4, alignment_enum: 0, **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [430, 430, "[Tab] Change difficulty", 4, 0, 255, 255, 255]
-** Processing line: ~ outputs.labels << [430, 400, "[Enter] Start at New Difficulty ", 4, 0, 255, 255, 255]~
+ outputs.labels << { x: 430, y: 430, text: "[Tab] Change difficulty", size_enum: 4, alignment_enum: 0, **white }
+** Processing line: ~ outputs.labels << { x: 430, y: 400, text: "[Enter] Start at New Difficulty ", size_enum: 4, alignment_enum: 0, **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [430, 400, "[Enter] Start at New Difficulty ", 4, 0, 255, 255, 255]
-** Processing line: ~ outputs.labels << [430, 370, "[Escape] Cancel/Resume ", 4, 0, 255, 255, 255]~
+ outputs.labels << { x: 430, y: 400, text: "[Enter] Start at New Difficulty ", size_enum: 4, alignment_enum: 0, **white }
+** Processing line: ~ outputs.labels << { x: 430, y: 370, text: "[Escape] Cancel/Resume ", size_enum: 4, alignment_enum: 0, **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [430, 370, "[Escape] Cancel/Resume ", 4, 0, 255, 255, 255]
-** Processing line: ~ outputs.labels << [640, 300, "(mouse, touch, and game controllers work, too!) ", 4, 1, 255, 255, 255]~
+ outputs.labels << { x: 430, y: 370, text: "[Escape] Cancel/Resume ", size_enum: 4, alignment_enum: 0, **white }
+** Processing line: ~ outputs.labels << { x: 640, y: 300, text: "(mouse, touch, and game controllers work, too!) ", size_enum: 4, alignment_enum: 1, **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 300, "(mouse, touch, and game controllers work, too!) ", 4, 1, 255, 255, 255]
-** Processing line: ~ outputs.labels << [640, 200, "Difficulty: #{state.new_difficulty.capitalize}", 4, 1, 255, 255, 255]~
+ outputs.labels << { x: 640, y: 300, text: "(mouse, touch, and game controllers work, too!) ", size_enum: 4, alignment_enum: 1, **white }
+** Processing line: ~ outputs.labels << { x: 640, y: 200, text: "Difficulty: #{state.new_difficulty.capitalize}", size_enum: 4, alignment_enum: 1, **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 200, "Difficulty: #{state.new_difficulty.capitalize}", 4, 1, 255, 255, 255]
+ outputs.labels << { x: 640, y: 200, text: "Difficulty: #{state.new_difficulty.capitalize}", size_enum: 4, alignment_enum: 1, **white }
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ outputs.labels << [10, 100, "Code: @amirrajan", 255, 255, 255]~
+** Processing line: ~ outputs.labels << { x: 10, y: 100, text: "Code: @amirrajan", **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [10, 100, "Code: @amirrajan", 255, 255, 255]
-** Processing line: ~ outputs.labels << [10, 80, "Art: @mobypixel", 255, 255, 255]~
+ outputs.labels << { x: 10, y: 100, text: "Code: @amirrajan", **white }
+** Processing line: ~ outputs.labels << { x: 10, y: 80, text: "Art: @mobypixel", **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [10, 80, "Art: @mobypixel", 255, 255, 255]
-** Processing line: ~ outputs.labels << [10, 60, "Music: @mobypixel", 255, 255, 255]~
+ outputs.labels << { x: 10, y: 80, text: "Art: @mobypixel", **white }
+** Processing line: ~ outputs.labels << { x: 10, y: 60, text: "Music: @mobypixel", **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [10, 60, "Music: @mobypixel", 255, 255, 255]
-** Processing line: ~ outputs.labels << [10, 40, "Engine: DragonRuby GTK", 255, 255, 255]~
+ outputs.labels << { x: 10, y: 60, text: "Music: @mobypixel", **white }
+** Processing line: ~ outputs.labels << { x: 10, y: 40, text: "Engine: DragonRuby GTK", **white }~
- Inside source: true
*** True Line Result
- outputs.labels << [10, 40, "Engine: DragonRuby GTK", 255, 255, 255]
+ outputs.labels << { x: 10, y: 40, text: "Engine: DragonRuby GTK", **white }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -93615,10 +96507,30 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def render_overlay
-** Processing line: ~ outputs.primitives << [grid.rect.scale_rect(1.1, 0, 0), 0, 0, 0, 230].solid~
+** Processing line: ~ overlay_rect = grid.rect.scale_rect(1.1, 0, 0)~
+- Inside source: true
+*** True Line Result
+ overlay_rect = grid.rect.scale_rect(1.1, 0, 0)
+** Processing line: ~ outputs.primitives << { x: overlay_rect.x,~
+- Inside source: true
+*** True Line Result
+ outputs.primitives << { x: overlay_rect.x,
+** Processing line: ~ y: overlay_rect.y,~
+- Inside source: true
+*** True Line Result
+ y: overlay_rect.y,
+** Processing line: ~ w: overlay_rect.w,~
- Inside source: true
*** True Line Result
- outputs.primitives << [grid.rect.scale_rect(1.1, 0, 0), 0, 0, 0, 230].solid
+ w: overlay_rect.w,
+** Processing line: ~ h: overlay_rect.h,~
+- Inside source: true
+*** True Line Result
+ h: overlay_rect.h,
+** Processing line: ~ r: 0, g: 0, b: 0, a: 230 }.solid!~
+- Inside source: true
+*** True Line Result
+ r: 0, g: 0, b: 0, a: 230 }.solid!
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -93667,22 +96579,22 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
return unless state.scene == :game
-** Processing line: ~ outputs.labels << [638, 358, score_text, 20, 1]~
+** Processing line: ~ outputs.labels << { x: 638, y: 358, text: score_text, size_enum: 20, alignment_enum: 1 }~
- Inside source: true
*** True Line Result
- outputs.labels << [638, 358, score_text, 20, 1]
-** Processing line: ~ outputs.labels << [635, 360, score_text, 20, 1, 255, 255, 255]~
+ outputs.labels << { x: 638, y: 358, text: score_text, size_enum: 20, alignment_enum: 1 }
+** Processing line: ~ outputs.labels << { x: 635, y: 360, text: score_text, size_enum: 20, alignment_enum: 1, r: 255, g: 255, b: 255 }~
- Inside source: true
*** True Line Result
- outputs.labels << [635, 360, score_text, 20, 1, 255, 255, 255]
-** Processing line: ~ outputs.labels << [638, 428, countdown_text, 20, 1]~
+ outputs.labels << { x: 635, y: 360, text: score_text, size_enum: 20, alignment_enum: 1, r: 255, g: 255, b: 255 }
+** Processing line: ~ outputs.labels << { x: 638, y: 428, text: countdown_text, size_enum: 20, alignment_enum: 1 }~
- Inside source: true
*** True Line Result
- outputs.labels << [638, 428, countdown_text, 20, 1]
-** Processing line: ~ outputs.labels << [635, 430, countdown_text, 20, 1, 255, 255, 255]~
+ outputs.labels << { x: 638, y: 428, text: countdown_text, size_enum: 20, alignment_enum: 1 }
+** Processing line: ~ outputs.labels << { x: 635, y: 430, text: countdown_text, size_enum: 20, alignment_enum: 1, r: 255, g: 255, b: 255 }~
- Inside source: true
*** True Line Result
- outputs.labels << [635, 430, countdown_text, 20, 1, 255, 255, 255]
+ outputs.labels << { x: 635, y: 430, text: countdown_text, size_enum: 20, alignment_enum: 1, r: 255, g: 255, b: 255 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -93695,10 +96607,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def render_background
-** Processing line: ~ outputs.sprites << [0, 0, 1280, 720, 'sprites/background.png']~
+** Processing line: ~ outputs.sprites << { x: 0, y: 0, w: 1280, h: 720, path: 'sprites/background.png' }~
- Inside source: true
*** True Line Result
- outputs.sprites << [0, 0, 1280, 720, 'sprites/background.png']
+ outputs.sprites << { x: 0, y: 0, w: 1280, h: 720, path: 'sprites/background.png' }
** Processing line: ~~
- Inside source: true
*** True Line Result
@@ -93743,6 +96655,34 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
+** Processing line: ~ def scrolling_background at, path, rate, y = 0~
+- Inside source: true
+*** True Line Result
+ def scrolling_background at, path, rate, y = 0
+** Processing line: ~ [~
+- Inside source: true
+*** True Line Result
+ [
+** Processing line: ~ { x: 0 - at.*(rate) % 1440, y: y, w: 1440, h: 720, path: path },~
+- Inside source: true
+*** True Line Result
+ { x: 0 - at.*(rate) % 1440, y: y, w: 1440, h: 720, path: path },
+** Processing line: ~ { x: 1440 - at.*(rate) % 1440, y: y, w: 1440, h: 720, path: path }~
+- Inside source: true
+*** True Line Result
+ { x: 1440 - at.*(rate) % 1440, y: y, w: 1440, h: 720, path: path }
+** Processing line: ~ ]~
+- Inside source: true
+*** True Line Result
+ ]
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~ def render_walls~
- Inside source: true
*** True Line Result
@@ -93755,14 +96695,14 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
w.sprites = [
-** Processing line: ~ [w.x, w.bottom_height - 720, 100, 720, 'sprites/wall.png', 180],~
+** Processing line: ~ { x: w.x, y: w.bottom_height - 720, w: 100, h: 720, path: 'sprites/wall.png', angle: 180 },~
- Inside source: true
*** True Line Result
- [w.x, w.bottom_height - 720, 100, 720, 'sprites/wall.png', 180],
-** Processing line: ~ [w.x, w.top_y, 100, 720, 'sprites/wallbottom.png', 0]~
+ { x: w.x, y: w.bottom_height - 720, w: 100, h: 720, path: 'sprites/wall.png', angle: 180 },
+** Processing line: ~ { x: w.x, y: w.top_y, w: 100, h: 720, path: 'sprites/wallbottom.png', angle: 0 }~
- Inside source: true
*** True Line Result
- [w.x, w.top_y, 100, 720, 'sprites/wallbottom.png', 0]
+ { x: w.x, y: w.top_y, w: 100, h: 720, path: 'sprites/wallbottom.png', angle: 0 }
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
@@ -93795,14 +96735,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ render_debug_hitbox false~
-- Inside source: true
-*** True Line Result
- render_debug_hitbox false
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ if state.show_death == false || !state.death_at~
- Inside source: true
*** True Line Result
@@ -93815,10 +96747,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
sprite_name = "sprites/dragon_fly#{animation_index.or(0) + 1}.png"
-** Processing line: ~ state.dragon_sprite = [state.x, state.y, 100, 80, sprite_name, state.dy * 1.2]~
+** Processing line: ~ state.dragon_sprite = { x: state.x, y: state.y, w: 100, h: 80, path: sprite_name, angle: state.dy * 1.2 }~
- Inside source: true
*** True Line Result
- state.dragon_sprite = [state.x, state.y, 100, 80, sprite_name, state.dy * 1.2]
+ state.dragon_sprite = { x: state.x, y: state.y, w: 100, h: 80, path: sprite_name, angle: state.dy * 1.2 }
** Processing line: ~ else~
- Inside source: true
*** True Line Result
@@ -93827,10 +96759,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
sprite_name = "sprites/dragon_die.png"
-** Processing line: ~ state.dragon_sprite = [state.x, state.y, 100, 80, sprite_name, state.dy * 1.2]~
+** Processing line: ~ state.dragon_sprite = { x: state.x, y: state.y, w: 100, h: 80, path: sprite_name, angle: state.dy * 1.2 }~
- Inside source: true
*** True Line Result
- state.dragon_sprite = [state.x, state.y, 100, 80, sprite_name, state.dy * 1.2]
+ state.dragon_sprite = { x: state.x, y: state.y, w: 100, h: 80, path: sprite_name, angle: state.dy * 1.2 }
** Processing line: ~ sprite_changed_elapsed = state.death_at.elapsed_time - 1.seconds~
- Inside source: true
*** True Line Result
@@ -93867,38 +96799,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def render_debug_hitbox show~
-- Inside source: true
-*** True Line Result
- def render_debug_hitbox show
-** Processing line: ~ return unless show~
-- Inside source: true
-*** True Line Result
- return unless show
-** Processing line: ~ outputs.borders << [dragon_collision_box.rect, 255, 0, 0] if state.dragon_sprite~
-- Inside source: true
-*** True Line Result
- outputs.borders << [dragon_collision_box.rect, 255, 0, 0] if state.dragon_sprite
-** Processing line: ~ outputs.borders << state.walls.flat_map do |w|~
-- Inside source: true
-*** True Line Result
- outputs.borders << state.walls.flat_map do |w|
-** Processing line: ~ w.sprites.map { |s| [s.rect, 255, 0, 0] }~
-- Inside source: true
-*** True Line Result
- w.sprites.map { |s| [s.rect, 255, 0, 0] }
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ def render_flash~
- Inside source: true
*** True Line Result
@@ -93911,18 +96811,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ outputs.primitives << [grid.rect,~
+** Processing line: ~ outputs.primitives << { **grid.rect.to_hash,~
- Inside source: true
*** True Line Result
- outputs.primitives << [grid.rect,
-** Processing line: ~ white,~
+ outputs.primitives << { **grid.rect.to_hash,
+** Processing line: ~ **white,~
- Inside source: true
*** True Line Result
- white,
-** Processing line: ~ 255 * state.flash_at.ease(20, :flip)].solid~
+ **white,
+** Processing line: ~ a: 255 * state.flash_at.ease(20, :flip) }.solid!~
- Inside source: true
*** True Line Result
- 255 * state.flash_at.ease(20, :flip)].solid
+ a: 255 * state.flash_at.ease(20, :flip) }.solid!
** Processing line: ~~
- Inside source: true
*** True Line Result
@@ -94399,42 +97299,14 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def scrolling_background at, path, rate, y = 0~
-- Inside source: true
-*** True Line Result
- def scrolling_background at, path, rate, y = 0
-** Processing line: ~ [~
-- Inside source: true
-*** True Line Result
- [
-** Processing line: ~ [ 0 - at.*(rate) % 1440, y, 1440, 720, path],~
-- Inside source: true
-*** True Line Result
- [ 0 - at.*(rate) % 1440, y, 1440, 720, path],
-** Processing line: ~ [1440 - at.*(rate) % 1440, y, 1440, 720, path]~
-- Inside source: true
-*** True Line Result
- [1440 - at.*(rate) % 1440, y, 1440, 720, path]
-** Processing line: ~ ]~
-- Inside source: true
-*** True Line Result
- ]
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ def white~
- Inside source: true
*** True Line Result
def white
-** Processing line: ~ [255, 255, 255]~
+** Processing line: ~ { r: 255, g: 255, b: 255 }~
- Inside source: true
*** True Line Result
- [255, 255, 255]
+ { r: 255, g: 255, b: 255 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -94447,10 +97319,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def large_white_typeset
-** Processing line: ~ [5, 0, 255, 255, 255]~
+** Processing line: ~ { size_enum: 5, alignment_enum: 0, r: 255, g: 255, b: 255 }~
- Inside source: true
*** True Line Result
- [5, 0, 255, 255, 255]
+ { size_enum: 5, alignment_enum: 0, r: 255, g: 255, b: 255 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -94483,18 +97355,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
state.dragon_sprite
-** Processing line: ~ .scale_rect(1.0 - collision_forgiveness, 0.5, 0.5)~
+** Processing line: ~ .scale_rect(1.0 - collision_forgiveness, 0.5, 0.5)~
- Inside source: true
*** True Line Result
- .scale_rect(1.0 - collision_forgiveness, 0.5, 0.5)
-** Processing line: ~ .rect_shift_right(10)~
+ .scale_rect(1.0 - collision_forgiveness, 0.5, 0.5)
+** Processing line: ~ .rect_shift_right(10)~
- Inside source: true
*** True Line Result
- .rect_shift_right(10)
-** Processing line: ~ .rect_shift_up(state.dy * 2)~
+ .rect_shift_right(10)
+** Processing line: ~ .rect_shift_up(state.dy * 2)~
- Inside source: true
*** True Line Result
- .rect_shift_up(state.dy * 2)
+ .rect_shift_up(state.dy * 2)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -94527,10 +97399,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
.any? do |s|
-** Processing line: ~ s.intersect_rect?(dragon_collision_box)~
+** Processing line: ~ s && s.intersect_rect?(dragon_collision_box)~
- Inside source: true
*** True Line Result
- s.intersect_rect?(dragon_collision_box)
+ s && s.intersect_rect?(dragon_collision_box)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -100123,1262 +102995,6 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
-** Processing line: ~*** Crafting - Farming Game Starting Point - repl.rb~
-- Header detected.
-*** True Line Result
-
-*** True Line Result
-*** Crafting - Farming Game Starting Point - repl.rb
-** Processing line: ~#+begin_src ruby~
-- Line was identified as the beginning of a code block.
-*** True Line Result
-
-*** True Line Result
-#+begin_src ruby
-** Processing line: ~ # ./samples/99_genre_crafting/farming_game_starting_point/app/repl.rb~
-- Inside source: true
-*** True Line Result
- # ./samples/99_genre_crafting/farming_game_starting_point/app/repl.rb
-** Processing line: ~ # ===============================================================~
-- Inside source: true
-*** True Line Result
- # ===============================================================
-** Processing line: ~ # Welcome to repl.rb~
-- Inside source: true
-*** True Line Result
- # Welcome to repl.rb
-** Processing line: ~ # ===============================================================~
-- Inside source: true
-*** True Line Result
- # ===============================================================
-** Processing line: ~ # You can experiement with code within this file. Code in this~
-- Inside source: true
-*** True Line Result
- # You can experiement with code within this file. Code in this
-** Processing line: ~ # file is only executed when you save (and only excecuted ONCE).~
-- Inside source: true
-*** True Line Result
- # file is only executed when you save (and only excecuted ONCE).
-** Processing line: ~ # ===============================================================~
-- Inside source: true
-*** True Line Result
- # ===============================================================
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ===============================================================~
-- Inside source: true
-*** True Line Result
- # ===============================================================
-** Processing line: ~ # REMOVE the "x" from the word "xrepl" and save the file to RUN~
-- Inside source: true
-*** True Line Result
- # REMOVE the "x" from the word "xrepl" and save the file to RUN
-** Processing line: ~ # the code in between the do/end block delimiters.~
-- Inside source: true
-*** True Line Result
- # the code in between the do/end block delimiters.
-** Processing line: ~ # ===============================================================~
-- Inside source: true
-*** True Line Result
- # ===============================================================
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ===============================================================~
-- Inside source: true
-*** True Line Result
- # ===============================================================
-** Processing line: ~ # ADD the "x" to the word "repl" (make it xrepl) and save the~
-- Inside source: true
-*** True Line Result
- # ADD the "x" to the word "repl" (make it xrepl) and save the
-** Processing line: ~ # file to IGNORE the code in between the do/end block delimiters.~
-- Inside source: true
-*** True Line Result
- # file to IGNORE the code in between the do/end block delimiters.
-** Processing line: ~ # ===============================================================~
-- Inside source: true
-*** True Line Result
- # ===============================================================
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ puts "The result of 1 + 2 is: #{1 + 2}"~
-- Inside source: true
-*** True Line Result
- puts "The result of 1 + 2 is: #{1 + 2}"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Ruby Crash Course:~
-- Inside source: true
-*** True Line Result
- # Ruby Crash Course:
-** Processing line: ~ # Strings, Numeric, Booleans, Conditionals, Looping, Enumerables, Arrays~
-- Inside source: true
-*** True Line Result
- # Strings, Numeric, Booleans, Conditionals, Looping, Enumerables, Arrays
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Strings~
-- Inside source: true
-*** True Line Result
- # Strings
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ message = "Hello World"~
-- Inside source: true
-*** True Line Result
- message = "Hello World"
-** Processing line: ~ puts "The value of message is: " + message~
-- Inside source: true
-*** True Line Result
- puts "The value of message is: " + message
-** Processing line: ~ puts "Any value can be interpolated within a string using \#{}."~
-- Inside source: true
-*** True Line Result
- puts "Any value can be interpolated within a string using \#{}."
-** Processing line: ~ puts "Interpolated message: #{message}."~
-- Inside source: true
-*** True Line Result
- puts "Interpolated message: #{message}."
-** Processing line: ~ puts 'This #{message} is not interpolated because the string uses single quotes.'~
-- Inside source: true
-*** True Line Result
- puts 'This #{message} is not interpolated because the string uses single quotes.'
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Numerics~
-- Inside source: true
-*** True Line Result
- # Numerics
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ a = 10~
-- Inside source: true
-*** True Line Result
- a = 10
-** Processing line: ~ puts "The value of a is: #{a}"~
-- Inside source: true
-*** True Line Result
- puts "The value of a is: #{a}"
-** Processing line: ~ puts "a + 1 is: #{a + 1}"~
-- Inside source: true
-*** True Line Result
- puts "a + 1 is: #{a + 1}"
-** Processing line: ~ puts "a / 3 is: #{a / 3}"~
-- Inside source: true
-*** True Line Result
- puts "a / 3 is: #{a / 3}"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ b = 10.12~
-- Inside source: true
-*** True Line Result
- b = 10.12
-** Processing line: ~ puts "The value of b is: #{b}"~
-- Inside source: true
-*** True Line Result
- puts "The value of b is: #{b}"
-** Processing line: ~ puts "b + 1 is: #{b + 1}"~
-- Inside source: true
-*** True Line Result
- puts "b + 1 is: #{b + 1}"
-** Processing line: ~ puts "b as an integer is: #{b.to_i}"~
-- Inside source: true
-*** True Line Result
- puts "b as an integer is: #{b.to_i}"
-** Processing line: ~ puts ''~
-- Inside source: true
-*** True Line Result
- puts ''
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Booleans~
-- Inside source: true
-*** True Line Result
- # Booleans
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ c = 30~
-- Inside source: true
-*** True Line Result
- c = 30
-** Processing line: ~ puts "The value of c is #{c}."~
-- Inside source: true
-*** True Line Result
- puts "The value of c is #{c}."
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ if c~
-- Inside source: true
-*** True Line Result
- if c
-** Processing line: ~ puts "This if statement ran because c is truthy."~
-- Inside source: true
-*** True Line Result
- puts "This if statement ran because c is truthy."
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ d = false~
-- Inside source: true
-*** True Line Result
- d = false
-** Processing line: ~ puts "The value of d is #{d}."~
-- Inside source: true
-*** True Line Result
- puts "The value of d is #{d}."
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ if !d~
-- Inside source: true
-*** True Line Result
- if !d
-** Processing line: ~ puts "This if statement ran because d is falsey, using the not operator (!) makes d evaluate to true."~
-- Inside source: true
-*** True Line Result
- puts "This if statement ran because d is falsey, using the not operator (!) makes d evaluate to true."
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ e = nil~
-- Inside source: true
-*** True Line Result
- e = nil
-** Processing line: ~ puts "Nil is also considered falsey. The value of e is: #{e}."~
-- Inside source: true
-*** True Line Result
- puts "Nil is also considered falsey. The value of e is: #{e}."
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ if !e~
-- Inside source: true
-*** True Line Result
- if !e
-** Processing line: ~ puts "This if statement ran because e is nil (a falsey value)."~
-- Inside source: true
-*** True Line Result
- puts "This if statement ran because e is nil (a falsey value)."
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Conditionals~
-- Inside source: true
-*** True Line Result
- # Conditionals
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ i_am_true = true~
-- Inside source: true
-*** True Line Result
- i_am_true = true
-** Processing line: ~ i_am_nil = nil~
-- Inside source: true
-*** True Line Result
- i_am_nil = nil
-** Processing line: ~ i_am_false = false~
-- Inside source: true
-*** True Line Result
- i_am_false = false
-** Processing line: ~ i_am_hi = "hi"~
-- Inside source: true
-*** True Line Result
- i_am_hi = "hi"
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== if statement"~
-- Inside source: true
-*** True Line Result
- puts "======== if statement"
-** Processing line: ~ i_am_one = 1~
-- Inside source: true
-*** True Line Result
- i_am_one = 1
-** Processing line: ~ if i_am_one~
-- Inside source: true
-*** True Line Result
- if i_am_one
-** Processing line: ~ puts "This was printed because i_am_one is truthy."~
-- Inside source: true
-*** True Line Result
- puts "This was printed because i_am_one is truthy."
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== if/else statement"~
-- Inside source: true
-*** True Line Result
- puts "======== if/else statement"
-** Processing line: ~ if i_am_false~
-- Inside source: true
-*** True Line Result
- if i_am_false
-** Processing line: ~ puts "This will NOT get printed because i_am_false is false."~
-- Inside source: true
-*** True Line Result
- puts "This will NOT get printed because i_am_false is false."
-** Processing line: ~ else~
-- Inside source: true
-*** True Line Result
- else
-** Processing line: ~ puts "This was printed because i_am_false is false."~
-- Inside source: true
-*** True Line Result
- puts "This was printed because i_am_false is false."
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== if/elsif/else statement"~
-- Inside source: true
-*** True Line Result
- puts "======== if/elsif/else statement"
-** Processing line: ~ if i_am_false~
-- Inside source: true
-*** True Line Result
- if i_am_false
-** Processing line: ~ puts "This will NOT get printed because i_am_false is false."~
-- Inside source: true
-*** True Line Result
- puts "This will NOT get printed because i_am_false is false."
-** Processing line: ~ elsif i_am_true~
-- Inside source: true
-*** True Line Result
- elsif i_am_true
-** Processing line: ~ puts "This was printed because i_am_true is true."~
-- Inside source: true
-*** True Line Result
- puts "This was printed because i_am_true is true."
-** Processing line: ~ else~
-- Inside source: true
-*** True Line Result
- else
-** Processing line: ~ puts "This will NOT get printed i_am_true was true."~
-- Inside source: true
-*** True Line Result
- puts "This will NOT get printed i_am_true was true."
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== case statement "~
-- Inside source: true
-*** True Line Result
- puts "======== case statement "
-** Processing line: ~ i_am_one = 1~
-- Inside source: true
-*** True Line Result
- i_am_one = 1
-** Processing line: ~ case i_am_one~
-- Inside source: true
-*** True Line Result
- case i_am_one
-** Processing line: ~ when 10~
-- Inside source: true
-*** True Line Result
- when 10
-** Processing line: ~ puts "case equaled: 10"~
-- Inside source: true
-*** True Line Result
- puts "case equaled: 10"
-** Processing line: ~ when 9~
-- Inside source: true
-*** True Line Result
- when 9
-** Processing line: ~ puts "case equaled: 9"~
-- Inside source: true
-*** True Line Result
- puts "case equaled: 9"
-** Processing line: ~ when 5~
-- Inside source: true
-*** True Line Result
- when 5
-** Processing line: ~ puts "case equaled: 5"~
-- Inside source: true
-*** True Line Result
- puts "case equaled: 5"
-** Processing line: ~ when 1~
-- Inside source: true
-*** True Line Result
- when 1
-** Processing line: ~ puts "case equaled: 1"~
-- Inside source: true
-*** True Line Result
- puts "case equaled: 1"
-** Processing line: ~ else~
-- Inside source: true
-*** True Line Result
- else
-** Processing line: ~ puts "Value wasn't cased."~
-- Inside source: true
-*** True Line Result
- puts "Value wasn't cased."
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== different types of comparisons"~
-- Inside source: true
-*** True Line Result
- puts "======== different types of comparisons"
-** Processing line: ~ if 4 == 4~
-- Inside source: true
-*** True Line Result
- if 4 == 4
-** Processing line: ~ puts "equal (4 == 4)"~
-- Inside source: true
-*** True Line Result
- puts "equal (4 == 4)"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ if 4 != 3~
-- Inside source: true
-*** True Line Result
- if 4 != 3
-** Processing line: ~ puts "not equal (4 != 3)"~
-- Inside source: true
-*** True Line Result
- puts "not equal (4 != 3)"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ if 3 < 4~
-- Inside source: true
-*** True Line Result
- if 3 < 4
-** Processing line: ~ puts "less than (3 < 4)"~
-- Inside source: true
-*** True Line Result
- puts "less than (3 < 4)"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ if 4 > 3~
-- Inside source: true
-*** True Line Result
- if 4 > 3
-** Processing line: ~ puts "greater than (4 > 3)"~
-- Inside source: true
-*** True Line Result
- puts "greater than (4 > 3)"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ if ((4 > 3) || (3 < 4) || false)~
-- Inside source: true
-*** True Line Result
- if ((4 > 3) || (3 < 4) || false)
-** Processing line: ~ puts "or statement ((4 > 3) || (3 < 4) || false)"~
-- Inside source: true
-*** True Line Result
- puts "or statement ((4 > 3) || (3 < 4) || false)"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ if ((4 > 3) && (3 < 4))~
-- Inside source: true
-*** True Line Result
- if ((4 > 3) && (3 < 4))
-** Processing line: ~ puts "and statement ((4 > 3) && (3 < 4))"~
-- Inside source: true
-*** True Line Result
- puts "and statement ((4 > 3) && (3 < 4))"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Looping~
-- Inside source: true
-*** True Line Result
- # Looping
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ puts "======== times block"~
-- Inside source: true
-*** True Line Result
- puts "======== times block"
-** Processing line: ~ 3.times do |i|~
-- Inside source: true
-*** True Line Result
- 3.times do |i|
-** Processing line: ~ puts i~
-- Inside source: true
-*** True Line Result
- puts i
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ puts "======== range block exclusive"~
-- Inside source: true
-*** True Line Result
- puts "======== range block exclusive"
-** Processing line: ~ (0...3).each do |i|~
-- Inside source: true
-*** True Line Result
- (0...3).each do |i|
-** Processing line: ~ puts i~
-- Inside source: true
-*** True Line Result
- puts i
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ puts "======== range block inclusive"~
-- Inside source: true
-*** True Line Result
- puts "======== range block inclusive"
-** Processing line: ~ (0..3).each do |i|~
-- Inside source: true
-*** True Line Result
- (0..3).each do |i|
-** Processing line: ~ puts i~
-- Inside source: true
-*** True Line Result
- puts i
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Enumerables~
-- Inside source: true
-*** True Line Result
- # Enumerables
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ puts "======== array each"~
-- Inside source: true
-*** True Line Result
- puts "======== array each"
-** Processing line: ~ colors = ["red", "blue", "yellow"]~
-- Inside source: true
-*** True Line Result
- colors = ["red", "blue", "yellow"]
-** Processing line: ~ colors.each do |color|~
-- Inside source: true
-*** True Line Result
- colors.each do |color|
-** Processing line: ~ puts color~
-- Inside source: true
-*** True Line Result
- puts color
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts '======== array each_with_index'~
-- Inside source: true
-*** True Line Result
- puts '======== array each_with_index'
-** Processing line: ~ colors = ["red", "blue", "yellow"]~
-- Inside source: true
-*** True Line Result
- colors = ["red", "blue", "yellow"]
-** Processing line: ~ colors.each_with_index do |color, i|~
-- Inside source: true
-*** True Line Result
- colors.each_with_index do |color, i|
-** Processing line: ~ puts "#{color} at index #{i}"~
-- Inside source: true
-*** True Line Result
- puts "#{color} at index #{i}"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ puts "======== single parameter function"~
-- Inside source: true
-*** True Line Result
- puts "======== single parameter function"
-** Processing line: ~ def add_one_to n~
-- Inside source: true
-*** True Line Result
- def add_one_to n
-** Processing line: ~ n + 5~
-- Inside source: true
-*** True Line Result
- n + 5
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts add_one_to(3)~
-- Inside source: true
-*** True Line Result
- puts add_one_to(3)
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== function with default value"~
-- Inside source: true
-*** True Line Result
- puts "======== function with default value"
-** Processing line: ~ def function_with_default_value v = 10~
-- Inside source: true
-*** True Line Result
- def function_with_default_value v = 10
-** Processing line: ~ v * 10~
-- Inside source: true
-*** True Line Result
- v * 10
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "passing three: #{function_with_default_value(3)}"~
-- Inside source: true
-*** True Line Result
- puts "passing three: #{function_with_default_value(3)}"
-** Processing line: ~ puts "passing nil: #{function_with_default_value}"~
-- Inside source: true
-*** True Line Result
- puts "passing nil: #{function_with_default_value}"
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== Or Equal (||=) operator for nil values"~
-- Inside source: true
-*** True Line Result
- puts "======== Or Equal (||=) operator for nil values"
-** Processing line: ~ def function_with_nil_default_with_local a = nil~
-- Inside source: true
-*** True Line Result
- def function_with_nil_default_with_local a = nil
-** Processing line: ~ result = a~
-- Inside source: true
-*** True Line Result
- result = a
-** Processing line: ~ result ||= "or equal operator was exected and set a default value"~
-- Inside source: true
-*** True Line Result
- result ||= "or equal operator was exected and set a default value"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "passing 'hi': #{function_with_nil_default_with_local 'hi'}"~
-- Inside source: true
-*** True Line Result
- puts "passing 'hi': #{function_with_nil_default_with_local 'hi'}"
-** Processing line: ~ puts "passing nil: #{function_with_nil_default_with_local}"~
-- Inside source: true
-*** True Line Result
- puts "passing nil: #{function_with_nil_default_with_local}"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Arrays~
-- Inside source: true
-*** True Line Result
- # Arrays
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ puts "======== Create an array with the numbers 1 to 10."~
-- Inside source: true
-*** True Line Result
- puts "======== Create an array with the numbers 1 to 10."
-** Processing line: ~ one_to_ten = (1..10).to_a~
-- Inside source: true
-*** True Line Result
- one_to_ten = (1..10).to_a
-** Processing line: ~ puts one_to_ten~
-- Inside source: true
-*** True Line Result
- puts one_to_ten
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== Create a new array that only contains even numbers from the previous array."~
-- Inside source: true
-*** True Line Result
- puts "======== Create a new array that only contains even numbers from the previous array."
-** Processing line: ~ one_to_ten = (1..10).to_a~
-- Inside source: true
-*** True Line Result
- one_to_ten = (1..10).to_a
-** Processing line: ~ evens = one_to_ten.find_all do |number|~
-- Inside source: true
-*** True Line Result
- evens = one_to_ten.find_all do |number|
-** Processing line: ~ number % 2 == 0~
-- Inside source: true
-*** True Line Result
- number % 2 == 0
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ puts evens~
-- Inside source: true
-*** True Line Result
- puts evens
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== Create a new array that rejects odd numbers."~
-- Inside source: true
-*** True Line Result
- puts "======== Create a new array that rejects odd numbers."
-** Processing line: ~ one_to_ten = (1..10).to_a~
-- Inside source: true
-*** True Line Result
- one_to_ten = (1..10).to_a
-** Processing line: ~ also_even = one_to_ten.reject do |number|~
-- Inside source: true
-*** True Line Result
- also_even = one_to_ten.reject do |number|
-** Processing line: ~ number % 2 != 0~
-- Inside source: true
-*** True Line Result
- number % 2 != 0
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ puts also_even~
-- Inside source: true
-*** True Line Result
- puts also_even
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== Create an array that doubles every number."~
-- Inside source: true
-*** True Line Result
- puts "======== Create an array that doubles every number."
-** Processing line: ~ one_to_ten = (1..10).to_a~
-- Inside source: true
-*** True Line Result
- one_to_ten = (1..10).to_a
-** Processing line: ~ doubled = one_to_ten.map do |number|~
-- Inside source: true
-*** True Line Result
- doubled = one_to_ten.map do |number|
-** Processing line: ~ number * 2~
-- Inside source: true
-*** True Line Result
- number * 2
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ puts doubled~
-- Inside source: true
-*** True Line Result
- puts doubled
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== Create an array that selects only odd numbers and then multiply those by 10."~
-- Inside source: true
-*** True Line Result
- puts "======== Create an array that selects only odd numbers and then multiply those by 10."
-** Processing line: ~ one_to_ten = (1..10).to_a~
-- Inside source: true
-*** True Line Result
- one_to_ten = (1..10).to_a
-** Processing line: ~ odd_doubled = one_to_ten.find_all do |number|~
-- Inside source: true
-*** True Line Result
- odd_doubled = one_to_ten.find_all do |number|
-** Processing line: ~ number % 2 != 0~
-- Inside source: true
-*** True Line Result
- number % 2 != 0
-** Processing line: ~ end.map do |odd_number|~
-- Inside source: true
-*** True Line Result
- end.map do |odd_number|
-** Processing line: ~ odd_number * 10~
-- Inside source: true
-*** True Line Result
- odd_number * 10
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ puts odd_doubled~
-- Inside source: true
-*** True Line Result
- puts odd_doubled
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== All combination of numbers 1 to 10."~
-- Inside source: true
-*** True Line Result
- puts "======== All combination of numbers 1 to 10."
-** Processing line: ~ one_to_ten = (1..10).to_a~
-- Inside source: true
-*** True Line Result
- one_to_ten = (1..10).to_a
-** Processing line: ~ all_combinations = one_to_ten.product(one_to_ten)~
-- Inside source: true
-*** True Line Result
- all_combinations = one_to_ten.product(one_to_ten)
-** Processing line: ~ puts all_combinations~
-- Inside source: true
-*** True Line Result
- puts all_combinations
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ puts "======== All uniq combinations of numbers. For example: [1, 2] is the same as [2, 1]."~
-- Inside source: true
-*** True Line Result
- puts "======== All uniq combinations of numbers. For example: [1, 2] is the same as [2, 1]."
-** Processing line: ~ one_to_ten = (1..10).to_a~
-- Inside source: true
-*** True Line Result
- one_to_ten = (1..10).to_a
-** Processing line: ~ uniq_combinations =~
-- Inside source: true
-*** True Line Result
- uniq_combinations =
-** Processing line: ~ one_to_ten.product(one_to_ten)~
-- Inside source: true
-*** True Line Result
- one_to_ten.product(one_to_ten)
-** Processing line: ~ .map do |unsorted_number|~
-- Inside source: true
-*** True Line Result
- .map do |unsorted_number|
-** Processing line: ~ unsorted_number.sort~
-- Inside source: true
-*** True Line Result
- unsorted_number.sort
-** Processing line: ~ end.uniq~
-- Inside source: true
-*** True Line Result
- end.uniq
-** Processing line: ~ puts uniq_combinations~
-- Inside source: true
-*** True Line Result
- puts uniq_combinations
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Advanced Arrays~
-- Inside source: true
-*** True Line Result
- # Advanced Arrays
-** Processing line: ~ # ====================================================================================~
-- Inside source: true
-*** True Line Result
- # ====================================================================================
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-- Inside source: true
-*** True Line Result
- # Remove the x from xrepl to run the code. Add the x back to ignore to code.
-** Processing line: ~ xrepl do~
-- Inside source: true
-*** True Line Result
- xrepl do
-** Processing line: ~ puts "======== All unique Pythagorean Triples between 1 and 40 sorted by area of the triangle."~
-- Inside source: true
-*** True Line Result
- puts "======== All unique Pythagorean Triples between 1 and 40 sorted by area of the triangle."
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ one_to_hundred = (1..40).to_a~
-- Inside source: true
-*** True Line Result
- one_to_hundred = (1..40).to_a
-** Processing line: ~ triples =~
-- Inside source: true
-*** True Line Result
- triples =
-** Processing line: ~ one_to_hundred.product(one_to_hundred).map do |width, height|~
-- Inside source: true
-*** True Line Result
- one_to_hundred.product(one_to_hundred).map do |width, height|
-** Processing line: ~ [width, height, Math.sqrt(width ** 2 + height ** 2)]~
-- Inside source: true
-*** True Line Result
- [width, height, Math.sqrt(width ** 2 + height ** 2)]
-** Processing line: ~ end.find_all do |_, _, hypotenuse|~
-- Inside source: true
-*** True Line Result
- end.find_all do |_, _, hypotenuse|
-** Processing line: ~ hypotenuse.to_i == hypotenuse~
-- Inside source: true
-*** True Line Result
- hypotenuse.to_i == hypotenuse
-** Processing line: ~ end.map do |triangle|~
-- Inside source: true
-*** True Line Result
- end.map do |triangle|
-** Processing line: ~ triangle.map(&:to_i)~
-- Inside source: true
-*** True Line Result
- triangle.map(&:to_i)
-** Processing line: ~ end.uniq do |triangle|~
-- Inside source: true
-*** True Line Result
- end.uniq do |triangle|
-** Processing line: ~ triangle.sort~
-- Inside source: true
-*** True Line Result
- triangle.sort
-** Processing line: ~ end.map do |width, height, hypotenuse|~
-- Inside source: true
-*** True Line Result
- end.map do |width, height, hypotenuse|
-** Processing line: ~ [width, height, hypotenuse, (width * height) / 2]~
-- Inside source: true
-*** True Line Result
- [width, height, hypotenuse, (width * height) / 2]
-** Processing line: ~ end.sort_by do |_, _, _, area|~
-- Inside source: true
-*** True Line Result
- end.sort_by do |_, _, _, area|
-** Processing line: ~ area~
-- Inside source: true
-*** True Line Result
- area
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ triples.each do |width, height, hypotenuse, area|~
-- Inside source: true
-*** True Line Result
- triples.each do |width, height, hypotenuse, area|
-** Processing line: ~ puts "(#{width}, #{height}, #{hypotenuse}) = #{area}"~
-- Inside source: true
-*** True Line Result
- puts "(#{width}, #{height}, #{hypotenuse}) = #{area}"
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~#+end_src~
-- Line was identified as the end of a code block.
-*** True Line Result
-#+end_src
-** Processing line: ~~
-- End of paragraph detected.
-*** True Line Result
-
** Processing line: ~*** Crafting - Farming Game Starting Point - tests.rb~
- Header detected.
*** True Line Result
@@ -114059,42 +115675,366 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
-** Processing line: ~*** Platformer - Clepto Frog - main.rb~
+** Processing line: ~*** Mario - Jumping - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
-*** Platformer - Clepto Frog - main.rb
+*** Mario - Jumping - main.rb
** Processing line: ~#+begin_src ruby~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src ruby
-** Processing line: ~ # ./samples/99_genre_platformer/clepto_frog/app/main.rb~
+** Processing line: ~ # ./samples/99_genre_mario/01_jumping/app/main.rb~
- Inside source: true
*** True Line Result
- # ./samples/99_genre_platformer/clepto_frog/app/main.rb
-** Processing line: ~ MAP_FILE_PATH = 'app/map.txt'~
+ # ./samples/99_genre_mario/01_jumping/app/main.rb
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ defaults args~
+- Inside source: true
+*** True Line Result
+ defaults args
+** Processing line: ~ render args~
+- Inside source: true
+*** True Line Result
+ render args
+** Processing line: ~ input args~
- Inside source: true
*** True Line Result
- MAP_FILE_PATH = 'app/map.txt'
+ input args
+** Processing line: ~ calc args~
+- Inside source: true
+*** True Line Result
+ calc args
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ require 'app/map.rb'~
+** Processing line: ~ def defaults args~
- Inside source: true
*** True Line Result
- require 'app/map.rb'
+ def defaults args
+** Processing line: ~ args.state.player.x ||= args.grid.w.half~
+- Inside source: true
+*** True Line Result
+ args.state.player.x ||= args.grid.w.half
+** Processing line: ~ args.state.player.y ||= 0~
+- Inside source: true
+*** True Line Result
+ args.state.player.y ||= 0
+** Processing line: ~ args.state.player.size ||= 100~
+- Inside source: true
+*** True Line Result
+ args.state.player.size ||= 100
+** Processing line: ~ args.state.player.dy ||= 0~
+- Inside source: true
+*** True Line Result
+ args.state.player.dy ||= 0
+** Processing line: ~ args.state.player.action ||= :jumping~
+- Inside source: true
+*** True Line Result
+ args.state.player.action ||= :jumping
+** Processing line: ~ args.state.jump.power = 20~
+- Inside source: true
+*** True Line Result
+ args.state.jump.power = 20
+** Processing line: ~ args.state.jump.increase_frames = 10~
+- Inside source: true
+*** True Line Result
+ args.state.jump.increase_frames = 10
+** Processing line: ~ args.state.jump.increase_power = 1~
+- Inside source: true
+*** True Line Result
+ args.state.jump.increase_power = 1
+** Processing line: ~ args.state.gravity = -1~
+- Inside source: true
+*** True Line Result
+ args.state.gravity = -1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ class CleptoFrog~
+** Processing line: ~ def render args~
- Inside source: true
*** True Line Result
- class CleptoFrog
+ def render args
+** Processing line: ~ args.outputs.sprites << {~
+- Inside source: true
+*** True Line Result
+ args.outputs.sprites << {
+** Processing line: ~ x: args.state.player.x -~
+- Inside source: true
+*** True Line Result
+ x: args.state.player.x -
+** Processing line: ~ args.state.player.size.half,~
+- Inside source: true
+*** True Line Result
+ args.state.player.size.half,
+** Processing line: ~ y: args.state.player.y,~
+- Inside source: true
+*** True Line Result
+ y: args.state.player.y,
+** Processing line: ~ w: args.state.player.size,~
+- Inside source: true
+*** True Line Result
+ w: args.state.player.size,
+** Processing line: ~ h: args.state.player.size,~
+- Inside source: true
+*** True Line Result
+ h: args.state.player.size,
+** Processing line: ~ path: 'sprites/square/red.png'~
+- Inside source: true
+*** True Line Result
+ path: 'sprites/square/red.png'
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def input args~
+- Inside source: true
+*** True Line Result
+ def input args
+** Processing line: ~ if args.inputs.keyboard.key_down.space~
+- Inside source: true
+*** True Line Result
+ if args.inputs.keyboard.key_down.space
+** Processing line: ~ if args.state.player.action == :standing~
+- Inside source: true
+*** True Line Result
+ if args.state.player.action == :standing
+** Processing line: ~ args.state.player.action = :jumping~
+- Inside source: true
+*** True Line Result
+ args.state.player.action = :jumping
+** Processing line: ~ args.state.player.dy = args.state.jump.power~
+- Inside source: true
+*** True Line Result
+ args.state.player.dy = args.state.jump.power
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # record when the action took place~
+- Inside source: true
+*** True Line Result
+ # record when the action took place
+** Processing line: ~ current_frame = args.state.tick_count~
+- Inside source: true
+*** True Line Result
+ current_frame = args.state.tick_count
+** Processing line: ~ args.state.player.action_at = current_frame~
+- Inside source: true
+*** True Line Result
+ args.state.player.action_at = current_frame
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # if the space bar is being held~
+- Inside source: true
+*** True Line Result
+ # if the space bar is being held
+** Processing line: ~ if args.inputs.keyboard.key_held.space~
+- Inside source: true
+*** True Line Result
+ if args.inputs.keyboard.key_held.space
+** Processing line: ~ # is the player jumping~
+- Inside source: true
+*** True Line Result
+ # is the player jumping
+** Processing line: ~ is_jumping = args.state.player.action == :jumping~
+- Inside source: true
+*** True Line Result
+ is_jumping = args.state.player.action == :jumping
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # when was the jump performed~
+- Inside source: true
+*** True Line Result
+ # when was the jump performed
+** Processing line: ~ time_of_jump = args.state.player.action_at~
+- Inside source: true
+*** True Line Result
+ time_of_jump = args.state.player.action_at
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # how much time has passed since the jump~
+- Inside source: true
+*** True Line Result
+ # how much time has passed since the jump
+** Processing line: ~ jump_elapsed_time = time_of_jump.elapsed_time~
+- Inside source: true
+*** True Line Result
+ jump_elapsed_time = time_of_jump.elapsed_time
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # how much time is allowed for increasing power~
+- Inside source: true
+*** True Line Result
+ # how much time is allowed for increasing power
+** Processing line: ~ time_allowed = args.state.jump.increase_frames~
+- Inside source: true
+*** True Line Result
+ time_allowed = args.state.jump.increase_frames
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # if the player is jumping~
+- Inside source: true
+*** True Line Result
+ # if the player is jumping
+** Processing line: ~ # and the elapsed time is less than~
+- Inside source: true
+*** True Line Result
+ # and the elapsed time is less than
+** Processing line: ~ # the allowed time~
+- Inside source: true
+*** True Line Result
+ # the allowed time
+** Processing line: ~ if is_jumping && jump_elapsed_time < time_allowed~
+- Inside source: true
+*** True Line Result
+ if is_jumping && jump_elapsed_time < time_allowed
+** Processing line: ~ # increase the dy by the increase power~
+- Inside source: true
+*** True Line Result
+ # increase the dy by the increase power
+** Processing line: ~ power_to_add = args.state.jump.increase_power~
+- Inside source: true
+*** True Line Result
+ power_to_add = args.state.jump.increase_power
+** Processing line: ~ args.state.player.dy += power_to_add~
+- Inside source: true
+*** True Line Result
+ args.state.player.dy += power_to_add
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def calc args~
+- Inside source: true
+*** True Line Result
+ def calc args
+** Processing line: ~ if args.state.player.action == :jumping~
+- Inside source: true
+*** True Line Result
+ if args.state.player.action == :jumping
+** Processing line: ~ args.state.player.y += args.state.player.dy~
+- Inside source: true
+*** True Line Result
+ args.state.player.y += args.state.player.dy
+** Processing line: ~ args.state.player.dy += args.state.gravity~
+- Inside source: true
+*** True Line Result
+ args.state.player.dy += args.state.gravity
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if args.state.player.y < 0~
+- Inside source: true
+*** True Line Result
+ if args.state.player.y < 0
+** Processing line: ~ args.state.player.y = 0~
+- Inside source: true
+*** True Line Result
+ args.state.player.y = 0
+** Processing line: ~ args.state.player.action = :standing~
+- Inside source: true
+*** True Line Result
+ args.state.player.action = :standing
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
+** Processing line: ~*** Mario - Jumping And Collisions - main.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+*** Mario - Jumping And Collisions - main.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./samples/99_genre_mario/02_jumping_and_collisions/app/main.rb~
+- Inside source: true
+*** True Line Result
+ # ./samples/99_genre_mario/02_jumping_and_collisions/app/main.rb
+** Processing line: ~ class Game~
+- Inside source: true
+*** True Line Result
+ class Game
** Processing line: ~ attr_gtk~
- Inside source: true
*** True Line Result
@@ -114103,78 +116043,466 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def render_ending~
+** Processing line: ~ def tick~
- Inside source: true
*** True Line Result
- def render_ending
-** Processing line: ~ state.game_over_at ||= state.tick_count~
+ def tick
+** Processing line: ~ defaults~
- Inside source: true
*** True Line Result
- state.game_over_at ||= state.tick_count
+ defaults
+** Processing line: ~ render~
+- Inside source: true
+*** True Line Result
+ render
+** Processing line: ~ input~
+- Inside source: true
+*** True Line Result
+ input
+** Processing line: ~ calc~
+- Inside source: true
+*** True Line Result
+ calc
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ outputs.labels << [640, 700, "Clepto Frog", 4, 1]~
+** Processing line: ~ def defaults~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 700, "Clepto Frog", 4, 1]
+ def defaults
+** Processing line: ~ return if state.tick_count != 0~
+- Inside source: true
+*** True Line Result
+ return if state.tick_count != 0
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ if state.tick_count >= (state.game_over_at + 120)~
+** Processing line: ~ player.x = 64~
- Inside source: true
*** True Line Result
- if state.tick_count >= (state.game_over_at + 120)
-** Processing line: ~ outputs.labels << [640, 620, "\"I... I.... don't believe it.\" - New Guy",~
+ player.x = 64
+** Processing line: ~ player.y = 800~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 620, "\"I... I.... don't believe it.\" - New Guy",
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * (state.game_over_at + 120).ease(60)]~
+ player.y = 800
+** Processing line: ~ player.size = 50~
- Inside source: true
*** True Line Result
- 4, 1, 0, 0, 0, 255 * (state.game_over_at + 120).ease(60)]
+ player.size = 50
+** Processing line: ~ player.dx = 0~
+- Inside source: true
+*** True Line Result
+ player.dx = 0
+** Processing line: ~ player.dy = 0~
+- Inside source: true
+*** True Line Result
+ player.dy = 0
+** Processing line: ~ player.action = :falling~
+- Inside source: true
+*** True Line Result
+ player.action = :falling
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ player.max_speed = 20~
+- Inside source: true
+*** True Line Result
+ player.max_speed = 20
+** Processing line: ~ player.jump_power = 15~
+- Inside source: true
+*** True Line Result
+ player.jump_power = 15
+** Processing line: ~ player.jump_air_time = 15~
+- Inside source: true
+*** True Line Result
+ player.jump_air_time = 15
+** Processing line: ~ player.jump_increase_power = 1~
+- Inside source: true
+*** True Line Result
+ player.jump_increase_power = 1
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ state.gravity = -1~
+- Inside source: true
+*** True Line Result
+ state.gravity = -1
+** Processing line: ~ state.drag = 0.001~
+- Inside source: true
+*** True Line Result
+ state.drag = 0.001
+** Processing line: ~ state.tile_size = 64~
+- Inside source: true
+*** True Line Result
+ state.tile_size = 64
+** Processing line: ~ state.tiles ||= [~
+- Inside source: true
+*** True Line Result
+ state.tiles ||= [
+** Processing line: ~ { ordinal_x: 0, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 0, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 1, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 1, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 2, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 2, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 3, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 3, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 4, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 4, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 5, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 5, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 6, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 6, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 7, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 7, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 8, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 8, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 9, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 9, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 10, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 10, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 11, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 11, ordinal_y: 0 },
+** Processing line: ~ { ordinal_x: 12, ordinal_y: 0 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 12, ordinal_y: 0 },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { ordinal_x: 9, ordinal_y: 3 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 9, ordinal_y: 3 },
+** Processing line: ~ { ordinal_x: 10, ordinal_y: 3 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 10, ordinal_y: 3 },
+** Processing line: ~ { ordinal_x: 11, ordinal_y: 3 },~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: 11, ordinal_y: 3 },
+** Processing line: ~ ]~
+- Inside source: true
+*** True Line Result
+ ]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ tiles.each do |t|~
+- Inside source: true
+*** True Line Result
+ tiles.each do |t|
+** Processing line: ~ t.rect = { x: t.ordinal_x * 64,~
+- Inside source: true
+*** True Line Result
+ t.rect = { x: t.ordinal_x * 64,
+** Processing line: ~ y: t.ordinal_y * 64,~
+- Inside source: true
+*** True Line Result
+ y: t.ordinal_y * 64,
+** Processing line: ~ w: 64,~
+- Inside source: true
+*** True Line Result
+ w: 64,
+** Processing line: ~ h: 64 }~
+- Inside source: true
+*** True Line Result
+ h: 64 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ if state.tick_count >= (state.game_over_at + 240)~
+** Processing line: ~ def render~
- Inside source: true
*** True Line Result
- if state.tick_count >= (state.game_over_at + 240)
-** Processing line: ~ outputs.labels << [640, 580, "\"He actually stole all the mugs?\" - New Guy",~
+ def render
+** Processing line: ~ render_player~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 580, "\"He actually stole all the mugs?\" - New Guy",
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * (state.game_over_at + 240).ease(60)]~
+ render_player
+** Processing line: ~ render_tiles~
- Inside source: true
*** True Line Result
- 4, 1, 0, 0, 0, 255 * (state.game_over_at + 240).ease(60)]
+ render_tiles
+** Processing line: ~ # render_grid~
+- Inside source: true
+*** True Line Result
+ # render_grid
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def input~
+- Inside source: true
+*** True Line Result
+ def input
+** Processing line: ~ input_jump~
+- Inside source: true
+*** True Line Result
+ input_jump
+** Processing line: ~ input_move~
+- Inside source: true
+*** True Line Result
+ input_move
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def calc~
+- Inside source: true
+*** True Line Result
+ def calc
+** Processing line: ~ calc_player_rect~
+- Inside source: true
+*** True Line Result
+ calc_player_rect
+** Processing line: ~ calc_left~
+- Inside source: true
+*** True Line Result
+ calc_left
+** Processing line: ~ calc_right~
+- Inside source: true
+*** True Line Result
+ calc_right
+** Processing line: ~ calc_below~
+- Inside source: true
+*** True Line Result
+ calc_below
+** Processing line: ~ calc_above~
+- Inside source: true
+*** True Line Result
+ calc_above
+** Processing line: ~ calc_player_dy~
+- Inside source: true
+*** True Line Result
+ calc_player_dy
+** Processing line: ~ calc_player_dx~
+- Inside source: true
+*** True Line Result
+ calc_player_dx
+** Processing line: ~ calc_game_over~
+- Inside source: true
+*** True Line Result
+ calc_game_over
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def render_player~
+- Inside source: true
+*** True Line Result
+ def render_player
+** Processing line: ~ outputs.sprites << {~
+- Inside source: true
+*** True Line Result
+ outputs.sprites << {
+** Processing line: ~ x: player.x,~
+- Inside source: true
+*** True Line Result
+ x: player.x,
+** Processing line: ~ y: player.y,~
+- Inside source: true
+*** True Line Result
+ y: player.y,
+** Processing line: ~ w: player.size,~
+- Inside source: true
+*** True Line Result
+ w: player.size,
+** Processing line: ~ h: player.size,~
+- Inside source: true
+*** True Line Result
+ h: player.size,
+** Processing line: ~ path: 'sprites/square/red.png'~
+- Inside source: true
+*** True Line Result
+ path: 'sprites/square/red.png'
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def render_tiles~
+- Inside source: true
+*** True Line Result
+ def render_tiles
+** Processing line: ~ outputs.sprites << state.tiles.map do |t|~
+- Inside source: true
+*** True Line Result
+ outputs.sprites << state.tiles.map do |t|
+** Processing line: ~ t.merge path: 'sprites/square/white.png',~
+- Inside source: true
+*** True Line Result
+ t.merge path: 'sprites/square/white.png',
+** Processing line: ~ x: t.ordinal_x * 64,~
+- Inside source: true
+*** True Line Result
+ x: t.ordinal_x * 64,
+** Processing line: ~ y: t.ordinal_y * 64,~
+- Inside source: true
+*** True Line Result
+ y: t.ordinal_y * 64,
+** Processing line: ~ w: 64,~
+- Inside source: true
+*** True Line Result
+ w: 64,
+** Processing line: ~ h: 64~
+- Inside source: true
+*** True Line Result
+ h: 64
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ if state.tick_count >= (state.game_over_at + 360)~
+** Processing line: ~ def render_grid~
- Inside source: true
*** True Line Result
- if state.tick_count >= (state.game_over_at + 360)
-** Processing line: ~ outputs.labels << [640, 540, "\"Kind of feel bad STARTING HIM WITH NOTHING again.\" - New Guy",~
+ def render_grid
+** Processing line: ~ if state.tick_count == 0~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 540, "\"Kind of feel bad STARTING HIM WITH NOTHING again.\" - New Guy",
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * (state.game_over_at + 360).ease(60)]~
+ if state.tick_count == 0
+** Processing line: ~ outputs[:grid].background_color = [0, 0, 0, 0]~
- Inside source: true
*** True Line Result
- 4, 1, 0, 0, 0, 255 * (state.game_over_at + 360).ease(60)]
+ outputs[:grid].background_color = [0, 0, 0, 0]
+** Processing line: ~ outputs[:grid].borders << available_brick_locations~
+- Inside source: true
+*** True Line Result
+ outputs[:grid].borders << available_brick_locations
+** Processing line: ~ outputs[:grid].labels << available_brick_locations.map do |b|~
+- Inside source: true
+*** True Line Result
+ outputs[:grid].labels << available_brick_locations.map do |b|
+** Processing line: ~ [~
+- Inside source: true
+*** True Line Result
+ [
+** Processing line: ~ b.merge(text: "#{b.ordinal_x},#{b.ordinal_y}",~
+- Inside source: true
+*** True Line Result
+ b.merge(text: "#{b.ordinal_x},#{b.ordinal_y}",
+** Processing line: ~ x: b.x + 2,~
+- Inside source: true
+*** True Line Result
+ x: b.x + 2,
+** Processing line: ~ y: b.y + 2,~
+- Inside source: true
+*** True Line Result
+ y: b.y + 2,
+** Processing line: ~ size_enum: -3,~
+- Inside source: true
+*** True Line Result
+ size_enum: -3,
+** Processing line: ~ vertical_alignment_enum: 0,~
+- Inside source: true
+*** True Line Result
+ vertical_alignment_enum: 0,
+** Processing line: ~ blendmode_enum: 0),~
+- Inside source: true
+*** True Line Result
+ blendmode_enum: 0),
+** Processing line: ~ b.merge(text: "#{b.x},#{b.y}",~
+- Inside source: true
+*** True Line Result
+ b.merge(text: "#{b.x},#{b.y}",
+** Processing line: ~ x: b.x + 2,~
+- Inside source: true
+*** True Line Result
+ x: b.x + 2,
+** Processing line: ~ y: b.y + 2 + 20,~
+- Inside source: true
+*** True Line Result
+ y: b.y + 2 + 20,
+** Processing line: ~ size_enum: -3,~
+- Inside source: true
+*** True Line Result
+ size_enum: -3,
+** Processing line: ~ vertical_alignment_enum: 0,~
+- Inside source: true
+*** True Line Result
+ vertical_alignment_enum: 0,
+** Processing line: ~ blendmode_enum: 0)~
+- Inside source: true
+*** True Line Result
+ blendmode_enum: 0)
+** Processing line: ~ ]~
+- Inside source: true
+*** True Line Result
+ ]
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -114183,38 +116511,46 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ outputs.sprites << [640 - 50, 360 - 50, 100, 100,~
+** Processing line: ~ outputs.sprites << { x: 0, y: 0, w: 1280, h: 720, path: :grid }~
- Inside source: true
*** True Line Result
- outputs.sprites << [640 - 50, 360 - 50, 100, 100,
-** Processing line: ~ "sprites/square-green.png"]~
+ outputs.sprites << { x: 0, y: 0, w: 1280, h: 720, path: :grid }
+** Processing line: ~ end~
- Inside source: true
*** True Line Result
- "sprites/square-green.png"]
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ outputs.labels << [640, 300, "Current Time: #{"%.2f" % state.stuff_time}", 4, 1]~
+** Processing line: ~ def input_jump~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 300, "Current Time: #{"%.2f" % state.stuff_time}", 4, 1]
-** Processing line: ~ outputs.labels << [640, 270, "Best Time: #{"%.2f" % state.stuff_best_time}", 4, 1]~
+ def input_jump
+** Processing line: ~ if inputs.keyboard.key_down.space~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 270, "Best Time: #{"%.2f" % state.stuff_best_time}", 4, 1]
+ if inputs.keyboard.key_down.space
+** Processing line: ~ player_jump~
+- Inside source: true
+*** True Line Result
+ player_jump
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ if state.tick_count >= (state.game_over_at + 550)~
+** Processing line: ~ if inputs.keyboard.key_held.space~
- Inside source: true
*** True Line Result
- if state.tick_count >= (state.game_over_at + 550)
-** Processing line: ~ restart_game~
+ if inputs.keyboard.key_held.space
+** Processing line: ~ player_jump_increase_air_time~
- Inside source: true
*** True Line Result
- restart_game
+ player_jump_increase_air_time
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -114227,58 +116563,74 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def restart_game~
+** Processing line: ~ def input_move~
- Inside source: true
*** True Line Result
- def restart_game
-** Processing line: ~ state.world = nil~
+ def input_move
+** Processing line: ~ if player.dx.abs < 20~
- Inside source: true
*** True Line Result
- state.world = nil
-** Processing line: ~ state.x = nil~
+ if player.dx.abs < 20
+** Processing line: ~ if inputs.keyboard.left~
- Inside source: true
*** True Line Result
- state.x = nil
-** Processing line: ~ state.y = nil~
+ if inputs.keyboard.left
+** Processing line: ~ player.dx -= 2~
- Inside source: true
*** True Line Result
- state.y = nil
-** Processing line: ~ state.dx = nil~
+ player.dx -= 2
+** Processing line: ~ elsif inputs.keyboard.right~
- Inside source: true
*** True Line Result
- state.dx = nil
-** Processing line: ~ state.dy = nil~
+ elsif inputs.keyboard.right
+** Processing line: ~ player.dx += 2~
- Inside source: true
*** True Line Result
- state.dy = nil
-** Processing line: ~ state.stuff_score = 0~
+ player.dx += 2
+** Processing line: ~ end~
- Inside source: true
*** True Line Result
- state.stuff_score = 0
-** Processing line: ~ state.stuff_time = 0~
+ end
+** Processing line: ~ end~
- Inside source: true
*** True Line Result
- state.stuff_time = 0
-** Processing line: ~ state.intro_tick_count = nil~
+ end
+** Processing line: ~ end~
- Inside source: true
*** True Line Result
- state.intro_tick_count = nil
-** Processing line: ~ defaults~
+ end
+** Processing line: ~~
- Inside source: true
*** True Line Result
- defaults
-** Processing line: ~ state.game_start_at = state.tick_count~
+
+** Processing line: ~ def calc_game_over~
- Inside source: true
*** True Line Result
- state.game_start_at = state.tick_count
-** Processing line: ~ state.scene = :game~
+ def calc_game_over
+** Processing line: ~ if player.y < -64~
- Inside source: true
*** True Line Result
- state.scene = :game
-** Processing line: ~ state.game_over_at = nil~
+ if player.y < -64
+** Processing line: ~ player.x = 64~
- Inside source: true
*** True Line Result
- state.game_over_at = nil
+ player.x = 64
+** Processing line: ~ player.y = 800~
+- Inside source: true
+*** True Line Result
+ player.y = 800
+** Processing line: ~ player.dx = 0~
+- Inside source: true
+*** True Line Result
+ player.dx = 0
+** Processing line: ~ player.dy = 0~
+- Inside source: true
+*** True Line Result
+ player.dy = 0
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -114287,66 +116639,610 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def render_intro~
+** Processing line: ~ def calc_player_rect~
- Inside source: true
*** True Line Result
- def render_intro
-** Processing line: ~ outputs.labels << [640, 700, "Clepto Frog", 4, 1]~
+ def calc_player_rect
+** Processing line: ~ player.rect = player_current_rect~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 700, "Clepto Frog", 4, 1]
-** Processing line: ~ if state.tick_count >= 120~
+ player.rect = player_current_rect
+** Processing line: ~ player.next_rect = player_next_rect~
+- Inside source: true
+*** True Line Result
+ player.next_rect = player_next_rect
+** Processing line: ~ player.prev_rect = player_prev_rect~
- Inside source: true
*** True Line Result
- if state.tick_count >= 120
-** Processing line: ~ outputs.labels << [640, 620, "\"Uh... your office has a pet frog?\" - New Guy",~
+ player.prev_rect = player_prev_rect
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def calc_player_dx~
+- Inside source: true
+*** True Line Result
+ def calc_player_dx
+** Processing line: ~ player.dx = player_next_dx~
+- Inside source: true
+*** True Line Result
+ player.dx = player_next_dx
+** Processing line: ~ player.x += player.dx~
+- Inside source: true
+*** True Line Result
+ player.x += player.dx
+** Processing line: ~ end~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 620, "\"Uh... your office has a pet frog?\" - New Guy",
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * 120.ease(60)]~
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def calc_player_dy~
+- Inside source: true
+*** True Line Result
+ def calc_player_dy
+** Processing line: ~ player.y += player.dy~
- Inside source: true
*** True Line Result
- 4, 1, 0, 0, 0, 255 * 120.ease(60)]
+ player.y += player.dy
+** Processing line: ~ player.dy = player_next_dy~
+- Inside source: true
+*** True Line Result
+ player.dy = player_next_dy
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def calc_below~
+- Inside source: true
+*** True Line Result
+ def calc_below
+** Processing line: ~ return unless player.dy < 0~
+- Inside source: true
+*** True Line Result
+ return unless player.dy < 0
+** Processing line: ~ tiles_below = tiles_find { |t| t.rect.top <= player.prev_rect.y }~
+- Inside source: true
+*** True Line Result
+ tiles_below = tiles_find { |t| t.rect.top <= player.prev_rect.y }
+** Processing line: ~ collision = tiles_find_colliding tiles_below, (player.rect.merge y: player.next_rect.y)~
+- Inside source: true
+*** True Line Result
+ collision = tiles_find_colliding tiles_below, (player.rect.merge y: player.next_rect.y)
+** Processing line: ~ if collision~
+- Inside source: true
+*** True Line Result
+ if collision
+** Processing line: ~ player.y = collision.rect.y + state.tile_size~
+- Inside source: true
+*** True Line Result
+ player.y = collision.rect.y + state.tile_size
+** Processing line: ~ player.dy = 0~
+- Inside source: true
+*** True Line Result
+ player.dy = 0
+** Processing line: ~ player.action = :standing~
+- Inside source: true
+*** True Line Result
+ player.action = :standing
+** Processing line: ~ else~
+- Inside source: true
+*** True Line Result
+ else
+** Processing line: ~ player.action = :falling~
+- Inside source: true
+*** True Line Result
+ player.action = :falling
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def calc_left~
+- Inside source: true
+*** True Line Result
+ def calc_left
+** Processing line: ~ return unless player.dx < 0 && player_next_dx < 0~
+- Inside source: true
+*** True Line Result
+ return unless player.dx < 0 && player_next_dx < 0
+** Processing line: ~ tiles_left = tiles_find { |t| t.rect.right <= player.prev_rect.left }~
+- Inside source: true
+*** True Line Result
+ tiles_left = tiles_find { |t| t.rect.right <= player.prev_rect.left }
+** Processing line: ~ collision = tiles_find_colliding tiles_left, (player.rect.merge x: player.next_rect.x)~
+- Inside source: true
+*** True Line Result
+ collision = tiles_find_colliding tiles_left, (player.rect.merge x: player.next_rect.x)
+** Processing line: ~ return unless collision~
+- Inside source: true
+*** True Line Result
+ return unless collision
+** Processing line: ~ player.x = collision.rect.right~
+- Inside source: true
+*** True Line Result
+ player.x = collision.rect.right
+** Processing line: ~ player.dx = 0~
+- Inside source: true
+*** True Line Result
+ player.dx = 0
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def calc_right~
+- Inside source: true
+*** True Line Result
+ def calc_right
+** Processing line: ~ return unless player.dx > 0 && player_next_dx > 0~
+- Inside source: true
+*** True Line Result
+ return unless player.dx > 0 && player_next_dx > 0
+** Processing line: ~ tiles_right = tiles_find { |t| t.rect.left >= player.prev_rect.right }~
+- Inside source: true
+*** True Line Result
+ tiles_right = tiles_find { |t| t.rect.left >= player.prev_rect.right }
+** Processing line: ~ collision = tiles_find_colliding tiles_right, (player.rect.merge x: player.next_rect.x)~
+- Inside source: true
+*** True Line Result
+ collision = tiles_find_colliding tiles_right, (player.rect.merge x: player.next_rect.x)
+** Processing line: ~ return unless collision~
+- Inside source: true
+*** True Line Result
+ return unless collision
+** Processing line: ~ player.x = collision.rect.left - player.rect.w~
+- Inside source: true
+*** True Line Result
+ player.x = collision.rect.left - player.rect.w
+** Processing line: ~ player.dx = 0~
+- Inside source: true
+*** True Line Result
+ player.dx = 0
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def calc_above~
+- Inside source: true
+*** True Line Result
+ def calc_above
+** Processing line: ~ return unless player.dy > 0~
+- Inside source: true
+*** True Line Result
+ return unless player.dy > 0
+** Processing line: ~ tiles_above = tiles_find { |t| t.rect.y >= player.prev_rect.y }~
+- Inside source: true
+*** True Line Result
+ tiles_above = tiles_find { |t| t.rect.y >= player.prev_rect.y }
+** Processing line: ~ collision = tiles_find_colliding tiles_above, (player.rect.merge y: player.next_rect.y)~
+- Inside source: true
+*** True Line Result
+ collision = tiles_find_colliding tiles_above, (player.rect.merge y: player.next_rect.y)
+** Processing line: ~ return unless collision~
+- Inside source: true
+*** True Line Result
+ return unless collision
+** Processing line: ~ player.dy = 0~
+- Inside source: true
+*** True Line Result
+ player.dy = 0
+** Processing line: ~ player.y = collision.rect.bottom - player.rect.h~
+- Inside source: true
+*** True Line Result
+ player.y = collision.rect.bottom - player.rect.h
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def player_current_rect~
+- Inside source: true
+*** True Line Result
+ def player_current_rect
+** Processing line: ~ { x: player.x, y: player.y, w: player.size, h: player.size }~
+- Inside source: true
+*** True Line Result
+ { x: player.x, y: player.y, w: player.size, h: player.size }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ if state.tick_count >= 240~
+** Processing line: ~ def available_brick_locations~
+- Inside source: true
+*** True Line Result
+ def available_brick_locations
+** Processing line: ~ (0..19).to_a~
- Inside source: true
*** True Line Result
- if state.tick_count >= 240
-** Processing line: ~ outputs.labels << [640, 580, "\"Yep! His name is Clepto.\" - Jim",~
+ (0..19).to_a
+** Processing line: ~ .product(0..11)~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 580, "\"Yep! His name is Clepto.\" - Jim",
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * 240.ease(60)]~
+ .product(0..11)
+** Processing line: ~ .map do |(ordinal_x, ordinal_y)|~
- Inside source: true
*** True Line Result
- 4, 1, 0, 0, 0, 255 * 240.ease(60)]
+ .map do |(ordinal_x, ordinal_y)|
+** Processing line: ~ { ordinal_x: ordinal_x,~
+- Inside source: true
+*** True Line Result
+ { ordinal_x: ordinal_x,
+** Processing line: ~ ordinal_y: ordinal_y,~
+- Inside source: true
+*** True Line Result
+ ordinal_y: ordinal_y,
+** Processing line: ~ x: ordinal_x * 64,~
+- Inside source: true
+*** True Line Result
+ x: ordinal_x * 64,
+** Processing line: ~ y: ordinal_y * 64,~
+- Inside source: true
+*** True Line Result
+ y: ordinal_y * 64,
+** Processing line: ~ w: 64,~
+- Inside source: true
+*** True Line Result
+ w: 64,
+** Processing line: ~ h: 64 }~
+- Inside source: true
+*** True Line Result
+ h: 64 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def player~
+- Inside source: true
+*** True Line Result
+ def player
+** Processing line: ~ state.player ||= args.state.new_entity :player~
+- Inside source: true
+*** True Line Result
+ state.player ||= args.state.new_entity :player
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def player_next_dy~
+- Inside source: true
+*** True Line Result
+ def player_next_dy
+** Processing line: ~ player.dy + state.gravity + state.drag ** 2 * -1~
+- Inside source: true
+*** True Line Result
+ player.dy + state.gravity + state.drag ** 2 * -1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def player_next_dx~
+- Inside source: true
+*** True Line Result
+ def player_next_dx
+** Processing line: ~ player.dx * 0.8~
+- Inside source: true
+*** True Line Result
+ player.dx * 0.8
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def player_next_rect~
+- Inside source: true
+*** True Line Result
+ def player_next_rect
+** Processing line: ~ player.rect.merge x: player.x + player_next_dx,~
+- Inside source: true
+*** True Line Result
+ player.rect.merge x: player.x + player_next_dx,
+** Processing line: ~ y: player.y + player_next_dy~
+- Inside source: true
+*** True Line Result
+ y: player.y + player_next_dy
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def player_prev_rect~
+- Inside source: true
+*** True Line Result
+ def player_prev_rect
+** Processing line: ~ player.rect.merge x: player.x - player.dx,~
+- Inside source: true
+*** True Line Result
+ player.rect.merge x: player.x - player.dx,
+** Processing line: ~ y: player.y - player.dy~
+- Inside source: true
+*** True Line Result
+ y: player.y - player.dy
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ if state.tick_count >= 360~
+** Processing line: ~ def player_jump~
- Inside source: true
*** True Line Result
- if state.tick_count >= 360
-** Processing line: ~ outputs.labels << [640, 540, "\"Uh...\" - New Guy",~
+ def player_jump
+** Processing line: ~ return if player.action != :standing~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 540, "\"Uh...\" - New Guy",
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * 360.ease(60)]~
+ return if player.action != :standing
+** Processing line: ~ player.action = :jumping~
- Inside source: true
*** True Line Result
- 4, 1, 0, 0, 0, 255 * 360.ease(60)]
+ player.action = :jumping
+** Processing line: ~ player.dy = state.player.jump_power~
+- Inside source: true
+*** True Line Result
+ player.dy = state.player.jump_power
+** Processing line: ~ current_frame = state.tick_count~
+- Inside source: true
+*** True Line Result
+ current_frame = state.tick_count
+** Processing line: ~ player.action_at = current_frame~
+- Inside source: true
+*** True Line Result
+ player.action_at = current_frame
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def player_jump_increase_air_time~
+- Inside source: true
+*** True Line Result
+ def player_jump_increase_air_time
+** Processing line: ~ return if player.action != :jumping~
+- Inside source: true
+*** True Line Result
+ return if player.action != :jumping
+** Processing line: ~ return if player.action_at.elapsed_time >= player.jump_air_time~
+- Inside source: true
+*** True Line Result
+ return if player.action_at.elapsed_time >= player.jump_air_time
+** Processing line: ~ player.dy += player.jump_increase_power~
+- Inside source: true
+*** True Line Result
+ player.dy += player.jump_increase_power
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def tiles~
+- Inside source: true
+*** True Line Result
+ def tiles
+** Processing line: ~ state.tiles~
+- Inside source: true
+*** True Line Result
+ state.tiles
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def tiles_find_colliding tiles, target~
+- Inside source: true
+*** True Line Result
+ def tiles_find_colliding tiles, target
+** Processing line: ~ tiles.find { |t| t.rect.intersect_rect? target }~
+- Inside source: true
+*** True Line Result
+ tiles.find { |t| t.rect.intersect_rect? target }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def tiles_find &block~
+- Inside source: true
+*** True Line Result
+ def tiles_find &block
+** Processing line: ~ tiles.find_all(&block)~
+- Inside source: true
+*** True Line Result
+ tiles.find_all(&block)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ $game ||= Game.new~
+- Inside source: true
+*** True Line Result
+ $game ||= Game.new
+** Processing line: ~ $game.args = args~
+- Inside source: true
+*** True Line Result
+ $game.args = args
+** Processing line: ~ $game.tick~
+- Inside source: true
+*** True Line Result
+ $game.tick
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ $gtk.reset~
+- Inside source: true
+*** True Line Result
+ $gtk.reset
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
+** Processing line: ~*** Platformer - Clepto Frog - main.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+*** Platformer - Clepto Frog - main.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./samples/99_genre_platformer/clepto_frog/app/main.rb~
+- Inside source: true
+*** True Line Result
+ # ./samples/99_genre_platformer/clepto_frog/app/main.rb
+** Processing line: ~ MAP_FILE_PATH = 'map.txt'~
+- Inside source: true
+*** True Line Result
+ MAP_FILE_PATH = 'map.txt'
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ require 'app/map.rb'~
+- Inside source: true
+*** True Line Result
+ require 'app/map.rb'
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ class CleptoFrog~
+- Inside source: true
+*** True Line Result
+ class CleptoFrog
+** Processing line: ~ attr_gtk~
+- Inside source: true
+*** True Line Result
+ attr_gtk
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def render_ending~
+- Inside source: true
+*** True Line Result
+ def render_ending
+** Processing line: ~ state.game_over_at ||= state.tick_count~
+- Inside source: true
+*** True Line Result
+ state.game_over_at ||= state.tick_count
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ outputs.labels << [640, 700, "Clepto Frog", 4, 1]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [640, 700, "Clepto Frog", 4, 1]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if state.tick_count >= (state.game_over_at + 120)~
+- Inside source: true
+*** True Line Result
+ if state.tick_count >= (state.game_over_at + 120)
+** Processing line: ~ outputs.labels << [640, 620, "\"I... I.... don't believe it.\" - New Guy",~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [640, 620, "\"I... I.... don't believe it.\" - New Guy",
+** Processing line: ~ 4, 1, 0, 0, 0, 255 * (state.game_over_at + 120).ease(60)]~
+- Inside source: true
+*** True Line Result
+ 4, 1, 0, 0, 0, 255 * (state.game_over_at + 120).ease(60)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -114355,18 +117251,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ if state.tick_count >= 480~
+** Processing line: ~ if state.tick_count >= (state.game_over_at + 240)~
- Inside source: true
*** True Line Result
- if state.tick_count >= 480
-** Processing line: ~ outputs.labels << [640, 500, "\"He steals mugs while we're away...\" - Jim",~
+ if state.tick_count >= (state.game_over_at + 240)
+** Processing line: ~ outputs.labels << [640, 580, "\"He actually stole all the mugs?\" - New Guy",~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 500, "\"He steals mugs while we're away...\" - Jim",
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * 480.ease(60)]~
+ outputs.labels << [640, 580, "\"He actually stole all the mugs?\" - New Guy",
+** Processing line: ~ 4, 1, 0, 0, 0, 255 * (state.game_over_at + 240).ease(60)]~
- Inside source: true
*** True Line Result
- 4, 1, 0, 0, 0, 255 * 480.ease(60)]
+ 4, 1, 0, 0, 0, 255 * (state.game_over_at + 240).ease(60)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -114375,18 +117271,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ if state.tick_count >= 600~
+** Processing line: ~ if state.tick_count >= (state.game_over_at + 360)~
- Inside source: true
*** True Line Result
- if state.tick_count >= 600
-** Processing line: ~ outputs.labels << [640, 460, "\"It's not a big deal, we take them back in the morning.\" - Jim",~
+ if state.tick_count >= (state.game_over_at + 360)
+** Processing line: ~ outputs.labels << [640, 540, "\"Kind of feel bad STARTING HIM WITH NOTHING again.\" - New Guy",~
- Inside source: true
*** True Line Result
- outputs.labels << [640, 460, "\"It's not a big deal, we take them back in the morning.\" - Jim",
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * 600.ease(60)]~
+ outputs.labels << [640, 540, "\"Kind of feel bad STARTING HIM WITH NOTHING again.\" - New Guy",
+** Processing line: ~ 4, 1, 0, 0, 0, 255 * (state.game_over_at + 360).ease(60)]~
- Inside source: true
*** True Line Result
- 4, 1, 0, 0, 0, 255 * 600.ease(60)]
+ 4, 1, 0, 0, 0, 255 * (state.game_over_at + 360).ease(60)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -114407,10 +117303,110 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ if state.tick_count == 800~
+** Processing line: ~ outputs.labels << [640, 300, "Current Time: #{"%.2f" % state.stuff_time}", 4, 1]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [640, 300, "Current Time: #{"%.2f" % state.stuff_time}", 4, 1]
+** Processing line: ~ outputs.labels << [640, 270, "Best Time: #{"%.2f" % state.stuff_best_time}", 4, 1]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [640, 270, "Best Time: #{"%.2f" % state.stuff_best_time}", 4, 1]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if state.tick_count >= (state.game_over_at + 550)~
+- Inside source: true
+*** True Line Result
+ if state.tick_count >= (state.game_over_at + 550)
+** Processing line: ~ restart_game~
+- Inside source: true
+*** True Line Result
+ restart_game
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def restart_game~
+- Inside source: true
+*** True Line Result
+ def restart_game
+** Processing line: ~ state.world = nil~
+- Inside source: true
+*** True Line Result
+ state.world = nil
+** Processing line: ~ state.x = nil~
+- Inside source: true
+*** True Line Result
+ state.x = nil
+** Processing line: ~ state.y = nil~
+- Inside source: true
+*** True Line Result
+ state.y = nil
+** Processing line: ~ state.dx = nil~
+- Inside source: true
+*** True Line Result
+ state.dx = nil
+** Processing line: ~ state.dy = nil~
+- Inside source: true
+*** True Line Result
+ state.dy = nil
+** Processing line: ~ state.stuff_score = 0~
+- Inside source: true
+*** True Line Result
+ state.stuff_score = 0
+** Processing line: ~ state.stuff_time = 0~
+- Inside source: true
+*** True Line Result
+ state.stuff_time = 0
+** Processing line: ~ state.intro_tick_count = nil~
+- Inside source: true
+*** True Line Result
+ state.intro_tick_count = nil
+** Processing line: ~ defaults~
+- Inside source: true
+*** True Line Result
+ defaults
+** Processing line: ~ state.game_start_at = state.tick_count~
+- Inside source: true
+*** True Line Result
+ state.game_start_at = state.tick_count
+** Processing line: ~ state.scene = :game~
+- Inside source: true
+*** True Line Result
+ state.scene = :game
+** Processing line: ~ state.game_over_at = nil~
+- Inside source: true
+*** True Line Result
+ state.game_over_at = nil
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def render_intro~
+- Inside source: true
+*** True Line Result
+ def render_intro
+** Processing line: ~ outputs.labels << [640, 700, "Clepto Frog", 4, 1]~
+- Inside source: true
+*** True Line Result
+ outputs.labels << [640, 700, "Clepto Frog", 4, 1]
+** Processing line: ~ if state.tick_count == 120~
- Inside source: true
*** True Line Result
- if state.tick_count == 800
+ if state.tick_count == 120
** Processing line: ~ state.scene = :game~
- Inside source: true
*** True Line Result
@@ -114439,10 +117435,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
defaults
-** Processing line: ~ if state.scene == :intro && state.tick_count <= 800~
+** Processing line: ~ if state.scene == :intro && state.tick_count <= 120~
- Inside source: true
*** True Line Result
- if state.scene == :intro && state.tick_count <= 800
+ if state.scene == :intro && state.tick_count <= 120
** Processing line: ~ render_intro~
- Inside source: true
*** True Line Result
@@ -114851,18 +117847,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# SHOW HIDE COLLISIONS
-** Processing line: ~ outputs.sprites << state.world.map do |x, y, w, h|~
+** Processing line: ~ outputs.sprites << state.world.map do |rect|~
- Inside source: true
*** True Line Result
- outputs.sprites << state.world.map do |x, y, w, h|
-** Processing line: ~ x = vx(x)~
+ outputs.sprites << state.world.map do |rect|
+** Processing line: ~ x = vx(rect.x)~
- Inside source: true
*** True Line Result
- x = vx(x)
-** Processing line: ~ y = vy(y)~
+ x = vx(rect.x)
+** Processing line: ~ y = vy(rect.y)~
- Inside source: true
*** True Line Result
- y = vy(y)
+ y = vy(rect.y)
** Processing line: ~ if x > -80 && x < 1280 && y > -80 && y < 720~
- Inside source: true
*** True Line Result
@@ -114879,14 +117875,14 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
y: y,
-** Processing line: ~ w: vw(w || state.tile_size),~
+** Processing line: ~ w: vw(rect.w || state.tile_size),~
- Inside source: true
*** True Line Result
- w: vw(w || state.tile_size),
-** Processing line: ~ h: vh(h || state.tile_size),~
+ w: vw(rect.w || state.tile_size),
+** Processing line: ~ h: vh(rect.h || state.tile_size),~
- Inside source: true
*** True Line Result
- h: vh(h || state.tile_size),
+ h: vh(rect.h || state.tile_size),
** Processing line: ~ path: 'sprites/square-gray.png',~
- Inside source: true
*** True Line Result
@@ -114975,14 +117971,22 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# Creates sprite following mouse to help indicate which sprite you have selected
-** Processing line: ~ outputs.primitives << [inputs.mouse.position.x, inputs.mouse.position.y,~
+** Processing line: ~ outputs.primitives << [inputs.mouse.position.x - 32 * state.camera_scale,~
+- Inside source: true
+*** True Line Result
+ outputs.primitives << [inputs.mouse.position.x - 32 * state.camera_scale,
+** Processing line: ~ inputs.mouse.position.y - 32 * state.camera_scale,~
+- Inside source: true
+*** True Line Result
+ inputs.mouse.position.y - 32 * state.camera_scale,
+** Processing line: ~ state.tile_size * state.camera_scale,~
- Inside source: true
*** True Line Result
- outputs.primitives << [inputs.mouse.position.x, inputs.mouse.position.y,
-** Processing line: ~ state.tile_size, state.tile_size, 'sprites/square-indigo.png', 0, 100].sprite~
+ state.tile_size * state.camera_scale,
+** Processing line: ~ state.tile_size * state.camera_scale, 'sprites/square-indigo.png', 0, 100].sprite~
- Inside source: true
*** True Line Result
- state.tile_size, state.tile_size, 'sprites/square-indigo.png', 0, 100].sprite
+ state.tile_size * state.camera_scale, 'sprites/square-indigo.png', 0, 100].sprite
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -115303,6 +118307,98 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
+** Processing line: ~ if inputs.mouse.click~
+- Inside source: true
+*** True Line Result
+ if inputs.mouse.click
+** Processing line: ~ state.id_seed += 1~
+- Inside source: true
+*** True Line Result
+ state.id_seed += 1
+** Processing line: ~ id = state.id_seed~
+- Inside source: true
+*** True Line Result
+ id = state.id_seed
+** Processing line: ~ x = state.camera_x + (inputs.mouse.click.x.fdiv(state.camera_scale) - 32)~
+- Inside source: true
+*** True Line Result
+ x = state.camera_x + (inputs.mouse.click.x.fdiv(state.camera_scale) - 32)
+** Processing line: ~ y = state.camera_y + (inputs.mouse.click.y.fdiv(state.camera_scale) - 32)~
+- Inside source: true
+*** True Line Result
+ y = state.camera_y + (inputs.mouse.click.y.fdiv(state.camera_scale) - 32)
+** Processing line: ~ x = ((x + 2).idiv 4) * 4~
+- Inside source: true
+*** True Line Result
+ x = ((x + 2).idiv 4) * 4
+** Processing line: ~ y = ((y + 2).idiv 4) * 4~
+- Inside source: true
+*** True Line Result
+ y = ((y + 2).idiv 4) * 4
+** Processing line: ~ w = 64~
+- Inside source: true
+*** True Line Result
+ w = 64
+** Processing line: ~ h = 64~
+- Inside source: true
+*** True Line Result
+ h = 64
+** Processing line: ~ candidate_rect = { id: id, x: x, y: y, w: w, h: h }~
+- Inside source: true
+*** True Line Result
+ candidate_rect = { id: id, x: x, y: y, w: w, h: h }
+** Processing line: ~ scaled_candidate_rect = { x: x + 30, y: y + 30, w: w - 60, h: h - 60 }~
+- Inside source: true
+*** True Line Result
+ scaled_candidate_rect = { x: x + 30, y: y + 30, w: w - 60, h: h - 60 }
+** Processing line: ~ to_remove = state.world.find { |r| r.intersect_rect? scaled_candidate_rect }~
+- Inside source: true
+*** True Line Result
+ to_remove = state.world.find { |r| r.intersect_rect? scaled_candidate_rect }
+** Processing line: ~ if to_remove && args.inputs.keyboard.x~
+- Inside source: true
+*** True Line Result
+ if to_remove && args.inputs.keyboard.x
+** Processing line: ~ state.world.reject! { |r| r.id == to_remove.id }~
+- Inside source: true
+*** True Line Result
+ state.world.reject! { |r| r.id == to_remove.id }
+** Processing line: ~ else~
+- Inside source: true
+*** True Line Result
+ else
+** Processing line: ~ state.world << candidate_rect~
+- Inside source: true
+*** True Line Result
+ state.world << candidate_rect
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ export_map~
+- Inside source: true
+*** True Line Result
+ export_map
+** Processing line: ~ state.world_lookup = {}~
+- Inside source: true
+*** True Line Result
+ state.world_lookup = {}
+** Processing line: ~ state.world_collision_rects = nil~
+- Inside source: true
+*** True Line Result
+ state.world_collision_rects = nil
+** Processing line: ~ calc_world_lookup~
+- Inside source: true
+*** True Line Result
+ calc_world_lookup
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~ if input_up?~
- Inside source: true
*** True Line Result
@@ -115387,30 +118483,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
process_inputs_god_mode
-** Processing line: ~ elsif state.scene == :intro~
-- Inside source: true
-*** True Line Result
- elsif state.scene == :intro
-** Processing line: ~ if args.inputs.keyboard.key_down.enter || args.inputs.keyboard.key_down.space~
-- Inside source: true
-*** True Line Result
- if args.inputs.keyboard.key_down.enter || args.inputs.keyboard.key_down.space
-** Processing line: ~ if Kernel.tick_count < 600~
-- Inside source: true
-*** True Line Result
- if Kernel.tick_count < 600
-** Processing line: ~ Kernel.tick_count = 600~
-- Inside source: true
-*** True Line Result
- Kernel.tick_count = 600
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -115799,50 +118871,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def add_floors~
-- Inside source: true
-*** True Line Result
- def add_floors
-** Processing line: ~ # floors~
-- Inside source: true
-*** True Line Result
- # floors
-** Processing line: ~ state.world += [~
-- Inside source: true
-*** True Line Result
- state.world += [
-** Processing line: ~ [0, 0, 10000, 40],~
-- Inside source: true
-*** True Line Result
- [0, 0, 10000, 40],
-** Processing line: ~ [0, 1670, 3250, 60],~
-- Inside source: true
-*** True Line Result
- [0, 1670, 3250, 60],
-** Processing line: ~ [6691, 1653, 3290, 60],~
-- Inside source: true
-*** True Line Result
- [6691, 1653, 3290, 60],
-** Processing line: ~ [1521, 3792, 7370, 60],~
-- Inside source: true
-*** True Line Result
- [1521, 3792, 7370, 60],
-** Processing line: ~ [0, 5137, 3290, 60]~
-- Inside source: true
-*** True Line Result
- [0, 5137, 3290, 60]
-** Processing line: ~ ]~
-- Inside source: true
-*** True Line Result
- ]
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ def attempt_load_world_from_file~
- Inside source: true
*** True Line Result
@@ -115871,86 +118899,26 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
if $collisions
-** Processing line: ~ $collisions.map do |x, y, w, h|~
+** Processing line: ~ state.id_seed ||= 0~
- Inside source: true
*** True Line Result
- $collisions.map do |x, y, w, h|
-** Processing line: ~ state.world << [x, y, w, h]~
+ state.id_seed ||= 0
+** Processing line: ~ $collisions.each do |x, y, w, h|~
- Inside source: true
*** True Line Result
- state.world << [x, y, w, h]
-** Processing line: ~ end~
+ $collisions.each do |x, y, w, h|
+** Processing line: ~ state.id_seed += 1~
- Inside source: true
*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ add_floors~
+ state.id_seed += 1
+** Processing line: ~ state.world << { id: state.id_seed, x: x, y: y, w: w, h: h }~
- Inside source: true
*** True Line Result
- add_floors
-** Processing line: ~ # elsif exported_world~
-- Inside source: true
-*** True Line Result
- # elsif exported_world
-** Processing line: ~ # exported_world.each_line.map do |l|~
-- Inside source: true
-*** True Line Result
- # exported_world.each_line.map do |l|
-** Processing line: ~ # tokens = l.strip.split(',')~
-- Inside source: true
-*** True Line Result
- # tokens = l.strip.split(',')
-** Processing line: ~ # x = tokens[0].to_i~
-- Inside source: true
-*** True Line Result
- # x = tokens[0].to_i
-** Processing line: ~ # y = tokens[1].to_i~
-- Inside source: true
-*** True Line Result
- # y = tokens[1].to_i
-** Processing line: ~ # type = tokens[2].to_i~
-- Inside source: true
-*** True Line Result
- # type = tokens[2].to_i
-** Processing line: ~ # if type == 1~
-- Inside source: true
-*** True Line Result
- # if type == 1
-** Processing line: ~ # state.world << [x, y, state.tile_size, state.tile_size]~
-- Inside source: true
-*** True Line Result
- # state.world << [x, y, state.tile_size, state.tile_size]
-** Processing line: ~ # elsif type == 2~
-- Inside source: true
-*** True Line Result
- # elsif type == 2
-** Processing line: ~ # w, h, path = tokens[3..-1]~
-- Inside source: true
-*** True Line Result
- # w, h, path = tokens[3..-1]
-** Processing line: ~ # state.objects << [x, y, w.to_i, h.to_i, path]~
-- Inside source: true
-*** True Line Result
- # state.objects << [x, y, w.to_i, h.to_i, path]
-** Processing line: ~ # end~
-- Inside source: true
-*** True Line Result
- # end
-** Processing line: ~ # end~
-- Inside source: true
-*** True Line Result
- # end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ # add_floors~
+ state.world << { id: state.id_seed, x: x, y: y, w: w, h: h }
+** Processing line: ~ end~
- Inside source: true
*** True Line Result
- # add_floors
+ end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -116031,14 +118999,14 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
state.world_lookup = {}
-** Processing line: ~ state.world.each do |x, y, w, h|~
+** Processing line: ~ state.world.each do |rect|~
- Inside source: true
*** True Line Result
- state.world.each do |x, y, w, h|
-** Processing line: ~ state.world_lookup[[x, y, w || state.tile_size, h || state.tile_size]] = true~
+ state.world.each do |rect|
+** Processing line: ~ state.world_lookup[rect.id] = rect~
- Inside source: true
*** True Line Result
- state.world_lookup[[x, y, w || state.tile_size, h || state.tile_size]] = true
+ state.world_lookup[rect.id] = rect
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -116063,42 +119031,46 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
.keys
-** Processing line: ~ .map do |x, y, w, h|~
+** Processing line: ~ .map do |key|~
- Inside source: true
*** True Line Result
- .map do |x, y, w, h|
+ .map do |key|
+** Processing line: ~ rect = state.world_lookup[key]~
+- Inside source: true
+*** True Line Result
+ rect = state.world_lookup[key]
** Processing line: ~ s = state.tile_size~
- Inside source: true
*** True Line Result
s = state.tile_size
-** Processing line: ~ w ||= s~
+** Processing line: ~ rect.w ||= s~
- Inside source: true
*** True Line Result
- w ||= s
-** Processing line: ~ h ||= s~
+ rect.w ||= s
+** Processing line: ~ rect.h ||= s~
- Inside source: true
*** True Line Result
- h ||= s
+ rect.h ||= s
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
-** Processing line: ~ args: [x, y, w, h],~
+** Processing line: ~ args: rect,~
- Inside source: true
*** True Line Result
- args: [x, y, w, h],
-** Processing line: ~ left_right: [x, y + 4, w, h - 6],~
+ args: rect,
+** Processing line: ~ left_right: { x: rect.x, y: rect.y + 4, w: rect.w, h: rect.h - 6 },~
- Inside source: true
*** True Line Result
- left_right: [x, y + 4, w, h - 6],
-** Processing line: ~ top: [x + 4, y + 6, w - 8, h - 6],~
+ left_right: { x: rect.x, y: rect.y + 4, w: rect.w, h: rect.h - 6 },
+** Processing line: ~ top: { x: rect.x + 4, y: rect.y + 6, w: rect.w - 8, h: rect.h - 6 },~
- Inside source: true
*** True Line Result
- top: [x + 4, y + 6, w - 8, h - 6],
-** Processing line: ~ bottom: [x + 1, y - 1, w - 2, h - 8],~
+ top: { x: rect.x + 4, y: rect.y + 6, w: rect.w - 8, h: rect.h - 6 },
+** Processing line: ~ bottom: { x: rect.x + 1, y: rect.y - 1, w: rect.w - 2, h: rect.h - 8 },~
- Inside source: true
*** True Line Result
- bottom: [x + 1, y - 1, w - 2, h - 8],
+ bottom: { x: rect.x + 1, y: rect.y - 1, w: rect.w - 2, h: rect.h - 8 },
** Processing line: ~ }~
- Inside source: true
*** True Line Result
@@ -116319,10 +119291,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
p = state.tongue_angle.vector(state.tongue_length)
-** Processing line: ~ [start_of_tongue.x + p.x, start_of_tongue.y + p.y]~
+** Processing line: ~ { x: start_of_tongue.x + p.x, y: start_of_tongue.y + p.y }~
- Inside source: true
*** True Line Result
- [start_of_tongue.x + p.x, start_of_tongue.y + p.y]
+ { x: start_of_tongue.x + p.x, y: start_of_tongue.y + p.y }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -116335,14 +119307,50 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def calc_shooting
+** Processing line: ~ calc_shooting_increment~
+- Inside source: true
+*** True Line Result
+ calc_shooting_increment
+** Processing line: ~ calc_shooting_increment~
+- Inside source: true
+*** True Line Result
+ calc_shooting_increment
+** Processing line: ~ calc_shooting_increment~
+- Inside source: true
+*** True Line Result
+ calc_shooting_increment
+** Processing line: ~ calc_shooting_increment~
+- Inside source: true
+*** True Line Result
+ calc_shooting_increment
+** Processing line: ~ calc_shooting_increment~
+- Inside source: true
+*** True Line Result
+ calc_shooting_increment
+** Processing line: ~ calc_shooting_increment~
+- Inside source: true
+*** True Line Result
+ calc_shooting_increment
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def calc_shooting_increment~
+- Inside source: true
+*** True Line Result
+ def calc_shooting_increment
** Processing line: ~ return unless state.action == :shooting~
- Inside source: true
*** True Line Result
return unless state.action == :shooting
-** Processing line: ~ state.tongue_length += 30~
+** Processing line: ~ state.tongue_length += 5~
- Inside source: true
*** True Line Result
- state.tongue_length += 30
+ state.tongue_length += 5
** Processing line: ~ potential_anchor = end_of_tongue~
- Inside source: true
*** True Line Result
@@ -116415,18 +119423,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
else
-** Processing line: ~ anchor_rect = [potential_anchor.x - 5, potential_anchor.y - 5, 10, 10]~
+** Processing line: ~ anchor_rect = { x: potential_anchor.x - 5, y: potential_anchor.y - 5, w: 10, h: 10 }~
- Inside source: true
*** True Line Result
- anchor_rect = [potential_anchor.x - 5, potential_anchor.y - 5, 10, 10]
+ anchor_rect = { x: potential_anchor.x - 5, y: potential_anchor.y - 5, w: 10, h: 10 }
** Processing line: ~ collision = state.world_collision_rects.find_all do |v|~
- Inside source: true
*** True Line Result
collision = state.world_collision_rects.find_all do |v|
-** Processing line: ~ [v[:args].x, v[:args].y, v[:args].w, v[:args].h].intersect_rect?(anchor_rect)~
+** Processing line: ~ v[:args].intersect_rect?(anchor_rect)~
- Inside source: true
*** True Line Result
- [v[:args].x, v[:args].y, v[:args].w, v[:args].h].intersect_rect?(anchor_rect)
+ v[:args].intersect_rect?(anchor_rect)
** Processing line: ~ end.first~
- Inside source: true
*** True Line Result
@@ -116807,10 +119815,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
return unless left_side_collisions
-** Processing line: ~ state.x = left_side_collisions[:left_right].right~
+** Processing line: ~ state.x = left_side_collisions[:left_right].right + 1~
- Inside source: true
*** True Line Result
- state.x = left_side_collisions[:left_right].right
+ state.x = left_side_collisions[:left_right].right + 1
** Processing line: ~ state.dx = state.dy.abs * 0.8~
- Inside source: true
*** True Line Result
@@ -116867,10 +119875,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
return unless right_side_collisions
-** Processing line: ~ state.x = right_side_collisions[:left_right].left - state.tile_size~
+** Processing line: ~ state.x = right_side_collisions[:left_right].left - state.tile_size - 1~
- Inside source: true
*** True Line Result
- state.x = right_side_collisions[:left_right].left - state.tile_size
+ state.x = right_side_collisions[:left_right].left - state.tile_size - 1
** Processing line: ~ state.dx = state.dx.abs * 0.8 * -1~
- Inside source: true
*** True Line Result
@@ -116931,10 +119939,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
return unless ceil_collisions
-** Processing line: ~ state.y = ceil_collisions[:bottom].y - state.tile_size~
+** Processing line: ~ state.y = ceil_collisions[:bottom].y - state.tile_size - 1~
- Inside source: true
*** True Line Result
- state.y = ceil_collisions[:bottom].y - state.tile_size
+ state.y = ceil_collisions[:bottom].y - state.tile_size - 1
** Processing line: ~ state.dy = state.dy.abs * 0.8 * -1~
- Inside source: true
*** True Line Result
@@ -116983,34 +119991,50 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def export_map
-** Processing line: ~ export_string = state.world.map do |x, y|~
+** Processing line: ~ export_string = "$collisions = [\n"~
- Inside source: true
*** True Line Result
- export_string = state.world.map do |x, y|
-** Processing line: ~ "#{x},#{y},1"~
+ export_string = "$collisions = [\n"
+** Processing line: ~ export_string += state.world.map do |rect|~
- Inside source: true
*** True Line Result
- "#{x},#{y},1"
-** Processing line: ~ end~
+ export_string += state.world.map do |rect|
+** Processing line: ~ "[#{rect.x},#{rect.y},#{rect.w},#{rect.h}],"~
- Inside source: true
*** True Line Result
- end
+ "[#{rect.x},#{rect.y},#{rect.w},#{rect.h}],"
+** Processing line: ~ end.join "\n"~
+- Inside source: true
+*** True Line Result
+ end.join "\n"
+** Processing line: ~ export_string += "\n]\n\n"~
+- Inside source: true
+*** True Line Result
+ export_string += "\n]\n\n"
+** Processing line: ~ export_string += "$mugs = [\n"~
+- Inside source: true
+*** True Line Result
+ export_string += "$mugs = [\n"
** Processing line: ~ export_string += state.objects.map do |x, y, w, h, path|~
- Inside source: true
*** True Line Result
export_string += state.objects.map do |x, y, w, h, path|
-** Processing line: ~ "#{x},#{y},2,#{w},#{h},#{path}"~
+** Processing line: ~ "[#{x},#{y},#{w},#{h},'#{path}'],"~
- Inside source: true
*** True Line Result
- "#{x},#{y},2,#{w},#{h},#{path}"
-** Processing line: ~ end~
+ "[#{x},#{y},#{w},#{h},'#{path}'],"
+** Processing line: ~ end.join "\n"~
- Inside source: true
*** True Line Result
- end
-** Processing line: ~ gtk.write_file(MAP_FILE_PATH, export_string.join("\n"))~
+ end.join "\n"
+** Processing line: ~ export_string += "\n]\n\n"~
+- Inside source: true
+*** True Line Result
+ export_string += "\n]\n\n"
+** Processing line: ~ gtk.write_file(MAP_FILE_PATH, export_string)~
- Inside source: true
*** True Line Result
- gtk.write_file(MAP_FILE_PATH, export_string.join("\n"))
+ gtk.write_file(MAP_FILE_PATH, export_string)
** Processing line: ~ state.map_saved_at = state.tick_count~
- Inside source: true
*** True Line Result
@@ -121523,6 +124547,26 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
[39, 5217, 64, 64],
+** Processing line: ~ [0, 0, 10000, 40],~
+- Inside source: true
+*** True Line Result
+ [0, 0, 10000, 40],
+** Processing line: ~ [0, 1670, 3250, 60],~
+- Inside source: true
+*** True Line Result
+ [0, 1670, 3250, 60],
+** Processing line: ~ [6691, 1653, 3290, 60],~
+- Inside source: true
+*** True Line Result
+ [6691, 1653, 3290, 60],
+** Processing line: ~ [1521, 3792, 7370, 60],~
+- Inside source: true
+*** True Line Result
+ [1521, 3792, 7370, 60],
+** Processing line: ~ [0, 5137, 3290, 60]~
+- Inside source: true
+*** True Line Result
+ [0, 5137, 3290, 60]
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
@@ -124963,6 +128007,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def load_lines file
+** Processing line: ~ return unless state.snaps~
+- Inside source: true
+*** True Line Result
+ return unless state.snaps
** Processing line: ~ data = gtk.read_file(file) || ""~
- Inside source: true
*** True Line Result
@@ -125195,10 +128243,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
results[:trajectory] = trajectory(results)
-** Processing line: ~ results[:impacts] = terrain.find_all { |t| line_near_rect? results[:rect], t }.map do |t|~
+** Processing line: ~ results[:impacts] = terrain.find_all { |t| t && (line_near_rect? results[:rect], t) }.map do |t|~
- Inside source: true
*** True Line Result
- results[:impacts] = terrain.find_all { |t| line_near_rect? results[:rect], t }.map do |t|
+ results[:impacts] = terrain.find_all { |t| t && (line_near_rect? results[:rect], t) }.map do |t|
** Processing line: ~ {~
- Inside source: true
*** True Line Result
@@ -125207,10 +128255,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
terrain: t,
-** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t),~
+** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t, replace_infinity: 1000),~
- Inside source: true
*** True Line Result
- point: geometry.line_intersect(results[:trajectory], t),
+ point: geometry.line_intersect(results[:trajectory], t, replace_infinity: 1000),
** Processing line: ~ type: :terrain~
- Inside source: true
*** True Line Result
@@ -125239,10 +128287,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
terrain: t,
-** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t),~
+** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t, replace_infinity: 1000),~
- Inside source: true
*** True Line Result
- point: geometry.line_intersect(results[:trajectory], t),
+ point: geometry.line_intersect(results[:trajectory], t, replace_infinity: 1000),
** Processing line: ~ type: :lava~
- Inside source: true
*** True Line Result
@@ -125251,10 +128299,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
}
-** Processing line: ~ end.reject { |t| !point_within_line? t[:point], t[:terrain] }~
+** Processing line: ~ end.reject { |t| !t || (!point_within_line? t[:point], t[:terrain]) }~
- Inside source: true
*** True Line Result
- end.reject { |t| !point_within_line? t[:point], t[:terrain] }
+ end.reject { |t| !t || (!point_within_line? t[:point], t[:terrain]) }
** Processing line: ~~
- Inside source: true
*** True Line Result
@@ -125303,6 +128351,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def calc_terrains_to_monitor
+** Processing line: ~ return unless circle.impacts~
+- Inside source: true
+*** True Line Result
+ return unless circle.impacts
** Processing line: ~ circle.impact = nil~
- Inside source: true
*** True Line Result
@@ -147595,6 +150647,590 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
+** Processing line: ~*** Rpg Topdown - Topdown Casino - main.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+*** Rpg Topdown - Topdown Casino - main.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./samples/99_genre_rpg_topdown/topdown_casino/app/main.rb~
+- Inside source: true
+*** True Line Result
+ # ./samples/99_genre_rpg_topdown/topdown_casino/app/main.rb
+** Processing line: ~ $gtk.reset~
+- Inside source: true
+*** True Line Result
+ $gtk.reset
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def coinflip~
+- Inside source: true
+*** True Line Result
+ def coinflip
+** Processing line: ~ rand < 0.5~
+- Inside source: true
+*** True Line Result
+ rand < 0.5
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ class Game~
+- Inside source: true
+*** True Line Result
+ class Game
+** Processing line: ~ attr_accessor :args~
+- Inside source: true
+*** True Line Result
+ attr_accessor :args
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def text_font~
+- Inside source: true
+*** True Line Result
+ def text_font
+** Processing line: ~ return nil #"rpg.ttf"~
+- Inside source: true
+*** True Line Result
+ return nil #"rpg.ttf"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def text_color~
+- Inside source: true
+*** True Line Result
+ def text_color
+** Processing line: ~ [ 255, 255, 255, 255 ]~
+- Inside source: true
+*** True Line Result
+ [ 255, 255, 255, 255 ]
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def set_gem_values~
+- Inside source: true
+*** True Line Result
+ def set_gem_values
+** Processing line: ~ @args.state.gem0 = ((coinflip) ? 100 : 20)~
+- Inside source: true
+*** True Line Result
+ @args.state.gem0 = ((coinflip) ? 100 : 20)
+** Processing line: ~ @args.state.gem1 = ((coinflip) ? -10 : -50)~
+- Inside source: true
+*** True Line Result
+ @args.state.gem1 = ((coinflip) ? -10 : -50)
+** Processing line: ~ @args.state.gem2 = ((coinflip) ? -10 : -30)~
+- Inside source: true
+*** True Line Result
+ @args.state.gem2 = ((coinflip) ? -10 : -30)
+** Processing line: ~ if coinflip~
+- Inside source: true
+*** True Line Result
+ if coinflip
+** Processing line: ~ tmp = @args.state.gem0~
+- Inside source: true
+*** True Line Result
+ tmp = @args.state.gem0
+** Processing line: ~ @args.state.gem0 = @args.state.gem1~
+- Inside source: true
+*** True Line Result
+ @args.state.gem0 = @args.state.gem1
+** Processing line: ~ @args.state.gem1 = tmp~
+- Inside source: true
+*** True Line Result
+ @args.state.gem1 = tmp
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ if coinflip~
+- Inside source: true
+*** True Line Result
+ if coinflip
+** Processing line: ~ tmp = @args.state.gem1~
+- Inside source: true
+*** True Line Result
+ tmp = @args.state.gem1
+** Processing line: ~ @args.state.gem1 = @args.state.gem2~
+- Inside source: true
+*** True Line Result
+ @args.state.gem1 = @args.state.gem2
+** Processing line: ~ @args.state.gem2 = tmp~
+- Inside source: true
+*** True Line Result
+ @args.state.gem2 = tmp
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ if coinflip~
+- Inside source: true
+*** True Line Result
+ if coinflip
+** Processing line: ~ tmp = @args.state.gem0~
+- Inside source: true
+*** True Line Result
+ tmp = @args.state.gem0
+** Processing line: ~ @args.state.gem0 = @args.state.gem2~
+- Inside source: true
+*** True Line Result
+ @args.state.gem0 = @args.state.gem2
+** Processing line: ~ @args.state.gem2 = tmp~
+- Inside source: true
+*** True Line Result
+ @args.state.gem2 = tmp
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def initialize args~
+- Inside source: true
+*** True Line Result
+ def initialize args
+** Processing line: ~ @args = args~
+- Inside source: true
+*** True Line Result
+ @args = args
+** Processing line: ~ @args.state.animticks = 0~
+- Inside source: true
+*** True Line Result
+ @args.state.animticks = 0
+** Processing line: ~ @args.state.score = 0~
+- Inside source: true
+*** True Line Result
+ @args.state.score = 0
+** Processing line: ~ @args.state.gem_chosen = false~
+- Inside source: true
+*** True Line Result
+ @args.state.gem_chosen = false
+** Processing line: ~ @args.state.round_finished = false~
+- Inside source: true
+*** True Line Result
+ @args.state.round_finished = false
+** Processing line: ~ @args.state.gem0_x = 197~
+- Inside source: true
+*** True Line Result
+ @args.state.gem0_x = 197
+** Processing line: ~ @args.state.gem0_y = 720-274~
+- Inside source: true
+*** True Line Result
+ @args.state.gem0_y = 720-274
+** Processing line: ~ @args.state.gem1_x = 623~
+- Inside source: true
+*** True Line Result
+ @args.state.gem1_x = 623
+** Processing line: ~ @args.state.gem1_y = 720-274~
+- Inside source: true
+*** True Line Result
+ @args.state.gem1_y = 720-274
+** Processing line: ~ @args.state.gem2_x = 1049~
+- Inside source: true
+*** True Line Result
+ @args.state.gem2_x = 1049
+** Processing line: ~ @args.state.gem2_y = 720-274~
+- Inside source: true
+*** True Line Result
+ @args.state.gem2_y = 720-274
+** Processing line: ~ @args.state.hero_sprite = "sprites/herodown100.png"~
+- Inside source: true
+*** True Line Result
+ @args.state.hero_sprite = "sprites/herodown100.png"
+** Processing line: ~ @args.state.hero_x = 608~
+- Inside source: true
+*** True Line Result
+ @args.state.hero_x = 608
+** Processing line: ~ @args.state.hero_y = 720-656~
+- Inside source: true
+*** True Line Result
+ @args.state.hero_y = 720-656
+** Processing line: ~ set_gem_values~
+- Inside source: true
+*** True Line Result
+ set_gem_values
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def render_gem_value x, y, gem~
+- Inside source: true
+*** True Line Result
+ def render_gem_value x, y, gem
+** Processing line: ~ if @args.state.gem_chosen~
+- Inside source: true
+*** True Line Result
+ if @args.state.gem_chosen
+** Processing line: ~ @args.outputs.labels << [ x, y + 96, gem.to_s, 1, 1, *text_color, text_font ]~
+- Inside source: true
+*** True Line Result
+ @args.outputs.labels << [ x, y + 96, gem.to_s, 1, 1, *text_color, text_font ]
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def render~
+- Inside source: true
+*** True Line Result
+ def render
+** Processing line: ~ gemsprite = ((@args.state.animticks % 400) < 200) ? 'sprites/gem200.png' : 'sprites/gem400.png'~
+- Inside source: true
+*** True Line Result
+ gemsprite = ((@args.state.animticks % 400) < 200) ? 'sprites/gem200.png' : 'sprites/gem400.png'
+** Processing line: ~ @args.outputs.background_color = [ 0, 0, 0, 255 ]~
+- Inside source: true
+*** True Line Result
+ @args.outputs.background_color = [ 0, 0, 0, 255 ]
+** Processing line: ~ @args.outputs.sprites << [608, 720-150, 64, 64, 'sprites/oldman.png']~
+- Inside source: true
+*** True Line Result
+ @args.outputs.sprites << [608, 720-150, 64, 64, 'sprites/oldman.png']
+** Processing line: ~ @args.outputs.sprites << [300, 720-150, 64, 64, 'sprites/fire.png']~
+- Inside source: true
+*** True Line Result
+ @args.outputs.sprites << [300, 720-150, 64, 64, 'sprites/fire.png']
+** Processing line: ~ @args.outputs.sprites << [900, 720-150, 64, 64, 'sprites/fire.png']~
+- Inside source: true
+*** True Line Result
+ @args.outputs.sprites << [900, 720-150, 64, 64, 'sprites/fire.png']
+** Processing line: ~ @args.outputs.sprites << [@args.state.gem0_x, @args.state.gem0_y, 32, 64, gemsprite]~
+- Inside source: true
+*** True Line Result
+ @args.outputs.sprites << [@args.state.gem0_x, @args.state.gem0_y, 32, 64, gemsprite]
+** Processing line: ~ @args.outputs.sprites << [@args.state.gem1_x, @args.state.gem1_y, 32, 64, gemsprite]~
+- Inside source: true
+*** True Line Result
+ @args.outputs.sprites << [@args.state.gem1_x, @args.state.gem1_y, 32, 64, gemsprite]
+** Processing line: ~ @args.outputs.sprites << [@args.state.gem2_x, @args.state.gem2_y, 32, 64, gemsprite]~
+- Inside source: true
+*** True Line Result
+ @args.outputs.sprites << [@args.state.gem2_x, @args.state.gem2_y, 32, 64, gemsprite]
+** Processing line: ~ @args.outputs.sprites << [@args.state.hero_x, @args.state.hero_y, 64, 64, @args.state.hero_sprite]~
+- Inside source: true
+*** True Line Result
+ @args.outputs.sprites << [@args.state.hero_x, @args.state.hero_y, 64, 64, @args.state.hero_sprite]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ @args.outputs.labels << [ 630, 720-30, "IT'S A SECRET TO EVERYONE.", 1, 1, *text_color, text_font ]~
+- Inside source: true
+*** True Line Result
+ @args.outputs.labels << [ 630, 720-30, "IT'S A SECRET TO EVERYONE.", 1, 1, *text_color, text_font ]
+** Processing line: ~ @args.outputs.labels << [ 50, 720-85, @args.state.score.to_s, 1, 1, *text_color, text_font ]~
+- Inside source: true
+*** True Line Result
+ @args.outputs.labels << [ 50, 720-85, @args.state.score.to_s, 1, 1, *text_color, text_font ]
+** Processing line: ~ render_gem_value @args.state.gem0_x, @args.state.gem0_y, @args.state.gem0~
+- Inside source: true
+*** True Line Result
+ render_gem_value @args.state.gem0_x, @args.state.gem0_y, @args.state.gem0
+** Processing line: ~ render_gem_value @args.state.gem1_x, @args.state.gem1_y, @args.state.gem1~
+- Inside source: true
+*** True Line Result
+ render_gem_value @args.state.gem1_x, @args.state.gem1_y, @args.state.gem1
+** Processing line: ~ render_gem_value @args.state.gem2_x, @args.state.gem2_y, @args.state.gem2~
+- Inside source: true
+*** True Line Result
+ render_gem_value @args.state.gem2_x, @args.state.gem2_y, @args.state.gem2
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def calc~
+- Inside source: true
+*** True Line Result
+ def calc
+** Processing line: ~ @args.state.animticks += 16~
+- Inside source: true
+*** True Line Result
+ @args.state.animticks += 16
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ return unless @args.state.gem_chosen~
+- Inside source: true
+*** True Line Result
+ return unless @args.state.gem_chosen
+** Processing line: ~ @args.state.round_finished_debounce ||= 60 * 3~
+- Inside source: true
+*** True Line Result
+ @args.state.round_finished_debounce ||= 60 * 3
+** Processing line: ~ @args.state.round_finished_debounce -= 1~
+- Inside source: true
+*** True Line Result
+ @args.state.round_finished_debounce -= 1
+** Processing line: ~ return if @args.state.round_finished_debounce > 0~
+- Inside source: true
+*** True Line Result
+ return if @args.state.round_finished_debounce > 0
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ @args.state.gem_chosen = false~
+- Inside source: true
+*** True Line Result
+ @args.state.gem_chosen = false
+** Processing line: ~ @args.state.hero.sprite[0] = 'sprites/herodown100.png'~
+- Inside source: true
+*** True Line Result
+ @args.state.hero.sprite[0] = 'sprites/herodown100.png'
+** Processing line: ~ @args.state.hero.sprite[1] = 608~
+- Inside source: true
+*** True Line Result
+ @args.state.hero.sprite[1] = 608
+** Processing line: ~ @args.state.hero.sprite[2] = 656~
+- Inside source: true
+*** True Line Result
+ @args.state.hero.sprite[2] = 656
+** Processing line: ~ @args.state.round_finished_debounce = nil~
+- Inside source: true
+*** True Line Result
+ @args.state.round_finished_debounce = nil
+** Processing line: ~ set_gem_values~
+- Inside source: true
+*** True Line Result
+ set_gem_values
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def walk xdir, ydir, anim~
+- Inside source: true
+*** True Line Result
+ def walk xdir, ydir, anim
+** Processing line: ~ @args.state.hero_sprite = "sprites/#{anim}#{(((@args.state.animticks % 200) < 100) ? '100' : '200')}.png"~
+- Inside source: true
+*** True Line Result
+ @args.state.hero_sprite = "sprites/#{anim}#{(((@args.state.animticks % 200) < 100) ? '100' : '200')}.png"
+** Processing line: ~ @args.state.hero_x += 5 * xdir~
+- Inside source: true
+*** True Line Result
+ @args.state.hero_x += 5 * xdir
+** Processing line: ~ @args.state.hero_y += 5 * ydir~
+- Inside source: true
+*** True Line Result
+ @args.state.hero_y += 5 * ydir
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def check_gem_touching gem_x, gem_y, gem~
+- Inside source: true
+*** True Line Result
+ def check_gem_touching gem_x, gem_y, gem
+** Processing line: ~ return if @args.state.gem_chosen~
+- Inside source: true
+*** True Line Result
+ return if @args.state.gem_chosen
+** Processing line: ~ herorect = [ @args.state.hero_x, @args.state.hero_y, 64, 64 ]~
+- Inside source: true
+*** True Line Result
+ herorect = [ @args.state.hero_x, @args.state.hero_y, 64, 64 ]
+** Processing line: ~ return if !herorect.intersect_rect?([gem_x, gem_y, 32, 64])~
+- Inside source: true
+*** True Line Result
+ return if !herorect.intersect_rect?([gem_x, gem_y, 32, 64])
+** Processing line: ~ @args.state.gem_chosen = true~
+- Inside source: true
+*** True Line Result
+ @args.state.gem_chosen = true
+** Processing line: ~ @args.state.score += gem~
+- Inside source: true
+*** True Line Result
+ @args.state.score += gem
+** Processing line: ~ @args.outputs.sounds << ((gem < 0) ? 'sounds/lose.wav' : 'sounds/win.wav')~
+- Inside source: true
+*** True Line Result
+ @args.outputs.sounds << ((gem < 0) ? 'sounds/lose.wav' : 'sounds/win.wav')
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def input~
+- Inside source: true
+*** True Line Result
+ def input
+** Processing line: ~ if @args.inputs.keyboard.key_held.left~
+- Inside source: true
+*** True Line Result
+ if @args.inputs.keyboard.key_held.left
+** Processing line: ~ walk(-1.0, 0.0, 'heroleft')~
+- Inside source: true
+*** True Line Result
+ walk(-1.0, 0.0, 'heroleft')
+** Processing line: ~ elsif @args.inputs.keyboard.key_held.right~
+- Inside source: true
+*** True Line Result
+ elsif @args.inputs.keyboard.key_held.right
+** Processing line: ~ walk(1.0, 0.0, 'heroright')~
+- Inside source: true
+*** True Line Result
+ walk(1.0, 0.0, 'heroright')
+** Processing line: ~ elsif @args.inputs.keyboard.key_held.up~
+- Inside source: true
+*** True Line Result
+ elsif @args.inputs.keyboard.key_held.up
+** Processing line: ~ walk(0.0, 1.0, 'heroup')~
+- Inside source: true
+*** True Line Result
+ walk(0.0, 1.0, 'heroup')
+** Processing line: ~ elsif @args.inputs.keyboard.key_held.down~
+- Inside source: true
+*** True Line Result
+ elsif @args.inputs.keyboard.key_held.down
+** Processing line: ~ walk(0.0, -1.0, 'herodown')~
+- Inside source: true
+*** True Line Result
+ walk(0.0, -1.0, 'herodown')
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ check_gem_touching(@args.state.gem0_x, @args.state.gem0_y, @args.state.gem0)~
+- Inside source: true
+*** True Line Result
+ check_gem_touching(@args.state.gem0_x, @args.state.gem0_y, @args.state.gem0)
+** Processing line: ~ check_gem_touching(@args.state.gem1_x, @args.state.gem1_y, @args.state.gem1)~
+- Inside source: true
+*** True Line Result
+ check_gem_touching(@args.state.gem1_x, @args.state.gem1_y, @args.state.gem1)
+** Processing line: ~ check_gem_touching(@args.state.gem2_x, @args.state.gem2_y, @args.state.gem2)~
+- Inside source: true
+*** True Line Result
+ check_gem_touching(@args.state.gem2_x, @args.state.gem2_y, @args.state.gem2)
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def tick~
+- Inside source: true
+*** True Line Result
+ def tick
+** Processing line: ~ input~
+- Inside source: true
+*** True Line Result
+ input
+** Processing line: ~ calc~
+- Inside source: true
+*** True Line Result
+ calc
+** Processing line: ~ render~
+- Inside source: true
+*** True Line Result
+ render
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ args.state.game ||= Game.new args~
+- Inside source: true
+*** True Line Result
+ args.state.game ||= Game.new args
+** Processing line: ~ args.state.game.args = args~
+- Inside source: true
+*** True Line Result
+ args.state.game.args = args
+** Processing line: ~ args.state.game.tick~
+- Inside source: true
+*** True Line Result
+ args.state.game.tick
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
** Processing line: ~*** Rpg Topdown - Topdown Starting Point - main.rb~
- Header detected.
*** True Line Result
@@ -148055,22 +151691,22 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
-** Processing line: ~*** Teentiny - main.rb~
+** Processing line: ~*** Teenytiny - Teenytiny Starting Point - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
-*** Teentiny - main.rb
+*** Teenytiny - Teenytiny Starting Point - main.rb
** Processing line: ~#+begin_src ruby~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src ruby
-** Processing line: ~ # ./samples/99_genre_teentiny/app/main.rb~
+** Processing line: ~ # ./samples/99_genre_teenytiny/teenytiny_starting_point/app/main.rb~
- Inside source: true
*** True Line Result
- # ./samples/99_genre_teentiny/app/main.rb
+ # ./samples/99_genre_teenytiny/teenytiny_starting_point/app/main.rb
** Processing line: ~ # full documenation is at http://docs.dragonruby.org~
- Inside source: true
*** True Line Result
@@ -148731,22 +152367,22 @@ Follows is a source code listing for all files that have been open sourced. This
- End of paragraph detected.
*** True Line Result
-** Processing line: ~*** Teentiny - license.txt~
+** Processing line: ~*** Teenytiny - Teenytiny Starting Point - license.txt~
- Header detected.
*** True Line Result
*** True Line Result
-*** Teentiny - license.txt
+*** Teenytiny - Teenytiny Starting Point - license.txt
** Processing line: ~#+begin_src ruby~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src ruby
-** Processing line: ~ # ./samples/99_genre_teentiny/license.txt~
+** Processing line: ~ # ./samples/99_genre_teenytiny/teenytiny_starting_point/license.txt~
- Inside source: true
*** True Line Result
- # ./samples/99_genre_teentiny/license.txt
+ # ./samples/99_genre_teenytiny/teenytiny_starting_point/license.txt
** Processing line: ~ Copyright 2019 DragonRuby LLC~
- Inside source: true
*** True Line Result
@@ -148802,11 +152438,2575 @@ Follows is a source code listing for all files that have been open sourced. This
*** True Line Result
** OSS
** Processing line: ~Follows is a source code listing for all files that have been open sourced. This code can be found online at [[https://github.com/DragonRuby/dragonruby-game-toolkit-contrib/]].~
-** Processing line: ~*** args.rb~
+** Processing line: ~*** api.rb~
- Header detected.
*** True Line Result
Follows is a source code listing for all files that have been open sourced. This code can be found online at [[https://github.com/DragonRuby/dragonruby-game-toolkit-contrib/]].
*** True Line Result
+*** api.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./dragon/api.rb~
+- Inside source: true
+*** True Line Result
+ # ./dragon/api.rb
+** Processing line: ~ # coding: utf-8~
+- Inside source: true
+*** True Line Result
+ # coding: utf-8
+** Processing line: ~ # Copyright 2019 DragonRuby LLC~
+- Inside source: true
+*** True Line Result
+ # Copyright 2019 DragonRuby LLC
+** Processing line: ~ # MIT License~
+- Inside source: true
+*** True Line Result
+ # MIT License
+** Processing line: ~ # api.rb has been released under MIT (*only this file*).~
+- Inside source: true
+*** True Line Result
+ # api.rb has been released under MIT (*only this file*).
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ module GTK~
+- Inside source: true
+*** True Line Result
+ module GTK
+** Processing line: ~ class Api~
+- Inside source: true
+*** True Line Result
+ class Api
+** Processing line: ~ def initialize~
+- Inside source: true
+*** True Line Result
+ def initialize
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_autocomplete args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_autocomplete args, req
+** Processing line: ~ html = <<-S~
+- Inside source: true
+*** True Line Result
+ html = <<-S
+** Processing line: ~ <html>~
+- Inside source: true
+*** True Line Result
+ <html>
+** Processing line: ~ <head>~
+- Inside source: true
+*** True Line Result
+ <head>
+** Processing line: ~ <meta charset="UTF-8"/>~
+- Inside source: true
+*** True Line Result
+ <meta charset="UTF-8"/>
+** Processing line: ~ <title>DragonRuby Game Toolkit Documentation</title>~
+- Inside source: true
+*** True Line Result
+ <title>DragonRuby Game Toolkit Documentation</title>
+** Processing line: ~ <style>~
+- Inside source: true
+*** True Line Result
+ <style>
+** Processing line: ~ pre {~
+- Inside source: true
+*** True Line Result
+ pre {
+** Processing line: ~ border: solid 1px silver;~
+- Inside source: true
+*** True Line Result
+ border: solid 1px silver;
+** Processing line: ~ padding: 10px;~
+- Inside source: true
+*** True Line Result
+ padding: 10px;
+** Processing line: ~ font-size: 14px;~
+- Inside source: true
+*** True Line Result
+ font-size: 14px;
+** Processing line: ~ white-space: pre-wrap;~
+- Inside source: true
+*** True Line Result
+ white-space: pre-wrap;
+** Processing line: ~ white-space: -moz-pre-wrap;~
+- Inside source: true
+*** True Line Result
+ white-space: -moz-pre-wrap;
+** Processing line: ~ white-space: -pre-wrap;~
+- Inside source: true
+*** True Line Result
+ white-space: -pre-wrap;
+** Processing line: ~ white-space: -o-pre-wrap;~
+- Inside source: true
+*** True Line Result
+ white-space: -o-pre-wrap;
+** Processing line: ~ word-wrap: break-word;~
+- Inside source: true
+*** True Line Result
+ word-wrap: break-word;
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ </style>~
+- Inside source: true
+*** True Line Result
+ </style>
+** Processing line: ~ </head>~
+- Inside source: true
+*** True Line Result
+ </head>
+** Processing line: ~ <body>~
+- Inside source: true
+*** True Line Result
+ <body>
+** Processing line: ~ <script>~
+- Inside source: true
+*** True Line Result
+ <script>
+** Processing line: ~ async function submitForm() {~
+- Inside source: true
+*** True Line Result
+ async function submitForm() {
+** Processing line: ~ const result = await fetch("/dragon/autocomplete/", {~
+- Inside source: true
+*** True Line Result
+ const result = await fetch("/dragon/autocomplete/", {
+** Processing line: ~ method: 'POST',~
+- Inside source: true
+*** True Line Result
+ method: 'POST',
+** Processing line: ~ headers: { 'Content-Type': 'application/json' },~
+- Inside source: true
+*** True Line Result
+ headers: { 'Content-Type': 'application/json' },
+** Processing line: ~ body: JSON.stringify({ index: document.getElementById("index").value,~
+- Inside source: true
+*** True Line Result
+ body: JSON.stringify({ index: document.getElementById("index").value,
+** Processing line: ~ text: document.getElementById("text").value }),~
+- Inside source: true
+*** True Line Result
+ text: document.getElementById("text").value }),
+** Processing line: ~ });~
+- Inside source: true
+*** True Line Result
+ });
+** Processing line: ~ document.getElementById("autocomplete-results").innerHTML = await result.text();~
+- Inside source: true
+*** True Line Result
+ document.getElementById("autocomplete-results").innerHTML = await result.text();
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ </script>~
+- Inside source: true
+*** True Line Result
+ </script>
+** Processing line: ~ <form>~
+- Inside source: true
+*** True Line Result
+ <form>
+** Processing line: ~ <div>index</div>~
+- Inside source: true
+*** True Line Result
+ <div>index</div>
+** Processing line: ~ <input name="index" id="index" type="text" value="27" />~
+- Inside source: true
+*** True Line Result
+ <input name="index" id="index" type="text" value="27" />
+** Processing line: ~ <div>code</div>~
+- Inside source: true
+*** True Line Result
+ <div>code</div>
+** Processing line: ~ <textarea name="text" id="text" rows="30" cols="80">def tick args~
+- Inside source: true
+*** True Line Result
+ <textarea name="text" id="text" rows="30" cols="80">def tick args
+** Processing line: ~ args.state.~
+- Inside source: true
+*** True Line Result
+ args.state.
+** Processing line: ~ end</textarea>~
+- Inside source: true
+*** True Line Result
+ end</textarea>
+** Processing line: ~ <br/>~
+- Inside source: true
+*** True Line Result
+ <br/>
+** Processing line: ~ <input type="button" value="Get Suggestions" onclick="submitForm();" />~
+- Inside source: true
+*** True Line Result
+ <input type="button" value="Get Suggestions" onclick="submitForm();" />
+** Processing line: ~ <span id="success-notification"></span>~
+- Inside source: true
+*** True Line Result
+ <span id="success-notification"></span>
+** Processing line: ~ </form>~
+- Inside source: true
+*** True Line Result
+ </form>
+** Processing line: ~ <pre id="autocomplete-results">~
+- Inside source: true
+*** True Line Result
+ <pre id="autocomplete-results">
+** Processing line: ~ </pre>~
+- Inside source: true
+*** True Line Result
+ </pre>
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ #{links}~
+- Inside source: true
+*** True Line Result
+ #{links}
+** Processing line: ~ </body>~
+- Inside source: true
+*** True Line Result
+ </body>
+** Processing line: ~ </html>~
+- Inside source: true
+*** True Line Result
+ </html>
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ html,~
+- Inside source: true
+*** True Line Result
+ html,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def post_api_autocomplete args, req~
+- Inside source: true
+*** True Line Result
+ def post_api_autocomplete args, req
+** Processing line: ~ json = ($gtk.parse_json req.body)~
+- Inside source: true
+*** True Line Result
+ json = ($gtk.parse_json req.body)
+** Processing line: ~ index = json["index"].to_i~
+- Inside source: true
+*** True Line Result
+ index = json["index"].to_i
+** Processing line: ~ text = json["text"]~
+- Inside source: true
+*** True Line Result
+ text = json["text"]
+** Processing line: ~ suggestions = args.gtk.suggest_autocompletion index: index, text: text~
+- Inside source: true
+*** True Line Result
+ suggestions = args.gtk.suggest_autocompletion index: index, text: text
+** Processing line: ~ list_as_string = suggestions.join("\n")~
+- Inside source: true
+*** True Line Result
+ list_as_string = suggestions.join("\n")
+** Processing line: ~ req.respond 200, list_as_string, { 'Content-Type' => 'text/plain' }~
+- Inside source: true
+*** True Line Result
+ req.respond 200, list_as_string, { 'Content-Type' => 'text/plain' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ define_method :links do~
+- Inside source: true
+*** True Line Result
+ define_method :links do
+** Processing line: ~ <<-S~
+- Inside source: true
+*** True Line Result
+ <<-S
+** Processing line: ~ <ul>~
+- Inside source: true
+*** True Line Result
+ <ul>
+** Processing line: ~ <li><a href="/">Home</a></li>~
+- Inside source: true
+*** True Line Result
+ <li><a href="/">Home</a></li>
+** Processing line: ~ <li><a href="/docs.html">Docs</a></li>~
+- Inside source: true
+*** True Line Result
+ <li><a href="/docs.html">Docs</a></li>
+** Processing line: ~ <li><a href="/dragon/control_panel/">Control Panel</a></li>~
+- Inside source: true
+*** True Line Result
+ <li><a href="/dragon/control_panel/">Control Panel</a></li>
+** Processing line: ~ <li><a href="/dragon/eval/">Console</a></li>~
+- Inside source: true
+*** True Line Result
+ <li><a href="/dragon/eval/">Console</a></li>
+** Processing line: ~ <li><a href="/dragon/log/">Logs</a></li>~
+- Inside source: true
+*** True Line Result
+ <li><a href="/dragon/log/">Logs</a></li>
+** Processing line: ~ <li><a href="/dragon/puts/">Puts</a></li>~
+- Inside source: true
+*** True Line Result
+ <li><a href="/dragon/puts/">Puts</a></li>
+** Processing line: ~ <li><a href="/dragon/code/">Code</a></li>~
+- Inside source: true
+*** True Line Result
+ <li><a href="/dragon/code/">Code</a></li>
+** Processing line: ~ </ul>~
+- Inside source: true
+*** True Line Result
+ </ul>
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_index args, req~
+- Inside source: true
+*** True Line Result
+ def get_index args, req
+** Processing line: ~ req.respond 200, <<-S, { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ req.respond 200, <<-S, { 'Content-Type' => 'text/html' }
+** Processing line: ~ <html>~
+- Inside source: true
+*** True Line Result
+ <html>
+** Processing line: ~ <head>~
+- Inside source: true
+*** True Line Result
+ <head>
+** Processing line: ~ <meta charset="UTF-8"/>~
+- Inside source: true
+*** True Line Result
+ <meta charset="UTF-8"/>
+** Processing line: ~ <title>DragonRuby Game Toolkit Documentation</title>~
+- Inside source: true
+*** True Line Result
+ <title>DragonRuby Game Toolkit Documentation</title>
+** Processing line: ~ </head>~
+- Inside source: true
+*** True Line Result
+ </head>
+** Processing line: ~ <body>~
+- Inside source: true
+*** True Line Result
+ <body>
+** Processing line: ~ #{links}~
+- Inside source: true
+*** True Line Result
+ #{links}
+** Processing line: ~ </body>~
+- Inside source: true
+*** True Line Result
+ </body>
+** Processing line: ~ </html>~
+- Inside source: true
+*** True Line Result
+ </html>
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def source_code_links args~
+- Inside source: true
+*** True Line Result
+ def source_code_links args
+** Processing line: ~ links = args.gtk.reload_list_history.keys.map do |f|~
+- Inside source: true
+*** True Line Result
+ links = args.gtk.reload_list_history.keys.map do |f|
+** Processing line: ~ "<li><a href=\"/dragon/code/edit/?file=#{f}\">#{f}</a></li>"~
+- Inside source: true
+*** True Line Result
+ "<li><a href=\"/dragon/code/edit/?file=#{f}\">#{f}</a></li>"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ <<-S~
+- Inside source: true
+*** True Line Result
+ <<-S
+** Processing line: ~ <ul>~
+- Inside source: true
+*** True Line Result
+ <ul>
+** Processing line: ~ #{links.join("\n")}~
+- Inside source: true
+*** True Line Result
+ #{links.join("\n")}
+** Processing line: ~ </ul>~
+- Inside source: true
+*** True Line Result
+ </ul>
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_code args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_code args, req
+** Processing line: ~ view = <<-S~
+- Inside source: true
+*** True Line Result
+ view = <<-S
+** Processing line: ~ <html>~
+- Inside source: true
+*** True Line Result
+ <html>
+** Processing line: ~ <head>~
+- Inside source: true
+*** True Line Result
+ <head>
+** Processing line: ~ <meta charset="UTF-8"/>~
+- Inside source: true
+*** True Line Result
+ <meta charset="UTF-8"/>
+** Processing line: ~ <title>DragonRuby Game Toolkit Documentation</title>~
+- Inside source: true
+*** True Line Result
+ <title>DragonRuby Game Toolkit Documentation</title>
+** Processing line: ~ </head>~
+- Inside source: true
+*** True Line Result
+ </head>
+** Processing line: ~ <body>~
+- Inside source: true
+*** True Line Result
+ <body>
+** Processing line: ~ #{source_code_links args}~
+- Inside source: true
+*** True Line Result
+ #{source_code_links args}
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ #{links}~
+- Inside source: true
+*** True Line Result
+ #{links}
+** Processing line: ~ </body>~
+- Inside source: true
+*** True Line Result
+ </body>
+** Processing line: ~ </html>~
+- Inside source: true
+*** True Line Result
+ </html>
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ view,~
+- Inside source: true
+*** True Line Result
+ view,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def code_edit_view args, file~
+- Inside source: true
+*** True Line Result
+ def code_edit_view args, file
+** Processing line: ~ view = <<-S~
+- Inside source: true
+*** True Line Result
+ view = <<-S
+** Processing line: ~ <html>~
+- Inside source: true
+*** True Line Result
+ <html>
+** Processing line: ~ <head>~
+- Inside source: true
+*** True Line Result
+ <head>
+** Processing line: ~ <meta charset="UTF-8"/>~
+- Inside source: true
+*** True Line Result
+ <meta charset="UTF-8"/>
+** Processing line: ~ <title>DragonRuby Game Toolkit Documentation</title>~
+- Inside source: true
+*** True Line Result
+ <title>DragonRuby Game Toolkit Documentation</title>
+** Processing line: ~ </head>~
+- Inside source: true
+*** True Line Result
+ </head>
+** Processing line: ~ <body>~
+- Inside source: true
+*** True Line Result
+ <body>
+** Processing line: ~ <script>~
+- Inside source: true
+*** True Line Result
+ <script>
+** Processing line: ~ async function submitForm() {~
+- Inside source: true
+*** True Line Result
+ async function submitForm() {
+** Processing line: ~ const result = await fetch("/dragon/code/update/?file=#{file}", {~
+- Inside source: true
+*** True Line Result
+ const result = await fetch("/dragon/code/update/?file=#{file}", {
+** Processing line: ~ method: 'POST',~
+- Inside source: true
+*** True Line Result
+ method: 'POST',
+** Processing line: ~ headers: { 'Content-Type': 'application/json' },~
+- Inside source: true
+*** True Line Result
+ headers: { 'Content-Type': 'application/json' },
+** Processing line: ~ body: JSON.stringify({ code: document.getElementById("code").value }),~
+- Inside source: true
+*** True Line Result
+ body: JSON.stringify({ code: document.getElementById("code").value }),
+** Processing line: ~ });~
+- Inside source: true
+*** True Line Result
+ });
+** Processing line: ~ document.getElementById("success-notification").innerHTML = "update successful";~
+- Inside source: true
+*** True Line Result
+ document.getElementById("success-notification").innerHTML = "update successful";
+** Processing line: ~ setTimeout(function() { document.getElementById("success-notification").innerHTML = ""; }, 3000);~
+- Inside source: true
+*** True Line Result
+ setTimeout(function() { document.getElementById("success-notification").innerHTML = ""; }, 3000);
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ </script>~
+- Inside source: true
+*** True Line Result
+ </script>
+** Processing line: ~ <form>~
+- Inside source: true
+*** True Line Result
+ <form>
+** Processing line: ~ <div><code>#{file}:</code></div>~
+- Inside source: true
+*** True Line Result
+ <div><code>#{file}:</code></div>
+** Processing line: ~ <textarea name="code" id="code" rows="30" cols="80">#{args.gtk.read_file file}</textarea>~
+- Inside source: true
+*** True Line Result
+ <textarea name="code" id="code" rows="30" cols="80">#{args.gtk.read_file file}</textarea>
+** Processing line: ~ <br/>~
+- Inside source: true
+*** True Line Result
+ <br/>
+** Processing line: ~ <input type="button" value="Update" onclick="submitForm();" />~
+- Inside source: true
+*** True Line Result
+ <input type="button" value="Update" onclick="submitForm();" />
+** Processing line: ~ <span id="success-notification"></span>~
+- Inside source: true
+*** True Line Result
+ <span id="success-notification"></span>
+** Processing line: ~ </form>~
+- Inside source: true
+*** True Line Result
+ </form>
+** Processing line: ~ #{source_code_links args}~
+- Inside source: true
+*** True Line Result
+ #{source_code_links args}
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ #{links}~
+- Inside source: true
+*** True Line Result
+ #{links}
+** Processing line: ~ </body>~
+- Inside source: true
+*** True Line Result
+ </body>
+** Processing line: ~ </html>~
+- Inside source: true
+*** True Line Result
+ </html>
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_code_edit args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_code_edit args, req
+** Processing line: ~ file = req.uri.split('?').last.gsub("file=", "")~
+- Inside source: true
+*** True Line Result
+ file = req.uri.split('?').last.gsub("file=", "")
+** Processing line: ~ view = code_edit_view args, file~
+- Inside source: true
+*** True Line Result
+ view = code_edit_view args, file
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ view,~
+- Inside source: true
+*** True Line Result
+ view,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def post_api_code_update args, req~
+- Inside source: true
+*** True Line Result
+ def post_api_code_update args, req
+** Processing line: ~ file = req.uri.split('?').last.gsub("file=", "")~
+- Inside source: true
+*** True Line Result
+ file = req.uri.split('?').last.gsub("file=", "")
+** Processing line: ~ code = ($gtk.parse_json req.body)["code"]~
+- Inside source: true
+*** True Line Result
+ code = ($gtk.parse_json req.body)["code"]
+** Processing line: ~ args.gtk.write_file file, code~
+- Inside source: true
+*** True Line Result
+ args.gtk.write_file file, code
+** Processing line: ~ view = code_edit_view args, file~
+- Inside source: true
+*** True Line Result
+ view = code_edit_view args, file
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ view,~
+- Inside source: true
+*** True Line Result
+ view,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_boot args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_boot args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("tmp/src_backup/boot.txt"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("tmp/src_backup/boot.txt"),
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/plain' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_trace args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_trace args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("logs/trace.txt"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("logs/trace.txt"),
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/plain' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_log args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_log args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("logs/log.txt"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("logs/log.txt"),
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/plain' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def post_api_log args, req~
+- Inside source: true
+*** True Line Result
+ def post_api_log args, req
+** Processing line: ~ Log.log req.body~
+- Inside source: true
+*** True Line Result
+ Log.log req.body
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ "ok",~
+- Inside source: true
+*** True Line Result
+ "ok",
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/plain' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_puts args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_puts args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("logs/puts.txt"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("logs/puts.txt"),
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/plain' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_changes args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_changes args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("tmp/src_backup/src_backup_changes.txt"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("tmp/src_backup/src_backup_changes.txt"),
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/plain' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_favicon_ico args, req~
+- Inside source: true
+*** True Line Result
+ def get_favicon_ico args, req
+** Processing line: ~ @favicon ||= args.gtk.read_file('docs/favicon.ico')~
+- Inside source: true
+*** True Line Result
+ @favicon ||= args.gtk.read_file('docs/favicon.ico')
+** Processing line: ~ req.respond 200, @favicon, { "Content-Type" => 'image/x-icon' }~
+- Inside source: true
+*** True Line Result
+ req.respond 200, @favicon, { "Content-Type" => 'image/x-icon' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_src_backup args, req~
+- Inside source: true
+*** True Line Result
+ def get_src_backup args, req
+** Processing line: ~ file_name = req.uri.gsub("/dragon/", "")~
+- Inside source: true
+*** True Line Result
+ file_name = req.uri.gsub("/dragon/", "")
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("tmp/src_backup/#{file_name}"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("tmp/src_backup/#{file_name}"),
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/plain' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_not_found args, req~
+- Inside source: true
+*** True Line Result
+ def get_not_found args, req
+** Processing line: ~ puts("METHOD: #{req.method}");~
+- Inside source: true
+*** True Line Result
+ puts("METHOD: #{req.method}");
+** Processing line: ~ puts("URI: #{req.uri}");~
+- Inside source: true
+*** True Line Result
+ puts("URI: #{req.uri}");
+** Processing line: ~ puts("HEADERS:");~
+- Inside source: true
+*** True Line Result
+ puts("HEADERS:");
+** Processing line: ~ req.headers.each { |k,v| puts(" #{k}: #{v}") }~
+- Inside source: true
+*** True Line Result
+ req.headers.each { |k,v| puts(" #{k}: #{v}") }
+** Processing line: ~ req.respond 404, "not found: #{req.uri}", { }~
+- Inside source: true
+*** True Line Result
+ req.respond 404, "not found: #{req.uri}", { }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_docs_html args, req~
+- Inside source: true
+*** True Line Result
+ def get_docs_html args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("docs/docs.html"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("docs/docs.html"),
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_docs_css args, req~
+- Inside source: true
+*** True Line Result
+ def get_docs_css args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("docs/docs.css"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("docs/docs.css"),
+** Processing line: ~ { 'Content-Type' => 'text/css' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/css' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_docs_search_gif args, req~
+- Inside source: true
+*** True Line Result
+ def get_docs_search_gif args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("docs/docs_search.gif"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("docs/docs_search.gif"),
+** Processing line: ~ { 'Content-Type' => 'image/gif' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'image/gif' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_src_backup_index_html args, req~
+- Inside source: true
+*** True Line Result
+ def get_src_backup_index_html args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("/tmp/src_backup/src_backup_index.html"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("/tmp/src_backup/src_backup_index.html"),
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_src_backup_index_txt args, req~
+- Inside source: true
+*** True Line Result
+ def get_src_backup_index_txt args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("/tmp/src_backup/src_backup_index.txt"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("/tmp/src_backup/src_backup_index.txt"),
+** Processing line: ~ { 'Content-Type' => 'text/txt' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/txt' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_src_backup_css args, req~
+- Inside source: true
+*** True Line Result
+ def get_src_backup_css args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("/tmp/src_backup/src_backup.css"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("/tmp/src_backup/src_backup.css"),
+** Processing line: ~ { 'Content-Type' => 'text/css' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/css' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_src_backup_changes_html args, req~
+- Inside source: true
+*** True Line Result
+ def get_src_backup_changes_html args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("/tmp/src_backup/src_backup_changes.html"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("/tmp/src_backup/src_backup_changes.html"),
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_src_backup_changes_txt args, req~
+- Inside source: true
+*** True Line Result
+ def get_src_backup_changes_txt args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ args.gtk.read_file("/tmp/src_backup/src_backup_changes.txt"),~
+- Inside source: true
+*** True Line Result
+ args.gtk.read_file("/tmp/src_backup/src_backup_changes.txt"),
+** Processing line: ~ { 'Content-Type' => 'text/txt' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/txt' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_eval args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_eval args, req
+** Processing line: ~ eval_view = <<-S~
+- Inside source: true
+*** True Line Result
+ eval_view = <<-S
+** Processing line: ~ <html lang="en">~
+- Inside source: true
+*** True Line Result
+ <html lang="en">
+** Processing line: ~ <head><title>Eval</title></head>~
+- Inside source: true
+*** True Line Result
+ <head><title>Eval</title></head>
+** Processing line: ~ <style>~
+- Inside source: true
+*** True Line Result
+ <style>
+** Processing line: ~ pre {~
+- Inside source: true
+*** True Line Result
+ pre {
+** Processing line: ~ border: solid 1px silver;~
+- Inside source: true
+*** True Line Result
+ border: solid 1px silver;
+** Processing line: ~ padding: 10px;~
+- Inside source: true
+*** True Line Result
+ padding: 10px;
+** Processing line: ~ font-size: 14px;~
+- Inside source: true
+*** True Line Result
+ font-size: 14px;
+** Processing line: ~ white-space: pre-wrap;~
+- Inside source: true
+*** True Line Result
+ white-space: pre-wrap;
+** Processing line: ~ white-space: -moz-pre-wrap;~
+- Inside source: true
+*** True Line Result
+ white-space: -moz-pre-wrap;
+** Processing line: ~ white-space: -pre-wrap;~
+- Inside source: true
+*** True Line Result
+ white-space: -pre-wrap;
+** Processing line: ~ white-space: -o-pre-wrap;~
+- Inside source: true
+*** True Line Result
+ white-space: -o-pre-wrap;
+** Processing line: ~ word-wrap: break-word;~
+- Inside source: true
+*** True Line Result
+ word-wrap: break-word;
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ </style>~
+- Inside source: true
+*** True Line Result
+ </style>
+** Processing line: ~ <body>~
+- Inside source: true
+*** True Line Result
+ <body>
+** Processing line: ~ <script>~
+- Inside source: true
+*** True Line Result
+ <script>
+** Processing line: ~ async function submitForm() {~
+- Inside source: true
+*** True Line Result
+ async function submitForm() {
+** Processing line: ~ const result = await fetch("/dragon/eval/", {~
+- Inside source: true
+*** True Line Result
+ const result = await fetch("/dragon/eval/", {
+** Processing line: ~ method: 'POST',~
+- Inside source: true
+*** True Line Result
+ method: 'POST',
+** Processing line: ~ headers: { 'Content-Type': 'application/json' },~
+- Inside source: true
+*** True Line Result
+ headers: { 'Content-Type': 'application/json' },
+** Processing line: ~ body: JSON.stringify({ code: document.getElementById("code").value }),~
+- Inside source: true
+*** True Line Result
+ body: JSON.stringify({ code: document.getElementById("code").value }),
+** Processing line: ~ });~
+- Inside source: true
+*** True Line Result
+ });
+** Processing line: ~ document.getElementById("eval-result").innerHTML = await result.text();~
+- Inside source: true
+*** True Line Result
+ document.getElementById("eval-result").innerHTML = await result.text();
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ </script>~
+- Inside source: true
+*** True Line Result
+ </script>
+** Processing line: ~ <form>~
+- Inside source: true
+*** True Line Result
+ <form>
+** Processing line: ~ <textarea name="code" id="code" rows="10" cols="80"># write your code here and set $result.\n$result = $gtk.args.state</textarea>~
+- Inside source: true
+*** True Line Result
+ <textarea name="code" id="code" rows="10" cols="80"># write your code here and set $result.\n$result = $gtk.args.state</textarea>
+** Processing line: ~ <br/>~
+- Inside source: true
+*** True Line Result
+ <br/>
+** Processing line: ~ <input type="button" onclick="submitForm();" value="submit" />~
+- Inside source: true
+*** True Line Result
+ <input type="button" onclick="submitForm();" value="submit" />
+** Processing line: ~ </form>~
+- Inside source: true
+*** True Line Result
+ </form>
+** Processing line: ~ <pre>curl -H "Content-Type: application/json" --data '{ "code": "$result = $args.state" }' -X POST http://localhost:9001/dragon/eval/</pre>~
+- Inside source: true
+*** True Line Result
+ <pre>curl -H "Content-Type: application/json" --data '{ "code": "$result = $args.state" }' -X POST http://localhost:9001/dragon/eval/</pre>
+** Processing line: ~ <div>Eval Result:</div>~
+- Inside source: true
+*** True Line Result
+ <div>Eval Result:</div>
+** Processing line: ~ <pre id="eval-result"></pre>~
+- Inside source: true
+*** True Line Result
+ <pre id="eval-result"></pre>
+** Processing line: ~ #{links}~
+- Inside source: true
+*** True Line Result
+ #{links}
+** Processing line: ~ </body>~
+- Inside source: true
+*** True Line Result
+ </body>
+** Processing line: ~ </html>~
+- Inside source: true
+*** True Line Result
+ </html>
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ eval_view,~
+- Inside source: true
+*** True Line Result
+ eval_view,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def post_api_eval args, req~
+- Inside source: true
+*** True Line Result
+ def post_api_eval args, req
+** Processing line: ~ if json? req~
+- Inside source: true
+*** True Line Result
+ if json? req
+** Processing line: ~ code = ($gtk.parse_json req.body)["code"]~
+- Inside source: true
+*** True Line Result
+ code = ($gtk.parse_json req.body)["code"]
+** Processing line: ~ code = code.gsub("$result", "$eval_result")~
+- Inside source: true
+*** True Line Result
+ code = code.gsub("$result", "$eval_result")
+** Processing line: ~ Object.new.instance_eval do~
+- Inside source: true
+*** True Line Result
+ Object.new.instance_eval do
+** Processing line: ~ begin~
+- Inside source: true
+*** True Line Result
+ begin
+** Processing line: ~ Kernel.eval code~
+- Inside source: true
+*** True Line Result
+ Kernel.eval code
+** Processing line: ~ rescue Exception => e~
+- Inside source: true
+*** True Line Result
+ rescue Exception => e
+** Processing line: ~ $eval_result = e~
+- Inside source: true
+*** True Line Result
+ $eval_result = e
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ "#{$eval_result || $eval_results || "nil"}",~
+- Inside source: true
+*** True Line Result
+ "#{$eval_result || $eval_results || "nil"}",
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/plain' }
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ $eval_result = nil~
+- Inside source: true
+*** True Line Result
+ $eval_result = nil
+** Processing line: ~ $eval_results = nil~
+- Inside source: true
+*** True Line Result
+ $eval_results = nil
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def api_css_string~
+- Inside source: true
+*** True Line Result
+ def api_css_string
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_console args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_console args, req
+** Processing line: ~ html = console_view "# write your code here and set $result.\n$result = $gtk.args.state"~
+- Inside source: true
+*** True Line Result
+ html = console_view "# write your code here and set $result.\n$result = $gtk.args.state"
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ html,~
+- Inside source: true
+*** True Line Result
+ html,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def control_panel_view~
+- Inside source: true
+*** True Line Result
+ def control_panel_view
+** Processing line: ~ <<-S~
+- Inside source: true
+*** True Line Result
+ <<-S
+** Processing line: ~ <html lang="en">~
+- Inside source: true
+*** True Line Result
+ <html lang="en">
+** Processing line: ~ <head><title>console</title></head>~
+- Inside source: true
+*** True Line Result
+ <head><title>console</title></head>
+** Processing line: ~ <body>~
+- Inside source: true
+*** True Line Result
+ <body>
+** Processing line: ~ <script>~
+- Inside source: true
+*** True Line Result
+ <script>
+** Processing line: ~ async function submitForm(url) {~
+- Inside source: true
+*** True Line Result
+ async function submitForm(url) {
+** Processing line: ~ const result = await fetch(url, {~
+- Inside source: true
+*** True Line Result
+ const result = await fetch(url, {
+** Processing line: ~ method: 'POST',~
+- Inside source: true
+*** True Line Result
+ method: 'POST',
+** Processing line: ~ headers: { 'Content-Type': 'application/json' },~
+- Inside source: true
+*** True Line Result
+ headers: { 'Content-Type': 'application/json' },
+** Processing line: ~ body: JSON.stringify({}),~
+- Inside source: true
+*** True Line Result
+ body: JSON.stringify({}),
+** Processing line: ~ });~
+- Inside source: true
+*** True Line Result
+ });
+** Processing line: ~ document.getElementById("success-notification").innerHTML = "successful";~
+- Inside source: true
+*** True Line Result
+ document.getElementById("success-notification").innerHTML = "successful";
+** Processing line: ~ setTimeout(function() { document.getElementById("success-notification").innerHTML = ""; }, 3000);~
+- Inside source: true
+*** True Line Result
+ setTimeout(function() { document.getElementById("success-notification").innerHTML = ""; }, 3000);
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ </script>~
+- Inside source: true
+*** True Line Result
+ </script>
+** Processing line: ~ <form>~
+- Inside source: true
+*** True Line Result
+ <form>
+** Processing line: ~ <input type="button" value="Show Console" onclick="submitForm('/dragon/show_console/')" />~
+- Inside source: true
+*** True Line Result
+ <input type="button" value="Show Console" onclick="submitForm('/dragon/show_console/')" />
+** Processing line: ~ </form>~
+- Inside source: true
+*** True Line Result
+ </form>
+** Processing line: ~ <form>~
+- Inside source: true
+*** True Line Result
+ <form>
+** Processing line: ~ <input type="button" value="Reset Game" onclick="submitForm('/dragon/reset/');" />~
+- Inside source: true
+*** True Line Result
+ <input type="button" value="Reset Game" onclick="submitForm('/dragon/reset/');" />
+** Processing line: ~ </form>~
+- Inside source: true
+*** True Line Result
+ </form>
+** Processing line: ~ <form>~
+- Inside source: true
+*** True Line Result
+ <form>
+** Processing line: ~ <input type="button" value="Record Gameplay" onclick="submitForm('/dragon/record/');" />~
+- Inside source: true
+*** True Line Result
+ <input type="button" value="Record Gameplay" onclick="submitForm('/dragon/record/');" />
+** Processing line: ~ </form>~
+- Inside source: true
+*** True Line Result
+ </form>
+** Processing line: ~ <form>~
+- Inside source: true
+*** True Line Result
+ <form>
+** Processing line: ~ <input type="button" value="Stop Recording" onclick="submitForm('/dragon/record_stop/');" />~
+- Inside source: true
+*** True Line Result
+ <input type="button" value="Stop Recording" onclick="submitForm('/dragon/record_stop/');" />
+** Processing line: ~ </form>~
+- Inside source: true
+*** True Line Result
+ </form>
+** Processing line: ~ <form>~
+- Inside source: true
+*** True Line Result
+ <form>
+** Processing line: ~ <input type="button" value="Replay Recording" onclick="submitForm('/dragon/replay/');" />~
+- Inside source: true
+*** True Line Result
+ <input type="button" value="Replay Recording" onclick="submitForm('/dragon/replay/');" />
+** Processing line: ~ </form>~
+- Inside source: true
+*** True Line Result
+ </form>
+** Processing line: ~ <div id="success-notification"></div>~
+- Inside source: true
+*** True Line Result
+ <div id="success-notification"></div>
+** Processing line: ~ #{links}~
+- Inside source: true
+*** True Line Result
+ #{links}
+** Processing line: ~ </body>~
+- Inside source: true
+*** True Line Result
+ </body>
+** Processing line: ~ </html>~
+- Inside source: true
+*** True Line Result
+ </html>
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def get_api_control_panel args, req~
+- Inside source: true
+*** True Line Result
+ def get_api_control_panel args, req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ control_panel_view,~
+- Inside source: true
+*** True Line Result
+ control_panel_view,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def json? req~
+- Inside source: true
+*** True Line Result
+ def json? req
+** Processing line: ~ req.headers.find { |k, v| k == "Content-Type" && (v.include? "application/json") }~
+- Inside source: true
+*** True Line Result
+ req.headers.find { |k, v| k == "Content-Type" && (v.include? "application/json") }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def post_api_reset args, req~
+- Inside source: true
+*** True Line Result
+ def post_api_reset args, req
+** Processing line: ~ $gtk.reset if json? req~
+- Inside source: true
+*** True Line Result
+ $gtk.reset if json? req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ control_panel_view,~
+- Inside source: true
+*** True Line Result
+ control_panel_view,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def post_api_record args, req~
+- Inside source: true
+*** True Line Result
+ def post_api_record args, req
+** Processing line: ~ $recording.start 100 if json? req~
+- Inside source: true
+*** True Line Result
+ $recording.start 100 if json? req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ control_panel_view,~
+- Inside source: true
+*** True Line Result
+ control_panel_view,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def post_api_record_stop args, req~
+- Inside source: true
+*** True Line Result
+ def post_api_record_stop args, req
+** Processing line: ~ $recording.stop 'replay.txt' if json? req~
+- Inside source: true
+*** True Line Result
+ $recording.stop 'replay.txt' if json? req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ control_panel_view,~
+- Inside source: true
+*** True Line Result
+ control_panel_view,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def post_api_replay args, req~
+- Inside source: true
+*** True Line Result
+ def post_api_replay args, req
+** Processing line: ~ $replay.start 'replay.txt' if json? req~
+- Inside source: true
+*** True Line Result
+ $replay.start 'replay.txt' if json? req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ control_panel_view,~
+- Inside source: true
+*** True Line Result
+ control_panel_view,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def post_api_show_console args, req~
+- Inside source: true
+*** True Line Result
+ def post_api_show_console args, req
+** Processing line: ~ $gtk.console.show if json? req~
+- Inside source: true
+*** True Line Result
+ $gtk.console.show if json? req
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ control_panel_view,~
+- Inside source: true
+*** True Line Result
+ control_panel_view,
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/html' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def tick args~
+- Inside source: true
+*** True Line Result
+ def tick args
+** Processing line: ~ args.inputs.http_requests.each do |req|~
+- Inside source: true
+*** True Line Result
+ args.inputs.http_requests.each do |req|
+** Processing line: ~ match_candidate = { method: req.method.downcase.to_sym,~
+- Inside source: true
+*** True Line Result
+ match_candidate = { method: req.method.downcase.to_sym,
+** Processing line: ~ uri: req.uri,~
+- Inside source: true
+*** True Line Result
+ uri: req.uri,
+** Processing line: ~ uri_without_query_string: (req.uri.split '?').first,~
+- Inside source: true
+*** True Line Result
+ uri_without_query_string: (req.uri.split '?').first,
+** Processing line: ~ query_string: (req.uri.split '?').last,~
+- Inside source: true
+*** True Line Result
+ query_string: (req.uri.split '?').last,
+** Processing line: ~ has_query_string: !!(req.uri.split '?').last,~
+- Inside source: true
+*** True Line Result
+ has_query_string: !!(req.uri.split '?').last,
+** Processing line: ~ has_api_prefix: (req.uri.start_with? "/dragon"),~
+- Inside source: true
+*** True Line Result
+ has_api_prefix: (req.uri.start_with? "/dragon"),
+** Processing line: ~ end_with_rb: (req.uri.end_with? ".rb"),~
+- Inside source: true
+*** True Line Result
+ end_with_rb: (req.uri.end_with? ".rb"),
+** Processing line: ~ has_file_extension: file_extensions.find { |f| req.uri.include? f },~
+- Inside source: true
+*** True Line Result
+ has_file_extension: file_extensions.find { |f| req.uri.include? f },
+** Processing line: ~ has_trailing_slash: (req.uri.split('?').first.end_with? "/") }~
+- Inside source: true
+*** True Line Result
+ has_trailing_slash: (req.uri.split('?').first.end_with? "/") }
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if !match_candidate[:has_file_extension]~
+- Inside source: true
+*** True Line Result
+ if !match_candidate[:has_file_extension]
+** Processing line: ~ if !match_candidate[:has_trailing_slash]~
+- Inside source: true
+*** True Line Result
+ if !match_candidate[:has_trailing_slash]
+** Processing line: ~ match_candidate[:uri] = match_candidate[:uri_without_query_string] + "/"~
+- Inside source: true
+*** True Line Result
+ match_candidate[:uri] = match_candidate[:uri_without_query_string] + "/"
+** Processing line: ~ if match_candidate[:query_string]~
+- Inside source: true
+*** True Line Result
+ if match_candidate[:query_string]
+** Processing line: ~ match_candidate[:uri] += "?#{match_candidate[:query_string]}"~
+- Inside source: true
+*** True Line Result
+ match_candidate[:uri] += "?#{match_candidate[:query_string]}"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ context = { args: args, req: req, match_candidate: match_candidate }~
+- Inside source: true
+*** True Line Result
+ context = { args: args, req: req, match_candidate: match_candidate }
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ process! context: context, routes: routes~
+- Inside source: true
+*** True Line Result
+ process! context: context, routes: routes
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def url_decode args, string~
+- Inside source: true
+*** True Line Result
+ def url_decode args, string
+** Processing line: ~ args.fn.gsub string,~
+- Inside source: true
+*** True Line Result
+ args.fn.gsub string,
+** Processing line: ~ '+', " ",~
+- Inside source: true
+*** True Line Result
+ '+', " ",
+** Processing line: ~ '%27', "'",~
+- Inside source: true
+*** True Line Result
+ '%27', "'",
+** Processing line: ~ '%22', '"',~
+- Inside source: true
+*** True Line Result
+ '%22', '"',
+** Processing line: ~ '%0D%0A', "\n",~
+- Inside source: true
+*** True Line Result
+ '%0D%0A', "\n",
+** Processing line: ~ '%3D', "=",~
+- Inside source: true
+*** True Line Result
+ '%3D', "=",
+** Processing line: ~ '%3B', ";",~
+- Inside source: true
+*** True Line Result
+ '%3B', ";",
+** Processing line: ~ '%7C', "|",~
+- Inside source: true
+*** True Line Result
+ '%7C', "|",
+** Processing line: ~ '%28', "(",~
+- Inside source: true
+*** True Line Result
+ '%28', "(",
+** Processing line: ~ '%29', ")",~
+- Inside source: true
+*** True Line Result
+ '%29', ")",
+** Processing line: ~ '%7B', "{",~
+- Inside source: true
+*** True Line Result
+ '%7B', "{",
+** Processing line: ~ '%7D', "}",~
+- Inside source: true
+*** True Line Result
+ '%7D', "}",
+** Processing line: ~ '%2C', ",",~
+- Inside source: true
+*** True Line Result
+ '%2C', ",",
+** Processing line: ~ '%3A', ":",~
+- Inside source: true
+*** True Line Result
+ '%3A', ":",
+** Processing line: ~ '%5B', "[",~
+- Inside source: true
+*** True Line Result
+ '%5B', "[",
+** Processing line: ~ '%5D', "]",~
+- Inside source: true
+*** True Line Result
+ '%5D', "]",
+** Processing line: ~ '%23', "#",~
+- Inside source: true
+*** True Line Result
+ '%23', "#",
+** Processing line: ~ '%21', "!",~
+- Inside source: true
+*** True Line Result
+ '%21', "!",
+** Processing line: ~ '%3C', "<",~
+- Inside source: true
+*** True Line Result
+ '%3C', "<",
+** Processing line: ~ '%3E', ">",~
+- Inside source: true
+*** True Line Result
+ '%3E', ">",
+** Processing line: ~ '%2B', "+",~
+- Inside source: true
+*** True Line Result
+ '%2B', "+",
+** Processing line: ~ '%2F', "/",~
+- Inside source: true
+*** True Line Result
+ '%2F', "/",
+** Processing line: ~ '%40', "@",~
+- Inside source: true
+*** True Line Result
+ '%40', "@",
+** Processing line: ~ '%3F', "?",~
+- Inside source: true
+*** True Line Result
+ '%3F', "?",
+** Processing line: ~ '%26', "&",~
+- Inside source: true
+*** True Line Result
+ '%26', "&",
+** Processing line: ~ '%24', "$",~
+- Inside source: true
+*** True Line Result
+ '%24', "$",
+** Processing line: ~ '%5C', "\\",~
+- Inside source: true
+*** True Line Result
+ '%5C', "\\",
+** Processing line: ~ '%60', "`",~
+- Inside source: true
+*** True Line Result
+ '%60', "`",
+** Processing line: ~ '%7E', "~",~
+- Inside source: true
+*** True Line Result
+ '%7E', "~",
+** Processing line: ~ '%C2%B2', "²",~
+- Inside source: true
+*** True Line Result
+ '%C2%B2', "²",
+** Processing line: ~ '%5E', "^",~
+- Inside source: true
+*** True Line Result
+ '%5E', "^",
+** Processing line: ~ '%C2%BA', "º",~
+- Inside source: true
+*** True Line Result
+ '%C2%BA', "º",
+** Processing line: ~ '%C2%A7', "§",~
+- Inside source: true
+*** True Line Result
+ '%C2%A7', "§",
+** Processing line: ~ '%20', " ",~
+- Inside source: true
+*** True Line Result
+ '%20', " ",
+** Processing line: ~ '%0A', "\n",~
+- Inside source: true
+*** True Line Result
+ '%0A', "\n",
+** Processing line: ~ '%25', "%",~
+- Inside source: true
+*** True Line Result
+ '%25', "%",
+** Processing line: ~ '%2A', "*"~
+- Inside source: true
+*** True Line Result
+ '%2A', "*"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def file_extensions~
+- Inside source: true
+*** True Line Result
+ def file_extensions
+** Processing line: ~ [".html", ".css", ".gif", ".txt", ".ico", ".rb"]~
+- Inside source: true
+*** True Line Result
+ [".html", ".css", ".gif", ".txt", ".ico", ".rb"]
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def routes~
+- Inside source: true
+*** True Line Result
+ def routes
+** Processing line: ~ [{ match_criteria: { method: :get, uri: "/" },~
+- Inside source: true
+*** True Line Result
+ [{ match_criteria: { method: :get, uri: "/" },
+** Processing line: ~ handler: :get_index },~
+- Inside source: true
+*** True Line Result
+ handler: :get_index },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/" },
+** Processing line: ~ handler: :get_index },~
+- Inside source: true
+*** True Line Result
+ handler: :get_index },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/boot/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/boot/" },
+** Processing line: ~ handler: :get_api_boot },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_boot },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/trace/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/trace/" },
+** Processing line: ~ handler: :get_api_trace },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_trace },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/puts/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/puts/" },
+** Processing line: ~ handler: :get_api_puts },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_puts },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/log/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/log/" },
+** Processing line: ~ handler: :get_api_log },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_log },
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/log/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :post, uri: "/dragon/log/" },
+** Processing line: ~ handler: :post_api_log },~
+- Inside source: true
+*** True Line Result
+ handler: :post_api_log },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/changes/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/changes/" },
+** Processing line: ~ handler: :get_api_changes },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_changes },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/eval/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/eval/" },
+** Processing line: ~ handler: :get_api_eval },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_eval },
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/eval/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :post, uri: "/dragon/eval/" },
+** Processing line: ~ handler: :post_api_eval },~
+- Inside source: true
+*** True Line Result
+ handler: :post_api_eval },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/console/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/console/" },
+** Processing line: ~ handler: :get_api_console },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_console },
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/console/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :post, uri: "/dragon/console/" },
+** Processing line: ~ handler: :post_api_console },~
+- Inside source: true
+*** True Line Result
+ handler: :post_api_console },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/control_panel/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/control_panel/" },
+** Processing line: ~ handler: :get_api_control_panel },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_control_panel },
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/reset/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :post, uri: "/dragon/reset/" },
+** Processing line: ~ handler: :post_api_reset },~
+- Inside source: true
+*** True Line Result
+ handler: :post_api_reset },
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/record/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :post, uri: "/dragon/record/" },
+** Processing line: ~ handler: :post_api_record },~
+- Inside source: true
+*** True Line Result
+ handler: :post_api_record },
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/record_stop/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :post, uri: "/dragon/record_stop/" },
+** Processing line: ~ handler: :post_api_record_stop },~
+- Inside source: true
+*** True Line Result
+ handler: :post_api_record_stop },
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/replay/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :post, uri: "/dragon/replay/" },
+** Processing line: ~ handler: :post_api_replay },~
+- Inside source: true
+*** True Line Result
+ handler: :post_api_replay },
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/show_console/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :post, uri: "/dragon/show_console/" },
+** Processing line: ~ handler: :post_api_show_console },~
+- Inside source: true
+*** True Line Result
+ handler: :post_api_show_console },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/code/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/code/" },
+** Processing line: ~ handler: :get_api_code },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_code },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/autocomplete/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/dragon/autocomplete/" },
+** Processing line: ~ handler: :get_api_autocomplete },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_autocomplete },
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/autocomplete/" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :post, uri: "/dragon/autocomplete/" },
+** Processing line: ~ handler: :post_api_autocomplete },~
+- Inside source: true
+*** True Line Result
+ handler: :post_api_autocomplete },
+** Processing line: ~ { match_criteria: { method: :get, uri_without_query_string: "/dragon/code/edit/", has_query_string: true },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri_without_query_string: "/dragon/code/edit/", has_query_string: true },
+** Processing line: ~ handler: :get_api_code_edit },~
+- Inside source: true
+*** True Line Result
+ handler: :get_api_code_edit },
+** Processing line: ~ { match_criteria: { method: :post, uri_without_query_string: "/dragon/code/update/", has_query_string: true },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :post, uri_without_query_string: "/dragon/code/update/", has_query_string: true },
+** Processing line: ~ handler: :post_api_code_update },~
+- Inside source: true
+*** True Line Result
+ handler: :post_api_code_update },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { match_criteria: { method: :get, uri: "/docs.html" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/docs.html" },
+** Processing line: ~ handler: :get_docs_html },~
+- Inside source: true
+*** True Line Result
+ handler: :get_docs_html },
+** Processing line: ~ { match_criteria: { method: :get, uri_without_query_string: "/docs.css" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri_without_query_string: "/docs.css" },
+** Processing line: ~ handler: :get_docs_css },~
+- Inside source: true
+*** True Line Result
+ handler: :get_docs_css },
+** Processing line: ~ { match_criteria: { method: :get, uri: "/docs_search.gif" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/docs_search.gif" },
+** Processing line: ~ handler: :get_docs_search_gif },~
+- Inside source: true
+*** True Line Result
+ handler: :get_docs_search_gif },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { match_criteria: { method: :get, uri: "/src_backup_index.html" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/src_backup_index.html" },
+** Processing line: ~ handler: :get_src_backup_index_html },~
+- Inside source: true
+*** True Line Result
+ handler: :get_src_backup_index_html },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { match_criteria: { method: :get, uri: "/src_backup_index.txt" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/src_backup_index.txt" },
+** Processing line: ~ handler: :get_src_backup_index_txt },~
+- Inside source: true
+*** True Line Result
+ handler: :get_src_backup_index_txt },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { match_criteria: { method: :get, uri: "/src_backup_changes.html" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/src_backup_changes.html" },
+** Processing line: ~ handler: :get_src_backup_changes_html },~
+- Inside source: true
+*** True Line Result
+ handler: :get_src_backup_changes_html },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { match_criteria: { method: :get, uri: "/src_backup_changes.txt" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/src_backup_changes.txt" },
+** Processing line: ~ handler: :get_src_backup_changes_txt },~
+- Inside source: true
+*** True Line Result
+ handler: :get_src_backup_changes_txt },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { match_criteria: { method: :get, uri: "/src_backup.css" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/src_backup.css" },
+** Processing line: ~ handler: :get_src_backup_css },~
+- Inside source: true
+*** True Line Result
+ handler: :get_src_backup_css },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { match_criteria: { method: :get, uri: "/favicon.ico" },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, uri: "/favicon.ico" },
+** Processing line: ~ handler: :get_favicon_ico },~
+- Inside source: true
+*** True Line Result
+ handler: :get_favicon_ico },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { match_criteria: { method: :get, end_with_rb: true },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, end_with_rb: true },
+** Processing line: ~ handler: :get_src_backup },~
+- Inside source: true
+*** True Line Result
+ handler: :get_src_backup },
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ { match_criteria: { method: :get, end_with_rb: true },~
+- Inside source: true
+*** True Line Result
+ { match_criteria: { method: :get, end_with_rb: true },
+** Processing line: ~ handler: :get_src_backup }~
+- Inside source: true
+*** True Line Result
+ handler: :get_src_backup }
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ ]~
+- Inside source: true
+*** True Line Result
+ ]
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def process! opts~
+- Inside source: true
+*** True Line Result
+ def process! opts
+** Processing line: ~ routes = opts[:routes]~
+- Inside source: true
+*** True Line Result
+ routes = opts[:routes]
+** Processing line: ~ context = opts[:context]~
+- Inside source: true
+*** True Line Result
+ context = opts[:context]
+** Processing line: ~ routes.each do |route|~
+- Inside source: true
+*** True Line Result
+ routes.each do |route|
+** Processing line: ~ match_found = (process_single! route: route, context: context)~
+- Inside source: true
+*** True Line Result
+ match_found = (process_single! route: route, context: context)
+** Processing line: ~ return if match_found~
+- Inside source: true
+*** True Line Result
+ return if match_found
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def process_single! opts~
+- Inside source: true
+*** True Line Result
+ def process_single! opts
+** Processing line: ~ match_criteria = opts[:route][:match_criteria]~
+- Inside source: true
+*** True Line Result
+ match_criteria = opts[:route][:match_criteria]
+** Processing line: ~ m = opts[:route][:handler]~
+- Inside source: true
+*** True Line Result
+ m = opts[:route][:handler]
+** Processing line: ~ args = opts[:context][:args]~
+- Inside source: true
+*** True Line Result
+ args = opts[:context][:args]
+** Processing line: ~ req = opts[:context][:req]~
+- Inside source: true
+*** True Line Result
+ req = opts[:context][:req]
+** Processing line: ~ match_candidate = opts[:context][:match_candidate]~
+- Inside source: true
+*** True Line Result
+ match_candidate = opts[:context][:match_candidate]
+** Processing line: ~ match_criteria.each do |k, v|~
+- Inside source: true
+*** True Line Result
+ match_criteria.each do |k, v|
+** Processing line: ~ return false if match_candidate[k] != v~
+- Inside source: true
+*** True Line Result
+ return false if match_candidate[k] != v
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ begin~
+- Inside source: true
+*** True Line Result
+ begin
+** Processing line: ~ send m, args, req~
+- Inside source: true
+*** True Line Result
+ send m, args, req
+** Processing line: ~ rescue Exception => e~
+- Inside source: true
+*** True Line Result
+ rescue Exception => e
+** Processing line: ~ req.respond 200,~
+- Inside source: true
+*** True Line Result
+ req.respond 200,
+** Processing line: ~ "#{e}\n#{e.__backtrace_to_org__}",~
+- Inside source: true
+*** True Line Result
+ "#{e}\n#{e.__backtrace_to_org__}",
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+- Inside source: true
+*** True Line Result
+ { 'Content-Type' => 'text/plain' }
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ return true~
+- Inside source: true
+*** True Line Result
+ return true
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
+** Processing line: ~*** args.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
*** args.rb
** Processing line: ~#+begin_src ruby~
- Line was identified as the beginning of a code block.
@@ -148866,6 +155066,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
include Serialize
+** Processing line: ~ attr_accessor :cvars~
+- Inside source: true
+*** True Line Result
+ attr_accessor :cvars
** Processing line: ~ attr_accessor :inputs~
- Inside source: true
*** True Line Result
@@ -148946,6 +155150,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
@outputs = Outputs.new args: self
+** Processing line: ~ @cvars = {}~
+- Inside source: true
+*** True Line Result
+ @cvars = {}
** Processing line: ~ @audio = {}~
- Inside source: true
*** True Line Result
@@ -150890,26 +157098,26 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ attr_accessor :show_reason, :log, :logo, :background_color,~
+** Processing line: ~ attr_accessor :show_reason, :log, :logo,~
- Inside source: true
*** True Line Result
- attr_accessor :show_reason, :log, :logo, :background_color,
-** Processing line: ~ :text_color, :animation_duration,~
+ attr_accessor :show_reason, :log, :logo,
+** Processing line: ~ :animation_duration,~
- Inside source: true
*** True Line Result
- :text_color, :animation_duration,
+ :animation_duration,
** Processing line: ~ :max_log_lines, :max_history, :log,~
- Inside source: true
*** True Line Result
:max_log_lines, :max_history, :log,
-** Processing line: ~ :last_command_errored, :last_command, :error_color, :shown_at,~
+** Processing line: ~ :last_command_errored, :last_command, :shown_at,~
- Inside source: true
*** True Line Result
- :last_command_errored, :last_command, :error_color, :shown_at,
-** Processing line: ~ :header_color, :archived_log, :last_log_lines, :last_log_lines_count,~
+ :last_command_errored, :last_command, :shown_at,
+** Processing line: ~ :archived_log, :last_log_lines, :last_log_lines_count,~
- Inside source: true
*** True Line Result
- :header_color, :archived_log, :last_log_lines, :last_log_lines_count,
+ :archived_log, :last_log_lines, :last_log_lines_count,
** Processing line: ~ :suppress_left_arrow_behavior, :command_set_at,~
- Inside source: true
*** True Line Result
@@ -150918,10 +157126,22 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
:toast_ids, :bottom,
-** Processing line: ~ :font_style, :menu~
+** Processing line: ~ :font_style, :menu,~
+- Inside source: true
+*** True Line Result
+ :font_style, :menu,
+** Processing line: ~ :background_color, :spam_color, :text_color, :warn_color,~
+- Inside source: true
+*** True Line Result
+ :background_color, :spam_color, :text_color, :warn_color,
+** Processing line: ~ :error_color, :header_color, :code_color, :comment_color,~
+- Inside source: true
+*** True Line Result
+ :error_color, :header_color, :code_color, :comment_color,
+** Processing line: ~ :debug_color, :unfiltered_color~
- Inside source: true
*** True Line Result
- :font_style, :menu
+ :debug_color, :unfiltered_color
** Processing line: ~~
- Inside source: true
*** True Line Result
@@ -150990,22 +157210,14 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
@logo = 'console-logo.png'
-** Processing line: ~ @history_fname = 'console_history.txt'~
+** Processing line: ~ @history_fname = 'logs/console_history.txt'~
- Inside source: true
*** True Line Result
- @history_fname = 'console_history.txt'
+ @history_fname = 'logs/console_history.txt'
** Processing line: ~ @background_color = Color.new [0, 0, 0, 224]~
- Inside source: true
*** True Line Result
@background_color = Color.new [0, 0, 0, 224]
-** Processing line: ~ @text_color = Color.new [255, 255, 255]~
-- Inside source: true
-*** True Line Result
- @text_color = Color.new [255, 255, 255]
-** Processing line: ~ @error_color = Color.new [200, 50, 50]~
-- Inside source: true
-*** True Line Result
- @error_color = Color.new [200, 50, 50]
** Processing line: ~ @header_color = Color.new [100, 200, 220]~
- Inside source: true
*** True Line Result
@@ -151014,10 +157226,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
@code_color = Color.new [210, 168, 255]
-** Processing line: ~ @comment_color = Color.new [0, 200, 100]~
+** Processing line: ~ @comment_color = Color.new [0, 200, 100]~
- Inside source: true
*** True Line Result
- @comment_color = Color.new [0, 200, 100]
+ @comment_color = Color.new [0, 200, 100]
** Processing line: ~ @animation_duration = 1.seconds~
- Inside source: true
*** True Line Result
@@ -151026,6 +157238,42 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
@shown_at = -1
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # these are the colors for text at various log levels.~
+- Inside source: true
+*** True Line Result
+ # these are the colors for text at various log levels.
+** Processing line: ~ @spam_color = Color.new [160, 160, 160]~
+- Inside source: true
+*** True Line Result
+ @spam_color = Color.new [160, 160, 160]
+** Processing line: ~ @debug_color = Color.new [0, 255, 0]~
+- Inside source: true
+*** True Line Result
+ @debug_color = Color.new [0, 255, 0]
+** Processing line: ~ @text_color = Color.new [255, 255, 255]~
+- Inside source: true
+*** True Line Result
+ @text_color = Color.new [255, 255, 255]
+** Processing line: ~ @warn_color = Color.new [255, 255, 0]~
+- Inside source: true
+*** True Line Result
+ @warn_color = Color.new [255, 255, 0]
+** Processing line: ~ @error_color = Color.new [200, 50, 50]~
+- Inside source: true
+*** True Line Result
+ @error_color = Color.new [200, 50, 50]
+** Processing line: ~ @unfiltered_color = Color.new [0, 255, 255]~
+- Inside source: true
+*** True Line Result
+ @unfiltered_color = Color.new [0, 255, 255]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~ load_history~
- Inside source: true
*** True Line Result
@@ -151286,10 +157534,34 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def add_text obj~
+** Processing line: ~ def add_text obj, loglevel=-1~
+- Inside source: true
+*** True Line Result
+ def add_text obj, loglevel=-1
+** Processing line: ~ # loglevel is one of the values of LogLevel in logging.h, or -1 to say "we don't care, colorize it with your special string parsing magic"~
+- Inside source: true
+*** True Line Result
+ # loglevel is one of the values of LogLevel in logging.h, or -1 to say "we don't care, colorize it with your special string parsing magic"
+** Processing line: ~ loglevel = -1 if loglevel < 0~
+- Inside source: true
+*** True Line Result
+ loglevel = -1 if loglevel < 0
+** Processing line: ~ loglevel = 5 if loglevel > 5 # 5 == unfiltered (it's 0x7FFFFFFE in C, clamp it down)~
+- Inside source: true
+*** True Line Result
+ loglevel = 5 if loglevel > 5 # 5 == unfiltered (it's 0x7FFFFFFE in C, clamp it down)
+** Processing line: ~ loglevel = 2 if (loglevel == -1) && obj.start_with?('!c!') # oh well~
- Inside source: true
*** True Line Result
- def add_text obj
+ loglevel = 2 if (loglevel == -1) && obj.start_with?('!c!') # oh well
+** Processing line: ~ colorstr = (loglevel != -1) ? "!c!#{loglevel}" : nil~
+- Inside source: true
+*** True Line Result
+ colorstr = (loglevel != -1) ? "!c!#{loglevel}" : nil
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~ @last_log_lines_count ||= 1~
- Inside source: true
*** True Line Result
@@ -151322,14 +157594,38 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
str.each_line do |s|
-** Processing line: ~ s.wrapped_lines(self.console_text_width).each do |l|~
+** Processing line: ~ if colorstr.nil?~
+- Inside source: true
+*** True Line Result
+ if colorstr.nil?
+** Processing line: ~ s.wrapped_lines(self.console_text_width).each do |l|~
+- Inside source: true
+*** True Line Result
+ s.wrapped_lines(self.console_text_width).each do |l|
+** Processing line: ~ log_lines << l~
+- Inside source: true
+*** True Line Result
+ log_lines << l
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ else~
- Inside source: true
*** True Line Result
- s.wrapped_lines(self.console_text_width).each do |l|
-** Processing line: ~ log_lines << l~
+ else
+** Processing line: ~ s.wrapped_lines(self.console_text_width).each do |l|~
- Inside source: true
*** True Line Result
- log_lines << l
+ s.wrapped_lines(self.console_text_width).each do |l|
+** Processing line: ~ log_lines << "#{colorstr}#{l}"~
+- Inside source: true
+*** True Line Result
+ log_lines << "#{colorstr}#{l}"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -151342,10 +157638,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ if log_lines == @last_log_lines~
+** Processing line: ~ if log_lines == @last_log_lines && log_lines.length != 0~
- Inside source: true
*** True Line Result
- if log_lines == @last_log_lines
+ if log_lines == @last_log_lines && log_lines.length != 0
** Processing line: ~ @last_log_lines_count += 1~
- Inside source: true
*** True Line Result
@@ -152442,22 +158738,30 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ if args.inputs.mouse.wheel && args.inputs.mouse.wheel.y > 0~
+** Processing line: ~ if args.inputs.mouse.wheel~
+- Inside source: true
+*** True Line Result
+ if args.inputs.mouse.wheel
+** Processing line: ~ if args.inputs.mouse.wheel.y > 0~
+- Inside source: true
+*** True Line Result
+ if args.inputs.mouse.wheel.y > 0
+** Processing line: ~ @inertia = 1~
- Inside source: true
*** True Line Result
- if args.inputs.mouse.wheel && args.inputs.mouse.wheel.y > 0
-** Processing line: ~ @inertia = 1~
+ @inertia = 1
+** Processing line: ~ elsif args.inputs.mouse.wheel.y < 0~
- Inside source: true
*** True Line Result
- @inertia = 1
-** Processing line: ~ elsif args.inputs.mouse.wheel && args.inputs.mouse.wheel.y < 0~
+ elsif args.inputs.mouse.wheel.y < 0
+** Processing line: ~ @inertia = -1~
- Inside source: true
*** True Line Result
- elsif args.inputs.mouse.wheel && args.inputs.mouse.wheel.y < 0
-** Processing line: ~ @inertia = -1~
+ @inertia = -1
+** Processing line: ~ end~
- Inside source: true
*** True Line Result
- @inertia = -1
+ end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -152490,34 +158794,26 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ if @inertia != 0~
-- Inside source: true
-*** True Line Result
- if @inertia != 0
-** Processing line: ~ @inertia = (@inertia * 0.7)~
-- Inside source: true
-*** True Line Result
- @inertia = (@inertia * 0.7)
-** Processing line: ~ if @inertia > 0~
+** Processing line: ~ @inertia = (@inertia * 0.7)~
- Inside source: true
*** True Line Result
- if @inertia > 0
-** Processing line: ~ @log_offset -= 1~
+ @inertia = (@inertia * 0.7)
+** Processing line: ~ if @inertia > 0~
- Inside source: true
*** True Line Result
- @log_offset -= 1
-** Processing line: ~ elsif @inertia < 0~
+ if @inertia > 0
+** Processing line: ~ @log_offset += 1~
- Inside source: true
*** True Line Result
- elsif @inertia < 0
-** Processing line: ~ @log_offset += 1~
+ @log_offset += 1
+** Processing line: ~ elsif @inertia < 0~
- Inside source: true
*** True Line Result
- @log_offset += 1
-** Processing line: ~ end~
+ elsif @inertia < 0
+** Processing line: ~ @log_offset -= 1~
- Inside source: true
*** True Line Result
- end
+ @log_offset -= 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -152978,10 +159274,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
color = color.mult_alpha(0.5) if archived
-** Processing line: ~~
+** Processing line: ~ str = str[4..-1] if str.start_with?('!c!') # chop off loglevel color~
- Inside source: true
*** True Line Result
-
+ str = str[4..-1] if str.start_with?('!c!') # chop off loglevel color
** Processing line: ~ args.outputs.reserved << font_style.label(x: left.shift_right(10), y: y, text: str, color: color)~
- Inside source: true
*** True Line Result
@@ -153922,10 +160218,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def color_for_log_entry(log_entry)~
+** Processing line: ~ def color_for_plain_text log_entry~
- Inside source: true
*** True Line Result
- def color_for_log_entry(log_entry)
+ def color_for_plain_text log_entry
+** Processing line: ~ log_entry = log_entry[4..-1] if log_entry.start_with? "!c!"~
+- Inside source: true
+*** True Line Result
+ log_entry = log_entry[4..-1] if log_entry.start_with? "!c!"
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~ if code? log_entry~
- Inside source: true
*** True Line Result
@@ -154002,6 +160306,98 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
+** Processing line: ~ def color_for_log_entry(log_entry)~
+- Inside source: true
+*** True Line Result
+ def color_for_log_entry(log_entry)
+** Processing line: ~ if log_entry.start_with?('!c!') # loglevel color specified.~
+- Inside source: true
+*** True Line Result
+ if log_entry.start_with?('!c!') # loglevel color specified.
+** Processing line: ~ return case log_entry[3..3].to_i~
+- Inside source: true
+*** True Line Result
+ return case log_entry[3..3].to_i
+** Processing line: ~ when 0 # spam~
+- Inside source: true
+*** True Line Result
+ when 0 # spam
+** Processing line: ~ @spam_color~
+- Inside source: true
+*** True Line Result
+ @spam_color
+** Processing line: ~ when 1 # debug~
+- Inside source: true
+*** True Line Result
+ when 1 # debug
+** Processing line: ~ @debug_color~
+- Inside source: true
+*** True Line Result
+ @debug_color
+** Processing line: ~ #when 2 # info (caught by the `else` block.)~
+- Inside source: true
+*** True Line Result
+ #when 2 # info (caught by the `else` block.)
+** Processing line: ~ # @text_color~
+- Inside source: true
+*** True Line Result
+ # @text_color
+** Processing line: ~ when 3 # warn~
+- Inside source: true
+*** True Line Result
+ when 3 # warn
+** Processing line: ~ @warn_color~
+- Inside source: true
+*** True Line Result
+ @warn_color
+** Processing line: ~ when 4 # error~
+- Inside source: true
+*** True Line Result
+ when 4 # error
+** Processing line: ~ @error_color~
+- Inside source: true
+*** True Line Result
+ @error_color
+** Processing line: ~ when 5 # unfiltered~
+- Inside source: true
+*** True Line Result
+ when 5 # unfiltered
+** Processing line: ~ @unfiltered_color~
+- Inside source: true
+*** True Line Result
+ @unfiltered_color
+** Processing line: ~ else~
+- Inside source: true
+*** True Line Result
+ else
+** Processing line: ~ color_for_plain_text log_entry~
+- Inside source: true
+*** True Line Result
+ color_for_plain_text log_entry
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ return color_for_plain_text log_entry~
+- Inside source: true
+*** True Line Result
+ return color_for_plain_text log_entry
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~ def prompt~
- Inside source: true
*** True Line Result
@@ -155822,10 +162218,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
items.each_slice(columns).each_with_index do |cells, i|
-** Processing line: ~ pretty_print_row_seperator string_width, cell_width, column_width, columns~
+** Processing line: ~ pretty_print_row_separator string_width, cell_width, column_width, columns~
- Inside source: true
*** True Line Result
- pretty_print_row_seperator string_width, cell_width, column_width, columns
+ pretty_print_row_separator string_width, cell_width, column_width, columns
** Processing line: ~ pretty_print_row cells, string_width, cell_width, column_width, columns~
- Inside source: true
*** True Line Result
@@ -155838,10 +162234,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ pretty_print_row_seperator string_width, cell_width, column_width, columns~
+** Processing line: ~ pretty_print_row_separator string_width, cell_width, column_width, columns~
- Inside source: true
*** True Line Result
- pretty_print_row_seperator string_width, cell_width, column_width, columns
+ pretty_print_row_separator string_width, cell_width, column_width, columns
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -159206,14 +165602,14 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
start_tick + duration,
-** Processing line: ~ (initial_value *definitions),~
+** Processing line: ~ initial_value(*definitions),~
- Inside source: true
*** True Line Result
- (initial_value *definitions),
-** Processing line: ~ (final_value *definitions),~
+ initial_value(*definitions),
+** Processing line: ~ final_value(*definitions),~
- Inside source: true
*** True Line Result
- (final_value *definitions),
+ final_value(*definitions),
** Processing line: ~ *definitions~
- Inside source: true
*** True Line Result
@@ -159998,14 +166394,14 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def self.rotate_point point, angle, around = nil
-** Processing line: ~ s = Math.sin a.to_radians~
+** Processing line: ~ s = Math.sin angle.to_radians~
- Inside source: true
*** True Line Result
- s = Math.sin a.to_radians
-** Processing line: ~ c = Math.cos a.to_radians~
+ s = Math.sin angle.to_radians
+** Processing line: ~ c = Math.cos angle.to_radians~
- Inside source: true
*** True Line Result
- c = Math.cos a.to_radians
+ c = Math.cos angle.to_radians
** Processing line: ~ px = point.x~
- Inside source: true
*** True Line Result
@@ -160726,14 +167122,46 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# @gtk
-** Processing line: ~ def self.line_y_intercept line~
+** Processing line: ~ def self.line_y_intercept line, replace_infinity: nil~
- Inside source: true
*** True Line Result
- def self.line_y_intercept line
-** Processing line: ~ line.y - line_slope(line) * line.x~
+ def self.line_y_intercept line, replace_infinity: nil
+** Processing line: ~ line.y - line_slope(line, replace_infinity: replace_infinity) * line.x~
- Inside source: true
*** True Line Result
- line.y - line_slope(line) * line.x
+ line.y - line_slope(line, replace_infinity: replace_infinity) * line.x
+** Processing line: ~ rescue Exception => e~
+- Inside source: true
+*** True Line Result
+ rescue Exception => e
+** Processing line: ~ raise <<-S~
+- Inside source: true
+*** True Line Result
+ raise <<-S
+** Processing line: ~ * ERROR: ~Geometry::line_y_intercept~~
+- Inside source: true
+*** True Line Result
+ * ERROR: ~Geometry::line_y_intercept~
+** Processing line: ~ The following exception was thrown for line: #{line}~
+- Inside source: true
+*** True Line Result
+ The following exception was thrown for line: #{line}
+** Processing line: ~ #{e}~
+- Inside source: true
+*** True Line Result
+ #{e}
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ Consider passing in ~replace_infinity: VALUE~ to handle for vertical lines.~
+- Inside source: true
+*** True Line Result
+ Consider passing in ~replace_infinity: VALUE~ to handle for vertical lines.
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -161034,26 +167462,26 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
# @gtk
-** Processing line: ~ def self.line_intersect line_one, line_two~
+** Processing line: ~ def self.line_intersect line_one, line_two, replace_infinity: nil~
- Inside source: true
*** True Line Result
- def self.line_intersect line_one, line_two
-** Processing line: ~ m1 = line_slope(line_one)~
+ def self.line_intersect line_one, line_two, replace_infinity: nil
+** Processing line: ~ m1 = line_slope(line_one, replace_infinity: replace_infinity)~
- Inside source: true
*** True Line Result
- m1 = line_slope(line_one)
-** Processing line: ~ m2 = line_slope(line_two)~
+ m1 = line_slope(line_one, replace_infinity: replace_infinity)
+** Processing line: ~ m2 = line_slope(line_two, replace_infinity: replace_infinity)~
- Inside source: true
*** True Line Result
- m2 = line_slope(line_two)
-** Processing line: ~ b1 = line_y_intercept(line_one)~
+ m2 = line_slope(line_two, replace_infinity: replace_infinity)
+** Processing line: ~ b1 = line_y_intercept(line_one, replace_infinity: replace_infinity)~
- Inside source: true
*** True Line Result
- b1 = line_y_intercept(line_one)
-** Processing line: ~ b2 = line_y_intercept(line_two)~
+ b1 = line_y_intercept(line_one, replace_infinity: replace_infinity)
+** Processing line: ~ b2 = line_y_intercept(line_two, replace_infinity: replace_infinity)~
- Inside source: true
*** True Line Result
- b2 = line_y_intercept(line_two)
+ b2 = line_y_intercept(line_two, replace_infinity: replace_infinity)
** Processing line: ~ x = (b1 - b2) / (m2 - m1)~
- Inside source: true
*** True Line Result
@@ -161066,6 +167494,38 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
[x, y]
+** Processing line: ~ rescue Exception => e~
+- Inside source: true
+*** True Line Result
+ rescue Exception => e
+** Processing line: ~ raise <<-S~
+- Inside source: true
+*** True Line Result
+ raise <<-S
+** Processing line: ~ * ERROR: ~Geometry::line_intersect~~
+- Inside source: true
+*** True Line Result
+ * ERROR: ~Geometry::line_intersect~
+** Processing line: ~ The following exception was thrown for line_one: #{line_one}, line_two: #{line_two}~
+- Inside source: true
+*** True Line Result
+ The following exception was thrown for line_one: #{line_one}, line_two: #{line_two}
+** Processing line: ~ #{e}~
+- Inside source: true
+*** True Line Result
+ #{e}
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ Consider passing in ~replace_infinity: VALUE~ to handle for vertical lines.~
+- Inside source: true
+*** True Line Result
+ Consider passing in ~replace_infinity: VALUE~ to handle for vertical lines.
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -163810,10 +170270,14 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
collection.each do |m|
-** Processing line: ~ self.instance_variable_set("@#{m.to_s}".to_sym, value)~
+** Processing line: ~ m_to_s = m.to_s~
+- Inside source: true
+*** True Line Result
+ m_to_s = m.to_s
+** Processing line: ~ self.instance_variable_set("@#{m_to_s}".to_sym, value) if m_to_s.strip.length > 0~
- Inside source: true
*** True Line Result
- self.instance_variable_set("@#{m.to_s}".to_sym, value)
+ self.instance_variable_set("@#{m_to_s}".to_sym, value) if m_to_s.strip.length > 0
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
@@ -165990,6 +172454,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
*app_metadata_retrieval_steps,
+** Processing line: ~ :determine_devcert,~
+- Inside source: true
+*** True Line Result
+ :determine_devcert,
** Processing line: ~~
- Inside source: true
*** True Line Result
@@ -166102,6 +172570,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
*app_metadata_retrieval_steps,
+** Processing line: ~ :determine_prodcert,~
+- Inside source: true
+*** True Line Result
+ :determine_prodcert,
** Processing line: ~~
- Inside source: true
*** True Line Result
@@ -166878,6 +173350,22 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
appname=
+** Processing line: ~ # devcert is the certificate to use for development/deploying to your local device~
+- Inside source: true
+*** True Line Result
+ # devcert is the certificate to use for development/deploying to your local device
+** Processing line: ~ devcert=~
+- Inside source: true
+*** True Line Result
+ devcert=
+** Processing line: ~ # prodcert is the certificate to use for distribution to the app store~
+- Inside source: true
+*** True Line Result
+ # prodcert is the certificate to use for distribution to the app store
+** Processing line: ~ prodcert=~
+- Inside source: true
+*** True Line Result
+ prodcert=
** Processing line: ~ S~
- Inside source: true
*** True Line Result
@@ -167018,10 +173506,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
"* mygame/metadata/ios_metadata.txt needs to be filled out.",
-** Processing line: ~ "You need to update metadata/ios_metadata.txt with a valid teamid, appname, and appid.",~
+** Processing line: ~ "You need to update metadata/ios_metadata.txt with a valid teamid, appname, appid, devcert, and prodcert.",~
- Inside source: true
*** True Line Result
- "You need to update metadata/ios_metadata.txt with a valid teamid, appname, and appid.",
+ "You need to update metadata/ios_metadata.txt with a valid teamid, appname, appid, devcert, and prodcert.",
** Processing line: ~ "Instructions for where the values should come from are within metadata/ios_metadata.txt."~
- Inside source: true
*** True Line Result
@@ -167178,10 +173666,58 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
raise_ios_metadata_required if @app_id.strip.length == 0
-** Processing line: ~ log_info "App Identifier is set to : #{@app_id}"~
+** Processing line: ~ log_info "App Identifier is set to: #{@app_id}"~
+- Inside source: true
+*** True Line Result
+ log_info "App Identifier is set to: #{@app_id}"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def determine_devcert~
+- Inside source: true
+*** True Line Result
+ def determine_devcert
+** Processing line: ~ @certificate_name = ios_metadata.devcert~
+- Inside source: true
+*** True Line Result
+ @certificate_name = ios_metadata.devcert
+** Processing line: ~ raise_ios_metadata_required if @certificate_name.strip.length == 0~
+- Inside source: true
+*** True Line Result
+ raise_ios_metadata_required if @certificate_name.strip.length == 0
+** Processing line: ~ log_info "Dev Certificate is set to: #{@certificate_name}"~
+- Inside source: true
+*** True Line Result
+ log_info "Dev Certificate is set to: #{@certificate_name}"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def determine_prodcert~
+- Inside source: true
+*** True Line Result
+ def determine_prodcert
+** Processing line: ~ @certificate_name = ios_metadata.prodcert~
+- Inside source: true
+*** True Line Result
+ @certificate_name = ios_metadata.prodcert
+** Processing line: ~ raise_ios_metadata_required if @certificate_name.strip.length == 0~
+- Inside source: true
+*** True Line Result
+ raise_ios_metadata_required if @certificate_name.strip.length == 0
+** Processing line: ~ log_info "Production (Distribution) Certificate is set to: #{@certificate_name}"~
- Inside source: true
*** True Line Result
- log_info "App Identifier is set to : #{@app_id}"
+ log_info "Production (Distribution) Certificate is set to: #{@certificate_name}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -167266,30 +173802,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def stage_app~
-- Inside source: true
-*** True Line Result
- def stage_app
-** Processing line: ~ log_info "Staging."~
-- Inside source: true
-*** True Line Result
- log_info "Staging."
-** Processing line: ~ sh "mkdir -p #{tmp_directory}"~
-- Inside source: true
-*** True Line Result
- sh "mkdir -p #{tmp_directory}"
-** Processing line: ~ sh "cp -R #{relative_path}/dragonruby-ios.app \"#{tmp_directory}/#{@app_name}.app\""~
-- Inside source: true
-*** True Line Result
- sh "cp -R #{relative_path}/dragonruby-ios.app \"#{tmp_directory}/#{@app_name}.app\""
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ def set_app_id id~
- Inside source: true
*** True Line Result
@@ -167410,118 +173922,34 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ if !cli_app_exist?(security_cli_app)~
-- Inside source: true
-*** True Line Result
- if !cli_app_exist?(security_cli_app)
-** Processing line: ~ raise WizardException.new(~
-- Inside source: true
-*** True Line Result
- raise WizardException.new(
-** Processing line: ~ "* It doesn't look like you have #{security_cli_app}.",~
-- Inside source: true
-*** True Line Result
- "* It doesn't look like you have #{security_cli_app}.",
-** Processing line: ~ "** 1. Open Disk Utility and run First Aid.",~
-- Inside source: true
-*** True Line Result
- "** 1. Open Disk Utility and run First Aid.",
-** Processing line: ~ { w: 700, h: 148, path: get_reserved_sprite("disk-utility.png") },~
-- Inside source: true
-*** True Line Result
- { w: 700, h: 148, path: get_reserved_sprite("disk-utility.png") },
-** Processing line: ~ )~
-- Inside source: true
-*** True Line Result
- )
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ if valid_certs.length == 0~
-- Inside source: true
-*** True Line Result
- if valid_certs.length == 0
-** Processing line: ~ raise WizardException.new(~
-- Inside source: true
-*** True Line Result
- raise WizardException.new(
-** Processing line: ~ "* It doesn't look like you have any valid certs installed.",~
-- Inside source: true
-*** True Line Result
- "* It doesn't look like you have any valid certs installed.",
-** Processing line: ~ "** 1. Open Xcode.",~
-- Inside source: true
-*** True Line Result
- "** 1. Open Xcode.",
-** Processing line: ~ "** 2. Log into your developer account. Xcode -> Preferences -> Accounts.",~
-- Inside source: true
-*** True Line Result
- "** 2. Log into your developer account. Xcode -> Preferences -> Accounts.",
-** Processing line: ~ { w: 700, h: 98, path: get_reserved_sprite("login-xcode.png") },~
-- Inside source: true
-*** True Line Result
- { w: 700, h: 98, path: get_reserved_sprite("login-xcode.png") },
-** Processing line: ~ "** 3. After loggin in, select Manage Certificates...",~
-- Inside source: true
-*** True Line Result
- "** 3. After loggin in, select Manage Certificates...",
-** Processing line: ~ { w: 700, h: 115, path: get_reserved_sprite("manage-certificates.png") },~
-- Inside source: true
-*** True Line Result
- { w: 700, h: 115, path: get_reserved_sprite("manage-certificates.png") },
-** Processing line: ~ "** 4. Add a certificate for Apple Development.",~
-- Inside source: true
-*** True Line Result
- "** 4. Add a certificate for Apple Development.",
-** Processing line: ~ { w: 700, h: 217, path: get_reserved_sprite("add-cert.png") },~
-- Inside source: true
-*** True Line Result
- { w: 700, h: 217, path: get_reserved_sprite("add-cert.png") },
-** Processing line: ~ )~
-- Inside source: true
-*** True Line Result
- )
-** Processing line: ~ raise "You do not have any Apple development certs on this computer."~
-- Inside source: true
-*** True Line Result
- raise "You do not have any Apple development certs on this computer."
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ if @production_build~
- Inside source: true
*** True Line Result
if @production_build
-** Processing line: ~ @certificate_name = valid_certs.find_all { |f| f[:name].include? "Distribution" }.first[:name]~
+** Processing line: ~ @certificate_name = ios_metadata[:prodcert]~
- Inside source: true
*** True Line Result
- @certificate_name = valid_certs.find_all { |f| f[:name].include? "Distribution" }.first[:name]
+ @certificate_name = ios_metadata[:prodcert]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
-** Processing line: ~ @certificate_name = valid_certs.find_all { |f| f[:name].include? "Development" }.first[:name]~
+** Processing line: ~ @certificate_name = ios_metadata[:devcert]~
- Inside source: true
*** True Line Result
- @certificate_name = valid_certs.find_all { |f| f[:name].include? "Development" }.first[:name]
+ @certificate_name = ios_metadata[:devcert]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
-** Processing line: ~ log_info "I will be using Certificate: '#{@certificate_name}'."~
+** Processing line: ~~
- Inside source: true
*** True Line Result
- log_info "I will be using Certificate: '#{@certificate_name}'."
+
+** Processing line: ~ log_info "I will be using certificate: '#{@certificate_name}'."~
+- Inside source: true
+*** True Line Result
+ log_info "I will be using certificate: '#{@certificate_name}'."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -167578,78 +174006,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def valid_certs~
-- Inside source: true
-*** True Line Result
- def valid_certs
-** Processing line: ~ certs = sh("#{security_cli_app} -q find-identity -p codesigning -v").each_line.map do |l|~
-- Inside source: true
-*** True Line Result
- certs = sh("#{security_cli_app} -q find-identity -p codesigning -v").each_line.map do |l|
-** Processing line: ~ if l.include?(")") && !l.include?("Developer ID") && (l.include?("Development") || l.include?("Distribution"))~
-- Inside source: true
-*** True Line Result
- if l.include?(")") && !l.include?("Developer ID") && (l.include?("Development") || l.include?("Distribution"))
-** Processing line: ~ l.strip~
-- Inside source: true
-*** True Line Result
- l.strip
-** Processing line: ~ else~
-- Inside source: true
-*** True Line Result
- else
-** Processing line: ~ nil~
-- Inside source: true
-*** True Line Result
- nil
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ end.reject_nil.map do |l|~
-- Inside source: true
-*** True Line Result
- end.reject_nil.map do |l|
-** Processing line: ~ number, id, name = l.split(' ', 3)~
-- Inside source: true
-*** True Line Result
- number, id, name = l.split(' ', 3)
-** Processing line: ~ name = name.gsub("\"", "") if name~
-- Inside source: true
-*** True Line Result
- name = name.gsub("\"", "") if name
-** Processing line: ~ {~
-- Inside source: true
-*** True Line Result
- {
-** Processing line: ~ number: 1,~
-- Inside source: true
-*** True Line Result
- number: 1,
-** Processing line: ~ id: id,~
-- Inside source: true
-*** True Line Result
- id: id,
-** Processing line: ~ name: name~
-- Inside source: true
-*** True Line Result
- name: name
-** Processing line: ~ }~
-- Inside source: true
-*** True Line Result
- }
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ def connected_devices~
- Inside source: true
*** True Line Result
@@ -169766,6 +176122,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
def stage_app
+** Processing line: ~ log_info "Staging."~
+- Inside source: true
+*** True Line Result
+ log_info "Staging."
+** Processing line: ~ sh "mkdir -p #{tmp_directory}"~
+- Inside source: true
+*** True Line Result
+ sh "mkdir -p #{tmp_directory}"
+** Processing line: ~ sh "cp -R #{relative_path}/dragonruby-ios.app \"#{tmp_directory}/#{@app_name}.app\""~
+- Inside source: true
+*** True Line Result
+ sh "cp -R #{relative_path}/dragonruby-ios.app \"#{tmp_directory}/#{@app_name}.app\""
** Processing line: ~ sh %Q[cp -r "#{root_folder}/app/" "#{app_path}/app/"]~
- Inside source: true
*** True Line Result
@@ -177134,86 +183502,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def >= other~
-- Inside source: true
-*** True Line Result
- def >= other
-** Processing line: ~ return false if !other~
-- Inside source: true
-*** True Line Result
- return false if !other
-** Processing line: ~ return gte other~
-- Inside source: true
-*** True Line Result
- return gte other
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ def > other~
-- Inside source: true
-*** True Line Result
- def > other
-** Processing line: ~ return false if !other~
-- Inside source: true
-*** True Line Result
- return false if !other
-** Processing line: ~ return gt other~
-- Inside source: true
-*** True Line Result
- return gt other
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ def <= other~
-- Inside source: true
-*** True Line Result
- def <= other
-** Processing line: ~ return false if !other~
-- Inside source: true
-*** True Line Result
- return false if !other
-** Processing line: ~ return lte other~
-- Inside source: true
-*** True Line Result
- return lte other
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ def < other~
-- Inside source: true
-*** True Line Result
- def < other
-** Processing line: ~ return false if !other~
-- Inside source: true
-*** True Line Result
- return false if !other
-** Processing line: ~ return gt other~
-- Inside source: true
-*** True Line Result
- return gt other
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
@@ -177554,118 +183842,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def - other~
-- Inside source: true
-*** True Line Result
- def - other
-** Processing line: ~ return self unless other~
-- Inside source: true
-*** True Line Result
- return self unless other
-** Processing line: ~ self - other~
-- Inside source: true
-*** True Line Result
- self - other
-** Processing line: ~ rescue Exception => e~
-- Inside source: true
-*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :-, e~
-- Inside source: true
-*** True Line Result
- __raise_arithmetic_exception__ other, :-, e
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ def + other~
-- Inside source: true
-*** True Line Result
- def + other
-** Processing line: ~ return self unless other~
-- Inside source: true
-*** True Line Result
- return self unless other
-** Processing line: ~ self + other~
-- Inside source: true
-*** True Line Result
- self + other
-** Processing line: ~ rescue Exception => e~
-- Inside source: true
-*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :+, e~
-- Inside source: true
-*** True Line Result
- __raise_arithmetic_exception__ other, :+, e
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ def * other~
-- Inside source: true
-*** True Line Result
- def * other
-** Processing line: ~ return self unless other~
-- Inside source: true
-*** True Line Result
- return self unless other
-** Processing line: ~ self * other~
-- Inside source: true
-*** True Line Result
- self * other
-** Processing line: ~ rescue Exception => e~
-- Inside source: true
-*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :*, e~
-- Inside source: true
-*** True Line Result
- __raise_arithmetic_exception__ other, :*, e
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ def / other~
-- Inside source: true
-*** True Line Result
- def / other
-** Processing line: ~ return self unless other~
-- Inside source: true
-*** True Line Result
- return self unless other
-** Processing line: ~ self / other~
-- Inside source: true
-*** True Line Result
- self / other
-** Processing line: ~ rescue Exception => e~
-- Inside source: true
-*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :/, e~
-- Inside source: true
-*** True Line Result
- __raise_arithmetic_exception__ other, :/, e
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ def serialize~
- Inside source: true
*** True Line Result
@@ -177882,118 +184058,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def + other~
-- Inside source: true
-*** True Line Result
- def + other
-** Processing line: ~ return self unless other~
-- Inside source: true
-*** True Line Result
- return self unless other
-** Processing line: ~ self + other~
-- Inside source: true
-*** True Line Result
- self + other
-** Processing line: ~ rescue Exception => e~
-- Inside source: true
-*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :+, e~
-- Inside source: true
-*** True Line Result
- __raise_arithmetic_exception__ other, :+, e
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ def * other~
-- Inside source: true
-*** True Line Result
- def * other
-** Processing line: ~ return self unless other~
-- Inside source: true
-*** True Line Result
- return self unless other
-** Processing line: ~ self * other~
-- Inside source: true
-*** True Line Result
- self * other
-** Processing line: ~ rescue Exception => e~
-- Inside source: true
-*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :*, e~
-- Inside source: true
-*** True Line Result
- __raise_arithmetic_exception__ other, :*, e
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ def / other~
-- Inside source: true
-*** True Line Result
- def / other
-** Processing line: ~ return self unless other~
-- Inside source: true
-*** True Line Result
- return self unless other
-** Processing line: ~ self / other~
-- Inside source: true
-*** True Line Result
- self / other
-** Processing line: ~ rescue Exception => e~
-- Inside source: true
-*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :/, e~
-- Inside source: true
-*** True Line Result
- __raise_arithmetic_exception__ other, :/, e
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
-** Processing line: ~ def - other~
-- Inside source: true
-*** True Line Result
- def - other
-** Processing line: ~ return self unless other~
-- Inside source: true
-*** True Line Result
- return self unless other
-** Processing line: ~ self - other~
-- Inside source: true
-*** True Line Result
- self - other
-** Processing line: ~ rescue Exception => e~
-- Inside source: true
-*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :-, e~
-- Inside source: true
-*** True Line Result
- __raise_arithmetic_exception__ other, :-, e
-** Processing line: ~ end~
-- Inside source: true
-*** True Line Result
- end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ # Returns `-1` if the number is less than `0`. `+1` if the number~
- Inside source: true
*** True Line Result
@@ -178214,26 +184278,42 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def - other~
+** Processing line: ~ def serialize~
- Inside source: true
*** True Line Result
- def - other
-** Processing line: ~ return self unless other~
+ def serialize
+** Processing line: ~ self~
- Inside source: true
*** True Line Result
- return self unless other
-** Processing line: ~ super~
+ self
+** Processing line: ~ end~
- Inside source: true
*** True Line Result
- super
-** Processing line: ~ rescue Exception => e~
+ end
+** Processing line: ~~
- Inside source: true
*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :-, e~
+
+** Processing line: ~ # @gtk~
+- Inside source: true
+*** True Line Result
+ # @gtk
+** Processing line: ~ def sign~
- Inside source: true
*** True Line Result
- __raise_arithmetic_exception__ other, :-, e
+ def sign
+** Processing line: ~ return -1 if self < 0~
+- Inside source: true
+*** True Line Result
+ return -1 if self < 0
+** Processing line: ~ return 1 if self > 0~
+- Inside source: true
+*** True Line Result
+ return 1 if self > 0
+** Processing line: ~ return 0~
+- Inside source: true
+*** True Line Result
+ return 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -178242,26 +184322,26 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def + other~
+** Processing line: ~ def replace_infinity scalar~
- Inside source: true
*** True Line Result
- def + other
-** Processing line: ~ return self unless other~
+ def replace_infinity scalar
+** Processing line: ~ return self if !scalar~
- Inside source: true
*** True Line Result
- return self unless other
-** Processing line: ~ super~
+ return self if !scalar
+** Processing line: ~ return self unless self.infinite?~
- Inside source: true
*** True Line Result
- super
-** Processing line: ~ rescue Exception => e~
+ return self unless self.infinite?
+** Processing line: ~ return -scalar if self < 0~
- Inside source: true
*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :+, e~
+ return -scalar if self < 0
+** Processing line: ~ return scalar if self > 0~
- Inside source: true
*** True Line Result
- __raise_arithmetic_exception__ other, :+, e
+ return scalar if self > 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -178270,54 +184350,78 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def * other~
+** Processing line: ~ def to_sf~
- Inside source: true
*** True Line Result
- def * other
-** Processing line: ~ return self unless other~
+ def to_sf
+** Processing line: ~ "%.2f" % self~
- Inside source: true
*** True Line Result
- return self unless other
-** Processing line: ~ super~
+ "%.2f" % self
+** Processing line: ~ end~
- Inside source: true
*** True Line Result
- super
-** Processing line: ~ rescue Exception => e~
+ end
+** Processing line: ~~
- Inside source: true
*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :*, e~
+
+** Processing line: ~ def ifloor int~
+- Inside source: true
+*** True Line Result
+ def ifloor int
+** Processing line: ~ (self.idiv int.to_i) * int.to_i~
- Inside source: true
*** True Line Result
- __raise_arithmetic_exception__ other, :*, e
+ (self.idiv int.to_i) * int.to_i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ def / other~
+** Processing line: ~ class Integer~
- Inside source: true
*** True Line Result
- def / other
-** Processing line: ~ return self unless other~
+ class Integer
+** Processing line: ~ alias_method :__original_round__, :round unless Integer.instance_methods.include? :__original_round__~
- Inside source: true
*** True Line Result
- return self unless other
-** Processing line: ~ super~
+ alias_method :__original_round__, :round unless Integer.instance_methods.include? :__original_round__
+** Processing line: ~ alias_method :__original_add__, :+ unless Integer.instance_methods.include? :__original_add__~
- Inside source: true
*** True Line Result
- super
-** Processing line: ~ rescue Exception => e~
+ alias_method :__original_add__, :+ unless Integer.instance_methods.include? :__original_add__
+** Processing line: ~ alias_method :__original_subtract__, :- unless Integer.instance_methods.include? :__original_subtract__~
- Inside source: true
*** True Line Result
- rescue Exception => e
-** Processing line: ~ __raise_arithmetic_exception__ other, :/, e~
+ alias_method :__original_subtract__, :- unless Integer.instance_methods.include? :__original_subtract__
+** Processing line: ~ alias_method :__original_multiply__, :* unless Integer.instance_methods.include? :__original_multiply__~
+- Inside source: true
+*** True Line Result
+ alias_method :__original_multiply__, :* unless Integer.instance_methods.include? :__original_multiply__
+** Processing line: ~ alias_method :__original_divide__, :- unless Integer.instance_methods.include? :__original_divide__~
+- Inside source: true
+*** True Line Result
+ alias_method :__original_divide__, :- unless Integer.instance_methods.include? :__original_divide__
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def round *args~
+- Inside source: true
+*** True Line Result
+ def round *args
+** Processing line: ~ __original_round__~
- Inside source: true
*** True Line Result
- __raise_arithmetic_exception__ other, :/, e
+ __original_round__
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -178326,42 +184430,138 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def serialize~
+** Processing line: ~ def nan?~
- Inside source: true
*** True Line Result
- def serialize
-** Processing line: ~ self~
+ def nan?
+** Processing line: ~ false~
- Inside source: true
*** True Line Result
- self
+ false
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def center other~
+- Inside source: true
+*** True Line Result
+ def center other
+** Processing line: ~ (self - other).abs.fdiv(2)~
+- Inside source: true
+*** True Line Result
+ (self - other).abs.fdiv(2)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
+** Processing line: ~#+end_src~
+- Line was identified as the end of a code block.
+*** True Line Result
+#+end_src
+** Processing line: ~~
+- End of paragraph detected.
+*** True Line Result
+
+** Processing line: ~*** recording.rb~
+- Header detected.
+*** True Line Result
+
+*** True Line Result
+*** recording.rb
+** Processing line: ~#+begin_src ruby~
+- Line was identified as the beginning of a code block.
+*** True Line Result
+
+*** True Line Result
+#+begin_src ruby
+** Processing line: ~ # ./dragon/recording.rb~
+- Inside source: true
+*** True Line Result
+ # ./dragon/recording.rb
+** Processing line: ~ # coding: utf-8~
+- Inside source: true
+*** True Line Result
+ # coding: utf-8
+** Processing line: ~ # Copyright 2019 DragonRuby LLC~
+- Inside source: true
+*** True Line Result
+ # Copyright 2019 DragonRuby LLC
+** Processing line: ~ # MIT License~
+- Inside source: true
+*** True Line Result
+ # MIT License
+** Processing line: ~ # recording.rb has been released under MIT (*only this file*).~
+- Inside source: true
+*** True Line Result
+ # recording.rb has been released under MIT (*only this file*).
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ module GTK~
+- Inside source: true
+*** True Line Result
+ module GTK
+** Processing line: ~ # FIXME: Gross~
+- Inside source: true
+*** True Line Result
+ # FIXME: Gross
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
-** Processing line: ~ def sign~
+** Processing line: ~ class Replay~
- Inside source: true
*** True Line Result
- def sign
-** Processing line: ~ return -1 if self < 0~
+ class Replay
+** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
- return -1 if self < 0
-** Processing line: ~ return 1 if self > 0~
+ # @gtk
+** Processing line: ~ def self.start file_name = nil~
- Inside source: true
*** True Line Result
- return 1 if self > 0
-** Processing line: ~ return 0~
+ def self.start file_name = nil
+** Processing line: ~ $recording.start_replay file_name~
- Inside source: true
*** True Line Result
- return 0
+ $recording.start_replay file_name
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # @gtk~
+- Inside source: true
+*** True Line Result
+ # @gtk
+** Processing line: ~ def self.stop~
+- Inside source: true
+*** True Line Result
+ def self.stop
+** Processing line: ~ $recording.stop_replay~
+- Inside source: true
+*** True Line Result
+ $recording.stop_replay
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -178370,138 +184570,958 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ def replace_infinity scalar~
+** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
- def replace_infinity scalar
-** Processing line: ~ return self if !scalar~
+ # @gtk
+** Processing line: ~ class Recording~
- Inside source: true
*** True Line Result
- return self if !scalar
-** Processing line: ~ return self unless self.infinite?~
+ class Recording
+** Processing line: ~ def initialize runtime~
- Inside source: true
*** True Line Result
- return self unless self.infinite?
-** Processing line: ~ return -scalar if self < 0~
+ def initialize runtime
+** Processing line: ~ @runtime = runtime~
- Inside source: true
*** True Line Result
- return -scalar if self < 0
-** Processing line: ~ return scalar if self > 0~
+ @runtime = runtime
+** Processing line: ~ @tick_count = 0~
- Inside source: true
*** True Line Result
- return scalar if self > 0
-** Processing line: ~ end~
+ @tick_count = 0
+** Processing line: ~ @global_input_order = 1~
- Inside source: true
*** True Line Result
- end
+ @global_input_order = 1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ def to_sf~
+** Processing line: ~ def tick~
- Inside source: true
*** True Line Result
- def to_sf
-** Processing line: ~ "%.2f" % self~
+ def tick
+** Processing line: ~ @tick_count += 1~
- Inside source: true
*** True Line Result
- "%.2f" % self
-** Processing line: ~ end~
+ @tick_count += 1
+** Processing line: ~ end~
- Inside source: true
*** True Line Result
- end
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ def ifloor int~
+** Processing line: ~ def start_recording seed_number = nil~
- Inside source: true
*** True Line Result
- def ifloor int
-** Processing line: ~ (self.idiv int.to_i) * int.to_i~
+ def start_recording seed_number = nil
+** Processing line: ~ if !seed_number~
- Inside source: true
*** True Line Result
- (self.idiv int.to_i) * int.to_i
-** Processing line: ~ end~
+ if !seed_number
+** Processing line: ~ log <<-S~
- Inside source: true
*** True Line Result
- end
-** Processing line: ~ end~
+ log <<-S
+** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
- end
+ * ERROR:
+** Processing line: ~ To start recording, you must provide an integer value to~
+- Inside source: true
+*** True Line Result
+ To start recording, you must provide an integer value to
+** Processing line: ~ seed random number generation.~
+- Inside source: true
+*** True Line Result
+ seed random number generation.
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ $console.set_command "$recording.start SEED_NUMBER"~
+- Inside source: true
+*** True Line Result
+ $console.set_command "$recording.start SEED_NUMBER"
+** Processing line: ~ return~
+- Inside source: true
+*** True Line Result
+ return
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ class Integer~
+** Processing line: ~ if @is_recording~
- Inside source: true
*** True Line Result
- class Integer
-** Processing line: ~ alias_method :__original_round__, :round unless Integer.instance_methods.include? :__original_round__~
+ if @is_recording
+** Processing line: ~ log <<-S~
- Inside source: true
*** True Line Result
- alias_method :__original_round__, :round unless Integer.instance_methods.include? :__original_round__
-** Processing line: ~ alias_method :__original_add__, :+ unless Integer.instance_methods.include? :__original_add__~
+ log <<-S
+** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
- alias_method :__original_add__, :+ unless Integer.instance_methods.include? :__original_add__
-** Processing line: ~ alias_method :__original_subtract__, :- unless Integer.instance_methods.include? :__original_subtract__~
+ * ERROR:
+** Processing line: ~ You are already recording, first cancel (or stop) the current recording.~
- Inside source: true
*** True Line Result
- alias_method :__original_subtract__, :- unless Integer.instance_methods.include? :__original_subtract__
-** Processing line: ~ alias_method :__original_multiply__, :* unless Integer.instance_methods.include? :__original_multiply__~
+ You are already recording, first cancel (or stop) the current recording.
+** Processing line: ~ S~
- Inside source: true
*** True Line Result
- alias_method :__original_multiply__, :* unless Integer.instance_methods.include? :__original_multiply__
-** Processing line: ~ alias_method :__original_divide__, :- unless Integer.instance_methods.include? :__original_divide__~
+ S
+** Processing line: ~ $console.set_command "$recording.cancel"~
- Inside source: true
*** True Line Result
- alias_method :__original_divide__, :- unless Integer.instance_methods.include? :__original_divide__
+ $console.set_command "$recording.cancel"
+** Processing line: ~ return~
+- Inside source: true
+*** True Line Result
+ return
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ def round *args~
+** Processing line: ~ if @is_replaying~
- Inside source: true
*** True Line Result
- def round *args
-** Processing line: ~ __original_round__~
+ if @is_replaying
+** Processing line: ~ log <<-S~
- Inside source: true
*** True Line Result
- __original_round__
-** Processing line: ~ end~
+ log <<-S
+** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
- end
+ * ERROR:
+** Processing line: ~ You are currently replaying a recording, first stop the replay.~
+- Inside source: true
+*** True Line Result
+ You are currently replaying a recording, first stop the replay.
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ return~
+- Inside source: true
+*** True Line Result
+ return
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ def nan?~
+** Processing line: ~ log_info <<-S~
- Inside source: true
*** True Line Result
- def nan?
-** Processing line: ~ false~
+ log_info <<-S
+** Processing line: ~ Recording has begun with RNG seed value set to #{seed_number}.~
- Inside source: true
*** True Line Result
- false
-** Processing line: ~ end~
+ Recording has begun with RNG seed value set to #{seed_number}.
+** Processing line: ~ To stop recording use stop_recording(filename).~
- Inside source: true
*** True Line Result
- end
+ To stop recording use stop_recording(filename).
+** Processing line: ~ The recording will stop without saving a file if a filename is nil.~
+- Inside source: true
+*** True Line Result
+ The recording will stop without saving a file if a filename is nil.
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
** Processing line: ~~
- Inside source: true
*** True Line Result
-** Processing line: ~ def center other~
+** Processing line: ~ $console.set_command "$recording.stop 'replay.txt'"~
- Inside source: true
*** True Line Result
- def center other
-** Processing line: ~ (self - other).abs.fdiv(2)~
+ $console.set_command "$recording.stop 'replay.txt'"
+** Processing line: ~ @runtime.__reset__~
- Inside source: true
*** True Line Result
- (self - other).abs.fdiv(2)
+ @runtime.__reset__
+** Processing line: ~ @seed_number = seed_number~
+- Inside source: true
+*** True Line Result
+ @seed_number = seed_number
+** Processing line: ~ @runtime.set_rng seed_number~
+- Inside source: true
+*** True Line Result
+ @runtime.set_rng seed_number
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ @tick_count = 0~
+- Inside source: true
+*** True Line Result
+ @tick_count = 0
+** Processing line: ~ @global_input_order = 1~
+- Inside source: true
+*** True Line Result
+ @global_input_order = 1
+** Processing line: ~ @is_recording = true~
+- Inside source: true
+*** True Line Result
+ @is_recording = true
+** Processing line: ~ @input_history = []~
+- Inside source: true
+*** True Line Result
+ @input_history = []
+** Processing line: ~ @runtime.notify! "Recording started. When completed, open the console to save it using $recording.stop FILE_NAME (or cancel).", 300~
+- Inside source: true
+*** True Line Result
+ @runtime.notify! "Recording started. When completed, open the console to save it using $recording.stop FILE_NAME (or cancel).", 300
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # @gtk~
+- Inside source: true
+*** True Line Result
+ # @gtk
+** Processing line: ~ def start seed_number = nil~
+- Inside source: true
+*** True Line Result
+ def start seed_number = nil
+** Processing line: ~ start_recording seed_number~
+- Inside source: true
+*** True Line Result
+ start_recording seed_number
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def is_replaying?~
+- Inside source: true
+*** True Line Result
+ def is_replaying?
+** Processing line: ~ @is_replaying~
+- Inside source: true
+*** True Line Result
+ @is_replaying
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def is_recording?~
+- Inside source: true
+*** True Line Result
+ def is_recording?
+** Processing line: ~ @is_recording~
+- Inside source: true
+*** True Line Result
+ @is_recording
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # @gtk~
+- Inside source: true
+*** True Line Result
+ # @gtk
+** Processing line: ~ def stop file_name = nil~
+- Inside source: true
+*** True Line Result
+ def stop file_name = nil
+** Processing line: ~ stop_recording file_name~
+- Inside source: true
+*** True Line Result
+ stop_recording file_name
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ # @gtk~
+- Inside source: true
+*** True Line Result
+ # @gtk
+** Processing line: ~ def cancel~
+- Inside source: true
+*** True Line Result
+ def cancel
+** Processing line: ~ stop_recording_core~
+- Inside source: true
+*** True Line Result
+ stop_recording_core
+** Processing line: ~ @runtime.notify! "Recording cancelled."~
+- Inside source: true
+*** True Line Result
+ @runtime.notify! "Recording cancelled."
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def stop_recording file_name = nil~
+- Inside source: true
+*** True Line Result
+ def stop_recording file_name = nil
+** Processing line: ~ if !file_name~
+- Inside source: true
+*** True Line Result
+ if !file_name
+** Processing line: ~ log <<-S~
+- Inside source: true
+*** True Line Result
+ log <<-S
+** Processing line: ~ * ERROR:~
+- Inside source: true
+*** True Line Result
+ * ERROR:
+** Processing line: ~ To please specify a file name when calling:~
+- Inside source: true
+*** True Line Result
+ To please specify a file name when calling:
+** Processing line: ~ $recording.stop FILE_NAME~
+- Inside source: true
+*** True Line Result
+ $recording.stop FILE_NAME
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ If you do NOT want to save the recording, call:~
+- Inside source: true
+*** True Line Result
+ If you do NOT want to save the recording, call:
+** Processing line: ~ $recording.cancel~
+- Inside source: true
+*** True Line Result
+ $recording.cancel
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ $console.set_command "$recording.stop 'replay.txt'"~
+- Inside source: true
+*** True Line Result
+ $console.set_command "$recording.stop 'replay.txt'"
+** Processing line: ~ return~
+- Inside source: true
+*** True Line Result
+ return
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if !@is_recording~
+- Inside source: true
+*** True Line Result
+ if !@is_recording
+** Processing line: ~ log_info "You are not currently recording. Use start_recording(seed_number) to start recording."~
+- Inside source: true
+*** True Line Result
+ log_info "You are not currently recording. Use start_recording(seed_number) to start recording."
+** Processing line: ~ $console.set_command "$recording.start"~
+- Inside source: true
+*** True Line Result
+ $console.set_command "$recording.start"
+** Processing line: ~ return~
+- Inside source: true
+*** True Line Result
+ return
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if file_name~
+- Inside source: true
+*** True Line Result
+ if file_name
+** Processing line: ~ text = "replay_version 2.0\n"~
+- Inside source: true
+*** True Line Result
+ text = "replay_version 2.0\n"
+** Processing line: ~ text << "stopped_at #{@tick_count}\n"~
+- Inside source: true
+*** True Line Result
+ text << "stopped_at #{@tick_count}\n"
+** Processing line: ~ text << "seed #{@seed_number}\n"~
+- Inside source: true
+*** True Line Result
+ text << "seed #{@seed_number}\n"
+** Processing line: ~ text << "recorded_at #{Time.now.to_s}\n"~
+- Inside source: true
+*** True Line Result
+ text << "recorded_at #{Time.now.to_s}\n"
+** Processing line: ~ @input_history.each do |items|~
+- Inside source: true
+*** True Line Result
+ @input_history.each do |items|
+** Processing line: ~ text << "#{items}\n"~
+- Inside source: true
+*** True Line Result
+ text << "#{items}\n"
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ @runtime.write_file file_name, text~
+- Inside source: true
+*** True Line Result
+ @runtime.write_file file_name, text
+** Processing line: ~ @runtime.write_file 'last_replay.txt', text~
+- Inside source: true
+*** True Line Result
+ @runtime.write_file 'last_replay.txt', text
+** Processing line: ~ log_info "The recording has been saved successfully at #{file_name}. You can use start_replay(\"#{file_name}\") to replay the recording."~
+- Inside source: true
+*** True Line Result
+ log_info "The recording has been saved successfully at #{file_name}. You can use start_replay(\"#{file_name}\") to replay the recording."
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ $console.set_command "$replay.start '#{file_name}'"~
+- Inside source: true
+*** True Line Result
+ $console.set_command "$replay.start '#{file_name}'"
+** Processing line: ~ stop_recording_core~
+- Inside source: true
+*** True Line Result
+ stop_recording_core
+** Processing line: ~ @runtime.notify! "Recording saved to #{file_name}. To replay it: $replay.start \"#{file_name}\"."~
+- Inside source: true
+*** True Line Result
+ @runtime.notify! "Recording saved to #{file_name}. To replay it: $replay.start \"#{file_name}\"."
+** Processing line: ~ log_info "You can run the replay later on startup using: ./dragonruby mygame --replay #{@replay_file_name}"~
+- Inside source: true
+*** True Line Result
+ log_info "You can run the replay later on startup using: ./dragonruby mygame --replay #{@replay_file_name}"
+** Processing line: ~ nil~
+- Inside source: true
+*** True Line Result
+ nil
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def stop_recording_core~
+- Inside source: true
+*** True Line Result
+ def stop_recording_core
+** Processing line: ~ @is_recording = false~
+- Inside source: true
+*** True Line Result
+ @is_recording = false
+** Processing line: ~ @input_history = nil~
+- Inside source: true
+*** True Line Result
+ @input_history = nil
+** Processing line: ~ @last_history = nil~
+- Inside source: true
+*** True Line Result
+ @last_history = nil
+** Processing line: ~ @runtime.__reset__~
+- Inside source: true
+*** True Line Result
+ @runtime.__reset__
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def start_replay file_name = nil~
+- Inside source: true
+*** True Line Result
+ def start_replay file_name = nil
+** Processing line: ~ if !file_name~
+- Inside source: true
+*** True Line Result
+ if !file_name
+** Processing line: ~ log <<-S~
+- Inside source: true
+*** True Line Result
+ log <<-S
+** Processing line: ~ * ERROR:~
+- Inside source: true
+*** True Line Result
+ * ERROR:
+** Processing line: ~ Please provide a file name to $recording.start.~
+- Inside source: true
+*** True Line Result
+ Please provide a file name to $recording.start.
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~ $console.set_command "$replay.start 'replay.txt'"~
+- Inside source: true
+*** True Line Result
+ $console.set_command "$replay.start 'replay.txt'"
+** Processing line: ~ return~
+- Inside source: true
+*** True Line Result
+ return
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ text = @runtime.read_file file_name~
+- Inside source: true
+*** True Line Result
+ text = @runtime.read_file file_name
+** Processing line: ~ return false unless text~
+- Inside source: true
+*** True Line Result
+ return false unless text
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if text.each_line.first.strip != "replay_version 2.0"~
+- Inside source: true
+*** True Line Result
+ if text.each_line.first.strip != "replay_version 2.0"
+** Processing line: ~ raise "The replay file #{file_name} is not compatible with this version of DragonRuby Game Toolkit. Please recreate the replay (sorry)."~
+- Inside source: true
+*** True Line Result
+ raise "The replay file #{file_name} is not compatible with this version of DragonRuby Game Toolkit. Please recreate the replay (sorry)."
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ @replay_file_name = file_name~
+- Inside source: true
+*** True Line Result
+ @replay_file_name = file_name
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ $replay_data = { input_history: { } }~
+- Inside source: true
+*** True Line Result
+ $replay_data = { input_history: { } }
+** Processing line: ~ text.each_line do |l|~
+- Inside source: true
+*** True Line Result
+ text.each_line do |l|
+** Processing line: ~ if l.strip.length == 0~
+- Inside source: true
+*** True Line Result
+ if l.strip.length == 0
+** Processing line: ~ next~
+- Inside source: true
+*** True Line Result
+ next
+** Processing line: ~ elsif l.start_with? 'replay_version'~
+- Inside source: true
+*** True Line Result
+ elsif l.start_with? 'replay_version'
+** Processing line: ~ next~
+- Inside source: true
+*** True Line Result
+ next
+** Processing line: ~ elsif l.start_with? 'seed'~
+- Inside source: true
+*** True Line Result
+ elsif l.start_with? 'seed'
+** Processing line: ~ $replay_data[:seed] = l.split(' ').last.to_i~
+- Inside source: true
+*** True Line Result
+ $replay_data[:seed] = l.split(' ').last.to_i
+** Processing line: ~ elsif l.start_with? 'stopped_at'~
+- Inside source: true
+*** True Line Result
+ elsif l.start_with? 'stopped_at'
+** Processing line: ~ $replay_data[:stopped_at] = l.split(' ').last.to_i~
+- Inside source: true
+*** True Line Result
+ $replay_data[:stopped_at] = l.split(' ').last.to_i
+** Processing line: ~ elsif l.start_with? 'recorded_at'~
+- Inside source: true
+*** True Line Result
+ elsif l.start_with? 'recorded_at'
+** Processing line: ~ $replay_data[:recorded_at] = l.split(' ')[1..-1].join(' ')~
+- Inside source: true
+*** True Line Result
+ $replay_data[:recorded_at] = l.split(' ')[1..-1].join(' ')
+** Processing line: ~ elsif l.start_with? '['~
+- Inside source: true
+*** True Line Result
+ elsif l.start_with? '['
+** Processing line: ~ name, value_1, value_2, value_count, id, tick_count = l.strip.gsub('[', '').gsub(']', '').split(',')~
+- Inside source: true
+*** True Line Result
+ name, value_1, value_2, value_count, id, tick_count = l.strip.gsub('[', '').gsub(']', '').split(',')
+** Processing line: ~ $replay_data[:input_history][tick_count.to_i] ||= []~
+- Inside source: true
+*** True Line Result
+ $replay_data[:input_history][tick_count.to_i] ||= []
+** Processing line: ~ $replay_data[:input_history][tick_count.to_i] << {~
+- Inside source: true
+*** True Line Result
+ $replay_data[:input_history][tick_count.to_i] << {
+** Processing line: ~ id: id.to_i,~
+- Inside source: true
+*** True Line Result
+ id: id.to_i,
+** Processing line: ~ name: name.gsub(':', '').to_sym,~
+- Inside source: true
+*** True Line Result
+ name: name.gsub(':', '').to_sym,
+** Processing line: ~ value_1: value_1.to_f,~
+- Inside source: true
+*** True Line Result
+ value_1: value_1.to_f,
+** Processing line: ~ value_2: value_2.to_f,~
+- Inside source: true
+*** True Line Result
+ value_2: value_2.to_f,
+** Processing line: ~ value_count: value_count.to_i~
+- Inside source: true
+*** True Line Result
+ value_count: value_count.to_i
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ else~
+- Inside source: true
+*** True Line Result
+ else
+** Processing line: ~ raise "Replay data seems corrupt. I don't know how to parse #{l}."~
+- Inside source: true
+*** True Line Result
+ raise "Replay data seems corrupt. I don't know how to parse #{l}."
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ $replay_data[:input_history].keys.each do |key|~
+- Inside source: true
+*** True Line Result
+ $replay_data[:input_history].keys.each do |key|
+** Processing line: ~ $replay_data[:input_history][key] = $replay_data[:input_history][key].sort_by {|input| input[:id]}~
+- Inside source: true
+*** True Line Result
+ $replay_data[:input_history][key] = $replay_data[:input_history][key].sort_by {|input| input[:id]}
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ @runtime.__reset__~
+- Inside source: true
+*** True Line Result
+ @runtime.__reset__
+** Processing line: ~ @runtime.set_rng $replay_data[:seed]~
+- Inside source: true
+*** True Line Result
+ @runtime.set_rng $replay_data[:seed]
+** Processing line: ~ @tick_count = 0~
+- Inside source: true
+*** True Line Result
+ @tick_count = 0
+** Processing line: ~ @is_replaying = true~
+- Inside source: true
+*** True Line Result
+ @is_replaying = true
+** Processing line: ~ log_info "Replay has been started."~
+- Inside source: true
+*** True Line Result
+ log_info "Replay has been started."
+** Processing line: ~ @runtime.notify! "Replay started [#{@replay_file_name}]."~
+- Inside source: true
+*** True Line Result
+ @runtime.notify! "Replay started [#{@replay_file_name}]."
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def stop_replay notification_message = "Replay has been stopped."~
+- Inside source: true
+*** True Line Result
+ def stop_replay notification_message = "Replay has been stopped."
+** Processing line: ~ if !is_replaying?~
+- Inside source: true
+*** True Line Result
+ if !is_replaying?
+** Processing line: ~ log <<-S~
+- Inside source: true
+*** True Line Result
+ log <<-S
+** Processing line: ~ * ERROR:~
+- Inside source: true
+*** True Line Result
+ * ERROR:
+** Processing line: ~ No replay is currently running. Call $replay.start FILE_NAME to start a replay.~
+- Inside source: true
+*** True Line Result
+ No replay is currently running. Call $replay.start FILE_NAME to start a replay.
+** Processing line: ~ S~
+- Inside source: true
+*** True Line Result
+ S
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ $console.set_command "$replay.start 'replay.txt'"~
+- Inside source: true
+*** True Line Result
+ $console.set_command "$replay.start 'replay.txt'"
+** Processing line: ~ return~
+- Inside source: true
+*** True Line Result
+ return
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ log_info notification_message~
+- Inside source: true
+*** True Line Result
+ log_info notification_message
+** Processing line: ~ @is_replaying = false~
+- Inside source: true
+*** True Line Result
+ @is_replaying = false
+** Processing line: ~ $replay_data = nil~
+- Inside source: true
+*** True Line Result
+ $replay_data = nil
+** Processing line: ~ @tick_count = 0~
+- Inside source: true
+*** True Line Result
+ @tick_count = 0
+** Processing line: ~ @global_input_order = 1~
+- Inside source: true
+*** True Line Result
+ @global_input_order = 1
+** Processing line: ~ $console.set_command_silent "$replay.start '#{@replay_file_name}'"~
+- Inside source: true
+*** True Line Result
+ $console.set_command_silent "$replay.start '#{@replay_file_name}'"
+** Processing line: ~ @runtime.__reset__~
+- Inside source: true
+*** True Line Result
+ @runtime.__reset__
+** Processing line: ~ @runtime.notify! notification_message~
+- Inside source: true
+*** True Line Result
+ @runtime.notify! notification_message
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def record_input_history name, value_1, value_2, value_count, clear_cache = false~
+- Inside source: true
+*** True Line Result
+ def record_input_history name, value_1, value_2, value_count, clear_cache = false
+** Processing line: ~ return if @is_replaying~
+- Inside source: true
+*** True Line Result
+ return if @is_replaying
+** Processing line: ~ return unless @is_recording~
+- Inside source: true
+*** True Line Result
+ return unless @is_recording
+** Processing line: ~ @input_history << [name, value_1, value_2, value_count, @global_input_order, @tick_count]~
+- Inside source: true
+*** True Line Result
+ @input_history << [name, value_1, value_2, value_count, @global_input_order, @tick_count]
+** Processing line: ~ @global_input_order += 1~
+- Inside source: true
+*** True Line Result
+ @global_input_order += 1
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ def stage_replay_values~
+- Inside source: true
+*** True Line Result
+ def stage_replay_values
+** Processing line: ~ return unless @is_replaying~
+- Inside source: true
+*** True Line Result
+ return unless @is_replaying
+** Processing line: ~ return unless $replay_data~
+- Inside source: true
+*** True Line Result
+ return unless $replay_data
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if $replay_data[:stopped_at] <= @tick_count~
+- Inside source: true
+*** True Line Result
+ if $replay_data[:stopped_at] <= @tick_count
+** Processing line: ~ stop_replay "Replay completed [#{@replay_file_name}]. To rerun, bring up the Console and press enter."~
+- Inside source: true
+*** True Line Result
+ stop_replay "Replay completed [#{@replay_file_name}]. To rerun, bring up the Console and press enter."
+** Processing line: ~ return~
+- Inside source: true
+*** True Line Result
+ return
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ inputs_this_tick = $replay_data[:input_history][@tick_count]~
+- Inside source: true
+*** True Line Result
+ inputs_this_tick = $replay_data[:input_history][@tick_count]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ if @tick_count.zmod? 60~
+- Inside source: true
+*** True Line Result
+ if @tick_count.zmod? 60
+** Processing line: ~ log_info "Replay ends in #{($replay_data[:stopped_at] - @tick_count).idiv 60} second(s)."~
+- Inside source: true
+*** True Line Result
+ log_info "Replay ends in #{($replay_data[:stopped_at] - @tick_count).idiv 60} second(s)."
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ return unless inputs_this_tick~
+- Inside source: true
+*** True Line Result
+ return unless inputs_this_tick
+** Processing line: ~ inputs_this_tick.each do |v|~
+- Inside source: true
+*** True Line Result
+ inputs_this_tick.each do |v|
+** Processing line: ~ args = []~
+- Inside source: true
+*** True Line Result
+ args = []
+** Processing line: ~ args << v[:value_1] if v[:value_count] >= 1~
+- Inside source: true
+*** True Line Result
+ args << v[:value_1] if v[:value_count] >= 1
+** Processing line: ~ args << v[:value_2] if v[:value_count] >= 2~
+- Inside source: true
+*** True Line Result
+ args << v[:value_2] if v[:value_count] >= 2
+** Processing line: ~ args << :replay~
+- Inside source: true
+*** True Line Result
+ args << :replay
+** Processing line: ~ $gtk.send v[:name], *args~
+- Inside source: true
+*** True Line Result
+ $gtk.send v[:name], *args
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
+** Processing line: ~ end~
+- Inside source: true
+*** True Line Result
+ end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -180018,10 +187038,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
S
-** Processing line: ~ time_start = Time.now~
-- Inside source: true
-*** True Line Result
- time_start = Time.now
** Processing line: ~ idx = 0~
- Inside source: true
*** True Line Result
@@ -180030,6 +187046,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
r = nil
+** Processing line: ~ time_start = Time.now~
+- Inside source: true
+*** True Line Result
+ time_start = Time.now
** Processing line: ~ while idx < iterations~
- Inside source: true
*** True Line Result
@@ -180046,10 +187066,6 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
end
-** Processing line: ~~
-- Inside source: true
-*** True Line Result
-
** Processing line: ~ result = (Time.now - time_start).round 3~
- Inside source: true
*** True Line Result
@@ -180550,10 +187566,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
-** Processing line: ~ if !$gtk.production~
+** Processing line: ~ if !self.production~
- Inside source: true
*** True Line Result
- if !$gtk.production
+ if !self.production
** Processing line: ~ fn.each_send pass.debug, self, :draw_primitive~
- Inside source: true
*** True Line Result
@@ -180618,6 +187634,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
else
+** Processing line: ~ s = s.as_hash if s.is_a? OpenEntity~
+- Inside source: true
+*** True Line Result
+ s = s.as_hash if s.is_a? OpenEntity
** Processing line: ~ @ffi_draw.draw_solid_2 s.x, s.y, s.w, s.h,~
- Inside source: true
*** True Line Result
@@ -180670,6 +187690,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
else
+** Processing line: ~ s = s.as_hash if s.is_a? OpenEntity~
+- Inside source: true
+*** True Line Result
+ s = s.as_hash if s.is_a? OpenEntity
** Processing line: ~ @ffi_draw.draw_sprite_4 s.x, s.y, s.w, s.h,~
- Inside source: true
*** True Line Result
@@ -180746,6 +187770,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
else
+** Processing line: ~ s = s.as_hash if s.is_a? OpenEntity~
+- Inside source: true
+*** True Line Result
+ s = s.as_hash if s.is_a? OpenEntity
** Processing line: ~ @ffi_draw.draw_screenshot (s.path || '').to_s,~
- Inside source: true
*** True Line Result
@@ -180818,6 +187846,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
else
+** Processing line: ~ l = l.as_hash if l.is_a? OpenEntity~
+- Inside source: true
+*** True Line Result
+ l = l.as_hash if l.is_a? OpenEntity
** Processing line: ~ @ffi_draw.draw_label_3 l.x, l.y,~
- Inside source: true
*** True Line Result
@@ -180886,6 +187918,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
else
+** Processing line: ~ l = l.as_hash if l.is_a? OpenEntity~
+- Inside source: true
+*** True Line Result
+ l = l.as_hash if l.is_a? OpenEntity
** Processing line: ~ if l.x2~
- Inside source: true
*** True Line Result
@@ -180986,6 +188022,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
else
+** Processing line: ~ s = s.as_hash if s.is_a? OpenEntity~
+- Inside source: true
+*** True Line Result
+ s = s.as_hash if s.is_a? OpenEntity
** Processing line: ~ @ffi_draw.draw_border_2 s.x, s.y, s.w, s.h,~
- Inside source: true
*** True Line Result
@@ -181258,10 +188298,10 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
@last_framerate = current_framerate
-** Processing line: ~ if [email protected]?~
+** Processing line: ~ if [email protected]? && [email protected]_replaying?~
- Inside source: true
*** True Line Result
** Processing line: ~ log framerate_warning_message~
- Inside source: true
*** True Line Result
@@ -184914,18 +191954,18 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
if (os.first.is_a? Numeric)
-** Processing line: ~ sld! *os~
+** Processing line: ~ sld!(*os)~
- Inside source: true
*** True Line Result
- sld! *os
+ sld!(*os)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
-** Processing line: ~ os.each { |o| sld! *o }~
+** Processing line: ~ os.each { |o| sld!(*o) }~
- Inside source: true
*** True Line Result
- os.each { |o| sld! *o }
+ os.each { |o| sld!(*o) }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
@@ -185114,6 +192154,106 @@ Follows is a source code listing for all files that have been open sourced. This
- Inside source: true
*** True Line Result
+** Processing line: ~ =begin~
+- Inside source: true
+*** True Line Result
+ =begin
+** Processing line: ~ wht = [255] * 3~
+- Inside source: true
+*** True Line Result
+ wht = [255] * 3
+** Processing line: ~ red = [255, 0, 0]~
+- Inside source: true
+*** True Line Result
+ red = [255, 0, 0]
+** Processing line: ~ blu = [0, 130, 255]~
+- Inside source: true
+*** True Line Result
+ blu = [0, 130, 255]
+** Processing line: ~ purp = [150, 80, 255]~
+- Inside source: true
+*** True Line Result
+ purp = [150, 80, 255]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ TICK {~
+- Inside source: true
+*** True Line Result
+ TICK {
+** Processing line: ~ bg! 0~
+- Inside source: true
+*** True Line Result
+ bg! 0
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ slds << [0, 0, 3, 3, 0, 255, 0, 255]~
+- Inside source: true
+*** True Line Result
+ slds << [0, 0, 3, 3, 0, 255, 0, 255]
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ sld! 10, 10~
+- Inside source: true
+*** True Line Result
+ sld! 10, 10
+** Processing line: ~ sld! 20, 20, 3, 2~
+- Inside source: true
+*** True Line Result
+ sld! 20, 20, 3, 2
+** Processing line: ~ sld! 30, 30, 2, 2, red~
+- Inside source: true
+*** True Line Result
+ sld! 30, 30, 2, 2, red
+** Processing line: ~ sld! 35, 35, blu~
+- Inside source: true
+*** True Line Result
+ sld! 35, 35, blu
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ slds! 40, 40~
+- Inside source: true
+*** True Line Result
+ slds! 40, 40
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
+** Processing line: ~ slds! [50, 50],~
+- Inside source: true
+*** True Line Result
+ slds! [50, 50],
+** Processing line: ~ [60, 60, purp],~
+- Inside source: true
+*** True Line Result
+ [60, 60, purp],
+** Processing line: ~ [70, 70, 10, 10, wht],~
+- Inside source: true
+*** True Line Result
+ [70, 70, 10, 10, wht],
+** Processing line: ~ [80, 80, 4, 4, 255, 0, 255]~
+- Inside source: true
+*** True Line Result
+ [80, 80, 4, 4, 255, 0, 255]
+** Processing line: ~ }~
+- Inside source: true
+*** True Line Result
+ }
+** Processing line: ~ =end~
+- Inside source: true
+*** True Line Result
+ =end
+** Processing line: ~~
+- Inside source: true
+*** True Line Result
+
** Processing line: ~#+end_src~
- Line was identified as the end of a code block.
*** True Line Result
@@ -192219,6 +199359,28 @@ Follows is a source code listing for all files that have been open sourced. This
- Formatting line: ~Hides the mouse cursor.~
- Line's tilde count is: 0
- Line contains link marker: false
+** Processing line: ~*** ~.set_cursor path, dx, dy~~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~~.set_cursor path, dx, dy~~
+- Line's tilde count is: 2
+- Line contains link marker: false
+- CODE detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~~.set_cursor path, dx, dy~~
+- Line's tilde count is: 2
+- Line contains link marker: false
+- CODE detected.
+** Processing line: ~Sets the system cursor to a sprite ~path~ with an offset of ~dx~ and ~dy~.~
+- P detected.
+- Determining if line is a header.
+- Line does not appear to be a header.
+- Formatting line: ~Sets the system cursor to a sprite ~path~ with an offset of ~dx~ and ~dy~.~
+- Line's tilde count is: 6
+- Line contains link marker: false
+- CODE detected.
** Processing line: ~*** ~.cursor_shown?~~
- H3 detected.
- Determining if line is a header.
@@ -192397,6 +199559,50 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
+** Processing line: ~* DOCS: ~GTK::Runtime#benchmark~~
+- H1 detected.
+- Determining if line is a header.
+- Line contains ~* ~... gsub-ing empty string
+- Formatting line: ~DOCS: ~GTK::Runtime#benchmark~~
+- Line's tilde count is: 2
+- Line contains link marker: false
+- CODE detected.
+** Processing line: ~You can use this function to compare the relative performance of methods.~
+- P detected.
+- Determining if line is a header.
+- Line does not appear to be a header.
+- Formatting line: ~You can use this function to compare the relative performance of methods.~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ def tick args~
+** Processing line: ~ # press r to run benchmark~
+** Processing line: ~ if args.inputs.keyboard.key_down.r~
+** Processing line: ~ args.gtk.console.show~
+** Processing line: ~ args.gtk.benchmark iterations: 1000, # number of iterations~
+** Processing line: ~ # label for experiment~
+** Processing line: ~ using_numeric_map: -> () {~
+** Processing line: ~ # experiment body~
+** Processing line: ~ v = 100.map do |i|~
+** Processing line: ~ i * 100~
+** Processing line: ~ end~
+** Processing line: ~ },~
+** Processing line: ~ # label for experiment~
+** Processing line: ~ using_numeric_times: -> () {~
+** Processing line: ~ # experiment body~
+** Processing line: ~ v = []~
+** Processing line: ~ 100.times do |i|~
+** Processing line: ~ v << i * 100~
+** Processing line: ~ end~
+** Processing line: ~ }~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
** Processing line: ~* DOCS: ~Array~~
- H1 detected.
- Determining if line is a header.
@@ -196288,7 +203494,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ # Use args.inputs.mouse.click.created_at~
** Processing line: ~~
** Processing line: ~ # To see how many frames its been since the click occurred~
-** Processing line: ~ # Use args.inputs.mouse.click.creat_at_elapsed~
+** Processing line: ~ # Use args.inputs.mouse.click.created_at_elapsed~
** Processing line: ~~
** Processing line: ~ # Saving the click in args.state can be quite useful~
** Processing line: ~~
@@ -199139,17 +206345,17 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_player_dx~
-** Processing line: ~ player.y += player.dy~
-** Processing line: ~ player.dy += state.gravity~
-** Processing line: ~ player.dy += player.dy * state.drag ** 2 * -1~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def calc_player_dy~
** Processing line: ~ player.dx = player.dx.clamp(-5, 5)~
** Processing line: ~ player.dx *= 0.9~
** Processing line: ~ player.x += player.dx~
** Processing line: ~ end~
** Processing line: ~~
+** Processing line: ~ def calc_player_dy~
+** Processing line: ~ player.y += player.dy~
+** Processing line: ~ player.dy += state.gravity~
+** Processing line: ~ player.dy += player.dy * state.drag ** 2 * -1~
+** Processing line: ~ end~
+** Processing line: ~~
** Processing line: ~ def reset_player~
** Processing line: ~ player.x = 100~
** Processing line: ~ player.y = 720~
@@ -199308,8 +206514,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ input~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ # Sets default values~
-** Processing line: ~ def defaults~
+** Processing line: ~ def init_game~
** Processing line: ~ s.platforms ||= [ # initializes platforms collection with two platforms using hashes~
** Processing line: ~ new_platform(x: 0, y: 0, w: 700, h: 32, dx: 1, speed: 0, rect: nil),~
** Processing line: ~ new_platform(x: 0, y: 300, w: 700, h: 32, dx: 1, speed: 0, rect: nil), # 300 pixels higher~
@@ -199332,6 +206537,11 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ s.camera ||= { y: -100 } # shows view on screen (as the player moves upward, the camera does too)~
** Processing line: ~ end~
** Processing line: ~~
+** Processing line: ~ # Sets default values~
+** Processing line: ~ def defaults~
+** Processing line: ~ init_game~
+** Processing line: ~ end~
+** Processing line: ~~
** Processing line: ~ # Outputs objects onto the screen~
** Processing line: ~ def render~
** Processing line: ~ outputs.solids << s.platforms.map do |p| # outputs platforms onto screen~
@@ -199419,7 +206629,9 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ rect: nil)~
** Processing line: ~ end~
** Processing line: ~ else~
+** Processing line: ~ # game over~
** Processing line: ~ s.as_hash.clear # otherwise clear the hash (no new platform is necessary)~
+** Processing line: ~ init_game~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
@@ -202435,12 +209647,23 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ # Starts the game with player x's turn and creates an array (to_a) for space combinations.~
** Processing line: ~ # Calls methods necessary for the game to run properly.~
** Processing line: ~ def tick~
-** Processing line: ~ state.current_turn ||= :x~
-** Processing line: ~ state.space_combinations = [-1, 0, 1].product([-1, 0, 1]).to_a~
+** Processing line: ~ init_new_game~
** Processing line: ~ render_board~
** Processing line: ~ input_board~
** Processing line: ~ end~
** Processing line: ~~
+** Processing line: ~ def init_new_game~
+** Processing line: ~ state.current_turn ||= :x~
+** Processing line: ~ state.space_combinations ||= [-1, 0, 1].product([-1, 0, 1]).to_a~
+** Processing line: ~~
+** Processing line: ~ state.spaces ||= {}~
+** Processing line: ~~
+** Processing line: ~ state.space_combinations.each do |x, y|~
+** Processing line: ~ state.spaces[x] ||= {}~
+** Processing line: ~ state.spaces[x][y] ||= state.new_entity(:space)~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
** Processing line: ~ # Uses borders to create grid squares for the game's board. Also outputs the game pieces using labels.~
** Processing line: ~ def render_board~
** Processing line: ~ square_size = 80~
@@ -202516,6 +209739,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ def input_restart_game~
** Processing line: ~ return unless state.game_over~
** Processing line: ~ gtk.reset~
+** Processing line: ~ init_new_game~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Checks if x or o won the game.~
@@ -202847,7 +210071,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ def calc_kill_zombie~
** Processing line: ~~
** Processing line: ~ # Find all zombies that intersect with the player. They are considered killed.~
-** Processing line: ~ killed_this_frame = state.zombies.find_all { |z| z.sprite.intersect_rect? state.player_sprite }~
+** Processing line: ~ killed_this_frame = state.zombies.find_all { |z| z.sprite && (z.sprite.intersect_rect? state.player_sprite) }~
** Processing line: ~ state.zombies = state.zombies - killed_this_frame # remove newly killed zombies from zombies collection~
** Processing line: ~ state.killed_zombies += killed_this_frame # add newly killed zombies to killed zombies~
** Processing line: ~~
@@ -203811,6 +211035,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def playtime_str t~
+** Processing line: ~ return "" unless t~
** Processing line: ~ minutes = (t / 60.0).floor~
** Processing line: ~ seconds = t - (minutes * 60.0).to_f~
** Processing line: ~ return minutes.to_s + ':' + seconds.floor.to_s + ((seconds - seconds.floor).to_s + "000")[1..3]~
@@ -203923,7 +211148,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ results.playtime_slider_rect = progress_bar(args: args,~
** Processing line: ~ row: 2.5,~
** Processing line: ~ col: 2,~
-** Processing line: ~ percentage: audio_entry.playtime / audio_entry.length_,~
+** Processing line: ~ percentage: (audio_entry.playtime || 1) / (audio_entry.length_ || 1),~
** Processing line: ~ text: "#{playtime_str(audio_entry.playtime)} / #{playtime_str(audio_entry.length_)}")~
** Processing line: ~~
** Processing line: ~ results.primitives << results.playtime_slider_rect.primitives~
@@ -204060,7 +211285,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ args.state.sound_files ||= [~
** Processing line: ~ { name: :tada, path: "sounds/tada.wav" },~
** Processing line: ~ { name: :splash, path: "sounds/splash.wav" },~
-** Processing line: ~ { name: :drum, path: "sounds/drum.wav" },~
+** Processing line: ~ { name: :drum, path: "sounds/drum.mp3" },~
** Processing line: ~ { name: :spring, path: "sounds/spring.wav" },~
** Processing line: ~ { name: :music, path: "sounds/music.ogg" }~
** Processing line: ~ ]~
@@ -204140,36 +211365,6 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
-** Processing line: ~*** Advanced Audio - Audio Mixer - Metadata - ios_metadata.txt~
-- H3 detected.
-- Determining if line is a header.
-- Line contains ~*** ~... gsub-ing empty string
-- Formatting line: ~Advanced Audio - Audio Mixer - Metadata - ios_metadata.txt~
-- Line's tilde count is: 0
-- Line contains link marker: false
-- Determining if line is a header.
-- Line contains ~*** ~... gsub-ing empty string
-- Formatting line: ~Advanced Audio - Audio Mixer - Metadata - ios_metadata.txt~
-- Line's tilde count is: 0
-- Line contains link marker: false
-** Processing line: ~~
-** Processing line: ~#+begin_src ruby~
-- PRE start detected.
-** Processing line: ~ # ./samples/07_advanced_audio/01_audio_mixer/metadata/ios_metadata.txt~
-** Processing line: ~ # ios_metadata.txt is used by the Pro version of DragonRuby Game Toolkit to create iOS apps.~
-** Processing line: ~ # Information about the Pro version can be found at: http://dragonruby.org/toolkit/game#purchase~
-** Processing line: ~~
-** Processing line: ~ # teamid needs to be set to your assigned Team Id which can be found at https://developer.apple.com/account/#/membership/~
-** Processing line: ~ teamid=~
-** Processing line: ~ # appid needs to be set to your application identifier which can be found at https://developer.apple.com/account/resources/identifiers/list~
-** Processing line: ~ appid=~
-** Processing line: ~ # appname is the name you want to show up underneath the app icon on the device. Keep it under 10 characters.~
-** Processing line: ~ appname=~
-** Processing line: ~~
-** Processing line: ~#+end_src~
-- PRE end detected.
-** Processing line: ~~
-** Processing line: ~~
** Processing line: ~*** Advanced Audio - Sound Synthesis - main.rb~
- H3 detected.
- Determining if line is a header.
@@ -204784,6 +211979,168 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
+** Processing line: ~*** Advanced Rendering - Labels With Wrapped Text - main.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Advanced Rendering - Labels With Wrapped Text - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Advanced Rendering - Labels With Wrapped Text - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./samples/07_advanced_rendering/00_labels_with_wrapped_text/app/main.rb~
+** Processing line: ~ def tick args~
+** Processing line: ~ # defaults~
+** Processing line: ~ args.state.scroll_location ||= 0~
+** Processing line: ~ args.state.textbox.messages ||= []~
+** Processing line: ~ args.state.textbox.scroll ||= 0~
+** Processing line: ~~
+** Processing line: ~ # render~
+** Processing line: ~ args.outputs.background_color = [0, 0, 0, 255]~
+** Processing line: ~ render_messages args~
+** Processing line: ~ render_instructions args~
+** Processing line: ~~
+** Processing line: ~ # inputs~
+** Processing line: ~ if args.inputs.keyboard.key_down.one~
+** Processing line: ~ queue_message args, "Hello there neighbour! my name is mark, how is your day today?"~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if args.inputs.keyboard.key_down.two~
+** Processing line: ~ queue_message args, "I'm doing great sir, actually I'm having a picnic today"~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if args.inputs.keyboard.key_down.three~
+** Processing line: ~ queue_message args, "Well that sounds wonderful!"~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if args.inputs.keyboard.key_down.home~
+** Processing line: ~ args.state.scroll_location = 1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if args.inputs.keyboard.key_down.delete~
+** Processing line: ~ clear_message_queue args~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def queue_message args, msg~
+** Processing line: ~ args.state.textbox.messages.concat msg.wrapped_lines 50~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def clear_message_queue args~
+** Processing line: ~ args.state.textbox.messages = nil~
+** Processing line: ~ args.state.textbox.scroll = 0~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def render_messages args~
+** Processing line: ~ args.outputs[:textbox].w = 400~
+** Processing line: ~ args.outputs[:textbox].h = 720~
+** Processing line: ~~
+** Processing line: ~ args.outputs.primitives << args.state.textbox.messages.each_with_index.map do |s, idx|~
+** Processing line: ~ {~
+** Processing line: ~ x: 0,~
+** Processing line: ~ y: 20 * (args.state.textbox.messages.size - idx) + args.state.textbox.scroll * 20,~
+** Processing line: ~ text: s,~
+** Processing line: ~ size_enum: -3,~
+** Processing line: ~ alignment_enum: 0,~
+** Processing line: ~ r: 255, g:255, b: 255, a: 255~
+** Processing line: ~ }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ args.outputs[:textbox].labels << args.state.textbox.messages.each_with_index.map do |s, idx|~
+** Processing line: ~ {~
+** Processing line: ~ x: 0,~
+** Processing line: ~ y: 20 * (args.state.textbox.messages.size - idx) + args.state.textbox.scroll * 20,~
+** Processing line: ~ text: s,~
+** Processing line: ~ size_enum: -3,~
+** Processing line: ~ alignment_enum: 0,~
+** Processing line: ~ r: 255, g:255, b: 255, a: 255~
+** Processing line: ~ }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ args.outputs[:textbox].borders << [0, 0, args.outputs[:textbox].w, 720]~
+** Processing line: ~~
+** Processing line: ~ args.state.textbox.scroll += args.inputs.mouse.wheel.y unless args.inputs.mouse.wheel.nil?~
+** Processing line: ~~
+** Processing line: ~ if args.state.scroll_location > 0~
+** Processing line: ~ args.state.textbox.scroll = 0~
+** Processing line: ~ args.state.scroll_location = 0~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ args.outputs.sprites << [900, 0, args.outputs[:textbox].w, 720, :textbox]~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def render_instructions args~
+** Processing line: ~ args.outputs.labels << [30,~
+** Processing line: ~ 30.from_top,~
+** Processing line: ~ "press 1, 2, 3 to display messages, MOUSE WHEEL to scroll, HOME to go to top, BACKSPACE to delete.",~
+** Processing line: ~ 0, 255, 255]~
+** Processing line: ~~
+** Processing line: ~ args.outputs.primitives << [0, 55.from_top, 1280, 30, :pixel, 0, 255, 0, 0, 0].sprite~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
+** Processing line: ~*** Advanced Rendering - Rotating Label - main.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Advanced Rendering - Rotating Label - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Advanced Rendering - Rotating Label - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./samples/07_advanced_rendering/00_rotating_label/app/main.rb~
+** Processing line: ~ def tick args~
+** Processing line: ~ # set the render target width and height to match the label~
+** Processing line: ~ args.outputs[:scene].w = 220~
+** Processing line: ~ args.outputs[:scene].h = 30~
+** Processing line: ~~
+** Processing line: ~~
+** Processing line: ~ # make the background transparent~
+** Processing line: ~ args.outputs[:scene].background_color = [255, 255, 255, 0]~
+** Processing line: ~~
+** Processing line: ~ # set the blendmode of the label to 0 (no blending)~
+** Processing line: ~ # center it inside of the scene~
+** Processing line: ~ # set the vertical_alignment_enum to 1 (center)~
+** Processing line: ~ args.outputs[:scene].labels << { x: 0,~
+** Processing line: ~ y: 15,~
+** Processing line: ~ text: "label in render target",~
+** Processing line: ~ blendmode_enum: 0,~
+** Processing line: ~ vertical_alignment_enum: 1 }~
+** Processing line: ~~
+** Processing line: ~ # add a border to the render target~
+** Processing line: ~ args.outputs[:scene].borders << { x: 0,~
+** Processing line: ~ y: 0,~
+** Processing line: ~ w: args.outputs[:scene].w,~
+** Processing line: ~ h: args.outputs[:scene].h }~
+** Processing line: ~~
+** Processing line: ~ # add the rendertarget to the main output as a sprite~
+** Processing line: ~ args.outputs.sprites << { x: 640 - args.outputs[:scene].w.half,~
+** Processing line: ~ y: 360 - args.outputs[:scene].h.half,~
+** Processing line: ~ w: args.outputs[:scene].w,~
+** Processing line: ~ h: args.outputs[:scene].h,~
+** Processing line: ~ angle: args.state.tick_count,~
+** Processing line: ~ path: :scene }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
** Processing line: ~*** Advanced Rendering - Simple Render Targets - main.rb~
- H3 detected.
- Determining if line is a header.
@@ -206155,6 +213512,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ default_camera(0,0,1280,720)~
** Processing line: ~ end~
** Processing line: ~~
+** Processing line: ~~
** Processing line: ~ def new_room~
** Processing line: ~ default_floor_tile(0,0,1024,1024,'sprites/rooms/camera_room.png')~
** Processing line: ~ end~
@@ -207410,6 +214768,109 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
+** Processing line: ~*** Performance - Sprites As Struct - main.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Performance - Sprites As Struct - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Performance - Sprites As Struct - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./samples/09_performance/03_sprites_as_struct/app/main.rb~
+** Processing line: ~ # create a Struct variant that allows for named parameters on construction.~
+** Processing line: ~ class NamedStruct < Struct~
+** Processing line: ~ def initialize **opts~
+** Processing line: ~ super(*members.map { |k| opts[k] })~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # create a Star NamedStruct~
+** Processing line: ~ Star = NamedStruct.new(:x, :y, :w, :h, :path, :s,~
+** Processing line: ~ :angle, :angle_anchor_x, :angle_anchor_y,~
+** Processing line: ~ :r, :g, :b, :a,~
+** Processing line: ~ :tile_x, :tile_y,~
+** Processing line: ~ :tile_w, :tile_h,~
+** Processing line: ~ :source_x, :source_y,~
+** Processing line: ~ :source_w, :source_h,~
+** Processing line: ~ :flip_horizontally, :flip_vertically,~
+** Processing line: ~ :blendmode_enum)~
+** Processing line: ~~
+** Processing line: ~ # Sprites represented as Structs. They require a little bit more code than Hashes,~
+** Processing line: ~ # but are the a little faster to render too.~
+** Processing line: ~ def random_x args~
+** Processing line: ~ (args.grid.w.randomize :ratio) * -1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def random_y args~
+** Processing line: ~ (args.grid.h.randomize :ratio) * -1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def random_speed~
+** Processing line: ~ 1 + (4.randomize :ratio)~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def new_star args~
+** Processing line: ~ Star.new x: (random_x args),~
+** Processing line: ~ y: (random_y args),~
+** Processing line: ~ w: 4, h: 4,~
+** Processing line: ~ path: 'sprites/tiny-star.png',~
+** Processing line: ~ s: random_speed~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def move_star args, star~
+** Processing line: ~ star.x += star[:s]~
+** Processing line: ~ star.y += star[:s]~
+** Processing line: ~ if star.x > args.grid.w || star.y > args.grid.h~
+** Processing line: ~ star.x = (random_x args)~
+** Processing line: ~ star.y = (random_y args)~
+** Processing line: ~ star[:s] = random_speed~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def tick args~
+** Processing line: ~ args.state.star_count ||= 0~
+** Processing line: ~~
+** Processing line: ~ # sets console command when sample app initially opens~
+** Processing line: ~ if Kernel.global_tick_count == 0~
+** Processing line: ~ puts ""~
+** Processing line: ~ puts ""~
+** Processing line: ~ puts "========================================================="~
+** Processing line: ~ puts "* INFO: Sprites, Structs"~
+** Processing line: ~ puts "* INFO: Please specify the number of sprites to render."~
+** Processing line: ~ args.gtk.console.set_command "reset_with count: 100"~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # init~
+** Processing line: ~ if args.state.tick_count == 0~
+** Processing line: ~ args.state.stars = args.state.star_count.map { |i| new_star args }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # update~
+** Processing line: ~ args.state.stars.each { |s| move_star args, s }~
+** Processing line: ~~
+** Processing line: ~ # render~
+** Processing line: ~ args.outputs.sprites << args.state.stars~
+** Processing line: ~ args.outputs.background_color = [0, 0, 0]~
+** Processing line: ~ args.outputs.primitives << args.gtk.current_framerate_primitives~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # resets game, and assigns star count given by user~
+** Processing line: ~ def reset_with count: count~
+** Processing line: ~ $gtk.reset~
+** Processing line: ~ $gtk.args.state.star_count = count~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
** Processing line: ~*** Performance - Sprites As Strict Entities - main.rb~
- H3 detected.
- Determining if line is a header.
@@ -207425,7 +214886,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
-** Processing line: ~ # ./samples/09_performance/03_sprites_as_strict_entities/app/main.rb~
+** Processing line: ~ # ./samples/09_performance/04_sprites_as_strict_entities/app/main.rb~
** Processing line: ~ # Sprites represented as StrictEntities using the queue ~args.outputs.sprites~~
** Processing line: ~ # yields apis access similar to Entities, but all properties that can be set on the~
** Processing line: ~ # entity must be predefined with a default value. Strict entities do not support the~
@@ -207518,7 +214979,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
-** Processing line: ~ # ./samples/09_performance/04_sprites_as_classes/app/main.rb~
+** Processing line: ~ # ./samples/09_performance/05_sprites_as_classes/app/main.rb~
** Processing line: ~ # Sprites represented as Classes using the queue ~args.outputs.sprites~.~
** Processing line: ~ # gives you full control of property declaration and method invocation.~
** Processing line: ~ # They are more performant than OpenEntities and StrictEntities, but more code upfront.~
@@ -207594,7 +215055,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
-** Processing line: ~ # ./samples/09_performance/05_static_sprites_as_classes/app/main.rb~
+** Processing line: ~ # ./samples/09_performance/06_static_sprites_as_classes/app/main.rb~
** Processing line: ~ # Sprites represented as Classes using the queue ~args.outputs.static_sprites~.~
** Processing line: ~ # bypasses the queue behavior of ~args.outputs.sprites~. All instances are held~
** Processing line: ~ # by reference. You get better performance, but you are mutating state of held objects~
@@ -207671,7 +215132,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
-** Processing line: ~ # ./samples/09_performance/06_static_sprites_as_classes_with_custom_drawing/app/main.rb~
+** Processing line: ~ # ./samples/09_performance/07_static_sprites_as_classes_with_custom_drawing/app/main.rb~
** Processing line: ~ # Sprites represented as Classes, with a draw_override method, and using the queue ~args.outputs.static_sprites~.~
** Processing line: ~ # is the fastest approach. This is comparable to what other game engines set as the default behavior.~
** Processing line: ~ # There are tradeoffs for all this speed if the creation of a full blown class, and bypassing~
@@ -207780,7 +215241,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
-** Processing line: ~ # ./samples/09_performance/07_collision_limits/app/main.rb~
+** Processing line: ~ # ./samples/09_performance/08_collision_limits/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ Reminders:~
@@ -207841,6 +215302,46 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
+** Processing line: ~*** Advanced Debugging - Logging - main.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Advanced Debugging - Logging - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Advanced Debugging - Logging - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./samples/10_advanced_debugging/00_logging/app/main.rb~
+** Processing line: ~ def tick args~
+** Processing line: ~ args.outputs.background_color = [255, 255, 255, 0]~
+** Processing line: ~ if args.state.tick_count == 0~
+** Processing line: ~ args.gtk.log_spam "log level spam"~
+** Processing line: ~ args.gtk.log_debug "log level debug"~
+** Processing line: ~ args.gtk.log_info "log level info"~
+** Processing line: ~ args.gtk.log_warn "log level warn"~
+** Processing line: ~ args.gtk.log_error "log level error"~
+** Processing line: ~ args.gtk.log_unfiltered "log level unfiltered"~
+** Processing line: ~ puts "This is a puts call"~
+** Processing line: ~ args.gtk.console.show~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if args.state.tick_count == 60~
+** Processing line: ~ puts "This is a puts call on tick 60"~
+** Processing line: ~ elsif args.state.tick_count == 120~
+** Processing line: ~ puts "This is a puts call on tick 120"~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
** Processing line: ~*** Advanced Debugging - Trace Debugging - main.rb~
- H3 detected.
- Determining if line is a header.
@@ -209222,11 +216723,13 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ # ./samples/11_http/01_retrieve_images/app/main.rb~
+** Processing line: ~ $gtk.register_cvar 'app.warn_seconds', "seconds to wait before starting", :uint, 11~
+** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.background_color = [0, 0, 0]~
** Processing line: ~~
** Processing line: ~ # Show a warning at the start.~
-** Processing line: ~ args.state.warning_debounce ||= 11 * 60~
+** Processing line: ~ args.state.warning_debounce ||= args.cvars['app.warn_seconds'].value * 60~
** Processing line: ~ if args.state.warning_debounce > 0~
** Processing line: ~ args.state.warning_debounce -= 1~
** Processing line: ~ args.outputs.labels << [640, 600, "This app shows random images from the Internet.", 10, 1, 255, 255, 255]~
@@ -209280,24 +216783,25 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
-** Processing line: ~*** Http - Web Server - main.rb~
+** Processing line: ~*** Http - In Game Web Server Http Get - main.rb~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
-- Formatting line: ~Http - Web Server - main.rb~
+- Formatting line: ~Http - In Game Web Server Http Get - main.rb~
- Line's tilde count is: 0
- Line contains link marker: false
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
-- Formatting line: ~Http - Web Server - main.rb~
+- Formatting line: ~Http - In Game Web Server Http Get - main.rb~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
-** Processing line: ~ # ./samples/11_http/02_web_server/app/main.rb~
+** Processing line: ~ # ./samples/11_http/02_in_game_web_server_http_get/app/main.rb~
** Processing line: ~ def tick args~
** Processing line: ~ args.state.port ||= 3000~
+** Processing line: ~ args.state.reqnum ||= 0~
** Processing line: ~ # by default the embedded webserver runs on port 9001 (the port number is over 9000) and is disabled in a production build~
** Processing line: ~ # to enable the http server in a production build, you need to manually start~
** Processing line: ~ # the server up:~
@@ -209328,6 +216832,99 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
+** Processing line: ~*** Http - In Game Web Server Http Post - main.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Http - In Game Web Server Http Post - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Http - In Game Web Server Http Post - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./samples/11_http/03_in_game_web_server_http_post/app/main.rb~
+** Processing line: ~ def tick args~
+** Processing line: ~ # defaults~
+** Processing line: ~ args.state.post_button = args.layout.rect(row: 0, col: 0, w: 5, h: 1).merge(text: "execute http_post")~
+** Processing line: ~ args.state.post_body_button = args.layout.rect(row: 1, col: 0, w: 5, h: 1).merge(text: "execute http_post_body")~
+** Processing line: ~ args.state.request_to_s ||= ""~
+** Processing line: ~ args.state.request_body ||= ""~
+** Processing line: ~~
+** Processing line: ~ # render~
+** Processing line: ~ args.state.post_button.yield_self do |b|~
+** Processing line: ~ args.outputs.borders << b~
+** Processing line: ~ args.outputs.labels << b.merge(text: b.text,~
+** Processing line: ~ y: b.y + 30,~
+** Processing line: ~ x: b.x + 10)~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ args.state.post_body_button.yield_self do |b|~
+** Processing line: ~ args.outputs.borders << b~
+** Processing line: ~ args.outputs.labels << b.merge(text: b.text,~
+** Processing line: ~ y: b.y + 30,~
+** Processing line: ~ x: b.x + 10)~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ draw_label args, 0, 6, "Request:", args.state.request_to_s~
+** Processing line: ~ draw_label args, 0, 14, "Request Body Unaltered:", args.state.request_body~
+** Processing line: ~~
+** Processing line: ~ # input~
+** Processing line: ~ if args.inputs.mouse.click~
+** Processing line: ~ # ============= HTTP_POST =============~
+** Processing line: ~ if (args.inputs.mouse.inside_rect? args.state.post_button)~
+** Processing line: ~ # ========= DATA TO SEND ===========~
+** Processing line: ~ form_fields = { "userId" => "#{Time.now.to_i}" }~
+** Processing line: ~ # ==================================~
+** Processing line: ~~
+** Processing line: ~ args.gtk.http_post "http://localhost:9001/testing",~
+** Processing line: ~ form_fields,~
+** Processing line: ~ ["Content-Type: application/x-www-form-urlencoded"]~
+** Processing line: ~~
+** Processing line: ~ args.gtk.notify! "http_post"~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # ============= HTTP_POST_BODY =============~
+** Processing line: ~ if (args.inputs.mouse.inside_rect? args.state.post_body_button)~
+** Processing line: ~ # =========== DATA TO SEND ==============~
+** Processing line: ~ json = "{ \"userId\": \"#{Time.now.to_i}\"}"~
+** Processing line: ~ # ==================================~
+** Processing line: ~~
+** Processing line: ~ args.gtk.http_post_body "http://localhost:9001/testing",~
+** Processing line: ~ json,~
+** Processing line: ~ ["Content-Type: application/json", "Content-Length: #{json.length}"]~
+** Processing line: ~~
+** Processing line: ~ args.gtk.notify! "http_post_body"~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # calc~
+** Processing line: ~ args.inputs.http_requests.each do |r|~
+** Processing line: ~ puts "#{r}"~
+** Processing line: ~ if r.uri == "/testing"~
+** Processing line: ~ puts r~
+** Processing line: ~ args.state.request_to_s = "#{r}"~
+** Processing line: ~ args.state.request_body = r.raw_body~
+** Processing line: ~ r.respond 200, "ok"~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def draw_label args, row, col, header, text~
+** Processing line: ~ label_pos = args.layout.rect(row: row, col: col, w: 0, h: 0)~
+** Processing line: ~ args.outputs.labels << "#{header}\n\n#{text}".wrapped_lines(80).map_with_index do |l, i|~
+** Processing line: ~ { x: label_pos.x, y: label_pos.y - (i * 15), text: l, size_enum: -2 }~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
** Processing line: ~*** C Extensions - Basics - main.rb~
- H3 detected.
- Determining if line is a header.
@@ -211360,7 +218957,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Every tick, new args are passed, and the Breadth First Search tick is called~
-** Processing line: ~ $breadcrumbs ||= Breadcrumbs.new(args)~
+** Processing line: ~ $breadcrumbs ||= Breadcrumbs.new~
** Processing line: ~ $breadcrumbs.args = args~
** Processing line: ~ $breadcrumbs.tick~
** Processing line: ~ end~
@@ -212026,7 +219623,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Every tick, new args are passed, and the Breadth First Search tick is called~
-** Processing line: ~ $early_exit_breadth_first_search ||= EarlyExitBreadthFirstSearch.new(args)~
+** Processing line: ~ $early_exit_breadth_first_search ||= EarlyExitBreadthFirstSearch.new~
** Processing line: ~ $early_exit_breadth_first_search.args = args~
** Processing line: ~ $early_exit_breadth_first_search.tick~
** Processing line: ~ end~
@@ -212891,7 +220488,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Every tick, new args are passed, and the Dijkstra tick method is called~
-** Processing line: ~ $movement_costs ||= Movement_Costs.new(args)~
+** Processing line: ~ $movement_costs ||= Movement_Costs.new~
** Processing line: ~ $movement_costs.args = args~
** Processing line: ~ $movement_costs.tick~
** Processing line: ~ end~
@@ -213892,7 +221489,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Every tick, new args are passed, and the Breadth First Search tick is called~
-** Processing line: ~ $heuristic_with_walls ||= Heuristic_With_Walls.new(args)~
+** Processing line: ~ $heuristic_with_walls ||= Heuristic_With_Walls.new~
** Processing line: ~ $heuristic_with_walls.args = args~
** Processing line: ~ $heuristic_with_walls.tick~
** Processing line: ~ end~
@@ -214926,7 +222523,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Every tick, new args are passed, and the Breadth First Search tick is called~
-** Processing line: ~ $heuristic ||= Heuristic.new(args)~
+** Processing line: ~ $heuristic ||= Heuristic.new~
** Processing line: ~ $heuristic.args = args~
** Processing line: ~ $heuristic.tick~
** Processing line: ~ end~
@@ -215976,7 +223573,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Every tick, new args are passed, and the Breadth First Search tick is called~
-** Processing line: ~ $a_star_algorithm ||= A_Star_Algorithm.new(args)~
+** Processing line: ~ $a_star_algorithm ||= A_Star_Algorithm.new~
** Processing line: ~ $a_star_algorithm.args = args~
** Processing line: ~ $a_star_algorithm.tick~
** Processing line: ~ end~
@@ -216574,6 +224171,378 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
+** Processing line: ~*** 3d - Yaw Pitch Roll - main.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~3d - Yaw Pitch Roll - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~3d - Yaw Pitch Roll - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./samples/99_genre_3d/03_yaw_pitch_roll/app/main.rb~
+** Processing line: ~ class Game~
+** Processing line: ~ attr_gtk~
+** Processing line: ~~
+** Processing line: ~ def tick~
+** Processing line: ~ defaults~
+** Processing line: ~ render~
+** Processing line: ~ input~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def matrix_mul m, v~
+** Processing line: ~ (hmap x: ((m.x.x * v.x) + (m.x.y * v.y) + (m.x.z * v.z) + (m.x.w * v.w)),~
+** Processing line: ~ y: ((m.y.x * v.x) + (m.y.y * v.y) + (m.y.z * v.z) + (m.y.w * v.w)),~
+** Processing line: ~ z: ((m.z.x * v.x) + (m.z.y * v.y) + (m.z.z * v.z) + (m.z.w * v.w)),~
+** Processing line: ~ w: ((m.w.x * v.x) + (m.w.y * v.y) + (m.w.z * v.z) + (m.w.w * v.w)))~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def player_ship~
+** Processing line: ~ [~
+** Processing line: ~ # engine back~
+** Processing line: ~ { x: -1, y: -1, z: 1, w: 0 },~
+** Processing line: ~ { x: -1, y: 1, z: 1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1, y: 1, z: 1, w: 0 },~
+** Processing line: ~ { x: 1, y: 1, z: 1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1, y: 1, z: 1, w: 0 },~
+** Processing line: ~ { x: 1, y: -1, z: 1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1, y: -1, z: 1, w: 0 },~
+** Processing line: ~ { x: -1, y: -1, z: 1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # engine front~
+** Processing line: ~ { x: -1, y: -1, z: -1, w: 0 },~
+** Processing line: ~ { x: -1, y: 1, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1, y: 1, z: -1, w: 0 },~
+** Processing line: ~ { x: 1, y: 1, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1, y: 1, z: -1, w: 0 },~
+** Processing line: ~ { x: 1, y: -1, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1, y: -1, z: -1, w: 0 },~
+** Processing line: ~ { x: -1, y: -1, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # engine left~
+** Processing line: ~ { x: -1, z: -1, y: -1, w: 0 },~
+** Processing line: ~ { x: -1, z: -1, y: 1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1, z: -1, y: 1, w: 0 },~
+** Processing line: ~ { x: -1, z: 1, y: 1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1, z: 1, y: 1, w: 0 },~
+** Processing line: ~ { x: -1, z: 1, y: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1, z: 1, y: -1, w: 0 },~
+** Processing line: ~ { x: -1, z: -1, y: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # engine right~
+** Processing line: ~ { x: 1, z: -1, y: -1, w: 0 },~
+** Processing line: ~ { x: 1, z: -1, y: 1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1, z: -1, y: 1, w: 0 },~
+** Processing line: ~ { x: 1, z: 1, y: 1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1, z: 1, y: 1, w: 0 },~
+** Processing line: ~ { x: 1, z: 1, y: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1, z: 1, y: -1, w: 0 },~
+** Processing line: ~ { x: 1, z: -1, y: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # top front of engine to front of ship~
+** Processing line: ~ { x: 1, y: 1, z: 1, w: 0 },~
+** Processing line: ~ { x: 0, y: -1, z: 9, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 0, y: -1, z: 9, w: 0 },~
+** Processing line: ~ { x: -1, y: 1, z: 1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # bottom front of engine~
+** Processing line: ~ { x: 1, y: -1, z: 1, w: 0 },~
+** Processing line: ~ { x: 0, y: -1, z: 9, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1, y: -1, z: 1, w: 0 },~
+** Processing line: ~ { x: 0, y: -1, z: 9, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # right wing~
+** Processing line: ~ # front of wing~
+** Processing line: ~ { x: 1, y: 0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: 9, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 9, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: 10, y: 0.10, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # back of wing~
+** Processing line: ~ { x: 1, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: 9, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 10, y: 0.10, z: -2, w: 0 },~
+** Processing line: ~ { x: 8, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # front of wing~
+** Processing line: ~ { x: 1, y: -0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: 9, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 9, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: 10, y: -0.10, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # back of wing~
+** Processing line: ~ { x: 1, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: 9, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 10, y: -0.10, z: -2, w: 0 },~
+** Processing line: ~ { x: 8, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # left wing~
+** Processing line: ~ # front of wing~
+** Processing line: ~ { x: -1, y: 0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: -9, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -9, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: -10, y: 0.10, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # back of wing~
+** Processing line: ~ { x: -1, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: -9, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -10, y: 0.10, z: -2, w: 0 },~
+** Processing line: ~ { x: -8, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # front of wing~
+** Processing line: ~ { x: -1, y: -0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: -9, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -9, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: -10, y: -0.10, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # back of wing~
+** Processing line: ~ { x: -1, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: -9, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -10, y: -0.10, z: -2, w: 0 },~
+** Processing line: ~ { x: -8, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # left fin~
+** Processing line: ~ # top~
+** Processing line: ~ { x: -1, y: 0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: -1, y: 3, z: -3, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: -1, y: 3, z: -3, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1.1, y: 0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: -1.1, y: 3, z: -3, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1.1, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: -1.1, y: 3, z: -3, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # bottom~
+** Processing line: ~ { x: -1, y: -0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: -1, y: -2, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: -1, y: -2, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1.1, y: -0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: -1.1, y: -2, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: -1.1, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: -1.1, y: -2, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # right fin~
+** Processing line: ~ { x: 1, y: 0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: 1, y: 3, z: -3, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: 1, y: 3, z: -3, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1.1, y: 0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: 1.1, y: 3, z: -3, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1.1, y: 0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: 1.1, y: 3, z: -3, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ # bottom~
+** Processing line: ~ { x: 1, y: -0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: 1, y: -2, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: 1, y: -2, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1.1, y: -0.10, z: 1, w: 0 },~
+** Processing line: ~ { x: 1.1, y: -2, z: -2, w: 0 },~
+** Processing line: ~~
+** Processing line: ~ { x: 1.1, y: -0.10, z: -1, w: 0 },~
+** Processing line: ~ { x: 1.1, y: -2, z: -2, w: 0 },~
+** Processing line: ~ ]~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def defaults~
+** Processing line: ~ state.points ||= player_ship~
+** Processing line: ~ state.shifted_points ||= state.points.map { |point| point }~
+** Processing line: ~~
+** Processing line: ~ state.scale ||= 1~
+** Processing line: ~ state.angle_x ||= 0~
+** Processing line: ~ state.angle_y ||= 0~
+** Processing line: ~ state.angle_z ||= 0~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def matrix_new x0, y0, z0, w0, x1, y1, z1, w1, x2, y2, z2, w2, x3, y3, z3, w3~
+** Processing line: ~ (hmap x: (hmap x: x0, y: y0, z: z0, w: w0),~
+** Processing line: ~ y: (hmap x: x1, y: y1, z: z1, w: w1),~
+** Processing line: ~ z: (hmap x: x2, y: y2, z: z2, w: w2),~
+** Processing line: ~ w: (hmap x: x3, y: y3, z: z3, w: w3))~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def angle_z_matrix degrees~
+** Processing line: ~ cos_t = Math.cos degrees.to_radians~
+** Processing line: ~ sin_t = Math.sin degrees.to_radians~
+** Processing line: ~ (matrix_new cos_t, -sin_t, 0, 0,~
+** Processing line: ~ sin_t, cos_t, 0, 0,~
+** Processing line: ~ 0, 0, 1, 0,~
+** Processing line: ~ 0, 0, 0, 1)~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def angle_y_matrix degrees~
+** Processing line: ~ cos_t = Math.cos degrees.to_radians~
+** Processing line: ~ sin_t = Math.sin degrees.to_radians~
+** Processing line: ~ (matrix_new cos_t, 0, sin_t, 0,~
+** Processing line: ~ 0, 1, 0, 0,~
+** Processing line: ~ -sin_t, 0, cos_t, 0,~
+** Processing line: ~ 0, 0, 0, 1)~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def angle_x_matrix degrees~
+** Processing line: ~ cos_t = Math.cos degrees.to_radians~
+** Processing line: ~ sin_t = Math.sin degrees.to_radians~
+** Processing line: ~ (matrix_new 1, 0, 0, 0,~
+** Processing line: ~ 0, cos_t, -sin_t, 0,~
+** Processing line: ~ 0, sin_t, cos_t, 0,~
+** Processing line: ~ 0, 0, 0, 1)~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def scale_matrix factor~
+** Processing line: ~ (matrix_new factor, 0, 0, 0,~
+** Processing line: ~ 0, factor, 0, 0,~
+** Processing line: ~ 0, 0, factor, 0,~
+** Processing line: ~ 0, 0, 0, 1)~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def input~
+** Processing line: ~ if (inputs.keyboard.shift && inputs.keyboard.p)~
+** Processing line: ~ state.scale -= 0.1~
+** Processing line: ~ elsif inputs.keyboard.p~
+** Processing line: ~ state.scale += 0.1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if inputs.mouse.wheel~
+** Processing line: ~ state.scale += inputs.mouse.wheel.y~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ state.scale = state.scale.clamp(0.1, 1000)~
+** Processing line: ~~
+** Processing line: ~ if (inputs.keyboard.shift && inputs.keyboard.y) || inputs.keyboard.right~
+** Processing line: ~ state.angle_y += 1~
+** Processing line: ~ elsif (inputs.keyboard.y) || inputs.keyboard.left~
+** Processing line: ~ state.angle_y -= 1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if (inputs.keyboard.shift && inputs.keyboard.x) || inputs.keyboard.down~
+** Processing line: ~ state.angle_x -= 1~
+** Processing line: ~ elsif (inputs.keyboard.x || inputs.keyboard.up)~
+** Processing line: ~ state.angle_x += 1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if inputs.keyboard.shift && inputs.keyboard.z~
+** Processing line: ~ state.angle_z += 1~
+** Processing line: ~ elsif inputs.keyboard.z~
+** Processing line: ~ state.angle_z -= 1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if inputs.keyboard.zero~
+** Processing line: ~ state.angle_x = 0~
+** Processing line: ~ state.angle_y = 0~
+** Processing line: ~ state.angle_z = 0~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ angle_x = state.angle_x~
+** Processing line: ~ angle_y = state.angle_y~
+** Processing line: ~ angle_z = state.angle_z~
+** Processing line: ~ scale = state.scale~
+** Processing line: ~~
+** Processing line: ~ s_matrix = scale_matrix state.scale~
+** Processing line: ~ x_matrix = angle_z_matrix angle_z~
+** Processing line: ~ y_matrix = angle_y_matrix angle_y~
+** Processing line: ~ z_matrix = angle_x_matrix angle_x~
+** Processing line: ~~
+** Processing line: ~ state.shifted_points = state.points.map do |point|~
+** Processing line: ~ (matrix_mul s_matrix,~
+** Processing line: ~ (matrix_mul z_matrix,~
+** Processing line: ~ (matrix_mul x_matrix,~
+** Processing line: ~ (matrix_mul y_matrix, point)))).merge(original: point)~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def thick_line line~
+** Processing line: ~ [~
+** Processing line: ~ line.merge(y: line.y - 1, y2: line.y2 - 1, r: 0, g: 0, b: 0),~
+** Processing line: ~ line.merge(x: line.x - 1, x2: line.x2 - 1, r: 0, g: 0, b: 0),~
+** Processing line: ~ line.merge(x: line.x - 0, x2: line.x2 - 0, r: 0, g: 0, b: 0),~
+** Processing line: ~ line.merge(y: line.y + 1, y2: line.y2 + 1, r: 0, g: 0, b: 0),~
+** Processing line: ~ line.merge(x: line.x + 1, x2: line.x2 + 1, r: 0, g: 0, b: 0)~
+** Processing line: ~ ]~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def render~
+** Processing line: ~ outputs.lines << state.shifted_points.each_slice(2).map do |(p1, p2)|~
+** Processing line: ~ perc = 0~
+** Processing line: ~ thick_line({ x: p1.x.*(10) + 640, y: p1.y.*(10) + 320,~
+** Processing line: ~ x2: p2.x.*(10) + 640, y2: p2.y.*(10) + 320,~
+** Processing line: ~ r: 255 * perc,~
+** Processing line: ~ g: 255 * perc,~
+** Processing line: ~ b: 255 * perc })~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ outputs.labels << [ 10, 700, "angle_x: #{state.angle_x.to_sf}", 0]~
+** Processing line: ~ outputs.labels << [ 10, 670, "x, shift+x", 0]~
+** Processing line: ~~
+** Processing line: ~ outputs.labels << [210, 700, "angle_y: #{state.angle_y.to_sf}", 0]~
+** Processing line: ~ outputs.labels << [210, 670, "y, shift+y", 0]~
+** Processing line: ~~
+** Processing line: ~ outputs.labels << [410, 700, "angle_z: #{state.angle_z.to_sf}", 0]~
+** Processing line: ~ outputs.labels << [410, 670, "z, shift+z", 0]~
+** Processing line: ~~
+** Processing line: ~ outputs.labels << [610, 700, "scale: #{state.scale.to_sf}", 0]~
+** Processing line: ~ outputs.labels << [610, 670, "p, shift+p", 0]~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ $game = Game.new~
+** Processing line: ~~
+** Processing line: ~ def tick args~
+** Processing line: ~ $game.args = args~
+** Processing line: ~ $game.tick~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def set_angles x, y, z~
+** Processing line: ~ $game.state.angle_x = x~
+** Processing line: ~ $game.state.angle_y = y~
+** Processing line: ~ $game.state.angle_z = z~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ $gtk.reset~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
** Processing line: ~*** Arcade - Bullet Hell - main.rb~
- H3 detected.
- Determining if line is a header.
@@ -217250,31 +225219,36 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_score~
-** Processing line: ~ outputs.primitives << [10, 710, "HI SCORE: #{state.hi_score}", large_white_typeset].label~
-** Processing line: ~ outputs.primitives << [10, 680, "SCORE: #{state.score}", large_white_typeset].label~
-** Processing line: ~ outputs.primitives << [10, 650, "DIFFICULTY: #{state.difficulty.upcase}", large_white_typeset].label~
+** Processing line: ~ outputs.primitives << { x: 10, y: 710, text: "HI SCORE: #{state.hi_score}", **large_white_typeset }~
+** Processing line: ~ outputs.primitives << { x: 10, y: 680, text: "SCORE: #{state.score}", **large_white_typeset }~
+** Processing line: ~ outputs.primitives << { x: 10, y: 650, text: "DIFFICULTY: #{state.difficulty.upcase}", **large_white_typeset }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_menu~
** Processing line: ~ return unless state.scene == :menu~
** Processing line: ~ render_overlay~
** Processing line: ~~
-** Processing line: ~ outputs.labels << [640, 700, "Flappy Dragon", 50, 1, 255, 255, 255]~
-** Processing line: ~ outputs.labels << [640, 500, "Instructions: Press Spacebar to flap. Don't die.", 4, 1, 255, 255, 255]~
-** Processing line: ~ outputs.labels << [430, 430, "[Tab] Change difficulty", 4, 0, 255, 255, 255]~
-** Processing line: ~ outputs.labels << [430, 400, "[Enter] Start at New Difficulty ", 4, 0, 255, 255, 255]~
-** Processing line: ~ outputs.labels << [430, 370, "[Escape] Cancel/Resume ", 4, 0, 255, 255, 255]~
-** Processing line: ~ outputs.labels << [640, 300, "(mouse, touch, and game controllers work, too!) ", 4, 1, 255, 255, 255]~
-** Processing line: ~ outputs.labels << [640, 200, "Difficulty: #{state.new_difficulty.capitalize}", 4, 1, 255, 255, 255]~
+** Processing line: ~ outputs.labels << { x: 640, y: 700, text: "Flappy Dragon", size_enum: 50, alignment_enum: 1, **white }~
+** Processing line: ~ outputs.labels << { x: 640, y: 500, text: "Instructions: Press Spacebar to flap. Don't die.", size_enum: 4, alignment_enum: 1, **white }~
+** Processing line: ~ outputs.labels << { x: 430, y: 430, text: "[Tab] Change difficulty", size_enum: 4, alignment_enum: 0, **white }~
+** Processing line: ~ outputs.labels << { x: 430, y: 400, text: "[Enter] Start at New Difficulty ", size_enum: 4, alignment_enum: 0, **white }~
+** Processing line: ~ outputs.labels << { x: 430, y: 370, text: "[Escape] Cancel/Resume ", size_enum: 4, alignment_enum: 0, **white }~
+** Processing line: ~ outputs.labels << { x: 640, y: 300, text: "(mouse, touch, and game controllers work, too!) ", size_enum: 4, alignment_enum: 1, **white }~
+** Processing line: ~ outputs.labels << { x: 640, y: 200, text: "Difficulty: #{state.new_difficulty.capitalize}", size_enum: 4, alignment_enum: 1, **white }~
** Processing line: ~~
-** Processing line: ~ outputs.labels << [10, 100, "Code: @amirrajan", 255, 255, 255]~
-** Processing line: ~ outputs.labels << [10, 80, "Art: @mobypixel", 255, 255, 255]~
-** Processing line: ~ outputs.labels << [10, 60, "Music: @mobypixel", 255, 255, 255]~
-** Processing line: ~ outputs.labels << [10, 40, "Engine: DragonRuby GTK", 255, 255, 255]~
+** Processing line: ~ outputs.labels << { x: 10, y: 100, text: "Code: @amirrajan", **white }~
+** Processing line: ~ outputs.labels << { x: 10, y: 80, text: "Art: @mobypixel", **white }~
+** Processing line: ~ outputs.labels << { x: 10, y: 60, text: "Music: @mobypixel", **white }~
+** Processing line: ~ outputs.labels << { x: 10, y: 40, text: "Engine: DragonRuby GTK", **white }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_overlay~
-** Processing line: ~ outputs.primitives << [grid.rect.scale_rect(1.1, 0, 0), 0, 0, 0, 230].solid~
+** Processing line: ~ overlay_rect = grid.rect.scale_rect(1.1, 0, 0)~
+** Processing line: ~ outputs.primitives << { x: overlay_rect.x,~
+** Processing line: ~ y: overlay_rect.y,~
+** Processing line: ~ w: overlay_rect.w,~
+** Processing line: ~ h: overlay_rect.h,~
+** Processing line: ~ r: 0, g: 0, b: 0, a: 230 }.solid!~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_game~
@@ -217287,14 +225261,14 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~ def render_game_over~
** Processing line: ~ return unless state.scene == :game~
-** Processing line: ~ outputs.labels << [638, 358, score_text, 20, 1]~
-** Processing line: ~ outputs.labels << [635, 360, score_text, 20, 1, 255, 255, 255]~
-** Processing line: ~ outputs.labels << [638, 428, countdown_text, 20, 1]~
-** Processing line: ~ outputs.labels << [635, 430, countdown_text, 20, 1, 255, 255, 255]~
+** Processing line: ~ outputs.labels << { x: 638, y: 358, text: score_text, size_enum: 20, alignment_enum: 1 }~
+** Processing line: ~ outputs.labels << { x: 635, y: 360, text: score_text, size_enum: 20, alignment_enum: 1, r: 255, g: 255, b: 255 }~
+** Processing line: ~ outputs.labels << { x: 638, y: 428, text: countdown_text, size_enum: 20, alignment_enum: 1 }~
+** Processing line: ~ outputs.labels << { x: 635, y: 430, text: countdown_text, size_enum: 20, alignment_enum: 1, r: 255, g: 255, b: 255 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_background~
-** Processing line: ~ outputs.sprites << [0, 0, 1280, 720, 'sprites/background.png']~
+** Processing line: ~ outputs.sprites << { x: 0, y: 0, w: 1280, h: 720, path: 'sprites/background.png' }~
** Processing line: ~~
** Processing line: ~ scroll_point_at = state.tick_count~
** Processing line: ~ scroll_point_at = state.scene_at if state.scene == :menu~
@@ -217306,11 +225280,18 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_front.png', 1.00, -80)~
** Processing line: ~ end~
** Processing line: ~~
+** Processing line: ~ def scrolling_background at, path, rate, y = 0~
+** Processing line: ~ [~
+** Processing line: ~ { x: 0 - at.*(rate) % 1440, y: y, w: 1440, h: 720, path: path },~
+** Processing line: ~ { x: 1440 - at.*(rate) % 1440, y: y, w: 1440, h: 720, path: path }~
+** Processing line: ~ ]~
+** Processing line: ~ end~
+** Processing line: ~~
** Processing line: ~ def render_walls~
** Processing line: ~ state.walls.each do |w|~
** Processing line: ~ w.sprites = [~
-** Processing line: ~ [w.x, w.bottom_height - 720, 100, 720, 'sprites/wall.png', 180],~
-** Processing line: ~ [w.x, w.top_y, 100, 720, 'sprites/wallbottom.png', 0]~
+** Processing line: ~ { x: w.x, y: w.bottom_height - 720, w: 100, h: 720, path: 'sprites/wall.png', angle: 180 },~
+** Processing line: ~ { x: w.x, y: w.top_y, w: 100, h: 720, path: 'sprites/wallbottom.png', angle: 0 }~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~ outputs.sprites << state.walls.map(&:sprites)~
@@ -217319,15 +225300,13 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ def render_dragon~
** Processing line: ~ state.show_death = true if state.countdown == 3.seconds~
** Processing line: ~~
-** Processing line: ~ render_debug_hitbox false~
-** Processing line: ~~
** Processing line: ~ if state.show_death == false || !state.death_at~
** Processing line: ~ animation_index = state.flapped_at.frame_index 6, 2, false if state.flapped_at~
** Processing line: ~ sprite_name = "sprites/dragon_fly#{animation_index.or(0) + 1}.png"~
-** Processing line: ~ state.dragon_sprite = [state.x, state.y, 100, 80, sprite_name, state.dy * 1.2]~
+** Processing line: ~ state.dragon_sprite = { x: state.x, y: state.y, w: 100, h: 80, path: sprite_name, angle: state.dy * 1.2 }~
** Processing line: ~ else~
** Processing line: ~ sprite_name = "sprites/dragon_die.png"~
-** Processing line: ~ state.dragon_sprite = [state.x, state.y, 100, 80, sprite_name, state.dy * 1.2]~
+** Processing line: ~ state.dragon_sprite = { x: state.x, y: state.y, w: 100, h: 80, path: sprite_name, angle: state.dy * 1.2 }~
** Processing line: ~ sprite_changed_elapsed = state.death_at.elapsed_time - 1.seconds~
** Processing line: ~ state.dragon_sprite.angle += (sprite_changed_elapsed ** 1.3) * state.death_fall_direction * -1~
** Processing line: ~ state.dragon_sprite.x += (sprite_changed_elapsed ** 1.2) * state.death_fall_direction~
@@ -217337,20 +225316,12 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ outputs.sprites << state.dragon_sprite~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ def render_debug_hitbox show~
-** Processing line: ~ return unless show~
-** Processing line: ~ outputs.borders << [dragon_collision_box.rect, 255, 0, 0] if state.dragon_sprite~
-** Processing line: ~ outputs.borders << state.walls.flat_map do |w|~
-** Processing line: ~ w.sprites.map { |s| [s.rect, 255, 0, 0] }~
-** Processing line: ~ end~
-** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ def render_flash~
** Processing line: ~ return unless state.flash_at~
** Processing line: ~~
-** Processing line: ~ outputs.primitives << [grid.rect,~
-** Processing line: ~ white,~
-** Processing line: ~ 255 * state.flash_at.ease(20, :flip)].solid~
+** Processing line: ~ outputs.primitives << { **grid.rect.to_hash,~
+** Processing line: ~ **white,~
+** Processing line: ~ a: 255 * state.flash_at.ease(20, :flip) }.solid!~
** Processing line: ~~
** Processing line: ~ state.flash_at = 0 if state.flash_at.elapsed_time > 20~
** Processing line: ~ end~
@@ -217470,19 +225441,12 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ def scrolling_background at, path, rate, y = 0~
-** Processing line: ~ [~
-** Processing line: ~ [ 0 - at.*(rate) % 1440, y, 1440, 720, path],~
-** Processing line: ~ [1440 - at.*(rate) % 1440, y, 1440, 720, path]~
-** Processing line: ~ ]~
-** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ def white~
-** Processing line: ~ [255, 255, 255]~
+** Processing line: ~ { r: 255, g: 255, b: 255 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def large_white_typeset~
-** Processing line: ~ [5, 0, 255, 255, 255]~
+** Processing line: ~ { size_enum: 5, alignment_enum: 0, r: 255, g: 255, b: 255 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def at_beginning?~
@@ -217491,9 +225455,9 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~ def dragon_collision_box~
** Processing line: ~ state.dragon_sprite~
-** Processing line: ~ .scale_rect(1.0 - collision_forgiveness, 0.5, 0.5)~
-** Processing line: ~ .rect_shift_right(10)~
-** Processing line: ~ .rect_shift_up(state.dy * 2)~
+** Processing line: ~ .scale_rect(1.0 - collision_forgiveness, 0.5, 0.5)~
+** Processing line: ~ .rect_shift_right(10)~
+** Processing line: ~ .rect_shift_up(state.dy * 2)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def game_over?~
@@ -217502,7 +225466,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ state.walls~
** Processing line: ~ .flat_map { |w| w.sprites }~
** Processing line: ~ .any? do |s|~
-** Processing line: ~ s.intersect_rect?(dragon_collision_box)~
+** Processing line: ~ s && s.intersect_rect?(dragon_collision_box)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
@@ -219001,334 +226965,6 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
-** Processing line: ~*** Crafting - Farming Game Starting Point - repl.rb~
-- H3 detected.
-- Determining if line is a header.
-- Line contains ~*** ~... gsub-ing empty string
-- Formatting line: ~Crafting - Farming Game Starting Point - repl.rb~
-- Line's tilde count is: 0
-- Line contains link marker: false
-- Determining if line is a header.
-- Line contains ~*** ~... gsub-ing empty string
-- Formatting line: ~Crafting - Farming Game Starting Point - repl.rb~
-- Line's tilde count is: 0
-- Line contains link marker: false
-** Processing line: ~~
-** Processing line: ~#+begin_src ruby~
-- PRE start detected.
-** Processing line: ~ # ./samples/99_genre_crafting/farming_game_starting_point/app/repl.rb~
-** Processing line: ~ # ===============================================================~
-** Processing line: ~ # Welcome to repl.rb~
-** Processing line: ~ # ===============================================================~
-** Processing line: ~ # You can experiement with code within this file. Code in this~
-** Processing line: ~ # file is only executed when you save (and only excecuted ONCE).~
-** Processing line: ~ # ===============================================================~
-** Processing line: ~~
-** Processing line: ~ # ===============================================================~
-** Processing line: ~ # REMOVE the "x" from the word "xrepl" and save the file to RUN~
-** Processing line: ~ # the code in between the do/end block delimiters.~
-** Processing line: ~ # ===============================================================~
-** Processing line: ~~
-** Processing line: ~ # ===============================================================~
-** Processing line: ~ # ADD the "x" to the word "repl" (make it xrepl) and save the~
-** Processing line: ~ # file to IGNORE the code in between the do/end block delimiters.~
-** Processing line: ~ # ===============================================================~
-** Processing line: ~~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ puts "The result of 1 + 2 is: #{1 + 2}"~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Ruby Crash Course:~
-** Processing line: ~ # Strings, Numeric, Booleans, Conditionals, Looping, Enumerables, Arrays~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Strings~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ message = "Hello World"~
-** Processing line: ~ puts "The value of message is: " + message~
-** Processing line: ~ puts "Any value can be interpolated within a string using \#{}."~
-** Processing line: ~ puts "Interpolated message: #{message}."~
-** Processing line: ~ puts 'This #{message} is not interpolated because the string uses single quotes.'~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Numerics~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ a = 10~
-** Processing line: ~ puts "The value of a is: #{a}"~
-** Processing line: ~ puts "a + 1 is: #{a + 1}"~
-** Processing line: ~ puts "a / 3 is: #{a / 3}"~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ b = 10.12~
-** Processing line: ~ puts "The value of b is: #{b}"~
-** Processing line: ~ puts "b + 1 is: #{b + 1}"~
-** Processing line: ~ puts "b as an integer is: #{b.to_i}"~
-** Processing line: ~ puts ''~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Booleans~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ c = 30~
-** Processing line: ~ puts "The value of c is #{c}."~
-** Processing line: ~~
-** Processing line: ~ if c~
-** Processing line: ~ puts "This if statement ran because c is truthy."~
-** Processing line: ~ end~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ d = false~
-** Processing line: ~ puts "The value of d is #{d}."~
-** Processing line: ~~
-** Processing line: ~ if !d~
-** Processing line: ~ puts "This if statement ran because d is falsey, using the not operator (!) makes d evaluate to true."~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ e = nil~
-** Processing line: ~ puts "Nil is also considered falsey. The value of e is: #{e}."~
-** Processing line: ~~
-** Processing line: ~ if !e~
-** Processing line: ~ puts "This if statement ran because e is nil (a falsey value)."~
-** Processing line: ~ end~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Conditionals~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ i_am_true = true~
-** Processing line: ~ i_am_nil = nil~
-** Processing line: ~ i_am_false = false~
-** Processing line: ~ i_am_hi = "hi"~
-** Processing line: ~~
-** Processing line: ~ puts "======== if statement"~
-** Processing line: ~ i_am_one = 1~
-** Processing line: ~ if i_am_one~
-** Processing line: ~ puts "This was printed because i_am_one is truthy."~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ puts "======== if/else statement"~
-** Processing line: ~ if i_am_false~
-** Processing line: ~ puts "This will NOT get printed because i_am_false is false."~
-** Processing line: ~ else~
-** Processing line: ~ puts "This was printed because i_am_false is false."~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ puts "======== if/elsif/else statement"~
-** Processing line: ~ if i_am_false~
-** Processing line: ~ puts "This will NOT get printed because i_am_false is false."~
-** Processing line: ~ elsif i_am_true~
-** Processing line: ~ puts "This was printed because i_am_true is true."~
-** Processing line: ~ else~
-** Processing line: ~ puts "This will NOT get printed i_am_true was true."~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ puts "======== case statement "~
-** Processing line: ~ i_am_one = 1~
-** Processing line: ~ case i_am_one~
-** Processing line: ~ when 10~
-** Processing line: ~ puts "case equaled: 10"~
-** Processing line: ~ when 9~
-** Processing line: ~ puts "case equaled: 9"~
-** Processing line: ~ when 5~
-** Processing line: ~ puts "case equaled: 5"~
-** Processing line: ~ when 1~
-** Processing line: ~ puts "case equaled: 1"~
-** Processing line: ~ else~
-** Processing line: ~ puts "Value wasn't cased."~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ puts "======== different types of comparisons"~
-** Processing line: ~ if 4 == 4~
-** Processing line: ~ puts "equal (4 == 4)"~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ if 4 != 3~
-** Processing line: ~ puts "not equal (4 != 3)"~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ if 3 < 4~
-** Processing line: ~ puts "less than (3 < 4)"~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ if 4 > 3~
-** Processing line: ~ puts "greater than (4 > 3)"~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ if ((4 > 3) || (3 < 4) || false)~
-** Processing line: ~ puts "or statement ((4 > 3) || (3 < 4) || false)"~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ if ((4 > 3) && (3 < 4))~
-** Processing line: ~ puts "and statement ((4 > 3) && (3 < 4))"~
-** Processing line: ~ end~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Looping~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ puts "======== times block"~
-** Processing line: ~ 3.times do |i|~
-** Processing line: ~ puts i~
-** Processing line: ~ end~
-** Processing line: ~ puts "======== range block exclusive"~
-** Processing line: ~ (0...3).each do |i|~
-** Processing line: ~ puts i~
-** Processing line: ~ end~
-** Processing line: ~ puts "======== range block inclusive"~
-** Processing line: ~ (0..3).each do |i|~
-** Processing line: ~ puts i~
-** Processing line: ~ end~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Enumerables~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ puts "======== array each"~
-** Processing line: ~ colors = ["red", "blue", "yellow"]~
-** Processing line: ~ colors.each do |color|~
-** Processing line: ~ puts color~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ puts '======== array each_with_index'~
-** Processing line: ~ colors = ["red", "blue", "yellow"]~
-** Processing line: ~ colors.each_with_index do |color, i|~
-** Processing line: ~ puts "#{color} at index #{i}"~
-** Processing line: ~ end~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ puts "======== single parameter function"~
-** Processing line: ~ def add_one_to n~
-** Processing line: ~ n + 5~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ puts add_one_to(3)~
-** Processing line: ~~
-** Processing line: ~ puts "======== function with default value"~
-** Processing line: ~ def function_with_default_value v = 10~
-** Processing line: ~ v * 10~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ puts "passing three: #{function_with_default_value(3)}"~
-** Processing line: ~ puts "passing nil: #{function_with_default_value}"~
-** Processing line: ~~
-** Processing line: ~ puts "======== Or Equal (||=) operator for nil values"~
-** Processing line: ~ def function_with_nil_default_with_local a = nil~
-** Processing line: ~ result = a~
-** Processing line: ~ result ||= "or equal operator was exected and set a default value"~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ puts "passing 'hi': #{function_with_nil_default_with_local 'hi'}"~
-** Processing line: ~ puts "passing nil: #{function_with_nil_default_with_local}"~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Arrays~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ puts "======== Create an array with the numbers 1 to 10."~
-** Processing line: ~ one_to_ten = (1..10).to_a~
-** Processing line: ~ puts one_to_ten~
-** Processing line: ~~
-** Processing line: ~ puts "======== Create a new array that only contains even numbers from the previous array."~
-** Processing line: ~ one_to_ten = (1..10).to_a~
-** Processing line: ~ evens = one_to_ten.find_all do |number|~
-** Processing line: ~ number % 2 == 0~
-** Processing line: ~ end~
-** Processing line: ~ puts evens~
-** Processing line: ~~
-** Processing line: ~ puts "======== Create a new array that rejects odd numbers."~
-** Processing line: ~ one_to_ten = (1..10).to_a~
-** Processing line: ~ also_even = one_to_ten.reject do |number|~
-** Processing line: ~ number % 2 != 0~
-** Processing line: ~ end~
-** Processing line: ~ puts also_even~
-** Processing line: ~~
-** Processing line: ~ puts "======== Create an array that doubles every number."~
-** Processing line: ~ one_to_ten = (1..10).to_a~
-** Processing line: ~ doubled = one_to_ten.map do |number|~
-** Processing line: ~ number * 2~
-** Processing line: ~ end~
-** Processing line: ~ puts doubled~
-** Processing line: ~~
-** Processing line: ~ puts "======== Create an array that selects only odd numbers and then multiply those by 10."~
-** Processing line: ~ one_to_ten = (1..10).to_a~
-** Processing line: ~ odd_doubled = one_to_ten.find_all do |number|~
-** Processing line: ~ number % 2 != 0~
-** Processing line: ~ end.map do |odd_number|~
-** Processing line: ~ odd_number * 10~
-** Processing line: ~ end~
-** Processing line: ~ puts odd_doubled~
-** Processing line: ~~
-** Processing line: ~ puts "======== All combination of numbers 1 to 10."~
-** Processing line: ~ one_to_ten = (1..10).to_a~
-** Processing line: ~ all_combinations = one_to_ten.product(one_to_ten)~
-** Processing line: ~ puts all_combinations~
-** Processing line: ~~
-** Processing line: ~ puts "======== All uniq combinations of numbers. For example: [1, 2] is the same as [2, 1]."~
-** Processing line: ~ one_to_ten = (1..10).to_a~
-** Processing line: ~ uniq_combinations =~
-** Processing line: ~ one_to_ten.product(one_to_ten)~
-** Processing line: ~ .map do |unsorted_number|~
-** Processing line: ~ unsorted_number.sort~
-** Processing line: ~ end.uniq~
-** Processing line: ~ puts uniq_combinations~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Advanced Arrays~
-** Processing line: ~ # ====================================================================================~
-** Processing line: ~ # Remove the x from xrepl to run the code. Add the x back to ignore to code.~
-** Processing line: ~ xrepl do~
-** Processing line: ~ puts "======== All unique Pythagorean Triples between 1 and 40 sorted by area of the triangle."~
-** Processing line: ~~
-** Processing line: ~ one_to_hundred = (1..40).to_a~
-** Processing line: ~ triples =~
-** Processing line: ~ one_to_hundred.product(one_to_hundred).map do |width, height|~
-** Processing line: ~ [width, height, Math.sqrt(width ** 2 + height ** 2)]~
-** Processing line: ~ end.find_all do |_, _, hypotenuse|~
-** Processing line: ~ hypotenuse.to_i == hypotenuse~
-** Processing line: ~ end.map do |triangle|~
-** Processing line: ~ triangle.map(&:to_i)~
-** Processing line: ~ end.uniq do |triangle|~
-** Processing line: ~ triangle.sort~
-** Processing line: ~ end.map do |width, height, hypotenuse|~
-** Processing line: ~ [width, height, hypotenuse, (width * height) / 2]~
-** Processing line: ~ end.sort_by do |_, _, _, area|~
-** Processing line: ~ area~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ triples.each do |width, height, hypotenuse, area|~
-** Processing line: ~ puts "(#{width}, #{height}, #{hypotenuse}) = #{area}"~
-** Processing line: ~ end~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~#+end_src~
-- PRE end detected.
-** Processing line: ~~
-** Processing line: ~~
** Processing line: ~*** Crafting - Farming Game Starting Point - tests.rb~
- H3 detected.
- Determining if line is a header.
@@ -222639,6 +230275,407 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
+** Processing line: ~*** Mario - Jumping - main.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Mario - Jumping - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Mario - Jumping - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./samples/99_genre_mario/01_jumping/app/main.rb~
+** Processing line: ~ def tick args~
+** Processing line: ~ defaults args~
+** Processing line: ~ render args~
+** Processing line: ~ input args~
+** Processing line: ~ calc args~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def defaults args~
+** Processing line: ~ args.state.player.x ||= args.grid.w.half~
+** Processing line: ~ args.state.player.y ||= 0~
+** Processing line: ~ args.state.player.size ||= 100~
+** Processing line: ~ args.state.player.dy ||= 0~
+** Processing line: ~ args.state.player.action ||= :jumping~
+** Processing line: ~ args.state.jump.power = 20~
+** Processing line: ~ args.state.jump.increase_frames = 10~
+** Processing line: ~ args.state.jump.increase_power = 1~
+** Processing line: ~ args.state.gravity = -1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def render args~
+** Processing line: ~ args.outputs.sprites << {~
+** Processing line: ~ x: args.state.player.x -~
+** Processing line: ~ args.state.player.size.half,~
+** Processing line: ~ y: args.state.player.y,~
+** Processing line: ~ w: args.state.player.size,~
+** Processing line: ~ h: args.state.player.size,~
+** Processing line: ~ path: 'sprites/square/red.png'~
+** Processing line: ~ }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def input args~
+** Processing line: ~ if args.inputs.keyboard.key_down.space~
+** Processing line: ~ if args.state.player.action == :standing~
+** Processing line: ~ args.state.player.action = :jumping~
+** Processing line: ~ args.state.player.dy = args.state.jump.power~
+** Processing line: ~~
+** Processing line: ~ # record when the action took place~
+** Processing line: ~ current_frame = args.state.tick_count~
+** Processing line: ~ args.state.player.action_at = current_frame~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # if the space bar is being held~
+** Processing line: ~ if args.inputs.keyboard.key_held.space~
+** Processing line: ~ # is the player jumping~
+** Processing line: ~ is_jumping = args.state.player.action == :jumping~
+** Processing line: ~~
+** Processing line: ~ # when was the jump performed~
+** Processing line: ~ time_of_jump = args.state.player.action_at~
+** Processing line: ~~
+** Processing line: ~ # how much time has passed since the jump~
+** Processing line: ~ jump_elapsed_time = time_of_jump.elapsed_time~
+** Processing line: ~~
+** Processing line: ~ # how much time is allowed for increasing power~
+** Processing line: ~ time_allowed = args.state.jump.increase_frames~
+** Processing line: ~~
+** Processing line: ~ # if the player is jumping~
+** Processing line: ~ # and the elapsed time is less than~
+** Processing line: ~ # the allowed time~
+** Processing line: ~ if is_jumping && jump_elapsed_time < time_allowed~
+** Processing line: ~ # increase the dy by the increase power~
+** Processing line: ~ power_to_add = args.state.jump.increase_power~
+** Processing line: ~ args.state.player.dy += power_to_add~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc args~
+** Processing line: ~ if args.state.player.action == :jumping~
+** Processing line: ~ args.state.player.y += args.state.player.dy~
+** Processing line: ~ args.state.player.dy += args.state.gravity~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if args.state.player.y < 0~
+** Processing line: ~ args.state.player.y = 0~
+** Processing line: ~ args.state.player.action = :standing~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
+** Processing line: ~*** Mario - Jumping And Collisions - main.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Mario - Jumping And Collisions - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Mario - Jumping And Collisions - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./samples/99_genre_mario/02_jumping_and_collisions/app/main.rb~
+** Processing line: ~ class Game~
+** Processing line: ~ attr_gtk~
+** Processing line: ~~
+** Processing line: ~ def tick~
+** Processing line: ~ defaults~
+** Processing line: ~ render~
+** Processing line: ~ input~
+** Processing line: ~ calc~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def defaults~
+** Processing line: ~ return if state.tick_count != 0~
+** Processing line: ~~
+** Processing line: ~ player.x = 64~
+** Processing line: ~ player.y = 800~
+** Processing line: ~ player.size = 50~
+** Processing line: ~ player.dx = 0~
+** Processing line: ~ player.dy = 0~
+** Processing line: ~ player.action = :falling~
+** Processing line: ~~
+** Processing line: ~ player.max_speed = 20~
+** Processing line: ~ player.jump_power = 15~
+** Processing line: ~ player.jump_air_time = 15~
+** Processing line: ~ player.jump_increase_power = 1~
+** Processing line: ~~
+** Processing line: ~ state.gravity = -1~
+** Processing line: ~ state.drag = 0.001~
+** Processing line: ~ state.tile_size = 64~
+** Processing line: ~ state.tiles ||= [~
+** Processing line: ~ { ordinal_x: 0, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 1, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 2, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 3, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 4, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 5, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 6, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 7, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 8, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 9, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 10, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 11, ordinal_y: 0 },~
+** Processing line: ~ { ordinal_x: 12, ordinal_y: 0 },~
+** Processing line: ~~
+** Processing line: ~ { ordinal_x: 9, ordinal_y: 3 },~
+** Processing line: ~ { ordinal_x: 10, ordinal_y: 3 },~
+** Processing line: ~ { ordinal_x: 11, ordinal_y: 3 },~
+** Processing line: ~ ]~
+** Processing line: ~~
+** Processing line: ~ tiles.each do |t|~
+** Processing line: ~ t.rect = { x: t.ordinal_x * 64,~
+** Processing line: ~ y: t.ordinal_y * 64,~
+** Processing line: ~ w: 64,~
+** Processing line: ~ h: 64 }~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def render~
+** Processing line: ~ render_player~
+** Processing line: ~ render_tiles~
+** Processing line: ~ # render_grid~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def input~
+** Processing line: ~ input_jump~
+** Processing line: ~ input_move~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc~
+** Processing line: ~ calc_player_rect~
+** Processing line: ~ calc_left~
+** Processing line: ~ calc_right~
+** Processing line: ~ calc_below~
+** Processing line: ~ calc_above~
+** Processing line: ~ calc_player_dy~
+** Processing line: ~ calc_player_dx~
+** Processing line: ~ calc_game_over~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def render_player~
+** Processing line: ~ outputs.sprites << {~
+** Processing line: ~ x: player.x,~
+** Processing line: ~ y: player.y,~
+** Processing line: ~ w: player.size,~
+** Processing line: ~ h: player.size,~
+** Processing line: ~ path: 'sprites/square/red.png'~
+** Processing line: ~ }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def render_tiles~
+** Processing line: ~ outputs.sprites << state.tiles.map do |t|~
+** Processing line: ~ t.merge path: 'sprites/square/white.png',~
+** Processing line: ~ x: t.ordinal_x * 64,~
+** Processing line: ~ y: t.ordinal_y * 64,~
+** Processing line: ~ w: 64,~
+** Processing line: ~ h: 64~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def render_grid~
+** Processing line: ~ if state.tick_count == 0~
+** Processing line: ~ outputs[:grid].background_color = [0, 0, 0, 0]~
+** Processing line: ~ outputs[:grid].borders << available_brick_locations~
+** Processing line: ~ outputs[:grid].labels << available_brick_locations.map do |b|~
+** Processing line: ~ [~
+** Processing line: ~ b.merge(text: "#{b.ordinal_x},#{b.ordinal_y}",~
+** Processing line: ~ x: b.x + 2,~
+** Processing line: ~ y: b.y + 2,~
+** Processing line: ~ size_enum: -3,~
+** Processing line: ~ vertical_alignment_enum: 0,~
+** Processing line: ~ blendmode_enum: 0),~
+** Processing line: ~ b.merge(text: "#{b.x},#{b.y}",~
+** Processing line: ~ x: b.x + 2,~
+** Processing line: ~ y: b.y + 2 + 20,~
+** Processing line: ~ size_enum: -3,~
+** Processing line: ~ vertical_alignment_enum: 0,~
+** Processing line: ~ blendmode_enum: 0)~
+** Processing line: ~ ]~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ outputs.sprites << { x: 0, y: 0, w: 1280, h: 720, path: :grid }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def input_jump~
+** Processing line: ~ if inputs.keyboard.key_down.space~
+** Processing line: ~ player_jump~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if inputs.keyboard.key_held.space~
+** Processing line: ~ player_jump_increase_air_time~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def input_move~
+** Processing line: ~ if player.dx.abs < 20~
+** Processing line: ~ if inputs.keyboard.left~
+** Processing line: ~ player.dx -= 2~
+** Processing line: ~ elsif inputs.keyboard.right~
+** Processing line: ~ player.dx += 2~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc_game_over~
+** Processing line: ~ if player.y < -64~
+** Processing line: ~ player.x = 64~
+** Processing line: ~ player.y = 800~
+** Processing line: ~ player.dx = 0~
+** Processing line: ~ player.dy = 0~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc_player_rect~
+** Processing line: ~ player.rect = player_current_rect~
+** Processing line: ~ player.next_rect = player_next_rect~
+** Processing line: ~ player.prev_rect = player_prev_rect~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc_player_dx~
+** Processing line: ~ player.dx = player_next_dx~
+** Processing line: ~ player.x += player.dx~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc_player_dy~
+** Processing line: ~ player.y += player.dy~
+** Processing line: ~ player.dy = player_next_dy~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc_below~
+** Processing line: ~ return unless player.dy < 0~
+** Processing line: ~ tiles_below = tiles_find { |t| t.rect.top <= player.prev_rect.y }~
+** Processing line: ~ collision = tiles_find_colliding tiles_below, (player.rect.merge y: player.next_rect.y)~
+** Processing line: ~ if collision~
+** Processing line: ~ player.y = collision.rect.y + state.tile_size~
+** Processing line: ~ player.dy = 0~
+** Processing line: ~ player.action = :standing~
+** Processing line: ~ else~
+** Processing line: ~ player.action = :falling~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc_left~
+** Processing line: ~ return unless player.dx < 0 && player_next_dx < 0~
+** Processing line: ~ tiles_left = tiles_find { |t| t.rect.right <= player.prev_rect.left }~
+** Processing line: ~ collision = tiles_find_colliding tiles_left, (player.rect.merge x: player.next_rect.x)~
+** Processing line: ~ return unless collision~
+** Processing line: ~ player.x = collision.rect.right~
+** Processing line: ~ player.dx = 0~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc_right~
+** Processing line: ~ return unless player.dx > 0 && player_next_dx > 0~
+** Processing line: ~ tiles_right = tiles_find { |t| t.rect.left >= player.prev_rect.right }~
+** Processing line: ~ collision = tiles_find_colliding tiles_right, (player.rect.merge x: player.next_rect.x)~
+** Processing line: ~ return unless collision~
+** Processing line: ~ player.x = collision.rect.left - player.rect.w~
+** Processing line: ~ player.dx = 0~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc_above~
+** Processing line: ~ return unless player.dy > 0~
+** Processing line: ~ tiles_above = tiles_find { |t| t.rect.y >= player.prev_rect.y }~
+** Processing line: ~ collision = tiles_find_colliding tiles_above, (player.rect.merge y: player.next_rect.y)~
+** Processing line: ~ return unless collision~
+** Processing line: ~ player.dy = 0~
+** Processing line: ~ player.y = collision.rect.bottom - player.rect.h~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def player_current_rect~
+** Processing line: ~ { x: player.x, y: player.y, w: player.size, h: player.size }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def available_brick_locations~
+** Processing line: ~ (0..19).to_a~
+** Processing line: ~ .product(0..11)~
+** Processing line: ~ .map do |(ordinal_x, ordinal_y)|~
+** Processing line: ~ { ordinal_x: ordinal_x,~
+** Processing line: ~ ordinal_y: ordinal_y,~
+** Processing line: ~ x: ordinal_x * 64,~
+** Processing line: ~ y: ordinal_y * 64,~
+** Processing line: ~ w: 64,~
+** Processing line: ~ h: 64 }~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def player~
+** Processing line: ~ state.player ||= args.state.new_entity :player~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def player_next_dy~
+** Processing line: ~ player.dy + state.gravity + state.drag ** 2 * -1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def player_next_dx~
+** Processing line: ~ player.dx * 0.8~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def player_next_rect~
+** Processing line: ~ player.rect.merge x: player.x + player_next_dx,~
+** Processing line: ~ y: player.y + player_next_dy~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def player_prev_rect~
+** Processing line: ~ player.rect.merge x: player.x - player.dx,~
+** Processing line: ~ y: player.y - player.dy~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def player_jump~
+** Processing line: ~ return if player.action != :standing~
+** Processing line: ~ player.action = :jumping~
+** Processing line: ~ player.dy = state.player.jump_power~
+** Processing line: ~ current_frame = state.tick_count~
+** Processing line: ~ player.action_at = current_frame~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def player_jump_increase_air_time~
+** Processing line: ~ return if player.action != :jumping~
+** Processing line: ~ return if player.action_at.elapsed_time >= player.jump_air_time~
+** Processing line: ~ player.dy += player.jump_increase_power~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def tiles~
+** Processing line: ~ state.tiles~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def tiles_find_colliding tiles, target~
+** Processing line: ~ tiles.find { |t| t.rect.intersect_rect? target }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def tiles_find &block~
+** Processing line: ~ tiles.find_all(&block)~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def tick args~
+** Processing line: ~ $game ||= Game.new~
+** Processing line: ~ $game.args = args~
+** Processing line: ~ $game.tick~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ $gtk.reset~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
** Processing line: ~*** Platformer - Clepto Frog - main.rb~
- H3 detected.
- Determining if line is a header.
@@ -222655,7 +230692,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ # ./samples/99_genre_platformer/clepto_frog/app/main.rb~
-** Processing line: ~ MAP_FILE_PATH = 'app/map.txt'~
+** Processing line: ~ MAP_FILE_PATH = 'map.txt'~
** Processing line: ~~
** Processing line: ~ require 'app/map.rb'~
** Processing line: ~~
@@ -222710,35 +230747,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~ def render_intro~
** Processing line: ~ outputs.labels << [640, 700, "Clepto Frog", 4, 1]~
-** Processing line: ~ if state.tick_count >= 120~
-** Processing line: ~ outputs.labels << [640, 620, "\"Uh... your office has a pet frog?\" - New Guy",~
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * 120.ease(60)]~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ if state.tick_count >= 240~
-** Processing line: ~ outputs.labels << [640, 580, "\"Yep! His name is Clepto.\" - Jim",~
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * 240.ease(60)]~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ if state.tick_count >= 360~
-** Processing line: ~ outputs.labels << [640, 540, "\"Uh...\" - New Guy",~
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * 360.ease(60)]~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ if state.tick_count >= 480~
-** Processing line: ~ outputs.labels << [640, 500, "\"He steals mugs while we're away...\" - Jim",~
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * 480.ease(60)]~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ if state.tick_count >= 600~
-** Processing line: ~ outputs.labels << [640, 460, "\"It's not a big deal, we take them back in the morning.\" - Jim",~
-** Processing line: ~ 4, 1, 0, 0, 0, 255 * 600.ease(60)]~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ outputs.sprites << [640 - 50, 360 - 50, 100, 100,~
-** Processing line: ~ "sprites/square-green.png"]~
-** Processing line: ~~
-** Processing line: ~ if state.tick_count == 800~
+** Processing line: ~ if state.tick_count == 120~
** Processing line: ~ state.scene = :game~
** Processing line: ~ state.game_start_at = state.tick_count~
** Processing line: ~ end~
@@ -222746,7 +230755,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
-** Processing line: ~ if state.scene == :intro && state.tick_count <= 800~
+** Processing line: ~ if state.scene == :intro && state.tick_count <= 120~
** Processing line: ~ render_intro~
** Processing line: ~ elsif state.scene == :ending~
** Processing line: ~ render_ending~
@@ -222849,15 +230858,15 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~ if state.god_mode~
** Processing line: ~ # SHOW HIDE COLLISIONS~
-** Processing line: ~ outputs.sprites << state.world.map do |x, y, w, h|~
-** Processing line: ~ x = vx(x)~
-** Processing line: ~ y = vy(y)~
+** Processing line: ~ outputs.sprites << state.world.map do |rect|~
+** Processing line: ~ x = vx(rect.x)~
+** Processing line: ~ y = vy(rect.y)~
** Processing line: ~ if x > -80 && x < 1280 && y > -80 && y < 720~
** Processing line: ~ {~
** Processing line: ~ x: x,~
** Processing line: ~ y: y,~
-** Processing line: ~ w: vw(w || state.tile_size),~
-** Processing line: ~ h: vh(h || state.tile_size),~
+** Processing line: ~ w: vw(rect.w || state.tile_size),~
+** Processing line: ~ h: vh(rect.h || state.tile_size),~
** Processing line: ~ path: 'sprites/square-gray.png',~
** Processing line: ~ a: 128~
** Processing line: ~ }~
@@ -222880,8 +230889,10 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # Creates sprite following mouse to help indicate which sprite you have selected~
-** Processing line: ~ outputs.primitives << [inputs.mouse.position.x, inputs.mouse.position.y,~
-** Processing line: ~ state.tile_size, state.tile_size, 'sprites/square-indigo.png', 0, 100].sprite~
+** Processing line: ~ outputs.primitives << [inputs.mouse.position.x - 32 * state.camera_scale,~
+** Processing line: ~ inputs.mouse.position.y - 32 * state.camera_scale,~
+** Processing line: ~ state.tile_size * state.camera_scale,~
+** Processing line: ~ state.tile_size * state.camera_scale, 'sprites/square-indigo.png', 0, 100].sprite~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ render_mini_map~
@@ -222962,6 +230973,29 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ set_camera_scale 1~
** Processing line: ~ end~
** Processing line: ~~
+** Processing line: ~ if inputs.mouse.click~
+** Processing line: ~ state.id_seed += 1~
+** Processing line: ~ id = state.id_seed~
+** Processing line: ~ x = state.camera_x + (inputs.mouse.click.x.fdiv(state.camera_scale) - 32)~
+** Processing line: ~ y = state.camera_y + (inputs.mouse.click.y.fdiv(state.camera_scale) - 32)~
+** Processing line: ~ x = ((x + 2).idiv 4) * 4~
+** Processing line: ~ y = ((y + 2).idiv 4) * 4~
+** Processing line: ~ w = 64~
+** Processing line: ~ h = 64~
+** Processing line: ~ candidate_rect = { id: id, x: x, y: y, w: w, h: h }~
+** Processing line: ~ scaled_candidate_rect = { x: x + 30, y: y + 30, w: w - 60, h: h - 60 }~
+** Processing line: ~ to_remove = state.world.find { |r| r.intersect_rect? scaled_candidate_rect }~
+** Processing line: ~ if to_remove && args.inputs.keyboard.x~
+** Processing line: ~ state.world.reject! { |r| r.id == to_remove.id }~
+** Processing line: ~ else~
+** Processing line: ~ state.world << candidate_rect~
+** Processing line: ~ end~
+** Processing line: ~ export_map~
+** Processing line: ~ state.world_lookup = {}~
+** Processing line: ~ state.world_collision_rects = nil~
+** Processing line: ~ calc_world_lookup~
+** Processing line: ~ end~
+** Processing line: ~~
** Processing line: ~ if input_up?~
** Processing line: ~ state.y += 10~
** Processing line: ~ state.dy = 0~
@@ -222983,12 +231017,6 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ if state.scene == :game~
** Processing line: ~ process_inputs_player_movement~
** Processing line: ~ process_inputs_god_mode~
-** Processing line: ~ elsif state.scene == :intro~
-** Processing line: ~ if args.inputs.keyboard.key_down.enter || args.inputs.keyboard.key_down.space~
-** Processing line: ~ if Kernel.tick_count < 600~
-** Processing line: ~ Kernel.tick_count = 600~
-** Processing line: ~ end~
-** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
@@ -223086,17 +231114,6 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ def add_floors~
-** Processing line: ~ # floors~
-** Processing line: ~ state.world += [~
-** Processing line: ~ [0, 0, 10000, 40],~
-** Processing line: ~ [0, 1670, 3250, 60],~
-** Processing line: ~ [6691, 1653, 3290, 60],~
-** Processing line: ~ [1521, 3792, 7370, 60],~
-** Processing line: ~ [0, 5137, 3290, 60]~
-** Processing line: ~ ]~
-** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ def attempt_load_world_from_file~
** Processing line: ~ return if state.world~
** Processing line: ~ # exported_world = gtk.read_file(MAP_FILE_PATH)~
@@ -223104,26 +231121,11 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ state.objects = []~
** Processing line: ~~
** Processing line: ~ if $collisions~
-** Processing line: ~ $collisions.map do |x, y, w, h|~
-** Processing line: ~ state.world << [x, y, w, h]~
+** Processing line: ~ state.id_seed ||= 0~
+** Processing line: ~ $collisions.each do |x, y, w, h|~
+** Processing line: ~ state.id_seed += 1~
+** Processing line: ~ state.world << { id: state.id_seed, x: x, y: y, w: w, h: h }~
** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ add_floors~
-** Processing line: ~ # elsif exported_world~
-** Processing line: ~ # exported_world.each_line.map do |l|~
-** Processing line: ~ # tokens = l.strip.split(',')~
-** Processing line: ~ # x = tokens[0].to_i~
-** Processing line: ~ # y = tokens[1].to_i~
-** Processing line: ~ # type = tokens[2].to_i~
-** Processing line: ~ # if type == 1~
-** Processing line: ~ # state.world << [x, y, state.tile_size, state.tile_size]~
-** Processing line: ~ # elsif type == 2~
-** Processing line: ~ # w, h, path = tokens[3..-1]~
-** Processing line: ~ # state.objects << [x, y, w.to_i, h.to_i, path]~
-** Processing line: ~ # end~
-** Processing line: ~ # end~
-** Processing line: ~~
-** Processing line: ~ # add_floors~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if $mugs~
@@ -223144,23 +231146,24 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~ # Searches through the world and finds the cordinates that exist~
** Processing line: ~ state.world_lookup = {}~
-** Processing line: ~ state.world.each do |x, y, w, h|~
-** Processing line: ~ state.world_lookup[[x, y, w || state.tile_size, h || state.tile_size]] = true~
+** Processing line: ~ state.world.each do |rect|~
+** Processing line: ~ state.world_lookup[rect.id] = rect~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Assigns collision rects for every sprite drawn~
** Processing line: ~ state.world_collision_rects =~
** Processing line: ~ state.world_lookup~
** Processing line: ~ .keys~
-** Processing line: ~ .map do |x, y, w, h|~
+** Processing line: ~ .map do |key|~
+** Processing line: ~ rect = state.world_lookup[key]~
** Processing line: ~ s = state.tile_size~
-** Processing line: ~ w ||= s~
-** Processing line: ~ h ||= s~
+** Processing line: ~ rect.w ||= s~
+** Processing line: ~ rect.h ||= s~
** Processing line: ~ {~
-** Processing line: ~ args: [x, y, w, h],~
-** Processing line: ~ left_right: [x, y + 4, w, h - 6],~
-** Processing line: ~ top: [x + 4, y + 6, w - 8, h - 6],~
-** Processing line: ~ bottom: [x + 1, y - 1, w - 2, h - 8],~
+** Processing line: ~ args: rect,~
+** Processing line: ~ left_right: { x: rect.x, y: rect.y + 4, w: rect.w, h: rect.h - 6 },~
+** Processing line: ~ top: { x: rect.x + 4, y: rect.y + 6, w: rect.w - 8, h: rect.h - 6 },~
+** Processing line: ~ bottom: { x: rect.x + 1, y: rect.y - 1, w: rect.w - 2, h: rect.h - 8 },~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
@@ -223216,12 +231219,21 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~ def end_of_tongue~
** Processing line: ~ p = state.tongue_angle.vector(state.tongue_length)~
-** Processing line: ~ [start_of_tongue.x + p.x, start_of_tongue.y + p.y]~
+** Processing line: ~ { x: start_of_tongue.x + p.x, y: start_of_tongue.y + p.y }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_shooting~
+** Processing line: ~ calc_shooting_increment~
+** Processing line: ~ calc_shooting_increment~
+** Processing line: ~ calc_shooting_increment~
+** Processing line: ~ calc_shooting_increment~
+** Processing line: ~ calc_shooting_increment~
+** Processing line: ~ calc_shooting_increment~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc_shooting_increment~
** Processing line: ~ return unless state.action == :shooting~
-** Processing line: ~ state.tongue_length += 30~
+** Processing line: ~ state.tongue_length += 5~
** Processing line: ~ potential_anchor = end_of_tongue~
** Processing line: ~ if potential_anchor.x <= 0~
** Processing line: ~ state.anchor_point = potential_anchor~
@@ -223240,9 +231252,9 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ state.action = :anchored~
** Processing line: ~ outputs.sounds << 'sounds/attached.wav'~
** Processing line: ~ else~
-** Processing line: ~ anchor_rect = [potential_anchor.x - 5, potential_anchor.y - 5, 10, 10]~
+** Processing line: ~ anchor_rect = { x: potential_anchor.x - 5, y: potential_anchor.y - 5, w: 10, h: 10 }~
** Processing line: ~ collision = state.world_collision_rects.find_all do |v|~
-** Processing line: ~ [v[:args].x, v[:args].y, v[:args].w, v[:args].h].intersect_rect?(anchor_rect)~
+** Processing line: ~ v[:args].intersect_rect?(anchor_rect)~
** Processing line: ~ end.first~
** Processing line: ~ if collision~
** Processing line: ~ state.anchor_point = potential_anchor~
@@ -223338,7 +231350,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless left_side_collisions~
-** Processing line: ~ state.x = left_side_collisions[:left_right].right~
+** Processing line: ~ state.x = left_side_collisions[:left_right].right + 1~
** Processing line: ~ state.dx = state.dy.abs * 0.8~
** Processing line: ~ state.collision_on_x = true~
** Processing line: ~ end~
@@ -223353,7 +231365,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless right_side_collisions~
-** Processing line: ~ state.x = right_side_collisions[:left_right].left - state.tile_size~
+** Processing line: ~ state.x = right_side_collisions[:left_right].left - state.tile_size - 1~
** Processing line: ~ state.dx = state.dx.abs * 0.8 * -1~
** Processing line: ~ state.collision_on_x = true~
** Processing line: ~ end~
@@ -223369,7 +231381,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless ceil_collisions~
-** Processing line: ~ state.y = ceil_collisions[:bottom].y - state.tile_size~
+** Processing line: ~ state.y = ceil_collisions[:bottom].y - state.tile_size - 1~
** Processing line: ~ state.dy = state.dy.abs * 0.8 * -1~
** Processing line: ~ state.collision_on_y = true~
** Processing line: ~ end~
@@ -223382,13 +231394,17 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def export_map~
-** Processing line: ~ export_string = state.world.map do |x, y|~
-** Processing line: ~ "#{x},#{y},1"~
-** Processing line: ~ end~
+** Processing line: ~ export_string = "$collisions = [\n"~
+** Processing line: ~ export_string += state.world.map do |rect|~
+** Processing line: ~ "[#{rect.x},#{rect.y},#{rect.w},#{rect.h}],"~
+** Processing line: ~ end.join "\n"~
+** Processing line: ~ export_string += "\n]\n\n"~
+** Processing line: ~ export_string += "$mugs = [\n"~
** Processing line: ~ export_string += state.objects.map do |x, y, w, h, path|~
-** Processing line: ~ "#{x},#{y},2,#{w},#{h},#{path}"~
-** Processing line: ~ end~
-** Processing line: ~ gtk.write_file(MAP_FILE_PATH, export_string.join("\n"))~
+** Processing line: ~ "[#{x},#{y},#{w},#{h},'#{path}'],"~
+** Processing line: ~ end.join "\n"~
+** Processing line: ~ export_string += "\n]\n\n"~
+** Processing line: ~ gtk.write_file(MAP_FILE_PATH, export_string)~
** Processing line: ~ state.map_saved_at = state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
@@ -224531,6 +232547,11 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ [4459, 3997, 64, 64],~
** Processing line: ~ [76, 5215, 64, 64],~
** Processing line: ~ [39, 5217, 64, 64],~
+** Processing line: ~ [0, 0, 10000, 40],~
+** Processing line: ~ [0, 1670, 3250, 60],~
+** Processing line: ~ [6691, 1653, 3290, 60],~
+** Processing line: ~ [1521, 3792, 7370, 60],~
+** Processing line: ~ [0, 5137, 3290, 60]~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ $mugs = [~
@@ -225461,6 +233482,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def load_lines file~
+** Processing line: ~ return unless state.snaps~
** Processing line: ~ data = gtk.read_file(file) || ""~
** Processing line: ~ data.each_line~
** Processing line: ~ .reject { |l| l.strip.length == 0 }~
@@ -225519,10 +233541,10 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ results[:point] = { x: x, y: y }~
** Processing line: ~ results[:rect] = { x: x - radius, y: y - radius, w: radius * 2, h: radius * 2 }~
** Processing line: ~ results[:trajectory] = trajectory(results)~
-** Processing line: ~ results[:impacts] = terrain.find_all { |t| line_near_rect? results[:rect], t }.map do |t|~
+** Processing line: ~ results[:impacts] = terrain.find_all { |t| t && (line_near_rect? results[:rect], t) }.map do |t|~
** Processing line: ~ {~
** Processing line: ~ terrain: t,~
-** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t),~
+** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t, replace_infinity: 1000),~
** Processing line: ~ type: :terrain~
** Processing line: ~ }~
** Processing line: ~ end.reject { |t| !point_within_line? t[:point], t[:terrain] }~
@@ -225530,10 +233552,10 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ results[:impacts] += lava.find_all { |t| line_near_rect? results[:rect], t }.map do |t|~
** Processing line: ~ {~
** Processing line: ~ terrain: t,~
-** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t),~
+** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t, replace_infinity: 1000),~
** Processing line: ~ type: :lava~
** Processing line: ~ }~
-** Processing line: ~ end.reject { |t| !point_within_line? t[:point], t[:terrain] }~
+** Processing line: ~ end.reject { |t| !t || (!point_within_line? t[:point], t[:terrain]) }~
** Processing line: ~~
** Processing line: ~ results~
** Processing line: ~ end~
@@ -225546,6 +233568,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_terrains_to_monitor~
+** Processing line: ~ return unless circle.impacts~
** Processing line: ~ circle.impact = nil~
** Processing line: ~ circle.impacts.each do |i|~
** Processing line: ~ circle.terrains_to_monitor[i[:terrain]] ||= {~
@@ -231457,6 +239480,166 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
+** Processing line: ~*** Rpg Topdown - Topdown Casino - main.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Rpg Topdown - Topdown Casino - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~Rpg Topdown - Topdown Casino - main.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./samples/99_genre_rpg_topdown/topdown_casino/app/main.rb~
+** Processing line: ~ $gtk.reset~
+** Processing line: ~~
+** Processing line: ~ def coinflip~
+** Processing line: ~ rand < 0.5~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ class Game~
+** Processing line: ~ attr_accessor :args~
+** Processing line: ~~
+** Processing line: ~ def text_font~
+** Processing line: ~ return nil #"rpg.ttf"~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def text_color~
+** Processing line: ~ [ 255, 255, 255, 255 ]~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def set_gem_values~
+** Processing line: ~ @args.state.gem0 = ((coinflip) ? 100 : 20)~
+** Processing line: ~ @args.state.gem1 = ((coinflip) ? -10 : -50)~
+** Processing line: ~ @args.state.gem2 = ((coinflip) ? -10 : -30)~
+** Processing line: ~ if coinflip~
+** Processing line: ~ tmp = @args.state.gem0~
+** Processing line: ~ @args.state.gem0 = @args.state.gem1~
+** Processing line: ~ @args.state.gem1 = tmp~
+** Processing line: ~ end~
+** Processing line: ~ if coinflip~
+** Processing line: ~ tmp = @args.state.gem1~
+** Processing line: ~ @args.state.gem1 = @args.state.gem2~
+** Processing line: ~ @args.state.gem2 = tmp~
+** Processing line: ~ end~
+** Processing line: ~ if coinflip~
+** Processing line: ~ tmp = @args.state.gem0~
+** Processing line: ~ @args.state.gem0 = @args.state.gem2~
+** Processing line: ~ @args.state.gem2 = tmp~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def initialize args~
+** Processing line: ~ @args = args~
+** Processing line: ~ @args.state.animticks = 0~
+** Processing line: ~ @args.state.score = 0~
+** Processing line: ~ @args.state.gem_chosen = false~
+** Processing line: ~ @args.state.round_finished = false~
+** Processing line: ~ @args.state.gem0_x = 197~
+** Processing line: ~ @args.state.gem0_y = 720-274~
+** Processing line: ~ @args.state.gem1_x = 623~
+** Processing line: ~ @args.state.gem1_y = 720-274~
+** Processing line: ~ @args.state.gem2_x = 1049~
+** Processing line: ~ @args.state.gem2_y = 720-274~
+** Processing line: ~ @args.state.hero_sprite = "sprites/herodown100.png"~
+** Processing line: ~ @args.state.hero_x = 608~
+** Processing line: ~ @args.state.hero_y = 720-656~
+** Processing line: ~ set_gem_values~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def render_gem_value x, y, gem~
+** Processing line: ~ if @args.state.gem_chosen~
+** Processing line: ~ @args.outputs.labels << [ x, y + 96, gem.to_s, 1, 1, *text_color, text_font ]~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def render~
+** Processing line: ~ gemsprite = ((@args.state.animticks % 400) < 200) ? 'sprites/gem200.png' : 'sprites/gem400.png'~
+** Processing line: ~ @args.outputs.background_color = [ 0, 0, 0, 255 ]~
+** Processing line: ~ @args.outputs.sprites << [608, 720-150, 64, 64, 'sprites/oldman.png']~
+** Processing line: ~ @args.outputs.sprites << [300, 720-150, 64, 64, 'sprites/fire.png']~
+** Processing line: ~ @args.outputs.sprites << [900, 720-150, 64, 64, 'sprites/fire.png']~
+** Processing line: ~ @args.outputs.sprites << [@args.state.gem0_x, @args.state.gem0_y, 32, 64, gemsprite]~
+** Processing line: ~ @args.outputs.sprites << [@args.state.gem1_x, @args.state.gem1_y, 32, 64, gemsprite]~
+** Processing line: ~ @args.outputs.sprites << [@args.state.gem2_x, @args.state.gem2_y, 32, 64, gemsprite]~
+** Processing line: ~ @args.outputs.sprites << [@args.state.hero_x, @args.state.hero_y, 64, 64, @args.state.hero_sprite]~
+** Processing line: ~~
+** Processing line: ~ @args.outputs.labels << [ 630, 720-30, "IT'S A SECRET TO EVERYONE.", 1, 1, *text_color, text_font ]~
+** Processing line: ~ @args.outputs.labels << [ 50, 720-85, @args.state.score.to_s, 1, 1, *text_color, text_font ]~
+** Processing line: ~ render_gem_value @args.state.gem0_x, @args.state.gem0_y, @args.state.gem0~
+** Processing line: ~ render_gem_value @args.state.gem1_x, @args.state.gem1_y, @args.state.gem1~
+** Processing line: ~ render_gem_value @args.state.gem2_x, @args.state.gem2_y, @args.state.gem2~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def calc~
+** Processing line: ~ @args.state.animticks += 16~
+** Processing line: ~~
+** Processing line: ~ return unless @args.state.gem_chosen~
+** Processing line: ~ @args.state.round_finished_debounce ||= 60 * 3~
+** Processing line: ~ @args.state.round_finished_debounce -= 1~
+** Processing line: ~ return if @args.state.round_finished_debounce > 0~
+** Processing line: ~~
+** Processing line: ~ @args.state.gem_chosen = false~
+** Processing line: ~ @args.state.hero.sprite[0] = 'sprites/herodown100.png'~
+** Processing line: ~ @args.state.hero.sprite[1] = 608~
+** Processing line: ~ @args.state.hero.sprite[2] = 656~
+** Processing line: ~ @args.state.round_finished_debounce = nil~
+** Processing line: ~ set_gem_values~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def walk xdir, ydir, anim~
+** Processing line: ~ @args.state.hero_sprite = "sprites/#{anim}#{(((@args.state.animticks % 200) < 100) ? '100' : '200')}.png"~
+** Processing line: ~ @args.state.hero_x += 5 * xdir~
+** Processing line: ~ @args.state.hero_y += 5 * ydir~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def check_gem_touching gem_x, gem_y, gem~
+** Processing line: ~ return if @args.state.gem_chosen~
+** Processing line: ~ herorect = [ @args.state.hero_x, @args.state.hero_y, 64, 64 ]~
+** Processing line: ~ return if !herorect.intersect_rect?([gem_x, gem_y, 32, 64])~
+** Processing line: ~ @args.state.gem_chosen = true~
+** Processing line: ~ @args.state.score += gem~
+** Processing line: ~ @args.outputs.sounds << ((gem < 0) ? 'sounds/lose.wav' : 'sounds/win.wav')~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def input~
+** Processing line: ~ if @args.inputs.keyboard.key_held.left~
+** Processing line: ~ walk(-1.0, 0.0, 'heroleft')~
+** Processing line: ~ elsif @args.inputs.keyboard.key_held.right~
+** Processing line: ~ walk(1.0, 0.0, 'heroright')~
+** Processing line: ~ elsif @args.inputs.keyboard.key_held.up~
+** Processing line: ~ walk(0.0, 1.0, 'heroup')~
+** Processing line: ~ elsif @args.inputs.keyboard.key_held.down~
+** Processing line: ~ walk(0.0, -1.0, 'herodown')~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ check_gem_touching(@args.state.gem0_x, @args.state.gem0_y, @args.state.gem0)~
+** Processing line: ~ check_gem_touching(@args.state.gem1_x, @args.state.gem1_y, @args.state.gem1)~
+** Processing line: ~ check_gem_touching(@args.state.gem2_x, @args.state.gem2_y, @args.state.gem2)~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def tick~
+** Processing line: ~ input~
+** Processing line: ~ calc~
+** Processing line: ~ render~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def tick args~
+** Processing line: ~ args.state.game ||= Game.new args~
+** Processing line: ~ args.state.game.args = args~
+** Processing line: ~ args.state.game.tick~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
** Processing line: ~*** Rpg Topdown - Topdown Starting Point - main.rb~
- H3 detected.
- Determining if line is a header.
@@ -231586,22 +239769,22 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
-** Processing line: ~*** Teentiny - main.rb~
+** Processing line: ~*** Teenytiny - Teenytiny Starting Point - main.rb~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
-- Formatting line: ~Teentiny - main.rb~
+- Formatting line: ~Teenytiny - Teenytiny Starting Point - main.rb~
- Line's tilde count is: 0
- Line contains link marker: false
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
-- Formatting line: ~Teentiny - main.rb~
+- Formatting line: ~Teenytiny - Teenytiny Starting Point - main.rb~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
-** Processing line: ~ # ./samples/99_genre_teentiny/app/main.rb~
+** Processing line: ~ # ./samples/99_genre_teenytiny/teenytiny_starting_point/app/main.rb~
** Processing line: ~ # full documenation is at http://docs.dragonruby.org~
** Processing line: ~ # be sure to come to the discord if you hit any snags: http://discord.dragonruby.org~
** Processing line: ~ def tick args~
@@ -231769,22 +239952,22 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
-** Processing line: ~*** Teentiny - license.txt~
+** Processing line: ~*** Teenytiny - Teenytiny Starting Point - license.txt~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
-- Formatting line: ~Teentiny - license.txt~
+- Formatting line: ~Teenytiny - Teenytiny Starting Point - license.txt~
- Line's tilde count is: 0
- Line contains link marker: false
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
-- Formatting line: ~Teentiny - license.txt~
+- Formatting line: ~Teenytiny - Teenytiny Starting Point - license.txt~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
-** Processing line: ~ # ./samples/99_genre_teentiny/license.txt~
+** Processing line: ~ # ./samples/99_genre_teenytiny/teenytiny_starting_point/license.txt~
** Processing line: ~ Copyright 2019 DragonRuby LLC~
** Processing line: ~~
** Processing line: ~ MIT License~
@@ -231819,6 +240002,661 @@ Follows is a source code listing for all files that have been open sourced. This
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
+** Processing line: ~*** api.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~api.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~api.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./dragon/api.rb~
+** Processing line: ~ # coding: utf-8~
+** Processing line: ~ # Copyright 2019 DragonRuby LLC~
+** Processing line: ~ # MIT License~
+** Processing line: ~ # api.rb has been released under MIT (*only this file*).~
+** Processing line: ~~
+** Processing line: ~ module GTK~
+** Processing line: ~ class Api~
+** Processing line: ~ def initialize~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_autocomplete args, req~
+** Processing line: ~ html = <<-S~
+** Processing line: ~ <html>~
+** Processing line: ~ <head>~
+** Processing line: ~ <meta charset="UTF-8"/>~
+** Processing line: ~ <title>DragonRuby Game Toolkit Documentation</title>~
+** Processing line: ~ <style>~
+** Processing line: ~ pre {~
+** Processing line: ~ border: solid 1px silver;~
+** Processing line: ~ padding: 10px;~
+** Processing line: ~ font-size: 14px;~
+** Processing line: ~ white-space: pre-wrap;~
+** Processing line: ~ white-space: -moz-pre-wrap;~
+** Processing line: ~ white-space: -pre-wrap;~
+** Processing line: ~ white-space: -o-pre-wrap;~
+** Processing line: ~ word-wrap: break-word;~
+** Processing line: ~ }~
+** Processing line: ~ </style>~
+** Processing line: ~ </head>~
+** Processing line: ~ <body>~
+** Processing line: ~ <script>~
+** Processing line: ~ async function submitForm() {~
+** Processing line: ~ const result = await fetch("/dragon/autocomplete/", {~
+** Processing line: ~ method: 'POST',~
+** Processing line: ~ headers: { 'Content-Type': 'application/json' },~
+** Processing line: ~ body: JSON.stringify({ index: document.getElementById("index").value,~
+** Processing line: ~ text: document.getElementById("text").value }),~
+** Processing line: ~ });~
+** Processing line: ~ document.getElementById("autocomplete-results").innerHTML = await result.text();~
+** Processing line: ~ }~
+** Processing line: ~ </script>~
+** Processing line: ~ <form>~
+** Processing line: ~ <div>index</div>~
+** Processing line: ~ <input name="index" id="index" type="text" value="27" />~
+** Processing line: ~ <div>code</div>~
+** Processing line: ~ <textarea name="text" id="text" rows="30" cols="80">def tick args~
+** Processing line: ~ args.state.~
+** Processing line: ~ end</textarea>~
+** Processing line: ~ <br/>~
+** Processing line: ~ <input type="button" value="Get Suggestions" onclick="submitForm();" />~
+** Processing line: ~ <span id="success-notification"></span>~
+** Processing line: ~ </form>~
+** Processing line: ~ <pre id="autocomplete-results">~
+** Processing line: ~ </pre>~
+** Processing line: ~~
+** Processing line: ~ #{links}~
+** Processing line: ~ </body>~
+** Processing line: ~ </html>~
+** Processing line: ~ S~
+** Processing line: ~~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ html,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def post_api_autocomplete args, req~
+** Processing line: ~ json = ($gtk.parse_json req.body)~
+** Processing line: ~ index = json["index"].to_i~
+** Processing line: ~ text = json["text"]~
+** Processing line: ~ suggestions = args.gtk.suggest_autocompletion index: index, text: text~
+** Processing line: ~ list_as_string = suggestions.join("\n")~
+** Processing line: ~ req.respond 200, list_as_string, { 'Content-Type' => 'text/plain' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ define_method :links do~
+** Processing line: ~ <<-S~
+** Processing line: ~ <ul>~
+** Processing line: ~ <li><a href="/">Home</a></li>~
+** Processing line: ~ <li><a href="/docs.html">Docs</a></li>~
+** Processing line: ~ <li><a href="/dragon/control_panel/">Control Panel</a></li>~
+** Processing line: ~ <li><a href="/dragon/eval/">Console</a></li>~
+** Processing line: ~ <li><a href="/dragon/log/">Logs</a></li>~
+** Processing line: ~ <li><a href="/dragon/puts/">Puts</a></li>~
+** Processing line: ~ <li><a href="/dragon/code/">Code</a></li>~
+** Processing line: ~ </ul>~
+** Processing line: ~ S~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_index args, req~
+** Processing line: ~ req.respond 200, <<-S, { 'Content-Type' => 'text/html' }~
+** Processing line: ~ <html>~
+** Processing line: ~ <head>~
+** Processing line: ~ <meta charset="UTF-8"/>~
+** Processing line: ~ <title>DragonRuby Game Toolkit Documentation</title>~
+** Processing line: ~ </head>~
+** Processing line: ~ <body>~
+** Processing line: ~ #{links}~
+** Processing line: ~ </body>~
+** Processing line: ~ </html>~
+** Processing line: ~ S~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def source_code_links args~
+** Processing line: ~ links = args.gtk.reload_list_history.keys.map do |f|~
+** Processing line: ~ "<li><a href=\"/dragon/code/edit/?file=#{f}\">#{f}</a></li>"~
+** Processing line: ~ end~
+** Processing line: ~ <<-S~
+** Processing line: ~ <ul>~
+** Processing line: ~ #{links.join("\n")}~
+** Processing line: ~ </ul>~
+** Processing line: ~ S~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_code args, req~
+** Processing line: ~ view = <<-S~
+** Processing line: ~ <html>~
+** Processing line: ~ <head>~
+** Processing line: ~ <meta charset="UTF-8"/>~
+** Processing line: ~ <title>DragonRuby Game Toolkit Documentation</title>~
+** Processing line: ~ </head>~
+** Processing line: ~ <body>~
+** Processing line: ~ #{source_code_links args}~
+** Processing line: ~~
+** Processing line: ~ #{links}~
+** Processing line: ~ </body>~
+** Processing line: ~ </html>~
+** Processing line: ~ S~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ view,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def code_edit_view args, file~
+** Processing line: ~ view = <<-S~
+** Processing line: ~ <html>~
+** Processing line: ~ <head>~
+** Processing line: ~ <meta charset="UTF-8"/>~
+** Processing line: ~ <title>DragonRuby Game Toolkit Documentation</title>~
+** Processing line: ~ </head>~
+** Processing line: ~ <body>~
+** Processing line: ~ <script>~
+** Processing line: ~ async function submitForm() {~
+** Processing line: ~ const result = await fetch("/dragon/code/update/?file=#{file}", {~
+** Processing line: ~ method: 'POST',~
+** Processing line: ~ headers: { 'Content-Type': 'application/json' },~
+** Processing line: ~ body: JSON.stringify({ code: document.getElementById("code").value }),~
+** Processing line: ~ });~
+** Processing line: ~ document.getElementById("success-notification").innerHTML = "update successful";~
+** Processing line: ~ setTimeout(function() { document.getElementById("success-notification").innerHTML = ""; }, 3000);~
+** Processing line: ~ }~
+** Processing line: ~ </script>~
+** Processing line: ~ <form>~
+** Processing line: ~ <div><code>#{file}:</code></div>~
+** Processing line: ~ <textarea name="code" id="code" rows="30" cols="80">#{args.gtk.read_file file}</textarea>~
+** Processing line: ~ <br/>~
+** Processing line: ~ <input type="button" value="Update" onclick="submitForm();" />~
+** Processing line: ~ <span id="success-notification"></span>~
+** Processing line: ~ </form>~
+** Processing line: ~ #{source_code_links args}~
+** Processing line: ~~
+** Processing line: ~ #{links}~
+** Processing line: ~ </body>~
+** Processing line: ~ </html>~
+** Processing line: ~ S~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_code_edit args, req~
+** Processing line: ~ file = req.uri.split('?').last.gsub("file=", "")~
+** Processing line: ~ view = code_edit_view args, file~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ view,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def post_api_code_update args, req~
+** Processing line: ~ file = req.uri.split('?').last.gsub("file=", "")~
+** Processing line: ~ code = ($gtk.parse_json req.body)["code"]~
+** Processing line: ~ args.gtk.write_file file, code~
+** Processing line: ~ view = code_edit_view args, file~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ view,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_boot args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("tmp/src_backup/boot.txt"),~
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_trace args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("logs/trace.txt"),~
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_log args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("logs/log.txt"),~
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def post_api_log args, req~
+** Processing line: ~ Log.log req.body~
+** Processing line: ~~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ "ok",~
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_puts args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("logs/puts.txt"),~
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_changes args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("tmp/src_backup/src_backup_changes.txt"),~
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_favicon_ico args, req~
+** Processing line: ~ @favicon ||= args.gtk.read_file('docs/favicon.ico')~
+** Processing line: ~ req.respond 200, @favicon, { "Content-Type" => 'image/x-icon' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_src_backup args, req~
+** Processing line: ~ file_name = req.uri.gsub("/dragon/", "")~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("tmp/src_backup/#{file_name}"),~
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_not_found args, req~
+** Processing line: ~ puts("METHOD: #{req.method}");~
+** Processing line: ~ puts("URI: #{req.uri}");~
+** Processing line: ~ puts("HEADERS:");~
+** Processing line: ~ req.headers.each { |k,v| puts(" #{k}: #{v}") }~
+** Processing line: ~ req.respond 404, "not found: #{req.uri}", { }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_docs_html args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("docs/docs.html"),~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_docs_css args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("docs/docs.css"),~
+** Processing line: ~ { 'Content-Type' => 'text/css' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_docs_search_gif args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("docs/docs_search.gif"),~
+** Processing line: ~ { 'Content-Type' => 'image/gif' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_src_backup_index_html args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("/tmp/src_backup/src_backup_index.html"),~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_src_backup_index_txt args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("/tmp/src_backup/src_backup_index.txt"),~
+** Processing line: ~ { 'Content-Type' => 'text/txt' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_src_backup_css args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("/tmp/src_backup/src_backup.css"),~
+** Processing line: ~ { 'Content-Type' => 'text/css' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_src_backup_changes_html args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("/tmp/src_backup/src_backup_changes.html"),~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_src_backup_changes_txt args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ args.gtk.read_file("/tmp/src_backup/src_backup_changes.txt"),~
+** Processing line: ~ { 'Content-Type' => 'text/txt' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_eval args, req~
+** Processing line: ~ eval_view = <<-S~
+** Processing line: ~ <html lang="en">~
+** Processing line: ~ <head><title>Eval</title></head>~
+** Processing line: ~ <style>~
+** Processing line: ~ pre {~
+** Processing line: ~ border: solid 1px silver;~
+** Processing line: ~ padding: 10px;~
+** Processing line: ~ font-size: 14px;~
+** Processing line: ~ white-space: pre-wrap;~
+** Processing line: ~ white-space: -moz-pre-wrap;~
+** Processing line: ~ white-space: -pre-wrap;~
+** Processing line: ~ white-space: -o-pre-wrap;~
+** Processing line: ~ word-wrap: break-word;~
+** Processing line: ~ }~
+** Processing line: ~ </style>~
+** Processing line: ~ <body>~
+** Processing line: ~ <script>~
+** Processing line: ~ async function submitForm() {~
+** Processing line: ~ const result = await fetch("/dragon/eval/", {~
+** Processing line: ~ method: 'POST',~
+** Processing line: ~ headers: { 'Content-Type': 'application/json' },~
+** Processing line: ~ body: JSON.stringify({ code: document.getElementById("code").value }),~
+** Processing line: ~ });~
+** Processing line: ~ document.getElementById("eval-result").innerHTML = await result.text();~
+** Processing line: ~ }~
+** Processing line: ~ </script>~
+** Processing line: ~ <form>~
+** Processing line: ~ <textarea name="code" id="code" rows="10" cols="80"># write your code here and set $result.\n$result = $gtk.args.state</textarea>~
+** Processing line: ~ <br/>~
+** Processing line: ~ <input type="button" onclick="submitForm();" value="submit" />~
+** Processing line: ~ </form>~
+** Processing line: ~ <pre>curl -H "Content-Type: application/json" --data '{ "code": "$result = $args.state" }' -X POST http://localhost:9001/dragon/eval/</pre>~
+** Processing line: ~ <div>Eval Result:</div>~
+** Processing line: ~ <pre id="eval-result"></pre>~
+** Processing line: ~ #{links}~
+** Processing line: ~ </body>~
+** Processing line: ~ </html>~
+** Processing line: ~ S~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ eval_view,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def post_api_eval args, req~
+** Processing line: ~ if json? req~
+** Processing line: ~ code = ($gtk.parse_json req.body)["code"]~
+** Processing line: ~ code = code.gsub("$result", "$eval_result")~
+** Processing line: ~ Object.new.instance_eval do~
+** Processing line: ~ begin~
+** Processing line: ~ Kernel.eval code~
+** Processing line: ~ rescue Exception => e~
+** Processing line: ~ $eval_result = e~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ "#{$eval_result || $eval_results || "nil"}",~
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+** Processing line: ~~
+** Processing line: ~ $eval_result = nil~
+** Processing line: ~ $eval_results = nil~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def api_css_string~
+** Processing line: ~~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_console args, req~
+** Processing line: ~ html = console_view "# write your code here and set $result.\n$result = $gtk.args.state"~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ html,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def control_panel_view~
+** Processing line: ~ <<-S~
+** Processing line: ~ <html lang="en">~
+** Processing line: ~ <head><title>console</title></head>~
+** Processing line: ~ <body>~
+** Processing line: ~ <script>~
+** Processing line: ~ async function submitForm(url) {~
+** Processing line: ~ const result = await fetch(url, {~
+** Processing line: ~ method: 'POST',~
+** Processing line: ~ headers: { 'Content-Type': 'application/json' },~
+** Processing line: ~ body: JSON.stringify({}),~
+** Processing line: ~ });~
+** Processing line: ~ document.getElementById("success-notification").innerHTML = "successful";~
+** Processing line: ~ setTimeout(function() { document.getElementById("success-notification").innerHTML = ""; }, 3000);~
+** Processing line: ~ }~
+** Processing line: ~ </script>~
+** Processing line: ~ <form>~
+** Processing line: ~ <input type="button" value="Show Console" onclick="submitForm('/dragon/show_console/')" />~
+** Processing line: ~ </form>~
+** Processing line: ~ <form>~
+** Processing line: ~ <input type="button" value="Reset Game" onclick="submitForm('/dragon/reset/');" />~
+** Processing line: ~ </form>~
+** Processing line: ~ <form>~
+** Processing line: ~ <input type="button" value="Record Gameplay" onclick="submitForm('/dragon/record/');" />~
+** Processing line: ~ </form>~
+** Processing line: ~ <form>~
+** Processing line: ~ <input type="button" value="Stop Recording" onclick="submitForm('/dragon/record_stop/');" />~
+** Processing line: ~ </form>~
+** Processing line: ~ <form>~
+** Processing line: ~ <input type="button" value="Replay Recording" onclick="submitForm('/dragon/replay/');" />~
+** Processing line: ~ </form>~
+** Processing line: ~ <div id="success-notification"></div>~
+** Processing line: ~ #{links}~
+** Processing line: ~ </body>~
+** Processing line: ~ </html>~
+** Processing line: ~ S~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def get_api_control_panel args, req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ control_panel_view,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def json? req~
+** Processing line: ~ req.headers.find { |k, v| k == "Content-Type" && (v.include? "application/json") }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def post_api_reset args, req~
+** Processing line: ~ $gtk.reset if json? req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ control_panel_view,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def post_api_record args, req~
+** Processing line: ~ $recording.start 100 if json? req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ control_panel_view,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def post_api_record_stop args, req~
+** Processing line: ~ $recording.stop 'replay.txt' if json? req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ control_panel_view,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def post_api_replay args, req~
+** Processing line: ~ $replay.start 'replay.txt' if json? req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ control_panel_view,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def post_api_show_console args, req~
+** Processing line: ~ $gtk.console.show if json? req~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ control_panel_view,~
+** Processing line: ~ { 'Content-Type' => 'text/html' }~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def tick args~
+** Processing line: ~ args.inputs.http_requests.each do |req|~
+** Processing line: ~ match_candidate = { method: req.method.downcase.to_sym,~
+** Processing line: ~ uri: req.uri,~
+** Processing line: ~ uri_without_query_string: (req.uri.split '?').first,~
+** Processing line: ~ query_string: (req.uri.split '?').last,~
+** Processing line: ~ has_query_string: !!(req.uri.split '?').last,~
+** Processing line: ~ has_api_prefix: (req.uri.start_with? "/dragon"),~
+** Processing line: ~ end_with_rb: (req.uri.end_with? ".rb"),~
+** Processing line: ~ has_file_extension: file_extensions.find { |f| req.uri.include? f },~
+** Processing line: ~ has_trailing_slash: (req.uri.split('?').first.end_with? "/") }~
+** Processing line: ~~
+** Processing line: ~ if !match_candidate[:has_file_extension]~
+** Processing line: ~ if !match_candidate[:has_trailing_slash]~
+** Processing line: ~ match_candidate[:uri] = match_candidate[:uri_without_query_string] + "/"~
+** Processing line: ~ if match_candidate[:query_string]~
+** Processing line: ~ match_candidate[:uri] += "?#{match_candidate[:query_string]}"~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ context = { args: args, req: req, match_candidate: match_candidate }~
+** Processing line: ~~
+** Processing line: ~ process! context: context, routes: routes~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def url_decode args, string~
+** Processing line: ~ args.fn.gsub string,~
+** Processing line: ~ '+', " ",~
+** Processing line: ~ '%27', "'",~
+** Processing line: ~ '%22', '"',~
+** Processing line: ~ '%0D%0A', "\n",~
+** Processing line: ~ '%3D', "=",~
+** Processing line: ~ '%3B', ";",~
+** Processing line: ~ '%7C', "|",~
+** Processing line: ~ '%28', "(",~
+** Processing line: ~ '%29', ")",~
+** Processing line: ~ '%7B', "{",~
+** Processing line: ~ '%7D', "}",~
+** Processing line: ~ '%2C', ",",~
+** Processing line: ~ '%3A', ":",~
+** Processing line: ~ '%5B', "[",~
+** Processing line: ~ '%5D', "]",~
+** Processing line: ~ '%23', "#",~
+** Processing line: ~ '%21', "!",~
+** Processing line: ~ '%3C', "<",~
+** Processing line: ~ '%3E', ">",~
+** Processing line: ~ '%2B', "+",~
+** Processing line: ~ '%2F', "/",~
+** Processing line: ~ '%40', "@",~
+** Processing line: ~ '%3F', "?",~
+** Processing line: ~ '%26', "&",~
+** Processing line: ~ '%24', "$",~
+** Processing line: ~ '%5C', "\\",~
+** Processing line: ~ '%60', "`",~
+** Processing line: ~ '%7E', "~",~
+** Processing line: ~ '%C2%B2', "²",~
+** Processing line: ~ '%5E', "^",~
+** Processing line: ~ '%C2%BA', "º",~
+** Processing line: ~ '%C2%A7', "§",~
+** Processing line: ~ '%20', " ",~
+** Processing line: ~ '%0A', "\n",~
+** Processing line: ~ '%25', "%",~
+** Processing line: ~ '%2A', "*"~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def file_extensions~
+** Processing line: ~ [".html", ".css", ".gif", ".txt", ".ico", ".rb"]~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def routes~
+** Processing line: ~ [{ match_criteria: { method: :get, uri: "/" },~
+** Processing line: ~ handler: :get_index },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/" },~
+** Processing line: ~ handler: :get_index },~
+** Processing line: ~~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/boot/" },~
+** Processing line: ~ handler: :get_api_boot },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/trace/" },~
+** Processing line: ~ handler: :get_api_trace },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/puts/" },~
+** Processing line: ~ handler: :get_api_puts },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/log/" },~
+** Processing line: ~ handler: :get_api_log },~
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/log/" },~
+** Processing line: ~ handler: :post_api_log },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/changes/" },~
+** Processing line: ~ handler: :get_api_changes },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/eval/" },~
+** Processing line: ~ handler: :get_api_eval },~
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/eval/" },~
+** Processing line: ~ handler: :post_api_eval },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/console/" },~
+** Processing line: ~ handler: :get_api_console },~
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/console/" },~
+** Processing line: ~ handler: :post_api_console },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/control_panel/" },~
+** Processing line: ~ handler: :get_api_control_panel },~
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/reset/" },~
+** Processing line: ~ handler: :post_api_reset },~
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/record/" },~
+** Processing line: ~ handler: :post_api_record },~
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/record_stop/" },~
+** Processing line: ~ handler: :post_api_record_stop },~
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/replay/" },~
+** Processing line: ~ handler: :post_api_replay },~
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/show_console/" },~
+** Processing line: ~ handler: :post_api_show_console },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/code/" },~
+** Processing line: ~ handler: :get_api_code },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/dragon/autocomplete/" },~
+** Processing line: ~ handler: :get_api_autocomplete },~
+** Processing line: ~ { match_criteria: { method: :post, uri: "/dragon/autocomplete/" },~
+** Processing line: ~ handler: :post_api_autocomplete },~
+** Processing line: ~ { match_criteria: { method: :get, uri_without_query_string: "/dragon/code/edit/", has_query_string: true },~
+** Processing line: ~ handler: :get_api_code_edit },~
+** Processing line: ~ { match_criteria: { method: :post, uri_without_query_string: "/dragon/code/update/", has_query_string: true },~
+** Processing line: ~ handler: :post_api_code_update },~
+** Processing line: ~~
+** Processing line: ~~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/docs.html" },~
+** Processing line: ~ handler: :get_docs_html },~
+** Processing line: ~ { match_criteria: { method: :get, uri_without_query_string: "/docs.css" },~
+** Processing line: ~ handler: :get_docs_css },~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/docs_search.gif" },~
+** Processing line: ~ handler: :get_docs_search_gif },~
+** Processing line: ~~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/src_backup_index.html" },~
+** Processing line: ~ handler: :get_src_backup_index_html },~
+** Processing line: ~~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/src_backup_index.txt" },~
+** Processing line: ~ handler: :get_src_backup_index_txt },~
+** Processing line: ~~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/src_backup_changes.html" },~
+** Processing line: ~ handler: :get_src_backup_changes_html },~
+** Processing line: ~~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/src_backup_changes.txt" },~
+** Processing line: ~ handler: :get_src_backup_changes_txt },~
+** Processing line: ~~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/src_backup.css" },~
+** Processing line: ~ handler: :get_src_backup_css },~
+** Processing line: ~~
+** Processing line: ~ { match_criteria: { method: :get, uri: "/favicon.ico" },~
+** Processing line: ~ handler: :get_favicon_ico },~
+** Processing line: ~~
+** Processing line: ~ { match_criteria: { method: :get, end_with_rb: true },~
+** Processing line: ~ handler: :get_src_backup },~
+** Processing line: ~~
+** Processing line: ~ { match_criteria: { method: :get, end_with_rb: true },~
+** Processing line: ~ handler: :get_src_backup }~
+** Processing line: ~~
+** Processing line: ~ ]~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def process! opts~
+** Processing line: ~ routes = opts[:routes]~
+** Processing line: ~ context = opts[:context]~
+** Processing line: ~ routes.each do |route|~
+** Processing line: ~ match_found = (process_single! route: route, context: context)~
+** Processing line: ~ return if match_found~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def process_single! opts~
+** Processing line: ~ match_criteria = opts[:route][:match_criteria]~
+** Processing line: ~ m = opts[:route][:handler]~
+** Processing line: ~ args = opts[:context][:args]~
+** Processing line: ~ req = opts[:context][:req]~
+** Processing line: ~ match_candidate = opts[:context][:match_candidate]~
+** Processing line: ~ match_criteria.each do |k, v|~
+** Processing line: ~ return false if match_candidate[k] != v~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ begin~
+** Processing line: ~ send m, args, req~
+** Processing line: ~ rescue Exception => e~
+** Processing line: ~ req.respond 200,~
+** Processing line: ~ "#{e}\n#{e.__backtrace_to_org__}",~
+** Processing line: ~ { 'Content-Type' => 'text/plain' }~
+** Processing line: ~ end~
+** Processing line: ~ return true~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
** Processing line: ~*** args.rb~
- H3 detected.
- Determining if line is a header.
@@ -231847,6 +240685,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ class Args~
** Processing line: ~ include ArgsDeprecated~
** Processing line: ~ include Serialize~
+** Processing line: ~ attr_accessor :cvars~
** Processing line: ~ attr_accessor :inputs~
** Processing line: ~ attr_accessor :outputs~
** Processing line: ~ attr_accessor :audio~
@@ -231867,6 +240706,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ def initialize runtime, recording~
** Processing line: ~ @inputs = Inputs.new~
** Processing line: ~ @outputs = Outputs.new args: self~
+** Processing line: ~ @cvars = {}~
** Processing line: ~ @audio = {}~
** Processing line: ~ @passes = []~
** Processing line: ~ @state = OpenEntity.new~
@@ -232409,14 +241249,17 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ class Console~
** Processing line: ~ include ConsoleDeprecated~
** Processing line: ~~
-** Processing line: ~ attr_accessor :show_reason, :log, :logo, :background_color,~
-** Processing line: ~ :text_color, :animation_duration,~
+** Processing line: ~ attr_accessor :show_reason, :log, :logo,~
+** Processing line: ~ :animation_duration,~
** Processing line: ~ :max_log_lines, :max_history, :log,~
-** Processing line: ~ :last_command_errored, :last_command, :error_color, :shown_at,~
-** Processing line: ~ :header_color, :archived_log, :last_log_lines, :last_log_lines_count,~
+** Processing line: ~ :last_command_errored, :last_command, :shown_at,~
+** Processing line: ~ :archived_log, :last_log_lines, :last_log_lines_count,~
** Processing line: ~ :suppress_left_arrow_behavior, :command_set_at,~
** Processing line: ~ :toast_ids, :bottom,~
-** Processing line: ~ :font_style, :menu~
+** Processing line: ~ :font_style, :menu,~
+** Processing line: ~ :background_color, :spam_color, :text_color, :warn_color,~
+** Processing line: ~ :error_color, :header_color, :code_color, :comment_color,~
+** Processing line: ~ :debug_color, :unfiltered_color~
** Processing line: ~~
** Processing line: ~ def initialize~
** Processing line: ~ @font_style = FontStyle.new(font: 'font.ttf', size_enum: -1.5, line_height: 1.1)~
@@ -232434,15 +241277,22 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ @command_history_index = -1~
** Processing line: ~ @nonhistory_input = ''~
** Processing line: ~ @logo = 'console-logo.png'~
-** Processing line: ~ @history_fname = 'console_history.txt'~
+** Processing line: ~ @history_fname = 'logs/console_history.txt'~
** Processing line: ~ @background_color = Color.new [0, 0, 0, 224]~
-** Processing line: ~ @text_color = Color.new [255, 255, 255]~
-** Processing line: ~ @error_color = Color.new [200, 50, 50]~
** Processing line: ~ @header_color = Color.new [100, 200, 220]~
** Processing line: ~ @code_color = Color.new [210, 168, 255]~
-** Processing line: ~ @comment_color = Color.new [0, 200, 100]~
+** Processing line: ~ @comment_color = Color.new [0, 200, 100]~
** Processing line: ~ @animation_duration = 1.seconds~
** Processing line: ~ @shown_at = -1~
+** Processing line: ~~
+** Processing line: ~ # these are the colors for text at various log levels.~
+** Processing line: ~ @spam_color = Color.new [160, 160, 160]~
+** Processing line: ~ @debug_color = Color.new [0, 255, 0]~
+** Processing line: ~ @text_color = Color.new [255, 255, 255]~
+** Processing line: ~ @warn_color = Color.new [255, 255, 0]~
+** Processing line: ~ @error_color = Color.new [200, 50, 50]~
+** Processing line: ~ @unfiltered_color = Color.new [0, 255, 255]~
+** Processing line: ~~
** Processing line: ~ load_history~
** Processing line: ~ end~
** Processing line: ~~
@@ -232508,7 +241358,13 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ def add_text obj~
+** Processing line: ~ def add_text obj, loglevel=-1~
+** Processing line: ~ # loglevel is one of the values of LogLevel in logging.h, or -1 to say "we don't care, colorize it with your special string parsing magic"~
+** Processing line: ~ loglevel = -1 if loglevel < 0~
+** Processing line: ~ loglevel = 5 if loglevel > 5 # 5 == unfiltered (it's 0x7FFFFFFE in C, clamp it down)~
+** Processing line: ~ loglevel = 2 if (loglevel == -1) && obj.start_with?('!c!') # oh well~
+** Processing line: ~ colorstr = (loglevel != -1) ? "!c!#{loglevel}" : nil~
+** Processing line: ~~
** Processing line: ~ @last_log_lines_count ||= 1~
** Processing line: ~ @log_invocation_count += 1~
** Processing line: ~~
@@ -232517,12 +241373,18 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ log_lines = []~
** Processing line: ~~
** Processing line: ~ str.each_line do |s|~
-** Processing line: ~ s.wrapped_lines(self.console_text_width).each do |l|~
-** Processing line: ~ log_lines << l~
+** Processing line: ~ if colorstr.nil?~
+** Processing line: ~ s.wrapped_lines(self.console_text_width).each do |l|~
+** Processing line: ~ log_lines << l~
+** Processing line: ~ end~
+** Processing line: ~ else~
+** Processing line: ~ s.wrapped_lines(self.console_text_width).each do |l|~
+** Processing line: ~ log_lines << "#{colorstr}#{l}"~
+** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ if log_lines == @last_log_lines~
+** Processing line: ~ if log_lines == @last_log_lines && log_lines.length != 0~
** Processing line: ~ @last_log_lines_count += 1~
** Processing line: ~ new_log_line_with_count = @last_log_lines.last + " (#{@last_log_lines_count})"~
** Processing line: ~ if log_lines.length > 1~
@@ -232797,10 +241659,12 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ def mouse_wheel_scroll args~
** Processing line: ~ @inertia ||= 0~
** Processing line: ~~
-** Processing line: ~ if args.inputs.mouse.wheel && args.inputs.mouse.wheel.y > 0~
-** Processing line: ~ @inertia = 1~
-** Processing line: ~ elsif args.inputs.mouse.wheel && args.inputs.mouse.wheel.y < 0~
-** Processing line: ~ @inertia = -1~
+** Processing line: ~ if args.inputs.mouse.wheel~
+** Processing line: ~ if args.inputs.mouse.wheel.y > 0~
+** Processing line: ~ @inertia = 1~
+** Processing line: ~ elsif args.inputs.mouse.wheel.y < 0~
+** Processing line: ~ @inertia = -1~
+** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.inputs.mouse.click~
@@ -232809,13 +241673,11 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~ return if @inertia == 0~
** Processing line: ~~
-** Processing line: ~ if @inertia != 0~
-** Processing line: ~ @inertia = (@inertia * 0.7)~
-** Processing line: ~ if @inertia > 0~
-** Processing line: ~ @log_offset -= 1~
-** Processing line: ~ elsif @inertia < 0~
-** Processing line: ~ @log_offset += 1~
-** Processing line: ~ end~
+** Processing line: ~ @inertia = (@inertia * 0.7)~
+** Processing line: ~ if @inertia > 0~
+** Processing line: ~ @log_offset += 1~
+** Processing line: ~ elsif @inertia < 0~
+** Processing line: ~ @log_offset -= 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if @inertia.abs < 0.01~
@@ -232931,7 +241793,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ def write_line(args, left, y, str, archived: false)~
** Processing line: ~ color = color_for_log_entry(str)~
** Processing line: ~ color = color.mult_alpha(0.5) if archived~
-** Processing line: ~~
+** Processing line: ~ str = str[4..-1] if str.start_with?('!c!') # chop off loglevel color~
** Processing line: ~ args.outputs.reserved << font_style.label(x: left.shift_right(10), y: y, text: str, color: color)~
** Processing line: ~ end~
** Processing line: ~~
@@ -233167,7 +242029,9 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ return false~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ def color_for_log_entry(log_entry)~
+** Processing line: ~ def color_for_plain_text log_entry~
+** Processing line: ~ log_entry = log_entry[4..-1] if log_entry.start_with? "!c!"~
+** Processing line: ~~
** Processing line: ~ if code? log_entry~
** Processing line: ~ @code_color~
** Processing line: ~ elsif code_comment? log_entry~
@@ -233187,6 +242051,29 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
+** Processing line: ~ def color_for_log_entry(log_entry)~
+** Processing line: ~ if log_entry.start_with?('!c!') # loglevel color specified.~
+** Processing line: ~ return case log_entry[3..3].to_i~
+** Processing line: ~ when 0 # spam~
+** Processing line: ~ @spam_color~
+** Processing line: ~ when 1 # debug~
+** Processing line: ~ @debug_color~
+** Processing line: ~ #when 2 # info (caught by the `else` block.)~
+** Processing line: ~ # @text_color~
+** Processing line: ~ when 3 # warn~
+** Processing line: ~ @warn_color~
+** Processing line: ~ when 4 # error~
+** Processing line: ~ @error_color~
+** Processing line: ~ when 5 # unfiltered~
+** Processing line: ~ @unfiltered_color~
+** Processing line: ~ else~
+** Processing line: ~ color_for_plain_text log_entry~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ return color_for_plain_text log_entry~
+** Processing line: ~ end~
+** Processing line: ~~
** Processing line: ~ def prompt~
** Processing line: ~ @prompt ||= Prompt.new(font_style: font_style, text_color: @text_color, console_text_width: console_text_width)~
** Processing line: ~ end~
@@ -233698,11 +242585,11 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~ # partition the original list of items into a string to be printed~
** Processing line: ~ items.each_slice(columns).each_with_index do |cells, i|~
-** Processing line: ~ pretty_print_row_seperator string_width, cell_width, column_width, columns~
+** Processing line: ~ pretty_print_row_separator string_width, cell_width, column_width, columns~
** Processing line: ~ pretty_print_row cells, string_width, cell_width, column_width, columns~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ pretty_print_row_seperator string_width, cell_width, column_width, columns~
+** Processing line: ~ pretty_print_row_separator string_width, cell_width, column_width, columns~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
@@ -234614,8 +243501,8 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ ease_extended start_tick,~
** Processing line: ~ current_tick,~
** Processing line: ~ start_tick + duration,~
-** Processing line: ~ (initial_value *definitions),~
-** Processing line: ~ (final_value *definitions),~
+** Processing line: ~ initial_value(*definitions),~
+** Processing line: ~ final_value(*definitions),~
** Processing line: ~ *definitions~
** Processing line: ~ end~
** Processing line: ~~
@@ -234840,8 +243727,8 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ module GTK~
** Processing line: ~ module Geometry~
** Processing line: ~ def self.rotate_point point, angle, around = nil~
-** Processing line: ~ s = Math.sin a.to_radians~
-** Processing line: ~ c = Math.cos a.to_radians~
+** Processing line: ~ s = Math.sin angle.to_radians~
+** Processing line: ~ c = Math.cos angle.to_radians~
** Processing line: ~ px = point.x~
** Processing line: ~ py = point.y~
** Processing line: ~ cx = 0~
@@ -235022,8 +243909,16 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
-** Processing line: ~ def self.line_y_intercept line~
-** Processing line: ~ line.y - line_slope(line) * line.x~
+** Processing line: ~ def self.line_y_intercept line, replace_infinity: nil~
+** Processing line: ~ line.y - line_slope(line, replace_infinity: replace_infinity) * line.x~
+** Processing line: ~ rescue Exception => e~
+** Processing line: ~ raise <<-S~
+** Processing line: ~ * ERROR: ~Geometry::line_y_intercept~~
+** Processing line: ~ The following exception was thrown for line: #{line}~
+** Processing line: ~ #{e}~
+** Processing line: ~~
+** Processing line: ~ Consider passing in ~replace_infinity: VALUE~ to handle for vertical lines.~
+** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
@@ -235099,14 +243994,22 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
-** Processing line: ~ def self.line_intersect line_one, line_two~
-** Processing line: ~ m1 = line_slope(line_one)~
-** Processing line: ~ m2 = line_slope(line_two)~
-** Processing line: ~ b1 = line_y_intercept(line_one)~
-** Processing line: ~ b2 = line_y_intercept(line_two)~
+** Processing line: ~ def self.line_intersect line_one, line_two, replace_infinity: nil~
+** Processing line: ~ m1 = line_slope(line_one, replace_infinity: replace_infinity)~
+** Processing line: ~ m2 = line_slope(line_two, replace_infinity: replace_infinity)~
+** Processing line: ~ b1 = line_y_intercept(line_one, replace_infinity: replace_infinity)~
+** Processing line: ~ b2 = line_y_intercept(line_two, replace_infinity: replace_infinity)~
** Processing line: ~ x = (b1 - b2) / (m2 - m1)~
** Processing line: ~ y = (-b2.fdiv(m2) + b1.fdiv(m1)).fdiv(1.fdiv(m1) - 1.fdiv(m2))~
** Processing line: ~ [x, y]~
+** Processing line: ~ rescue Exception => e~
+** Processing line: ~ raise <<-S~
+** Processing line: ~ * ERROR: ~Geometry::line_intersect~~
+** Processing line: ~ The following exception was thrown for line_one: #{line_one}, line_two: #{line_two}~
+** Processing line: ~ #{e}~
+** Processing line: ~~
+** Processing line: ~ Consider passing in ~replace_infinity: VALUE~ to handle for vertical lines.~
+** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.contract_intersect_rect?~
@@ -235821,7 +244724,8 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ value = Kernel.tick_count if value~
** Processing line: ~~
** Processing line: ~ collection.each do |m|~
-** Processing line: ~ self.instance_variable_set("@#{m.to_s}".to_sym, value)~
+** Processing line: ~ m_to_s = m.to_s~
+** Processing line: ~ self.instance_variable_set("@#{m_to_s}".to_sym, value) if m_to_s.strip.length > 0~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, <<-S~
** Processing line: ~ * ERROR:~
@@ -236380,6 +245284,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ :check_for_dev_profile,~
** Processing line: ~~
** Processing line: ~ *app_metadata_retrieval_steps,~
+** Processing line: ~ :determine_devcert,~
** Processing line: ~~
** Processing line: ~ :clear_tmp_directory,~
** Processing line: ~ :stage_app,~
@@ -236408,6 +245313,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ :determine_app_version,~
** Processing line: ~~
** Processing line: ~ *app_metadata_retrieval_steps,~
+** Processing line: ~ :determine_prodcert,~
** Processing line: ~~
** Processing line: ~ :clear_tmp_directory,~
** Processing line: ~ :stage_app,~
@@ -236602,6 +245508,10 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ appid=~
** Processing line: ~ # appname is the name you want to show up underneath the app icon on the device. Keep it under 10 characters.~
** Processing line: ~ appname=~
+** Processing line: ~ # devcert is the certificate to use for development/deploying to your local device~
+** Processing line: ~ devcert=~
+** Processing line: ~ # prodcert is the certificate to use for distribution to the app store~
+** Processing line: ~ prodcert=~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
@@ -236637,7 +245547,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ def raise_ios_metadata_required~
** Processing line: ~ raise WizardException.new(~
** Processing line: ~ "* mygame/metadata/ios_metadata.txt needs to be filled out.",~
-** Processing line: ~ "You need to update metadata/ios_metadata.txt with a valid teamid, appname, and appid.",~
+** Processing line: ~ "You need to update metadata/ios_metadata.txt with a valid teamid, appname, appid, devcert, and prodcert.",~
** Processing line: ~ "Instructions for where the values should come from are within metadata/ios_metadata.txt."~
** Processing line: ~ )~
** Processing line: ~ end~
@@ -236677,7 +245587,19 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ def determine_app_id~
** Processing line: ~ @app_id = ios_metadata.appid~
** Processing line: ~ raise_ios_metadata_required if @app_id.strip.length == 0~
-** Processing line: ~ log_info "App Identifier is set to : #{@app_id}"~
+** Processing line: ~ log_info "App Identifier is set to: #{@app_id}"~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def determine_devcert~
+** Processing line: ~ @certificate_name = ios_metadata.devcert~
+** Processing line: ~ raise_ios_metadata_required if @certificate_name.strip.length == 0~
+** Processing line: ~ log_info "Dev Certificate is set to: #{@certificate_name}"~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def determine_prodcert~
+** Processing line: ~ @certificate_name = ios_metadata.prodcert~
+** Processing line: ~ raise_ios_metadata_required if @certificate_name.strip.length == 0~
+** Processing line: ~ log_info "Production (Distribution) Certificate is set to: #{@certificate_name}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def set_app_name name~
@@ -236699,12 +245621,6 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ sh "rm -rf #{tmp_directory}"~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ def stage_app~
-** Processing line: ~ log_info "Staging."~
-** Processing line: ~ sh "mkdir -p #{tmp_directory}"~
-** Processing line: ~ sh "cp -R #{relative_path}/dragonruby-ios.app \"#{tmp_directory}/#{@app_name}.app\""~
-** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ def set_app_id id~
** Processing line: ~ log_info = "App Id set to: #{id}"~
** Processing line: ~ @app_id = id~
@@ -236735,34 +245651,13 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ def check_for_certs~
** Processing line: ~ log_info "Attempting to find certificates on your computer."~
** Processing line: ~~
-** Processing line: ~ if !cli_app_exist?(security_cli_app)~
-** Processing line: ~ raise WizardException.new(~
-** Processing line: ~ "* It doesn't look like you have #{security_cli_app}.",~
-** Processing line: ~ "** 1. Open Disk Utility and run First Aid.",~
-** Processing line: ~ { w: 700, h: 148, path: get_reserved_sprite("disk-utility.png") },~
-** Processing line: ~ )~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ if valid_certs.length == 0~
-** Processing line: ~ raise WizardException.new(~
-** Processing line: ~ "* It doesn't look like you have any valid certs installed.",~
-** Processing line: ~ "** 1. Open Xcode.",~
-** Processing line: ~ "** 2. Log into your developer account. Xcode -> Preferences -> Accounts.",~
-** Processing line: ~ { w: 700, h: 98, path: get_reserved_sprite("login-xcode.png") },~
-** Processing line: ~ "** 3. After loggin in, select Manage Certificates...",~
-** Processing line: ~ { w: 700, h: 115, path: get_reserved_sprite("manage-certificates.png") },~
-** Processing line: ~ "** 4. Add a certificate for Apple Development.",~
-** Processing line: ~ { w: 700, h: 217, path: get_reserved_sprite("add-cert.png") },~
-** Processing line: ~ )~
-** Processing line: ~ raise "You do not have any Apple development certs on this computer."~
-** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ if @production_build~
-** Processing line: ~ @certificate_name = valid_certs.find_all { |f| f[:name].include? "Distribution" }.first[:name]~
+** Processing line: ~ @certificate_name = ios_metadata[:prodcert]~
** Processing line: ~ else~
-** Processing line: ~ @certificate_name = valid_certs.find_all { |f| f[:name].include? "Development" }.first[:name]~
+** Processing line: ~ @certificate_name = ios_metadata[:devcert]~
** Processing line: ~ end~
-** Processing line: ~ log_info "I will be using Certificate: '#{@certificate_name}'."~
+** Processing line: ~~
+** Processing line: ~ log_info "I will be using certificate: '#{@certificate_name}'."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def idevice_id_cli_app~
@@ -236777,24 +245672,6 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ "xcodebuild"~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ def valid_certs~
-** Processing line: ~ certs = sh("#{security_cli_app} -q find-identity -p codesigning -v").each_line.map do |l|~
-** Processing line: ~ if l.include?(")") && !l.include?("Developer ID") && (l.include?("Development") || l.include?("Distribution"))~
-** Processing line: ~ l.strip~
-** Processing line: ~ else~
-** Processing line: ~ nil~
-** Processing line: ~ end~
-** Processing line: ~ end.reject_nil.map do |l|~
-** Processing line: ~ number, id, name = l.split(' ', 3)~
-** Processing line: ~ name = name.gsub("\"", "") if name~
-** Processing line: ~ {~
-** Processing line: ~ number: 1,~
-** Processing line: ~ id: id,~
-** Processing line: ~ name: name~
-** Processing line: ~ }~
-** Processing line: ~ end~
-** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ def connected_devices~
** Processing line: ~ sh("idevice_id -l").strip.each_line.map do |l|~
** Processing line: ~ l.strip~
@@ -237324,6 +246201,9 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def stage_app~
+** Processing line: ~ log_info "Staging."~
+** Processing line: ~ sh "mkdir -p #{tmp_directory}"~
+** Processing line: ~ sh "cp -R #{relative_path}/dragonruby-ios.app \"#{tmp_directory}/#{@app_name}.app\""~
** Processing line: ~ sh %Q[cp -r "#{root_folder}/app/" "#{app_path}/app/"]~
** Processing line: ~ sh %Q[cp -r "#{root_folder}/sounds/" "#{app_path}/sounds/"]~
** Processing line: ~ sh %Q[cp -r "#{root_folder}/sprites/" "#{app_path}/sprites/"]~
@@ -239236,26 +248116,6 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ (0..self).to_a~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ def >= other~
-** Processing line: ~ return false if !other~
-** Processing line: ~ return gte other~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def > other~
-** Processing line: ~ return false if !other~
-** Processing line: ~ return gt other~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def <= other~
-** Processing line: ~ return false if !other~
-** Processing line: ~ return lte other~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def < other~
-** Processing line: ~ return false if !other~
-** Processing line: ~ return gt other~
-** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def map~
** Processing line: ~ unless block_given?~
@@ -239341,34 +248201,6 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ def - other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ self - other~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :-, e~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def + other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ self + other~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :+, e~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def * other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ self * other~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :*, e~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def / other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ self / other~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :/, e~
-** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ self~
** Processing line: ~ end~
@@ -239423,34 +248255,6 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ return !even?~
** Processing line: ~ end~
** Processing line: ~~
-** Processing line: ~ def + other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ self + other~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :+, e~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def * other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ self * other~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :*, e~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def / other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ self / other~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :/, e~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def - other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ self - other~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :-, e~
-** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ # Returns `-1` if the number is less than `0`. `+1` if the number~
** Processing line: ~ # is greater than `0`. Returns `0` if the number is equal to `0`.~
** Processing line: ~ #~
@@ -239506,34 +248310,6 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ alias_method :__original_multiply__, :* unless Float.instance_methods.include? :__original_multiply__~
** Processing line: ~ alias_method :__original_divide__, :- unless Float.instance_methods.include? :__original_divide__~
** Processing line: ~~
-** Processing line: ~ def - other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ super~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :-, e~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def + other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ super~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :+, e~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def * other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ super~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :*, e~
-** Processing line: ~ end~
-** Processing line: ~~
-** Processing line: ~ def / other~
-** Processing line: ~ return self unless other~
-** Processing line: ~ super~
-** Processing line: ~ rescue Exception => e~
-** Processing line: ~ __raise_arithmetic_exception__ other, :/, e~
-** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ self~
** Processing line: ~ end~
@@ -239585,6 +248361,287 @@ Follows is a source code listing for all files that have been open sourced. This
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
+** Processing line: ~*** recording.rb~
+- H3 detected.
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~recording.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+- Determining if line is a header.
+- Line contains ~*** ~... gsub-ing empty string
+- Formatting line: ~recording.rb~
+- Line's tilde count is: 0
+- Line contains link marker: false
+** Processing line: ~~
+** Processing line: ~#+begin_src ruby~
+- PRE start detected.
+** Processing line: ~ # ./dragon/recording.rb~
+** Processing line: ~ # coding: utf-8~
+** Processing line: ~ # Copyright 2019 DragonRuby LLC~
+** Processing line: ~ # MIT License~
+** Processing line: ~ # recording.rb has been released under MIT (*only this file*).~
+** Processing line: ~~
+** Processing line: ~ module GTK~
+** Processing line: ~ # FIXME: Gross~
+** Processing line: ~ # @gtk~
+** Processing line: ~ class Replay~
+** Processing line: ~ # @gtk~
+** Processing line: ~ def self.start file_name = nil~
+** Processing line: ~ $recording.start_replay file_name~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # @gtk~
+** Processing line: ~ def self.stop~
+** Processing line: ~ $recording.stop_replay~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # @gtk~
+** Processing line: ~ class Recording~
+** Processing line: ~ def initialize runtime~
+** Processing line: ~ @runtime = runtime~
+** Processing line: ~ @tick_count = 0~
+** Processing line: ~ @global_input_order = 1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def tick~
+** Processing line: ~ @tick_count += 1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def start_recording seed_number = nil~
+** Processing line: ~ if !seed_number~
+** Processing line: ~ log <<-S~
+** Processing line: ~ * ERROR:~
+** Processing line: ~ To start recording, you must provide an integer value to~
+** Processing line: ~ seed random number generation.~
+** Processing line: ~ S~
+** Processing line: ~ $console.set_command "$recording.start SEED_NUMBER"~
+** Processing line: ~ return~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if @is_recording~
+** Processing line: ~ log <<-S~
+** Processing line: ~ * ERROR:~
+** Processing line: ~ You are already recording, first cancel (or stop) the current recording.~
+** Processing line: ~ S~
+** Processing line: ~ $console.set_command "$recording.cancel"~
+** Processing line: ~ return~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if @is_replaying~
+** Processing line: ~ log <<-S~
+** Processing line: ~ * ERROR:~
+** Processing line: ~ You are currently replaying a recording, first stop the replay.~
+** Processing line: ~ S~
+** Processing line: ~ return~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ log_info <<-S~
+** Processing line: ~ Recording has begun with RNG seed value set to #{seed_number}.~
+** Processing line: ~ To stop recording use stop_recording(filename).~
+** Processing line: ~ The recording will stop without saving a file if a filename is nil.~
+** Processing line: ~ S~
+** Processing line: ~~
+** Processing line: ~ $console.set_command "$recording.stop 'replay.txt'"~
+** Processing line: ~ @runtime.__reset__~
+** Processing line: ~ @seed_number = seed_number~
+** Processing line: ~ @runtime.set_rng seed_number~
+** Processing line: ~~
+** Processing line: ~ @tick_count = 0~
+** Processing line: ~ @global_input_order = 1~
+** Processing line: ~ @is_recording = true~
+** Processing line: ~ @input_history = []~
+** Processing line: ~ @runtime.notify! "Recording started. When completed, open the console to save it using $recording.stop FILE_NAME (or cancel).", 300~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # @gtk~
+** Processing line: ~ def start seed_number = nil~
+** Processing line: ~ start_recording seed_number~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def is_replaying?~
+** Processing line: ~ @is_replaying~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def is_recording?~
+** Processing line: ~ @is_recording~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # @gtk~
+** Processing line: ~ def stop file_name = nil~
+** Processing line: ~ stop_recording file_name~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ # @gtk~
+** Processing line: ~ def cancel~
+** Processing line: ~ stop_recording_core~
+** Processing line: ~ @runtime.notify! "Recording cancelled."~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def stop_recording file_name = nil~
+** Processing line: ~ if !file_name~
+** Processing line: ~ log <<-S~
+** Processing line: ~ * ERROR:~
+** Processing line: ~ To please specify a file name when calling:~
+** Processing line: ~ $recording.stop FILE_NAME~
+** Processing line: ~~
+** Processing line: ~ If you do NOT want to save the recording, call:~
+** Processing line: ~ $recording.cancel~
+** Processing line: ~ S~
+** Processing line: ~ $console.set_command "$recording.stop 'replay.txt'"~
+** Processing line: ~ return~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if !@is_recording~
+** Processing line: ~ log_info "You are not currently recording. Use start_recording(seed_number) to start recording."~
+** Processing line: ~ $console.set_command "$recording.start"~
+** Processing line: ~ return~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ if file_name~
+** Processing line: ~ text = "replay_version 2.0\n"~
+** Processing line: ~ text << "stopped_at #{@tick_count}\n"~
+** Processing line: ~ text << "seed #{@seed_number}\n"~
+** Processing line: ~ text << "recorded_at #{Time.now.to_s}\n"~
+** Processing line: ~ @input_history.each do |items|~
+** Processing line: ~ text << "#{items}\n"~
+** Processing line: ~ end~
+** Processing line: ~ @runtime.write_file file_name, text~
+** Processing line: ~ @runtime.write_file 'last_replay.txt', text~
+** Processing line: ~ log_info "The recording has been saved successfully at #{file_name}. You can use start_replay(\"#{file_name}\") to replay the recording."~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ $console.set_command "$replay.start '#{file_name}'"~
+** Processing line: ~ stop_recording_core~
+** Processing line: ~ @runtime.notify! "Recording saved to #{file_name}. To replay it: $replay.start \"#{file_name}\"."~
+** Processing line: ~ log_info "You can run the replay later on startup using: ./dragonruby mygame --replay #{@replay_file_name}"~
+** Processing line: ~ nil~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def stop_recording_core~
+** Processing line: ~ @is_recording = false~
+** Processing line: ~ @input_history = nil~
+** Processing line: ~ @last_history = nil~
+** Processing line: ~ @runtime.__reset__~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def start_replay file_name = nil~
+** Processing line: ~ if !file_name~
+** Processing line: ~ log <<-S~
+** Processing line: ~ * ERROR:~
+** Processing line: ~ Please provide a file name to $recording.start.~
+** Processing line: ~ S~
+** Processing line: ~ $console.set_command "$replay.start 'replay.txt'"~
+** Processing line: ~ return~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ text = @runtime.read_file file_name~
+** Processing line: ~ return false unless text~
+** Processing line: ~~
+** Processing line: ~ if text.each_line.first.strip != "replay_version 2.0"~
+** Processing line: ~ raise "The replay file #{file_name} is not compatible with this version of DragonRuby Game Toolkit. Please recreate the replay (sorry)."~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ @replay_file_name = file_name~
+** Processing line: ~~
+** Processing line: ~ $replay_data = { input_history: { } }~
+** Processing line: ~ text.each_line do |l|~
+** Processing line: ~ if l.strip.length == 0~
+** Processing line: ~ next~
+** Processing line: ~ elsif l.start_with? 'replay_version'~
+** Processing line: ~ next~
+** Processing line: ~ elsif l.start_with? 'seed'~
+** Processing line: ~ $replay_data[:seed] = l.split(' ').last.to_i~
+** Processing line: ~ elsif l.start_with? 'stopped_at'~
+** Processing line: ~ $replay_data[:stopped_at] = l.split(' ').last.to_i~
+** Processing line: ~ elsif l.start_with? 'recorded_at'~
+** Processing line: ~ $replay_data[:recorded_at] = l.split(' ')[1..-1].join(' ')~
+** Processing line: ~ elsif l.start_with? '['~
+** Processing line: ~ name, value_1, value_2, value_count, id, tick_count = l.strip.gsub('[', '').gsub(']', '').split(',')~
+** Processing line: ~ $replay_data[:input_history][tick_count.to_i] ||= []~
+** Processing line: ~ $replay_data[:input_history][tick_count.to_i] << {~
+** Processing line: ~ id: id.to_i,~
+** Processing line: ~ name: name.gsub(':', '').to_sym,~
+** Processing line: ~ value_1: value_1.to_f,~
+** Processing line: ~ value_2: value_2.to_f,~
+** Processing line: ~ value_count: value_count.to_i~
+** Processing line: ~ }~
+** Processing line: ~ else~
+** Processing line: ~ raise "Replay data seems corrupt. I don't know how to parse #{l}."~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ $replay_data[:input_history].keys.each do |key|~
+** Processing line: ~ $replay_data[:input_history][key] = $replay_data[:input_history][key].sort_by {|input| input[:id]}~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ @runtime.__reset__~
+** Processing line: ~ @runtime.set_rng $replay_data[:seed]~
+** Processing line: ~ @tick_count = 0~
+** Processing line: ~ @is_replaying = true~
+** Processing line: ~ log_info "Replay has been started."~
+** Processing line: ~ @runtime.notify! "Replay started [#{@replay_file_name}]."~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def stop_replay notification_message = "Replay has been stopped."~
+** Processing line: ~ if !is_replaying?~
+** Processing line: ~ log <<-S~
+** Processing line: ~ * ERROR:~
+** Processing line: ~ No replay is currently running. Call $replay.start FILE_NAME to start a replay.~
+** Processing line: ~ S~
+** Processing line: ~~
+** Processing line: ~ $console.set_command "$replay.start 'replay.txt'"~
+** Processing line: ~ return~
+** Processing line: ~ end~
+** Processing line: ~ log_info notification_message~
+** Processing line: ~ @is_replaying = false~
+** Processing line: ~ $replay_data = nil~
+** Processing line: ~ @tick_count = 0~
+** Processing line: ~ @global_input_order = 1~
+** Processing line: ~ $console.set_command_silent "$replay.start '#{@replay_file_name}'"~
+** Processing line: ~ @runtime.__reset__~
+** Processing line: ~ @runtime.notify! notification_message~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def record_input_history name, value_1, value_2, value_count, clear_cache = false~
+** Processing line: ~ return if @is_replaying~
+** Processing line: ~ return unless @is_recording~
+** Processing line: ~ @input_history << [name, value_1, value_2, value_count, @global_input_order, @tick_count]~
+** Processing line: ~ @global_input_order += 1~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ def stage_replay_values~
+** Processing line: ~ return unless @is_replaying~
+** Processing line: ~ return unless $replay_data~
+** Processing line: ~~
+** Processing line: ~ if $replay_data[:stopped_at] <= @tick_count~
+** Processing line: ~ stop_replay "Replay completed [#{@replay_file_name}]. To rerun, bring up the Console and press enter."~
+** Processing line: ~ return~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ inputs_this_tick = $replay_data[:input_history][@tick_count]~
+** Processing line: ~~
+** Processing line: ~ if @tick_count.zmod? 60~
+** Processing line: ~ log_info "Replay ends in #{($replay_data[:stopped_at] - @tick_count).idiv 60} second(s)."~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~ return unless inputs_this_tick~
+** Processing line: ~ inputs_this_tick.each do |v|~
+** Processing line: ~ args = []~
+** Processing line: ~ args << v[:value_1] if v[:value_count] >= 1~
+** Processing line: ~ args << v[:value_2] if v[:value_count] >= 2~
+** Processing line: ~ args << :replay~
+** Processing line: ~ $gtk.send v[:name], *args~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~ end~
+** Processing line: ~~
+** Processing line: ~#+end_src~
+- PRE end detected.
+** Processing line: ~~
+** Processing line: ~~
** Processing line: ~*** remote_hotload_client.rb~
- H3 detected.
- Determining if line is a header.
@@ -239999,14 +249056,13 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ log <<-S~
** Processing line: ~ ** Invoking :#{name}...~
** Processing line: ~ S~
-** Processing line: ~ time_start = Time.now~
** Processing line: ~ idx = 0~
** Processing line: ~ r = nil~
+** Processing line: ~ time_start = Time.now~
** Processing line: ~ while idx < iterations~
** Processing line: ~ r = proc.call~
** Processing line: ~ idx += 1~
** Processing line: ~ end~
-** Processing line: ~~
** Processing line: ~ result = (Time.now - time_start).round 3~
** Processing line: ~~
** Processing line: ~ { name: name,~
@@ -240146,7 +249202,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ fn.each_send pass.borders, self, :draw_border~
** Processing line: ~ fn.each_send pass.static_borders, self, :draw_border~
** Processing line: ~~
-** Processing line: ~ if !$gtk.production~
+** Processing line: ~ if !self.production~
** Processing line: ~ fn.each_send pass.debug, self, :draw_primitive~
** Processing line: ~ fn.each_send pass.static_debug, self, :draw_primitive~
** Processing line: ~ end~
@@ -240163,6 +249219,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ if s.respond_to? :draw_override~
** Processing line: ~ s.draw_override @ffi_draw~
** Processing line: ~ else~
+** Processing line: ~ s = s.as_hash if s.is_a? OpenEntity~
** Processing line: ~ @ffi_draw.draw_solid_2 s.x, s.y, s.w, s.h,~
** Processing line: ~ s.r, s.g, s.b, s.a,~
** Processing line: ~ (s.blendmode_enum || 1)~
@@ -240176,6 +249233,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ if s.respond_to? :draw_override~
** Processing line: ~ s.draw_override @ffi_draw~
** Processing line: ~ else~
+** Processing line: ~ s = s.as_hash if s.is_a? OpenEntity~
** Processing line: ~ @ffi_draw.draw_sprite_4 s.x, s.y, s.w, s.h,~
** Processing line: ~ (s.path || '').to_s,~
** Processing line: ~ s.angle,~
@@ -240195,6 +249253,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ if s.respond_to? :draw_override~
** Processing line: ~ s.draw_override @ffi_draw~
** Processing line: ~ else~
+** Processing line: ~ s = s.as_hash if s.is_a? OpenEntity~
** Processing line: ~ @ffi_draw.draw_screenshot (s.path || '').to_s,~
** Processing line: ~ s.x, s.y, s.w, s.h,~
** Processing line: ~ s.angle,~
@@ -240213,6 +249272,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ if l.respond_to? :draw_override~
** Processing line: ~ l.draw_override @ffi_draw~
** Processing line: ~ else~
+** Processing line: ~ l = l.as_hash if l.is_a? OpenEntity~
** Processing line: ~ @ffi_draw.draw_label_3 l.x, l.y,~
** Processing line: ~ (l.text || '').to_s,~
** Processing line: ~ l.size_enum, l.alignment_enum,~
@@ -240230,6 +249290,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ if l.respond_to? :draw_override~
** Processing line: ~ l.draw_override @ffi_draw~
** Processing line: ~ else~
+** Processing line: ~ l = l.as_hash if l.is_a? OpenEntity~
** Processing line: ~ if l.x2~
** Processing line: ~ @ffi_draw.draw_line_2 l.x, l.y, l.x2, l.y2,~
** Processing line: ~ l.r, l.g, l.b, l.a,~
@@ -240255,6 +249316,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ if s.respond_to? :draw_override~
** Processing line: ~ s.draw_override @ffi_draw~
** Processing line: ~ else~
+** Processing line: ~ s = s.as_hash if s.is_a? OpenEntity~
** Processing line: ~ @ffi_draw.draw_border_2 s.x, s.y, s.w, s.h,~
** Processing line: ~ s.r, s.g, s.b, s.a,~
** Processing line: ~ (s.blendmode_enum || 1)~
@@ -240337,7 +249399,7 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ if @tick_speed_count > 60 * 2~
** Processing line: ~ if framerate_below_threshold?~
** Processing line: ~ @last_framerate = current_framerate~
-** Processing line: ~ if [email protected]?~
+** Processing line: ~ if [email protected]? && [email protected]_replaying?~
** Processing line: ~ log framerate_warning_message~
** Processing line: ~ end~
** Processing line: ~ end~
@@ -241335,9 +250397,9 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~~
** Processing line: ~ def $top_level.slds! *os~
** Processing line: ~ if (os.first.is_a? Numeric)~
-** Processing line: ~ sld! *os~
+** Processing line: ~ sld!(*os)~
** Processing line: ~ else~
-** Processing line: ~ os.each { |o| sld! *o }~
+** Processing line: ~ os.each { |o| sld!(*o) }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
@@ -241385,6 +250447,31 @@ Follows is a source code listing for all files that have been open sourced. This
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
+** Processing line: ~ =begin~
+** Processing line: ~ wht = [255] * 3~
+** Processing line: ~ red = [255, 0, 0]~
+** Processing line: ~ blu = [0, 130, 255]~
+** Processing line: ~ purp = [150, 80, 255]~
+** Processing line: ~~
+** Processing line: ~ TICK {~
+** Processing line: ~ bg! 0~
+** Processing line: ~~
+** Processing line: ~ slds << [0, 0, 3, 3, 0, 255, 0, 255]~
+** Processing line: ~~
+** Processing line: ~ sld! 10, 10~
+** Processing line: ~ sld! 20, 20, 3, 2~
+** Processing line: ~ sld! 30, 30, 2, 2, red~
+** Processing line: ~ sld! 35, 35, blu~
+** Processing line: ~~
+** Processing line: ~ slds! 40, 40~
+** Processing line: ~~
+** Processing line: ~ slds! [50, 50],~
+** Processing line: ~ [60, 60, purp],~
+** Processing line: ~ [70, 70, 10, 10, wht],~
+** Processing line: ~ [80, 80, 4, 4, 255, 0, 255]~
+** Processing line: ~ }~
+** Processing line: ~ =end~
+** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~