* Processing True Lines
** Processing line: ~* DragonRuby Game Toolkit Live Docs~
- Header detected.
*** True Line Result
*** True Line Result
* DragonRuby Game Toolkit Live Docs
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The information contained here is all available via the DragonRuby~
** Processing line: ~Console. You can Open the DragonRuby Console by pressing [`] [~] [²]~
** Processing line: ~[^] [º] or [§] within your game.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The information contained here is all available via the DragonRuby Console. You can Open the DragonRuby Console by pressing [`] [~] [²] [^] [º] or [§] within your game.
** Processing line: ~To search docs you can type ~docs_search "SEARCH TERM"~ or if you want~
** Processing line: ~to get fancy you can provide a ~lambda~ to filter documentation:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
To search docs you can type ~docs_search "SEARCH TERM"~ or if you want to get fancy you can provide a ~lambda~ to filter documentation:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ docs_search { |entry| (entry.include? "Array") && (!entry.include? "Enumerable") }~
- Inside source: true
*** True Line Result
docs_search { |entry| (entry.include? "Array") && (!entry.include? "Enumerable") }
** 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_search.gif]]~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
[[docs_search.gif]]
** Processing line: ~* Hello World~
- Header detected.
*** True Line Result
*** True Line Result
* Hello World
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Welcome to DragonRuby Game Toolkit. Take the steps below to get started.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Welcome to DragonRuby Game Toolkit. Take the steps below to get started.
** Processing line: ~* Join the Discord and Subscribe to the News Letter~
- Header detected.
*** True Line Result
*** True Line Result
* Join the Discord and Subscribe to the News Letter
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Our Discord channel is [[http://discord.dragonruby.org]].~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Our Discord channel is [[http://discord.dragonruby.org]].
** Processing line: ~The News Letter will keep you in the loop with regards to current~
** Processing line: ~DragonRuby Events: [[http://dragonrubydispatch.com]].~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The News Letter will keep you in the loop with regards to current DragonRuby Events: [[http://dragonrubydispatch.com]].
** Processing line: ~Those who use DragonRuby are called Dragon Riders. This identity is~
** Processing line: ~incredibly important to us. When someone asks you:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Those who use DragonRuby are called Dragon Riders. This identity is incredibly important to us. When someone asks you:
** Processing line: ~#+begin_quote~
- Line was identified as a literal block.
*** True Line Result
*** True Line Result
#+begin_quote
** Processing line: ~What game engine do you use?~
** Processing line: ~#+end_quote~
- Line was identified as a literal block.
*** True Line Result
What game engine do you use?
*** True Line Result
#+end_quote
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Reply with:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Reply with:
** Processing line: ~#+begin_quote~
- Line was identified as a literal block.
*** True Line Result
*** True Line Result
#+begin_quote
** Processing line: ~I am a Dragon Rider.~
** Processing line: ~#+end_quote~
- Line was identified as a literal block.
*** True Line Result
I am a Dragon Rider.
*** True Line Result
#+end_quote
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* Watch Some Intro Videos~
- Header detected.
*** True Line Result
*** True Line Result
* Watch Some Intro Videos
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Each video is only 20 minutes and all of them will fit into a lunch~
** Processing line: ~break. So please watch them:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Each video is only 20 minutes and all of them will fit into a lunch break. So please watch them:
** Processing line: ~1. Beginner Introduction to DragonRuby Game Toolkit: [[https://youtu.be/ixw7TJhU08E]]~
- Line was identified as a start of a list.
*** True Line Result
** Processing line: ~2. Intermediate Introduction to Ruby Syntax: [[https://youtu.be/HG-XRZ5Ppgc]]~
- Line was identified as a continuation of a list.
*** True Line Result
1. Beginner Introduction to DragonRuby Game Toolkit: [[https://youtu.be/ixw7TJhU08E]]
** Processing line: ~3. Intermediate Introduction to Arrays in Ruby: [[https://youtu.be/N72sEYFRqfo]]~
- Line was identified as a continuation of a list.
*** True Line Result
2. Intermediate Introduction to Ruby Syntax: [[https://youtu.be/HG-XRZ5Ppgc]]
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
3. Intermediate Introduction to Arrays in Ruby: [[https://youtu.be/N72sEYFRqfo]]
** Processing line: ~The second and third videos are not required if you are proficient~
** Processing line: ~with Ruby, but *definitely* watch the first one.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The second and third videos are not required if you are proficient with Ruby, but *definitely* watch the first one.
** Processing line: ~You may also want to try this free course provided at~
** Processing line: ~[[http://dragonruby.school]].~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You may also want to try this free course provided at [[http://dragonruby.school]].
** Processing line: ~* Getting Started Tutorial~
- Header detected.
*** True Line Result
*** True Line Result
* Getting Started Tutorial
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~This is a tutorial written by Ryan C Gordon (a Juggernaut in the~
** Processing line: ~industry who has contracted to Valve, Epic, Activision, and~
** Processing line: ~EA... check out his Wikipedia page: [[https://en.wikipedia.org/wiki/Ryan_C._Gordon]]).~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
This is a tutorial written by Ryan C Gordon (a Juggernaut in the industry who has contracted to Valve, Epic, Activision, and EA... check out his Wikipedia page: [[https://en.wikipedia.org/wiki/Ryan_C._Gordon]]).
** Processing line: ~** Introduction~
- Header detected.
*** True Line Result
*** True Line Result
** Introduction
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Welcome!~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Welcome!
** Processing line: ~Here's just a little push to get you started if you're new to~
** Processing line: ~programming or game development.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here's just a little push to get you started if you're new to programming or game development.
** Processing line: ~If you want to write a game, it's no different than writing any other~
** Processing line: ~program for any other framework: there are a few simple rules that~
** Processing line: ~might be new to you, but more or less programming is programming no~
** Processing line: ~matter what you are building.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
If you want to write a game, it's no different than writing any other program for any other framework: there are a few simple rules that might be new to you, but more or less programming is programming no matter what you are building.
** Processing line: ~Did you not know that? Did you think you couldn't write a game because~
** Processing line: ~you're a "web guy" or you're writing Java at a desk job? Stop letting~
** Processing line: ~people tell you that you can't, because you already have everything~
** Processing line: ~you need.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Did you not know that? Did you think you couldn't write a game because you're a "web guy" or you're writing Java at a desk job? Stop letting people tell you that you can't, because you already have everything you need.
** Processing line: ~Here, we're going to be programming in a language called "Ruby." In~
** Processing line: ~the interest of full disclosure, I (Ryan Gordon) wrote the C parts of~
** Processing line: ~this toolkit and Ruby looks a little strange to me (Amir Rajan wrote~
** Processing line: ~the Ruby parts, discounting the parts I mangled), but I'm going to~
** Processing line: ~walk you through the basics because we're all learning together, and~
** Processing line: ~if you mostly think of yourself as someone that writes C (or C++, C#,~
** Processing line: ~Objective-C), PHP, or Java, then you're only a step behind me right~
** Processing line: ~now.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here, we're going to be programming in a language called "Ruby." In the interest of full disclosure, I (Ryan Gordon) wrote the C parts of this toolkit and Ruby looks a little strange to me (Amir Rajan wrote the Ruby parts, discounting the parts I mangled), but I'm going to walk you through the basics because we're all learning together, and if you mostly think of yourself as someone that writes C (or C++, C#, Objective-C), PHP, or Java, then you're only a step behind me right now.
** Processing line: ~** Prerequisites~
- Header detected.
*** True Line Result
*** True Line Result
** Prerequisites
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Here's the most important thing you should know: Ruby lets you do some~
** Processing line: ~complicated things really easily, and you can learn that stuff~
** Processing line: ~later. I'm going to show you one or two cool tricks, but that's all.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here's the most important thing you should know: Ruby lets you do some complicated things really easily, and you can learn that stuff later. I'm going to show you one or two cool tricks, but that's all.
** Processing line: ~Do you know what an if statement is? A for-loop? An array? That's all~
** Processing line: ~you'll need to start.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Do you know what an if statement is? A for-loop? An array? That's all you'll need to start.
** Processing line: ~** The Game Loop~
- Header detected.
*** True Line Result
*** True Line Result
** The Game Loop
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Ok, here are few rules with regards to game development with GTK:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Ok, here are few rules with regards to game development with GTK:
** Processing line: ~- Your game is all going to happen under one function ...~
- Line was identified as a list.
*** True Line Result
** Processing line: ~- that runs 60 times a second ...~
- Line was identified as a list.
*** True Line Result
- Your game is all going to happen under one function ...
** Processing line: ~- and has to tell the computer what to draw each time.~
- Line was identified as a list.
*** True Line Result
- that runs 60 times a second ...
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- and has to tell the computer what to draw each time.
** Processing line: ~That's an entire video game in one run-on sentence.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
That's an entire video game in one run-on sentence.
** Processing line: ~Here's that function. You're going to want to put this in~
** Processing line: ~mygame/app/main.rb, because that's where we'll look for it by~
** Processing line: ~default. Load it up in your favorite text editor.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here's that function. You're going to want to put this in mygame/app/main.rb, because that's where we'll look for it by default. Load it up in your favorite text editor.
** 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: ~ args.outputs.labels << [580, 400, 'Hello World!']~
- Inside source: true
*** True Line Result
args.outputs.labels << [580, 400, 'Hello World!']
** 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: ~Now run ~dragonruby~ ...did you get a window with "Hello World!"~
** Processing line: ~written in it? Good, you're officially a game developer!~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Now run ~dragonruby~ ...did you get a window with "Hello World!" written in it? Good, you're officially a game developer!
** Processing line: ~** Breakdown Of The ~tick~ Method~
- Header detected.
*** True Line Result
*** True Line Result
** Breakdown Of The ~tick~ Method
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~~mygame/app/main.rb~, is where the Ruby source code is located. This~
** Processing line: ~looks a little strange, so I'll break it down line by line. In Ruby, a~
** Processing line: ~'#' character starts a single-line comment, so I'll talk about this~
** Processing line: ~inline.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
~mygame/app/main.rb~, is where the Ruby source code is located. This looks a little strange, so I'll break it down line by line. In Ruby, a '#' character starts a single-line comment, so I'll talk about this inline.
** 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: ~ # This "def"ines a function, named "tick," which takes a single argument~
- Inside source: true
*** True Line Result
# This "def"ines a function, named "tick," which takes a single argument
** Processing line: ~ # named "args". DragonRuby looks for this function and calls it every~
- Inside source: true
*** True Line Result
# named "args". DragonRuby looks for this function and calls it every
** Processing line: ~ # frame, 60 times a second. "args" is a magic structure with lots of~
- Inside source: true
*** True Line Result
# frame, 60 times a second. "args" is a magic structure with lots of
** Processing line: ~ # information in it. You can set variables in there for your own game state,~
- Inside source: true
*** True Line Result
# information in it. You can set variables in there for your own game state,
** Processing line: ~ # and every frame it will updated if keys are pressed, joysticks moved,~
- Inside source: true
*** True Line Result
# and every frame it will updated if keys are pressed, joysticks moved,
** Processing line: ~ # mice clicked, etc.~
- Inside source: true
*** True Line Result
# mice clicked, etc.
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # One of the things in "args" is the "outputs" object that your game uses~
- Inside source: true
*** True Line Result
# One of the things in "args" is the "outputs" object that your game uses
** Processing line: ~ # to draw things. Afraid of rendering APIs? No problem. In DragonRuby,~
- Inside source: true
*** True Line Result
# to draw things. Afraid of rendering APIs? No problem. In DragonRuby,
** Processing line: ~ # you use arrays to draw things and we figure out the details.~
- Inside source: true
*** True Line Result
# you use arrays to draw things and we figure out the details.
** Processing line: ~ # If you want to draw text on the screen, you give it an array (the thing~
- Inside source: true
*** True Line Result
# If you want to draw text on the screen, you give it an array (the thing
** Processing line: ~ # in the [ brackets ]), with an X and Y coordinate and the text to draw.~
- Inside source: true
*** True Line Result
# in the [ brackets ]), with an X and Y coordinate and the text to draw.
** Processing line: ~ # The "<<" thing says "append this array onto the list of them at~
- Inside source: true
*** True Line Result
# The "<<" thing says "append this array onto the list of them at
** Processing line: ~ # args.outputs.labels)~
- Inside source: true
*** True Line Result
# args.outputs.labels)
** Processing line: ~ args.outputs.labels << [580, 400, 'Hello World!']~
- Inside source: true
*** True Line Result
args.outputs.labels << [580, 400, 'Hello World!']
** 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: ~Once your ~tick~ function finishes, we look at all the arrays you made~
** Processing line: ~and figure out how to draw it. You don't need to know about graphics~
** Processing line: ~APIs. You're just setting up some arrays! DragonRuby clears out these~
** Processing line: ~arrays every frame, so you just need to add what you need _right now_~
** Processing line: ~each time.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Once your ~tick~ function finishes, we look at all the arrays you made and figure out how to draw it. You don't need to know about graphics APIs. You're just setting up some arrays! DragonRuby clears out these arrays every frame, so you just need to add what you need _right now_ each time.
** Processing line: ~** Rendering A Sprite~
- Header detected.
*** True Line Result
*** True Line Result
** Rendering A Sprite
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Now let's spice this up a little.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Now let's spice this up a little.
** Processing line: ~We're going to add some graphics. Each 2D image in DragonRuby is~
** Processing line: ~called a "sprite," and to use them, you just make sure they exist in a~
** Processing line: ~reasonable file format (png, jpg, gif, bmp, etc) and specify them by~
** Processing line: ~filename. The first time you use one, DragonRuby will load it and keep~
** Processing line: ~it in video memory for fast access in the future. If you use a~
** Processing line: ~filename that doesn't exist, you get a fun checkerboard pattern!~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
We're going to add some graphics. Each 2D image in DragonRuby is called a "sprite," and to use them, you just make sure they exist in a reasonable file format (png, jpg, gif, bmp, etc) and specify them by filename. The first time you use one, DragonRuby will load it and keep it in video memory for fast access in the future. If you use a filename that doesn't exist, you get a fun checkerboard pattern!
** Processing line: ~There's a "dragonruby.png" file included, just to get you~
** Processing line: ~started. Let's have it draw every frame with our text:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
There's a "dragonruby.png" file included, just to get you started. Let's have it draw every frame with our text:
** 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: ~ args.outputs.labels << [580, 400, 'Hello World!']~
- Inside source: true
*** True Line Result
args.outputs.labels << [580, 400, 'Hello World!']
** Processing line: ~ args.outputs.sprites << [576, 100, 128, 101, 'dragonruby.png']~
- Inside source: true
*** True Line Result
args.outputs.sprites << [576, 100, 128, 101, 'dragonruby.png']
** 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: ~(Pro Tip: you don't have to restart DragonRuby to test your changes;~
** Processing line: ~when you save main.rb, DragonRuby will notice and reload your~
** Processing line: ~program.)~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
(Pro Tip: you don't have to restart DragonRuby to test your changes; when you save main.rb, DragonRuby will notice and reload your program.)
** Processing line: ~That ~.sprites~ line says "add a sprite to the list of sprites we're~
** Processing line: ~drawing, and draw it at position (576, 100) at a size of 128x101~
** Processing line: ~pixels". You can find the image to draw at dragonruby.png.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
That ~.sprites~ line says "add a sprite to the list of sprites we're drawing, and draw it at position (576, 100) at a size of 128x101 pixels". You can find the image to draw at dragonruby.png.
** Processing line: ~** Coordinate System and Virtual Canvas~
- Header detected.
*** True Line Result
*** True Line Result
** Coordinate System and Virtual Canvas
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Quick note about coordinates: (0, 0) is the bottom left corner of the~
** Processing line: ~screen, and positive numbers go up and to the right. This is more~
** Processing line: ~"geometrically correct," even if it's not how you remember doing 2D~
** Processing line: ~graphics, but we chose this for a simpler reason: when you're making~
** Processing line: ~Super Mario Brothers and you want Mario to jump, you should be able to~
** Processing line: ~add to Mario's y position as he goes up and subtract as he falls. It~
** Processing line: ~makes things easier to understand.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Quick note about coordinates: (0, 0) is the bottom left corner of the screen, and positive numbers go up and to the right. This is more "geometrically correct," even if it's not how you remember doing 2D graphics, but we chose this for a simpler reason: when you're making Super Mario Brothers and you want Mario to jump, you should be able to add to Mario's y position as he goes up and subtract as he falls. It makes things easier to understand.
** Processing line: ~Also: your game screen is _always_ 1280x720 pixels. If you resize the~
** Processing line: ~window, we will scale and letterbox everything appropriately, so you~
** Processing line: ~never have to worry about different resolutions.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Also: your game screen is _always_ 1280x720 pixels. If you resize the window, we will scale and letterbox everything appropriately, so you never have to worry about different resolutions.
** Processing line: ~Ok, now we have an image on the screen, let's animate it:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Ok, now we have an image on the screen, let's animate it:
** 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: ~ args.state.rotation ||= 0~
- Inside source: true
*** True Line Result
args.state.rotation ||= 0
** Processing line: ~ args.outputs.labels << [580, 400, 'Hello World!' ]~
- Inside source: true
*** True Line Result
args.outputs.labels << [580, 400, 'Hello World!' ]
** Processing line: ~ args.outputs.sprites << [576, 100, 128, 101, 'dragonruby.png', args.state.rotation]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [576, 100, 128, 101, 'dragonruby.png', args.state.rotation]
** Processing line: ~ args.state.rotation -= 1~
- Inside source: true
*** True Line Result
args.state.rotation -= 1
** 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: ~Now you can see that this function is getting called a lot!~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Now you can see that this function is getting called a lot!
** Processing line: ~** Game State~
- Header detected.
*** True Line Result
*** True Line Result
** Game State
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Here's a fun Ruby thing: ~args.state.rotation ||= 0~ is shorthand for~
** Processing line: ~"if args.state.rotation isn't initialized, set it to zero." It's a~
** Processing line: ~nice way to embed your initialization code right next to where you~
** Processing line: ~need the variable.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here's a fun Ruby thing: ~args.state.rotation ||= 0~ is shorthand for "if args.state.rotation isn't initialized, set it to zero." It's a nice way to embed your initialization code right next to where you need the variable.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~~args.state~ is a place you can hang your own data. It's an open data~
** Processing line: ~structure that allows you to define properties that are arbitrarily~
** Processing line: ~nested. You don't need to define any kind of class.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
~args.state~ is a place you can hang your own data. It's an open data structure that allows you to define properties that are arbitrarily nested. You don't need to define any kind of class.
** Processing line: ~In this case, the current rotation of our sprite, which is happily~
** Processing line: ~spinning at 60 frames per second. If you don't specify rotation (or~
** Processing line: ~alpha, or color modulation, or a source rectangle, etc), DragonRuby~
** Processing line: ~picks a reasonable default, and the array is ordered by the most~
** Processing line: ~likely things you need to tell us: position, size, name.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
In this case, the current rotation of our sprite, which is happily spinning at 60 frames per second. If you don't specify rotation (or alpha, or color modulation, or a source rectangle, etc), DragonRuby picks a reasonable default, and the array is ordered by the most likely things you need to tell us: position, size, name.
** Processing line: ~** There Is No Delta Time~
- Header detected.
*** True Line Result
*** True Line Result
** There Is No Delta Time
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~One thing we decided to do in DragonRuby is not make you worry about~
** Processing line: ~delta time: your function runs at 60 frames per second (about 16~
** Processing line: ~milliseconds) and that's that. Having to worry about framerate is~
** Processing line: ~something massive triple-AAA games do, but for fun little 2D games?~
** Processing line: ~You'd have to work really hard to not hit 60fps. All your drawing is~
** Processing line: ~happening on a GPU designed to run Fortnite quickly; it can definitely~
** Processing line: ~handle this.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
One thing we decided to do in DragonRuby is not make you worry about delta time: your function runs at 60 frames per second (about 16 milliseconds) and that's that. Having to worry about framerate is something massive triple-AAA games do, but for fun little 2D games? You'd have to work really hard to not hit 60fps. All your drawing is happening on a GPU designed to run Fortnite quickly; it can definitely handle this.
** Processing line: ~Since we didn't make you worry about delta time, you can just move the~
** Processing line: ~rotation by 1 every time and it works without you having to keep track~
** Processing line: ~of time and math. Want it to move faster? Subtract 2.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Since we didn't make you worry about delta time, you can just move the rotation by 1 every time and it works without you having to keep track of time and math. Want it to move faster? Subtract 2.
** Processing line: ~** Handling User Input~
- Header detected.
*** True Line Result
*** True Line Result
** Handling User Input
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Now, let's move that image around.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Now, let's move that image around.
** 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: ~ args.state.rotation ||= 0~
- Inside source: true
*** True Line Result
args.state.rotation ||= 0
** Processing line: ~ args.state.x ||= 576~
- Inside source: true
*** True Line Result
args.state.x ||= 576
** Processing line: ~ args.state.y ||= 100~
- Inside source: true
*** True Line Result
args.state.y ||= 100
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.mouse.click~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click
** Processing line: ~ args.state.x = args.inputs.mouse.click.point.x - 64~
- Inside source: true
*** True Line Result
args.state.x = args.inputs.mouse.click.point.x - 64
** Processing line: ~ args.state.y = args.inputs.mouse.click.point.y - 50~
- Inside source: true
*** True Line Result
args.state.y = args.inputs.mouse.click.point.y - 50
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << [580, 400, 'Hello World!']~
- Inside source: true
*** True Line Result
args.outputs.labels << [580, 400, 'Hello World!']
** Processing line: ~ args.outputs.sprites << [args.state.x,~
- Inside source: true
*** True Line Result
args.outputs.sprites << [args.state.x,
** Processing line: ~ args.state.y,~
- Inside source: true
*** True Line Result
args.state.y,
** Processing line: ~ 128,~
- Inside source: true
*** True Line Result
128,
** Processing line: ~ 101,~
- Inside source: true
*** True Line Result
101,
** Processing line: ~ 'dragonruby.png',~
- Inside source: true
*** True Line Result
'dragonruby.png',
** Processing line: ~ args.state.rotation]~
- Inside source: true
*** True Line Result
args.state.rotation]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.rotation -= 1~
- Inside source: true
*** True Line Result
args.state.rotation -= 1
** 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: ~Everywhere you click your mouse, the image moves there. We set a~
** Processing line: ~default location for it with ~args.state.x ||= 576~, and then we~
** Processing line: ~change those variables when we see the mouse button in action. You can~
** Processing line: ~get at the keyboard and game controllers in similar ways.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Everywhere you click your mouse, the image moves there. We set a default location for it with ~args.state.x ||= 576~, and then we change those variables when we see the mouse button in action. You can get at the keyboard and game controllers in similar ways.
** Processing line: ~** Coding On A Raspberry Pi~
- Header detected.
*** True Line Result
*** True Line Result
** Coding On A Raspberry Pi
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~We have only tested DragonRuby on a Raspberry Pi 3, Models B and B+, but we~
** Processing line: ~believe it _should_ work on any model with comparable specs.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
We have only tested DragonRuby on a Raspberry Pi 3, Models B and B+, but we believe it _should_ work on any model with comparable specs.
** Processing line: ~If you're running DragonRuby Game Toolkit on a Raspberry Pi, or trying to run~
** Processing line: ~a game made with the Toolkit on a Raspberry Pi, and it's really really slow--~
** Processing line: ~like one frame every few seconds--then there's likely a simple fix.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
If you're running DragonRuby Game Toolkit on a Raspberry Pi, or trying to run a game made with the Toolkit on a Raspberry Pi, and it's really really slow-- like one frame every few seconds--then there's likely a simple fix.
** Processing line: ~You're probably running a desktop environment: menus, apps, web browsers,~
** Processing line: ~etc. This is okay! Launch the terminal app and type:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You're probably running a desktop environment: menus, apps, web browsers, etc. This is okay! Launch the terminal app and type:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~sudo raspi-config~
- Inside source: true
*** True Line Result
sudo raspi-config
** 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: ~It'll ask you for your password (if you don't know, try "raspberry"), and then~
** Processing line: ~give you a menu of options. Find your way to "Advanced Options", then "GL~
** Processing line: ~Driver", and change this to "GL (Full KMS)" ... not "fake KMS," which is~
** Processing line: ~also listed there. Save and reboot. In theory, this should fix the problem.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
It'll ask you for your password (if you don't know, try "raspberry"), and then give you a menu of options. Find your way to "Advanced Options", then "GL Driver", and change this to "GL (Full KMS)" ... not "fake KMS," which is also listed there. Save and reboot. In theory, this should fix the problem.
** Processing line: ~If you're _still_ having problems and have a Raspberry Pi 2 or better, go back~
** Processing line: ~to raspi-config and head over to "Advanced Options", "Memory split," and give~
** Processing line: ~the GPU 256 megabytes. You might be able to avoid this for simple games, as~
** Processing line: ~this takes RAM away from the system and reserves it for graphics. You can~
** Processing line: ~also try 128 megabytes as a gentler option.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
If you're _still_ having problems and have a Raspberry Pi 2 or better, go back to raspi-config and head over to "Advanced Options", "Memory split," and give the GPU 256 megabytes. You might be able to avoid this for simple games, as this takes RAM away from the system and reserves it for graphics. You can also try 128 megabytes as a gentler option.
** Processing line: ~Note that you can also run DragonRuby without X11 at all: if you run it from~
** Processing line: ~a virtual terminal it will render fullscreen and won't need the "Full KMS"~
** Processing line: ~option. This might be attractive if you want to use it as a game console~
** Processing line: ~sort of thing, or develop over ssh, or launch it from RetroPie, etc.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Note that you can also run DragonRuby without X11 at all: if you run it from a virtual terminal it will render fullscreen and won't need the "Full KMS" option. This might be attractive if you want to use it as a game console sort of thing, or develop over ssh, or launch it from RetroPie, etc.
** Processing line: ~** Conclusion~
- Header detected.
*** True Line Result
*** True Line Result
** Conclusion
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~There is a lot more you can do with DragonRuby, but now you've already~
** Processing line: ~got just about everything you need to make a simple game. After all,~
** Processing line: ~even the most fancy games are just creating objects and moving them~
** Processing line: ~around. Experiment a little. Add a few more things and have them~
** Processing line: ~interact in small ways. Want something to go away? Just don't add it~
** Processing line: ~to ~args.output~ anymore.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
There is a lot more you can do with DragonRuby, but now you've already got just about everything you need to make a simple game. After all, even the most fancy games are just creating objects and moving them around. Experiment a little. Add a few more things and have them interact in small ways. Want something to go away? Just don't add it to ~args.output~ anymore.
** Processing line: ~* IMPORTANT: Go through all of the sample apps! Study them thoroughly!! No really, you should definitely do this!~
- Header detected.
*** True Line Result
*** True Line Result
* IMPORTANT: Go through all of the sample apps! Study them thoroughly!! No really, you should definitely do this!
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Now that you've completed the Hello World tutorial. Head over to the~
** Processing line: ~`samples` directory. It is very very important that you study the~
** Processing line: ~sample apps thoroughly! Go through them in order. Here is a short~
** Processing line: ~description of each sample app.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Now that you've completed the Hello World tutorial. Head over to the `samples` directory. It is very very important that you study the sample apps thoroughly! Go through them in order. Here is a short description of each sample app.
** Processing line: ~** Guided Samples~
- Header detected.
*** True Line Result
*** True Line Result
** Guided Samples
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~1. ~samples/00_learn_ruby_optional~: This directory contains sample apps that will help you learn the language.~
- Line was identified as a start of a list.
*** True Line Result
** Processing line: ~2. ~samples/01_rendering_basics~: This set of samples will show you how to render basic primitives such as ~labels~, ~solids~, ~borders~, ~lines~, ~sprites~, and how to play ~sounds~.~
- Line was identified as a continuation of a list.
*** True Line Result
1. ~samples/00_learn_ruby_optional~: This directory contains sample apps that will help you learn the language.
** Processing line: ~3. ~samples/02_input_basics~: This set of samples show you how to accept input from the ~mouse~, ~keyboard~, and ~controllers~.~
- Line was identified as a continuation of a list.
*** True Line Result
2. ~samples/01_rendering_basics~: This set of samples will show you how to render basic primitives such as ~labels~, ~solids~, ~borders~, ~lines~, ~sprites~, and how to play ~sounds~.
** Processing line: ~4. ~samples/03_rendering_sprites~: This set of samples shows you all the different ways to render sprites (including how to use a sprite sheet).~
- Line was identified as a continuation of a list.
*** True Line Result
3. ~samples/02_input_basics~: This set of samples show you how to accept input from the ~mouse~, ~keyboard~, and ~controllers~.
** Processing line: ~4. ~samples/04_physics_and_collision~: This set of samples shows how to do various types of collisions and physics.~
- Line was identified as a continuation of a list.
*** True Line Result
4. ~samples/03_rendering_sprites~: This set of samples shows you all the different ways to render sprites (including how to use a sprite sheet).
** Processing line: ~5. ~samples/05_mouse~: This set of samples show more advanced usages of the mouse.~
- Line was identified as a continuation of a list.
*** True Line Result
4. ~samples/04_physics_and_collision~: This set of samples shows how to do various types of collisions and physics.
** Processing line: ~6. ~samples/06_save_load~: This set of samples show how to save and load game data.~
- Line was identified as a continuation of a list.
*** True Line Result
5. ~samples/05_mouse~: This set of samples show more advanced usages of the mouse.
** Processing line: ~7. ~samples/07_advanced_rendering~: This set of samples show how to programmatically render sprites using render targets.~
- Line was identified as a continuation of a list.
*** True Line Result
6. ~samples/06_save_load~: This set of samples show how to save and load game data.
** Processing line: ~8. ~samples/08_tweening_lerping_easing_functions~: This set of samples show how to perform animations.~
- Line was identified as a continuation of a list.
*** True Line Result
7. ~samples/07_advanced_rendering~: This set of samples show how to programmatically render sprites using render targets.
** Processing line: ~9. ~samples/09_performance~: This set of samples show how to handle performance issues when a large number of sprites on the screen.~
- Line was identified as a continuation of a list.
*** True Line Result
8. ~samples/08_tweening_lerping_easing_functions~: This set of samples show how to perform animations.
** Processing line: ~10. ~samples/10_advanced_debugging~: This set of samples show how advanced debugging techniques and testing techniques.~
- Line was identified as a continuation of a list.
*** True Line Result
9. ~samples/09_performance~: This set of samples show how to handle performance issues when a large number of sprites on the screen.
** Processing line: ~11. ~samples/11_http~: This set of samples show how use http.~
- Line was identified as a continuation of a list.
*** True Line Result
10. ~samples/10_advanced_debugging~: This set of samples show how advanced debugging techniques and testing techniques.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
11. ~samples/11_http~: This set of samples show how use http.
** Processing line: ~** Sample Games~
- Header detected.
*** True Line Result
*** True Line Result
** Sample Games
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~There are samples that contain the path ~samples/99_*~. The sample apps that are prefixed with ~99_~ show non-trivial implemementations for a real game:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
There are samples that contain the path ~samples/99_*~. The sample apps that are prefixed with ~99_~ show non-trivial implemementations for a real game:
** Processing line: ~1. 3D Cube: Shows how to do faux 3D in DragonRuby.~
- Line was identified as a start of a list.
*** True Line Result
** Processing line: ~2. Dueling Starships: A two player top-down versus game where each player controls a ship.~
- Line was identified as a continuation of a list.
*** True Line Result
1. 3D Cube: Shows how to do faux 3D in DragonRuby.
** Processing line: ~3. Flappy Dragon: DragonRuby's clone of Flappy Bird.~
- Line was identified as a continuation of a list.
*** True Line Result
2. Dueling Starships: A two player top-down versus game where each player controls a ship.
** Processing line: ~4. Pong: A simple implementation of the game Pong.~
- Line was identified as a continuation of a list.
*** True Line Result
3. Flappy Dragon: DragonRuby's clone of Flappy Bird.
** Processing line: ~5. Snakemoji: The classic game of Snake but with all of the code written using emojis (sometimes you just have to have a little fun).~
- Line was identified as a continuation of a list.
*** True Line Result
4. Pong: A simple implementation of the game Pong.
** Processing line: ~6. Solar System: A simulation of our solar system.~
- Line was identified as a continuation of a list.
*** True Line Result
5. Snakemoji: The classic game of Snake but with all of the code written using emojis (sometimes you just have to have a little fun).
** Processing line: ~7. Crafting Starting Point: A starting point for those that want to build a crafting game.~
- Line was identified as a continuation of a list.
*** True Line Result
6. Solar System: A simulation of our solar system.
** Processing line: ~8. Dev Tools: A set of sample apps that show how you can extend DragonRuby's Console, starting point for a tile editor, and a starting point for a paint app.~
- Line was identified as a continuation of a list.
*** True Line Result
7. Crafting Starting Point: A starting point for those that want to build a crafting game.
** Processing line: ~9. LOWREZ: Sample apps that show how to render at different resolutions.~
- Line was identified as a continuation of a list.
*** True Line Result
8. Dev Tools: A set of sample apps that show how you can extend DragonRuby's Console, starting point for a tile editor, and a starting point for a paint app.
** Processing line: ~10. RPG: Various sample apps that show how to create narrative, topdown, tactical grid-based, and roguelike RPGs.~
- Line was identified as a continuation of a list.
*** True Line Result
9. LOWREZ: Sample apps that show how to render at different resolutions.
** Processing line: ~11. Platformers: Various sample apps that show how to create different kinds of physics/collision based platformers.~
- Line was identified as a continuation of a list.
*** True Line Result
10. RPG: Various sample apps that show how to create narrative, topdown, tactical grid-based, and roguelike RPGs.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
11. Platformers: Various sample apps that show how to create different kinds of physics/collision based platformers.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* Deploying To Itch.io~
- Header detected.
*** True Line Result
*** True Line Result
* Deploying To Itch.io
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Once you've built your game, you're all set to deploy! Good luck in~
** Processing line: ~your game dev journey and if you get stuck, come to the Discord~
** Processing line: ~channel!~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Once you've built your game, you're all set to deploy! Good luck in your game dev journey and if you get stuck, come to the Discord channel!
** Processing line: ~** Creating Your Game Landing Page~
- Header detected.
*** True Line Result
*** True Line Result
** Creating Your Game Landing Page
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Log into Itch.io and go to [[https://itch.io/game/new]].~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Log into Itch.io and go to [[https://itch.io/game/new]].
** Processing line: ~- Title: Give your game a Title. This value represents your `gametitle`.~
- Line was identified as a list.
*** True Line Result
** Processing line: ~- Project URL: Set your project url. This value represents your `gameid`.~
- Line was identified as a list.
*** True Line Result
- Title: Give your game a Title. This value represents your `gametitle`.
** Processing line: ~- Classification: Keep this as Game.~
- Line was identified as a list.
*** True Line Result
- Project URL: Set your project url. This value represents your `gameid`.
** Processing line: ~- Kind of Project: Select HTML from the drop down list. Don't worry,~
- Line was identified as a list.
*** True Line Result
- Classification: Keep this as Game.
** Processing line: ~ the HTML project type _also supports binary downloads_.~
** Processing line: ~- Uploads: Skip this section for now.~
- Line was identified as a list.
*** True Line Result
- Kind of Project: Select HTML from the drop down list. Don't worry,
the HTML project type _also supports binary downloads_.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- Uploads: Skip this section for now.
** Processing line: ~You can fill out all the other options later.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You can fill out all the other options later.
** Processing line: ~** Update Your Game's Metadata~
- Header detected.
*** True Line Result
*** True Line Result
** Update Your Game's Metadata
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Point your text editor at mygame/metadata/game_metadata.txt and~
** Processing line: ~make it look like this:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Point your text editor at mygame/metadata/game_metadata.txt and make it look like this:
** Processing line: ~NOTE: Remove the ~#~ at the beginning of each line.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
NOTE: Remove the ~#~ at the beginning of each line.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ devid=bob~
- Inside source: true
*** True Line Result
devid=bob
** Processing line: ~ devtitle=Bob The Game Developer~
- Inside source: true
*** True Line Result
devtitle=Bob The Game Developer
** Processing line: ~ gameid=mygame~
- Inside source: true
*** True Line Result
gameid=mygame
** Processing line: ~ gametitle=My Game~
- Inside source: true
*** True Line Result
gametitle=My Game
** Processing line: ~ version=0.1~
- Inside source: true
*** True Line Result
version=0.1
** 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: ~The ~devid~ property is the username you use to log into Itch.io.~
** Processing line: ~The ~devtitle~ is your name or company name (it can contain spaces).~
** Processing line: ~The ~gameid~ is the Project URL value.~
** Processing line: ~The ~gametitle~ is the name of your game (it can contain spaces).~
** Processing line: ~The ~version~ can be any ~major.minor~ number format.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The ~devid~ property is the username you use to log into Itch.io. The ~devtitle~ is your name or company name (it can contain spaces). The ~gameid~ is the Project URL value. The ~gametitle~ is the name of your game (it can contain spaces). The ~version~ can be any ~major.minor~ number format.
** Processing line: ~** Building Your Game For Distribution~
- Header detected.
*** True Line Result
*** True Line Result
** Building Your Game For Distribution
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Open up the terminal and run this from the command line:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Open up the terminal and run this from the command line:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ ./dragonruby-publish --only-package mygame~
- Inside source: true
*** True Line Result
./dragonruby-publish --only-package mygame
** 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: ~(if you're on Windows, don't put the "./" on the front. That's a Mac and~
** Processing line: ~Linux thing.)~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
(if you're on Windows, don't put the "./" on the front. That's a Mac and Linux thing.)
** Processing line: ~A directory called ~./build~ will be created that contains your~
** Processing line: ~binaries. You can upload this to Itch.io manually.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
A directory called ~./build~ will be created that contains your binaries. You can upload this to Itch.io manually.
** Processing line: ~For the HTML version of your game after you upload it. Check the checkbox labeled~
** Processing line: ~"This file will be played in the browser".~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
For the HTML version of your game after you upload it. Check the checkbox labeled "This file will be played in the browser".
** Processing line: ~For subsequent updates you can use an automated deployment to Itch.io:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
For subsequent updates you can use an automated deployment to Itch.io:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ ./dragonruby-publish mygame~
- Inside source: true
*** True Line Result
./dragonruby-publish mygame
** 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: ~DragonRuby will package _and publish_ your game to itch.io! Tell your~
** Processing line: ~friends to go to your game's very own webpage and buy it!~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
DragonRuby will package _and publish_ your game to itch.io! Tell your friends to go to your game's very own webpage and buy it!
** Processing line: ~If you make changes to your game, just re-run dragonruby-publish and it'll~
** Processing line: ~update the downloads for you.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
If you make changes to your game, just re-run dragonruby-publish and it'll update the downloads for you.
** Processing line: ~* DragonRuby's Philosophy~
- Header detected.
*** True Line Result
*** True Line Result
* DragonRuby's Philosophy
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The following tenants of DragonRuby are what set us apart from other~
** Processing line: ~game engines. Given that Game Toolkit is a relatively new engine,~
** Processing line: ~there are definitely features that are missing. So having a big check~
** Processing line: ~list of "all the cool things" is not this engine's forte. This is~
** Processing line: ~compensated with a strong commitment to the following principals.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The following tenants of DragonRuby are what set us apart from other game engines. Given that Game Toolkit is a relatively new engine, there are definitely features that are missing. So having a big check list of "all the cool things" is not this engine's forte. This is compensated with a strong commitment to the following principals.
** Processing line: ~** Challenge The Status Quo~
- Header detected.
*** True Line Result
*** True Line Result
** Challenge The Status Quo
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Game engines of today are in a local maximum and don't take into~
** Processing line: ~consideration the challenges of this day and age. Unity and GameMaker~
** Processing line: ~specifically rot your brain. It's not sufficient to say:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Game engines of today are in a local maximum and don't take into consideration the challenges of this day and age. Unity and GameMaker specifically rot your brain. It's not sufficient to say:
** Processing line: ~#+begin_quote~
- Line was identified as a literal block.
*** True Line Result
*** True Line Result
#+begin_quote
** Processing line: ~But that's how we've always done it.~
** Processing line: ~#+end_quote~
- Line was identified as a literal block.
*** True Line Result
But that's how we've always done it.
*** True Line Result
#+end_quote
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~It's a hard pill to swallow, but forget blindly accepted best~
** Processing line: ~practices and try to figure out the underlying motivation for a~
** Processing line: ~specific approach to game development. Collaborate with us.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
It's a hard pill to swallow, but forget blindly accepted best practices and try to figure out the underlying motivation for a specific approach to game development. Collaborate with us.
** Processing line: ~** Continuity of Design~
- Header detected.
*** True Line Result
*** True Line Result
** Continuity of Design
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~There is a programming idiom in software called "the pit of~
** Processing line: ~success". The term normalizes up front pain as a necessity in the~
** Processing line: ~(hopes that the investment will yield dividends "when you become~
** Processing line: ~successful"). This results in more "Enterprise TM" code upfront, and~
** Processing line: ~makes it more difficult to get started when you are new to programming.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
There is a programming idiom in software called "the pit of success". The term normalizes up front pain as a necessity in the (hopes that the investment will yield dividends "when you become successful"). This results in more "Enterprise TM" code upfront, and makes it more difficult to get started when you are new to programming.
** Processing line: ~DragonRuby's philosophy is to provide a spectrum across the "make it~
** Processing line: ~fast" vs "make it right" spectrum and provide incremental, intuitive~
** Processing line: ~transitions between points on that spectrum. This is captured in how~
** Processing line: ~render primitives can be represented as tuples/arrays, hashes, open~
** Processing line: ~structs/entities, and then finally classes (as opposed to forcing devs~
** Processing line: ~to use classes upfront).~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
DragonRuby's philosophy is to provide a spectrum across the "make it fast" vs "make it right" spectrum and provide incremental, intuitive transitions between points on that spectrum. This is captured in how render primitives can be represented as tuples/arrays, hashes, open structs/entities, and then finally classes (as opposed to forcing devs to use classes upfront).
** Processing line: ~** Release Often And Soon~
- Header detected.
*** True Line Result
*** True Line Result
** Release Often And Soon
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The biggest mistake game devs make is spending too much time in~
** Processing line: ~isolation building their game. Release something, however small, and~
** Processing line: ~release it quickly.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The biggest mistake game devs make is spending too much time in isolation building their game. Release something, however small, and release it quickly.
** Processing line: ~Stop worrying about everything being pixel perfect. Don't wait until~
** Processing line: ~your game is 100% complete. Build your game publicly and~
** Processing line: ~iterate. Post in the #show-and-tell channel in the community Discord.~
** Processing line: ~You'll find a lot of support and encouragement there.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Stop worrying about everything being pixel perfect. Don't wait until your game is 100% complete. Build your game publicly and iterate. Post in the #show-and-tell channel in the community Discord. You'll find a lot of support and encouragement there.
** Processing line: ~Remember:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Remember:
** Processing line: ~#+begin_quote~
- Line was identified as a literal block.
*** True Line Result
*** True Line Result
#+begin_quote
** Processing line: ~Real artists ship.~
** Processing line: ~#+end_quote~
- Line was identified as a literal block.
*** True Line Result
Real artists ship.
*** True Line Result
#+end_quote
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~** Sustainable And Ethical Monetization~
- Header detected.
*** True Line Result
*** True Line Result
** Sustainable And Ethical Monetization
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~We all aspire to put food on the table doing what we love. Whether it~
** Processing line: ~is building games, writing tools to support game development, or~
** Processing line: ~anything in between.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
We all aspire to put food on the table doing what we love. Whether it is building games, writing tools to support game development, or anything in between.
** Processing line: ~Charge a fair amount of money for the things you create. It's expected~
** Processing line: ~and encouraged within the community. Give what you create away for~
** Processing line: ~free to those that can't afford it.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Charge a fair amount of money for the things you create. It's expected and encouraged within the community. Give what you create away for free to those that can't afford it.
** Processing line: ~** Sustainable And Ethical Open Source~
- Header detected.
*** True Line Result
*** True Line Result
** Sustainable And Ethical Open Source
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~This goes hand in hand with sustainable and ethical monetization. The~
** Processing line: ~current state of open source is not sustainable. There is an immense~
** Processing line: ~amount of contributor burnout. Users of open source expect everything~
** Processing line: ~to be free, and few give back. This is a problem we want to fix (we're~
** Processing line: ~still trying to figure out the best solution).~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
This goes hand in hand with sustainable and ethical monetization. The current state of open source is not sustainable. There is an immense amount of contributor burnout. Users of open source expect everything to be free, and few give back. This is a problem we want to fix (we're still trying to figure out the best solution).
** Processing line: ~So, don't be "that guy" in the Discord that says "DragonRuby should be~
** Processing line: ~free and open source!" You will be personally flogged by Amir.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
So, don't be "that guy" in the Discord that says "DragonRuby should be free and open source!" You will be personally flogged by Amir.
** Processing line: ~** People Over Entities~
- Header detected.
*** True Line Result
*** True Line Result
** People Over Entities
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~We prioritize the endorsement of real people over faceless~
** Processing line: ~entities. This game engine, and other products we create, are not~
** Processing line: ~insignificant line items of a large company. And you aren't a generic~
** Processing line: ~"commodity" or "corporate resource". So be active in the community~
** Processing line: ~Discord and you'll reap the benefits as more devs use DragonRuby.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
We prioritize the endorsement of real people over faceless entities. This game engine, and other products we create, are not insignificant line items of a large company. And you aren't a generic "commodity" or "corporate resource". So be active in the community Discord and you'll reap the benefits as more devs use DragonRuby.
** Processing line: ~** Building A Game Should Be Fun And Bring Happiness~
- Header detected.
*** True Line Result
*** True Line Result
** Building A Game Should Be Fun And Bring Happiness
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~We will prioritize the removal of pain. The aesthetics of Ruby make it~
** Processing line: ~such a joy to work with, and we want to capture that within the~
** Processing line: ~engine.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
We will prioritize the removal of pain. The aesthetics of Ruby make it such a joy to work with, and we want to capture that within the engine.
** Processing line: ~** Real World Application Drives Features~
- Header detected.
*** True Line Result
*** True Line Result
** Real World Application Drives Features
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~We are bombarded by marketing speak day in and day out. We don't do~
** Processing line: ~that here. There are things that are really great in the engine, and~
** Processing line: ~things that need a lot of work. Collaborate with us so we can help you~
** Processing line: ~reach your goals. Ask for features you actually need as opposed to~
** Processing line: ~anything speculative.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
We are bombarded by marketing speak day in and day out. We don't do that here. There are things that are really great in the engine, and things that need a lot of work. Collaborate with us so we can help you reach your goals. Ask for features you actually need as opposed to anything speculative.
** Processing line: ~We want DragonRuby to *actually* help you build the game you~
** Processing line: ~want to build (as opposed to sell you something piece of demoware that~
** Processing line: ~doesn't work).~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
We want DragonRuby to *actually* help you build the game you want to build (as opposed to sell you something piece of demoware that doesn't work).
** Processing line: ~* How To Determine What Frame You Are On~
- Header detected.
*** True Line Result
*** True Line Result
* How To Determine What Frame You Are On
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~There is a property on ~state~ called ~tick_count~ that is incremented~
** Processing line: ~by DragonRuby every time the ~tick~ method is called. The following~
** Processing line: ~code renders a label that displays the current ~tick_count~.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
There is a property on ~state~ called ~tick_count~ that is incremented by DragonRuby every time the ~tick~ method is called. The following code renders a label that displays the current ~tick_count~.
** 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: ~ args.outputs.labels << [10, 670, "#{args.state.tick_count}"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [10, 670, "#{args.state.tick_count}"]
** 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: ~* How To Get Current Framerate~
- Header detected.
*** True Line Result
*** True Line Result
* How To Get Current Framerate
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Current framerate is a top level property on the Game Toolkit Runtime~
** Processing line: ~and is accessible via ~args.gtk.current_framerate~.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Current framerate is a top level property on the Game Toolkit Runtime and is accessible via ~args.gtk.current_framerate~.
** 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: ~ args.outputs.labels << [10, 710, "framerate: #{args.gtk.current_framerate.round}"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [10, 710, "framerate: #{args.gtk.current_framerate.round}"]
** 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: ~* How To Render A Sprite Using An Array~
- Header detected.
*** True Line Result
*** True Line Result
* How To Render A Sprite Using An Array
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~All file paths should use the forward slash ~/~ *not* backslash~
** Processing line: ~~~. Game Toolkit includes a number of sprites in the ~sprites~~
** Processing line: ~folder (everything about your game is located in the ~mygame~ directory).~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
All file paths should use the forward slash ~/~ *not* backslash ~~. Game Toolkit includes a number of sprites in the ~sprites~ folder (everything about your game is located in the ~mygame~ directory).
** Processing line: ~The following code renders a sprite with a ~width~ and ~height~ of~
** Processing line: ~~100~ in the center of the screen.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The following code renders a sprite with a ~width~ and ~height~ of ~100~ in the center of the screen.
** Processing line: ~~args.outputs.sprites~ is used to render a sprite.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
~args.outputs.sprites~ is used to render a sprite.
** 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: ~ args.outputs.sprites << [~
- Inside source: true
*** True Line Result
args.outputs.sprites << [
** Processing line: ~ 640 - 50, # X~
- Inside source: true
*** True Line Result
640 - 50, # X
** Processing line: ~ 360 - 50, # Y~
- Inside source: true
*** True Line Result
360 - 50, # Y
** Processing line: ~ 100, # W~
- Inside source: true
*** True Line Result
100, # W
** Processing line: ~ 100, # H~
- Inside source: true
*** True Line Result
100, # H
** Processing line: ~ 'sprites/square-blue.png' # PATH~
- Inside source: true
*** True Line Result
'sprites/square-blue.png' # PATH
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** 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: ~* More Sprite Properties As An Array~
- Header detected.
*** True Line Result
*** True Line Result
* More Sprite Properties As An Array
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Here are all the properties you can set on a sprite.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here are all the properties you can set on a sprite.
** 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: ~ args.outputs.sprites << [~
- Inside source: true
*** True Line Result
args.outputs.sprites << [
** Processing line: ~ 100, # X~
- Inside source: true
*** True Line Result
100, # X
** Processing line: ~ 100, # Y~
- Inside source: true
*** True Line Result
100, # Y
** Processing line: ~ 32, # W~
- Inside source: true
*** True Line Result
32, # W
** Processing line: ~ 64, # H~
- Inside source: true
*** True Line Result
64, # H
** Processing line: ~ 'sprites/square-blue.png', # PATH~
- Inside source: true
*** True Line Result
'sprites/square-blue.png', # PATH
** Processing line: ~ 0, # ANGLE~
- Inside source: true
*** True Line Result
0, # ANGLE
** Processing line: ~ 255, # ALPHA~
- Inside source: true
*** True Line Result
255, # ALPHA
** Processing line: ~ 0, # RED_SATURATION~
- Inside source: true
*** True Line Result
0, # RED_SATURATION
** Processing line: ~ 255, # GREEN_SATURATION~
- Inside source: true
*** True Line Result
255, # GREEN_SATURATION
** Processing line: ~ 0 # BLUE_SATURATION~
- Inside source: true
*** True Line Result
0 # BLUE_SATURATION
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** 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: ~* Different Sprite Representations~
- Header detected.
*** True Line Result
*** True Line Result
* Different Sprite Representations
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Using ordinal positioning can get a little unruly given so many~
** Processing line: ~properties you have control over.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Using ordinal positioning can get a little unruly given so many properties you have control over.
** Processing line: ~You can represent a sprite as a ~Hash~:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You can represent a sprite as a ~Hash~:
** 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: ~ args.outputs.sprites << {~
- Inside source: true
*** True Line Result
args.outputs.sprites << {
** Processing line: ~ x: 640 - 50,~
- Inside source: true
*** True Line Result
x: 640 - 50,
** Processing line: ~ y: 360 - 50,~
- Inside source: true
*** True Line Result
y: 360 - 50,
** Processing line: ~ w: 100,~
- Inside source: true
*** True Line Result
w: 100,
** Processing line: ~ h: 100,~
- Inside source: true
*** True Line Result
h: 100,
** Processing line: ~ path: 'sprites/square-blue.png',~
- Inside source: true
*** True Line Result
path: 'sprites/square-blue.png',
** Processing line: ~ angle: 0,~
- Inside source: true
*** True Line Result
angle: 0,
** Processing line: ~ a: 255,~
- Inside source: true
*** True Line Result
a: 255,
** Processing line: ~ r: 255,~
- Inside source: true
*** True Line Result
r: 255,
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 255,~
- Inside source: true
*** True Line Result
b: 255,
** Processing line: ~ source_x: 0,~
- Inside source: true
*** True Line Result
source_x: 0,
** Processing line: ~ source_y: 0,~
- Inside source: true
*** True Line Result
source_y: 0,
** Processing line: ~ source_w: -1,~
- Inside source: true
*** True Line Result
source_w: -1,
** Processing line: ~ source_h: -1,~
- Inside source: true
*** True Line Result
source_h: -1,
** Processing line: ~ flip_vertically: false,~
- Inside source: true
*** True Line Result
flip_vertically: false,
** Processing line: ~ flip_horizontally: false,~
- Inside source: true
*** True Line Result
flip_horizontally: false,
** Processing line: ~ angle_anchor_x: 0.5,~
- Inside source: true
*** True Line Result
angle_anchor_x: 0.5,
** Processing line: ~ angle_anchor_y: 1.0~
- Inside source: true
*** True Line Result
angle_anchor_y: 1.0
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** 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: ~You can represent a sprite as an ~object~:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You can represent a sprite as an ~object~:
** 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: ~ # Create type with ALL sprite properties AND primitive_marker~
- Inside source: true
*** True Line Result
# Create type with ALL sprite properties AND primitive_marker
** Processing line: ~ class Sprite~
- Inside source: true
*** True Line Result
class Sprite
** Processing line: ~ attr_accessor :x, :y, :w, :h, :path, :angle, :a, :r, :g, :b,~
- Inside source: true
*** True Line Result
attr_accessor :x, :y, :w, :h, :path, :angle, :a, :r, :g, :b,
** Processing line: ~ :source_x, :source_y, :source_w, :source_h,~
- Inside source: true
*** True Line Result
:source_x, :source_y, :source_w, :source_h,
** Processing line: ~ :tile_x, :tile_y, :tile_w, :tile_h,~
- Inside source: true
*** True Line Result
:tile_x, :tile_y, :tile_w, :tile_h,
** Processing line: ~ :flip_horizontally, :flip_vertically,~
- Inside source: true
*** True Line Result
:flip_horizontally, :flip_vertically,
** Processing line: ~ :angle_anchor_x, :angle_anchor_y~
- Inside source: true
*** True Line Result
:angle_anchor_x, :angle_anchor_y
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def primitive_marker~
- Inside source: true
*** True Line Result
def primitive_marker
** Processing line: ~ :sprite~
- Inside source: true
*** True Line Result
:sprite
** 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: ~ class BlueSquare < Sprite~
- Inside source: true
*** True Line Result
class BlueSquare < Sprite
** Processing line: ~ def initialize opts~
- Inside source: true
*** True Line Result
def initialize opts
** Processing line: ~ @x = opts[:x]~
- Inside source: true
*** True Line Result
@x = opts[:x]
** Processing line: ~ @y = opts[:y]~
- Inside source: true
*** True Line Result
@y = opts[:y]
** Processing line: ~ @w = opts[:w]~
- Inside source: true
*** True Line Result
@w = opts[:w]
** Processing line: ~ @h = opts[:h]~
- Inside source: true
*** True Line Result
@h = opts[:h]
** Processing line: ~ @path = 'sprites/square-blue.png'~
- Inside source: true
*** True Line Result
@path = 'sprites/square-blue.png'
** 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.outputs.sprites << (BlueSquare.new x: 640 - 50,~
- Inside source: true
*** True Line Result
args.outputs.sprites << (BlueSquare.new x: 640 - 50,
** Processing line: ~ y: 360 - 50,~
- Inside source: true
*** True Line Result
y: 360 - 50,
** Processing line: ~ w: 50,~
- Inside source: true
*** True Line Result
w: 50,
** Processing line: ~ h: 50)~
- Inside source: true
*** True Line Result
h: 50)
** 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: ~* How To Render A Label~
- Header detected.
*** True Line Result
*** True Line Result
* How To Render A Label
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~~args.outputs.labels~ is used to render labels.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
~args.outputs.labels~ is used to render labels.
** Processing line: ~Labels are how you display text. This code will go directly inside of~
** Processing line: ~the ~def tick args~ method.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Labels are how you display text. This code will go directly inside of the ~def tick args~ method.
** Processing line: ~Here is the minimum code:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here is the minimum code:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # X Y TEXT~
- Inside source: true
*** True Line Result
# X Y TEXT
** Processing line: ~ args.outputs.labels << [640, 360, "I am a black label."]~
- Inside source: true
*** True Line Result
args.outputs.labels << [640, 360, "I am a black label."]
** 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: ~* A Colored Label~
- Header detected.
*** True Line Result
*** True Line Result
* A Colored Label
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # A colored label~
- Inside source: true
*** True Line Result
# A colored label
** Processing line: ~ # X Y TEXT, RED GREEN BLUE ALPHA~
- Inside source: true
*** True Line Result
# X Y TEXT, RED GREEN BLUE ALPHA
** Processing line: ~ args.outputs.labels << [640, 360, "I am a redish label.", 255, 128, 128, 255]~
- Inside source: true
*** True Line Result
args.outputs.labels << [640, 360, "I am a redish label.", 255, 128, 128, 255]
** 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: ~* Extended Label Properties~
- Header detected.
*** True Line Result
*** True Line Result
* Extended Label Properties
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # A colored label~
- Inside source: true
*** True Line Result
# A colored label
** Processing line: ~ # X Y TEXT SIZE ALIGNMENT RED GREEN BLUE ALPHA FONT FILE~
- Inside source: true
*** True Line Result
# X Y TEXT SIZE ALIGNMENT RED GREEN BLUE ALPHA FONT FILE
** Processing line: ~ args.outputs.labels << [~
- Inside source: true
*** True Line Result
args.outputs.labels << [
** Processing line: ~ 640, # X~
- Inside source: true
*** True Line Result
640, # X
** Processing line: ~ 360, # Y~
- Inside source: true
*** True Line Result
360, # Y
** Processing line: ~ "Hello world", # TEXT~
- Inside source: true
*** True Line Result
"Hello world", # TEXT
** Processing line: ~ 0, # SIZE_ENUM~
- Inside source: true
*** True Line Result
0, # SIZE_ENUM
** Processing line: ~ 1, # ALIGNMENT_ENUM~
- Inside source: true
*** True Line Result
1, # ALIGNMENT_ENUM
** Processing line: ~ 0, # RED~
- Inside source: true
*** True Line Result
0, # RED
** Processing line: ~ 0, # GREEN~
- Inside source: true
*** True Line Result
0, # GREEN
** Processing line: ~ 0, # BLUE~
- Inside source: true
*** True Line Result
0, # BLUE
** Processing line: ~ 255, # ALPHA~
- Inside source: true
*** True Line Result
255, # ALPHA
** Processing line: ~ "fonts/coolfont.ttf" # FONT~
- Inside source: true
*** True Line Result
"fonts/coolfont.ttf" # FONT
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** 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: ~A ~SIZE_ENUM~ of ~0~ represents "default size". A ~negative~ value~
** Processing line: ~will decrease the label size. A ~positive~ value will increase the~
** Processing line: ~label's size.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
A ~SIZE_ENUM~ of ~0~ represents "default size". A ~negative~ value will decrease the label size. A ~positive~ value will increase the label's size.
** Processing line: ~An ~ALIGNMENT_ENUM~ of ~0~ represents "left aligned". ~1~ represents~
** Processing line: ~"center aligned". ~2~ represents "right aligned".~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
An ~ALIGNMENT_ENUM~ of ~0~ represents "left aligned". ~1~ represents "center aligned". ~2~ represents "right aligned".
** Processing line: ~* Rendering A Label As A ~Hash~~
- Header detected.
*** True Line Result
*** True Line Result
* Rendering A Label As A ~Hash~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~You can add additional metadata about your game within a label, which requires you to use a `Hash` instead.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You can add additional metadata about your game within a label, which requires you to use a `Hash` instead.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ args.outputs.labels << {~
- Inside source: true
*** True Line Result
args.outputs.labels << {
** Processing line: ~ x: 200,~
- Inside source: true
*** True Line Result
x: 200,
** Processing line: ~ y: 550,~
- Inside source: true
*** True Line Result
y: 550,
** Processing line: ~ text: "dragonruby",~
- Inside source: true
*** True Line Result
text: "dragonruby",
** Processing line: ~ size_enum: 2,~
- Inside source: true
*** True Line Result
size_enum: 2,
** Processing line: ~ alignment_enum: 1,~
- Inside source: true
*** True Line Result
alignment_enum: 1,
** Processing line: ~ r: 155,~
- Inside source: true
*** True Line Result
r: 155,
** Processing line: ~ g: 50,~
- Inside source: true
*** True Line Result
g: 50,
** Processing line: ~ b: 50,~
- Inside source: true
*** True Line Result
b: 50,
** Processing line: ~ a: 255,~
- Inside source: true
*** True Line Result
a: 255,
** Processing line: ~ font: "fonts/manaspc.ttf",~
- Inside source: true
*** True Line Result
font: "fonts/manaspc.ttf",
** Processing line: ~ # You can add any properties you like (this will be ignored/won't cause errors)~
- Inside source: true
*** True Line Result
# You can add any properties you like (this will be ignored/won't cause errors)
** Processing line: ~ game_data_one: "Something",~
- Inside source: true
*** True Line Result
game_data_one: "Something",
** Processing line: ~ game_data_two: {~
- Inside source: true
*** True Line Result
game_data_two: {
** Processing line: ~ value_1: "value",~
- Inside source: true
*** True Line Result
value_1: "value",
** Processing line: ~ value_2: "value two",~
- Inside source: true
*** True Line Result
value_2: "value two",
** Processing line: ~ a_number: 15~
- Inside source: true
*** True Line Result
a_number: 15
** 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: ~#+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: ~* Getting The Size Of A Piece Of Text~
- Header detected.
*** True Line Result
*** True Line Result
* Getting The Size Of A Piece Of Text
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~You can get the render size of any string using ~args.gtk.calcstringbox~.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You can get the render size of any string using ~args.gtk.calcstringbox~.
** 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: ~ # TEXT SIZE_ENUM FONT~
- Inside source: true
*** True Line Result
# TEXT SIZE_ENUM FONT
** Processing line: ~ w, h = args.gtk.calcstringbox("some string", 0, "font.ttf")~
- Inside source: true
*** True Line Result
w, h = args.gtk.calcstringbox("some string", 0, "font.ttf")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # NOTE: The SIZE_ENUM and FONT are optional arguments.~
- Inside source: true
*** True Line Result
# NOTE: The SIZE_ENUM and FONT are optional arguments.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a label showing the w and h of the text:~
- Inside source: true
*** True Line Result
# Render a label showing the w and h of the text:
** Processing line: ~ args.outputs.labels << [~
- Inside source: true
*** True Line Result
args.outputs.labels << [
** Processing line: ~ 10,~
- Inside source: true
*** True Line Result
10,
** Processing line: ~ 710,~
- Inside source: true
*** True Line Result
710,
** Processing line: ~ # This string uses Ruby's string interpolation literal: #{}~
- Inside source: true
*** True Line Result
# This string uses Ruby's string interpolation literal: #{}
** Processing line: ~ "'some string' has width: #{w}, and height: #{h}."~
- Inside source: true
*** True Line Result
"'some string' has width: #{w}, and height: #{h}."
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** 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: ~* How To Play A Sound~
- Header detected.
*** True Line Result
*** True Line Result
* How To Play A Sound
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Sounds that end ~.wav~ will play once:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Sounds that end ~.wav~ will play once:
** 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: ~ # Play a sound every second~
- Inside source: true
*** True Line Result
# Play a sound every second
** Processing line: ~ if (args.state.tick_count % 60) == 0~
- Inside source: true
*** True Line Result
if (args.state.tick_count % 60) == 0
** Processing line: ~ args.outputs.sounds << 'something.wav'~
- Inside source: true
*** True Line Result
args.outputs.sounds << 'something.wav'
** 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: ~Sounds that end ~.ogg~ is considered background music and will loop:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Sounds that end ~.ogg~ is considered background music and will loop:
** 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: ~ # Start a sound loop at the beginning of the game~
- Inside source: true
*** True Line Result
# Start a sound loop at the beginning of the game
** Processing line: ~ if args.state.tick_count == 0~
- Inside source: true
*** True Line Result
if args.state.tick_count == 0
** Processing line: ~ args.outputs.sounds << 'background_music.ogg'~
- Inside source: true
*** True Line Result
args.outputs.sounds << 'background_music.ogg'
** 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: ~If you want to play a ~.ogg~ once as if it were a sound effect, you can do:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
If you want to play a ~.ogg~ once as if it were a sound effect, you can do:
** 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: ~ # Play a sound every second~
- Inside source: true
*** True Line Result
# Play a sound every second
** Processing line: ~ if (args.state.tick_count % 60) == 0~
- Inside source: true
*** True Line Result
if (args.state.tick_count % 60) == 0
** Processing line: ~ args.gtk.queue_sound 'some-ogg.ogg'~
- Inside source: true
*** True Line Result
args.gtk.queue_sound 'some-ogg.ogg'
** 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: ~* Using ~args.state~ To Store Your Game State~
- Header detected.
*** True Line Result
*** True Line Result
* Using ~args.state~ To Store Your Game State
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~~args.state~ is a open data structure that allows you to define~
** Processing line: ~properties that are arbitrarily nested. You don't need to define any kind of~
** Processing line: ~~class~.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
~args.state~ is a open data structure that allows you to define properties that are arbitrarily nested. You don't need to define any kind of ~class~.
** Processing line: ~To initialize your game state, use the ~||=~ operator. Any value on~
** Processing line: ~the right side of ~||=~ will only be assigned _once_.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
To initialize your game state, use the ~||=~ operator. Any value on the right side of ~||=~ will only be assigned _once_.
** Processing line: ~To assign a value every frame, just use the ~=~ operator, but _make~
** Processing line: ~sure_ you've initialized a default value.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
To assign a value every frame, just use the ~=~ operator, but _make sure_ you've initialized a default value.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # initialize your game state ONCE~
- Inside source: true
*** True Line Result
# initialize your game state ONCE
** Processing line: ~ args.state.player.x ||= 0~
- Inside source: true
*** True Line Result
args.state.player.x ||= 0
** Processing line: ~ args.state.player.y ||= 0~
- Inside source: true
*** True Line Result
args.state.player.y ||= 0
** Processing line: ~ args.state.player.hp ||= 100~
- Inside source: true
*** True Line Result
args.state.player.hp ||= 100
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # increment the x position of the character by one every frame~
- Inside source: true
*** True Line Result
# increment the x position of the character by one every frame
** Processing line: ~ args.state.player.x += 1~
- Inside source: true
*** True Line Result
args.state.player.x += 1
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a sprite with a label above the sprite~
- Inside source: true
*** True Line Result
# Render a sprite with a label above the sprite
** Processing line: ~ args.outputs.sprites << [~
- Inside source: true
*** True Line Result
args.outputs.sprites << [
** Processing line: ~ args.state.player.x,~
- Inside source: true
*** True Line Result
args.state.player.x,
** Processing line: ~ args.state.player.y,~
- Inside source: true
*** True Line Result
args.state.player.y,
** Processing line: ~ 32, 32,~
- Inside source: true
*** True Line Result
32, 32,
** Processing line: ~ "player.png"~
- Inside source: true
*** True Line Result
"player.png"
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << [~
- Inside source: true
*** True Line Result
args.outputs.labels << [
** Processing line: ~ args.state.player.x,~
- Inside source: true
*** True Line Result
args.state.player.x,
** Processing line: ~ args.state.player.y - 50,~
- Inside source: true
*** True Line Result
args.state.player.y - 50,
** Processing line: ~ args.state.player.hp~
- Inside source: true
*** True Line Result
args.state.player.hp
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** 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: ~* Frequently Asked Questions, Comments, and Concerns~
- Header detected.
*** True Line Result
*** True Line Result
* Frequently Asked Questions, Comments, and Concerns
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Here are questions, comments, and concerns that frequently come~
** Processing line: ~up.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here are questions, comments, and concerns that frequently come up.
** Processing line: ~** Frequently Asked Questions~
- Header detected.
*** True Line Result
*** True Line Result
** Frequently Asked Questions
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~*** What is DragonRuby LLP?~
- Header detected.
*** True Line Result
*** True Line Result
*** What is DragonRuby LLP?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~DragonRuby LLP is a partnership of four devs who came together~
** Processing line: ~with the goal of bringing the aesthetics and joy of Ruby, everywhere possible.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
DragonRuby LLP is a partnership of four devs who came together with the goal of bringing the aesthetics and joy of Ruby, everywhere possible.
** Processing line: ~Under DragonRuby LLP, we offer a number of products (with more on the~
** Processing line: ~way):~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Under DragonRuby LLP, we offer a number of products (with more on the way):
** Processing line: ~- Game Toolkit (GTK): A 2D game engine that is compatible with modern~
- Line was identified as a list.
*** True Line Result
** Processing line: ~ gaming platforms.~
** Processing line: ~- RubyMotion (RM): A compiler toolchain that allows you to build native, cross-platform mobile~
- Line was identified as a list.
*** True Line Result
- Game Toolkit (GTK): A 2D game engine that is compatible with modern
gaming platforms.
** Processing line: ~ apps. [[http://rubymotion.com]]~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- RubyMotion (RM): A compiler toolchain that allows you to build native, cross-platform mobile
apps. [[http://rubymotion.com]]
** Processing line: ~All of the products above leverage a shared core called DragonRuby.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
All of the products above leverage a shared core called DragonRuby.
** Processing line: ~NOTE: From an official branding standpoint each one of the products is~
** Processing line: ~suffixed with "A DragonRuby LLP Product" tagline. Also, DragonRuby is~
** Processing line: ~_one word, title cased_.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
NOTE: From an official branding standpoint each one of the products is suffixed with "A DragonRuby LLP Product" tagline. Also, DragonRuby is _one word, title cased_.
** Processing line: ~NOTE: We leave the "A DragonRuby LLP Product" off of this one because~
** Processing line: ~that just sounds really weird.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
NOTE: We leave the "A DragonRuby LLP Product" off of this one because that just sounds really weird.
** Processing line: ~NOTE: Devs who use DragonRuby are "Dragon Riders/Riders of Dragons". That's a bad ass~
** Processing line: ~identifier huh?~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
NOTE: Devs who use DragonRuby are "Dragon Riders/Riders of Dragons". That's a bad ass identifier huh?
** Processing line: ~*** What is DragonRuby?~
- Header detected.
*** True Line Result
*** True Line Result
*** What is DragonRuby?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The response to this question requires a few subparts. First we need~
** Processing line: ~to clarify some terms. Specifically _language specification_ vs _runtime_.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The response to this question requires a few subparts. First we need to clarify some terms. Specifically _language specification_ vs _runtime_.
** Processing line: ~**** Okay... so what is the difference between a language specification and a runtime?~
- Header detected.
*** True Line Result
*** True Line Result
**** Okay... so what is the difference between a language specification and a runtime?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~A runtime is an _implementation_ of a language specification. When~
** Processing line: ~people say "Ruby," they are usually referring to "the Ruby 3.0+ language~
** Processing line: ~specification implemented via the CRuby/MRI Runtime."~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
A runtime is an _implementation_ of a language specification. When people say "Ruby," they are usually referring to "the Ruby 3.0+ language specification implemented via the CRuby/MRI Runtime."
** Processing line: ~But, there are many Ruby Runtimes: CRuby/MRI, JRuby, Truffle, Rubinius, Artichoke,~
** Processing line: ~and (last but certainly not least) DragonRuby.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
But, there are many Ruby Runtimes: CRuby/MRI, JRuby, Truffle, Rubinius, Artichoke, and (last but certainly not least) DragonRuby.
** Processing line: ~**** Okay... what language specification does DragonRuby use then?~
- Header detected.
*** True Line Result
*** True Line Result
**** Okay... what language specification does DragonRuby use then?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~DragonRuby's goal is to be compliant with the ISO/IEC 30170:2012 standard. It's~
** Processing line: ~syntax is Ruby 2.x compatible, but also contains semantic changes that help~
** Processing line: ~it natively interface with platform specific libraries.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
DragonRuby's goal is to be compliant with the ISO/IEC 30170:2012 standard. It's syntax is Ruby 2.x compatible, but also contains semantic changes that help it natively interface with platform specific libraries.
** Processing line: ~**** So... why another runtime?~
- Header detected.
*** True Line Result
*** True Line Result
**** So... why another runtime?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The elevator pitch is:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The elevator pitch is:
** Processing line: ~DragonRuby is a Multilevel Cross-platform Runtime. The "multiple levels"~
** Processing line: ~within the runtime allows us to target platforms no other Ruby can~
** Processing line: ~target: PC, Mac, Linux, Raspberry Pi, WASM, iOS, Android, Nintendo~
** Processing line: ~Switch, PS4, Xbox, and Scadia.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
DragonRuby is a Multilevel Cross-platform Runtime. The "multiple levels" within the runtime allows us to target platforms no other Ruby can target: PC, Mac, Linux, Raspberry Pi, WASM, iOS, Android, Nintendo Switch, PS4, Xbox, and Scadia.
** Processing line: ~**** What does Multilevel Cross-platform mean?~
- Header detected.
*** True Line Result
*** True Line Result
**** What does Multilevel Cross-platform mean?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~There are complexities associated with targeting all the platforms we~
** Processing line: ~support. Because of this, the runtime had to be architected in such a~
** Processing line: ~way that new platforms could be easily added (which lead to us partitioning the~
** Processing line: ~runtime internally):~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
There are complexities associated with targeting all the platforms we support. Because of this, the runtime had to be architected in such a way that new platforms could be easily added (which lead to us partitioning the runtime internally):
** Processing line: ~- Level 1 we leverage a good portion of mRuby.~
- Line was identified as a list.
*** True Line Result
** Processing line: ~- Level 2 consists of optimizations to mRuby we've made given that our~
- Line was identified as a list.
*** True Line Result
- Level 1 we leverage a good portion of mRuby.
** Processing line: ~ target platforms are well known.~
** Processing line: ~- Level 3 consists of portable C libraries and their Ruby~
- Line was identified as a list.
*** True Line Result
- Level 2 consists of optimizations to mRuby we've made given that our
target platforms are well known.
** Processing line: ~ C-Extensions.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- Level 3 consists of portable C libraries and their Ruby
C-Extensions.
** Processing line: ~Levels 1 through 3 are fairly commonplace in many runtime~
** Processing line: ~implementations (with level 1 being the most portable, and level 3~
** Processing line: ~being the fastest). But the DragonRuby Runtime has taken things a~
** Processing line: ~bit further:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Levels 1 through 3 are fairly commonplace in many runtime implementations (with level 1 being the most portable, and level 3 being the fastest). But the DragonRuby Runtime has taken things a bit further:
** Processing line: ~- Level 4 consists of shared abstractions around hardware I/O and operating~
- Line was identified as a list.
*** True Line Result
** Processing line: ~ system resources. This level leverages open source and proprietary~
** Processing line: ~ components within Simple DirectMedia Layer (a low level multimedia~
** Processing line: ~ component library that has been in active development for 22 years~
** Processing line: ~ and counting).~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- Level 4 consists of shared abstractions around hardware I/O and operating
system resources. This level leverages open source and proprietary components within Simple DirectMedia Layer (a low level multimedia component library that has been in active development for 22 years and counting).
** Processing line: ~- Level 5 is a code generation layer which creates metadata that allows~
- Line was identified as a list.
*** True Line Result
** Processing line: ~ for native interoperability with host runtime libraries. It also~
** Processing line: ~ includes OS specific message pump orchestrations.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- Level 5 is a code generation layer which creates metadata that allows
for native interoperability with host runtime libraries. It also includes OS specific message pump orchestrations.
** Processing line: ~- Level 6 is a Ahead of Time/Just in Time Ruby compiler built with LLVM. This~
- Line was identified as a list.
*** True Line Result
** Processing line: ~ compiler outputs _very_ fast platform specific bitcode, but only~
** Processing line: ~ supports a subset of the Ruby language specification.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- Level 6 is a Ahead of Time/Just in Time Ruby compiler built with LLVM. This
compiler outputs _very_ fast platform specific bitcode, but only supports a subset of the Ruby language specification.
** Processing line: ~These levels allow us to stay up to date with open source~
** Processing line: ~implementations of Ruby; provide fast, native code execution~
** Processing line: ~on proprietary platforms; ensure good separation between these two~
** Processing line: ~worlds; and provides a means to add new platforms without going insane.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
These levels allow us to stay up to date with open source implementations of Ruby; provide fast, native code execution on proprietary platforms; ensure good separation between these two worlds; and provides a means to add new platforms without going insane.
** Processing line: ~**** Cool cool. So given that I understand everything to this point, can we answer the original question? What is DragonRuby?~
- Header detected.
*** True Line Result
*** True Line Result
**** Cool cool. So given that I understand everything to this point, can we answer the original question? What is DragonRuby?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~DragonRuby is a Ruby runtime implementation that takes all the lessons~
** Processing line: ~we've learned from MRI/CRuby, and merges it with the latest and greatest~
** Processing line: ~compiler and OSS technologies.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
DragonRuby is a Ruby runtime implementation that takes all the lessons we've learned from MRI/CRuby, and merges it with the latest and greatest compiler and OSS technologies.
** Processing line: ~*** How is DragonRuby different than MRI?~
- Header detected.
*** True Line Result
*** True Line Result
*** How is DragonRuby different than MRI?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~DragonRuby supports a subset of MRI apis. Our target is to support all~
** Processing line: ~of mRuby's standard lib. There are challenges to this given the number~
** Processing line: ~of platforms we are trying to support (specifically console).~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
DragonRuby supports a subset of MRI apis. Our target is to support all of mRuby's standard lib. There are challenges to this given the number of platforms we are trying to support (specifically console).
** Processing line: ~**** Does DragonRuby support Gems?~
- Header detected.
*** True Line Result
*** True Line Result
**** Does DragonRuby support Gems?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~DragonRuby does not support gems because that requires the~
** Processing line: ~installation of MRI Ruby on the developer's machine (which is a~
** Processing line: ~non-starter given that we want DragonRuby to be a zero dependency~
** Processing line: ~runtime). While this seems easy for Mac and Linux, it is much harder~
** Processing line: ~on Windows and Raspberry Pi. mRuby has taken the approach of having a~
** Processing line: ~git repository for compatible gems and we will most likely follow~
** Processing line: ~suite: [[https://github.com/mruby/mgem-list]].~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
DragonRuby does not support gems because that requires the installation of MRI Ruby on the developer's machine (which is a non-starter given that we want DragonRuby to be a zero dependency runtime). While this seems easy for Mac and Linux, it is much harder on Windows and Raspberry Pi. mRuby has taken the approach of having a git repository for compatible gems and we will most likely follow suite: [[https://github.com/mruby/mgem-list]].
** Processing line: ~**** Does DragonRuby have a REPL/IRB?~
- Header detected.
*** True Line Result
*** True Line Result
**** Does DragonRuby have a REPL/IRB?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~You can use DragonRuby's Console within the game to inspect object and~
** Processing line: ~execute small pieces of code. For more complex pieces of code create a~
** Processing line: ~file called ~repl.rb~ and put it in ~mygame/app/repl.rb~:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You can use DragonRuby's Console within the game to inspect object and execute small pieces of code. For more complex pieces of code create a file called ~repl.rb~ and put it in ~mygame/app/repl.rb~:
** Processing line: ~- Any code you write in there will be executed when you change the file. You can organize different pieces of code using the ~repl~ method:~
- Line was identified as a list.
*** True Line Result
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- Any code you write in there will be executed when you change the file. You can organize different pieces of code using the ~repl~ method:
** 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: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "hello world"~
- Inside source: true
*** True Line Result
puts "hello world"
** Processing line: ~ puts 1 + 1~
- Inside source: true
*** True Line Result
puts 1 + 1
** 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: ~- If you use the `repl` method, the code will be executed and the DragonRuby Console will automatically open so you can see the results (on Mac and Linux, the results will also be printed to the terminal).~
- Line was identified as a list.
*** True Line Result
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- If you use the `repl` method, the code will be executed and the DragonRuby Console will automatically open so you can see the results (on Mac and Linux, the results will also be printed to the terminal).
** Processing line: ~- All ~puts~ statements will also be saved to ~logs/log.txt~. So if you want to stay in your editor and not look at the terminal, or the DragonRuby Console, you can ~tail~ this file.~
- Line was identified as a list.
*** True Line Result
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- All ~puts~ statements will also be saved to ~logs/log.txt~. So if you want to stay in your editor and not look at the terminal, or the DragonRuby Console, you can ~tail~ this file.
** Processing line: ~4. To ignore code in ~repl.rb~, instead of commenting it out, prefix ~repl~ with the letter ~x~ and it'll be ignored.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
4. To ignore code in ~repl.rb~, instead of commenting it out, prefix ~repl~ with the letter ~x~ and it'll be ignored.
** 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: ~ xrepl do # <------- line is prefixed with an "x"~
- Inside source: true
*** True Line Result
xrepl do # <------- line is prefixed with an "x"
** Processing line: ~ puts "hello world"~
- Inside source: true
*** True Line Result
puts "hello world"
** Processing line: ~ puts 1 + 1~
- Inside source: true
*** True Line Result
puts 1 + 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This code will be executed when you save the file.~
- Inside source: true
*** True Line Result
# This code will be executed when you save the file.
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "Hello"~
- Inside source: true
*** True Line Result
puts "Hello"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "This code will also be executed."~
- Inside source: true
*** True Line Result
puts "This code will also be executed."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # use xrepl to "comment out" code~
- Inside source: true
*** True Line Result
# use xrepl to "comment out" code
** Processing line: ~ xrepl do~
- Inside source: true
*** True Line Result
xrepl do
** Processing line: ~ puts "This code will not be executed because of the x infront of repl".~
- Inside source: true
*** True Line Result
puts "This code will not be executed because of the x infront of repl".
** 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: ~**** Does DragonRuby support ~pry~ or have any other debugging facilities?~
- Header detected.
*** True Line Result
*** True Line Result
**** Does DragonRuby support ~pry~ or have any other debugging facilities?
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~~pry~ is a gem that assumes you are using the MRI Runtime (which is~
** Processing line: ~incompatible with DragonRuby). Eventually DragonRuby will have a pry~
** Processing line: ~based experience that is compatible with a debugging infrastructure~
** Processing line: ~called LLDB. Take the time to read about LLDB as it shows the~
** Processing line: ~challenges in creating something that is compatible.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
~pry~ is a gem that assumes you are using the MRI Runtime (which is incompatible with DragonRuby). Eventually DragonRuby will have a pry based experience that is compatible with a debugging infrastructure called LLDB. Take the time to read about LLDB as it shows the challenges in creating something that is compatible.
** Processing line: ~You can use DragonRuby's replay capabilities to troubleshoot:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You can use DragonRuby's replay capabilities to troubleshoot:
** Processing line: ~1. DragonRuby is hot loaded which gives you a very fast feedback loop (if the game throws an exception, it's because of the code you just added).~
- Line was identified as a start of a list.
*** True Line Result
** Processing line: ~2. Use ~./dragonruby mygame --record~ to create a game play recording that you can use to find the exception (you can replay a recoding by executing ~./dragonruby mygame --replay last_replay.txt~ or through the DragonRuby Console using ~$gtk.recording.start_replay "last_replay.txt"~.~
- Line was identified as a continuation of a list.
*** True Line Result
1. DragonRuby is hot loaded which gives you a very fast feedback loop (if the game throws an exception, it's because of the code you just added).
** Processing line: ~3. DragonRuby also ships with a unit testing facility. You can invoke the following command to run a test: ~./dragonruby . --eval some_ruby_file.rb --no-tick~.~
- Line was identified as a continuation of a list.
*** True Line Result
2. Use ~./dragonruby mygame --record~ to create a game play recording that you can use to find the exception (you can replay a recoding by executing ~./dragonruby mygame --replay last_replay.txt~ or through the DragonRuby Console using ~$gtk.recording.start_replay "last_replay.txt"~.
** Processing line: ~4. Get into the habit of adding debugging facilities within the game itself. You can add drawing primitives to ~args.outputs.debug~ that will render on top of your game but will be ignored in a production release.~
- Line was identified as a continuation of a list.
*** True Line Result
3. DragonRuby also ships with a unit testing facility. You can invoke the following command to run a test: ~./dragonruby . --eval some_ruby_file.rb --no-tick~.
** Processing line: ~5. Debugging something that runs at 60fps is (imo) not that helpful. The exception you are seeing could have been because of a change that occurred many frames ago.~
- Line was identified as a continuation of a list.
*** True Line Result
4. Get into the habit of adding debugging facilities within the game itself. You can add drawing primitives to ~args.outputs.debug~ that will render on top of your game but will be ignored in a production release.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
5. Debugging something that runs at 60fps is (imo) not that helpful. The exception you are seeing could have been because of a change that occurred many frames ago.
** Processing line: ~** Frequent Comments About Ruby as a Language Choice~
- Header detected.
*** True Line Result
*** True Line Result
** Frequent Comments About Ruby as a Language Choice
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~*** But Ruby is dead.~
- Header detected.
*** True Line Result
*** True Line Result
*** But Ruby is dead.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Let's check the official source for the answer to this question:~
** Processing line: ~isrubydead.com: [[https://isrubydead.com/]].~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Let's check the official source for the answer to this question: isrubydead.com: [[https://isrubydead.com/]].
** Processing line: ~On a more serious note, Ruby's _quantity_ levels aren't what they used~
** Processing line: ~to be. And that's totally fine. Every one chases the new and shiny.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
On a more serious note, Ruby's _quantity_ levels aren't what they used to be. And that's totally fine. Every one chases the new and shiny.
** Processing line: ~What really matters is _quality/maturity_. Here is the latest (StackOverflow~
** Processing line: ~Survey sorted by highest paid developers)[https://insights.stackoverflow.com/survey/2019#top-paying-technologies].~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
What really matters is _quality/maturity_. Here is the latest (StackOverflow Survey sorted by highest paid developers)[https://insights.stackoverflow.com/survey/2019#top-paying-technologies].
** Processing line: ~Let's stop making this comment shall we?~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Let's stop making this comment shall we?
** Processing line: ~*** But Ruby is slow.~
- Header detected.
*** True Line Result
*** True Line Result
*** But Ruby is slow.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~That doesn't make any sense. A language specification can't be~
** Processing line: ~slow... it's a language spec. Sure, an _implementation/runtime_ can be slow though, but then we'd~
** Processing line: ~have to talk about which runtime.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
That doesn't make any sense. A language specification can't be slow... it's a language spec. Sure, an _implementation/runtime_ can be slow though, but then we'd have to talk about which runtime.
** Processing line: ~*** Dynamic languages are slow.~
- Header detected.
*** True Line Result
*** True Line Result
*** Dynamic languages are slow.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~They are certainly slower than statically compiled languages. With the~
** Processing line: ~processing power and compiler optimizations we have today,~
** Processing line: ~dynamic languages like Ruby are _fast enough_.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
They are certainly slower than statically compiled languages. With the processing power and compiler optimizations we have today, dynamic languages like Ruby are _fast enough_.
** Processing line: ~Unless you are writing in some form of intermediate representation by hand,~
** Processing line: ~your language of choice also suffers this same fallacy of slow. Like, nothing is~
** Processing line: ~faster than a low level assembly-like language. So unless you're~
** Processing line: ~writing in that, let's stop making this comment.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Unless you are writing in some form of intermediate representation by hand, your language of choice also suffers this same fallacy of slow. Like, nothing is faster than a low level assembly-like language. So unless you're writing in that, let's stop making this comment.
** Processing line: ~NOTE: If you _are_ hand writing LLVM IR, we are always open to~
** Processing line: ~bringing on new partners with such a skill set. Email us ^_^.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
NOTE: If you _are_ hand writing LLVM IR, we are always open to bringing on new partners with such a skill set. Email us ^_^.
** Processing line: ~** Frequent Concerns~
- Header detected.
*** True Line Result
*** True Line Result
** Frequent Concerns
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~*** DragonRuby is not open source. That's not right.~
- Header detected.
*** True Line Result
*** True Line Result
*** DragonRuby is not open source. That's not right.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The current state of open source is unsustainable. Contributors work~
** Processing line: ~for free, most all open source repositories are severely under-staffed,~
** Processing line: ~and burnout from core members is rampant.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The current state of open source is unsustainable. Contributors work for free, most all open source repositories are severely under-staffed, and burnout from core members is rampant.
** Processing line: ~We believe in open source very strongly. Parts of DragonRuby are~
** Processing line: ~in fact, open source. Just not all of it (for legal reasons, and~
** Processing line: ~because the IP we've created has value). And we promise that we are~
** Processing line: ~looking for (or creating) ways to _sustainably_ open source everything we do.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
We believe in open source very strongly. Parts of DragonRuby are in fact, open source. Just not all of it (for legal reasons, and because the IP we've created has value). And we promise that we are looking for (or creating) ways to _sustainably_ open source everything we do.
** Processing line: ~If you have ideas on how we can do this, email us!~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
If you have ideas on how we can do this, email us!
** Processing line: ~If the reason above isn't sufficient, then definitely use something else.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
If the reason above isn't sufficient, then definitely use something else.
** Processing line: ~All this being said, we do have parts of the engine open sourced on GitHub: [[https://github.com/dragonruby/dragonruby-game-toolkit-contrib/]]~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
All this being said, we do have parts of the engine open sourced on GitHub: [[https://github.com/dragonruby/dragonruby-game-toolkit-contrib/]]
** Processing line: ~*** DragonRuby is for pay. You should offer a free version.~
- Header detected.
*** True Line Result
*** True Line Result
*** DragonRuby is for pay. You should offer a free version.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~If you can afford to pay for DragonRuby, you should (and will). We don't go~
** Processing line: ~around telling writers that they should give us their books for free,~
** Processing line: ~and only require payment if we read the entire thing. It's time we stop asking that~
** Processing line: ~of software products.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
If you can afford to pay for DragonRuby, you should (and will). We don't go around telling writers that they should give us their books for free, and only require payment if we read the entire thing. It's time we stop asking that of software products.
** Processing line: ~That being said, we will _never_ put someone out financially. We have~
** Processing line: ~income assistance for anyone that can't afford a license to any one of~
** Processing line: ~our products.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
That being said, we will _never_ put someone out financially. We have income assistance for anyone that can't afford a license to any one of our products.
** Processing line: ~You qualify for a free, unrestricted license to DragonRuby products if~
** Processing line: ~any of the following items pertain to you:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You qualify for a free, unrestricted license to DragonRuby products if any of the following items pertain to you:
** Processing line: ~- Your income is below $2,000.00 (USD) per month.~
- Line was identified as a list.
*** True Line Result
** Processing line: ~- You are under 18 years of age.~
- Line was identified as a list.
*** True Line Result
- Your income is below $2,000.00 (USD) per month.
** Processing line: ~- You are a student of any type: traditional public school, home~
- Line was identified as a list.
*** True Line Result
- You are under 18 years of age.
** Processing line: ~ schooling, college, bootcamp, or online.~
** Processing line: ~- You are a teacher, mentor, or parent who wants to teach a kid how to code.~
- Line was identified as a list.
*** True Line Result
- You are a student of any type: traditional public school, home
schooling, college, bootcamp, or online.
** Processing line: ~- You work/worked in public service or at a charitable organization:~
- Line was identified as a list.
*** True Line Result
- You are a teacher, mentor, or parent who wants to teach a kid how to code.
** Processing line: ~ for example public office, army, or any 501(c)(3) organization.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- You work/worked in public service or at a charitable organization:
for example public office, army, or any 501(c)(3) organization.
** Processing line: ~Just contact Amir at amir.rajan@dragonruby.org with a short~
** Processing line: ~explanation of your current situation and he'll set you up. No~
** Processing line: ~questions asked.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Just contact Amir at amir.rajan@dragonruby.org with a short explanation of your current situation and he'll set you up. No questions asked.
** Processing line: ~*** But still, you should offer a free version. So I can try it out and see if I like it.~
- Header detected.
*** True Line Result
*** True Line Result
*** But still, you should offer a free version. So I can try it out and see if I like it.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~You can try our [web-based sandbox environment](). But it won't do the~
** Processing line: ~runtime justice. Or just come to our [Slack]() or [Discord]() channel~
** Processing line: ~and ask questions. We'd be happy to have a one on one video chat with~
** Processing line: ~you and show off all the cool stuff we're doing.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You can try our [web-based sandbox environment](). But it won't do the runtime justice. Or just come to our [Slack]() or [Discord]() channel and ask questions. We'd be happy to have a one on one video chat with you and show off all the cool stuff we're doing.
** Processing line: ~Seriously just buy it. Get a refund if you don't like it. We make it~
** Processing line: ~stupid easy to do so.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Seriously just buy it. Get a refund if you don't like it. We make it stupid easy to do so.
** Processing line: ~*** I still think you should do a free version. Think of all people who would give it a shot.~
- Header detected.
*** True Line Result
*** True Line Result
*** I still think you should do a free version. Think of all people who would give it a shot.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Free isn't a sustainable financial model. We don't want to spam your~
** Processing line: ~email. We don't want to collect usage data off of you either. We just~
** Processing line: ~want to provide quality toolchains to quality developers (as opposed~
** Processing line: ~to a large quantity of developers).~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Free isn't a sustainable financial model. We don't want to spam your email. We don't want to collect usage data off of you either. We just want to provide quality toolchains to quality developers (as opposed to a large quantity of developers).
** Processing line: ~The people that pay for DragonRuby and make an effort to understand it are the~
** Processing line: ~ones we want to build a community around, partner with, and collaborate~
** Processing line: ~with. So having that small monetary wall deters entitled individuals~
** Processing line: ~that don't value the same things we do.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The people that pay for DragonRuby and make an effort to understand it are the ones we want to build a community around, partner with, and collaborate with. So having that small monetary wall deters entitled individuals that don't value the same things we do.
** Processing line: ~*** What if I build something with DragonRuby, but DragonRuby LLP becomes insolvent.~
- Header detected.
*** True Line Result
*** True Line Result
*** What if I build something with DragonRuby, but DragonRuby LLP becomes insolvent.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~That won't happen if the development world stop asking for free stuff~
** Processing line: ~and non-trivially compensate open source developers. Look, we want to be~
** Processing line: ~able to work on the stuff we love, every day of our lives. And we'll go~
** Processing line: ~to great lengths to make that happen.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
That won't happen if the development world stop asking for free stuff and non-trivially compensate open source developers. Look, we want to be able to work on the stuff we love, every day of our lives. And we'll go to great lengths to make that happen.
** Processing line: ~But, in the event that sad day comes, our partnership bylaws state that~
** Processing line: ~_all_ DragonRuby IP that can be legally open sourced, will be released~
** Processing line: ~under a permissive license.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
But, in the event that sad day comes, our partnership bylaws state that _all_ DragonRuby IP that can be legally open sourced, will be released under a permissive license.
** Processing line: ~* DOCS: ~GTK::Runtime~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::Runtime~
** Processing line: ~The GTK::Runtime class is the core of DragonRuby. It is globally accessible via ~$gtk~.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The GTK::Runtime class is the core of DragonRuby. It is globally accessible via ~$gtk~.
** Processing line: ~* DOCS: ~GTK::Runtime#reset~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::Runtime#reset~
** Processing line: ~This function will reset Kernel.tick_count to 0 and will remove all data from args.state.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
This function will reset Kernel.tick_count to 0 and will remove all data from args.state.
** Processing line: ~* DOCS: ~GTK::Runtime#calcstringbox~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::Runtime#calcstringbox~
** Processing line: ~This function returns the width and height of a string.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
This function returns the width and height of a string.
** 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: ~ args.state.string_size ||= args.gtk.calcstringbox "Hello World"~
- Inside source: true
*** True Line Result
args.state.string_size ||= args.gtk.calcstringbox "Hello World"
** Processing line: ~ args.state.string_size_font_size ||= args.gtk.calcstringbox "Hello World"~
- Inside source: true
*** True Line Result
args.state.string_size_font_size ||= args.gtk.calcstringbox "Hello World"
** 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: ~GTK::Runtime#write_file~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::Runtime#write_file~
** Processing line: ~This function takes in two parameters. The first paramter is the file path and assumes the the game~
** Processing line: ~directory is the root. The second parameter is the string that will be written. The method overwrites whatever~
** Processing line: ~is currently in the file. Use ~GTK::Runtime#append_file~ to append to the file as opposed to overwriting.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
This function takes in two parameters. The first paramter is the file path and assumes the the game directory is the root. The second parameter is the string that will be written. The method overwrites whatever is currently in the file. Use ~GTK::Runtime#append_file~ to append to the file as opposed to overwriting.
** 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: ~ if args.inputs.mouse.click~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click
** Processing line: ~ args.gtk.write_file "last-mouse-click.txt", "Mouse was clicked at #{args.state.tick_count}."~
- Inside source: true
*** True Line Result
args.gtk.write_file "last-mouse-click.txt", "Mouse was clicked at #{args.state.tick_count}."
** 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
*** True Line Result
* DOCS: ~Array~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The Array class has been extend to provide methods that~
** Processing line: ~will help in common game development tasks. Array is one of the most~
** Processing line: ~powerful classes in Ruby and a very fundamental component of Game Toolkit.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The Array class has been extend to provide methods that will help in common game development tasks. Array is one of the most powerful classes in Ruby and a very fundamental component of Game Toolkit.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Array#map~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Array#map~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The function given a block returns a new ~Enumerable~ of values.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The function given a block returns a new ~Enumerable~ of values.
** Processing line: ~Example of using ~Array#map~ in conjunction with ~args.state~ and~
** Processing line: ~~args.outputs.sprites~ to render sprites to the screen.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Example of using ~Array#map~ in conjunction with ~args.state~ and ~args.outputs.sprites~ to render sprites to the screen.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # define the colors of the rainbow in ~args.state~~
- Inside source: true
*** True Line Result
# define the colors of the rainbow in ~args.state~
** Processing line: ~ # as an ~Array~ of ~Hash~es with :order and :name.~
- Inside source: true
*** True Line Result
# as an ~Array~ of ~Hash~es with :order and :name.
** Processing line: ~ # :order will be used to determine render location~
- Inside source: true
*** True Line Result
# :order will be used to determine render location
** Processing line: ~ # and :name will be used to determine sprite path.~
- Inside source: true
*** True Line Result
# and :name will be used to determine sprite path.
** Processing line: ~ args.state.rainbow_colors ||= [~
- Inside source: true
*** True Line Result
args.state.rainbow_colors ||= [
** Processing line: ~ { order: 0, name: :red },~
- Inside source: true
*** True Line Result
{ order: 0, name: :red },
** Processing line: ~ { order: 1, name: :orange },~
- Inside source: true
*** True Line Result
{ order: 1, name: :orange },
** Processing line: ~ { order: 2, name: :yellow },~
- Inside source: true
*** True Line Result
{ order: 2, name: :yellow },
** Processing line: ~ { order: 3, name: :green },~
- Inside source: true
*** True Line Result
{ order: 3, name: :green },
** Processing line: ~ { order: 4, name: :blue },~
- Inside source: true
*** True Line Result
{ order: 4, name: :blue },
** Processing line: ~ { order: 5, name: :indigo },~
- Inside source: true
*** True Line Result
{ order: 5, name: :indigo },
** Processing line: ~ { order: 6, name: :violet },~
- Inside source: true
*** True Line Result
{ order: 6, name: :violet },
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render sprites diagonally to the screen~
- Inside source: true
*** True Line Result
# render sprites diagonally to the screen
** Processing line: ~ # with a width and height of 50.~
- Inside source: true
*** True Line Result
# with a width and height of 50.
** Processing line: ~ args.outputs~
- Inside source: true
*** True Line Result
args.outputs
** Processing line: ~ .sprites << args.state~
- Inside source: true
*** True Line Result
.sprites << args.state
** Processing line: ~ .rainbow_colors~
- Inside source: true
*** True Line Result
.rainbow_colors
** Processing line: ~ .map do |color| # <-- ~Array#map~ usage~
- Inside source: true
*** True Line Result
.map do |color| # <-- ~Array#map~ usage
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ color[:order] * 50,~
- Inside source: true
*** True Line Result
color[:order] * 50,
** Processing line: ~ color[:order] * 50,~
- Inside source: true
*** True Line Result
color[:order] * 50,
** Processing line: ~ 50,~
- Inside source: true
*** True Line Result
50,
** Processing line: ~ 50,~
- Inside source: true
*** True Line Result
50,
** Processing line: ~ "sprites/square-#{color[:name]}.png"~
- Inside source: true
*** True Line Result
"sprites/square-#{color[:name]}.png"
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Array#each~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Array#each~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The function, given a block, invokes the block for each item in the~
** Processing line: ~~Array~. ~Array#each~ is synonymous to foreach constructs in other languages.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The function, given a block, invokes the block for each item in the ~Array~. ~Array#each~ is synonymous to foreach constructs in other languages.
** Processing line: ~Example of using ~Array#each~ in conjunction with ~args.state~ and~
** Processing line: ~~args.outputs.sprites~ to render sprites to the screen:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Example of using ~Array#each~ in conjunction with ~args.state~ and ~args.outputs.sprites~ to render sprites to the screen:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # define the colors of the rainbow in ~args.state~~
- Inside source: true
*** True Line Result
# define the colors of the rainbow in ~args.state~
** Processing line: ~ # as an ~Array~ of ~Hash~es with :order and :name.~
- Inside source: true
*** True Line Result
# as an ~Array~ of ~Hash~es with :order and :name.
** Processing line: ~ # :order will be used to determine render location~
- Inside source: true
*** True Line Result
# :order will be used to determine render location
** Processing line: ~ # and :name will be used to determine sprite path.~
- Inside source: true
*** True Line Result
# and :name will be used to determine sprite path.
** Processing line: ~ args.state.rainbow_colors ||= [~
- Inside source: true
*** True Line Result
args.state.rainbow_colors ||= [
** Processing line: ~ { order: 0, name: :red },~
- Inside source: true
*** True Line Result
{ order: 0, name: :red },
** Processing line: ~ { order: 1, name: :orange },~
- Inside source: true
*** True Line Result
{ order: 1, name: :orange },
** Processing line: ~ { order: 2, name: :yellow },~
- Inside source: true
*** True Line Result
{ order: 2, name: :yellow },
** Processing line: ~ { order: 3, name: :green },~
- Inside source: true
*** True Line Result
{ order: 3, name: :green },
** Processing line: ~ { order: 4, name: :blue },~
- Inside source: true
*** True Line Result
{ order: 4, name: :blue },
** Processing line: ~ { order: 5, name: :indigo },~
- Inside source: true
*** True Line Result
{ order: 5, name: :indigo },
** Processing line: ~ { order: 6, name: :violet },~
- Inside source: true
*** True Line Result
{ order: 6, name: :violet },
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render sprites diagonally to the screen~
- Inside source: true
*** True Line Result
# render sprites diagonally to the screen
** Processing line: ~ # with a width and height of 50.~
- Inside source: true
*** True Line Result
# with a width and height of 50.
** Processing line: ~ args.state~
- Inside source: true
*** True Line Result
args.state
** Processing line: ~ .rainbow_colors~
- Inside source: true
*** True Line Result
.rainbow_colors
** Processing line: ~ .map do |color| # <-- ~Array#each~ usage~
- Inside source: true
*** True Line Result
.map do |color| # <-- ~Array#each~ usage
** Processing line: ~ args.outputs.sprites << [~
- Inside source: true
*** True Line Result
args.outputs.sprites << [
** Processing line: ~ color[:order] * 50,~
- Inside source: true
*** True Line Result
color[:order] * 50,
** Processing line: ~ color[:order] * 50,~
- Inside source: true
*** True Line Result
color[:order] * 50,
** Processing line: ~ 50,~
- Inside source: true
*** True Line Result
50,
** Processing line: ~ 50,~
- Inside source: true
*** True Line Result
50,
** Processing line: ~ "sprites/square-#{color[:name]}.png"~
- Inside source: true
*** True Line Result
"sprites/square-#{color[:name]}.png"
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Array#reject_nil~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Array#reject_nil~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Returns an ~Enumerable~ rejecting items that are ~nil~, this is an alias~
** Processing line: ~for ~Array#compact~:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Returns an ~Enumerable~ rejecting items that are ~nil~, this is an alias for ~Array#compact~:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ a = [1, nil, 4, false, :a]~
- Inside source: true
*** True Line Result
a = [1, nil, 4, false, :a]
** Processing line: ~ puts a.reject_nil~
- Inside source: true
*** True Line Result
puts a.reject_nil
** Processing line: ~ # => [1, 4, false, :a]~
- Inside source: true
*** True Line Result
# => [1, 4, false, :a]
** Processing line: ~ puts a.compact~
- Inside source: true
*** True Line Result
puts a.compact
** Processing line: ~ # => [1, 4, false, :a]~
- Inside source: true
*** True Line Result
# => [1, 4, false, :a]
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Array#reject_false~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Array#reject_false~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Returns an `Enumerable` rejecting items that are `nil` or `false`.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Returns an `Enumerable` rejecting items that are `nil` or `false`.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ a = [1, nil, 4, false, :a]~
- Inside source: true
*** True Line Result
a = [1, nil, 4, false, :a]
** Processing line: ~ puts a.reject_false~
- Inside source: true
*** True Line Result
puts a.reject_false
** Processing line: ~ # => [1, 4, :a]~
- Inside source: true
*** True Line Result
# => [1, 4, :a]
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Array#product~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Array#product~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Returns all combinations of values between two arrays.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Returns all combinations of values between two arrays.
** Processing line: ~Here are some examples of using ~product~. Paste the~
** Processing line: ~following code at the bottom of main.rb and save~
** Processing line: ~the file to see the results:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here are some examples of using ~product~. Paste the following code at the bottom of main.rb and save the file to see the results:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ a = [0, 1]~
- Inside source: true
*** True Line Result
a = [0, 1]
** Processing line: ~ puts a.product~
- Inside source: true
*** True Line Result
puts a.product
** Processing line: ~ # => [[0, 0], [0, 1], [1, 0], [1, 1]]~
- Inside source: true
*** True Line Result
# => [[0, 0], [0, 1], [1, 0], [1, 1]]
** 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: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ a = [ 0, 1]~
- Inside source: true
*** True Line Result
a = [ 0, 1]
** Processing line: ~ b = [:a, :b]~
- Inside source: true
*** True Line Result
b = [:a, :b]
** Processing line: ~ puts a.product b~
- Inside source: true
*** True Line Result
puts a.product b
** Processing line: ~ # => [[0, :a], [0, :b], [1, :a], [1, :b]]~
- Inside source: true
*** True Line Result
# => [[0, :a], [0, :b], [1, :a], [1, :b]]
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Array#map_2d~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Array#map_2d~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Assuming the array is an array of arrays, Given a block, each 2D array index invoked against the block.~
** Processing line: ~A 2D array is a common way to store data/layout for a stage.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Assuming the array is an array of arrays, Given a block, each 2D array index invoked against the block. A 2D array is a common way to store data/layout for a stage.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ stage = [~
- Inside source: true
*** True Line Result
stage = [
** Processing line: ~ [:enemy, :empty, :player],~
- Inside source: true
*** True Line Result
[:enemy, :empty, :player],
** Processing line: ~ [:empty, :empty, :empty],~
- Inside source: true
*** True Line Result
[:empty, :empty, :empty],
** Processing line: ~ [:enemy, :empty, :enemy],~
- Inside source: true
*** True Line Result
[:enemy, :empty, :enemy],
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ occupied_tiles = stage.map_2d do |row, col, tile|~
- Inside source: true
*** True Line Result
occupied_tiles = stage.map_2d do |row, col, tile|
** Processing line: ~ if tile == :empty~
- Inside source: true
*** True Line Result
if tile == :empty
** Processing line: ~ nil~
- Inside source: true
*** True Line Result
nil
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ [row, col, tile]~
- Inside source: true
*** True Line Result
[row, col, tile]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end.reject_nil~
- Inside source: true
*** True Line Result
end.reject_nil
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "Stage:"~
- Inside source: true
*** True Line Result
puts "Stage:"
** Processing line: ~ puts stage~
- Inside source: true
*** True Line Result
puts stage
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "Occupied Tiles"~
- Inside source: true
*** True Line Result
puts "Occupied Tiles"
** Processing line: ~ puts occupied_tiles~
- Inside source: true
*** True Line Result
puts occupied_tiles
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Array#include_any?~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Array#include_any?~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Given a collection of items, the function will return~
** Processing line: ~~true~ if any of ~self~'s items exists in the collection of items passed in:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Given a collection of items, the function will return ~true~ if any of ~self~'s items exists in the collection of items passed in:
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Array#any_intersect_rect?~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Array#any_intersect_rect?~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Assuming the array contains objects that respond to ~left~, ~right~, ~top~, ~bottom~,~
** Processing line: ~this method returns ~true~ if any of the elements within~
** Processing line: ~the array intersect the object being passed in. You are given an optional~
** Processing line: ~parameter called ~tolerance~ which informs how close to the other rectangles~
** Processing line: ~the elements need to be for it to be considered intersecting.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Assuming the array contains objects that respond to ~left~, ~right~, ~top~, ~bottom~, this method returns ~true~ if any of the elements within the array intersect the object being passed in. You are given an optional parameter called ~tolerance~ which informs how close to the other rectangles the elements need to be for it to be considered intersecting.
** Processing line: ~The default tolerance is set to ~0.1~, which means that the primitives are not~
** Processing line: ~considered intersecting unless they are overlapping by more than ~0.1~.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The default tolerance is set to ~0.1~, which means that the primitives are not considered intersecting unless they are overlapping by more than ~0.1~.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ # Here is a player class that has position and implement~
- Inside source: true
*** True Line Result
# Here is a player class that has position and implement
** Processing line: ~ # the ~attr_rect~ contract.~
- Inside source: true
*** True Line Result
# the ~attr_rect~ contract.
** Processing line: ~ class Player~
- Inside source: true
*** True Line Result
class Player
** Processing line: ~ attr_rect~
- Inside source: true
*** True Line Result
attr_rect
** Processing line: ~ attr_accessor :x, :y, :w, :h~
- Inside source: true
*** True Line Result
attr_accessor :x, :y, :w, :h
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize x, y, w, h~
- Inside source: true
*** True Line Result
def initialize x, y, w, h
** Processing line: ~ @x = x~
- Inside source: true
*** True Line Result
@x = x
** Processing line: ~ @y = y~
- Inside source: true
*** True Line Result
@y = y
** Processing line: ~ @w = w~
- Inside source: true
*** True Line Result
@w = w
** Processing line: ~ @h = h~
- Inside source: true
*** True Line Result
@h = h
** 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
def serialize
** Processing line: ~ { x: @x, y: @y, w: @w, h: @h }~
- Inside source: true
*** True Line Result
{ x: @x, y: @y, w: @w, h: @h }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inspect~
- Inside source: true
*** True Line Result
def inspect
** Processing line: ~ "#{serialize}"~
- Inside source: true
*** True Line Result
"#{serialize}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def to_s~
- Inside source: true
*** True Line Result
def to_s
** Processing line: ~ "#{serialize}"~
- Inside source: true
*** True Line Result
"#{serialize}"
** 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: ~ # Here is a definition of two walls.~
- Inside source: true
*** True Line Result
# Here is a definition of two walls.
** Processing line: ~ walls = [~
- Inside source: true
*** True Line Result
walls = [
** Processing line: ~ [10, 10, 10, 10],~
- Inside source: true
*** True Line Result
[10, 10, 10, 10],
** Processing line: ~ { x: 20, y: 20, w: 10, h: 10 },~
- Inside source: true
*** True Line Result
{ x: 20, y: 20, w: 10, h: 10 },
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Display the walls.~
- Inside source: true
*** True Line Result
# Display the walls.
** Processing line: ~ puts "Walls."~
- Inside source: true
*** True Line Result
puts "Walls."
** Processing line: ~ puts walls~
- Inside source: true
*** True Line Result
puts walls
** Processing line: ~ puts ""~
- Inside source: true
*** True Line Result
puts ""
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Check any_intersect_rect? on player~
- Inside source: true
*** True Line Result
# Check any_intersect_rect? on player
** Processing line: ~ player = Player.new 30, 20, 10, 10~
- Inside source: true
*** True Line Result
player = Player.new 30, 20, 10, 10
** Processing line: ~ puts "Is Player #{player} touching wall?"~
- Inside source: true
*** True Line Result
puts "Is Player #{player} touching wall?"
** Processing line: ~ puts (walls.any_intersect_rect? player)~
- Inside source: true
*** True Line Result
puts (walls.any_intersect_rect? player)
** Processing line: ~ # => false~
- Inside source: true
*** True Line Result
# => false
** Processing line: ~ # The value is false because of the default tolerance is 0.1.~
- Inside source: true
*** True Line Result
# The value is false because of the default tolerance is 0.1.
** Processing line: ~ # The overlap of the player rect and any of the wall rects is~
- Inside source: true
*** True Line Result
# The overlap of the player rect and any of the wall rects is
** Processing line: ~ # less than 0.1 (for those that intersect).~
- Inside source: true
*** True Line Result
# less than 0.1 (for those that intersect).
** Processing line: ~ puts ""~
- Inside source: true
*** True Line Result
puts ""
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ player = Player.new 9, 10, 10, 10~
- Inside source: true
*** True Line Result
player = Player.new 9, 10, 10, 10
** Processing line: ~ puts "Is Player #{player} touching wall?"~
- Inside source: true
*** True Line Result
puts "Is Player #{player} touching wall?"
** Processing line: ~ puts (walls.any_intersect_rect? player)~
- Inside source: true
*** True Line Result
puts (walls.any_intersect_rect? player)
** Processing line: ~ # => true~
- Inside source: true
*** True Line Result
# => true
** Processing line: ~ puts ""~
- Inside source: true
*** True Line Result
puts ""
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~GTK::Outputs~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::Outputs~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Outputs is how you render primitives to the screen. The minimal setup for~
** Processing line: ~rendering something to the screen is via a ~tick~ method defined in~
** Processing line: ~mygame/app/main.rb~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Outputs is how you render primitives to the screen. The minimal setup for rendering something to the screen is via a ~tick~ method defined in mygame/app/main.rb
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # code goes here~
- Inside source: true
*** True Line Result
# code goes here
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~GTK::Outputs#solids~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::Outputs#solids~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Add primitives to this collection to render a solid to the screen.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Add primitives to this collection to render a solid to the screen.
** Processing line: ~** Rendering a solid using an Array~
- Header detected.
*** True Line Result
*** True Line Result
** Rendering a solid using an Array
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Creates a solid black rectangle located at 100, 100. 160 pixels~
** Processing line: ~wide and 90 pixels tall.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Creates a solid black rectangle located at 100, 100. 160 pixels wide and 90 pixels tall.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # X Y WIDTH HEIGHT~
- Inside source: true
*** True Line Result
# X Y WIDTH HEIGHT
** Processing line: ~ args.outputs.solids << [100, 100, 160, 90]~
- Inside source: true
*** True Line Result
args.outputs.solids << [100, 100, 160, 90]
** 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: ~** Rendering a solid using an Array with colors and alpha~
- Header detected.
*** True Line Result
*** True Line Result
** Rendering a solid using an Array with colors and alpha
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The value for the color and alpha is an number between ~0~ and ~255~. The~
** Processing line: ~alpha property is optional and will be set to ~255~ if not specified.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The value for the color and alpha is an number between ~0~ and ~255~. The alpha property is optional and will be set to ~255~ if not specified.
** Processing line: ~Creates a green solid rectangle with an opacity of 50%.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Creates a green solid rectangle with an opacity of 50%.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # X Y WIDTH HEIGHT RED GREEN BLUE ALPHA~
- Inside source: true
*** True Line Result
# X Y WIDTH HEIGHT RED GREEN BLUE ALPHA
** Processing line: ~ args.outputs.solids << [100, 100, 160, 90, 0, 255, 0, 128]~
- Inside source: true
*** True Line Result
args.outputs.solids << [100, 100, 160, 90, 0, 255, 0, 128]
** 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: ~** Rendering a solid using a Hash~
- Header detected.
*** True Line Result
*** True Line Result
** Rendering a solid using a Hash
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~If you want a more readable invocation. You can use the following hash to create a solid.~
** Processing line: ~Any parameters that are not specified will be given a default value. The keys of the hash can~
** Processing line: ~be provided in any order.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
If you want a more readable invocation. You can use the following hash to create a solid. Any parameters that are not specified will be given a default value. The keys of the hash can be provided in any order.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ args.outputs.solids << {~
- Inside source: true
*** True Line Result
args.outputs.solids << {
** Processing line: ~ x: 0,~
- Inside source: true
*** True Line Result
x: 0,
** Processing line: ~ y: 0,~
- Inside source: true
*** True Line Result
y: 0,
** Processing line: ~ w: 100,~
- Inside source: true
*** True Line Result
w: 100,
** Processing line: ~ h: 100,~
- Inside source: true
*** True Line Result
h: 100,
** Processing line: ~ r: 0,~
- Inside source: true
*** True Line Result
r: 0,
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 0,~
- Inside source: true
*** True Line Result
b: 0,
** Processing line: ~ a: 255~
- Inside source: true
*** True Line Result
a: 255
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** 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: ~** Rendering a solid using a Class~
- Header detected.
*** True Line Result
*** True Line Result
** Rendering a solid using a Class
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~You can also create a class with solid/border properties and render it as a primitive.~
** Processing line: ~ALL properties must on the class. *Additionally*, a method called ~primitive_marker~~
** Processing line: ~must be defined on the class.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You can also create a class with solid/border properties and render it as a primitive. ALL properties must on the class. *Additionally*, a method called ~primitive_marker~ must be defined on the class.
** Processing line: ~Here is an example:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here is an example:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ # Create type with ALL solid properties AND primitive_marker~
- Inside source: true
*** True Line Result
# Create type with ALL solid properties AND primitive_marker
** Processing line: ~ class Solid~
- Inside source: true
*** True Line Result
class Solid
** Processing line: ~ attr_accessor :x, :y, :w, :h, :r, :g, :b, :a~
- Inside source: true
*** True Line Result
attr_accessor :x, :y, :w, :h, :r, :g, :b, :a
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def primitive_marker~
- Inside source: true
*** True Line Result
def primitive_marker
** Processing line: ~ :solid~
- Inside source: true
*** True Line Result
:solid
** 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: ~ # Inherit from type~
- Inside source: true
*** True Line Result
# Inherit from type
** Processing line: ~ class Square < Solid~
- Inside source: true
*** True Line Result
class Square < Solid
** Processing line: ~ # constructor~
- Inside source: true
*** True Line Result
# constructor
** Processing line: ~ def initialize x, y, size~
- Inside source: true
*** True Line Result
def initialize x, y, size
** Processing line: ~ self.x = x~
- Inside source: true
*** True Line Result
self.x = x
** Processing line: ~ self.y = y~
- Inside source: true
*** True Line Result
self.y = y
** Processing line: ~ self.w = size~
- Inside source: true
*** True Line Result
self.w = size
** Processing line: ~ self.h = size~
- Inside source: true
*** True Line Result
self.h = size
** 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: ~ # render solid/border~
- Inside source: true
*** True Line Result
# render solid/border
** Processing line: ~ args.outputs.solids << Square.new(10, 10, 32)~
- Inside source: true
*** True Line Result
args.outputs.solids << Square.new(10, 10, 32)
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~GTK::Outputs#borders~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::Outputs#borders~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Add primitives to this collection to render an unfilled solid to the screen. Take a look at the~
** Processing line: ~documentation for Outputs#solids.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Add primitives to this collection to render an unfilled solid to the screen. Take a look at the documentation for Outputs#solids.
** Processing line: ~The only difference between the two primitives is where they are added.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The only difference between the two primitives is where they are added.
** Processing line: ~Instead of using ~args.outputs.solids~:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Instead of using ~args.outputs.solids~:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # X Y WIDTH HEIGHT~
- Inside source: true
*** True Line Result
# X Y WIDTH HEIGHT
** Processing line: ~ args.outputs.solids << [100, 100, 160, 90]~
- Inside source: true
*** True Line Result
args.outputs.solids << [100, 100, 160, 90]
** 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: ~You have to use ~args.outputs.borders~:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
You have to use ~args.outputs.borders~:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # X Y WIDTH HEIGHT~
- Inside source: true
*** True Line Result
# X Y WIDTH HEIGHT
** Processing line: ~ args.outputs.borders << [100, 100, 160, 90]~
- Inside source: true
*** True Line Result
args.outputs.borders << [100, 100, 160, 90]
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~GTK::Mouse~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::Mouse~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The mouse is accessible via ~args.inputs.mouse~:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The mouse is accessible via ~args.inputs.mouse~:
** 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: ~ # Rendering a label that shows the mouse's x and y position (via args.inputs.mouse).~
- Inside source: true
*** True Line Result
# Rendering a label that shows the mouse's x and y position (via args.inputs.mouse).
** Processing line: ~ args.outputs.labels << [~
- Inside source: true
*** True Line Result
args.outputs.labels << [
** Processing line: ~ 10,~
- Inside source: true
*** True Line Result
10,
** Processing line: ~ 710,~
- Inside source: true
*** True Line Result
710,
** Processing line: ~ "The mouse's position is: #{args.inputs.mouse.x} #{args.inputs.mouse.y}."~
- Inside source: true
*** True Line Result
"The mouse's position is: #{args.inputs.mouse.x} #{args.inputs.mouse.y}."
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** 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: ~The mouse has the following properties.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The mouse has the following properties.
** Processing line: ~- ~args.inputs.mouse.x~: Returns the x position of the mouse.~
- Line was identified as a list.
*** True Line Result
** Processing line: ~- ~args.inputs.mouse.y~: Returns the y position of the mouse.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.x~: Returns the x position of the mouse.
** Processing line: ~- ~args.inputs.mouse.moved~: Returns true if the mouse moved during the tick.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.y~: Returns the y position of the mouse.
** Processing line: ~- ~args.inputs.mouse.moved_at~: Returns the tick_count (~args.state.tick_count~) that the mouse was moved at. This property will be ~nil~ if the mouse didn't move.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.moved~: Returns true if the mouse moved during the tick.
** Processing line: ~- ~args.inputs.mouse.global_moved_at~: Returns the global tick_count (~Kernel.global_tick_count~) that the mouse was moved at. This property will be ~nil~ if the mouse didn't move.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.moved_at~: Returns the tick_count (~args.state.tick_count~) that the mouse was moved at. This property will be ~nil~ if the mouse didn't move.
** Processing line: ~- ~args.inputs.mouse.click~: Returns a ~GTK::MousePoint~ for that specific frame (~args.state.tick_count~) if the mouse button was pressed.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.global_moved_at~: Returns the global tick_count (~Kernel.global_tick_count~) that the mouse was moved at. This property will be ~nil~ if the mouse didn't move.
** Processing line: ~- ~args.inputs.mouse.previous_click~: Returns a ~GTK::MousePoint~ for the previous frame (~args.state.tick_count - 1~) if the mouse button was pressed.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.click~: Returns a ~GTK::MousePoint~ for that specific frame (~args.state.tick_count~) if the mouse button was pressed.
** Processing line: ~- ~args.inputs.mouse.up~: Returns true if for that specific frame (~args.state.tick_count~) if the mouse button was released.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.previous_click~: Returns a ~GTK::MousePoint~ for the previous frame (~args.state.tick_count - 1~) if the mouse button was pressed.
** Processing line: ~- ~args.inputs.mouse.point~ | ~args.inputs.mouse.position~: Returns an ~Array~ which contains the ~x~ and ~y~ position of the mouse.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.up~: Returns true if for that specific frame (~args.state.tick_count~) if the mouse button was released.
** Processing line: ~- ~args.inputs.mouse.has_focus~: Returns true if the game window has the mouse's focus.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.point~ | ~args.inputs.mouse.position~: Returns an ~Array~ which contains the ~x~ and ~y~ position of the mouse.
** Processing line: ~- ~args.inputs.mouse.wheel~: Returns an ~GTK::OpenEntity~ that contains an ~x~ and ~y~ property which represents how much the wheel has moved. If the wheel has not moved within the tick, this property will be ~nil~.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.has_focus~: Returns true if the game window has the mouse's focus.
** Processing line: ~- ~args.inputs.mouse.button_left~: Returns true if the left mouse button is down.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.wheel~: Returns an ~GTK::OpenEntity~ that contains an ~x~ and ~y~ property which represents how much the wheel has moved. If the wheel has not moved within the tick, this property will be ~nil~.
** Processing line: ~- ~args.inputs.mouse.button_right~: Returns true if the right mouse button is down.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.button_left~: Returns true if the left mouse button is down.
** Processing line: ~- ~args.inputs.mouse.button_middle~: Returns true if the middle mouse button is down.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.button_right~: Returns true if the right mouse button is down.
** Processing line: ~- ~args.inputs.mouse.button_bits~: Gives the bits for each mouse button and its current state.~
- Line was identified as a list.
*** True Line Result
- ~args.inputs.mouse.button_middle~: Returns true if the middle mouse button is down.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- ~args.inputs.mouse.button_bits~: Gives the bits for each mouse button and its current state.
** Processing line: ~* DOCS: ~GTK::MousePoint~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::MousePoint~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~The ~GTK::MousePoint~ has the following properties.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The ~GTK::MousePoint~ has the following properties.
** Processing line: ~- ~x~: Integer representing the mouse's x.~
- Line was identified as a list.
*** True Line Result
** Processing line: ~- ~y~: Integer representing the mouse's y.~
- Line was identified as a list.
*** True Line Result
- ~x~: Integer representing the mouse's x.
** Processing line: ~- ~point~: Array with the ~x~ and ~y~ values.~
- Line was identified as a list.
*** True Line Result
- ~y~: Integer representing the mouse's y.
** Processing line: ~- ~w~: Width of the point that always returns ~0~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line was identified as a list.
*** True Line Result
- ~point~: Array with the ~x~ and ~y~ values.
** Processing line: ~- ~h~: Height of the point that always returns ~0~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line was identified as a list.
*** True Line Result
- ~w~: Width of the point that always returns ~0~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).
** Processing line: ~- ~left~: This value is the same as ~x~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line was identified as a list.
*** True Line Result
- ~h~: Height of the point that always returns ~0~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).
** Processing line: ~- ~right~: This value is the same as ~x~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line was identified as a list.
*** True Line Result
- ~left~: This value is the same as ~x~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).
** Processing line: ~- ~top~: This value is the same as ~y~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line was identified as a list.
*** True Line Result
- ~right~: This value is the same as ~x~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).
** Processing line: ~- ~bottom~: This value is the same as ~y~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line was identified as a list.
*** True Line Result
- ~top~: This value is the same as ~y~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).
** Processing line: ~- ~created_at~: The tick (~args.state.tick_count~) that this structure was created.~
- Line was identified as a list.
*** True Line Result
- ~bottom~: This value is the same as ~y~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).
** Processing line: ~- ~global_created_at~: The global tick (~Kernel.global_tick_count~) that this structure was created.~
- Line was identified as a list.
*** True Line Result
- ~created_at~: The tick (~args.state.tick_count~) that this structure was created.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- ~global_created_at~: The global tick (~Kernel.global_tick_count~) that this structure was created.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~GTK::OpenEntity~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::OpenEntity~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~~GTK::OpenEntity~ is accessible within the DragonRuby's top level~
** Processing line: ~~tick~ function via the ~args.state~ property.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
~GTK::OpenEntity~ is accessible within the DragonRuby's top level ~tick~ function via the ~args.state~ property.
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ args.state.x ||= 100~
- Inside source: true
*** True Line Result
args.state.x ||= 100
** Processing line: ~ args.outputs.labels << [10, 710, "value of x is: #{args.state.x}."]~
- Inside source: true
*** True Line Result
args.outputs.labels << [10, 710, "value of x is: #{args.state.x}."]
** 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: ~The primary benefit of using ~args.state~ as opposed to instance~
** Processing line: ~variables is that ~GTK::OpenEntity~ allows for arbitrary nesting~
** Processing line: ~of properties without the need to create intermediate objects.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
The primary benefit of using ~args.state~ as opposed to instance variables is that ~GTK::OpenEntity~ allows for arbitrary nesting of properties without the need to create intermediate objects.
** Processing line: ~For example:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
For example:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # intermediate player object does not need to be created~
- Inside source: true
*** True Line Result
# intermediate player object does not need to be created
** Processing line: ~ args.state.player.x ||= 100~
- Inside source: true
*** True Line Result
args.state.player.x ||= 100
** Processing line: ~ args.state.player.y ||= 100~
- Inside source: true
*** True Line Result
args.state.player.y ||= 100
** Processing line: ~ args.outputs.labels << [~
- Inside source: true
*** True Line Result
args.outputs.labels << [
** Processing line: ~ 10,~
- Inside source: true
*** True Line Result
10,
** Processing line: ~ 710,~
- Inside source: true
*** True Line Result
710,
** Processing line: ~ "player x, y is:#{args.state.player.x}, #{args.state.player.y}."~
- Inside source: true
*** True Line Result
"player x, y is:#{args.state.player.x}, #{args.state.player.y}."
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~GTK::OpenEntity#as_hash~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~GTK::OpenEntity#as_hash~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Returns a reference to the ~GTK::OpenEntity~ as a ~Hash~. This~
** Processing line: ~property is useful when you want to treat ~args.state~ as a ~Hash~ and~
** Processing line: ~invoke methods such as ~Hash#each~.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Returns a reference to the ~GTK::OpenEntity~ as a ~Hash~. This property is useful when you want to treat ~args.state~ as a ~Hash~ and invoke methods such as ~Hash#each~.
** Processing line: ~Example:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Example:
** Processing line: ~#+begin_src~
- Line was identified as the beginning of a code block.
*** True Line Result
*** True Line Result
#+begin_src
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ args.state.x ||= 100~
- Inside source: true
*** True Line Result
args.state.x ||= 100
** Processing line: ~ args.state.y ||= 100~
- Inside source: true
*** True Line Result
args.state.y ||= 100
** Processing line: ~ values = args.state~
- Inside source: true
*** True Line Result
values = args.state
** Processing line: ~ .as_hash~
- Inside source: true
*** True Line Result
.as_hash
** Processing line: ~ .map { |k, v| "#{k} #{v}" }~
- Inside source: true
*** True Line Result
.map { |k, v| "#{k} #{v}" }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << values.map.with_index do |v, i|~
- Inside source: true
*** True Line Result
args.outputs.labels << values.map.with_index do |v, i|
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ 10,~
- Inside source: true
*** True Line Result
10,
** Processing line: ~ 710 - (30 * i),~
- Inside source: true
*** True Line Result
710 - (30 * i),
** Processing line: ~ v~
- Inside source: true
*** True Line Result
v
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Numeric#frame_index~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Numeric#frame_index~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~This function is helpful for determining the index of frame-by-frame~
** Processing line: ~ sprite animation. The numeric value ~self~ represents the moment the~
** Processing line: ~ animation started.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
This function is helpful for determining the index of frame-by-frame sprite animation. The numeric value ~self~ represents the moment the animation started.
** Processing line: ~~frame_index~ takes three additional parameters:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
~frame_index~ takes three additional parameters:
** Processing line: ~- How many frames exist in the sprite animation.~
- Line was identified as a list.
*** True Line Result
** Processing line: ~- How long to hold each animation for.~
- Line was identified as a list.
*** True Line Result
- How many frames exist in the sprite animation.
** Processing line: ~- Whether the animation should repeat.~
- Line was identified as a list.
*** True Line Result
- How long to hold each animation for.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
- Whether the animation should repeat.
** Processing line: ~~frame_index~ will return ~nil~ if the time for the animation is out~
** Processing line: ~of bounds of the parameter specification.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
~frame_index~ will return ~nil~ if the time for the animation is out of bounds of the parameter specification.
** Processing line: ~Example using variables:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Example using variables:
** 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: ~ start_looping_at = 0~
- Inside source: true
*** True Line Result
start_looping_at = 0
** Processing line: ~ number_of_sprites = 6~
- Inside source: true
*** True Line Result
number_of_sprites = 6
** Processing line: ~ number_of_frames_to_show_each_sprite = 4~
- Inside source: true
*** True Line Result
number_of_frames_to_show_each_sprite = 4
** Processing line: ~ does_sprite_loop = true~
- Inside source: true
*** True Line Result
does_sprite_loop = true
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ sprite_index =~
- Inside source: true
*** True Line Result
sprite_index =
** Processing line: ~ start_looping_at.frame_index number_of_sprites,~
- Inside source: true
*** True Line Result
start_looping_at.frame_index number_of_sprites,
** Processing line: ~ number_of_frames_to_show_each_sprite,~
- Inside source: true
*** True Line Result
number_of_frames_to_show_each_sprite,
** Processing line: ~ does_sprite_loop~
- Inside source: true
*** True Line Result
does_sprite_loop
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ sprite_index ||= 0~
- Inside source: true
*** True Line Result
sprite_index ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.sprites << [~
- Inside source: true
*** True Line Result
args.outputs.sprites << [
** Processing line: ~ 640 - 50,~
- Inside source: true
*** True Line Result
640 - 50,
** Processing line: ~ 360 - 50,~
- Inside source: true
*** True Line Result
360 - 50,
** Processing line: ~ 100,~
- Inside source: true
*** True Line Result
100,
** Processing line: ~ 100,~
- Inside source: true
*** True Line Result
100,
** Processing line: ~ "sprites/dragon-#{sprite_index}.png"~
- Inside source: true
*** True Line Result
"sprites/dragon-#{sprite_index}.png"
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** 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: ~Example using named parameters:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Example using named parameters:
** 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: ~ start_looping_at = 0~
- Inside source: true
*** True Line Result
start_looping_at = 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ sprite_index =~
- Inside source: true
*** True Line Result
sprite_index =
** Processing line: ~ start_looping_at.frame_index count: 6,~
- Inside source: true
*** True Line Result
start_looping_at.frame_index count: 6,
** Processing line: ~ hold_for: 4,~
- Inside source: true
*** True Line Result
hold_for: 4,
** Processing line: ~ repeat: true,~
- Inside source: true
*** True Line Result
repeat: true,
** Processing line: ~ tick_count_override: args.state.tick_count~
- Inside source: true
*** True Line Result
tick_count_override: args.state.tick_count
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ sprite_index ||= 0~
- Inside source: true
*** True Line Result
sprite_index ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.sprites << [~
- Inside source: true
*** True Line Result
args.outputs.sprites << [
** Processing line: ~ 640 - 50,~
- Inside source: true
*** True Line Result
640 - 50,
** Processing line: ~ 360 - 50,~
- Inside source: true
*** True Line Result
360 - 50,
** Processing line: ~ 100,~
- Inside source: true
*** True Line Result
100,
** Processing line: ~ 100,~
- Inside source: true
*** True Line Result
100,
** Processing line: ~ "sprites/dragon-#{sprite_index}.png"~
- Inside source: true
*** True Line Result
"sprites/dragon-#{sprite_index}.png"
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Numeric#elapsed_time~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Numeric#elapsed_time~
** Processing line: ~For a given number, the elapsed frames since that number is returned.~
** Processing line: ~`Kernel.tick_count` is used to determine how many frames have elapsed.~
** Processing line: ~An optional numeric argument can be passed in which will be used instead~
** Processing line: ~of `Kernel.tick_count`.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
For a given number, the elapsed frames since that number is returned. `Kernel.tick_count` is used to determine how many frames have elapsed. An optional numeric argument can be passed in which will be used instead of `Kernel.tick_count`.
** Processing line: ~Here is an example of how elapsed_time can be used.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Here is an example of how elapsed_time can be used.
** 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: ~ args.state.last_click_at ||= 0~
- Inside source: true
*** True Line Result
args.state.last_click_at ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # record when a mouse click occurs~
- Inside source: true
*** True Line Result
# record when a mouse click occurs
** Processing line: ~ if args.inputs.mouse.click~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click
** Processing line: ~ args.state.last_click_at = args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.last_click_at = args.state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Use Numeric#elapsed_time to determine how long it's been~
- Inside source: true
*** True Line Result
# Use Numeric#elapsed_time to determine how long it's been
** Processing line: ~ if args.state.last_click_at.elapsed_time > 120~
- Inside source: true
*** True Line Result
if args.state.last_click_at.elapsed_time > 120
** Processing line: ~ args.outputs.labels << [10, 710, "It has been over 2 seconds since the mouse was clicked."]~
- Inside source: true
*** True Line Result
args.outputs.labels << [10, 710, "It has been over 2 seconds since the mouse was clicked."]
** 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: ~And here is an example where the override parameter is passed in:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
And here is an example where the override parameter is passed in:
** 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: ~ args.state.last_click_at ||= 0~
- Inside source: true
*** True Line Result
args.state.last_click_at ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # create a state variable that tracks time at half the speed of args.state.tick_count~
- Inside source: true
*** True Line Result
# create a state variable that tracks time at half the speed of args.state.tick_count
** Processing line: ~ args.state.simulation_tick = args.state.tick_count.idiv 2~
- Inside source: true
*** True Line Result
args.state.simulation_tick = args.state.tick_count.idiv 2
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # record when a mouse click occurs~
- Inside source: true
*** True Line Result
# record when a mouse click occurs
** Processing line: ~ if args.inputs.mouse.click~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click
** Processing line: ~ args.state.last_click_at = args.state.simulation_tick~
- Inside source: true
*** True Line Result
args.state.last_click_at = args.state.simulation_tick
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Use Numeric#elapsed_time to determine how long it's been~
- Inside source: true
*** True Line Result
# Use Numeric#elapsed_time to determine how long it's been
** Processing line: ~ if (args.state.last_click_at.elapsed_time args.state.simulation_tick) > 120~
- Inside source: true
*** True Line Result
if (args.state.last_click_at.elapsed_time args.state.simulation_tick) > 120
** Processing line: ~ args.outputs.labels << [10, 710, "It has been over 4 seconds since the mouse was clicked."]~
- Inside source: true
*** True Line Result
args.outputs.labels << [10, 710, "It has been over 4 seconds since the mouse was clicked."]
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Numeric#elapsed?~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Numeric#elapsed?~
** Processing line: ~Returns true if ~Numeric#elapsed_time~ is greater than the number. An optional parameter can be~
** Processing line: ~passed into ~elapsed?~ which is added to the number before evaluating whether ~elapsed?~ is true.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Returns true if ~Numeric#elapsed_time~ is greater than the number. An optional parameter can be passed into ~elapsed?~ which is added to the number before evaluating whether ~elapsed?~ is true.
** Processing line: ~Example usage (no optional parameter):~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Example usage (no optional parameter):
** 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: ~ args.state.box_queue ||= []~
- Inside source: true
*** True Line Result
args.state.box_queue ||= []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.box_queue.empty?~
- Inside source: true
*** True Line Result
if args.state.box_queue.empty?
** Processing line: ~ args.state.box_queue << { name: :red,~
- Inside source: true
*** True Line Result
args.state.box_queue << { name: :red,
** Processing line: ~ destroy_at: args.state.tick_count + 60 }~
- Inside source: true
*** True Line Result
destroy_at: args.state.tick_count + 60 }
** Processing line: ~ args.state.box_queue << { name: :green,~
- Inside source: true
*** True Line Result
args.state.box_queue << { name: :green,
** Processing line: ~ destroy_at: args.state.tick_count + 60 }~
- Inside source: true
*** True Line Result
destroy_at: args.state.tick_count + 60 }
** Processing line: ~ args.state.box_queue << { name: :blue,~
- Inside source: true
*** True Line Result
args.state.box_queue << { name: :blue,
** Processing line: ~ destroy_at: args.state.tick_count + 120 }~
- Inside source: true
*** True Line Result
destroy_at: args.state.tick_count + 120 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ boxes_to_destroy = args.state~
- Inside source: true
*** True Line Result
boxes_to_destroy = args.state
** Processing line: ~ .box_queue~
- Inside source: true
*** True Line Result
.box_queue
** Processing line: ~ .find_all { |b| b[:destroy_at].elapsed? }~
- Inside source: true
*** True Line Result
.find_all { |b| b[:destroy_at].elapsed? }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if !boxes_to_destroy.empty?~
- Inside source: true
*** True Line Result
if !boxes_to_destroy.empty?
** Processing line: ~ puts "boxes to destroy count: #{boxes_to_destroy.length}"~
- Inside source: true
*** True Line Result
puts "boxes to destroy count: #{boxes_to_destroy.length}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ boxes_to_destroy.each { |b| puts "box #{b} was elapsed? on #{args.state.tick_count}." }~
- Inside source: true
*** True Line Result
boxes_to_destroy.each { |b| puts "box #{b} was elapsed? on #{args.state.tick_count}." }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.box_queue -= boxes_to_destroy~
- Inside source: true
*** True Line Result
args.state.box_queue -= boxes_to_destroy
** 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: ~Example usage (with optional parameter):~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Example usage (with optional parameter):
** 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: ~ args.state.box_queue ||= []~
- Inside source: true
*** True Line Result
args.state.box_queue ||= []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.box_queue.empty?~
- Inside source: true
*** True Line Result
if args.state.box_queue.empty?
** Processing line: ~ args.state.box_queue << { name: :red,~
- Inside source: true
*** True Line Result
args.state.box_queue << { name: :red,
** Processing line: ~ create_at: args.state.tick_count + 120,~
- Inside source: true
*** True Line Result
create_at: args.state.tick_count + 120,
** Processing line: ~ lifespan: 60 }~
- Inside source: true
*** True Line Result
lifespan: 60 }
** Processing line: ~ args.state.box_queue << { name: :green,~
- Inside source: true
*** True Line Result
args.state.box_queue << { name: :green,
** Processing line: ~ create_at: args.state.tick_count + 120,~
- Inside source: true
*** True Line Result
create_at: args.state.tick_count + 120,
** Processing line: ~ lifespan: 60 }~
- Inside source: true
*** True Line Result
lifespan: 60 }
** Processing line: ~ args.state.box_queue << { name: :blue,~
- Inside source: true
*** True Line Result
args.state.box_queue << { name: :blue,
** Processing line: ~ create_at: args.state.tick_count + 120,~
- Inside source: true
*** True Line Result
create_at: args.state.tick_count + 120,
** Processing line: ~ lifespan: 120 }~
- Inside source: true
*** True Line Result
lifespan: 120 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # lifespan is passed in as a parameter to ~elapsed?~~
- Inside source: true
*** True Line Result
# lifespan is passed in as a parameter to ~elapsed?~
** Processing line: ~ boxes_to_destroy = args.state~
- Inside source: true
*** True Line Result
boxes_to_destroy = args.state
** Processing line: ~ .box_queue~
- Inside source: true
*** True Line Result
.box_queue
** Processing line: ~ .find_all { |b| b[:create_at].elapsed? b[:lifespan] }~
- Inside source: true
*** True Line Result
.find_all { |b| b[:create_at].elapsed? b[:lifespan] }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if !boxes_to_destroy.empty?~
- Inside source: true
*** True Line Result
if !boxes_to_destroy.empty?
** Processing line: ~ puts "boxes to destroy count: #{boxes_to_destroy.length}"~
- Inside source: true
*** True Line Result
puts "boxes to destroy count: #{boxes_to_destroy.length}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ boxes_to_destroy.each { |b| puts "box #{b} was elapsed? on #{args.state.tick_count}." }~
- Inside source: true
*** True Line Result
boxes_to_destroy.each { |b| puts "box #{b} was elapsed? on #{args.state.tick_count}." }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.box_queue -= boxes_to_destroy~
- Inside source: true
*** True Line Result
args.state.box_queue -= boxes_to_destroy
** 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: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Numeric#created?~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Numeric#created?~
** Processing line: ~Returns true if ~Numeric#elapsed_time == 0~. Essentially communicating that~
** Processing line: ~number is equal to the current frame.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Returns true if ~Numeric#elapsed_time == 0~. Essentially communicating that number is equal to the current frame.
** Processing line: ~Example usage:~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Example usage:
** 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: ~ args.state.box_queue ||= []~
- Inside source: true
*** True Line Result
args.state.box_queue ||= []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.box_queue.empty?~
- Inside source: true
*** True Line Result
if args.state.box_queue.empty?
** Processing line: ~ args.state.box_queue << { name: :red,~
- Inside source: true
*** True Line Result
args.state.box_queue << { name: :red,
** Processing line: ~ create_at: args.state.tick_count + 60 }~
- Inside source: true
*** True Line Result
create_at: args.state.tick_count + 60 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ boxes_to_spawn_this_frame = args.state~
- Inside source: true
*** True Line Result
boxes_to_spawn_this_frame = args.state
** Processing line: ~ .box_queue~
- Inside source: true
*** True Line Result
.box_queue
** Processing line: ~ .find_all { |b| b[:create_at].new? }~
- Inside source: true
*** True Line Result
.find_all { |b| b[:create_at].new? }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ boxes_to_spawn_this_frame.each { |b| puts "box #{b} was new? on #{args.state.tick_count}." }~
- Inside source: true
*** True Line Result
boxes_to_spawn_this_frame.each { |b| puts "box #{b} was new? on #{args.state.tick_count}." }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.box_queue -= boxes_to_spawn_this_frame~
- Inside source: true
*** True Line Result
args.state.box_queue -= boxes_to_spawn_this_frame
** 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: ~Kernel~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Kernel~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Kernel in the DragonRuby Runtime has patches for how standard out is handled and also~
** Processing line: ~contains a unit of time in games called a tick.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Kernel in the DragonRuby Runtime has patches for how standard out is handled and also contains a unit of time in games called a tick.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Kernel::tick_count~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Kernel::tick_count~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Returns the current tick of the game. This value is reset if you call $gtk.reset.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Returns the current tick of the game. This value is reset if you call $gtk.reset.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* DOCS: ~Kernel::global_tick_count~~
- Header detected.
*** True Line Result
*** True Line Result
* DOCS: ~Kernel::global_tick_count~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~Returns the current tick of the application from the point it was started. This value is never reset.~
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
Returns the current tick of the application from the point it was started. This value is never reset.
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* Open Source~
- Header detected.
*** True Line Result
*** True Line Result
* Open Source
** Processing line: ~Follows is a source code listing for all files that have been open sourced. This code can be found in the ~./samples~ directory and online at [[https://github.com/DragonRuby/dragonruby-game-toolkit-contrib/]].~
** Processing line: ~* Learn Ruby Optional - Beginner Ruby Primer - automation.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 in the ~./samples~ directory and online at [[https://github.com/DragonRuby/dragonruby-game-toolkit-contrib/]].
*** True Line Result
* Learn Ruby Optional - Beginner Ruby Primer - automation.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/00_learn_ruby_optional/00_beginner_ruby_primer/app/automation.rb~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_beginner_ruby_primer/app/automation.rb
** 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: ~ # | |__| | |__ \ \_/ / | | | | | (___ | | | |__ | \| | | | | |~
- Inside source: true
*** True Line Result
# | |__| | |__ \ \_/ / | | | | | (___ | | | |__ | \| | | | | |
** 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: ~ #~
- Inside source: true
*** True Line Result
#
** 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: ~ # |~
- Inside source: true
*** True Line Result
# |
** 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: ~ # |~
- Inside source: true
*** True Line Result
# |
** 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: ~ # \ | /~
- Inside source: true
*** True Line Result
# \ | /
** 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: ~ # If you are new to the programming language Ruby, then you may find the~
- Inside source: true
*** True Line Result
# If you are new to the programming language Ruby, then you may find the
** Processing line: ~ # following code a bit overwhelming. Come back to this file when you have~
- Inside source: true
*** True Line Result
# following code a bit overwhelming. Come back to this file when you have
** Processing line: ~ # a better grasp of Ruby and Game Toolkit.~
- Inside source: true
*** True Line Result
# a better grasp of Ruby and Game Toolkit.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # What follows is an automations script # that can be run via terminal:~
- Inside source: true
*** True Line Result
# What follows is an automations script # that can be run via terminal:
** Processing line: ~ # ./samples/00_beginner_ruby_primer $ ../../dragonruby . --eval app/automation.rb~
- Inside source: true
*** True Line Result
# ./samples/00_beginner_ruby_primer $ ../../dragonruby . --eval app/automation.rb
** Processing line: ~ # ==========================================================================~
- Inside source: true
*** True Line Result
# ==========================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.reset~
- Inside source: true
*** True Line Result
$gtk.reset
** Processing line: ~ $gtk.scheduled_callbacks.clear~
- Inside source: true
*** True Line Result
$gtk.scheduled_callbacks.clear
** Processing line: ~ $gtk.schedule_callback 10 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 10 do
** Processing line: ~ $gtk.console.set_command 'puts "Hello DragonRuby!"'~
- Inside source: true
*** True Line Result
$gtk.console.set_command 'puts "Hello DragonRuby!"'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 20 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 20 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 30 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 30 do
** Processing line: ~ $gtk.console.set_command 'outputs.solids << [910, 200, 100, 100, 255, 0, 0]'~
- Inside source: true
*** True Line Result
$gtk.console.set_command 'outputs.solids << [910, 200, 100, 100, 255, 0, 0]'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 40 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 40 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 50 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 50 do
** Processing line: ~ $gtk.console.set_command 'outputs.solids << [1010, 200, 100, 100, 0, 0, 255]'~
- Inside source: true
*** True Line Result
$gtk.console.set_command 'outputs.solids << [1010, 200, 100, 100, 0, 0, 255]'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 60 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 60 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 70 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 70 do
** Processing line: ~ $gtk.console.set_command 'outputs.sprites << [1110, 200, 100, 100, "sprites/dragon_fly_0.png"]'~
- Inside source: true
*** True Line Result
$gtk.console.set_command 'outputs.sprites << [1110, 200, 100, 100, "sprites/dragon_fly_0.png"]'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 80 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 80 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 90 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 90 do
** Processing line: ~ $gtk.console.set_command "outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]"~
- Inside source: true
*** True Line Result
$gtk.console.set_command "outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 100 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 100 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 110 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 110 do
** Processing line: ~ $gtk.console.set_command "state.sprite_frame = state.tick_count.idiv(4).mod(6)"~
- Inside source: true
*** True Line Result
$gtk.console.set_command "state.sprite_frame = state.tick_count.idiv(4).mod(6)"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 120 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 120 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 130 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 130 do
** Processing line: ~ $gtk.console.set_command "outputs.labels << [1210, 170, state.sprite_frame, 0, 255, 0]"~
- Inside source: true
*** True Line Result
$gtk.console.set_command "outputs.labels << [1210, 170, state.sprite_frame, 0, 255, 0]"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 140 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 140 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 150 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 150 do
** Processing line: ~ $gtk.console.set_command "state.sprite_path = \"sprites/dragon_fly_\#{state.sprite_frame}.png\""~
- Inside source: true
*** True Line Result
$gtk.console.set_command "state.sprite_path = \"sprites/dragon_fly_\#{state.sprite_frame}.png\""
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 160 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 160 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 170 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 170 do
** Processing line: ~ $gtk.console.set_command "outputs.labels << [910, 330, \"path: \#{state.sprite_path}\", 0, 255, 0]"~
- Inside source: true
*** True Line Result
$gtk.console.set_command "outputs.labels << [910, 330, \"path: \#{state.sprite_path}\", 0, 255, 0]"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 180 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 180 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 190 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 190 do
** Processing line: ~ $gtk.console.set_command "outputs.sprites << [910, 330, 370, 370, state.sprite_path]"~
- Inside source: true
*** True Line Result
$gtk.console.set_command "outputs.sprites << [910, 330, 370, 370, state.sprite_path]"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 200 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 200 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 300 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 300 do
** Processing line: ~ $gtk.console.set_command ":wq"~
- Inside source: true
*** True Line Result
$gtk.console.set_command ":wq"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.schedule_callback 400 do~
- Inside source: true
*** True Line Result
$gtk.schedule_callback 400 do
** Processing line: ~ $gtk.console.eval_the_set_command~
- Inside source: true
*** True Line Result
$gtk.console.eval_the_set_command
** 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: ~* Learn Ruby Optional - Beginner Ruby Primer - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Beginner Ruby Primer - 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/00_learn_ruby_optional/00_beginner_ruby_primer/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_beginner_ruby_primer/app/main.rb
** 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: ~ # | |__| | |__ \ \_/ / | | | | | (___ | | | |__ | \| | | | | |~
- Inside source: true
*** True Line Result
# | |__| | |__ \ \_/ / | | | | | (___ | | | |__ | \| | | | | |
** 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: ~ #~
- Inside source: true
*** True Line Result
#
** 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: ~ # |~
- Inside source: true
*** True Line Result
# |
** 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: ~ # |~
- Inside source: true
*** True Line Result
# |
** 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: ~ # \ | /~
- Inside source: true
*** True Line Result
# \ | /
** 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: ~ # If you are new to the programming language Ruby, then you may find the~
- Inside source: true
*** True Line Result
# If you are new to the programming language Ruby, then you may find the
** Processing line: ~ # following code a bit overwhelming. This sample is only designed to be~
- Inside source: true
*** True Line Result
# following code a bit overwhelming. This sample is only designed to be
** Processing line: ~ # run interactively (as opposed to being manipulated via source code).~
- Inside source: true
*** True Line Result
# run interactively (as opposed to being manipulated via source code).
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # Start up this sample and follow along by visiting:~
- Inside source: true
*** True Line Result
# Start up this sample and follow along by visiting:
** Processing line: ~ # https://s3.amazonaws.com/s3.dragonruby.org/dragonruby-gtk-primer.mp4~
- Inside source: true
*** True Line Result
# https://s3.amazonaws.com/s3.dragonruby.org/dragonruby-gtk-primer.mp4
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # It is STRONGLY recommended that you work through all the samples before~
- Inside source: true
*** True Line Result
# It is STRONGLY recommended that you work through all the samples before
** Processing line: ~ # looking at the code in this file.~
- Inside source: true
*** True Line Result
# looking at the code in this file.
** Processing line: ~ # ==========================================================================~
- Inside source: true
*** True Line Result
# ==========================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class TutorialOutputs~
- Inside source: true
*** True Line Result
class TutorialOutputs
** Processing line: ~ attr_accessor :solids, :sprites, :labels, :lines, :borders~
- Inside source: true
*** True Line Result
attr_accessor :solids, :sprites, :labels, :lines, :borders
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize~
- Inside source: true
*** True Line Result
def initialize
** Processing line: ~ @solids = []~
- Inside source: true
*** True Line Result
@solids = []
** Processing line: ~ @sprites = []~
- Inside source: true
*** True Line Result
@sprites = []
** Processing line: ~ @labels = []~
- Inside source: true
*** True Line Result
@labels = []
** Processing line: ~ @lines = []~
- Inside source: true
*** True Line Result
@lines = []
** Processing line: ~ @borders = []~
- Inside source: true
*** True Line Result
@borders = []
** 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: ~ @solids ||= []~
- Inside source: true
*** True Line Result
@solids ||= []
** Processing line: ~ @sprites ||= []~
- Inside source: true
*** True Line Result
@sprites ||= []
** Processing line: ~ @labels ||= []~
- Inside source: true
*** True Line Result
@labels ||= []
** Processing line: ~ @lines ||= []~
- Inside source: true
*** True Line Result
@lines ||= []
** Processing line: ~ @borders ||= []~
- Inside source: true
*** True Line Result
@borders ||= []
** Processing line: ~ @solids.each { |p| $gtk.args.outputs.reserved << p.solid }~
- Inside source: true
*** True Line Result
@solids.each { |p| $gtk.args.outputs.reserved << p.solid }
** Processing line: ~ @sprites.each { |p| $gtk.args.outputs.reserved << p.sprite }~
- Inside source: true
*** True Line Result
@sprites.each { |p| $gtk.args.outputs.reserved << p.sprite }
** Processing line: ~ @labels.each { |p| $gtk.args.outputs.reserved << p.label }~
- Inside source: true
*** True Line Result
@labels.each { |p| $gtk.args.outputs.reserved << p.label }
** Processing line: ~ @lines.each { |p| $gtk.args.outputs.reserved << p.line }~
- Inside source: true
*** True Line Result
@lines.each { |p| $gtk.args.outputs.reserved << p.line }
** Processing line: ~ @borders.each { |p| $gtk.args.outputs.reserved << p.border }~
- Inside source: true
*** True Line Result
@borders.each { |p| $gtk.args.outputs.reserved << p.border }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def clear~
- Inside source: true
*** True Line Result
def clear
** Processing line: ~ @solids.clear~
- Inside source: true
*** True Line Result
@solids.clear
** Processing line: ~ @sprites.clear~
- Inside source: true
*** True Line Result
@sprites.clear
** Processing line: ~ @labels.clear~
- Inside source: true
*** True Line Result
@labels.clear
** Processing line: ~ @borders.clear~
- Inside source: true
*** True Line Result
@borders.clear
** 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 defaults~
- Inside source: true
*** True Line Result
def defaults
** Processing line: ~ state.reset_button ||=~
- Inside source: true
*** True Line Result
state.reset_button ||=
** Processing line: ~ state.new_entity(~
- Inside source: true
*** True Line Result
state.new_entity(
** Processing line: ~ :button,~
- Inside source: true
*** True Line Result
:button,
** Processing line: ~ label: [1190, 68, "RESTART", -2, 0, 0, 0, 0].label,~
- Inside source: true
*** True Line Result
label: [1190, 68, "RESTART", -2, 0, 0, 0, 0].label,
** Processing line: ~ background: [1160, 38, 120, 50, 255, 255, 255].solid~
- Inside source: true
*** True Line Result
background: [1160, 38, 120, 50, 255, 255, 255].solid
** Processing line: ~ )~
- Inside source: true
*** True Line Result
)
** Processing line: ~ $gtk.log_level = :off~
- Inside source: true
*** True Line Result
$gtk.log_level = :off
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_reset_button~
- Inside source: true
*** True Line Result
def tick_reset_button
** Processing line: ~ return unless state.hello_dragonruby_confirmed~
- Inside source: true
*** True Line Result
return unless state.hello_dragonruby_confirmed
** Processing line: ~ $gtk.args.outputs.reserved << state.reset_button.background~
- Inside source: true
*** True Line Result
$gtk.args.outputs.reserved << state.reset_button.background
** Processing line: ~ $gtk.args.outputs.reserved << state.reset_button.label~
- Inside source: true
*** True Line Result
$gtk.args.outputs.reserved << state.reset_button.label
** Processing line: ~ if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.reset_button.background)~
- Inside source: true
*** True Line Result
if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.reset_button.background)
** Processing line: ~ restart_tutorial~
- Inside source: true
*** True Line Result
restart_tutorial
** 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 seperator~
- Inside source: true
*** True Line Result
def seperator
** Processing line: ~ @seperator = "=" * 80~
- Inside source: true
*** True Line Result
@seperator = "=" * 80
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_intro~
- Inside source: true
*** True Line Result
def tick_intro
** Processing line: ~ queue_message "Welcome to the DragonRuby GTK primer! Try typing the~
- Inside source: true
*** True Line Result
queue_message "Welcome to the DragonRuby GTK primer! Try typing the
** Processing line: ~ code below and press ENTER:~
- Inside source: true
*** True Line Result
code below and press ENTER:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts \"Hello DragonRuby!\"~
- Inside source: true
*** True Line Result
puts \"Hello DragonRuby!\"
** 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 tick_hello_dragonruby~
- Inside source: true
*** True Line Result
def tick_hello_dragonruby
** Processing line: ~ return unless console_has? "Hello DragonRuby!"~
- Inside source: true
*** True Line Result
return unless console_has? "Hello DragonRuby!"
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.args.state.hello_dragonruby_confirmed = true~
- Inside source: true
*** True Line Result
$gtk.args.state.hello_dragonruby_confirmed = true
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queue_message "Well HELLO to you too!~
- Inside source: true
*** True Line Result
queue_message "Well HELLO to you too!
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ If you ever want to RESTART the tutorial, just click the \"RESTART\"~
- Inside source: true
*** True Line Result
If you ever want to RESTART the tutorial, just click the \"RESTART\"
** Processing line: ~ button in the bottom right-hand corner.~
- Inside source: true
*** True Line Result
button in the bottom right-hand corner.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Let's continue shall we? Type the code below and press ENTER:~
- Inside source: true
*** True Line Result
Let's continue shall we? Type the code below and press ENTER:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.solids << [910, 200, 100, 100, 255, 0, 0]~
- Inside source: true
*** True Line Result
outputs.solids << [910, 200, 100, 100, 255, 0, 0]
** 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 tick_explain_solid~
- Inside source: true
*** True Line Result
def tick_explain_solid
** Processing line: ~ return unless $tutorial_outputs.solids.any? {|s| s == [910, 200, 100, 100, 255, 0, 0]}~
- Inside source: true
*** True Line Result
return unless $tutorial_outputs.solids.any? {|s| s == [910, 200, 100, 100, 255, 0, 0]}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queue_message "Sweet!~
- Inside source: true
*** True Line Result
queue_message "Sweet!
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ The code: outputs.solids << [910, 200, 100, 100, 255, 0, 0]~
- Inside source: true
*** True Line Result
The code: outputs.solids << [910, 200, 100, 100, 255, 0, 0]
** Processing line: ~ Does the following:~
- Inside source: true
*** True Line Result
Does the following:
** Processing line: ~ 1. GET the place where SOLIDS go: outputs.solids~
- Inside source: true
*** True Line Result
1. GET the place where SOLIDS go: outputs.solids
** Processing line: ~ 2. Request that a new SOLID be ADDED: <<~
- Inside source: true
*** True Line Result
2. Request that a new SOLID be ADDED: <<
** Processing line: ~ 3. The DEFINITION of a SOLID is the ARRAY:~
- Inside source: true
*** True Line Result
3. The DEFINITION of a SOLID is the ARRAY:
** Processing line: ~ [910, 200, 100, 100, 255, 0, 0]~
- Inside source: true
*** True Line Result
[910, 200, 100, 100, 255, 0, 0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ GET ADD X Y WIDTH HEIGHT RED GREEN BLUE~
- Inside source: true
*** True Line Result
GET ADD X Y WIDTH HEIGHT RED GREEN BLUE
** Processing line: ~ | | | | | | | | |~
- Inside source: true
*** True Line Result
| | | | | | | | |
** Processing line: ~ | | | | | | | | |~
- Inside source: true
*** True Line Result
| | | | | | | | |
** Processing line: ~ outputs.solids << [910, 200, 100, 100, 255, 0, 0]~
- Inside source: true
*** True Line Result
outputs.solids << [910, 200, 100, 100, 255, 0, 0]
** 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: ~ ARRAY~
- Inside source: true
*** True Line Result
ARRAY
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Now let's create a blue SOLID. Type:~
- Inside source: true
*** True Line Result
Now let's create a blue SOLID. Type:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.solids << [1010, 200, 100, 100, 0, 0, 255]~
- Inside source: true
*** True Line Result
outputs.solids << [1010, 200, 100, 100, 0, 0, 255]
** Processing line: ~ "~
- Inside source: true
*** True Line Result
"
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.explain_solid_confirmed = true~
- Inside source: true
*** True Line Result
state.explain_solid_confirmed = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_explain_solid_blue~
- Inside source: true
*** True Line Result
def tick_explain_solid_blue
** Processing line: ~ return unless state.explain_solid_confirmed~
- Inside source: true
*** True Line Result
return unless state.explain_solid_confirmed
** Processing line: ~ return unless $tutorial_outputs.solids.any? {|s| s == [1010, 200, 100, 100, 0, 0, 255]}~
- Inside source: true
*** True Line Result
return unless $tutorial_outputs.solids.any? {|s| s == [1010, 200, 100, 100, 0, 0, 255]}
** Processing line: ~ state.explain_solid_blue_confirmed = true~
- Inside source: true
*** True Line Result
state.explain_solid_blue_confirmed = true
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queue_message "And there is our blue SOLID!~
- Inside source: true
*** True Line Result
queue_message "And there is our blue SOLID!
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ The ARRAY is the MOST important thing in DragonRuby GTK.~
- Inside source: true
*** True Line Result
The ARRAY is the MOST important thing in DragonRuby GTK.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Let's create a SPRITE using an ARRAY:~
- Inside source: true
*** True Line Result
Let's create a SPRITE using an ARRAY:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.sprites << [1110, 200, 100, 100, 'sprites/dragon_fly_0.png']~
- Inside source: true
*** True Line Result
outputs.sprites << [1110, 200, 100, 100, 'sprites/dragon_fly_0.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 tick_explain_tick_count~
- Inside source: true
*** True Line Result
def tick_explain_tick_count
** Processing line: ~ return unless $tutorial_outputs.sprites.any? {|s| s == [1110, 200, 100, 100, 'sprites/dragon_fly_0.png']}~
- Inside source: true
*** True Line Result
return unless $tutorial_outputs.sprites.any? {|s| s == [1110, 200, 100, 100, 'sprites/dragon_fly_0.png']}
** Processing line: ~ return if $tutorial_outputs.labels.any? {|l| l == [1210, 200, state.tick_count, 255, 255, 255]}~
- Inside source: true
*** True Line Result
return if $tutorial_outputs.labels.any? {|l| l == [1210, 200, state.tick_count, 255, 255, 255]}
** Processing line: ~ state.explain_tick_count_confirmed = true~
- Inside source: true
*** True Line Result
state.explain_tick_count_confirmed = true
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queue_message "Look at the cute little dragon!~
- Inside source: true
*** True Line Result
queue_message "Look at the cute little dragon!
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ We can create a LABEL with ARRAYS too. Let's create a LABEL showing~
- Inside source: true
*** True Line Result
We can create a LABEL with ARRAYS too. Let's create a LABEL showing
** Processing line: ~ THE PASSAGE OF TIME, which is called TICK_COUNT.~
- Inside source: true
*** True Line Result
THE PASSAGE OF TIME, which is called TICK_COUNT.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [1210, 200, state.tick_count, 0, 255, 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 tick_explain_mod~
- Inside source: true
*** True Line Result
def tick_explain_mod
** Processing line: ~ return unless $tutorial_outputs.labels.any? {|l| l == [1210, 200, state.tick_count, 0, 255, 0]}~
- Inside source: true
*** True Line Result
return unless $tutorial_outputs.labels.any? {|l| l == [1210, 200, state.tick_count, 0, 255, 0]}
** Processing line: ~ state.explain_mod_confirmed = true~
- Inside source: true
*** True Line Result
state.explain_mod_confirmed = true
** Processing line: ~ queue_message "~
- Inside source: true
*** True Line Result
queue_message "
** Processing line: ~ The code: outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]~
- Inside source: true
*** True Line Result
The code: outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]
** Processing line: ~ Does the following:~
- Inside source: true
*** True Line Result
Does the following:
** Processing line: ~ 1. GET the place where labels go: outputs.labels~
- Inside source: true
*** True Line Result
1. GET the place where labels go: outputs.labels
** Processing line: ~ 2. Request that a new label be ADDED: <<~
- Inside source: true
*** True Line Result
2. Request that a new label be ADDED: <<
** Processing line: ~ 3. The DEFINITION of a LABEL is the ARRAY:~
- Inside source: true
*** True Line Result
3. The DEFINITION of a LABEL is the ARRAY:
** Processing line: ~ [1210, 200, state.tick_count, 0, 255, 0]~
- Inside source: true
*** True Line Result
[1210, 200, state.tick_count, 0, 255, 0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ GET ADD X Y TEXT RED GREEN BLUE~
- Inside source: true
*** True Line Result
GET ADD X Y TEXT RED GREEN BLUE
** Processing line: ~ | | | | | | | |~
- Inside source: true
*** True Line Result
| | | | | | | |
** Processing line: ~ | | | | | | | |~
- Inside source: true
*** True Line Result
| | | | | | | |
** Processing line: ~ outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]
** 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: ~ ARRAY~
- Inside source: true
*** True Line Result
ARRAY
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Now let's do some MATH, save the result to STATE, and create a LABEL:~
- Inside source: true
*** True Line Result
Now let's do some MATH, save the result to STATE, and create a LABEL:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.sprite_frame = state.tick_count.idiv(4).mod(6)~
- Inside source: true
*** True Line Result
state.sprite_frame = state.tick_count.idiv(4).mod(6)
** Processing line: ~ outputs.labels << [1210, 170, state.sprite_frame, 0, 255, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [1210, 170, state.sprite_frame, 0, 255, 0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Type the lines above (pressing ENTER after each line).~
- Inside source: true
*** True Line Result
Type the lines above (pressing ENTER after each line).
** 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 tick_explain_string_interpolation~
- Inside source: true
*** True Line Result
def tick_explain_string_interpolation
** Processing line: ~ return unless state.explain_mod_confirmed~
- Inside source: true
*** True Line Result
return unless state.explain_mod_confirmed
** Processing line: ~ return unless state.sprite_frame == state.tick_count.idiv(4).mod(6)~
- Inside source: true
*** True Line Result
return unless state.sprite_frame == state.tick_count.idiv(4).mod(6)
** Processing line: ~ return unless $tutorial_outputs.labels.any? {|l| l == [1210, 170, state.sprite_frame, 0, 255, 0]}~
- Inside source: true
*** True Line Result
return unless $tutorial_outputs.labels.any? {|l| l == [1210, 170, state.sprite_frame, 0, 255, 0]}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queue_message "Here is what the mathematical computation you just typed does:~
- Inside source: true
*** True Line Result
queue_message "Here is what the mathematical computation you just typed does:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ 1. Create an item of STATE named SPRITE_FRAME: state.sprite_frame =~
- Inside source: true
*** True Line Result
1. Create an item of STATE named SPRITE_FRAME: state.sprite_frame =
** Processing line: ~ 2. Set this SPRITE_FRAME to the PASSAGE OF TIME (tick_count),~
- Inside source: true
*** True Line Result
2. Set this SPRITE_FRAME to the PASSAGE OF TIME (tick_count),
** Processing line: ~ DIVIDED EVENLY (idiv) into 4,~
- Inside source: true
*** True Line Result
DIVIDED EVENLY (idiv) into 4,
** Processing line: ~ and then compute the REMAINDER (mod) of 6.~
- Inside source: true
*** True Line Result
and then compute the REMAINDER (mod) of 6.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ STATE SPRITE_FRAME PASSAGE OF HOW LONG HOW MANY~
- Inside source: true
*** True Line Result
STATE SPRITE_FRAME PASSAGE OF HOW LONG HOW MANY
** Processing line: ~ | | TIME TO SHOW IMAGES~
- Inside source: true
*** True Line Result
| | TIME TO SHOW IMAGES
** Processing line: ~ | | | AN IMAGE TO FLIP THROUGH~
- Inside source: true
*** True Line Result
| | | AN IMAGE TO FLIP THROUGH
** Processing line: ~ | | | | |~
- Inside source: true
*** True Line Result
| | | | |
** Processing line: ~ state.sprite_frame = state.tick_count.idiv(4).mod(6)~
- Inside source: true
*** True Line Result
state.sprite_frame = state.tick_count.idiv(4).mod(6)
** Processing line: ~ | |~
- Inside source: true
*** True Line Result
| |
** Processing line: ~ | +- REMAINDER OF DIVIDE~
- Inside source: true
*** True Line Result
| +- REMAINDER OF DIVIDE
** Processing line: ~ DIVIDE EVENLY~
- Inside source: true
*** True Line Result
DIVIDE EVENLY
** Processing line: ~ (NO DECIMALS)~
- Inside source: true
*** True Line Result
(NO DECIMALS)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ With the information above, we can animate a SPRITE~
- Inside source: true
*** True Line Result
With the information above, we can animate a SPRITE
** Processing line: ~ using STRING INTERPOLATION: \#{}~
- Inside source: true
*** True Line Result
using STRING INTERPOLATION: \#{}
** Processing line: ~ which creates a unique SPRITE_PATH:~
- Inside source: true
*** True Line Result
which creates a unique SPRITE_PATH:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.sprite_path = \"sprites/dragon_fly_\#{state.sprite_frame}.png\"~
- Inside source: true
*** True Line Result
state.sprite_path = \"sprites/dragon_fly_\#{state.sprite_frame}.png\"
** Processing line: ~ outputs.labels << [910, 330, \"path: \#{state.sprite_path}\", 0, 255, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [910, 330, \"path: \#{state.sprite_path}\", 0, 255, 0]
** Processing line: ~ outputs.sprites << [910, 330, 370, 370, state.sprite_path]~
- Inside source: true
*** True Line Result
outputs.sprites << [910, 330, 370, 370, state.sprite_path]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Type the lines above (pressing ENTER after each line).~
- Inside source: true
*** True Line Result
Type the lines above (pressing ENTER after each line).
** 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 tick_reprint_on_error~
- Inside source: true
*** True Line Result
def tick_reprint_on_error
** Processing line: ~ return unless console.last_command_errored~
- Inside source: true
*** True Line Result
return unless console.last_command_errored
** Processing line: ~ puts $gtk.state.messages.last~
- Inside source: true
*** True Line Result
puts $gtk.state.messages.last
** Processing line: ~ puts "\nWhoops! Try again."~
- Inside source: true
*** True Line Result
puts "\nWhoops! Try again."
** Processing line: ~ console.last_command_errored = false~
- Inside source: true
*** True Line Result
console.last_command_errored = false
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_evals~
- Inside source: true
*** True Line Result
def tick_evals
** Processing line: ~ state.evals ||= []~
- Inside source: true
*** True Line Result
state.evals ||= []
** Processing line: ~ if console.last_command && (console.last_command.start_with?("outputs.") || console.last_command.start_with?("state."))~
- Inside source: true
*** True Line Result
if console.last_command && (console.last_command.start_with?("outputs.") || console.last_command.start_with?("state."))
** Processing line: ~ state.evals << console.last_command~
- Inside source: true
*** True Line Result
state.evals << console.last_command
** Processing line: ~ console.last_command = nil~
- Inside source: true
*** True Line Result
console.last_command = nil
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.evals.each do |l|~
- Inside source: true
*** True Line Result
state.evals.each do |l|
** Processing line: ~ Kernel.eval l~
- Inside source: true
*** True Line Result
Kernel.eval l
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ state.evals = state.evals[0..-2]~
- Inside source: true
*** True Line Result
state.evals = state.evals[0..-2]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $tutorial_outputs ||= TutorialOutputs.new~
- Inside source: true
*** True Line Result
$tutorial_outputs ||= TutorialOutputs.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: ~ $gtk.log_level = :off~
- Inside source: true
*** True Line Result
$gtk.log_level = :off
** Processing line: ~ defaults~
- Inside source: true
*** True Line Result
defaults
** Processing line: ~ console.show~
- Inside source: true
*** True Line Result
console.show
** Processing line: ~ $tutorial_outputs.clear~
- Inside source: true
*** True Line Result
$tutorial_outputs.clear
** Processing line: ~ $tutorial_outputs.solids << [900, 37, 480, 700, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
$tutorial_outputs.solids << [900, 37, 480, 700, 0, 0, 0, 255]
** Processing line: ~ $tutorial_outputs.borders << [900, 37, 380, 683, 255, 255, 255]~
- Inside source: true
*** True Line Result
$tutorial_outputs.borders << [900, 37, 380, 683, 255, 255, 255]
** Processing line: ~ tick_evals~
- Inside source: true
*** True Line Result
tick_evals
** Processing line: ~ $tutorial_outputs.tick~
- Inside source: true
*** True Line Result
$tutorial_outputs.tick
** Processing line: ~ tick_intro~
- Inside source: true
*** True Line Result
tick_intro
** Processing line: ~ tick_hello_dragonruby~
- Inside source: true
*** True Line Result
tick_hello_dragonruby
** Processing line: ~ tick_reset_button~
- Inside source: true
*** True Line Result
tick_reset_button
** Processing line: ~ tick_explain_solid~
- Inside source: true
*** True Line Result
tick_explain_solid
** Processing line: ~ tick_explain_solid_blue~
- Inside source: true
*** True Line Result
tick_explain_solid_blue
** Processing line: ~ tick_reprint_on_error~
- Inside source: true
*** True Line Result
tick_reprint_on_error
** Processing line: ~ tick_explain_tick_count~
- Inside source: true
*** True Line Result
tick_explain_tick_count
** Processing line: ~ tick_explain_mod~
- Inside source: true
*** True Line Result
tick_explain_mod
** Processing line: ~ tick_explain_string_interpolation~
- Inside source: true
*** True Line Result
tick_explain_string_interpolation
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def console~
- Inside source: true
*** True Line Result
def console
** Processing line: ~ $gtk.console~
- Inside source: true
*** True Line Result
$gtk.console
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def queue_message message~
- Inside source: true
*** True Line Result
def queue_message message
** Processing line: ~ $gtk.args.state.messages ||= []~
- Inside source: true
*** True Line Result
$gtk.args.state.messages ||= []
** Processing line: ~ return if $gtk.args.state.messages.include? message~
- Inside source: true
*** True Line Result
return if $gtk.args.state.messages.include? message
** Processing line: ~ $gtk.args.state.messages << message~
- Inside source: true
*** True Line Result
$gtk.args.state.messages << message
** Processing line: ~ last_three = [$gtk.console.log[-3], $gtk.console.log[-2], $gtk.console.log[-1]].reject_nil~
- Inside source: true
*** True Line Result
last_three = [$gtk.console.log[-3], $gtk.console.log[-2], $gtk.console.log[-1]].reject_nil
** Processing line: ~ $gtk.console.log.clear~
- Inside source: true
*** True Line Result
$gtk.console.log.clear
** Processing line: ~ puts seperator~
- Inside source: true
*** True Line Result
puts seperator
** Processing line: ~ $gtk.console.log += last_three~
- Inside source: true
*** True Line Result
$gtk.console.log += last_three
** Processing line: ~ puts seperator~
- Inside source: true
*** True Line Result
puts seperator
** Processing line: ~ puts message~
- Inside source: true
*** True Line Result
puts message
** Processing line: ~ puts seperator~
- Inside source: true
*** True Line Result
puts seperator
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def console_has? message~
- Inside source: true
*** True Line Result
def console_has? message
** Processing line: ~ console.log.map(&:upcase).include? "#{message.upcase}\n"~
- Inside source: true
*** True Line Result
console.log.map(&:upcase).include? "#{message.upcase}\n"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def restart_tutorial~
- Inside source: true
*** True Line Result
def restart_tutorial
** Processing line: ~ $tutorial_outputs.clear~
- Inside source: true
*** True Line Result
$tutorial_outputs.clear
** Processing line: ~ $gtk.console.log.clear~
- Inside source: true
*** True Line Result
$gtk.console.log.clear
** Processing line: ~ $gtk.reset~
- Inside source: true
*** True Line Result
$gtk.reset
** Processing line: ~ puts "Starting the tutorial over!"~
- Inside source: true
*** True Line Result
puts "Starting the tutorial over!"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def state~
- Inside source: true
*** True Line Result
def state
** Processing line: ~ $gtk.args.state~
- Inside source: true
*** True Line Result
$gtk.args.state
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inputs~
- Inside source: true
*** True Line Result
def inputs
** Processing line: ~ $gtk.args.inputs~
- Inside source: true
*** True Line Result
$gtk.args.inputs
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def outputs~
- Inside source: true
*** True Line Result
def outputs
** Processing line: ~ $tutorial_outputs~
- Inside source: true
*** True Line Result
$tutorial_outputs
** 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: ~* Learn Ruby Optional - Intermediate Ruby Primer - printing.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Intermediate Ruby Primer - printing.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/01_printing.txt~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_intermediate_ruby_primer/app/01_printing.txt
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~ # Commenting Code~
- Inside source: true
*** True Line Result
# Commenting Code
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # Prefixing text with a pound sign (#) is how you comment code in Ruby. Example:~
- Inside source: true
*** True Line Result
# Prefixing text with a pound sign (#) is how you comment code in Ruby. Example:
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # I am commented code. And so are the lines above.~
- Inside source: true
*** True Line Result
# I am commented code. And so are the lines above.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # I you want more than a quick primer on Ruby, check out https://poignant.guide/. It's~
- Inside source: true
*** True Line Result
# I you want more than a quick primer on Ruby, check out https://poignant.guide/. It's
** Processing line: ~ # an entertaining read. Otherwise, go to the next txt file.~
- Inside source: true
*** True Line Result
# an entertaining read. Otherwise, go to the next txt file.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # Follow along by visiting:~
- Inside source: true
*** True Line Result
# Follow along by visiting:
** Processing line: ~ # https://s3.amazonaws.com/s3.dragonruby.org/dragonruby-gtk-intermediate.mp4~
- Inside source: true
*** True Line Result
# https://s3.amazonaws.com/s3.dragonruby.org/dragonruby-gtk-intermediate.mp4
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~ # Printing to the Console:~
- Inside source: true
*** True Line Result
# Printing to the Console:
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # Every time you save repl.rb file, DragonRuby runs the code within it. Copy this text~
- Inside source: true
*** True Line Result
# Every time you save repl.rb file, DragonRuby runs the code within it. Copy this text
** Processing line: ~ # to repl.rb and save to see Hello World printed to the console.~
- Inside source: true
*** True Line Result
# to repl.rb and save to see Hello World printed to the console.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts '* RUBY PRIMER: Printing to the console using the ~puts~ function.'~
- Inside source: true
*** True Line Result
puts '* RUBY PRIMER: Printing to the console using the ~puts~ function.'
** 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 'Hello World'~
- Inside source: true
*** True Line Result
puts 'Hello World'
** 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: ~ 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: ~* Learn Ruby Optional - Intermediate Ruby Primer - strings.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Intermediate Ruby Primer - strings.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/02_strings.txt~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_intermediate_ruby_primer/app/02_strings.txt
** 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: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # Here is how you work with strings in Ruby. Take the text~
- Inside source: true
*** True Line Result
# Here is how you work with strings in Ruby. Take the text
** Processing line: ~ # in this file and paste it into repl.rb and save:~
- Inside source: true
*** True Line Result
# in this file and paste it into repl.rb and save:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts '* RUBY PRIMER: strings'~
- Inside source: true
*** True Line Result
puts '* RUBY PRIMER: strings'
** 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: ~#+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: ~* Learn Ruby Optional - Intermediate Ruby Primer - numbers.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Intermediate Ruby Primer - numbers.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/03_numbers.txt~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_intermediate_ruby_primer/app/03_numbers.txt
** 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: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # Here is how you work with numbers in Ruby. Take the text~
- Inside source: true
*** True Line Result
# Here is how you work with numbers in Ruby. Take the text
** Processing line: ~ # in this file and paste it into repl.rb and save:~
- Inside source: true
*** True Line Result
# in this file and paste it into repl.rb and save:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts '* RUBY PRIMER: Fixnum and Floats'~
- Inside source: true
*** True Line Result
puts '* RUBY PRIMER: Fixnum and Floats'
** 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: ~ puts ''~
- Inside source: true
*** True Line Result
puts ''
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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: ~#+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: ~* Learn Ruby Optional - Intermediate Ruby Primer - booleans.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Intermediate Ruby Primer - booleans.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/04_booleans.txt~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_intermediate_ruby_primer/app/04_booleans.txt
** 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: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # Here is how you work with numbers in Ruby. Take the text~
- Inside source: true
*** True Line Result
# Here is how you work with numbers in Ruby. Take the text
** Processing line: ~ # in this file and paste it into repl.rb and save:~
- Inside source: true
*** True Line Result
# in this file and paste it into repl.rb and save:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts '* RUBY PRIMER: TrueClass, FalseClass, NilClass (truthy / falsey values)'~
- Inside source: true
*** True Line Result
puts '* RUBY PRIMER: TrueClass, FalseClass, NilClass (truthy / falsey values)'
** Processing line: ~ puts "Anything that *isn't* false or nil is true."~
- Inside source: true
*** True Line Result
puts "Anything that *isn't* false or nil is true."
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ d = false~
- Inside source: true
*** True Line Result
d = false
** Processing line: ~ puts "The value if d is #{d}. The type for d is #{d.class}."~
- Inside source: true
*** True Line Result
puts "The value if d is #{d}. The type for d is #{d.class}."
** 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 (!)."~
- Inside source: true
*** True Line Result
puts "This if statement ran because d is falsey, using the not operator (!)."
** 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} (a blank string when printed). Which is of type #{e.class}."~
- Inside source: true
*** True Line Result
puts "Nil is also considered falsey. The value of e is: #{e} (a blank string when printed). Which is of type #{e.class}."
** 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 and the if statement applied the NOT operator. !e yields a type of #{(!e).class}."~
- Inside source: true
*** True Line Result
puts "This if statement ran because e is nil and the if statement applied the NOT operator. !e yields a type of #{(!e).class}."
** 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: ~* Learn Ruby Optional - Intermediate Ruby Primer - conditionals.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Intermediate Ruby Primer - conditionals.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/05_conditionals.txt~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_intermediate_ruby_primer/app/05_conditionals.txt
** 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: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # Here is how you create conditionals in Ruby. Take the text~
- Inside source: true
*** True Line Result
# Here is how you create conditionals in Ruby. Take the text
** Processing line: ~ # in this file and paste it into repl.rb and save:~
- Inside source: true
*** True Line Result
# in this file and paste it into repl.rb and save:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "* RUBY PRIMER: Conditionals"~
- Inside source: true
*** True Line Result
puts "* RUBY PRIMER: Conditionals"
** 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: ~ # if~
- Inside source: true
*** True Line Result
# if
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: if statement"~
- Inside source: true
*** True Line Result
puts "** INFO: 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: ~ 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: ~ # if/else~
- Inside source: true
*** True Line Result
# if/else
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: if/else statement"~
- Inside source: true
*** True Line Result
puts "** INFO: if/else statement"
** Processing line: ~ i_am_false = false~
- Inside source: true
*** True Line Result
i_am_false = false
** 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: ~ 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: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~ # if/elsif/else~
- Inside source: true
*** True Line Result
# if/elsif/else
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: if/elsif/else statement"~
- Inside source: true
*** True Line Result
puts "** INFO: if/elsif/else statement"
** Processing line: ~ i_am_false = false~
- Inside source: true
*** True Line Result
i_am_false = false
** Processing line: ~ i_am_true = true~
- Inside source: true
*** True Line Result
i_am_true = true
** 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: ~ 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: ~ # case~
- Inside source: true
*** True Line Result
# case
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO case statement"~
- Inside source: true
*** True Line Result
puts "** INFO case statement"
** Processing line: ~ i_am_one = 1 # change this value to see different results~
- Inside source: true
*** True Line Result
i_am_one = 1 # change this value to see different results
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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 "the value of i_am_one is 10"~
- Inside source: true
*** True Line Result
puts "the value of i_am_one is 10"
** Processing line: ~ when 9~
- Inside source: true
*** True Line Result
when 9
** Processing line: ~ puts "the value of i_am_one is 9"~
- Inside source: true
*** True Line Result
puts "the value of i_am_one is 9"
** Processing line: ~ when 5~
- Inside source: true
*** True Line Result
when 5
** Processing line: ~ puts "the value of i_am_one is 5"~
- Inside source: true
*** True Line Result
puts "the value of i_am_one is 5"
** Processing line: ~ when 1~
- Inside source: true
*** True Line Result
when 1
** Processing line: ~ puts "the value of i_am_one is 1"~
- Inside source: true
*** True Line Result
puts "the value of i_am_one is 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: ~ 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: ~ # comparison operators~
- Inside source: true
*** True Line Result
# comparison operators
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: Different types of comparisons"~
- Inside source: true
*** True Line Result
puts "** INFO: Different types of comparisons"
** Processing line: ~ if 4 == 4~
- Inside source: true
*** True Line Result
if 4 == 4
** Processing line: ~ puts "4 equals 4 (==)"~
- Inside source: true
*** True Line Result
puts "4 equals 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 "4 does not equal 3 (!=)"~
- Inside source: true
*** True Line Result
puts "4 does not equal 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 "3 is less than 4 (<)"~
- Inside source: true
*** True Line Result
puts "3 is less than 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 "4 is greater than 3 (>)"~
- Inside source: true
*** True Line Result
puts "4 is greater than 3 (>)"
** 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: ~ # and/or conditionals~
- Inside source: true
*** True Line Result
# and/or conditionals
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: AND, OR operator (&&, ||)"~
- Inside source: true
*** True Line Result
puts "** INFO: AND, OR operator (&&, ||)"
** Processing line: ~ if (4 > 3) || (3 < 4) || false~
- Inside source: true
*** True Line Result
if (4 > 3) || (3 < 4) || false
** Processing line: ~ puts "print this if 4 is greater than 3 OR 3 is less than 4 OR false is true (||)"~
- Inside source: true
*** True Line Result
puts "print this if 4 is greater than 3 OR 3 is less than 4 OR false is true (||)"
** 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 "print this if 4 is greater than 3 AND 3 is less than 4 (&&)"~
- Inside source: true
*** True Line Result
puts "print this if 4 is greater than 3 AND 3 is less than 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: ~#+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: ~* Learn Ruby Optional - Intermediate Ruby Primer - looping.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Intermediate Ruby Primer - looping.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/06_looping.txt~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_intermediate_ruby_primer/app/06_looping.txt
** 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: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # Looping looks a whole lot different than other languages.~
- Inside source: true
*** True Line Result
# Looping looks a whole lot different than other languages.
** Processing line: ~ # But it's pretty awesome when you get used to it.~
- Inside source: true
*** True Line Result
# But it's pretty awesome when you get used to it.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "* RUBY PRIMER: Loops"~
- Inside source: true
*** True Line Result
puts "* RUBY PRIMER: Loops"
** 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: ~ # times~
- Inside source: true
*** True Line Result
# times
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: ~Numeric#times~ (for loop)"~
- Inside source: true
*** True Line Result
puts "** INFO: ~Numeric#times~ (for loop)"
** 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: ~ 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: ~ # foreach~
- Inside source: true
*** True Line Result
# foreach
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: ~Array#each~ (for each loop)"~
- Inside source: true
*** True Line Result
puts "** INFO: ~Array#each~ (for each loop)"
** Processing line: ~ array = ["a", "b", "c", "d"]~
- Inside source: true
*** True Line Result
array = ["a", "b", "c", "d"]
** Processing line: ~ array.each do |char|~
- Inside source: true
*** True Line Result
array.each do |char|
** Processing line: ~ puts char~
- Inside source: true
*** True Line Result
puts char
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "** INFO: ~Array#each_with_index~ (for each loop)"~
- Inside source: true
*** True Line Result
puts "** INFO: ~Array#each_with_index~ (for each loop)"
** Processing line: ~ array = ["a", "b", "c", "d"]~
- Inside source: true
*** True Line Result
array = ["a", "b", "c", "d"]
** Processing line: ~ array.each do |char, i|~
- Inside source: true
*** True Line Result
array.each do |char, i|
** Processing line: ~ puts "index #{i}: #{char}"~
- Inside source: true
*** True Line Result
puts "index #{i}: #{char}"
** 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: ~ # ranges~
- Inside source: true
*** True Line Result
# ranges
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: range block exclusive (three dots)"~
- Inside source: true
*** True Line Result
puts "** INFO: range block exclusive (three dots)"
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "** INFO: range block inclusive (two dots)"~
- Inside source: true
*** True Line Result
puts "** INFO: range block inclusive (two dots)"
** 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: ~#+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: ~* Learn Ruby Optional - Intermediate Ruby Primer - functions.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Intermediate Ruby Primer - functions.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/07_functions.txt~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_intermediate_ruby_primer/app/07_functions.txt
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~ # Functions~
- Inside source: true
*** True Line Result
# Functions
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The last statement of a function is implictly returned. Parenthesis for functions~
- Inside source: true
*** True Line Result
# The last statement of a function is implictly returned. Parenthesis for functions
** Processing line: ~ # are optional as long as the statement can be envaluated disambiguously.~
- Inside source: true
*** True Line Result
# are optional as long as the statement can be envaluated disambiguously.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "* RUBY PRIMER: Functions"~
- Inside source: true
*** True Line Result
puts "* RUBY PRIMER: Functions"
** 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: ~ # Functions single parameter~
- Inside source: true
*** True Line Result
# Functions single parameter
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "* INFO: Function with one parameter"~
- Inside source: true
*** True Line Result
puts "* INFO: Function with one parameter"
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # function definition~
- Inside source: true
*** True Line Result
# function definition
** Processing line: ~ def add_one_to n~
- Inside source: true
*** True Line Result
def add_one_to n
** Processing line: ~ n + 1~
- Inside source: true
*** True Line Result
n + 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Parenthesis are optional in Ruby as long as the~
- Inside source: true
*** True Line Result
# Parenthesis are optional in Ruby as long as the
** Processing line: ~ # parsing is disambiguous. Here are a couple of variations.~
- Inside source: true
*** True Line Result
# parsing is disambiguous. Here are a couple of variations.
** Processing line: ~ # Generally speaking, don't put parenthesis is you don't have to.~
- Inside source: true
*** True Line Result
# Generally speaking, don't put parenthesis is you don't have to.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Conventional Usage of Parenthesis.~
- Inside source: true
*** True Line Result
# Conventional Usage of Parenthesis.
** 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: ~ # DragonRuby's recommended use of parenthesis (inner function has parenthesis).~
- Inside source: true
*** True Line Result
# DragonRuby's recommended use of parenthesis (inner function has parenthesis).
** 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: ~ # Full parens.~
- Inside source: true
*** True Line Result
# Full parens.
** 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: ~ # Outer function has parenthesis~
- Inside source: true
*** True Line Result
# Outer function has parenthesis
** Processing line: ~ puts(add_one_to 3)~
- Inside source: true
*** True Line Result
puts(add_one_to 3)
** 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: ~ # Functions with default parameter values~
- Inside source: true
*** True Line Result
# Functions with default parameter values
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "* INFO: Function with default value"~
- Inside source: true
*** True Line Result
puts "* INFO: 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 the argument three yields: #{function_with_default_value 3}"~
- Inside source: true
*** True Line Result
puts "Passing the argument three yields: #{function_with_default_value 3}"
** Processing line: ~ puts "Passing no argument yields: #{function_with_default_value}"~
- Inside source: true
*** True Line Result
puts "Passing no argument yields: #{function_with_default_value}"
** 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: ~ # Nil default parameter value and ||= operator.~
- Inside source: true
*** True Line Result
# Nil default parameter value and ||= operator.
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "* INFO: Using the OR EQUAL operator (||=)"~
- Inside source: true
*** True Line Result
puts "* INFO: Using the OR EQUAL operator (||=)"
** 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 ||= "DEFAULT_VALUE_OF_A_IS_NIL_OR_FALSE"~
- Inside source: true
*** True Line Result
result ||= "DEFAULT_VALUE_OF_A_IS_NIL_OR_FALSE"
** Processing line: ~ "value is #{result}."~
- Inside source: true
*** True Line Result
"value is #{result}."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "Passing 'hi' as the argument yields: #{function_with_nil_default_with_local 'hi'}"~
- Inside source: true
*** True Line Result
puts "Passing 'hi' as the argument yields: #{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: ~#+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: ~* Learn Ruby Optional - Intermediate Ruby Primer - arrays.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Intermediate Ruby Primer - arrays.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/08_arrays.txt~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_intermediate_ruby_primer/app/08_arrays.txt
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Arrays are incredibly powerful in Ruby. Learn to use them well.~
- Inside source: true
*** True Line Result
# Arrays are incredibly powerful in Ruby. Learn to use them well.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "* RUBY PRIMER: ARRAYS"~
- Inside source: true
*** True Line Result
puts "* RUBY PRIMER: ARRAYS"
** 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: ~ # Enumerable ranges and .to_a~
- Inside source: true
*** True Line Result
# Enumerable ranges and .to_a
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: Create an array with the numbers 1 to 10."~
- Inside source: true
*** True Line Result
puts "** INFO: 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: ~ 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: ~ # Finding elements~
- Inside source: true
*** True Line Result
# Finding elements
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: Finding elements in an array using ~Array#find_all~."~
- Inside source: true
*** True Line Result
puts "** INFO: Finding elements in an array using ~Array#find_all~."
** 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: ~~
- Inside source: true
*** True Line Result
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts evens~
- Inside source: true
*** True Line Result
puts evens
** 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: ~ # Rejecting elements~
- Inside source: true
*** True Line Result
# Rejecting elements
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: Removing elements in an array using ~Array#reject~."~
- Inside source: true
*** True Line Result
puts "** INFO: Removing elements in an array using ~Array#reject~."
** 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: ~~
- Inside source: true
*** True Line Result
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts also_even~
- Inside source: true
*** True Line Result
puts also_even
** 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: ~ # Array transform using the map function.~
- Inside source: true
*** True Line Result
# Array transform using the map function.
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: Creating new derived values from an array using ~Array#map~."~
- Inside source: true
*** True Line Result
puts "** INFO: Creating new derived values from an array using ~Array#map~."
** 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: ~~
- Inside source: true
*** True Line Result
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts doubled~
- Inside source: true
*** True Line Result
puts doubled
** 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: ~ # Combining array functions.~
- Inside source: true
*** True Line Result
# Combining array functions.
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: Combining ~Array#find_all~ along with ~Array#map~."~
- Inside source: true
*** True Line Result
puts "** INFO: Combining ~Array#find_all~ along with ~Array#map~."
** 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: ~~
- Inside source: true
*** True Line Result
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts odd_doubled~
- Inside source: true
*** True Line Result
puts odd_doubled
** 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: ~ # Product function.~
- Inside source: true
*** True Line Result
# Product function.
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: Create all combinations of array values using ~Array#product~."~
- Inside source: true
*** True Line Result
puts "** INFO: Create all combinations of array values using ~Array#product~."
** Processing line: ~ puts "All two-item pairs of numbers 1 to 10."~
- Inside source: true
*** True Line Result
puts "All two-item pairs 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: ~ 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: ~ # Uniq and sort function.~
- Inside source: true
*** True Line Result
# Uniq and sort function.
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: Providing uniq values using ~Array#uniq~ and ~Array#sort~."~
- Inside source: true
*** True Line Result
puts "** INFO: Providing uniq values using ~Array#uniq~ and ~Array#sort~."
** Processing line: ~ puts "All uniq combinations of numbers regardless of order."~
- Inside source: true
*** True Line Result
puts "All uniq combinations of numbers regardless of order."
** Processing line: ~ puts "For example: [1, 2] is the same as [2, 1]."~
- Inside source: true
*** True Line Result
puts "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: ~ # Example of an advanced array transform.~
- Inside source: true
*** True Line Result
# Example of an advanced array transform.
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: Advanced chaining. Combining ~Array's ~map~, ~find_all~, ~sort~, and ~sort_by~."~
- Inside source: true
*** True Line Result
puts "** INFO: Advanced chaining. Combining ~Array's ~map~, ~find_all~, ~sort~, and ~sort_by~."
** Processing line: ~ puts "All unique Pythagorean Triples between 1 and 100 sorted by area of the triangle."~
- Inside source: true
*** True Line Result
puts "All unique Pythagorean Triples between 1 and 100 sorted by area of the triangle."
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ one_to_hundred = (1..100).to_a~
- Inside source: true
*** True Line Result
one_to_hundred = (1..100).to_a
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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, _|~
- Inside source: true
*** True Line Result
triples.each do |width, height, hypotenuse, _|
** Processing line: ~ puts "(#{width}, #{height}, #{hypotenuse})"~
- Inside source: true
*** True Line Result
puts "(#{width}, #{height}, #{hypotenuse})"
** 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: ~ # Example of an sorting.~
- Inside source: true
*** True Line Result
# Example of an sorting.
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ repl do~
- Inside source: true
*** True Line Result
repl do
** Processing line: ~ puts "** INFO: Implementing a custom sort function that operates on the ~Hash~ datatype."~
- Inside source: true
*** True Line Result
puts "** INFO: Implementing a custom sort function that operates on the ~Hash~ datatype."
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ things_to_sort = [~
- Inside source: true
*** True Line Result
things_to_sort = [
** Processing line: ~ { type: :background, order: 1 },~
- Inside source: true
*** True Line Result
{ type: :background, order: 1 },
** Processing line: ~ { type: :foreground, order: 1 },~
- Inside source: true
*** True Line Result
{ type: :foreground, order: 1 },
** Processing line: ~ { type: :foreground, order: 2 }~
- Inside source: true
*** True Line Result
{ type: :foreground, order: 2 }
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ puts "*** Original array."~
- Inside source: true
*** True Line Result
puts "*** Original array."
** Processing line: ~ puts things_to_sort~
- Inside source: true
*** True Line Result
puts things_to_sort
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "*** Simple sort using key."~
- Inside source: true
*** True Line Result
puts "*** Simple sort using key."
** Processing line: ~ # For a simple sort, you can use sort_by~
- Inside source: true
*** True Line Result
# For a simple sort, you can use sort_by
** Processing line: ~ results = things_to_sort.sort_by do |hash|~
- Inside source: true
*** True Line Result
results = things_to_sort.sort_by do |hash|
** Processing line: ~ hash[:order]~
- Inside source: true
*** True Line Result
hash[:order]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts results~
- Inside source: true
*** True Line Result
puts results
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "*** Custom sort."~
- Inside source: true
*** True Line Result
puts "*** Custom sort."
** Processing line: ~ puts "**** Sorting process."~
- Inside source: true
*** True Line Result
puts "**** Sorting process."
** Processing line: ~ # for a more complicated sort, you can provide a block that returns~
- Inside source: true
*** True Line Result
# for a more complicated sort, you can provide a block that returns
** Processing line: ~ # -1, 0, 1 for a left and right operand~
- Inside source: true
*** True Line Result
# -1, 0, 1 for a left and right operand
** Processing line: ~ results = things_to_sort.sort do |l, r|~
- Inside source: true
*** True Line Result
results = things_to_sort.sort do |l, r|
** Processing line: ~ sort_result = 0~
- Inside source: true
*** True Line Result
sort_result = 0
** Processing line: ~ puts "here is l: #{l}"~
- Inside source: true
*** True Line Result
puts "here is l: #{l}"
** Processing line: ~ puts "here is r: #{r || "nil"}"~
- Inside source: true
*** True Line Result
puts "here is r: #{r || "nil"}"
** Processing line: ~ # if either value is nil/false return 0~
- Inside source: true
*** True Line Result
# if either value is nil/false return 0
** Processing line: ~ if !l || !r~
- Inside source: true
*** True Line Result
if !l || !r
** Processing line: ~ sort_result = 0~
- Inside source: true
*** True Line Result
sort_result = 0
** Processing line: ~ # if the type of "left" is background and the~
- Inside source: true
*** True Line Result
# if the type of "left" is background and the
** Processing line: ~ # type of "right" is foreground, then return~
- Inside source: true
*** True Line Result
# type of "right" is foreground, then return
** Processing line: ~ # -1 (which means "left" is less than "right"~
- Inside source: true
*** True Line Result
# -1 (which means "left" is less than "right"
** Processing line: ~ elsif l[:type] == :background && r[:type] == :foreground~
- Inside source: true
*** True Line Result
elsif l[:type] == :background && r[:type] == :foreground
** Processing line: ~ sort_result = -1~
- Inside source: true
*** True Line Result
sort_result = -1
** Processing line: ~ # if the type of "left" is foreground and the~
- Inside source: true
*** True Line Result
# if the type of "left" is foreground and the
** Processing line: ~ # type of "right" is background, then return~
- Inside source: true
*** True Line Result
# type of "right" is background, then return
** Processing line: ~ # 1 (which means "left" is greater than "right"~
- Inside source: true
*** True Line Result
# 1 (which means "left" is greater than "right"
** Processing line: ~ elsif l[:type] == :foreground && r[:type] == :background~
- Inside source: true
*** True Line Result
elsif l[:type] == :foreground && r[:type] == :background
** Processing line: ~ sort_result = 1~
- Inside source: true
*** True Line Result
sort_result = 1
** Processing line: ~ # if "left" and "right"'s type are the same, then~
- Inside source: true
*** True Line Result
# if "left" and "right"'s type are the same, then
** Processing line: ~ # use the order as the tie breaker~
- Inside source: true
*** True Line Result
# use the order as the tie breaker
** Processing line: ~ elsif l[:order] < r[:order]~
- Inside source: true
*** True Line Result
elsif l[:order] < r[:order]
** Processing line: ~ sort_result = -1~
- Inside source: true
*** True Line Result
sort_result = -1
** Processing line: ~ elsif l[:order] > r[:order]~
- Inside source: true
*** True Line Result
elsif l[:order] > r[:order]
** Processing line: ~ sort_result = 1~
- Inside source: true
*** True Line Result
sort_result = 1
** Processing line: ~ # returning 0 means both values are equal~
- Inside source: true
*** True Line Result
# returning 0 means both values are equal
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ sort_result = 0~
- Inside source: true
*** True Line Result
sort_result = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ sort_result~
- Inside source: true
*** True Line Result
sort_result
** Processing line: ~ end.to_a~
- Inside source: true
*** True Line Result
end.to_a
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "**** Sort result."~
- Inside source: true
*** True Line Result
puts "**** Sort result."
** Processing line: ~ puts results~
- Inside source: true
*** True Line Result
puts results
** 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: ~ # Api documention for Array that is worth commiting to memory because arrays are so~
- Inside source: true
*** True Line Result
# Api documention for Array that is worth commiting to memory because arrays are so
** Processing line: ~ # awesome in Ruby: https://docs.ruby-lang.org/en/2.0.0/Array.html~
- Inside source: true
*** True Line Result
# awesome in Ruby: https://docs.ruby-lang.org/en/2.0.0/Array.html
** Processing line: ~ # ====================================================================================~
- Inside source: true
*** True Line Result
# ====================================================================================
** 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: ~* Learn Ruby Optional - Intermediate Ruby Primer - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Intermediate Ruby Primer - 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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_intermediate_ruby_primer/app/main.rb
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ args.outputs.labels << [640, 380, "Open repl.rb in the text editor of your choice and follow the document.", 0, 1]~
- Inside source: true
*** True Line Result
args.outputs.labels << [640, 380, "Open repl.rb in the text editor of your choice and follow the document.", 0, 1]
** 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: ~* Learn Ruby Optional - Intermediate Ruby Primer - repl.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Learn Ruby Optional - Intermediate Ruby Primer - 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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/repl.rb~
- Inside source: true
*** True Line Result
# ./samples/00_learn_ruby_optional/00_intermediate_ruby_primer/app/repl.rb
** 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: ~* Rendering Basics - Labels - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rendering Basics - Labels - 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/01_rendering_basics/01_labels/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/01_rendering_basics/01_labels/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in a previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in a previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. Values in this array generate labels~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. Values in this array generate labels
** Processing line: ~ the screen.~
- Inside source: true
*** True Line Result
the screen.
** Processing line: ~ - args.grid.(left|right|top|bottom): Pixel value for the boundaries of the virtual~
- Inside source: true
*** True Line Result
- args.grid.(left|right|top|bottom): Pixel value for the boundaries of the virtual
** Processing line: ~ 720 p screen (Dragon Ruby Game Toolkits's virtual resolution is always 1280x720).~
- Inside source: true
*** True Line Result
720 p screen (Dragon Ruby Game Toolkits's virtual resolution is always 1280x720).
** Processing line: ~ - Numeric#shift_(left|right|up|down): Shifts the Numeric in the correct direction~
- Inside source: true
*** True Line Result
- Numeric#shift_(left|right|up|down): Shifts the Numeric in the correct direction
** Processing line: ~ by adding or subracting.~
- Inside source: true
*** True Line Result
by adding or subracting.
** 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: ~ # Labels are used to represent text elements in DragonRuby~
- Inside source: true
*** True Line Result
# Labels are used to represent text elements in DragonRuby
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # An example of creating a label is:~
- Inside source: true
*** True Line Result
# An example of creating a label is:
** Processing line: ~ # args.outputs.labels << [320, 640, "Example", 3, 1, 255, 0, 0, 200, manaspace.ttf]~
- Inside source: true
*** True Line Result
# args.outputs.labels << [320, 640, "Example", 3, 1, 255, 0, 0, 200, manaspace.ttf]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The code above does the following:~
- Inside source: true
*** True Line Result
# The code above does the following:
** Processing line: ~ # 1. GET the place where labels go: args.outputs.labels~
- Inside source: true
*** True Line Result
# 1. GET the place where labels go: args.outputs.labels
** Processing line: ~ # 2. Request a new LABEL be ADDED: <<~
- Inside source: true
*** True Line Result
# 2. Request a new LABEL be ADDED: <<
** Processing line: ~ # 3. The DEFINITION of a SOLID is the ARRAY:~
- Inside source: true
*** True Line Result
# 3. The DEFINITION of a SOLID is the ARRAY:
** Processing line: ~ # [320, 640, "Example", 3, 1, 255, 0, 0, 200, manaspace.ttf]~
- Inside source: true
*** True Line Result
# [320, 640, "Example", 3, 1, 255, 0, 0, 200, manaspace.ttf]
** Processing line: ~ # [ X , Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
# [ X , Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The tick method is called by DragonRuby every frame~
- Inside source: true
*** True Line Result
# The tick method is called by DragonRuby every frame
** Processing line: ~ # args contains all the information regarding the game.~
- Inside source: true
*** True Line Result
# args contains all the information regarding the game.
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Sample app shows different version of label sizes and alignments. And how to use hashes instead of arrays."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows different version of label sizes and alignments. And how to use hashes instead of arrays."
** Processing line: ~ # Here are some examples of simple labels, with the minimum number of parameters~
- Inside source: true
*** True Line Result
# Here are some examples of simple labels, with the minimum number of parameters
** Processing line: ~ # Note that the default values for the other parameters are 0, except for Alpha which is 255 and Font Style which is the default font~
- Inside source: true
*** True Line Result
# Note that the default values for the other parameters are 0, except for Alpha which is 255 and Font Style which is the default font
** Processing line: ~ args.outputs.labels << [400, 620, "Here is a label with just an x, y, and text"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [400, 620, "Here is a label with just an x, y, and text"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << [args.grid.left.shift_right(5), args.grid.top.shift_down(5), "This is a label located at the top left."]~
- Inside source: true
*** True Line Result
args.outputs.labels << [args.grid.left.shift_right(5), args.grid.top.shift_down(5), "This is a label located at the top left."]
** Processing line: ~ args.outputs.labels << [args.grid.left.shift_right(5), args.grid.bottom.shift_up(30), "This is a label located at the bottom left."]~
- Inside source: true
*** True Line Result
args.outputs.labels << [args.grid.left.shift_right(5), args.grid.bottom.shift_up(30), "This is a label located at the bottom left."]
** Processing line: ~ args.outputs.labels << [args.grid.right.shift_left(420), args.grid.top.shift_down(5), "This is a label located at the top right."]~
- Inside source: true
*** True Line Result
args.outputs.labels << [args.grid.right.shift_left(420), args.grid.top.shift_down(5), "This is a label located at the top right."]
** Processing line: ~ args.outputs.labels << [args.grid.right.shift_left(440), args.grid.bottom.shift_up(30), "This is a label located at the bottom right."]~
- Inside source: true
*** True Line Result
args.outputs.labels << [args.grid.right.shift_left(440), args.grid.bottom.shift_up(30), "This is a label located at the bottom right."]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Demonstration of the Size Parameter~
- Inside source: true
*** True Line Result
# Demonstration of the Size Parameter
** Processing line: ~ args.outputs.labels << [175 + 150, 610 - 50, "Smaller label.", -2]~
- Inside source: true
*** True Line Result
args.outputs.labels << [175 + 150, 610 - 50, "Smaller label.", -2]
** Processing line: ~ args.outputs.labels << [175 + 150, 580 - 50, "Small label.", -1]~
- Inside source: true
*** True Line Result
args.outputs.labels << [175 + 150, 580 - 50, "Small label.", -1]
** Processing line: ~ args.outputs.labels << [175 + 150, 550 - 50, "Medium label.", 0]~
- Inside source: true
*** True Line Result
args.outputs.labels << [175 + 150, 550 - 50, "Medium label.", 0]
** Processing line: ~ args.outputs.labels << [175 + 150, 520 - 50, "Large label.", 1]~
- Inside source: true
*** True Line Result
args.outputs.labels << [175 + 150, 520 - 50, "Large label.", 1]
** Processing line: ~ args.outputs.labels << [175 + 150, 490 - 50, "Larger label.", 2]~
- Inside source: true
*** True Line Result
args.outputs.labels << [175 + 150, 490 - 50, "Larger label.", 2]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Demonstration of the Align Parameter~
- Inside source: true
*** True Line Result
# Demonstration of the Align Parameter
** Processing line: ~ args.outputs.labels << [260 + 150, 345 - 50, "Left aligned.", 0, 2]~
- Inside source: true
*** True Line Result
args.outputs.labels << [260 + 150, 345 - 50, "Left aligned.", 0, 2]
** Processing line: ~ args.outputs.labels << [260 + 150, 325 - 50, "Center aligned.", 0, 1]~
- Inside source: true
*** True Line Result
args.outputs.labels << [260 + 150, 325 - 50, "Center aligned.", 0, 1]
** Processing line: ~ args.outputs.labels << [260 + 150, 305 - 50, "Right aligned.", 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.labels << [260 + 150, 305 - 50, "Right aligned.", 0, 0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Demonstration of the RGBA parameters~
- Inside source: true
*** True Line Result
# Demonstration of the RGBA parameters
** Processing line: ~ args.outputs.labels << [600 + 150, 590 - 50, "Red Label.", 0, 0, 255, 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.labels << [600 + 150, 590 - 50, "Red Label.", 0, 0, 255, 0, 0]
** Processing line: ~ args.outputs.labels << [600 + 150, 570 - 50, "Green Label.", 0, 0, 0, 255, 0]~
- Inside source: true
*** True Line Result
args.outputs.labels << [600 + 150, 570 - 50, "Green Label.", 0, 0, 0, 255, 0]
** Processing line: ~ args.outputs.labels << [600 + 150, 550 - 50, "Blue Label.", 0, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
args.outputs.labels << [600 + 150, 550 - 50, "Blue Label.", 0, 0, 0, 0, 255]
** Processing line: ~ args.outputs.labels << [600 + 150, 530 - 50, "Faded Label.", 0, 0, 0, 0, 0, 128]~
- Inside source: true
*** True Line Result
args.outputs.labels << [600 + 150, 530 - 50, "Faded Label.", 0, 0, 0, 0, 0, 128]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Demonstration of the Font parameter~
- Inside source: true
*** True Line Result
# Demonstration of the Font parameter
** Processing line: ~ # In order to use a font of your choice, add its ttf file to the project folder, where the app folder is~
- Inside source: true
*** True Line Result
# In order to use a font of your choice, add its ttf file to the project folder, where the app folder is
** Processing line: ~ args.outputs.labels << [690 + 150, 330 - 20, "Custom font (Array)", 0, 1, 125, 0, 200, 255, "manaspc.ttf" ]~
- Inside source: true
*** True Line Result
args.outputs.labels << [690 + 150, 330 - 20, "Custom font (Array)", 0, 1, 125, 0, 200, 255, "manaspc.ttf" ]
** Processing line: ~ args.outputs.primitives << { x: 690 + 150,~
- Inside source: true
*** True Line Result
args.outputs.primitives << { x: 690 + 150,
** Processing line: ~ y: 330 - 50,~
- Inside source: true
*** True Line Result
y: 330 - 50,
** Processing line: ~ text: "Custom font (Hash)",~
- Inside source: true
*** True Line Result
text: "Custom font (Hash)",
** Processing line: ~ size_enum: 0,~
- Inside source: true
*** True Line Result
size_enum: 0,
** Processing line: ~ alignment_enum: 1,~
- Inside source: true
*** True Line Result
alignment_enum: 1,
** Processing line: ~ r: 125,~
- Inside source: true
*** True Line Result
r: 125,
** Processing line: ~ g: 0,~
- Inside source: true
*** True Line Result
g: 0,
** Processing line: ~ b: 200,~
- Inside source: true
*** True Line Result
b: 200,
** Processing line: ~ a: 255,~
- Inside source: true
*** True Line Result
a: 255,
** Processing line: ~ font: "manaspc.ttf" }.label~
- Inside source: true
*** True Line Result
font: "manaspc.ttf" }.label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Primitives can hold anything, and can be given a label in the following forms~
- Inside source: true
*** True Line Result
# Primitives can hold anything, and can be given a label in the following forms
** Processing line: ~ args.outputs.primitives << [690 + 150, 330 - 80, "Custom font (.primitives Array)", 0, 1, 125, 0, 200, 255, "manaspc.ttf" ].label~
- Inside source: true
*** True Line Result
args.outputs.primitives << [690 + 150, 330 - 80, "Custom font (.primitives Array)", 0, 1, 125, 0, 200, 255, "manaspc.ttf" ].label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.primitives << { x: 690 + 150,~
- Inside source: true
*** True Line Result
args.outputs.primitives << { x: 690 + 150,
** Processing line: ~ y: 330 - 110,~
- Inside source: true
*** True Line Result
y: 330 - 110,
** Processing line: ~ text: "Custom font (.primitives Hash)",~
- Inside source: true
*** True Line Result
text: "Custom font (.primitives Hash)",
** Processing line: ~ size_enum: 0,~
- Inside source: true
*** True Line Result
size_enum: 0,
** Processing line: ~ alignment_enum: 1,~
- Inside source: true
*** True Line Result
alignment_enum: 1,
** Processing line: ~ r: 125,~
- Inside source: true
*** True Line Result
r: 125,
** Processing line: ~ g: 0,~
- Inside source: true
*** True Line Result
g: 0,
** Processing line: ~ b: 200,~
- Inside source: true
*** True Line Result
b: 200,
** Processing line: ~ a: 255,~
- Inside source: true
*** True Line Result
a: 255,
** Processing line: ~ font: "manaspc.ttf" }.label~
- Inside source: true
*** True Line Result
font: "manaspc.ttf" }.label
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Rendering Basics - Lines - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rendering Basics - Lines - 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/01_rendering_basics/02_lines/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/01_rendering_basics/02_lines/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in a previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in a previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.lines: An array. Values in this array generate lines on~
- Inside source: true
*** True Line Result
- args.outputs.lines: An array. Values in this array generate lines on
** Processing line: ~ the screen.~
- Inside source: true
*** True Line Result
the screen.
** Processing line: ~ - args.state.tick_count: This property contains an integer value that~
- Inside source: true
*** True Line Result
- args.state.tick_count: This property contains an integer value that
** Processing line: ~ represents the current frame. GTK renders at 60 FPS. A value of 0~
- Inside source: true
*** True Line Result
represents the current frame. GTK renders at 60 FPS. A value of 0
** Processing line: ~ for args.state.tick_count represents the initial load of the game.~
- Inside source: true
*** True Line Result
for args.state.tick_count represents the initial load of the game.
** 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: ~ # The parameters required for lines are:~
- Inside source: true
*** True Line Result
# The parameters required for lines are:
** Processing line: ~ # 1. The initial point (x, y)~
- Inside source: true
*** True Line Result
# 1. The initial point (x, y)
** Processing line: ~ # 2. The end point (x2, y2)~
- Inside source: true
*** True Line Result
# 2. The end point (x2, y2)
** Processing line: ~ # 3. The rgba values for the color and transparency (r, g, b, a)~
- Inside source: true
*** True Line Result
# 3. The rgba values for the color and transparency (r, g, b, a)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # An example of creating a line would be:~
- Inside source: true
*** True Line Result
# An example of creating a line would be:
** Processing line: ~ # args.outputs.lines << [100, 100, 300, 300, 255, 0, 255, 255]~
- Inside source: true
*** True Line Result
# args.outputs.lines << [100, 100, 300, 300, 255, 0, 255, 255]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This would create a line from (100, 100) to (300, 300)~
- Inside source: true
*** True Line Result
# This would create a line from (100, 100) to (300, 300)
** Processing line: ~ # The RGB code (255, 0, 255) would determine its color, a purple~
- Inside source: true
*** True Line Result
# The RGB code (255, 0, 255) would determine its color, a purple
** Processing line: ~ # It would have an Alpha value of 255, making it completely opaque~
- Inside source: true
*** True Line Result
# It would have an Alpha value of 255, making it completely opaque
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Sample app shows how to create lines."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to create lines."
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << [480, 620, "Lines (x, y, x2, y2, r, g, b, a)"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [480, 620, "Lines (x, y, x2, y2, r, g, b, a)"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Some simple lines~
- Inside source: true
*** True Line Result
# Some simple lines
** Processing line: ~ args.outputs.lines << [380, 450, 675, 450]~
- Inside source: true
*** True Line Result
args.outputs.lines << [380, 450, 675, 450]
** Processing line: ~ args.outputs.lines << [380, 410, 875, 410]~
- Inside source: true
*** True Line Result
args.outputs.lines << [380, 410, 875, 410]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # These examples utilize args.state.tick_count to change the length of the lines over time~
- Inside source: true
*** True Line Result
# These examples utilize args.state.tick_count to change the length of the lines over time
** Processing line: ~ # args.state.tick_count is the ticks that have occurred in the game~
- Inside source: true
*** True Line Result
# args.state.tick_count is the ticks that have occurred in the game
** Processing line: ~ # This is accomplished by making either the starting or ending point based on the args.state.tick_count~
- Inside source: true
*** True Line Result
# This is accomplished by making either the starting or ending point based on the args.state.tick_count
** Processing line: ~ args.outputs.lines << [380, 370, 875, 370, args.state.tick_count % 255, 0, 0, 255]~
- Inside source: true
*** True Line Result
args.outputs.lines << [380, 370, 875, 370, args.state.tick_count % 255, 0, 0, 255]
** Processing line: ~ args.outputs.lines << [380, 330 - args.state.tick_count % 25, 875, 330, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
args.outputs.lines << [380, 330 - args.state.tick_count % 25, 875, 330, 0, 0, 0, 255]
** Processing line: ~ args.outputs.lines << [380 + args.state.tick_count % 400, 290, 875, 290, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
args.outputs.lines << [380 + args.state.tick_count % 400, 290, 875, 290, 0, 0, 0, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Rendering Basics - Solids Borders - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rendering Basics - Solids Borders - 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/01_rendering_basics/03_solids_borders/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/01_rendering_basics/03_solids_borders/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in a previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in a previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.solids: An array. Values in this array generate~
- Inside source: true
*** True Line Result
- args.outputs.solids: An array. Values in this array generate
** Processing line: ~ solid/filled rectangles on the screen.~
- Inside source: true
*** True Line Result
solid/filled rectangles on the screen.
** 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: ~ # Rects are outputted in DragonRuby as rectangles~
- Inside source: true
*** True Line Result
# Rects are outputted in DragonRuby as rectangles
** Processing line: ~ # If filled in, they are solids~
- Inside source: true
*** True Line Result
# If filled in, they are solids
** Processing line: ~ # If hollow, they are borders~
- Inside source: true
*** True Line Result
# If hollow, they are borders
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Solids are added to args.outputs.solids~
- Inside source: true
*** True Line Result
# Solids are added to args.outputs.solids
** Processing line: ~ # Borders are added to args.outputs.borders~
- Inside source: true
*** True Line Result
# Borders are added to args.outputs.borders
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The parameters required for rects are:~
- Inside source: true
*** True Line Result
# The parameters required for rects are:
** Processing line: ~ # 1. The upper right corner (x, y)~
- Inside source: true
*** True Line Result
# 1. The upper right corner (x, y)
** Processing line: ~ # 2. The width (w)~
- Inside source: true
*** True Line Result
# 2. The width (w)
** Processing line: ~ # 3. The height (h)~
- Inside source: true
*** True Line Result
# 3. The height (h)
** Processing line: ~ # 4. The rgba values for the color and transparency (r, g, b, a)~
- Inside source: true
*** True Line Result
# 4. The rgba values for the color and transparency (r, g, b, a)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Here is an example of a rect definition:~
- Inside source: true
*** True Line Result
# Here is an example of a rect definition:
** Processing line: ~ # [100, 100, 400, 500, 0, 255, 0, 180]~
- Inside source: true
*** True Line Result
# [100, 100, 400, 500, 0, 255, 0, 180]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The example would create a rect from (100, 100)~
- Inside source: true
*** True Line Result
# The example would create a rect from (100, 100)
** Processing line: ~ # Extending 400 pixels across the x axis~
- Inside source: true
*** True Line Result
# Extending 400 pixels across the x axis
** Processing line: ~ # and 500 pixels across the y axis~
- Inside source: true
*** True Line Result
# and 500 pixels across the y axis
** Processing line: ~ # The rect would be green (0, 255, 0)~
- Inside source: true
*** True Line Result
# The rect would be green (0, 255, 0)
** Processing line: ~ # and mostly opaque with some transparency (180)~
- Inside source: true
*** True Line Result
# and mostly opaque with some transparency (180)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Whether the rect would be filled or not depends on if~
- Inside source: true
*** True Line Result
# Whether the rect would be filled or not depends on if
** Processing line: ~ # it is added to args.outputs.solids or args.outputs.borders~
- Inside source: true
*** True Line Result
# it is added to args.outputs.solids or args.outputs.borders
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Sample app shows how to create solid squares."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to create solid squares."
** Processing line: ~ args.outputs.labels << [460, 600, "Solids (x, y, w, h, r, g, b, a)"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [460, 600, "Solids (x, y, w, h, r, g, b, a)"]
** Processing line: ~ args.outputs.solids << [470, 520, 50, 50]~
- Inside source: true
*** True Line Result
args.outputs.solids << [470, 520, 50, 50]
** Processing line: ~ args.outputs.solids << [530, 520, 50, 50, 0, 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.solids << [530, 520, 50, 50, 0, 0, 0]
** Processing line: ~ args.outputs.solids << [590, 520, 50, 50, 255, 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.solids << [590, 520, 50, 50, 255, 0, 0]
** Processing line: ~ args.outputs.solids << [650, 520, 50, 50, 255, 0, 0, 128]~
- Inside source: true
*** True Line Result
args.outputs.solids << [650, 520, 50, 50, 255, 0, 0, 128]
** Processing line: ~ args.outputs.solids << [710, 520, 50, 50, 0, 0, 0, 128 + args.state.tick_count % 128]~
- Inside source: true
*** True Line Result
args.outputs.solids << [710, 520, 50, 50, 0, 0, 0, 128 + args.state.tick_count % 128]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << [460, 400, "Borders (x, y, w, h, r, g, b, a)"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [460, 400, "Borders (x, y, w, h, r, g, b, a)"]
** Processing line: ~ args.outputs.borders << [470, 320, 50, 50]~
- Inside source: true
*** True Line Result
args.outputs.borders << [470, 320, 50, 50]
** Processing line: ~ args.outputs.borders << [530, 320, 50, 50, 0, 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.borders << [530, 320, 50, 50, 0, 0, 0]
** Processing line: ~ args.outputs.borders << [590, 320, 50, 50, 255, 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.borders << [590, 320, 50, 50, 255, 0, 0]
** Processing line: ~ args.outputs.borders << [650, 320, 50, 50, 255, 0, 0, 128]~
- Inside source: true
*** True Line Result
args.outputs.borders << [650, 320, 50, 50, 255, 0, 0, 128]
** Processing line: ~ args.outputs.borders << [710, 320, 50, 50, 0, 0, 0, 128 + args.state.tick_count % 128]~
- Inside source: true
*** True Line Result
args.outputs.borders << [710, 320, 50, 50, 0, 0, 0, 128 + args.state.tick_count % 128]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Rendering Basics - Sprites - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rendering Basics - Sprites - 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/01_rendering_basics/04_sprites/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/01_rendering_basics/04_sprites/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in a previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in a previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.sprites: An array. Values in this array generate~
- Inside source: true
*** True Line Result
- args.outputs.sprites: An array. Values in this array generate
** Processing line: ~ sprites on the screen. The location of the sprite is assumed to~
- Inside source: true
*** True Line Result
sprites on the screen. The location of the sprite is assumed to
** Processing line: ~ be under the mygame/ directory (the exception being dragonruby.png).~
- Inside source: true
*** True Line Result
be under the mygame/ directory (the exception being dragonruby.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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # For all other display outputs, Sprites are your solution~
- Inside source: true
*** True Line Result
# For all other display outputs, Sprites are your solution
** Processing line: ~ # Sprites import images and display them with a certain rectangular area~
- Inside source: true
*** True Line Result
# Sprites import images and display them with a certain rectangular area
** Processing line: ~ # The image can be of any usual format and should be located within the folder,~
- Inside source: true
*** True Line Result
# The image can be of any usual format and should be located within the folder,
** Processing line: ~ # similar to additional fonts.~
- Inside source: true
*** True Line Result
# similar to additional fonts.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sprites have the following parameters~
- Inside source: true
*** True Line Result
# Sprites have the following parameters
** Processing line: ~ # Rectangular area (x, y, width, height)~
- Inside source: true
*** True Line Result
# Rectangular area (x, y, width, height)
** Processing line: ~ # The image (path)~
- Inside source: true
*** True Line Result
# The image (path)
** Processing line: ~ # Rotation (angle)~
- Inside source: true
*** True Line Result
# Rotation (angle)
** Processing line: ~ # Alpha (a)~
- Inside source: true
*** True Line Result
# Alpha (a)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Sample app shows how to render a sprite. Set its alpha, and rotate it."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to render a sprite. Set its alpha, and rotate it."
** Processing line: ~ args.outputs.labels << [460, 600, "Sprites (x, y, w, h, path, angle, a)"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [460, 600, "Sprites (x, y, w, h, path, angle, a)"]
** Processing line: ~ args.outputs.sprites << [460, 470, 128, 101, 'dragonruby.png']~
- Inside source: true
*** True Line Result
args.outputs.sprites << [460, 470, 128, 101, 'dragonruby.png']
** Processing line: ~ args.outputs.sprites << [610, 470, 128, 101, 'dragonruby.png', args.state.tick_count % 360]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [610, 470, 128, 101, 'dragonruby.png', args.state.tick_count % 360]
** Processing line: ~ args.outputs.sprites << [760, 470, 128, 101, 'dragonruby.png', 0, args.state.tick_count % 255]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [760, 470, 128, 101, 'dragonruby.png', 0, args.state.tick_count % 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Rendering Basics - Sounds - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rendering Basics - Sounds - 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/01_rendering_basics/05_sounds/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/01_rendering_basics/05_sounds/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs Listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs Listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - sample: Chooses random element from array.~
- Inside source: true
*** True Line Result
- sample: Chooses random element from array.
** Processing line: ~ In this sample app, the target note is set by taking a sample from the collection~
- Inside source: true
*** True Line Result
In this sample app, the target note is set by taking a sample from the collection
** Processing line: ~ of available notes.~
- Inside source: true
*** True Line Result
of available notes.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~ - args.grid.(left|right|top|bottom): Pixel value for the boundaries of the virtual~
- Inside source: true
*** True Line Result
- args.grid.(left|right|top|bottom): Pixel value for the boundaries of the virtual
** Processing line: ~ 720 p screen (Dragon Ruby Game Toolkits's virtual resolution is always 1280x720).~
- Inside source: true
*** True Line Result
720 p screen (Dragon Ruby Game Toolkits's virtual resolution is always 1280x720).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
- Inside source: true
*** True Line Result
- args.state.new_entity: Used when we want to create a new object, like a sprite or button.
** Processing line: ~ For example, if we want to create a new button, we would declare it as a new entity and~
- Inside source: true
*** True Line Result
For example, if we want to create a new button, we would declare it as a new entity and
** Processing line: ~ then define its properties.~
- Inside source: true
*** True Line Result
then define its properties.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
- Inside source: true
*** True Line Result
- String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
- Inside source: true
*** True Line Result
as Ruby code, and the placeholder is replaced with its corresponding value or result.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. The values generate a label.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
- Inside source: true
*** True Line Result
- reject: Removes elements from a collection if they meet certain requirements.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - first: Returns the first element of an array.~
- Inside source: true
*** True Line Result
- first: Returns the first element of an array.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - inside_rect: Returns true or false depending on if the point is inside the rect.~
- Inside source: true
*** True Line Result
- inside_rect: Returns true or false depending on if the point is inside the rect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - to_sym: Returns symbol corresponding to string. Will create a symbol if it does~
- Inside source: true
*** True Line Result
- to_sym: Returns symbol corresponding to string. Will create a symbol if it does
** Processing line: ~ not already exist.~
- Inside source: true
*** True Line Result
not already exist.
** 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: ~ # This sample app allows users to test their musical skills by matching the piano sound that plays in each~
- Inside source: true
*** True Line Result
# This sample app allows users to test their musical skills by matching the piano sound that plays in each
** Processing line: ~ # level to the correct note.~
- Inside source: true
*** True Line Result
# level to the correct note.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs all the methods necessary for the game to function properly.~
- Inside source: true
*** True Line Result
# Runs all the methods necessary for the game to function properly.
** 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: ~ calc args~
- Inside source: true
*** True Line Result
calc args
** Processing line: ~ input_mouse args~
- Inside source: true
*** True Line Result
input_mouse args
** Processing line: ~ tick_instructions args, "Sample app shows how to play sounds. args.outputs.sounds << \"path_to_wav.wav\""~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to play sounds. args.outputs.sounds << \"path_to_wav.wav\""
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets default values and creates empty collections~
- Inside source: true
*** True Line Result
# Sets default values and creates empty collections
** Processing line: ~ # Initialization happens in the first frame only~
- Inside source: true
*** True Line Result
# Initialization happens in the first frame only
** Processing line: ~ def defaults _~
- Inside source: true
*** True Line Result
def defaults _
** Processing line: ~ _.state.notes ||= []~
- Inside source: true
*** True Line Result
_.state.notes ||= []
** Processing line: ~ _.state.click_feedbacks ||= []~
- Inside source: true
*** True Line Result
_.state.click_feedbacks ||= []
** Processing line: ~ _.state.current_level ||= 1~
- Inside source: true
*** True Line Result
_.state.current_level ||= 1
** Processing line: ~ _.state.times_wrong ||= 0 # when game starts, user hasn't guessed wrong yet~
- Inside source: true
*** True Line Result
_.state.times_wrong ||= 0 # when game starts, user hasn't guessed wrong yet
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Uses a label to display current level, and shows the score~
- Inside source: true
*** True Line Result
# Uses a label to display current level, and shows the score
** Processing line: ~ # Creates a button to play the sample note, and displays the available notes that could be a potential match~
- Inside source: true
*** True Line Result
# Creates a button to play the sample note, and displays the available notes that could be a potential match
** Processing line: ~ def render _~
- Inside source: true
*** True Line Result
def render _
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # grid.w_half positions the label in the horizontal center of the screen.~
- Inside source: true
*** True Line Result
# grid.w_half positions the label in the horizontal center of the screen.
** Processing line: ~ _.outputs.labels << [_.grid.w_half, _.grid.top.shift_down(40), "Hole #{_.state.current_level} of 9", 0, 1, 0, 0, 0]~
- Inside source: true
*** True Line Result
_.outputs.labels << [_.grid.w_half, _.grid.top.shift_down(40), "Hole #{_.state.current_level} of 9", 0, 1, 0, 0, 0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ render_score _ # shows score on screen~
- Inside source: true
*** True Line Result
render_score _ # shows score on screen
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if _.state.game_over # if game is over, a "play again" button is shown~
- Inside source: true
*** True Line Result
if _.state.game_over # if game is over, a "play again" button is shown
** Processing line: ~ # Calculations ensure that Play Again label is displayed in center of border~
- Inside source: true
*** True Line Result
# Calculations ensure that Play Again label is displayed in center of border
** Processing line: ~ # Remove calculations from y parameters and see what happens to border and label placement~
- Inside source: true
*** True Line Result
# Remove calculations from y parameters and see what happens to border and label placement
** Processing line: ~ _.state.play_again_border ||= _.state.with_meta([560, _.grid.h * 3 / 4 - 40, 160, 60], 'again') # array definition, text/title~
- Inside source: true
*** True Line Result
_.state.play_again_border ||= _.state.with_meta([560, _.grid.h * 3 / 4 - 40, 160, 60], 'again') # array definition, text/title
** Processing line: ~ _.outputs.labels << [_.grid.w_half, _.grid.h * 3 / 4, "Play Again", 0, 1, 0, 0, 0] # outputs label~
- Inside source: true
*** True Line Result
_.outputs.labels << [_.grid.w_half, _.grid.h * 3 / 4, "Play Again", 0, 1, 0, 0, 0] # outputs label
** Processing line: ~ _.outputs.borders << _.state.play_again_border # outputs border~
- Inside source: true
*** True Line Result
_.outputs.borders << _.state.play_again_border # outputs border
** Processing line: ~ else # otherwise, if game is not over~
- Inside source: true
*** True Line Result
else # otherwise, if game is not over
** Processing line: ~ # Calculations ensure that label appears in center of border~
- Inside source: true
*** True Line Result
# Calculations ensure that label appears in center of border
** Processing line: ~ _.state.play_note_border ||= _.state.with_meta([560, _.grid.h * 3 / 4 - 40, 160, 60], 'play') # array definition, text/title~
- Inside source: true
*** True Line Result
_.state.play_note_border ||= _.state.with_meta([560, _.grid.h * 3 / 4 - 40, 160, 60], 'play') # array definition, text/title
** Processing line: ~ _.outputs.labels << [_.grid.w_half, _.grid.h * 3 / 4, "Play Note ##{_.state.current_level}", 0, 1, 0, 0, 0] # outputs label~
- Inside source: true
*** True Line Result
_.outputs.labels << [_.grid.w_half, _.grid.h * 3 / 4, "Play Note ##{_.state.current_level}", 0, 1, 0, 0, 0] # outputs label
** Processing line: ~ _.outputs.borders << _.state.play_note_border # outputs border~
- Inside source: true
*** True Line Result
_.outputs.borders << _.state.play_note_border # outputs border
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return if _.state.game_over # return if game is over~
- Inside source: true
*** True Line Result
return if _.state.game_over # return if game is over
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ _.outputs.labels << [_.grid.w_half, 400, "I think the note is a(n)...", 0, 1, 0, 0, 0] # outputs label~
- Inside source: true
*** True Line Result
_.outputs.labels << [_.grid.w_half, 400, "I think the note is a(n)...", 0, 1, 0, 0, 0] # outputs label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Shows all of the available notes that can be potential matches.~
- Inside source: true
*** True Line Result
# Shows all of the available notes that can be potential matches.
** Processing line: ~ available_notes.each_with_index do |note, i|~
- Inside source: true
*** True Line Result
available_notes.each_with_index do |note, i|
** Processing line: ~ _.state.notes[i] ||= piano_button(_, note, i + 1) # calls piano_button method on each note (creates label and border)~
- Inside source: true
*** True Line Result
_.state.notes[i] ||= piano_button(_, note, i + 1) # calls piano_button method on each note (creates label and border)
** Processing line: ~ _.outputs.labels << _.state.notes[i].label # outputs note on screen with a label and a border~
- Inside source: true
*** True Line Result
_.outputs.labels << _.state.notes[i].label # outputs note on screen with a label and a border
** Processing line: ~ _.outputs.borders << _.state.notes[i].border~
- Inside source: true
*** True Line Result
_.outputs.borders << _.state.notes[i].border
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Shows whether or not the user is correct by filling the screen with either red or green~
- Inside source: true
*** True Line Result
# Shows whether or not the user is correct by filling the screen with either red or green
** Processing line: ~ _.outputs.solids << _.state.click_feedbacks.map { |c| c.solid }~
- Inside source: true
*** True Line Result
_.outputs.solids << _.state.click_feedbacks.map { |c| c.solid }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Shows the score (number of times the user guesses wrong) onto the screen using labels.~
- Inside source: true
*** True Line Result
# Shows the score (number of times the user guesses wrong) onto the screen using labels.
** Processing line: ~ def render_score _~
- Inside source: true
*** True Line Result
def render_score _
** Processing line: ~ if _.state.times_wrong == 0 # if the user has guessed wrong zero times, the score is par~
- Inside source: true
*** True Line Result
if _.state.times_wrong == 0 # if the user has guessed wrong zero times, the score is par
** Processing line: ~ _.outputs.labels << [_.grid.w_half, _.grid.top.shift_down(80), "Score: PAR", 0, 1, 0, 0, 0]~
- Inside source: true
*** True Line Result
_.outputs.labels << [_.grid.w_half, _.grid.top.shift_down(80), "Score: PAR", 0, 1, 0, 0, 0]
** Processing line: ~ else # otherwise, number of times the user has guessed wrong is shown~
- Inside source: true
*** True Line Result
else # otherwise, number of times the user has guessed wrong is shown
** Processing line: ~ _.outputs.labels << [_.grid.w_half, _.grid.top.shift_down(80), "Score: +#{_.state.times_wrong}", 0, 1, 0, 0, 0] # shows score using string interpolation~
- Inside source: true
*** True Line Result
_.outputs.labels << [_.grid.w_half, _.grid.top.shift_down(80), "Score: +#{_.state.times_wrong}", 0, 1, 0, 0, 0] # shows score using string interpolation
** 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: ~ # Sets the target note for the level and performs calculations on click_feedbacks.~
- Inside source: true
*** True Line Result
# Sets the target note for the level and performs calculations on click_feedbacks.
** Processing line: ~ def calc _~
- Inside source: true
*** True Line Result
def calc _
** Processing line: ~ _.state.target_note ||= available_notes.sample # chooses a note from available_notes collection as target note~
- Inside source: true
*** True Line Result
_.state.target_note ||= available_notes.sample # chooses a note from available_notes collection as target note
** Processing line: ~ _.state.click_feedbacks.each { |c| c.solid[-1] -= 5 } # remove this line and solid color will remain on screen indefinitely~
- Inside source: true
*** True Line Result
_.state.click_feedbacks.each { |c| c.solid[-1] -= 5 } # remove this line and solid color will remain on screen indefinitely
** Processing line: ~ # comment this line out and the solid color will keep flashing on screen instead of being removed from click_feedbacks collection~
- Inside source: true
*** True Line Result
# comment this line out and the solid color will keep flashing on screen instead of being removed from click_feedbacks collection
** Processing line: ~ _.state.click_feedbacks.reject! { |c| c.solid[-1] <= 0 }~
- Inside source: true
*** True Line Result
_.state.click_feedbacks.reject! { |c| c.solid[-1] <= 0 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Uses input from the user to play the target note, as well as the other notes that could be a potential match.~
- Inside source: true
*** True Line Result
# Uses input from the user to play the target note, as well as the other notes that could be a potential match.
** Processing line: ~ def input_mouse _~
- Inside source: true
*** True Line Result
def input_mouse _
** Processing line: ~ return unless _.inputs.mouse.click # return unless the mouse is clicked~
- Inside source: true
*** True Line Result
return unless _.inputs.mouse.click # return unless the mouse is clicked
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # finds button that was clicked by user~
- Inside source: true
*** True Line Result
# finds button that was clicked by user
** Processing line: ~ button_clicked = _.outputs.borders.find_all do |b| # go through borders collection to find all borders that meet requirements~
- Inside source: true
*** True Line Result
button_clicked = _.outputs.borders.find_all do |b| # go through borders collection to find all borders that meet requirements
** Processing line: ~ _.inputs.mouse.click.point.inside_rect? b # find button border that mouse was clicked inside of~
- Inside source: true
*** True Line Result
_.inputs.mouse.click.point.inside_rect? b # find button border that mouse was clicked inside of
** Processing line: ~ end.reject {|b| !_.state.meta(b)}.first # reject, return first element~
- Inside source: true
*** True Line Result
end.reject {|b| !_.state.meta(b)}.first # reject, return first element
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless button_clicked # return unless button_clicked as a value (a button was clicked)~
- Inside source: true
*** True Line Result
return unless button_clicked # return unless button_clicked as a value (a button was clicked)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queue_click_feedback _, # calls queue_click_feedback method on the button that was clicked~
- Inside source: true
*** True Line Result
queue_click_feedback _, # calls queue_click_feedback method on the button that was clicked
** Processing line: ~ button_clicked.x,~
- Inside source: true
*** True Line Result
button_clicked.x,
** Processing line: ~ button_clicked.y,~
- Inside source: true
*** True Line Result
button_clicked.y,
** Processing line: ~ button_clicked.w,~
- Inside source: true
*** True Line Result
button_clicked.w,
** Processing line: ~ button_clicked.h,~
- Inside source: true
*** True Line Result
button_clicked.h,
** Processing line: ~ 150, 100, 200 # sets color of button to shade of purple~
- Inside source: true
*** True Line Result
150, 100, 200 # sets color of button to shade of purple
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if _.state.meta(button_clicked) == 'play' # if "play note" button is pressed~
- Inside source: true
*** True Line Result
if _.state.meta(button_clicked) == 'play' # if "play note" button is pressed
** Processing line: ~ _.outputs.sounds << "sounds/#{_.state.target_note}.wav" # sound of target note is output~
- Inside source: true
*** True Line Result
_.outputs.sounds << "sounds/#{_.state.target_note}.wav" # sound of target note is output
** Processing line: ~ elsif _.state.meta(button_clicked) == 'again' # if "play game again" button is pressed~
- Inside source: true
*** True Line Result
elsif _.state.meta(button_clicked) == 'again' # if "play game again" button is pressed
** Processing line: ~ _.state.target_note = nil # no target note~
- Inside source: true
*** True Line Result
_.state.target_note = nil # no target note
** Processing line: ~ _.state.current_level = 1 # starts at level 1 again~
- Inside source: true
*** True Line Result
_.state.current_level = 1 # starts at level 1 again
** Processing line: ~ _.state.times_wrong = 0 # starts off with 0 wrong guesses~
- Inside source: true
*** True Line Result
_.state.times_wrong = 0 # starts off with 0 wrong guesses
** Processing line: ~ _.state.game_over = false # the game is not over (because it has just been restarted)~
- Inside source: true
*** True Line Result
_.state.game_over = false # the game is not over (because it has just been restarted)
** Processing line: ~ else # otherwise if neither of those buttons were pressed~
- Inside source: true
*** True Line Result
else # otherwise if neither of those buttons were pressed
** Processing line: ~ _.outputs.sounds << "sounds/#{_.state.meta(button_clicked)}.wav" # sound of clicked note is played~
- Inside source: true
*** True Line Result
_.outputs.sounds << "sounds/#{_.state.meta(button_clicked)}.wav" # sound of clicked note is played
** Processing line: ~ if _.state.meta(button_clicked).to_sym == _.state.target_note # if clicked note is target note~
- Inside source: true
*** True Line Result
if _.state.meta(button_clicked).to_sym == _.state.target_note # if clicked note is target note
** Processing line: ~ _.state.target_note = nil # target note is emptied~
- Inside source: true
*** True Line Result
_.state.target_note = nil # target note is emptied
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if _.state.current_level < 9 # if game hasn't reached level 9~
- Inside source: true
*** True Line Result
if _.state.current_level < 9 # if game hasn't reached level 9
** Processing line: ~ _.state.current_level += 1 # game goes to next level~
- Inside source: true
*** True Line Result
_.state.current_level += 1 # game goes to next level
** Processing line: ~ else # otherwise, if game has reached level 9~
- Inside source: true
*** True Line Result
else # otherwise, if game has reached level 9
** Processing line: ~ _.state.game_over = true # the game is over~
- Inside source: true
*** True Line Result
_.state.game_over = true # the game is over
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queue_click_feedback _, 0, 0, _.grid.w, _.grid.h, 100, 200, 100 # green shown if user guesses correctly~
- Inside source: true
*** True Line Result
queue_click_feedback _, 0, 0, _.grid.w, _.grid.h, 100, 200, 100 # green shown if user guesses correctly
** Processing line: ~ else # otherwise, if clicked note is not target note~
- Inside source: true
*** True Line Result
else # otherwise, if clicked note is not target note
** Processing line: ~ _.state.times_wrong += 1 # increments times user guessed wrong~
- Inside source: true
*** True Line Result
_.state.times_wrong += 1 # increments times user guessed wrong
** Processing line: ~ queue_click_feedback _, 0, 0, _.grid.w, _.grid.h, 200, 100, 100 # red shown is user guesses wrong~
- Inside source: true
*** True Line Result
queue_click_feedback _, 0, 0, _.grid.w, _.grid.h, 200, 100, 100 # red shown is user guesses wrong
** 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: ~ # Creates a collection of all of the available notes as symbols~
- Inside source: true
*** True Line Result
# Creates a collection of all of the available notes as symbols
** Processing line: ~ def available_notes~
- Inside source: true
*** True Line Result
def available_notes
** Processing line: ~ [:C3, :D3, :E3, :F3, :G3, :A3, :B3, :C4]~
- Inside source: true
*** True Line Result
[:C3, :D3, :E3, :F3, :G3, :A3, :B3, :C4]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates buttons for each note, and sets a label (the note's name) and border for each note's button.~
- Inside source: true
*** True Line Result
# Creates buttons for each note, and sets a label (the note's name) and border for each note's button.
** Processing line: ~ def piano_button _, note, position~
- Inside source: true
*** True Line Result
def piano_button _, note, position
** Processing line: ~ _.state.new_entity(:button) do |b| # declares button as new entity~
- Inside source: true
*** True Line Result
_.state.new_entity(:button) do |b| # declares button as new entity
** Processing line: ~ b.label = [460 + 40.mult(position), _.grid.h * 0.4, "#{note}", 0, 1, 0, 0, 0] # label definition~
- Inside source: true
*** True Line Result
b.label = [460 + 40.mult(position), _.grid.h * 0.4, "#{note}", 0, 1, 0, 0, 0] # label definition
** Processing line: ~ b.border = _.state.with_meta([460 + 40.mult(position) - 20, _.grid.h * 0.4 - 32, 40, 40], note) # border definition, text/title; 20 subtracted so label is in center of border~
- Inside source: true
*** True Line Result
b.border = _.state.with_meta([460 + 40.mult(position) - 20, _.grid.h * 0.4 - 32, 40, 40], note) # border definition, text/title; 20 subtracted so label is in center of border
** 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: ~ # Color of click feedback changes depending on what button was clicked, and whether the guess is right or wrong~
- Inside source: true
*** True Line Result
# Color of click feedback changes depending on what button was clicked, and whether the guess is right or wrong
** Processing line: ~ # If a button is clicked, the inside of button is purple (see input_mouse method)~
- Inside source: true
*** True Line Result
# If a button is clicked, the inside of button is purple (see input_mouse method)
** Processing line: ~ # If correct note is clicked, screen turns green~
- Inside source: true
*** True Line Result
# If correct note is clicked, screen turns green
** Processing line: ~ # If incorrect note is clicked, screen turns red (again, see input_mouse method)~
- Inside source: true
*** True Line Result
# If incorrect note is clicked, screen turns red (again, see input_mouse method)
** Processing line: ~ def queue_click_feedback _, x, y, w, h, *color~
- Inside source: true
*** True Line Result
def queue_click_feedback _, x, y, w, h, *color
** Processing line: ~ _.state.click_feedbacks << _.state.new_entity(:click_feedback) do |c| # declares feedback as new entity~
- Inside source: true
*** True Line Result
_.state.click_feedbacks << _.state.new_entity(:click_feedback) do |c| # declares feedback as new entity
** Processing line: ~ c.solid = [x, y, w, h, *color, 255] # sets color~
- Inside source: true
*** True Line Result
c.solid = [x, y, w, h, *color, 255] # sets color
** 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_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Input Basics - Keyboard - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Input Basics - Keyboard - 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/02_input_basics/01_keyboard/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/02_input_basics/01_keyboard/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in a previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in a previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.keyboard.key_up.KEY: The value of the properties will be set~
- Inside source: true
*** True Line Result
- args.inputs.keyboard.key_up.KEY: The value of the properties will be set
** Processing line: ~ to the frame that the key_up event occurred (the frame correlates~
- Inside source: true
*** True Line Result
to the frame that the key_up event occurred (the frame correlates
** Processing line: ~ to args.state.tick_count). Otherwise the value will be nil. For a~
- Inside source: true
*** True Line Result
to args.state.tick_count). Otherwise the value will be nil. For a
** Processing line: ~ full listing of keys, take a look at mygame/documentation/06-keyboard.md.~
- Inside source: true
*** True Line Result
full listing of keys, take a look at mygame/documentation/06-keyboard.md.
** Processing line: ~ - args.state.PROPERTY: The state property on args is a dynamic~
- Inside source: true
*** True Line Result
- args.state.PROPERTY: The state property on args is a dynamic
** Processing line: ~ structure. You can define ANY property here with ANY type of~
- Inside source: true
*** True Line Result
structure. You can define ANY property here with ANY type of
** Processing line: ~ arbitrary nesting. Properties defined on args.state will be retained~
- Inside source: true
*** True Line Result
arbitrary nesting. Properties defined on args.state will be retained
** Processing line: ~ across frames. If you attempt access a property that doesn't exist~
- Inside source: true
*** True Line Result
across frames. If you attempt access a property that doesn't exist
** Processing line: ~ on args.state, it will simply return nil (no exception will be thrown).~
- Inside source: true
*** True Line Result
on args.state, it will simply return nil (no exception will be thrown).
** 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: ~ # Along with outputs, inputs are also an essential part of video game development~
- Inside source: true
*** True Line Result
# Along with outputs, inputs are also an essential part of video game development
** Processing line: ~ # DragonRuby can take input from keyboards, mouse, and controllers.~
- Inside source: true
*** True Line Result
# DragonRuby can take input from keyboards, mouse, and controllers.
** Processing line: ~ # This sample app will cover keyboard input.~
- Inside source: true
*** True Line Result
# This sample app will cover keyboard input.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # args.inputs.keyboard.key_up.a will check to see if the a key has been pressed~
- Inside source: true
*** True Line Result
# args.inputs.keyboard.key_up.a will check to see if the a key has been pressed
** Processing line: ~ # This will work with the other keys as well~
- Inside source: true
*** True Line Result
# This will work with the other keys as well
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Sample app shows how keyboard events are registered and accessed.", 360~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how keyboard events are registered and accessed.", 360
** Processing line: ~ # Notice how small_font accounts for all the remaining parameters~
- Inside source: true
*** True Line Result
# Notice how small_font accounts for all the remaining parameters
** Processing line: ~ args.outputs.labels << [460, row_to_px(args, 0), "Current game time: #{args.state.tick_count}", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [460, row_to_px(args, 0), "Current game time: #{args.state.tick_count}", small_font]
** Processing line: ~ args.outputs.labels << [460, row_to_px(args, 2), "Keyboard input: args.inputs.keyboard.key_up.h", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [460, row_to_px(args, 2), "Keyboard input: args.inputs.keyboard.key_up.h", small_font]
** Processing line: ~ args.outputs.labels << [460, row_to_px(args, 3), "Press \"h\" on the keyboard.", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [460, row_to_px(args, 3), "Press \"h\" on the keyboard.", small_font]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Input on a specifc key can be found through args.inputs.keyboard.key_up followed by the key~
- Inside source: true
*** True Line Result
# Input on a specifc key can be found through args.inputs.keyboard.key_up followed by the key
** Processing line: ~ if args.inputs.keyboard.key_up.h~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_up.h
** Processing line: ~ args.state.h_pressed_at = args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.h_pressed_at = args.state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This code simplifies to if args.state.h_pressed_at has not been initialized, set it to false~
- Inside source: true
*** True Line Result
# This code simplifies to if args.state.h_pressed_at has not been initialized, set it to false
** Processing line: ~ args.state.h_pressed_at ||= false~
- Inside source: true
*** True Line Result
args.state.h_pressed_at ||= false
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.h_pressed_at~
- Inside source: true
*** True Line Result
if args.state.h_pressed_at
** Processing line: ~ args.outputs.labels << [460, row_to_px(args, 4), "\"h\" was pressed at time: #{args.state.h_pressed_at}", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [460, row_to_px(args, 4), "\"h\" was pressed at time: #{args.state.h_pressed_at}", small_font]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.outputs.labels << [460, row_to_px(args, 4), "\"h\" has never been pressed.", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [460, row_to_px(args, 4), "\"h\" has never been pressed.", small_font]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ tick_help_text args~
- Inside source: true
*** True Line Result
tick_help_text args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def small_font~
- Inside source: true
*** True Line Result
def small_font
** Processing line: ~ # This method provides some values for the construction of labels~
- Inside source: true
*** True Line Result
# This method provides some values for the construction of labels
** Processing line: ~ # Specifically, Size, Alignment, & RGBA~
- Inside source: true
*** True Line Result
# Specifically, Size, Alignment, & RGBA
** Processing line: ~ # This makes it so that custom parameters don't have to be repeatedly typed.~
- Inside source: true
*** True Line Result
# This makes it so that custom parameters don't have to be repeatedly typed.
** Processing line: ~ # Additionally "small_font" provides programmers with more information than some numbers~
- Inside source: true
*** True Line Result
# Additionally "small_font" provides programmers with more information than some numbers
** Processing line: ~ [-2, 0, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
[-2, 0, 0, 0, 0, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def row_to_px args, row_number~
- Inside source: true
*** True Line Result
def row_to_px args, row_number
** Processing line: ~ # This takes a row_number and converts it to pixels DragonRuby understands.~
- Inside source: true
*** True Line Result
# This takes a row_number and converts it to pixels DragonRuby understands.
** Processing line: ~ # Row 0 starts 5 units below the top of the grid~
- Inside source: true
*** True Line Result
# Row 0 starts 5 units below the top of the grid
** Processing line: ~ # Each row afterward is 20 units lower~
- Inside source: true
*** True Line Result
# Each row afterward is 20 units lower
** Processing line: ~ args.grid.top.shift_down(5).shift_down(20 * row_number)~
- Inside source: true
*** True Line Result
args.grid.top.shift_down(5).shift_down(20 * row_number)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Don't worry about understanding the code within this method just yet.~
- Inside source: true
*** True Line Result
# Don't worry about understanding the code within this method just yet.
** Processing line: ~ # This method shows you the help text within the game.~
- Inside source: true
*** True Line Result
# This method shows you the help text within the game.
** Processing line: ~ def tick_help_text args~
- Inside source: true
*** True Line Result
def tick_help_text args
** Processing line: ~ return unless args.state.h_pressed_at~
- Inside source: true
*** True Line Result
return unless args.state.h_pressed_at
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.key_value_history ||= {}~
- Inside source: true
*** True Line Result
args.state.key_value_history ||= {}
** Processing line: ~ args.state.key_down_value_history ||= {}~
- Inside source: true
*** True Line Result
args.state.key_down_value_history ||= {}
** Processing line: ~ args.state.key_held_value_history ||= {}~
- Inside source: true
*** True Line Result
args.state.key_held_value_history ||= {}
** Processing line: ~ args.state.key_up_value_history ||= {}~
- Inside source: true
*** True Line Result
args.state.key_up_value_history ||= {}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if (args.inputs.keyboard.key_down.truthy_keys.length > 0 ||~
- Inside source: true
*** True Line Result
if (args.inputs.keyboard.key_down.truthy_keys.length > 0 ||
** Processing line: ~ args.inputs.keyboard.key_held.truthy_keys.length > 0 ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_held.truthy_keys.length > 0 ||
** Processing line: ~ args.inputs.keyboard.key_up.truthy_keys.length > 0)~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_up.truthy_keys.length > 0)
** Processing line: ~ args.state.help_available = true~
- Inside source: true
*** True Line Result
args.state.help_available = true
** Processing line: ~ args.state.no_activity_debounce = nil~
- Inside source: true
*** True Line Result
args.state.no_activity_debounce = nil
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.state.no_activity_debounce ||= 5.seconds~
- Inside source: true
*** True Line Result
args.state.no_activity_debounce ||= 5.seconds
** Processing line: ~ args.state.no_activity_debounce -= 1~
- Inside source: true
*** True Line Result
args.state.no_activity_debounce -= 1
** Processing line: ~ if args.state.no_activity_debounce <= 0~
- Inside source: true
*** True Line Result
if args.state.no_activity_debounce <= 0
** Processing line: ~ args.state.help_available = false~
- Inside source: true
*** True Line Result
args.state.help_available = false
** Processing line: ~ args.state.key_value_history = {}~
- Inside source: true
*** True Line Result
args.state.key_value_history = {}
** Processing line: ~ args.state.key_down_value_history = {}~
- Inside source: true
*** True Line Result
args.state.key_down_value_history = {}
** Processing line: ~ args.state.key_held_value_history = {}~
- Inside source: true
*** True Line Result
args.state.key_held_value_history = {}
** Processing line: ~ args.state.key_up_value_history = {}~
- Inside source: true
*** True Line Result
args.state.key_up_value_history = {}
** 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: ~ args.outputs.labels << [10, row_to_px(args, 6), "Advanced Help:", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [10, row_to_px(args, 6), "Advanced Help:", small_font]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if !args.state.help_available~
- Inside source: true
*** True Line Result
if !args.state.help_available
** Processing line: ~ args.outputs.labels << [10, row_to_px(args, 7), "Press a key and I'll show code to access the key and what value will be returned if you used the code.", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [10, row_to_px(args, 7), "Press a key and I'll show code to access the key and what value will be returned if you used the code.", small_font]
** 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: ~ args.outputs.labels << [10 , row_to_px(args, 7), "args.inputs.keyboard", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [10 , row_to_px(args, 7), "args.inputs.keyboard", small_font]
** Processing line: ~ args.outputs.labels << [330, row_to_px(args, 7), "args.inputs.keyboard.key_down", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [330, row_to_px(args, 7), "args.inputs.keyboard.key_down", small_font]
** Processing line: ~ args.outputs.labels << [650, row_to_px(args, 7), "args.inputs.keyboard.key_held", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [650, row_to_px(args, 7), "args.inputs.keyboard.key_held", small_font]
** Processing line: ~ args.outputs.labels << [990, row_to_px(args, 7), "args.inputs.keyboard.key_up", small_font]~
- Inside source: true
*** True Line Result
args.outputs.labels << [990, row_to_px(args, 7), "args.inputs.keyboard.key_up", small_font]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ fill_history args, :key_value_history, :down_or_held, nil~
- Inside source: true
*** True Line Result
fill_history args, :key_value_history, :down_or_held, nil
** Processing line: ~ fill_history args, :key_down_value_history, :down, :key_down~
- Inside source: true
*** True Line Result
fill_history args, :key_down_value_history, :down, :key_down
** Processing line: ~ fill_history args, :key_held_value_history, :held, :key_held~
- Inside source: true
*** True Line Result
fill_history args, :key_held_value_history, :held, :key_held
** Processing line: ~ fill_history args, :key_up_value_history, :up, :key_up~
- Inside source: true
*** True Line Result
fill_history args, :key_up_value_history, :up, :key_up
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ render_help_labels args, :key_value_history, :down_or_held, nil, 10~
- Inside source: true
*** True Line Result
render_help_labels args, :key_value_history, :down_or_held, nil, 10
** Processing line: ~ render_help_labels args, :key_down_value_history, :down, :key_down, 330~
- Inside source: true
*** True Line Result
render_help_labels args, :key_down_value_history, :down, :key_down, 330
** Processing line: ~ render_help_labels args, :key_held_value_history, :held, :key_held, 650~
- Inside source: true
*** True Line Result
render_help_labels args, :key_held_value_history, :held, :key_held, 650
** Processing line: ~ render_help_labels args, :key_up_value_history, :up, :key_up, 990~
- Inside source: true
*** True Line Result
render_help_labels args, :key_up_value_history, :up, :key_up, 990
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def fill_history args, history_key, state_key, keyboard_method~
- Inside source: true
*** True Line Result
def fill_history args, history_key, state_key, keyboard_method
** Processing line: ~ fill_single_history args, history_key, state_key, keyboard_method, :raw_key~
- Inside source: true
*** True Line Result
fill_single_history args, history_key, state_key, keyboard_method, :raw_key
** Processing line: ~ fill_single_history args, history_key, state_key, keyboard_method, :char~
- Inside source: true
*** True Line Result
fill_single_history args, history_key, state_key, keyboard_method, :char
** Processing line: ~ args.inputs.keyboard.keys[state_key].each do |key_name|~
- Inside source: true
*** True Line Result
args.inputs.keyboard.keys[state_key].each do |key_name|
** Processing line: ~ fill_single_history args, history_key, state_key, keyboard_method, key_name~
- Inside source: true
*** True Line Result
fill_single_history args, history_key, state_key, keyboard_method, key_name
** 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 fill_single_history args, history_key, state_key, keyboard_method, key_name~
- Inside source: true
*** True Line Result
def fill_single_history args, history_key, state_key, keyboard_method, key_name
** Processing line: ~ current_value = args.inputs.keyboard.send(key_name)~
- Inside source: true
*** True Line Result
current_value = args.inputs.keyboard.send(key_name)
** Processing line: ~ if keyboard_method~
- Inside source: true
*** True Line Result
if keyboard_method
** Processing line: ~ current_value = args.inputs.keyboard.send(keyboard_method).send(key_name)~
- Inside source: true
*** True Line Result
current_value = args.inputs.keyboard.send(keyboard_method).send(key_name)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ args.state.as_hash[history_key][key_name] ||= []~
- Inside source: true
*** True Line Result
args.state.as_hash[history_key][key_name] ||= []
** Processing line: ~ args.state.as_hash[history_key][key_name] << current_value~
- Inside source: true
*** True Line Result
args.state.as_hash[history_key][key_name] << current_value
** Processing line: ~ args.state.as_hash[history_key][key_name] = args.state.as_hash[history_key][key_name].reverse.uniq.take(3).reverse~
- Inside source: true
*** True Line Result
args.state.as_hash[history_key][key_name] = args.state.as_hash[history_key][key_name].reverse.uniq.take(3).reverse
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_help_labels args, history_key, state_key, keyboard_method, x~
- Inside source: true
*** True Line Result
def render_help_labels args, history_key, state_key, keyboard_method, x
** Processing line: ~ idx = 8~
- Inside source: true
*** True Line Result
idx = 8
** Processing line: ~ args.outputs.labels << args.state~
- Inside source: true
*** True Line Result
args.outputs.labels << args.state
** Processing line: ~ .as_hash[history_key]~
- Inside source: true
*** True Line Result
.as_hash[history_key]
** Processing line: ~ .keys~
- Inside source: true
*** True Line Result
.keys
** Processing line: ~ .reverse~
- Inside source: true
*** True Line Result
.reverse
** Processing line: ~ .map~
- Inside source: true
*** True Line Result
.map
** Processing line: ~ .with_index do |k, i|~
- Inside source: true
*** True Line Result
.with_index do |k, i|
** Processing line: ~ v = args.state.as_hash[history_key][k]~
- Inside source: true
*** True Line Result
v = args.state.as_hash[history_key][k]
** Processing line: ~ current_value = args.inputs.keyboard.send(k)~
- Inside source: true
*** True Line Result
current_value = args.inputs.keyboard.send(k)
** Processing line: ~ if keyboard_method~
- Inside source: true
*** True Line Result
if keyboard_method
** Processing line: ~ current_value = args.inputs.keyboard.send(keyboard_method).send(k)~
- Inside source: true
*** True Line Result
current_value = args.inputs.keyboard.send(keyboard_method).send(k)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ idx += 2~
- Inside source: true
*** True Line Result
idx += 2
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [x, row_to_px(args, idx - 2),~
- Inside source: true
*** True Line Result
[x, row_to_px(args, idx - 2),
** Processing line: ~ " .#{k} is #{current_value || "nil"}",~
- Inside source: true
*** True Line Result
" .#{k} is #{current_value || "nil"}",
** Processing line: ~ small_font],~
- Inside source: true
*** True Line Result
small_font],
** Processing line: ~ [x, row_to_px(args, idx - 1),~
- Inside source: true
*** True Line Result
[x, row_to_px(args, idx - 1),
** Processing line: ~ " was #{v}",~
- Inside source: true
*** True Line Result
" was #{v}",
** Processing line: ~ small_font]~
- Inside source: true
*** True Line Result
small_font]
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Input Basics - Mouse - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Input Basics - Mouse - 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/02_input_basics/02_mouse/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/02_input_basics/02_mouse/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs that haven't been encountered in a previous sample apps:~
- Inside source: true
*** True Line Result
APIs that haven't been encountered in a previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.mouse.click: This property will be set if the mouse was clicked.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click: This property will be set if the mouse was clicked.
** Processing line: ~ - args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.
** Processing line: ~ - args.inputs.mouse.click.point.created_at: The frame the mouse click occurred in.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click.point.created_at: The frame the mouse click occurred in.
** Processing line: ~ - args.inputs.mouse.click.point.created_at_elapsed: How many frames have passed~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click.point.created_at_elapsed: How many frames have passed
** Processing line: ~ since the click event.~
- Inside source: true
*** True Line Result
since the click event.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminder:~
- Inside source: true
*** True Line Result
Reminder:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.PROPERTY: The state property on args is a dynamic~
- Inside source: true
*** True Line Result
- args.state.PROPERTY: The state property on args is a dynamic
** Processing line: ~ structure. You can define ANY property here with ANY type of~
- Inside source: true
*** True Line Result
structure. You can define ANY property here with ANY type of
** Processing line: ~ arbitrary nesting. Properties defined on args.state will be retained~
- Inside source: true
*** True Line Result
arbitrary nesting. Properties defined on args.state will be retained
** Processing line: ~ across frames. If you attempt access a property that doesn't exist~
- Inside source: true
*** True Line Result
across frames. If you attempt access a property that doesn't exist
** Processing line: ~ on args.state, it will simply return nil (no exception will be thrown).~
- Inside source: true
*** True Line Result
on args.state, it will simply return nil (no exception will be thrown).
** 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: ~ # This code demonstrates DragonRuby mouse input~
- Inside source: true
*** True Line Result
# This code demonstrates DragonRuby mouse input
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # To see if the a mouse click occurred~
- Inside source: true
*** True Line Result
# To see if the a mouse click occurred
** Processing line: ~ # Use args.inputs.mouse.click~
- Inside source: true
*** True Line Result
# Use args.inputs.mouse.click
** Processing line: ~ # Which returns a boolean~
- Inside source: true
*** True Line Result
# Which returns a boolean
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # To see where a mouse click occurred~
- Inside source: true
*** True Line Result
# To see where a mouse click occurred
** Processing line: ~ # Use args.inputs.mouse.click.point.x AND~
- Inside source: true
*** True Line Result
# Use args.inputs.mouse.click.point.x AND
** Processing line: ~ # args.inputs.mouse.click.point.y~
- Inside source: true
*** True Line Result
# args.inputs.mouse.click.point.y
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # To see which frame the click occurred~
- Inside source: true
*** True Line Result
# To see which frame the click occurred
** Processing line: ~ # Use args.inputs.mouse.click.created_at~
- Inside source: true
*** True Line Result
# Use args.inputs.mouse.click.created_at
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # To see how many frames its been since the click occurred~
- 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~
- Inside source: true
*** True Line Result
# Use args.inputs.mouse.click.creat_at_elapsed
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Saving the click in args.state can be quite useful~
- Inside source: true
*** True Line Result
# Saving the click in args.state can be quite useful
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Sample app shows how mouse events are registered and how to measure elapsed time."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how mouse events are registered and how to measure elapsed time."
** Processing line: ~ x = 460~
- Inside source: true
*** True Line Result
x = 460
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << small_label(args, x, 11, "Mouse input: args.inputs.mouse")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 11, "Mouse input: args.inputs.mouse")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.mouse.click~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click
** Processing line: ~ args.state.last_mouse_click = args.inputs.mouse.click~
- Inside source: true
*** True Line Result
args.state.last_mouse_click = args.inputs.mouse.click
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.last_mouse_click~
- Inside source: true
*** True Line Result
if args.state.last_mouse_click
** Processing line: ~ click = args.state.last_mouse_click~
- Inside source: true
*** True Line Result
click = args.state.last_mouse_click
** Processing line: ~ args.outputs.labels << small_label(args, x, 12, "Mouse click happened at: #{click.created_at}")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 12, "Mouse click happened at: #{click.created_at}")
** Processing line: ~ args.outputs.labels << small_label(args, x, 13, "Mouse clicked #{click.created_at_elapsed} ticks ago")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 13, "Mouse clicked #{click.created_at_elapsed} ticks ago")
** Processing line: ~ args.outputs.labels << small_label(args, x, 14, "Mouse click location: #{click.point.x}, #{click.point.y}")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 14, "Mouse click location: #{click.point.x}, #{click.point.y}")
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.outputs.labels << small_label(args, x, 12, "Mouse click has not occurred yet.")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 12, "Mouse click has not occurred yet.")
** Processing line: ~ args.outputs.labels << small_label(args, x, 13, "Please click mouse.")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 13, "Please click mouse.")
** 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 small_label args, x, row, message~
- Inside source: true
*** True Line Result
def small_label args, x, row, message
** Processing line: ~ # This method effectively combines the row_to_px and small_font methods~
- Inside source: true
*** True Line Result
# This method effectively combines the row_to_px and small_font methods
** Processing line: ~ # It changes the given row value to a DragonRuby pixel value~
- Inside source: true
*** True Line Result
# It changes the given row value to a DragonRuby pixel value
** Processing line: ~ # and adds the customization parameters~
- Inside source: true
*** True Line Result
# and adds the customization parameters
** Processing line: ~ [x, row_to_px(args, row), message, small_font]~
- Inside source: true
*** True Line Result
[x, row_to_px(args, row), message, small_font]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def small_font~
- Inside source: true
*** True Line Result
def small_font
** Processing line: ~ [-2, 0, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
[-2, 0, 0, 0, 0, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def row_to_px args, row_number~
- Inside source: true
*** True Line Result
def row_to_px args, row_number
** Processing line: ~ args.grid.top.shift_down(5).shift_down(20 * row_number)~
- Inside source: true
*** True Line Result
args.grid.top.shift_down(5).shift_down(20 * row_number)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Input Basics - Mouse Point To Rect - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Input Basics - Mouse Point To Rect - 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/02_input_basics/03_mouse_point_to_rect/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/02_input_basics/03_mouse_point_to_rect/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs that haven't been encountered in a previous sample apps:~
- Inside source: true
*** True Line Result
APIs that haven't been encountered in a previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputus.borders: An array. Values in this array will be rendered as~
- Inside source: true
*** True Line Result
- args.outputus.borders: An array. Values in this array will be rendered as
** Processing line: ~ unfilled rectangles on the screen.~
- Inside source: true
*** True Line Result
unfilled rectangles on the screen.
** Processing line: ~ - ARRAY#inside_rect?: An array with at least two values is considered a point. An array~
- Inside source: true
*** True Line Result
- ARRAY#inside_rect?: An array with at least two values is considered a point. An array
** Processing line: ~ with at least four values is considered a rect. The inside_rect? function returns true~
- Inside source: true
*** True Line Result
with at least four values is considered a rect. The inside_rect? function returns true
** Processing line: ~ or false depending on if the point is inside the rect.~
- Inside source: true
*** True Line Result
or false depending on if the point is inside the rect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ ```~
- Inside source: true
*** True Line Result
```
** Processing line: ~ # Point: x: 100, y: 100~
- Inside source: true
*** True Line Result
# Point: x: 100, y: 100
** Processing line: ~ # Rect: x: 0, y: 0, w: 500, h: 500~
- Inside source: true
*** True Line Result
# Rect: x: 0, y: 0, w: 500, h: 500
** Processing line: ~ # Result: true~
- Inside source: true
*** True Line Result
# Result: true
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [100, 100].inside_rect? [0, 0, 500, 500]~
- Inside source: true
*** True Line Result
[100, 100].inside_rect? [0, 0, 500, 500]
** 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: ~ # Point: x: 100, y: 100~
- Inside source: true
*** True Line Result
# Point: x: 100, y: 100
** Processing line: ~ # Rect: x: 300, y: 300, w: 100, h: 100~
- Inside source: true
*** True Line Result
# Rect: x: 300, y: 300, w: 100, h: 100
** Processing line: ~ # Result: false~
- Inside source: true
*** True Line Result
# Result: false
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [100, 100].inside_rect? [300, 300, 100, 100]~
- Inside source: true
*** True Line Result
[100, 100].inside_rect? [300, 300, 100, 100]
** Processing line: ~ ```~
- Inside source: true
*** True Line Result
```
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.mouse.click.point.created_at: The frame the mouse click occurred in.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click.point.created_at: The frame the mouse click occurred in.
** Processing line: ~ - args.inputs.mouse.click.point.created_at_elapsed: How many frames have passed~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click.point.created_at_elapsed: How many frames have passed
** Processing line: ~ since the click event.~
- Inside source: true
*** True Line Result
since the click event.
** 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: ~ # To determine whether a point is in a rect~
- Inside source: true
*** True Line Result
# To determine whether a point is in a rect
** Processing line: ~ # Use point.inside_rect? rect~
- Inside source: true
*** True Line Result
# Use point.inside_rect? rect
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This is useful to determine if a click occurred in a rect~
- Inside source: true
*** True Line Result
# This is useful to determine if a click occurred in a rect
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Sample app shows how to determing if a click happened inside a rectangle."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to determing if a click happened inside a rectangle."
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ x = 460~
- Inside source: true
*** True Line Result
x = 460
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << small_label(args, x, 15, "Click inside the blue box maybe ---->")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 15, "Click inside the blue box maybe ---->")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ box = [785, 370, 50, 50, 0, 0, 170]~
- Inside source: true
*** True Line Result
box = [785, 370, 50, 50, 0, 0, 170]
** Processing line: ~ args.outputs.borders << box~
- Inside source: true
*** True Line Result
args.outputs.borders << box
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Saves the most recent click into args.state~
- Inside source: true
*** True Line Result
# Saves the most recent click into args.state
** Processing line: ~ # Unlike the other components of args,~
- Inside source: true
*** True Line Result
# Unlike the other components of args,
** Processing line: ~ # args.state does not reset every tick.~
- Inside source: true
*** True Line Result
# args.state does not reset every tick.
** Processing line: ~ if args.inputs.mouse.click~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click
** Processing line: ~ args.state.last_mouse_click = args.inputs.mouse.click~
- Inside source: true
*** True Line Result
args.state.last_mouse_click = args.inputs.mouse.click
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.last_mouse_click~
- Inside source: true
*** True Line Result
if args.state.last_mouse_click
** Processing line: ~ if args.state.last_mouse_click.point.inside_rect? box~
- Inside source: true
*** True Line Result
if args.state.last_mouse_click.point.inside_rect? box
** Processing line: ~ args.outputs.labels << small_label(args, x, 16, "Mouse click happened *inside* the box.")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 16, "Mouse click happened *inside* the box.")
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.outputs.labels << small_label(args, x, 16, "Mouse click happened *outside* the box.")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 16, "Mouse click happened *outside* the box.")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.outputs.labels << small_label(args, x, 16, "Mouse click has not occurred yet.")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 16, "Mouse click has not occurred yet.")
** 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 small_label args, x, row, message~
- Inside source: true
*** True Line Result
def small_label args, x, row, message
** Processing line: ~ [x, row_to_px(args, row), message, small_font]~
- Inside source: true
*** True Line Result
[x, row_to_px(args, row), message, small_font]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def small_font~
- Inside source: true
*** True Line Result
def small_font
** Processing line: ~ [-2, 0, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
[-2, 0, 0, 0, 0, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def row_to_px args, row_number~
- Inside source: true
*** True Line Result
def row_to_px args, row_number
** Processing line: ~ args.grid.top.shift_down(5).shift_down(20 * row_number)~
- Inside source: true
*** True Line Result
args.grid.top.shift_down(5).shift_down(20 * row_number)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Input Basics - Mouse Rect To Rect - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Input Basics - Mouse Rect To Rect - 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/02_input_basics/04_mouse_rect_to_rect/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/02_input_basics/04_mouse_rect_to_rect/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs that haven't been encountered in a previous sample apps:~
- Inside source: true
*** True Line Result
APIs that haven't been encountered in a previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.borders: An array. Values in this array will be rendered as~
- Inside source: true
*** True Line Result
- args.outputs.borders: An array. Values in this array will be rendered as
** Processing line: ~ unfilled rectangles on the screen.~
- Inside source: true
*** True Line Result
unfilled rectangles on the screen.
** Processing line: ~ - ARRAY#intersect_rect?: An array with at least four values is~
- Inside source: true
*** True Line Result
- ARRAY#intersect_rect?: An array with at least four values is
** Processing line: ~ considered a rect. The intersect_rect? function returns true~
- Inside source: true
*** True Line Result
considered a rect. The intersect_rect? function returns true
** Processing line: ~ or false depending on if the two rectangles intersect.~
- Inside source: true
*** True Line Result
or false depending on if the two rectangles intersect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ ```~
- Inside source: true
*** True Line Result
```
** Processing line: ~ # Rect One: x: 100, y: 100, w: 100, h: 100~
- Inside source: true
*** True Line Result
# Rect One: x: 100, y: 100, w: 100, h: 100
** Processing line: ~ # Rect Two: x: 0, y: 0, w: 500, h: 500~
- Inside source: true
*** True Line Result
# Rect Two: x: 0, y: 0, w: 500, h: 500
** Processing line: ~ # Result: true~
- Inside source: true
*** True Line Result
# Result: true
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [100, 100, 100, 100].intersect_rect? [0, 0, 500, 500]~
- Inside source: true
*** True Line Result
[100, 100, 100, 100].intersect_rect? [0, 0, 500, 500]
** 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: ~ # Rect One: x: 100, y: 100, w: 10, h: 10~
- Inside source: true
*** True Line Result
# Rect One: x: 100, y: 100, w: 10, h: 10
** Processing line: ~ # Rect Two: x: 500, y: 500, w: 10, h: 10~
- Inside source: true
*** True Line Result
# Rect Two: x: 500, y: 500, w: 10, h: 10
** Processing line: ~ # Result: false~
- Inside source: true
*** True Line Result
# Result: false
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [100, 100, 10, 10].intersect_rect? [500, 500, 10, 10]~
- Inside source: true
*** True Line Result
[100, 100, 10, 10].intersect_rect? [500, 500, 10, 10]
** 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: ~ # Similarly, whether rects intersect can be found through~
- Inside source: true
*** True Line Result
# Similarly, whether rects intersect can be found through
** Processing line: ~ # rect1.intersect_rect? rect2~
- Inside source: true
*** True Line Result
# rect1.intersect_rect? rect2
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Sample app shows how to determine if two rectangles intersect."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to determine if two rectangles intersect."
** Processing line: ~ x = 460~
- Inside source: true
*** True Line Result
x = 460
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << small_label(args, x, 3, "Click anywhere on the screen")~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 3, "Click anywhere on the screen")
** Processing line: ~ # red_box = [460, 250, 355, 90, 170, 0, 0]~
- Inside source: true
*** True Line Result
# red_box = [460, 250, 355, 90, 170, 0, 0]
** Processing line: ~ # args.outputs.borders << red_box~
- Inside source: true
*** True Line Result
# args.outputs.borders << red_box
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # args.state.box_collision_one and args.state.box_collision_two~
- Inside source: true
*** True Line Result
# args.state.box_collision_one and args.state.box_collision_two
** Processing line: ~ # Are given values of a solid when they should be rendered~
- Inside source: true
*** True Line Result
# Are given values of a solid when they should be rendered
** Processing line: ~ # They are stored in game so that they do not get reset every tick~
- Inside source: true
*** True Line Result
# They are stored in game so that they do not get reset every tick
** Processing line: ~ if args.inputs.mouse.click~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click
** Processing line: ~ if !args.state.box_collision_one~
- Inside source: true
*** True Line Result
if !args.state.box_collision_one
** Processing line: ~ args.state.box_collision_one = [args.inputs.mouse.click.point.x - 25, args.inputs.mouse.click.point.y - 25, 125, 125, 180, 0, 0, 180]~
- Inside source: true
*** True Line Result
args.state.box_collision_one = [args.inputs.mouse.click.point.x - 25, args.inputs.mouse.click.point.y - 25, 125, 125, 180, 0, 0, 180]
** Processing line: ~ elsif !args.state.box_collision_two~
- Inside source: true
*** True Line Result
elsif !args.state.box_collision_two
** Processing line: ~ args.state.box_collision_two = [args.inputs.mouse.click.point.x - 25, args.inputs.mouse.click.point.y - 25, 125, 125, 0, 0, 180, 180]~
- Inside source: true
*** True Line Result
args.state.box_collision_two = [args.inputs.mouse.click.point.x - 25, args.inputs.mouse.click.point.y - 25, 125, 125, 0, 0, 180, 180]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.state.box_collision_one = nil~
- Inside source: true
*** True Line Result
args.state.box_collision_one = nil
** Processing line: ~ args.state.box_collision_two = nil~
- Inside source: true
*** True Line Result
args.state.box_collision_two = nil
** 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 args.state.box_collision_one~
- Inside source: true
*** True Line Result
if args.state.box_collision_one
** Processing line: ~ args.outputs.solids << args.state.box_collision_one~
- Inside source: true
*** True Line Result
args.outputs.solids << args.state.box_collision_one
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.box_collision_two~
- Inside source: true
*** True Line Result
if args.state.box_collision_two
** Processing line: ~ args.outputs.solids << args.state.box_collision_two~
- Inside source: true
*** True Line Result
args.outputs.solids << args.state.box_collision_two
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.box_collision_one && args.state.box_collision_two~
- Inside source: true
*** True Line Result
if args.state.box_collision_one && args.state.box_collision_two
** Processing line: ~ if args.state.box_collision_one.intersect_rect? args.state.box_collision_two~
- Inside source: true
*** True Line Result
if args.state.box_collision_one.intersect_rect? args.state.box_collision_two
** Processing line: ~ args.outputs.labels << small_label(args, x, 4, 'The boxes intersect.')~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 4, 'The boxes intersect.')
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.outputs.labels << small_label(args, x, 4, 'The boxes do not intersect.')~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 4, 'The boxes do not intersect.')
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.outputs.labels << small_label(args, x, 4, '--')~
- Inside source: true
*** True Line Result
args.outputs.labels << small_label(args, x, 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: ~ def small_label args, x, row, message~
- Inside source: true
*** True Line Result
def small_label args, x, row, message
** Processing line: ~ [x, row_to_px(args, row), message, small_font]~
- Inside source: true
*** True Line Result
[x, row_to_px(args, row), message, small_font]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def small_font~
- Inside source: true
*** True Line Result
def small_font
** Processing line: ~ [-2, 0, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
[-2, 0, 0, 0, 0, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def row_to_px args, row_number~
- Inside source: true
*** True Line Result
def row_to_px args, row_number
** Processing line: ~ args.grid.top.shift_down(5).shift_down(20 * row_number)~
- Inside source: true
*** True Line Result
args.grid.top.shift_down(5).shift_down(20 * row_number)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Input Basics - Controller - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Input Basics - Controller - 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/02_input_basics/05_controller/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/02_input_basics/05_controller/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.controller_one.key_held.KEY: Will check to see if a specific key~
- Inside source: true
*** True Line Result
- args.inputs.controller_one.key_held.KEY: Will check to see if a specific key
** Processing line: ~ is being held down on the controller.~
- Inside source: true
*** True Line Result
is being held down on the controller.
** Processing line: ~ If there is more than one controller being used, they can be differentiated by~
- Inside source: true
*** True Line Result
If there is more than one controller being used, they can be differentiated by
** Processing line: ~ using names like controller_one and controller_two.~
- Inside source: true
*** True Line Result
using names like controller_one and controller_two.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ For a full listing of buttons, take a look at mygame/documentation/08-controllers.md.~
- Inside source: true
*** True Line Result
For a full listing of buttons, take a look at mygame/documentation/08-controllers.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminder:~
- Inside source: true
*** True Line Result
Reminder:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.PROPERTY: The state property on args is a dynamic~
- Inside source: true
*** True Line Result
- args.state.PROPERTY: The state property on args is a dynamic
** Processing line: ~ structure. You can define ANY property here with ANY type of~
- Inside source: true
*** True Line Result
structure. You can define ANY property here with ANY type of
** Processing line: ~ arbitrary nesting. Properties defined on args.state will be retained~
- Inside source: true
*** True Line Result
arbitrary nesting. Properties defined on args.state will be retained
** Processing line: ~ across frames. If you attempt to access a property that doesn't exist~
- Inside source: true
*** True Line Result
across frames. If you attempt to access a property that doesn't exist
** Processing line: ~ on args.state, it will simply return nil (no exception will be thrown).~
- Inside source: true
*** True Line Result
on args.state, it will simply return nil (no exception will be thrown).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ In this sample app, args.state.BUTTONS is an array that stores the buttons of the controller.~
- Inside source: true
*** True Line Result
In this sample app, args.state.BUTTONS is an array that stores the buttons of the controller.
** Processing line: ~ The parameters of a button are:~
- Inside source: true
*** True Line Result
The parameters of a button are:
** Processing line: ~ 1. the position (x, y)~
- Inside source: true
*** True Line Result
1. the position (x, y)
** Processing line: ~ 2. the input key held on the controller~
- Inside source: true
*** True Line Result
2. the input key held on the controller
** Processing line: ~ 3. the text or name of the button~
- Inside source: true
*** True Line Result
3. the text or name of the button
** 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: ~ # This sample app provides a visual demonstration of a standard controller, including~
- Inside source: true
*** True Line Result
# This sample app provides a visual demonstration of a standard controller, including
** Processing line: ~ # the placement and function of all buttons.~
- Inside source: true
*** True Line Result
# the placement and function of all buttons.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class ControllerDemo~
- Inside source: true
*** True Line Result
class ControllerDemo
** Processing line: ~ attr_accessor :inputs, :state, :outputs~
- Inside source: true
*** True Line Result
attr_accessor :inputs, :state, :outputs
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls the methods necessary for the app to run successfully.~
- Inside source: true
*** True Line Result
# Calls the methods necessary for the app to run successfully.
** Processing line: ~ def tick~
- Inside source: true
*** True Line Result
def tick
** Processing line: ~ process_inputs~
- Inside source: true
*** True Line Result
process_inputs
** Processing line: ~ render~
- Inside source: true
*** True Line Result
render
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Starts with an empty collection of buttons.~
- Inside source: true
*** True Line Result
# Starts with an empty collection of buttons.
** Processing line: ~ # Adds buttons that are on the controller to the collection.~
- Inside source: true
*** True Line Result
# Adds buttons that are on the controller to the collection.
** Processing line: ~ def process_inputs~
- Inside source: true
*** True Line Result
def process_inputs
** Processing line: ~ state.buttons = []~
- Inside source: true
*** True Line Result
state.buttons = []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.buttons << [100, 500, inputs.controller_one.key_held.l1, "L1"]~
- Inside source: true
*** True Line Result
state.buttons << [100, 500, inputs.controller_one.key_held.l1, "L1"]
** Processing line: ~ state.buttons << [100, 600, inputs.controller_one.key_held.l2, "L2"]~
- Inside source: true
*** True Line Result
state.buttons << [100, 600, inputs.controller_one.key_held.l2, "L2"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.buttons << [1100, 500, inputs.controller_one.key_held.r1, "R1"]~
- Inside source: true
*** True Line Result
state.buttons << [1100, 500, inputs.controller_one.key_held.r1, "R1"]
** Processing line: ~ state.buttons << [1100, 600, inputs.controller_one.key_held.r2, "R2"]~
- Inside source: true
*** True Line Result
state.buttons << [1100, 600, inputs.controller_one.key_held.r2, "R2"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.buttons << [540, 450, inputs.controller_one.key_held.select, "Select"]~
- Inside source: true
*** True Line Result
state.buttons << [540, 450, inputs.controller_one.key_held.select, "Select"]
** Processing line: ~ state.buttons << [660, 450, inputs.controller_one.key_held.start, "Start"]~
- Inside source: true
*** True Line Result
state.buttons << [660, 450, inputs.controller_one.key_held.start, "Start"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.buttons << [200, 300, inputs.controller_one.key_held.left, "Left"]~
- Inside source: true
*** True Line Result
state.buttons << [200, 300, inputs.controller_one.key_held.left, "Left"]
** Processing line: ~ state.buttons << [300, 400, inputs.controller_one.key_held.up, "Up"]~
- Inside source: true
*** True Line Result
state.buttons << [300, 400, inputs.controller_one.key_held.up, "Up"]
** Processing line: ~ state.buttons << [400, 300, inputs.controller_one.key_held.right, "Right"]~
- Inside source: true
*** True Line Result
state.buttons << [400, 300, inputs.controller_one.key_held.right, "Right"]
** Processing line: ~ state.buttons << [300, 200, inputs.controller_one.key_held.down, "Down"]~
- Inside source: true
*** True Line Result
state.buttons << [300, 200, inputs.controller_one.key_held.down, "Down"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.buttons << [800, 300, inputs.controller_one.key_held.x, "X"]~
- Inside source: true
*** True Line Result
state.buttons << [800, 300, inputs.controller_one.key_held.x, "X"]
** Processing line: ~ state.buttons << [900, 400, inputs.controller_one.key_held.y, "Y"]~
- Inside source: true
*** True Line Result
state.buttons << [900, 400, inputs.controller_one.key_held.y, "Y"]
** Processing line: ~ state.buttons << [1000, 300, inputs.controller_one.key_held.a, "A"]~
- Inside source: true
*** True Line Result
state.buttons << [1000, 300, inputs.controller_one.key_held.a, "A"]
** Processing line: ~ state.buttons << [900, 200, inputs.controller_one.key_held.b, "B"]~
- Inside source: true
*** True Line Result
state.buttons << [900, 200, inputs.controller_one.key_held.b, "B"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.buttons << [450 + inputs.controller_one.left_analog_x_perc * 100,~
- Inside source: true
*** True Line Result
state.buttons << [450 + inputs.controller_one.left_analog_x_perc * 100,
** Processing line: ~ 100 + inputs.controller_one.left_analog_y_perc * 100,~
- Inside source: true
*** True Line Result
100 + inputs.controller_one.left_analog_y_perc * 100,
** Processing line: ~ inputs.controller_one.key_held.l3,~
- Inside source: true
*** True Line Result
inputs.controller_one.key_held.l3,
** Processing line: ~ "L3"]~
- Inside source: true
*** True Line Result
"L3"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.buttons << [750 + inputs.controller_one.right_analog_x_perc * 100,~
- Inside source: true
*** True Line Result
state.buttons << [750 + inputs.controller_one.right_analog_x_perc * 100,
** Processing line: ~ 100 + inputs.controller_one.right_analog_y_perc * 100,~
- Inside source: true
*** True Line Result
100 + inputs.controller_one.right_analog_y_perc * 100,
** Processing line: ~ inputs.controller_one.key_held.r3,~
- Inside source: true
*** True Line Result
inputs.controller_one.key_held.r3,
** Processing line: ~ "R3"]~
- Inside source: true
*** True Line Result
"R3"]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Gives each button a square shape.~
- Inside source: true
*** True Line Result
# Gives each button a square shape.
** Processing line: ~ # If the button is being pressed or held (which means it is considered active),~
- Inside source: true
*** True Line Result
# If the button is being pressed or held (which means it is considered active),
** Processing line: ~ # the square is filled in. Otherwise, the button simply has a border.~
- Inside source: true
*** True Line Result
# the square is filled in. Otherwise, the button simply has a border.
** Processing line: ~ def render~
- Inside source: true
*** True Line Result
def render
** Processing line: ~ state.buttons.each do |x, y, active, text|~
- Inside source: true
*** True Line Result
state.buttons.each do |x, y, active, text|
** Processing line: ~ rect = [x, y, 75, 75]~
- Inside source: true
*** True Line Result
rect = [x, y, 75, 75]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if active # if button is pressed~
- Inside source: true
*** True Line Result
if active # if button is pressed
** Processing line: ~ outputs.solids << rect # rect is output as solid (filled in)~
- Inside source: true
*** True Line Result
outputs.solids << rect # rect is output as solid (filled in)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ outputs.borders << rect # otherwise, output as border~
- Inside source: true
*** True Line Result
outputs.borders << rect # otherwise, output as border
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs the text of each button using labels.~
- Inside source: true
*** True Line Result
# Outputs the text of each button using labels.
** Processing line: ~ outputs.labels << [x, y + 95, text] # add 95 to place label above button~
- Inside source: true
*** True Line Result
outputs.labels << [x, y + 95, text] # add 95 to place label above button
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << [10, 60, "Left Analog x: #{inputs.controller_one.left_analog_x_raw} (#{inputs.controller_one.left_analog_x_perc * 100}%)"]~
- Inside source: true
*** True Line Result
outputs.labels << [10, 60, "Left Analog x: #{inputs.controller_one.left_analog_x_raw} (#{inputs.controller_one.left_analog_x_perc * 100}%)"]
** Processing line: ~ outputs.labels << [10, 30, "Left Analog y: #{inputs.controller_one.left_analog_y_raw} (#{inputs.controller_one.left_analog_y_perc * 100}%)"]~
- Inside source: true
*** True Line Result
outputs.labels << [10, 30, "Left Analog y: #{inputs.controller_one.left_analog_y_raw} (#{inputs.controller_one.left_analog_y_perc * 100}%)"]
** Processing line: ~ outputs.labels << [900, 60, "Right Analog x: #{inputs.controller_one.right_analog_x_raw} (#{inputs.controller_one.right_analog_x_perc * 100}%)"]~
- Inside source: true
*** True Line Result
outputs.labels << [900, 60, "Right Analog x: #{inputs.controller_one.right_analog_x_raw} (#{inputs.controller_one.right_analog_x_perc * 100}%)"]
** Processing line: ~ outputs.labels << [900, 30, "Right Analog y: #{inputs.controller_one.right_analog_y_raw} (#{inputs.controller_one.right_analog_y_perc * 100}%)"]~
- Inside source: true
*** True Line Result
outputs.labels << [900, 30, "Right Analog y: #{inputs.controller_one.right_analog_y_raw} (#{inputs.controller_one.right_analog_y_perc * 100}%)"]
** 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: ~ $controller_demo = ControllerDemo.new~
- Inside source: true
*** True Line Result
$controller_demo = ControllerDemo.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: ~ tick_instructions args, "Sample app shows how controller input is handled. You'll need to connect a USB controller."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how controller input is handled. You'll need to connect a USB controller."
** Processing line: ~ $controller_demo.inputs = args.inputs~
- Inside source: true
*** True Line Result
$controller_demo.inputs = args.inputs
** Processing line: ~ $controller_demo.state = args.state~
- Inside source: true
*** True Line Result
$controller_demo.state = args.state
** Processing line: ~ $controller_demo.outputs = args.outputs~
- Inside source: true
*** True Line Result
$controller_demo.outputs = args.outputs
** Processing line: ~ $controller_demo.tick~
- Inside source: true
*** True Line Result
$controller_demo.tick
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Resets the app.~
- Inside source: true
*** True Line Result
# Resets the app.
** Processing line: ~ def r~
- Inside source: true
*** True Line Result
def r
** Processing line: ~ $gtk.reset~
- Inside source: true
*** True Line Result
$gtk.reset
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Rendering Sprites - Animation Using Separate Pngs - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rendering Sprites - Animation Using Separate Pngs - 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/03_rendering_sprites/01_animation_using_separate_pngs/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/03_rendering_sprites/01_animation_using_separate_pngs/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
- Inside source: true
*** True Line Result
- String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
- Inside source: true
*** True Line Result
as Ruby code, and the placeholder is replaced with its corresponding value or result.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ In this sample app, we're using string interpolation to iterate through images in the~
- Inside source: true
*** True Line Result
In this sample app, we're using string interpolation to iterate through images in the
** Processing line: ~ sprites folder using their image path names.~
- Inside source: true
*** True Line Result
sprites folder using their image path names.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.sprites: An array. Values in this array generate sprites on the screen.~
- Inside source: true
*** True Line Result
- args.outputs.sprites: An array. Values in this array generate sprites on the screen.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, IMAGE PATH]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, IMAGE PATH]
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
- Inside source: true
*** True Line Result
For more information about sprites, go to mygame/documentation/05-sprites.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. Values in the array generate labels on the screen.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. Values in the array generate labels on the screen.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.keyboard.key_down.KEY: Determines if a key is in the down state, or pressed.~
- Inside source: true
*** True Line Result
- args.inputs.keyboard.key_down.KEY: Determines if a key is in the down state, or pressed.
** Processing line: ~ Stores the frame that key was pressed on.~
- Inside source: true
*** True Line Result
Stores the frame that key was pressed on.
** Processing line: ~ For more information about the keyboard, go to mygame/documentation/06-keyboard.md.~
- Inside source: true
*** True Line Result
For more information about the keyboard, go to mygame/documentation/06-keyboard.md.
** 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: ~ # This sample app demonstrates how sprite animations work.~
- Inside source: true
*** True Line Result
# This sample app demonstrates how sprite animations work.
** Processing line: ~ # There are two sprites that animate forever and one sprite~
- Inside source: true
*** True Line Result
# There are two sprites that animate forever and one sprite
** Processing line: ~ # that *only* animates when you press the "f" key on the keyboard.~
- Inside source: true
*** True Line Result
# that *only* animates when you press the "f" key on the keyboard.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This is the entry point to your game. The `tick` method~
- Inside source: true
*** True Line Result
# This is the entry point to your game. The `tick` method
** Processing line: ~ # executes at 60 frames per second. There are two methods~
- Inside source: true
*** True Line Result
# executes at 60 frames per second. There are two methods
** Processing line: ~ # in this tick "entry point": `looping_animation`, and the~
- Inside source: true
*** True Line Result
# in this tick "entry point": `looping_animation`, and the
** Processing line: ~ # second method is `one_time_animation`.~
- Inside source: true
*** True Line Result
# second method is `one_time_animation`.
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ looping_animation args~
- Inside source: true
*** True Line Result
looping_animation args
** Processing line: ~ one_time_animation args~
- Inside source: true
*** True Line Result
one_time_animation args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This function shows how to animate a sprite that loops forever.~
- Inside source: true
*** True Line Result
# This function shows how to animate a sprite that loops forever.
** Processing line: ~ def looping_animation args~
- Inside source: true
*** True Line Result
def looping_animation args
** Processing line: ~ # Here we define a few local variables that will be sent~
- Inside source: true
*** True Line Result
# Here we define a few local variables that will be sent
** Processing line: ~ # into the magic function that gives us the correct sprite image~
- Inside source: true
*** True Line Result
# into the magic function that gives us the correct sprite image
** Processing line: ~ # over time. There are four things we need in order to figure~
- Inside source: true
*** True Line Result
# over time. There are four things we need in order to figure
** Processing line: ~ # out which sprite to show.~
- Inside source: true
*** True Line Result
# out which sprite to show.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # 1. When to start the animation.~
- Inside source: true
*** True Line Result
# 1. When to start the animation.
** Processing line: ~ start_looping_at = 0~
- Inside source: true
*** True Line Result
start_looping_at = 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # 2. The number of pngs that represent the full animation.~
- Inside source: true
*** True Line Result
# 2. The number of pngs that represent the full animation.
** Processing line: ~ number_of_sprites = 6~
- Inside source: true
*** True Line Result
number_of_sprites = 6
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # 3. How long to show each png.~
- Inside source: true
*** True Line Result
# 3. How long to show each png.
** Processing line: ~ number_of_frames_to_show_each_sprite = 4~
- Inside source: true
*** True Line Result
number_of_frames_to_show_each_sprite = 4
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # 4. Whether the animation should loop once, or forever.~
- Inside source: true
*** True Line Result
# 4. Whether the animation should loop once, or forever.
** Processing line: ~ does_sprite_loop = true~
- Inside source: true
*** True Line Result
does_sprite_loop = true
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # With the variables defined above, we can get a number~
- Inside source: true
*** True Line Result
# With the variables defined above, we can get a number
** Processing line: ~ # which represents the sprite to show by calling the `frame_index` function.~
- Inside source: true
*** True Line Result
# which represents the sprite to show by calling the `frame_index` function.
** Processing line: ~ # In this case the number will be between 0, and 5 (you can see the sprites~
- Inside source: true
*** True Line Result
# In this case the number will be between 0, and 5 (you can see the sprites
** Processing line: ~ # in the ./sprites directory).~
- Inside source: true
*** True Line Result
# in the ./sprites directory).
** Processing line: ~ sprite_index = start_looping_at.frame_index number_of_sprites,~
- Inside source: true
*** True Line Result
sprite_index = start_looping_at.frame_index number_of_sprites,
** Processing line: ~ number_of_frames_to_show_each_sprite,~
- Inside source: true
*** True Line Result
number_of_frames_to_show_each_sprite,
** Processing line: ~ does_sprite_loop~
- Inside source: true
*** True Line Result
does_sprite_loop
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Now that we have `sprite_index, we can present the correct file.~
- Inside source: true
*** True Line Result
# Now that we have `sprite_index, we can present the correct file.
** Processing line: ~ args.outputs.sprites << [100, 100, 100, 100, "sprites/dragon_fly_#{sprite_index}.png"]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [100, 100, 100, 100, "sprites/dragon_fly_#{sprite_index}.png"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Try changing the numbers below to see how the animation changes:~
- Inside source: true
*** True Line Result
# Try changing the numbers below to see how the animation changes:
** Processing line: ~ args.outputs.sprites << [100, 200, 100, 100, "sprites/dragon_fly_#{0.frame_index 6, 4, true}.png"]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [100, 200, 100, 100, "sprites/dragon_fly_#{0.frame_index 6, 4, true}.png"]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This function shows how to animate a sprite that executes~
- Inside source: true
*** True Line Result
# This function shows how to animate a sprite that executes
** Processing line: ~ # only once when the "f" key is pressed.~
- Inside source: true
*** True Line Result
# only once when the "f" key is pressed.
** Processing line: ~ def one_time_animation args~
- Inside source: true
*** True Line Result
def one_time_animation args
** Processing line: ~ # This is just a label the shows instructions within the game.~
- Inside source: true
*** True Line Result
# This is just a label the shows instructions within the game.
** Processing line: ~ args.outputs.labels << [220, 350, "(press f to animate)"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [220, 350, "(press f to animate)"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If "f" is pressed on the keyboard...~
- Inside source: true
*** True Line Result
# If "f" is pressed on the keyboard...
** Processing line: ~ if args.inputs.keyboard.key_down.f~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.f
** Processing line: ~ # Print the frame that "f" was pressed on.~
- Inside source: true
*** True Line Result
# Print the frame that "f" was pressed on.
** Processing line: ~ puts "Hello from main.rb! The \"f\" key was in the down state on frame: #{args.inputs.keyboard.key_down.f}"~
- Inside source: true
*** True Line Result
puts "Hello from main.rb! The \"f\" key was in the down state on frame: #{args.inputs.keyboard.key_down.f}"
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # And MOST IMPORTANTLY set the point it time to start the animation,~
- Inside source: true
*** True Line Result
# And MOST IMPORTANTLY set the point it time to start the animation,
** Processing line: ~ # equal to "now" which is represented as args.state.tick_count.~
- Inside source: true
*** True Line Result
# equal to "now" which is represented as args.state.tick_count.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Also IMPORTANT, you'll notice that the value of when to start looping~
- Inside source: true
*** True Line Result
# Also IMPORTANT, you'll notice that the value of when to start looping
** Processing line: ~ # is stored in `args.state`. This construct's values are retained across~
- Inside source: true
*** True Line Result
# is stored in `args.state`. This construct's values are retained across
** Processing line: ~ # executions of the `tick` method.~
- Inside source: true
*** True Line Result
# executions of the `tick` method.
** Processing line: ~ args.state.start_looping_at = args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.start_looping_at = args.state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # These are the same local variables that were defined~
- Inside source: true
*** True Line Result
# These are the same local variables that were defined
** Processing line: ~ # for the `looping_animation` function.~
- Inside source: true
*** True Line Result
# for the `looping_animation` function.
** Processing line: ~ number_of_sprites = 6~
- Inside source: true
*** True Line Result
number_of_sprites = 6
** Processing line: ~ number_of_frames_to_show_each_sprite = 4~
- Inside source: true
*** True Line Result
number_of_frames_to_show_each_sprite = 4
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Except this sprite does not loop again. If the animation time has passed,~
- Inside source: true
*** True Line Result
# Except this sprite does not loop again. If the animation time has passed,
** Processing line: ~ # then the frame_index function returns nil.~
- Inside source: true
*** True Line Result
# then the frame_index function returns nil.
** Processing line: ~ does_sprite_loop = false~
- Inside source: true
*** True Line Result
does_sprite_loop = false
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ sprite_index = args.state~
- Inside source: true
*** True Line Result
sprite_index = args.state
** Processing line: ~ .start_looping_at~
- Inside source: true
*** True Line Result
.start_looping_at
** Processing line: ~ .frame_index number_of_sprites,~
- Inside source: true
*** True Line Result
.frame_index number_of_sprites,
** Processing line: ~ number_of_frames_to_show_each_sprite,~
- Inside source: true
*** True Line Result
number_of_frames_to_show_each_sprite,
** Processing line: ~ does_sprite_loop~
- Inside source: true
*** True Line Result
does_sprite_loop
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This line sets the frame index to zero, if~
- Inside source: true
*** True Line Result
# This line sets the frame index to zero, if
** Processing line: ~ # the animation duration has passed (frame_index returned nil).~
- Inside source: true
*** True Line Result
# the animation duration has passed (frame_index returned nil).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Remeber: we are not looping forever here.~
- Inside source: true
*** True Line Result
# Remeber: we are not looping forever here.
** Processing line: ~ sprite_index ||= 0~
- Inside source: true
*** True Line Result
sprite_index ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Present the sprite.~
- Inside source: true
*** True Line Result
# Present the sprite.
** Processing line: ~ args.outputs.sprites << [100, 300, 100, 100, "sprites/dragon_fly_#{sprite_index}.png"]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [100, 300, 100, 100, "sprites/dragon_fly_#{sprite_index}.png"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ tick_instructions args, "Sample app shows how to use Numeric#frame_index and string interpolation to animate a sprite over time."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to use Numeric#frame_index and string interpolation to animate a sprite over time."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Rendering Sprites - Animation Using Sprite Sheet - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rendering Sprites - Animation Using Sprite Sheet - 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/03_rendering_sprites/02_animation_using_sprite_sheet/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/03_rendering_sprites/02_animation_using_sprite_sheet/app/main.rb
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ args.state.player.x ||= 100~
- Inside source: true
*** True Line Result
args.state.player.x ||= 100
** Processing line: ~ args.state.player.y ||= 100~
- Inside source: true
*** True Line Result
args.state.player.y ||= 100
** Processing line: ~ args.state.player.w ||= 64~
- Inside source: true
*** True Line Result
args.state.player.w ||= 64
** Processing line: ~ args.state.player.h ||= 64~
- Inside source: true
*** True Line Result
args.state.player.h ||= 64
** Processing line: ~ args.state.player.direction ||= 1~
- Inside source: true
*** True Line Result
args.state.player.direction ||= 1
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.player.is_moving = false~
- Inside source: true
*** True Line Result
args.state.player.is_moving = false
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # get the keyboard input and set player properties~
- Inside source: true
*** True Line Result
# get the keyboard input and set player properties
** Processing line: ~ if args.inputs.keyboard.right~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.right
** Processing line: ~ args.state.player.x += 3~
- Inside source: true
*** True Line Result
args.state.player.x += 3
** Processing line: ~ args.state.player.direction = 1~
- Inside source: true
*** True Line Result
args.state.player.direction = 1
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.player.started_running_at ||= args.state.tick_count
** Processing line: ~ elsif args.inputs.keyboard.left~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.left
** Processing line: ~ args.state.player.x -= 3~
- Inside source: true
*** True Line Result
args.state.player.x -= 3
** Processing line: ~ args.state.player.direction = -1~
- Inside source: true
*** True Line Result
args.state.player.direction = -1
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.player.started_running_at ||= args.state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.keyboard.up~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.up
** Processing line: ~ args.state.player.y += 1~
- Inside source: true
*** True Line Result
args.state.player.y += 1
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.player.started_running_at ||= args.state.tick_count
** Processing line: ~ elsif args.inputs.keyboard.down~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.down
** Processing line: ~ args.state.player.y -= 1~
- Inside source: true
*** True Line Result
args.state.player.y -= 1
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.player.started_running_at ||= args.state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if no arrow keys are being pressed, set the player as not moving~
- Inside source: true
*** True Line Result
# if no arrow keys are being pressed, set the player as not moving
** Processing line: ~ if !args.inputs.keyboard.directional_vector~
- Inside source: true
*** True Line Result
if !args.inputs.keyboard.directional_vector
** Processing line: ~ args.state.player.started_running_at = nil~
- Inside source: true
*** True Line Result
args.state.player.started_running_at = nil
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # wrap player around the stage~
- Inside source: true
*** True Line Result
# wrap player around the stage
** Processing line: ~ if args.state.player.x > 1280~
- Inside source: true
*** True Line Result
if args.state.player.x > 1280
** Processing line: ~ args.state.player.x = -64~
- Inside source: true
*** True Line Result
args.state.player.x = -64
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.player.started_running_at ||= args.state.tick_count
** Processing line: ~ elsif args.state.player.x < -64~
- Inside source: true
*** True Line Result
elsif args.state.player.x < -64
** Processing line: ~ args.state.player.x = 1280~
- Inside source: true
*** True Line Result
args.state.player.x = 1280
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.player.started_running_at ||= args.state.tick_count
** 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 > 720~
- Inside source: true
*** True Line Result
if args.state.player.y > 720
** Processing line: ~ args.state.player.y = -64~
- Inside source: true
*** True Line Result
args.state.player.y = -64
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.player.started_running_at ||= args.state.tick_count
** Processing line: ~ elsif args.state.player.y < -64~
- Inside source: true
*** True Line Result
elsif args.state.player.y < -64
** Processing line: ~ args.state.player.y = 720~
- Inside source: true
*** True Line Result
args.state.player.y = 720
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.player.started_running_at ||= args.state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render player as standing or running~
- Inside source: true
*** True Line Result
# render player as standing or running
** Processing line: ~ if args.state.player.started_running_at~
- Inside source: true
*** True Line Result
if args.state.player.started_running_at
** Processing line: ~ args.outputs.sprites << running_sprite(args)~
- Inside source: true
*** True Line Result
args.outputs.sprites << running_sprite(args)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.outputs.sprites << standing_sprite(args)~
- Inside source: true
*** True Line Result
args.outputs.sprites << standing_sprite(args)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ args.outputs.labels << [30, 700, "Use arrow keys to move around."]~
- Inside source: true
*** True Line Result
args.outputs.labels << [30, 700, "Use arrow keys to move around."]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def standing_sprite args~
- Inside source: true
*** True Line Result
def standing_sprite args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: args.state.player.x,~
- Inside source: true
*** True Line Result
x: args.state.player.x,
** Processing line: ~ y: args.state.player.y,~
- Inside source: true
*** True Line Result
y: args.state.player.y,
** Processing line: ~ w: args.state.player.w,~
- Inside source: true
*** True Line Result
w: args.state.player.w,
** Processing line: ~ h: args.state.player.h,~
- Inside source: true
*** True Line Result
h: args.state.player.h,
** Processing line: ~ path: "sprites/horizontal-stand.png",~
- Inside source: true
*** True Line Result
path: "sprites/horizontal-stand.png",
** Processing line: ~ flip_horizontally: args.state.player.direction > 0~
- Inside source: true
*** True Line Result
flip_horizontally: args.state.player.direction > 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 running_sprite args~
- Inside source: true
*** True Line Result
def running_sprite args
** Processing line: ~ if !args.state.player.started_running_at~
- Inside source: true
*** True Line Result
if !args.state.player.started_running_at
** Processing line: ~ tile_index = 0~
- Inside source: true
*** True Line Result
tile_index = 0
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ how_many_frames_in_sprite_sheet = 6~
- Inside source: true
*** True Line Result
how_many_frames_in_sprite_sheet = 6
** Processing line: ~ how_many_ticks_to_hold_each_frame = 3~
- Inside source: true
*** True Line Result
how_many_ticks_to_hold_each_frame = 3
** Processing line: ~ should_the_index_repeat = true~
- Inside source: true
*** True Line Result
should_the_index_repeat = true
** Processing line: ~ tile_index = args.state~
- Inside source: true
*** True Line Result
tile_index = args.state
** Processing line: ~ .player~
- Inside source: true
*** True Line Result
.player
** Processing line: ~ .started_running_at~
- Inside source: true
*** True Line Result
.started_running_at
** Processing line: ~ .frame_index(how_many_frames_in_sprite_sheet,~
- Inside source: true
*** True Line Result
.frame_index(how_many_frames_in_sprite_sheet,
** Processing line: ~ how_many_ticks_to_hold_each_frame,~
- Inside source: true
*** True Line Result
how_many_ticks_to_hold_each_frame,
** Processing line: ~ should_the_index_repeat)~
- Inside source: true
*** True Line Result
should_the_index_repeat)
** 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: ~ x: args.state.player.x,~
- Inside source: true
*** True Line Result
x: args.state.player.x,
** Processing line: ~ y: args.state.player.y,~
- Inside source: true
*** True Line Result
y: args.state.player.y,
** Processing line: ~ w: args.state.player.w,~
- Inside source: true
*** True Line Result
w: args.state.player.w,
** Processing line: ~ h: args.state.player.h,~
- Inside source: true
*** True Line Result
h: args.state.player.h,
** Processing line: ~ path: 'sprites/horizontal-run.png',~
- Inside source: true
*** True Line Result
path: 'sprites/horizontal-run.png',
** Processing line: ~ tile_x: 0 + (tile_index * args.state.player.w),~
- Inside source: true
*** True Line Result
tile_x: 0 + (tile_index * args.state.player.w),
** Processing line: ~ tile_y: 0,~
- Inside source: true
*** True Line Result
tile_y: 0,
** Processing line: ~ tile_w: args.state.player.w,~
- Inside source: true
*** True Line Result
tile_w: args.state.player.w,
** Processing line: ~ tile_h: args.state.player.h,~
- Inside source: true
*** True Line Result
tile_h: args.state.player.h,
** Processing line: ~ flip_horizontally: args.state.player.direction > 0,~
- Inside source: true
*** True Line Result
flip_horizontally: args.state.player.direction > 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: ~#+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: ~* Rendering Sprites - Animation States - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rendering Sprites - Animation States - 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/03_rendering_sprites/03_animation_states/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/03_rendering_sprites/03_animation_states/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 defaults~
- Inside source: true
*** True Line Result
def defaults
** Processing line: ~ state.show_debug_layer = true if state.tick_count == 0~
- Inside source: true
*** True Line Result
state.show_debug_layer = true if state.tick_count == 0
** Processing line: ~ player.tile_size = 64~
- Inside source: true
*** True Line Result
player.tile_size = 64
** Processing line: ~ player.speed = 3~
- Inside source: true
*** True Line Result
player.speed = 3
** Processing line: ~ player.slash_frames = 15~
- Inside source: true
*** True Line Result
player.slash_frames = 15
** Processing line: ~ player.x ||= 50~
- Inside source: true
*** True Line Result
player.x ||= 50
** Processing line: ~ player.y ||= 400~
- Inside source: true
*** True Line Result
player.y ||= 400
** Processing line: ~ player.dir_x ||= 1~
- Inside source: true
*** True Line Result
player.dir_x ||= 1
** Processing line: ~ player.dir_y ||= -1~
- Inside source: true
*** True Line Result
player.dir_y ||= -1
** Processing line: ~ player.is_moving ||= false~
- Inside source: true
*** True Line Result
player.is_moving ||= false
** Processing line: ~ state.watch_list ||= {}~
- Inside source: true
*** True Line Result
state.watch_list ||= {}
** Processing line: ~ state.enemies ||= []~
- Inside source: true
*** True Line Result
state.enemies ||= []
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def add_enemy~
- Inside source: true
*** True Line Result
def add_enemy
** Processing line: ~ state.enemies << { x: 1200 * rand, y: 600 * rand, w: 64, h: 64 }~
- Inside source: true
*** True Line Result
state.enemies << { x: 1200 * rand, y: 600 * rand, w: 64, h: 64 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def sprite_horizontal_run~
- Inside source: true
*** True Line Result
def sprite_horizontal_run
** Processing line: ~ tile_index = 0.frame_index(6, 3, true)~
- Inside source: true
*** True Line Result
tile_index = 0.frame_index(6, 3, true)
** Processing line: ~ tile_index = 0 if !player.is_moving~
- Inside source: true
*** True Line Result
tile_index = 0 if !player.is_moving
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** 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.tile_size,~
- Inside source: true
*** True Line Result
w: player.tile_size,
** Processing line: ~ h: player.tile_size,~
- Inside source: true
*** True Line Result
h: player.tile_size,
** Processing line: ~ path: 'sprites/horizontal-run.png',~
- Inside source: true
*** True Line Result
path: 'sprites/horizontal-run.png',
** Processing line: ~ tile_x: 0 + (tile_index * player.tile_size),~
- Inside source: true
*** True Line Result
tile_x: 0 + (tile_index * player.tile_size),
** Processing line: ~ tile_y: 0,~
- Inside source: true
*** True Line Result
tile_y: 0,
** Processing line: ~ tile_w: player.tile_size,~
- Inside source: true
*** True Line Result
tile_w: player.tile_size,
** Processing line: ~ tile_h: player.tile_size,~
- Inside source: true
*** True Line Result
tile_h: player.tile_size,
** Processing line: ~ flip_horizontally: player.dir_x > 0,~
- Inside source: true
*** True Line Result
flip_horizontally: player.dir_x > 0,
** Processing line: ~ # a: 40~
- Inside source: true
*** True Line Result
# a: 40
** 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 sprite_horizontal_stand~
- Inside source: true
*** True Line Result
def sprite_horizontal_stand
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** 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.tile_size,~
- Inside source: true
*** True Line Result
w: player.tile_size,
** Processing line: ~ h: player.tile_size,~
- Inside source: true
*** True Line Result
h: player.tile_size,
** Processing line: ~ path: 'sprites/horizontal-stand.png',~
- Inside source: true
*** True Line Result
path: 'sprites/horizontal-stand.png',
** Processing line: ~ flip_horizontally: player.dir_x > 0,~
- Inside source: true
*** True Line Result
flip_horizontally: player.dir_x > 0,
** Processing line: ~ # a: 40~
- Inside source: true
*** True Line Result
# a: 40
** 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 sprite_horizontal_slash~
- Inside source: true
*** True Line Result
def sprite_horizontal_slash
** Processing line: ~ tile_index = player.slash_at.frame_index(5, player.slash_frames.idiv(5), false) || 0~
- Inside source: true
*** True Line Result
tile_index = player.slash_at.frame_index(5, player.slash_frames.idiv(5), false) || 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: player.x - 41.25,~
- Inside source: true
*** True Line Result
x: player.x - 41.25,
** Processing line: ~ y: player.y - 41.25,~
- Inside source: true
*** True Line Result
y: player.y - 41.25,
** Processing line: ~ w: 165,~
- Inside source: true
*** True Line Result
w: 165,
** Processing line: ~ h: 165,~
- Inside source: true
*** True Line Result
h: 165,
** Processing line: ~ path: 'sprites/horizontal-slash.png',~
- Inside source: true
*** True Line Result
path: 'sprites/horizontal-slash.png',
** Processing line: ~ tile_x: 0 + (tile_index * 128),~
- Inside source: true
*** True Line Result
tile_x: 0 + (tile_index * 128),
** Processing line: ~ tile_y: 0,~
- Inside source: true
*** True Line Result
tile_y: 0,
** Processing line: ~ tile_w: 128,~
- Inside source: true
*** True Line Result
tile_w: 128,
** Processing line: ~ tile_h: 128,~
- Inside source: true
*** True Line Result
tile_h: 128,
** Processing line: ~ flip_horizontally: player.dir_x > 0~
- Inside source: true
*** True Line Result
flip_horizontally: player.dir_x > 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_player~
- Inside source: true
*** True Line Result
def render_player
** Processing line: ~ if player.slash_at~
- Inside source: true
*** True Line Result
if player.slash_at
** Processing line: ~ outputs.sprites << sprite_horizontal_slash~
- Inside source: true
*** True Line Result
outputs.sprites << sprite_horizontal_slash
** Processing line: ~ elsif player.is_moving~
- Inside source: true
*** True Line Result
elsif player.is_moving
** Processing line: ~ outputs.sprites << sprite_horizontal_run~
- Inside source: true
*** True Line Result
outputs.sprites << sprite_horizontal_run
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ outputs.sprites << sprite_horizontal_stand~
- Inside source: true
*** True Line Result
outputs.sprites << sprite_horizontal_stand
** 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_enemies~
- Inside source: true
*** True Line Result
def render_enemies
** Processing line: ~ outputs.borders << state.enemies~
- Inside source: true
*** True Line Result
outputs.borders << state.enemies
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_debug_layer~
- Inside source: true
*** True Line Result
def render_debug_layer
** Processing line: ~ return if !state.show_debug_layer~
- Inside source: true
*** True Line Result
return if !state.show_debug_layer
** Processing line: ~ outputs.labels << state.watch_list.map.with_index do |(k, v), i|~
- Inside source: true
*** True Line Result
outputs.labels << state.watch_list.map.with_index do |(k, v), i|
** Processing line: ~ [30, 710 - i * 28, "#{k}: #{v || "(nil)"}"]~
- Inside source: true
*** True Line Result
[30, 710 - i * 28, "#{k}: #{v || "(nil)"}"]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.borders << player.slash_collision_rect~
- Inside source: true
*** True Line Result
outputs.borders << player.slash_collision_rect
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def slash_initiate?~
- Inside source: true
*** True Line Result
def slash_initiate?
** Processing line: ~ # buffalo usb controller has a button and b button swapped lol~
- Inside source: true
*** True Line Result
# buffalo usb controller has a button and b button swapped lol
** Processing line: ~ inputs.controller_one.key_down.a || inputs.keyboard.key_down.j~
- Inside source: true
*** True Line Result
inputs.controller_one.key_down.a || inputs.keyboard.key_down.j
** 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: ~ # player movement~
- Inside source: true
*** True Line Result
# player movement
** Processing line: ~ if slash_complete? && (vector = inputs.directional_vector)~
- Inside source: true
*** True Line Result
if slash_complete? && (vector = inputs.directional_vector)
** Processing line: ~ player.x += vector.x * player.speed~
- Inside source: true
*** True Line Result
player.x += vector.x * player.speed
** Processing line: ~ player.y += vector.y * player.speed~
- Inside source: true
*** True Line Result
player.y += vector.y * player.speed
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ player.slash_at = slash_initiate? if slash_initiate?~
- Inside source: true
*** True Line Result
player.slash_at = slash_initiate? if slash_initiate?
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_movement~
- Inside source: true
*** True Line Result
def calc_movement
** Processing line: ~ # movement~
- Inside source: true
*** True Line Result
# movement
** Processing line: ~ if vector = inputs.directional_vector~
- Inside source: true
*** True Line Result
if vector = inputs.directional_vector
** Processing line: ~ state.debug_label = vector~
- Inside source: true
*** True Line Result
state.debug_label = vector
** Processing line: ~ player.dir_x = vector.x~
- Inside source: true
*** True Line Result
player.dir_x = vector.x
** Processing line: ~ player.dir_y = vector.y~
- Inside source: true
*** True Line Result
player.dir_y = vector.y
** Processing line: ~ player.is_moving = true~
- Inside source: true
*** True Line Result
player.is_moving = true
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.debug_label = vector~
- Inside source: true
*** True Line Result
state.debug_label = vector
** Processing line: ~ player.is_moving = false~
- Inside source: true
*** True Line Result
player.is_moving = false
** 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_slash~
- Inside source: true
*** True Line Result
def calc_slash
** Processing line: ~ # re-calc the location of the swords collision box~
- Inside source: true
*** True Line Result
# re-calc the location of the swords collision box
** Processing line: ~ if player.dir_x.positive?~
- Inside source: true
*** True Line Result
if player.dir_x.positive?
** Processing line: ~ player.slash_collision_rect = [player.x + player.tile_size,~
- Inside source: true
*** True Line Result
player.slash_collision_rect = [player.x + player.tile_size,
** Processing line: ~ player.y + player.tile_size.half - 10,~
- Inside source: true
*** True Line Result
player.y + player.tile_size.half - 10,
** Processing line: ~ 40, 20]~
- Inside source: true
*** True Line Result
40, 20]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ player.slash_collision_rect = [player.x - 32 - 8,~
- Inside source: true
*** True Line Result
player.slash_collision_rect = [player.x - 32 - 8,
** Processing line: ~ player.y + player.tile_size.half - 10,~
- Inside source: true
*** True Line Result
player.y + player.tile_size.half - 10,
** Processing line: ~ 40, 20]~
- Inside source: true
*** True Line Result
40, 20]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # recalc sword's slash state~
- Inside source: true
*** True Line Result
# recalc sword's slash state
** Processing line: ~ player.slash_at = nil if slash_complete?~
- Inside source: true
*** True Line Result
player.slash_at = nil if slash_complete?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # determine collision if the sword is at it's point of damaging~
- Inside source: true
*** True Line Result
# determine collision if the sword is at it's point of damaging
** Processing line: ~ return unless slash_can_damage?~
- Inside source: true
*** True Line Result
return unless slash_can_damage?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.enemies.reject! { |e| e.intersect_rect? player.slash_collision_rect }~
- Inside source: true
*** True Line Result
state.enemies.reject! { |e| e.intersect_rect? player.slash_collision_rect }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def slash_complete?~
- Inside source: true
*** True Line Result
def slash_complete?
** Processing line: ~ !player.slash_at || player.slash_at.elapsed?(player.slash_frames)~
- Inside source: true
*** True Line Result
!player.slash_at || player.slash_at.elapsed?(player.slash_frames)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def slash_can_damage?~
- Inside source: true
*** True Line Result
def slash_can_damage?
** Processing line: ~ # damage occurs half way into the slash animation~
- Inside source: true
*** True Line Result
# damage occurs half way into the slash animation
** Processing line: ~ return false if slash_complete?~
- Inside source: true
*** True Line Result
return false if slash_complete?
** Processing line: ~ return false if (player.slash_at + player.slash_frames.idiv(2)) != state.tick_count~
- Inside source: true
*** True Line Result
return false if (player.slash_at + player.slash_frames.idiv(2)) != state.tick_count
** Processing line: ~ return true~
- Inside source: true
*** True Line Result
return true
** 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: ~ # generate an enemy if there aren't any on the screen~
- Inside source: true
*** True Line Result
# generate an enemy if there aren't any on the screen
** Processing line: ~ add_enemy if state.enemies.length == 0~
- Inside source: true
*** True Line Result
add_enemy if state.enemies.length == 0
** Processing line: ~ calc_movement~
- Inside source: true
*** True Line Result
calc_movement
** Processing line: ~ calc_slash~
- Inside source: true
*** True Line Result
calc_slash
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # source is at http://github.com/amirrajan/dragonruby-link-to-the-past~
- Inside source: true
*** True Line Result
# source is at http://github.com/amirrajan/dragonruby-link-to-the-past
** 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_enemies~
- Inside source: true
*** True Line Result
render_enemies
** Processing line: ~ render_player~
- Inside source: true
*** True Line Result
render_player
** Processing line: ~ outputs.labels << [30, 30, "Gamepad: D-Pad to move. B button to attack."]~
- Inside source: true
*** True Line Result
outputs.labels << [30, 30, "Gamepad: D-Pad to move. B button to attack."]
** Processing line: ~ outputs.labels << [30, 52, "Keyboard: WASD/Arrow keys to move. J to attack."]~
- Inside source: true
*** True Line Result
outputs.labels << [30, 52, "Keyboard: WASD/Arrow keys to move. J to attack."]
** Processing line: ~ render_debug_layer~
- Inside source: true
*** True Line Result
render_debug_layer
** 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: ~ def player~
- Inside source: true
*** True Line Result
def player
** Processing line: ~ state.player~
- Inside source: true
*** True Line Result
state.player
** 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: ~ $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: ~* Rendering Sprites - Color And Rotation - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rendering Sprites - Color And Rotation - 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/03_rendering_sprites/04_color_and_rotation/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/03_rendering_sprites/04_color_and_rotation/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - merge: Returns a hash containing the contents of two original hashes.~
- Inside source: true
*** True Line Result
- merge: Returns a hash containing the contents of two original hashes.
** Processing line: ~ Merge does not allow duplicate keys, so the value of a repeated key~
- Inside source: true
*** True Line Result
Merge does not allow duplicate keys, so the value of a repeated key
** Processing line: ~ will be overwritten.~
- Inside source: true
*** True Line Result
will be overwritten.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ For example, if we had two hashes~
- Inside source: true
*** True Line Result
For example, if we had two hashes
** Processing line: ~ h1 = { "a" => 1, "b" => 2}~
- Inside source: true
*** True Line Result
h1 = { "a" => 1, "b" => 2}
** Processing line: ~ h2 = { "b" => 3, "c" => 3}~
- Inside source: true
*** True Line Result
h2 = { "b" => 3, "c" => 3}
** Processing line: ~ and we called the command~
- Inside source: true
*** True Line Result
and we called the command
** Processing line: ~ h1.merge(h2)~
- Inside source: true
*** True Line Result
h1.merge(h2)
** Processing line: ~ the result would the following hash~
- Inside source: true
*** True Line Result
the result would the following hash
** Processing line: ~ { "a" => 1, "b" => 3, "c" => 3}.~
- Inside source: true
*** True Line Result
{ "a" => 1, "b" => 3, "c" => 3}.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The value can be found~
- Inside source: true
*** True Line Result
- Hashes: Collection of unique keys and their corresponding values. The value can be found
** Processing line: ~ using their keys.~
- Inside source: true
*** True Line Result
using their keys.
** Processing line: ~ In this sample app, we're using a hash to create a sprite.~
- Inside source: true
*** True Line Result
In this sample app, we're using a hash to create a sprite.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.sprites: An array. The values generate a sprite.~
- Inside source: true
*** True Line Result
- args.outputs.sprites: An array. The values generate a sprite.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, PATH, ANGLE, ALPHA, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, PATH, ANGLE, ALPHA, RED, GREEN, BLUE]
** Processing line: ~ Before continuing with this sample app, it is HIGHLY recommended that you look~
- Inside source: true
*** True Line Result
Before continuing with this sample app, it is HIGHLY recommended that you look
** Processing line: ~ at mygame/documentation/05-sprites.md.~
- Inside source: true
*** True Line Result
at mygame/documentation/05-sprites.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.keyboard.key_held.KEY: Determines if a key is being pressed.~
- Inside source: true
*** True Line Result
- args.inputs.keyboard.key_held.KEY: Determines if a key is being pressed.
** Processing line: ~ For more information about the keyboard, go to mygame/documentation/06-keyboard.md.~
- Inside source: true
*** True Line Result
For more information about the keyboard, go to mygame/documentation/06-keyboard.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.controller_one: Takes input from the controller based on what key is pressed.~
- Inside source: true
*** True Line Result
- args.inputs.controller_one: Takes input from the controller based on what key is pressed.
** Processing line: ~ For more information about the controller, go to mygame/documentation/08-controllers.md.~
- Inside source: true
*** True Line Result
For more information about the controller, go to mygame/documentation/08-controllers.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - num1.lesser(num2): Finds the lower value of the given options.~
- Inside source: true
*** True Line Result
- num1.lesser(num2): Finds the lower value of the given options.
** 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: ~ # This sample app shows a car moving across the screen. It loops back around if it exceeds the dimensions of the screen,~
- Inside source: true
*** True Line Result
# This sample app shows a car moving across the screen. It loops back around if it exceeds the dimensions of the screen,
** Processing line: ~ # and also can be moved in different directions through keyboard input from the user.~
- Inside source: true
*** True Line Result
# and also can be moved in different directions through keyboard input from the user.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls the methods necessary for the game to run successfully.~
- Inside source: true
*** True Line Result
# Calls the methods necessary for the game to run successfully.
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ default args~
- Inside source: true
*** True Line Result
default args
** Processing line: ~ render args.grid, args.outputs, args.state~
- Inside source: true
*** True Line Result
render args.grid, args.outputs, args.state
** Processing line: ~ calc args.state~
- Inside source: true
*** True Line Result
calc args.state
** Processing line: ~ process_inputs args~
- Inside source: true
*** True Line Result
process_inputs args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets default values for the car sprite~
- Inside source: true
*** True Line Result
# Sets default values for the car sprite
** Processing line: ~ # Initialization ||= only happens in the first frame~
- Inside source: true
*** True Line Result
# Initialization ||= only happens in the first frame
** Processing line: ~ def default args~
- Inside source: true
*** True Line Result
def default args
** Processing line: ~ args.state.sprite.width = 19~
- Inside source: true
*** True Line Result
args.state.sprite.width = 19
** Processing line: ~ args.state.sprite.height = 10~
- Inside source: true
*** True Line Result
args.state.sprite.height = 10
** Processing line: ~ args.state.sprite.scale = 4~
- Inside source: true
*** True Line Result
args.state.sprite.scale = 4
** Processing line: ~ args.state.max_speed = 5~
- Inside source: true
*** True Line Result
args.state.max_speed = 5
** Processing line: ~ args.state.x ||= 100~
- Inside source: true
*** True Line Result
args.state.x ||= 100
** Processing line: ~ args.state.y ||= 100~
- Inside source: true
*** True Line Result
args.state.y ||= 100
** Processing line: ~ args.state.speed ||= 1~
- Inside source: true
*** True Line Result
args.state.speed ||= 1
** Processing line: ~ args.state.angle ||= 0~
- Inside source: true
*** True Line Result
args.state.angle ||= 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs sprite onto screen~
- Inside source: true
*** True Line Result
# Outputs sprite onto screen
** Processing line: ~ def render grid, outputs, state~
- Inside source: true
*** True Line Result
def render grid, outputs, state
** Processing line: ~ outputs.solids << [grid.rect, 70, 70, 70] # outputs gray background~
- Inside source: true
*** True Line Result
outputs.solids << [grid.rect, 70, 70, 70] # outputs gray background
** Processing line: ~ outputs.sprites << [destination_rect(state), # sets first four parameters of car sprite~
- Inside source: true
*** True Line Result
outputs.sprites << [destination_rect(state), # sets first four parameters of car sprite
** Processing line: ~ 'sprites/86.png', # image path of car~
- Inside source: true
*** True Line Result
'sprites/86.png', # image path of car
** Processing line: ~ state.angle,~
- Inside source: true
*** True Line Result
state.angle,
** Processing line: ~ opacity, # transparency~
- Inside source: true
*** True Line Result
opacity, # transparency
** Processing line: ~ saturation,~
- Inside source: true
*** True Line Result
saturation,
** Processing line: ~ source_rect(state), # sprite sub division/tile (tile x, y, w, h)~
- Inside source: true
*** True Line Result
source_rect(state), # sprite sub division/tile (tile x, y, w, h)
** Processing line: ~ false, false, # don't flip sprites~
- Inside source: true
*** True Line Result
false, false, # don't flip sprites
** Processing line: ~ rotation_anchor]~
- Inside source: true
*** True Line Result
rotation_anchor]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # also look at the create_sprite helper method~
- Inside source: true
*** True Line Result
# also look at the create_sprite helper method
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # For example:~
- Inside source: true
*** True Line Result
# For example:
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # dest = destination_rect(state)~
- Inside source: true
*** True Line Result
# dest = destination_rect(state)
** Processing line: ~ # source = source_rect(state),~
- Inside source: true
*** True Line Result
# source = source_rect(state),
** Processing line: ~ # outputs.sprites << create_sprite(~
- Inside source: true
*** True Line Result
# outputs.sprites << create_sprite(
** Processing line: ~ # 'sprites/86.png',~
- Inside source: true
*** True Line Result
# 'sprites/86.png',
** Processing line: ~ # x: dest.x,~
- Inside source: true
*** True Line Result
# x: dest.x,
** Processing line: ~ # y: dest.y,~
- Inside source: true
*** True Line Result
# y: dest.y,
** Processing line: ~ # w: dest.w,~
- Inside source: true
*** True Line Result
# w: dest.w,
** Processing line: ~ # h: dest.h,~
- Inside source: true
*** True Line Result
# h: dest.h,
** Processing line: ~ # angle: state.angle,~
- Inside source: true
*** True Line Result
# angle: state.angle,
** Processing line: ~ # source_x: source.x,~
- Inside source: true
*** True Line Result
# source_x: source.x,
** Processing line: ~ # source_y: source.y,~
- Inside source: true
*** True Line Result
# source_y: source.y,
** Processing line: ~ # source_w: source.w,~
- Inside source: true
*** True Line Result
# source_w: source.w,
** Processing line: ~ # source_h: source.h,~
- Inside source: true
*** True Line Result
# source_h: source.h,
** Processing line: ~ # flip_h: false,~
- Inside source: true
*** True Line Result
# flip_h: false,
** Processing line: ~ # flip_v: false,~
- Inside source: true
*** True Line Result
# flip_v: false,
** Processing line: ~ # rotation_anchor_x: 0.7,~
- Inside source: true
*** True Line Result
# rotation_anchor_x: 0.7,
** Processing line: ~ # rotation_anchor_y: 0.5~
- Inside source: true
*** True Line Result
# rotation_anchor_y: 0.5
** 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: ~ # Creates sprite by setting values inside of a hash~
- Inside source: true
*** True Line Result
# Creates sprite by setting values inside of a hash
** Processing line: ~ def create_sprite path, options = {}~
- Inside source: true
*** True Line Result
def create_sprite path, options = {}
** Processing line: ~ options = {~
- Inside source: true
*** True Line Result
options = {
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # dest x, y, w, h~
- Inside source: true
*** True Line Result
# dest x, y, w, h
** Processing line: ~ x: 0,~
- Inside source: true
*** True Line Result
x: 0,
** Processing line: ~ y: 0,~
- Inside source: true
*** True Line Result
y: 0,
** Processing line: ~ w: 100,~
- Inside source: true
*** True Line Result
w: 100,
** Processing line: ~ h: 100,~
- Inside source: true
*** True Line Result
h: 100,
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # angle, rotation~
- Inside source: true
*** True Line Result
# angle, rotation
** Processing line: ~ angle: 0,~
- Inside source: true
*** True Line Result
angle: 0,
** Processing line: ~ rotation_anchor_x: 0.5,~
- Inside source: true
*** True Line Result
rotation_anchor_x: 0.5,
** Processing line: ~ rotation_anchor_y: 0.5,~
- Inside source: true
*** True Line Result
rotation_anchor_y: 0.5,
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # color saturation (red, green, blue), transparency~
- Inside source: true
*** True Line Result
# color saturation (red, green, blue), transparency
** Processing line: ~ r: 255,~
- Inside source: true
*** True Line Result
r: 255,
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 255,~
- Inside source: true
*** True Line Result
b: 255,
** Processing line: ~ a: 255,~
- Inside source: true
*** True Line Result
a: 255,
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # source x, y, width, height~
- Inside source: true
*** True Line Result
# source x, y, width, height
** Processing line: ~ source_x: 0,~
- Inside source: true
*** True Line Result
source_x: 0,
** Processing line: ~ source_y: 0,~
- Inside source: true
*** True Line Result
source_y: 0,
** Processing line: ~ source_w: -1,~
- Inside source: true
*** True Line Result
source_w: -1,
** Processing line: ~ source_h: -1,~
- Inside source: true
*** True Line Result
source_h: -1,
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # flip horiztonally, flip vertically~
- Inside source: true
*** True Line Result
# flip horiztonally, flip vertically
** Processing line: ~ flip_h: false,~
- Inside source: true
*** True Line Result
flip_h: false,
** Processing line: ~ flip_v: false,~
- Inside source: true
*** True Line Result
flip_v: false,
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ }.merge options~
- Inside source: true
*** True Line Result
}.merge options
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ options[:x], options[:y], options[:w], options[:h], # dest rect keys~
- Inside source: true
*** True Line Result
options[:x], options[:y], options[:w], options[:h], # dest rect keys
** Processing line: ~ path,~
- Inside source: true
*** True Line Result
path,
** Processing line: ~ options[:angle], options[:a], options[:r], options[:g], options[:b], # angle, color, alpha~
- Inside source: true
*** True Line Result
options[:angle], options[:a], options[:r], options[:g], options[:b], # angle, color, alpha
** Processing line: ~ options[:source_x], options[:source_y], options[:source_w], options[:source_h], # source rect keys~
- Inside source: true
*** True Line Result
options[:source_x], options[:source_y], options[:source_w], options[:source_h], # source rect keys
** Processing line: ~ options[:flip_h], options[:flip_v], # flip~
- Inside source: true
*** True Line Result
options[:flip_h], options[:flip_v], # flip
** Processing line: ~ options[:rotation_anchor_x], options[:rotation_anchor_y], # rotation anchor~
- Inside source: true
*** True Line Result
options[:rotation_anchor_x], options[:rotation_anchor_y], # rotation anchor
** Processing line: ~ ] # hash keys contain corresponding values~
- Inside source: true
*** True Line Result
] # hash keys contain corresponding values
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls the calc_pos and calc_wrap methods.~
- Inside source: true
*** True Line Result
# Calls the calc_pos and calc_wrap methods.
** Processing line: ~ def calc state~
- Inside source: true
*** True Line Result
def calc state
** Processing line: ~ calc_pos state~
- Inside source: true
*** True Line Result
calc_pos state
** Processing line: ~ calc_wrap state~
- Inside source: true
*** True Line Result
calc_wrap state
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Changes sprite's position on screen~
- Inside source: true
*** True Line Result
# Changes sprite's position on screen
** Processing line: ~ # Vectors have magnitude and direction, so the incremented x and y values give the car direction~
- Inside source: true
*** True Line Result
# Vectors have magnitude and direction, so the incremented x and y values give the car direction
** Processing line: ~ def calc_pos state~
- Inside source: true
*** True Line Result
def calc_pos state
** Processing line: ~ state.x += state.angle.vector_x * state.speed # increments x by product of angle's x vector and speed~
- Inside source: true
*** True Line Result
state.x += state.angle.vector_x * state.speed # increments x by product of angle's x vector and speed
** Processing line: ~ state.y += state.angle.vector_y * state.speed # increments y by product of angle's y vector and speed~
- Inside source: true
*** True Line Result
state.y += state.angle.vector_y * state.speed # increments y by product of angle's y vector and speed
** Processing line: ~ state.speed *= 1.1 # scales speed up~
- Inside source: true
*** True Line Result
state.speed *= 1.1 # scales speed up
** Processing line: ~ state.speed = state.speed.lesser(state.max_speed) # speed is either current speed or max speed, whichever has a lesser value (ensures that the car doesn't go too fast or exceed the max speed)~
- Inside source: true
*** True Line Result
state.speed = state.speed.lesser(state.max_speed) # speed is either current speed or max speed, whichever has a lesser value (ensures that the car doesn't go too fast or exceed the max speed)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The screen's dimensions are 1280x720. If the car goes out of scope,~
- Inside source: true
*** True Line Result
# The screen's dimensions are 1280x720. If the car goes out of scope,
** Processing line: ~ # it loops back around on the screen.~
- Inside source: true
*** True Line Result
# it loops back around on the screen.
** Processing line: ~ def calc_wrap state~
- Inside source: true
*** True Line Result
def calc_wrap state
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # car returns to left side of screen if it disappears on right side of screen~
- Inside source: true
*** True Line Result
# car returns to left side of screen if it disappears on right side of screen
** Processing line: ~ # sprite.width refers to tile's size, which is multipled by scale (4) to make it bigger~
- Inside source: true
*** True Line Result
# sprite.width refers to tile's size, which is multipled by scale (4) to make it bigger
** Processing line: ~ state.x = -state.sprite.width * state.sprite.scale if state.x - 20 > 1280~
- Inside source: true
*** True Line Result
state.x = -state.sprite.width * state.sprite.scale if state.x - 20 > 1280
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # car wraps around to right side of screen if it disappears on the left side~
- Inside source: true
*** True Line Result
# car wraps around to right side of screen if it disappears on the left side
** Processing line: ~ state.x = 1280 if state.x + state.sprite.width * state.sprite.scale + 20 < 0~
- Inside source: true
*** True Line Result
state.x = 1280 if state.x + state.sprite.width * state.sprite.scale + 20 < 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # car wraps around to bottom of screen if it disappears at the top of the screen~
- Inside source: true
*** True Line Result
# car wraps around to bottom of screen if it disappears at the top of the screen
** Processing line: ~ # if you subtract 520 pixels instead of 20 pixels, the car takes longer to reappear (try it!)~
- Inside source: true
*** True Line Result
# if you subtract 520 pixels instead of 20 pixels, the car takes longer to reappear (try it!)
** Processing line: ~ state.y = 0 if state.y - 20 > 720 # if 20 pixels less than car's y position is greater than vertical scope~
- Inside source: true
*** True Line Result
state.y = 0 if state.y - 20 > 720 # if 20 pixels less than car's y position is greater than vertical scope
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # car wraps around to top of screen if it disappears at the bottom of the screen~
- Inside source: true
*** True Line Result
# car wraps around to top of screen if it disappears at the bottom of the screen
** Processing line: ~ state.y = 720 if state.y + state.sprite.height * state.sprite.scale + 20 < 0~
- Inside source: true
*** True Line Result
state.y = 720 if state.y + state.sprite.height * state.sprite.scale + 20 < 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Changes angle of sprite based on user input from keyboard or controller~
- Inside source: true
*** True Line Result
# Changes angle of sprite based on user input from keyboard or controller
** Processing line: ~ def process_inputs args~
- Inside source: true
*** True Line Result
def process_inputs args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # NOTE: increasing the angle doesn't mean that the car will continue to go~
- Inside source: true
*** True Line Result
# NOTE: increasing the angle doesn't mean that the car will continue to go
** Processing line: ~ # in a specific direction. The angle is increasing, which means that if the~
- Inside source: true
*** True Line Result
# in a specific direction. The angle is increasing, which means that if the
** Processing line: ~ # left key was kept in the "down" state, the change in the angle would cause~
- Inside source: true
*** True Line Result
# left key was kept in the "down" state, the change in the angle would cause
** Processing line: ~ # the car to go in a counter-clockwise direction and form a circle (360 degrees)~
- Inside source: true
*** True Line Result
# the car to go in a counter-clockwise direction and form a circle (360 degrees)
** Processing line: ~ if args.inputs.keyboard.key_held.left # if left key is pressed~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_held.left # if left key is pressed
** Processing line: ~ args.state.angle += 2 # car's angle is incremented by 2~
- Inside source: true
*** True Line Result
args.state.angle += 2 # car's angle is incremented by 2
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The same applies to decreasing the angle. If the right key was kept in the~
- Inside source: true
*** True Line Result
# The same applies to decreasing the angle. If the right key was kept in the
** Processing line: ~ # "down" state, the decreasing angle would cause the car to go in a clockwise~
- Inside source: true
*** True Line Result
# "down" state, the decreasing angle would cause the car to go in a clockwise
** Processing line: ~ # direction and form a circle (360 degrees)~
- Inside source: true
*** True Line Result
# direction and form a circle (360 degrees)
** Processing line: ~ elsif args.inputs.keyboard.key_held.right # if right key is pressed~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_held.right # if right key is pressed
** Processing line: ~ args.state.angle -= 2 # car's angle is decremented by 2~
- Inside source: true
*** True Line Result
args.state.angle -= 2 # car's angle is decremented by 2
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Input from a controller can also change the angle of the car~
- Inside source: true
*** True Line Result
# Input from a controller can also change the angle of the car
** Processing line: ~ elsif args.inputs.controller_one.left_analog_x_perc != 0~
- Inside source: true
*** True Line Result
elsif args.inputs.controller_one.left_analog_x_perc != 0
** Processing line: ~ args.state.angle += 2 * args.inputs.controller_one.left_analog_x_perc * -1~
- Inside source: true
*** True Line Result
args.state.angle += 2 * args.inputs.controller_one.left_analog_x_perc * -1
** 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: ~ # A sprite's center of rotation can be altered~
- Inside source: true
*** True Line Result
# A sprite's center of rotation can be altered
** Processing line: ~ # Increasing either of these numbers would dramatically increase the~
- Inside source: true
*** True Line Result
# Increasing either of these numbers would dramatically increase the
** Processing line: ~ # car's drift when it turns!~
- Inside source: true
*** True Line Result
# car's drift when it turns!
** Processing line: ~ def rotation_anchor~
- Inside source: true
*** True Line Result
def rotation_anchor
** Processing line: ~ [0.7, 0.5]~
- Inside source: true
*** True Line Result
[0.7, 0.5]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets opacity value of sprite to 255 so that it is not transparent at all~
- Inside source: true
*** True Line Result
# Sets opacity value of sprite to 255 so that it is not transparent at all
** Processing line: ~ # Change it to 0 and you won't be able to see the car sprite on the screen~
- Inside source: true
*** True Line Result
# Change it to 0 and you won't be able to see the car sprite on the screen
** Processing line: ~ def opacity~
- Inside source: true
*** True Line Result
def opacity
** Processing line: ~ 255~
- Inside source: true
*** True Line Result
255
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the color of the sprite to white.~
- Inside source: true
*** True Line Result
# Sets the color of the sprite to white.
** Processing line: ~ def saturation~
- Inside source: true
*** True Line Result
def saturation
** Processing line: ~ [255, 255, 255]~
- Inside source: true
*** True Line Result
[255, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets definition of destination_rect (used to define the car sprite)~
- Inside source: true
*** True Line Result
# Sets definition of destination_rect (used to define the car sprite)
** Processing line: ~ def destination_rect state~
- Inside source: true
*** True Line Result
def destination_rect state
** Processing line: ~ [state.x, state.y,~
- Inside source: true
*** True Line Result
[state.x, state.y,
** Processing line: ~ state.sprite.width * state.sprite.scale, # multiplies by 4 to set size~
- Inside source: true
*** True Line Result
state.sprite.width * state.sprite.scale, # multiplies by 4 to set size
** Processing line: ~ state.sprite.height * state.sprite.scale]~
- Inside source: true
*** True Line Result
state.sprite.height * state.sprite.scale]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Portion of a sprite (a tile)~
- Inside source: true
*** True Line Result
# Portion of a sprite (a tile)
** Processing line: ~ # Sub division of sprite is denoted as a rectangle directly related to original size of .png~
- Inside source: true
*** True Line Result
# Sub division of sprite is denoted as a rectangle directly related to original size of .png
** Processing line: ~ # Tile is located at bottom left corner within a 19x10 pixel rectangle (based on sprite.width, sprite.height)~
- Inside source: true
*** True Line Result
# Tile is located at bottom left corner within a 19x10 pixel rectangle (based on sprite.width, sprite.height)
** Processing line: ~ def source_rect state~
- Inside source: true
*** True Line Result
def source_rect state
** Processing line: ~ [0, 0, state.sprite.width, state.sprite.height]~
- Inside source: true
*** True Line Result
[0, 0, state.sprite.width, state.sprite.height]
** 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: ~* Physics And Collisions - Simple - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Physics And Collisions - Simple - 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/04_physics_and_collisions/01_simple/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/04_physics_and_collisions/01_simple/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.~
- Inside source: true
*** True Line Result
- ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
- Inside source: true
*** True Line Result
- args.outputs.solids: An array. The values generate a solid.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]
** 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: ~ # This sample app shows collisions between two boxes.~
- Inside source: true
*** True Line Result
# This sample app shows collisions between two boxes.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs methods needed for game to run properly.~
- Inside source: true
*** True Line Result
# Runs methods needed for game to run properly.
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Sample app shows how to move a square over time and determine collision."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to move a square over time and determine collision."
** 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: ~ 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: ~ # Sets default values.~
- Inside source: true
*** True Line Result
# Sets default values.
** Processing line: ~ def defaults args~
- Inside source: true
*** True Line Result
def defaults args
** Processing line: ~ # These values represent the moving box.~
- Inside source: true
*** True Line Result
# These values represent the moving box.
** Processing line: ~ args.state.moving_box_speed = 10~
- Inside source: true
*** True Line Result
args.state.moving_box_speed = 10
** Processing line: ~ args.state.moving_box_size = 100~
- Inside source: true
*** True Line Result
args.state.moving_box_size = 100
** Processing line: ~ args.state.moving_box_dx ||= 1~
- Inside source: true
*** True Line Result
args.state.moving_box_dx ||= 1
** Processing line: ~ args.state.moving_box_dy ||= 1~
- Inside source: true
*** True Line Result
args.state.moving_box_dy ||= 1
** Processing line: ~ args.state.moving_box ||= [0, 0, args.state.moving_box_size, args.state.moving_box_size] # moving_box_size is set as the width and height~
- Inside source: true
*** True Line Result
args.state.moving_box ||= [0, 0, args.state.moving_box_size, args.state.moving_box_size] # moving_box_size is set as the width and height
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # These values represent the center box.~
- Inside source: true
*** True Line Result
# These values represent the center box.
** Processing line: ~ args.state.center_box ||= [540, 260, 200, 200, 180]~
- Inside source: true
*** True Line Result
args.state.center_box ||= [540, 260, 200, 200, 180]
** Processing line: ~ args.state.center_box_collision ||= false # initially no collision~
- Inside source: true
*** True Line Result
args.state.center_box_collision ||= false # initially no collision
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render args~
- Inside source: true
*** True Line Result
def render args
** Processing line: ~ # If the game state denotes that a collision has occured,~
- Inside source: true
*** True Line Result
# If the game state denotes that a collision has occured,
** Processing line: ~ # render a solid square, otherwise render a border instead.~
- Inside source: true
*** True Line Result
# render a solid square, otherwise render a border instead.
** Processing line: ~ if args.state.center_box_collision~
- Inside source: true
*** True Line Result
if args.state.center_box_collision
** Processing line: ~ args.outputs.solids << args.state.center_box~
- Inside source: true
*** True Line Result
args.outputs.solids << args.state.center_box
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.outputs.borders << args.state.center_box~
- Inside source: true
*** True Line Result
args.outputs.borders << args.state.center_box
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Then render the moving box.~
- Inside source: true
*** True Line Result
# Then render the moving box.
** Processing line: ~ args.outputs.solids << args.state.moving_box~
- Inside source: true
*** True Line Result
args.outputs.solids << args.state.moving_box
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Generally in a pipeline for a game engine, you have rendering,~
- Inside source: true
*** True Line Result
# Generally in a pipeline for a game engine, you have rendering,
** Processing line: ~ # game simulation (calculation), and input processing.~
- Inside source: true
*** True Line Result
# game simulation (calculation), and input processing.
** Processing line: ~ # This fuction represents the game simulation.~
- Inside source: true
*** True Line Result
# This fuction represents the game simulation.
** Processing line: ~ def calc args~
- Inside source: true
*** True Line Result
def calc args
** Processing line: ~ position_moving_box args~
- Inside source: true
*** True Line Result
position_moving_box args
** Processing line: ~ determine_collision_center_box args~
- Inside source: true
*** True Line Result
determine_collision_center_box args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Changes the position of the moving box on the screen by multiplying the change in x (dx) and change in y (dy) by the speed,~
- Inside source: true
*** True Line Result
# Changes the position of the moving box on the screen by multiplying the change in x (dx) and change in y (dy) by the speed,
** Processing line: ~ # and adding it to the current position.~
- Inside source: true
*** True Line Result
# and adding it to the current position.
** Processing line: ~ # dx and dy are positive if the box is moving right and up, respectively~
- Inside source: true
*** True Line Result
# dx and dy are positive if the box is moving right and up, respectively
** Processing line: ~ # dx and dy are negative if the box is moving left and down, respectively~
- Inside source: true
*** True Line Result
# dx and dy are negative if the box is moving left and down, respectively
** Processing line: ~ def position_moving_box args~
- Inside source: true
*** True Line Result
def position_moving_box args
** Processing line: ~ args.state.moving_box.x += args.state.moving_box_dx * args.state.moving_box_speed~
- Inside source: true
*** True Line Result
args.state.moving_box.x += args.state.moving_box_dx * args.state.moving_box_speed
** Processing line: ~ args.state.moving_box.y += args.state.moving_box_dy * args.state.moving_box_speed~
- Inside source: true
*** True Line Result
args.state.moving_box.y += args.state.moving_box_dy * args.state.moving_box_speed
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # 1280x720 are the virtual pixels you work with (essentially 720p).~
- Inside source: true
*** True Line Result
# 1280x720 are the virtual pixels you work with (essentially 720p).
** Processing line: ~ screen_width = 1280~
- Inside source: true
*** True Line Result
screen_width = 1280
** Processing line: ~ screen_height = 720~
- Inside source: true
*** True Line Result
screen_height = 720
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Position of the box is denoted by the bottom left hand corner, in~
- Inside source: true
*** True Line Result
# Position of the box is denoted by the bottom left hand corner, in
** Processing line: ~ # that case, we have to subtract the width of the box so that it stays~
- Inside source: true
*** True Line Result
# that case, we have to subtract the width of the box so that it stays
** Processing line: ~ # in the scene (you can try deleting the subtraction to see how it~
- Inside source: true
*** True Line Result
# in the scene (you can try deleting the subtraction to see how it
** Processing line: ~ # impacts the box's movement).~
- Inside source: true
*** True Line Result
# impacts the box's movement).
** Processing line: ~ if args.state.moving_box.x > screen_width - args.state.moving_box_size~
- Inside source: true
*** True Line Result
if args.state.moving_box.x > screen_width - args.state.moving_box_size
** Processing line: ~ args.state.moving_box_dx = -1 # moves left~
- Inside source: true
*** True Line Result
args.state.moving_box_dx = -1 # moves left
** Processing line: ~ elsif args.state.moving_box.x < 0~
- Inside source: true
*** True Line Result
elsif args.state.moving_box.x < 0
** Processing line: ~ args.state.moving_box_dx = 1 # moves right~
- Inside source: true
*** True Line Result
args.state.moving_box_dx = 1 # moves right
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Here, we're making sure the moving box remains within the vertical scope of the screen~
- Inside source: true
*** True Line Result
# Here, we're making sure the moving box remains within the vertical scope of the screen
** Processing line: ~ if args.state.moving_box.y > screen_height - args.state.moving_box_size # if the box moves too high~
- Inside source: true
*** True Line Result
if args.state.moving_box.y > screen_height - args.state.moving_box_size # if the box moves too high
** Processing line: ~ args.state.moving_box_dy = -1 # moves down~
- Inside source: true
*** True Line Result
args.state.moving_box_dy = -1 # moves down
** Processing line: ~ elsif args.state.moving_box.y < 0 # if the box moves too low~
- Inside source: true
*** True Line Result
elsif args.state.moving_box.y < 0 # if the box moves too low
** Processing line: ~ args.state.moving_box_dy = 1 # moves up~
- Inside source: true
*** True Line Result
args.state.moving_box_dy = 1 # moves up
** 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 determine_collision_center_box args~
- Inside source: true
*** True Line Result
def determine_collision_center_box args
** Processing line: ~ # Collision is handled by the engine. You simply have to call the~
- Inside source: true
*** True Line Result
# Collision is handled by the engine. You simply have to call the
** Processing line: ~ # `intersect_rect?` function.~
- Inside source: true
*** True Line Result
# `intersect_rect?` function.
** Processing line: ~ if args.state.moving_box.intersect_rect? args.state.center_box # if the two boxes intersect~
- Inside source: true
*** True Line Result
if args.state.moving_box.intersect_rect? args.state.center_box # if the two boxes intersect
** Processing line: ~ args.state.center_box_collision = true # then a collision happened~
- Inside source: true
*** True Line Result
args.state.center_box_collision = true # then a collision happened
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.state.center_box_collision = false # otherwise, no collision happened~
- Inside source: true
*** True Line Result
args.state.center_box_collision = false # otherwise, no collision happened
** 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_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Physics And Collisions - Moving Objects - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Physics And Collisions - Moving Objects - 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/04_physics_and_collisions/02_moving_objects/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/04_physics_and_collisions/02_moving_objects/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The value can be found~
- Inside source: true
*** True Line Result
- Hashes: Collection of unique keys and their corresponding values. The value can be found
** Processing line: ~ using their keys.~
- Inside source: true
*** True Line Result
using their keys.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ For example, if we have a "numbers" hash that stores numbers in English as the~
- Inside source: true
*** True Line Result
For example, if we have a "numbers" hash that stores numbers in English as the
** Processing line: ~ key and numbers in Spanish as the value, we'd have a hash that looks like this...~
- Inside source: true
*** True Line Result
key and numbers in Spanish as the value, we'd have a hash that looks like this...
** Processing line: ~ numbers = { "one" => "uno", "two" => "dos", "three" => "tres" }~
- Inside source: true
*** True Line Result
numbers = { "one" => "uno", "two" => "dos", "three" => "tres" }
** Processing line: ~ and on it goes.~
- Inside source: true
*** True Line Result
and on it goes.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Now if we wanted to find the corresponding value of the "one" key, we could say~
- Inside source: true
*** True Line Result
Now if we wanted to find the corresponding value of the "one" key, we could say
** Processing line: ~ puts numbers["one"]~
- Inside source: true
*** True Line Result
puts numbers["one"]
** Processing line: ~ which would print "uno" to the console.~
- Inside source: true
*** True Line Result
which would print "uno" to the console.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - num1.greater(num2): Returns the greater value.~
- Inside source: true
*** True Line Result
- num1.greater(num2): Returns the greater value.
** Processing line: ~ For example, if we have the command~
- Inside source: true
*** True Line Result
For example, if we have the command
** Processing line: ~ puts 4.greater(3)~
- Inside source: true
*** True Line Result
puts 4.greater(3)
** Processing line: ~ the number 4 would be printed to the console since it has a greater value than 3.~
- Inside source: true
*** True Line Result
the number 4 would be printed to the console since it has a greater value than 3.
** Processing line: ~ Similar to lesser, which returns the lesser value.~
- Inside source: true
*** True Line Result
Similar to lesser, which returns the lesser value.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - num1.lesser(num2): Finds the lower value of the given options.~
- Inside source: true
*** True Line Result
- num1.lesser(num2): Finds the lower value of the given options.
** Processing line: ~ For example, in the statement~
- Inside source: true
*** True Line Result
For example, in the statement
** Processing line: ~ a = 4.lesser(3)~
- Inside source: true
*** True Line Result
a = 4.lesser(3)
** Processing line: ~ 3 has a lower value than 4, which means that the value of a would be set to 3,~
- Inside source: true
*** True Line Result
3 has a lower value than 4, which means that the value of a would be set to 3,
** Processing line: ~ but if the statement had been~
- Inside source: true
*** True Line Result
but if the statement had been
** Processing line: ~ a = 4.lesser(5)~
- Inside source: true
*** True Line Result
a = 4.lesser(5)
** Processing line: ~ 4 has a lower value than 5, which means that the value of a would be set to 4.~
- Inside source: true
*** True Line Result
4 has a lower value than 5, which means that the value of a would be set to 4.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
- Inside source: true
*** True Line Result
- reject: Removes elements from a collection if they meet certain requirements.
** Processing line: ~ For example, you can derive an array of odd numbers from an original array of~
- Inside source: true
*** True Line Result
For example, you can derive an array of odd numbers from an original array of
** Processing line: ~ numbers 1 through 10 by rejecting all elements that are even (or divisible by 2).~
- Inside source: true
*** True Line Result
numbers 1 through 10 by rejecting all elements that are even (or divisible by 2).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - find_all: Finds all values that satisfy specific requirements.~
- Inside source: true
*** True Line Result
- find_all: Finds all values that satisfy specific requirements.
** Processing line: ~ For example, you can find all elements of a collection that are divisible by 2~
- Inside source: true
*** True Line Result
For example, you can find all elements of a collection that are divisible by 2
** Processing line: ~ or find all objects that have intersected with another object.~
- Inside source: true
*** True Line Result
or find all objects that have intersected with another object.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - abs: Returns the absolute value.~
- Inside source: true
*** True Line Result
- abs: Returns the absolute value.
** Processing line: ~ For example, the command~
- Inside source: true
*** True Line Result
For example, the command
** Processing line: ~ (-30).abs~
- Inside source: true
*** True Line Result
(-30).abs
** Processing line: ~ would return 30 as a result.~
- Inside source: true
*** True Line Result
would return 30 as a result.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - map: Ruby method used to transform data; used in arrays, hashes, and collections.~
- Inside source: true
*** True Line Result
- map: Ruby method used to transform data; used in arrays, hashes, and collections.
** Processing line: ~ Can be used to perform an action on every element of a collection, such as multiplying~
- Inside source: true
*** True Line Result
Can be used to perform an action on every element of a collection, such as multiplying
** Processing line: ~ each element by 2 or declaring every element as a new entity.~
- Inside source: true
*** True Line Result
each element by 2 or declaring every element as a new entity.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.keyboard.KEY: Determines if a key has been pressed.~
- Inside source: true
*** True Line Result
- args.inputs.keyboard.KEY: Determines if a key has been pressed.
** Processing line: ~ For more information about the keyboard, take a look at mygame/documentation/06-keyboard.md.~
- Inside source: true
*** True Line Result
For more information about the keyboard, take a look at mygame/documentation/06-keyboard.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.~
- Inside source: true
*** True Line Result
- ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
- Inside source: true
*** True Line Result
- args.outputs.solids: An array. The values generate a solid.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
- Inside source: true
*** True Line Result
For more information about solids, go to mygame/documentation/03-solids-and-borders.md.
** 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: ~ # Calls methods needed for game to run properly~
- Inside source: true
*** True Line Result
# Calls methods needed for game to run properly
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Use LEFT and RIGHT arrow keys to move and SPACE to jump."~
- Inside source: true
*** True Line Result
tick_instructions args, "Use LEFT and RIGHT arrow keys to move and SPACE to jump."
** 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: ~ calc args~
- Inside source: true
*** True Line Result
calc args
** Processing line: ~ input args~
- Inside source: true
*** True Line Result
input args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # sets default values and creates empty collections~
- Inside source: true
*** True Line Result
# sets default values and creates empty collections
** Processing line: ~ # initialization only happens in the first frame~
- Inside source: true
*** True Line Result
# initialization only happens in the first frame
** Processing line: ~ def defaults args~
- Inside source: true
*** True Line Result
def defaults args
** Processing line: ~ fiddle args~
- Inside source: true
*** True Line Result
fiddle args
** Processing line: ~ args.state.enemy.hammers ||= []~
- Inside source: true
*** True Line Result
args.state.enemy.hammers ||= []
** Processing line: ~ args.state.enemy.hammer_queue ||= []~
- Inside source: true
*** True Line Result
args.state.enemy.hammer_queue ||= []
** Processing line: ~ args.state.tick_count = args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.tick_count = args.state.tick_count
** Processing line: ~ args.state.bridge_top = 128~
- Inside source: true
*** True Line Result
args.state.bridge_top = 128
** Processing line: ~ args.state.player.x ||= 0 # initializes player's properties~
- Inside source: true
*** True Line Result
args.state.player.x ||= 0 # initializes player's properties
** Processing line: ~ args.state.player.y ||= args.state.bridge_top~
- Inside source: true
*** True Line Result
args.state.player.y ||= args.state.bridge_top
** Processing line: ~ args.state.player.w ||= 64~
- Inside source: true
*** True Line Result
args.state.player.w ||= 64
** Processing line: ~ args.state.player.h ||= 64~
- Inside source: true
*** True Line Result
args.state.player.h ||= 64
** Processing line: ~ args.state.player.dy ||= 0~
- Inside source: true
*** True Line Result
args.state.player.dy ||= 0
** Processing line: ~ args.state.player.dx ||= 0~
- Inside source: true
*** True Line Result
args.state.player.dx ||= 0
** Processing line: ~ args.state.enemy.x ||= 800 # initializes enemy's properties~
- Inside source: true
*** True Line Result
args.state.enemy.x ||= 800 # initializes enemy's properties
** Processing line: ~ args.state.enemy.y ||= 0~
- Inside source: true
*** True Line Result
args.state.enemy.y ||= 0
** Processing line: ~ args.state.enemy.w ||= 128~
- Inside source: true
*** True Line Result
args.state.enemy.w ||= 128
** Processing line: ~ args.state.enemy.h ||= 128~
- Inside source: true
*** True Line Result
args.state.enemy.h ||= 128
** Processing line: ~ args.state.enemy.dy ||= 0~
- Inside source: true
*** True Line Result
args.state.enemy.dy ||= 0
** Processing line: ~ args.state.enemy.dx ||= 0~
- Inside source: true
*** True Line Result
args.state.enemy.dx ||= 0
** Processing line: ~ args.state.game_over_at ||= 0~
- Inside source: true
*** True Line Result
args.state.game_over_at ||= 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # sets enemy, player, hammer values~
- Inside source: true
*** True Line Result
# sets enemy, player, hammer values
** Processing line: ~ def fiddle args~
- Inside source: true
*** True Line Result
def fiddle args
** Processing line: ~ args.state.gravity = -0.3~
- Inside source: true
*** True Line Result
args.state.gravity = -0.3
** Processing line: ~ args.state.enemy_jump_power = 10 # sets enemy values~
- Inside source: true
*** True Line Result
args.state.enemy_jump_power = 10 # sets enemy values
** Processing line: ~ args.state.enemy_jump_interval = 60~
- Inside source: true
*** True Line Result
args.state.enemy_jump_interval = 60
** Processing line: ~ args.state.hammer_throw_interval = 40 # sets hammer values~
- Inside source: true
*** True Line Result
args.state.hammer_throw_interval = 40 # sets hammer values
** Processing line: ~ args.state.hammer_launch_power_default = 5~
- Inside source: true
*** True Line Result
args.state.hammer_launch_power_default = 5
** Processing line: ~ args.state.hammer_launch_power_near = 2~
- Inside source: true
*** True Line Result
args.state.hammer_launch_power_near = 2
** Processing line: ~ args.state.hammer_launch_power_far = 7~
- Inside source: true
*** True Line Result
args.state.hammer_launch_power_far = 7
** Processing line: ~ args.state.hammer_upward_launch_power = 15~
- Inside source: true
*** True Line Result
args.state.hammer_upward_launch_power = 15
** Processing line: ~ args.state.max_hammers_per_volley = 10~
- Inside source: true
*** True Line Result
args.state.max_hammers_per_volley = 10
** Processing line: ~ args.state.gap_between_hammers = 10~
- Inside source: true
*** True Line Result
args.state.gap_between_hammers = 10
** Processing line: ~ args.state.player_jump_power = 10 # sets player values~
- Inside source: true
*** True Line Result
args.state.player_jump_power = 10 # sets player values
** Processing line: ~ args.state.player_jump_power_duration = 10~
- Inside source: true
*** True Line Result
args.state.player_jump_power_duration = 10
** Processing line: ~ args.state.player_max_run_speed = 10~
- Inside source: true
*** True Line Result
args.state.player_max_run_speed = 10
** Processing line: ~ args.state.player_speed_slowdown_rate = 0.9~
- Inside source: true
*** True Line Result
args.state.player_speed_slowdown_rate = 0.9
** Processing line: ~ args.state.player_acceleration = 1~
- Inside source: true
*** True Line Result
args.state.player_acceleration = 1
** Processing line: ~ args.state.hammer_size = 32~
- Inside source: true
*** True Line Result
args.state.hammer_size = 32
** 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
# outputs objects onto the screen
** Processing line: ~ def render args~
- Inside source: true
*** True Line Result
def render args
** Processing line: ~ args.outputs.solids << 20.map_with_index do |i| # uses 20 squares to form bridge~
- Inside source: true
*** True Line Result
args.outputs.solids << 20.map_with_index do |i| # uses 20 squares to form bridge
** Processing line: ~ # sets x by multiplying 64 to index to find pixel value (places all squares side by side)~
- Inside source: true
*** True Line Result
# sets x by multiplying 64 to index to find pixel value (places all squares side by side)
** Processing line: ~ # subtracts 64 from bridge_top because position is denoted by bottom left corner~
- Inside source: true
*** True Line Result
# subtracts 64 from bridge_top because position is denoted by bottom left corner
** Processing line: ~ [i * 64, args.state.bridge_top - 64, 64, 64]~
- Inside source: true
*** True Line Result
[i * 64, args.state.bridge_top - 64, 64, 64]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.solids << [args.state.x, args.state.y, args.state.w, args.state.h, 255, 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.solids << [args.state.x, args.state.y, args.state.w, args.state.h, 255, 0, 0]
** Processing line: ~ args.outputs.solids << [args.state.player.x, args.state.player.y, args.state.player.w, args.state.player.h, 255, 0, 0] # outputs player onto screen (red box)~
- Inside source: true
*** True Line Result
args.outputs.solids << [args.state.player.x, args.state.player.y, args.state.player.w, args.state.player.h, 255, 0, 0] # outputs player onto screen (red box)
** Processing line: ~ args.outputs.solids << [args.state.enemy.x, args.state.enemy.y, args.state.enemy.w, args.state.enemy.h, 0, 255, 0] # outputs enemy onto screen (green box)~
- Inside source: true
*** True Line Result
args.outputs.solids << [args.state.enemy.x, args.state.enemy.y, args.state.enemy.w, args.state.enemy.h, 0, 255, 0] # outputs enemy onto screen (green box)
** Processing line: ~ args.outputs.solids << args.state.enemy.hammers # outputs enemy's hammers onto screen~
- Inside source: true
*** True Line Result
args.outputs.solids << args.state.enemy.hammers # outputs enemy's hammers onto screen
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Performs calculations to move objects on the screen~
- Inside source: true
*** True Line Result
# Performs calculations to move objects on the screen
** Processing line: ~ def calc args~
- Inside source: true
*** True Line Result
def calc args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Since velocity is the change in position, the change in x increases by dx. Same with y and dy.~
- Inside source: true
*** True Line Result
# Since velocity is the change in position, the change in x increases by dx. Same with y and dy.
** Processing line: ~ args.state.player.x += args.state.player.dx~
- Inside source: true
*** True Line Result
args.state.player.x += args.state.player.dx
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Since acceleration is the change in velocity, the change in y (dy) increases every frame~
- Inside source: true
*** True Line Result
# Since acceleration is the change in velocity, the change in y (dy) increases every frame
** Processing line: ~ args.state.player.dy += args.state.gravity~
- Inside source: true
*** True Line Result
args.state.player.dy += args.state.gravity
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # player's y position is either current y position or y position of top of~
- Inside source: true
*** True Line Result
# player's y position is either current y position or y position of top of
** Processing line: ~ # bridge, whichever has a greater value~
- Inside source: true
*** True Line Result
# bridge, whichever has a greater value
** Processing line: ~ # ensures that the player never goes below the bridge~
- Inside source: true
*** True Line Result
# ensures that the player never goes below the bridge
** Processing line: ~ args.state.player.y = args.state.player.y.greater(args.state.bridge_top)~
- Inside source: true
*** True Line Result
args.state.player.y = args.state.player.y.greater(args.state.bridge_top)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # player's x position is either the current x position or 0, whichever has a greater value~
- Inside source: true
*** True Line Result
# player's x position is either the current x position or 0, whichever has a greater value
** Processing line: ~ # ensures that the player doesn't go too far left (out of the screen's scope)~
- Inside source: true
*** True Line Result
# ensures that the player doesn't go too far left (out of the screen's scope)
** Processing line: ~ args.state.player.x = args.state.player.x.greater(0)~
- Inside source: true
*** True Line Result
args.state.player.x = args.state.player.x.greater(0)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # player is not falling if it is located on the top of the bridge~
- Inside source: true
*** True Line Result
# player is not falling if it is located on the top of the bridge
** Processing line: ~ args.state.player.falling = false if args.state.player.y == args.state.bridge_top~
- Inside source: true
*** True Line Result
args.state.player.falling = false if args.state.player.y == args.state.bridge_top
** Processing line: ~ args.state.player.rect = [args.state.player.x, args.state.player.y, args.state.player.h, args.state.player.w] # sets definition for player~
- Inside source: true
*** True Line Result
args.state.player.rect = [args.state.player.x, args.state.player.y, args.state.player.h, args.state.player.w] # sets definition for player
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.enemy.x += args.state.enemy.dx # velocity; change in x increases by dx~
- Inside source: true
*** True Line Result
args.state.enemy.x += args.state.enemy.dx # velocity; change in x increases by dx
** Processing line: ~ args.state.enemy.y += args.state.enemy.dy # same with y and dy~
- Inside source: true
*** True Line Result
args.state.enemy.y += args.state.enemy.dy # same with y and dy
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # ensures that the enemy never goes below the bridge~
- Inside source: true
*** True Line Result
# ensures that the enemy never goes below the bridge
** Processing line: ~ args.state.enemy.y = args.state.enemy.y.greater(args.state.bridge_top)~
- Inside source: true
*** True Line Result
args.state.enemy.y = args.state.enemy.y.greater(args.state.bridge_top)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # ensures that the enemy never goes too far left (outside the screen's scope)~
- Inside source: true
*** True Line Result
# ensures that the enemy never goes too far left (outside the screen's scope)
** Processing line: ~ args.state.enemy.x = args.state.enemy.x.greater(0)~
- Inside source: true
*** True Line Result
args.state.enemy.x = args.state.enemy.x.greater(0)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # objects that go up must come down because of gravity~
- Inside source: true
*** True Line Result
# objects that go up must come down because of gravity
** Processing line: ~ args.state.enemy.dy += args.state.gravity~
- Inside source: true
*** True Line Result
args.state.enemy.dy += args.state.gravity
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.enemy.y = args.state.enemy.y.greater(args.state.bridge_top)~
- Inside source: true
*** True Line Result
args.state.enemy.y = args.state.enemy.y.greater(args.state.bridge_top)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #sets definition of enemy~
- Inside source: true
*** True Line Result
#sets definition of enemy
** Processing line: ~ args.state.enemy.rect = [args.state.enemy.x, args.state.enemy.y, args.state.enemy.h, args.state.enemy.w]~
- Inside source: true
*** True Line Result
args.state.enemy.rect = [args.state.enemy.x, args.state.enemy.y, args.state.enemy.h, args.state.enemy.w]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.enemy.y == args.state.bridge_top # if enemy is located on the top of the bridge~
- Inside source: true
*** True Line Result
if args.state.enemy.y == args.state.bridge_top # if enemy is located on the top of the bridge
** Processing line: ~ args.state.enemy.dy = 0 # there is no change in y~
- Inside source: true
*** True Line Result
args.state.enemy.dy = 0 # there is no change in y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if 60 frames have passed and the enemy is not moving vertically~
- Inside source: true
*** True Line Result
# if 60 frames have passed and the enemy is not moving vertically
** Processing line: ~ if args.state.tick_count.mod_zero?(args.state.enemy_jump_interval) && args.state.enemy.dy == 0~
- Inside source: true
*** True Line Result
if args.state.tick_count.mod_zero?(args.state.enemy_jump_interval) && args.state.enemy.dy == 0
** Processing line: ~ args.state.enemy.dy = args.state.enemy_jump_power # the enemy jumps up~
- Inside source: true
*** True Line Result
args.state.enemy.dy = args.state.enemy_jump_power # the enemy jumps up
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if 40 frames have passed or 5 frames have passed since the game ended~
- Inside source: true
*** True Line Result
# if 40 frames have passed or 5 frames have passed since the game ended
** Processing line: ~ if args.state.tick_count.mod_zero?(args.state.hammer_throw_interval) || args.state.game_over_at.elapsed_time == 5~
- Inside source: true
*** True Line Result
if args.state.tick_count.mod_zero?(args.state.hammer_throw_interval) || args.state.game_over_at.elapsed_time == 5
** Processing line: ~ # rand will return a number greater than or equal to 0 and less than given variable's value (since max is excluded)~
- Inside source: true
*** True Line Result
# rand will return a number greater than or equal to 0 and less than given variable's value (since max is excluded)
** Processing line: ~ # that is why we're adding 1, to include the max possibility~
- Inside source: true
*** True Line Result
# that is why we're adding 1, to include the max possibility
** Processing line: ~ volley_dx = (rand(args.state.hammer_launch_power_default) + 1) * -1 # horizontal movement (follow order of operations)~
- Inside source: true
*** True Line Result
volley_dx = (rand(args.state.hammer_launch_power_default) + 1) * -1 # horizontal movement (follow order of operations)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the horizontal distance between the player and enemy is less than 128 pixels~
- Inside source: true
*** True Line Result
# if the horizontal distance between the player and enemy is less than 128 pixels
** Processing line: ~ if (args.state.player.x - args.state.enemy.x).abs < 128~
- Inside source: true
*** True Line Result
if (args.state.player.x - args.state.enemy.x).abs < 128
** Processing line: ~ # the change in x won't be that great since the enemy and player are closer to each other~
- Inside source: true
*** True Line Result
# the change in x won't be that great since the enemy and player are closer to each other
** Processing line: ~ volley_dx = (rand(args.state.hammer_launch_power_near) + 1) * -1~
- Inside source: true
*** True Line Result
volley_dx = (rand(args.state.hammer_launch_power_near) + 1) * -1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the horizontal distance between the player and enemy is greater than 300 pixels~
- Inside source: true
*** True Line Result
# if the horizontal distance between the player and enemy is greater than 300 pixels
** Processing line: ~ if (args.state.player.x - args.state.enemy.x).abs > 300~
- Inside source: true
*** True Line Result
if (args.state.player.x - args.state.enemy.x).abs > 300
** Processing line: ~ # change in x will be more drastic since player and enemy are so far apart~
- Inside source: true
*** True Line Result
# change in x will be more drastic since player and enemy are so far apart
** Processing line: ~ volley_dx = (rand(args.state.hammer_launch_power_far) + 1) * -1 # more drastic change~
- Inside source: true
*** True Line Result
volley_dx = (rand(args.state.hammer_launch_power_far) + 1) * -1 # more drastic change
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ (rand(args.state.max_hammers_per_volley) + 1).map_with_index do |i|~
- Inside source: true
*** True Line Result
(rand(args.state.max_hammers_per_volley) + 1).map_with_index do |i|
** Processing line: ~ args.state.enemy.hammer_queue << { # stores hammer values in a hash~
- Inside source: true
*** True Line Result
args.state.enemy.hammer_queue << { # stores hammer values in a hash
** Processing line: ~ x: args.state.enemy.x,~
- Inside source: true
*** True Line Result
x: args.state.enemy.x,
** Processing line: ~ w: args.state.hammer_size,~
- Inside source: true
*** True Line Result
w: args.state.hammer_size,
** Processing line: ~ h: args.state.hammer_size,~
- Inside source: true
*** True Line Result
h: args.state.hammer_size,
** Processing line: ~ dx: volley_dx, # change in horizontal position~
- Inside source: true
*** True Line Result
dx: volley_dx, # change in horizontal position
** Processing line: ~ # multiplication operator takes precedence over addition operator~
- Inside source: true
*** True Line Result
# multiplication operator takes precedence over addition operator
** Processing line: ~ throw_at: args.state.tick_count + i * args.state.gap_between_hammers~
- Inside source: true
*** True Line Result
throw_at: args.state.tick_count + i * args.state.gap_between_hammers
** 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: ~ # add elements from hammer_queue collection to the hammers collection by~
- Inside source: true
*** True Line Result
# add elements from hammer_queue collection to the hammers collection by
** Processing line: ~ # finding all hammers that were thrown before the current frame (have already been thrown)~
- Inside source: true
*** True Line Result
# finding all hammers that were thrown before the current frame (have already been thrown)
** Processing line: ~ args.state.enemy.hammers += args.state.enemy.hammer_queue.find_all do |h|~
- Inside source: true
*** True Line Result
args.state.enemy.hammers += args.state.enemy.hammer_queue.find_all do |h|
** Processing line: ~ h[:throw_at] < args.state.tick_count~
- Inside source: true
*** True Line Result
h[:throw_at] < args.state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.enemy.hammers.each do |h| # sets values for all hammers in collection~
- Inside source: true
*** True Line Result
args.state.enemy.hammers.each do |h| # sets values for all hammers in collection
** Processing line: ~ h[:y] ||= args.state.enemy.y + 130~
- Inside source: true
*** True Line Result
h[:y] ||= args.state.enemy.y + 130
** Processing line: ~ h[:dy] ||= args.state.hammer_upward_launch_power~
- Inside source: true
*** True Line Result
h[:dy] ||= args.state.hammer_upward_launch_power
** Processing line: ~ h[:dy] += args.state.gravity # acceleration is change in gravity~
- Inside source: true
*** True Line Result
h[:dy] += args.state.gravity # acceleration is change in gravity
** Processing line: ~ h[:x] += h[:dx] # incremented by change in position~
- Inside source: true
*** True Line Result
h[:x] += h[:dx] # incremented by change in position
** Processing line: ~ h[:y] += h[:dy]~
- Inside source: true
*** True Line Result
h[:y] += h[:dy]
** Processing line: ~ h[:rect] = [h[:x], h[:y], h[:w], h[:h]] # sets definition of hammer's rect~
- Inside source: true
*** True Line Result
h[:rect] = [h[:x], h[:y], h[:w], h[:h]] # sets definition of hammer's rect
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # reject hammers that have been thrown before current frame (have already been thrown)~
- Inside source: true
*** True Line Result
# reject hammers that have been thrown before current frame (have already been thrown)
** Processing line: ~ args.state.enemy.hammer_queue = args.state.enemy.hammer_queue.reject do |h|~
- Inside source: true
*** True Line Result
args.state.enemy.hammer_queue = args.state.enemy.hammer_queue.reject do |h|
** Processing line: ~ h[:throw_at] < args.state.tick_count~
- Inside source: true
*** True Line Result
h[:throw_at] < args.state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # any hammers with a y position less than 0 are rejected from the hammers collection~
- Inside source: true
*** True Line Result
# any hammers with a y position less than 0 are rejected from the hammers collection
** Processing line: ~ # since they have gone too far down (outside the scope's screen)~
- Inside source: true
*** True Line Result
# since they have gone too far down (outside the scope's screen)
** Processing line: ~ args.state.enemy.hammers = args.state.enemy.hammers.reject { |h| h[:y] < 0 }~
- Inside source: true
*** True Line Result
args.state.enemy.hammers = args.state.enemy.hammers.reject { |h| h[:y] < 0 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if there are any hammers that intersect with (or hit) the player,~
- Inside source: true
*** True Line Result
# if there are any hammers that intersect with (or hit) the player,
** Processing line: ~ # the reset_player method is called (so the game can start over)~
- Inside source: true
*** True Line Result
# the reset_player method is called (so the game can start over)
** Processing line: ~ if args.state.enemy.hammers.any? { |h| h[:rect].intersect_rect?(args.state.player.rect) }~
- Inside source: true
*** True Line Result
if args.state.enemy.hammers.any? { |h| h[:rect].intersect_rect?(args.state.player.rect) }
** Processing line: ~ reset_player args~
- Inside source: true
*** True Line Result
reset_player args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the enemy's rect intersects with (or hits) the player,~
- Inside source: true
*** True Line Result
# if the enemy's rect intersects with (or hits) the player,
** Processing line: ~ # the reset_player method is called (so the game can start over)~
- Inside source: true
*** True Line Result
# the reset_player method is called (so the game can start over)
** Processing line: ~ if args.state.enemy.rect.intersect_rect? args.state.player.rect~
- Inside source: true
*** True Line Result
if args.state.enemy.rect.intersect_rect? args.state.player.rect
** Processing line: ~ reset_player args~
- Inside source: true
*** True Line Result
reset_player 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: ~ # Resets the player by changing its properties back to the values they had at initialization~
- Inside source: true
*** True Line Result
# Resets the player by changing its properties back to the values they had at initialization
** Processing line: ~ def reset_player args~
- Inside source: true
*** True Line Result
def reset_player args
** Processing line: ~ args.state.player.x = 0~
- Inside source: true
*** True Line Result
args.state.player.x = 0
** Processing line: ~ args.state.player.y = args.state.bridge_top~
- Inside source: true
*** True Line Result
args.state.player.y = args.state.bridge_top
** Processing line: ~ args.state.player.dy = 0~
- Inside source: true
*** True Line Result
args.state.player.dy = 0
** Processing line: ~ args.state.player.dx = 0~
- Inside source: true
*** True Line Result
args.state.player.dx = 0
** Processing line: ~ args.state.enemy.hammers.clear # empties hammer collection~
- Inside source: true
*** True Line Result
args.state.enemy.hammers.clear # empties hammer collection
** Processing line: ~ args.state.enemy.hammer_queue.clear # empties hammer_queue~
- Inside source: true
*** True Line Result
args.state.enemy.hammer_queue.clear # empties hammer_queue
** Processing line: ~ args.state.game_over_at = args.state.tick_count # game_over_at set to current frame (or passage of time)~
- Inside source: true
*** True Line Result
args.state.game_over_at = args.state.tick_count # game_over_at set to current frame (or passage of time)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Processes input from the user to move the player~
- Inside source: true
*** True Line Result
# Processes input from the user to move the player
** Processing line: ~ def input args~
- Inside source: true
*** True Line Result
def input args
** Processing line: ~ if args.inputs.keyboard.space # if the user presses the space bar~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.space # if the user presses the space bar
** Processing line: ~ args.state.player.jumped_at ||= args.state.tick_count # jumped_at is set to current frame~
- Inside source: true
*** True Line Result
args.state.player.jumped_at ||= args.state.tick_count # jumped_at is set to current frame
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the time that has passed since the jump is less than the player's jump duration and~
- Inside source: true
*** True Line Result
# if the time that has passed since the jump is less than the player's jump duration and
** Processing line: ~ # the player is not falling~
- Inside source: true
*** True Line Result
# the player is not falling
** Processing line: ~ if args.state.player.jumped_at.elapsed_time < args.state.player_jump_power_duration && !args.state.player.falling~
- Inside source: true
*** True Line Result
if args.state.player.jumped_at.elapsed_time < args.state.player_jump_power_duration && !args.state.player.falling
** Processing line: ~ args.state.player.dy = args.state.player_jump_power # change in y is set to power of player's jump~
- Inside source: true
*** True Line Result
args.state.player.dy = args.state.player_jump_power # change in y is set to power of player's jump
** 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 in the "up" state (or not being pressed down)~
- Inside source: true
*** True Line Result
# if the space bar is in the "up" state (or not being pressed down)
** Processing line: ~ if args.inputs.keyboard.key_up.space~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_up.space
** Processing line: ~ args.state.player.jumped_at = nil # jumped_at is empty~
- Inside source: true
*** True Line Result
args.state.player.jumped_at = nil # jumped_at is empty
** Processing line: ~ args.state.player.falling = true # the player is falling~
- Inside source: true
*** True Line Result
args.state.player.falling = true # the player is falling
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.keyboard.left # if left key is pressed~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.left # if left key is pressed
** Processing line: ~ args.state.player.dx -= args.state.player_acceleration # dx decreases by acceleration (player goes left)~
- Inside source: true
*** True Line Result
args.state.player.dx -= args.state.player_acceleration # dx decreases by acceleration (player goes left)
** Processing line: ~ # dx is either set to current dx or the negative max run speed (which would be -10),~
- Inside source: true
*** True Line Result
# dx is either set to current dx or the negative max run speed (which would be -10),
** Processing line: ~ # whichever has a greater value~
- Inside source: true
*** True Line Result
# whichever has a greater value
** Processing line: ~ args.state.player.dx = args.state.player.dx.greater(-args.state.player_max_run_speed)~
- Inside source: true
*** True Line Result
args.state.player.dx = args.state.player.dx.greater(-args.state.player_max_run_speed)
** Processing line: ~ elsif args.inputs.keyboard.right # if right key is pressed~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.right # if right key is pressed
** Processing line: ~ args.state.player.dx += args.state.player_acceleration # dx increases by acceleration (player goes right)~
- Inside source: true
*** True Line Result
args.state.player.dx += args.state.player_acceleration # dx increases by acceleration (player goes right)
** Processing line: ~ # dx is either set to current dx or max run speed (which would be 10),~
- Inside source: true
*** True Line Result
# dx is either set to current dx or max run speed (which would be 10),
** Processing line: ~ # whichever has a lesser value~
- Inside source: true
*** True Line Result
# whichever has a lesser value
** Processing line: ~ args.state.player.dx = args.state.player.dx.lesser(args.state.player_max_run_speed)~
- Inside source: true
*** True Line Result
args.state.player.dx = args.state.player.dx.lesser(args.state.player_max_run_speed)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.state.player.dx *= args.state.player_speed_slowdown_rate # dx is scaled down~
- Inside source: true
*** True Line Result
args.state.player.dx *= args.state.player_speed_slowdown_rate # dx is scaled down
** 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_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.space ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.space ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Physics And Collisions - Entities - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Physics And Collisions - Entities - 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/04_physics_and_collisions/03_entities/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/04_physics_and_collisions/03_entities/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - map: Ruby method used to transform data; used in arrays, hashes, and collections.~
- Inside source: true
*** True Line Result
- map: Ruby method used to transform data; used in arrays, hashes, and collections.
** Processing line: ~ Can be used to perform an action on every element of a collection, such as multiplying~
- Inside source: true
*** True Line Result
Can be used to perform an action on every element of a collection, such as multiplying
** Processing line: ~ each element by 2 or declaring every element as a new entity.~
- Inside source: true
*** True Line Result
each element by 2 or declaring every element as a new entity.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
- Inside source: true
*** True Line Result
- reject: Removes elements from a collection if they meet certain requirements.
** Processing line: ~ For example, you can derive an array of odd numbers from an original array of~
- Inside source: true
*** True Line Result
For example, you can derive an array of odd numbers from an original array of
** Processing line: ~ numbers 1 through 10 by rejecting all elements that are even (or divisible by 2).~
- Inside source: true
*** True Line Result
numbers 1 through 10 by rejecting all elements that are even (or divisible by 2).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
- Inside source: true
*** True Line Result
- args.state.new_entity: Used when we want to create a new object, like a sprite or button.
** Processing line: ~ In this sample app, new_entity is used to define the properties of enemies and bullets.~
- Inside source: true
*** True Line Result
In this sample app, new_entity is used to define the properties of enemies and bullets.
** Processing line: ~ (Remember, you can use state to define ANY property and it will be retained across frames.)~
- Inside source: true
*** True Line Result
(Remember, you can use state to define ANY property and it will be retained across frames.)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. The values generate a label on the screen.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. The values generate a label on the screen.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.~
- Inside source: true
*** True Line Result
- ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.
** 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: ~ # This sample app shows enemies that contain an id value and the time they were created.~
- Inside source: true
*** True Line Result
# This sample app shows enemies that contain an id value and the time they were created.
** Processing line: ~ # These enemies can be removed by shooting at them with bullets.~
- Inside source: true
*** True Line Result
# These enemies can be removed by shooting at them with bullets.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls all methods necessary for the game to function properly.~
- Inside source: true
*** True Line Result
# Calls all methods necessary for the game to function properly.
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_instructions args, "Sample app shows how to use args.state.new_entity along with collisions. CLICK to shoot a bullet."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to use args.state.new_entity along with collisions. CLICK to shoot a bullet."
** 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: ~ calc args~
- Inside source: true
*** True Line Result
calc args
** Processing line: ~ process_inputs args~
- Inside source: true
*** True Line Result
process_inputs args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets default values~
- Inside source: true
*** True Line Result
# Sets default values
** Processing line: ~ # Enemies and bullets start off as empty collections~
- Inside source: true
*** True Line Result
# Enemies and bullets start off as empty collections
** Processing line: ~ def defaults args~
- Inside source: true
*** True Line Result
def defaults args
** Processing line: ~ args.state.enemies ||= []~
- Inside source: true
*** True Line Result
args.state.enemies ||= []
** Processing line: ~ args.state.bullets ||= []~
- Inside source: true
*** True Line Result
args.state.bullets ||= []
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Provides each enemy in enemies collection with rectangular border,~
- Inside source: true
*** True Line Result
# Provides each enemy in enemies collection with rectangular border,
** Processing line: ~ # as well as a label showing id and when they were created~
- Inside source: true
*** True Line Result
# as well as a label showing id and when they were created
** Processing line: ~ def render args~
- Inside source: true
*** True Line Result
def render args
** Processing line: ~ # When you're calling a method that takes no arguments, you can use this & syntax on map.~
- Inside source: true
*** True Line Result
# When you're calling a method that takes no arguments, you can use this & syntax on map.
** Processing line: ~ # Numbers are being added to x and y in order to keep the text within the enemy's borders.~
- Inside source: true
*** True Line Result
# Numbers are being added to x and y in order to keep the text within the enemy's borders.
** Processing line: ~ args.outputs.borders << args.state.enemies.map(&:rect)~
- Inside source: true
*** True Line Result
args.outputs.borders << args.state.enemies.map(&:rect)
** Processing line: ~ args.outputs.labels << args.state.enemies.flat_map do |enemy|~
- Inside source: true
*** True Line Result
args.outputs.labels << args.state.enemies.flat_map do |enemy|
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [enemy.x + 4, enemy.y + 29, "id: #{enemy.entity_id}", -3, 0],~
- Inside source: true
*** True Line Result
[enemy.x + 4, enemy.y + 29, "id: #{enemy.entity_id}", -3, 0],
** Processing line: ~ [enemy.x + 4, enemy.y + 17, "created_at: #{enemy.created_at}", -3, 0] # frame enemy was created~
- Inside source: true
*** True Line Result
[enemy.x + 4, enemy.y + 17, "created_at: #{enemy.created_at}", -3, 0] # frame enemy was created
** 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: ~ # Outputs bullets in bullets collection as rectangular solids~
- Inside source: true
*** True Line Result
# Outputs bullets in bullets collection as rectangular solids
** Processing line: ~ args.outputs.solids << args.state.bullets.map(&:rect)~
- Inside source: true
*** True Line Result
args.outputs.solids << args.state.bullets.map(&:rect)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls all methods necessary for performing calculations~
- Inside source: true
*** True Line Result
# Calls all methods necessary for performing calculations
** Processing line: ~ def calc args~
- Inside source: true
*** True Line Result
def calc args
** Processing line: ~ add_new_enemies_if_needed args~
- Inside source: true
*** True Line Result
add_new_enemies_if_needed args
** Processing line: ~ move_bullets args~
- Inside source: true
*** True Line Result
move_bullets args
** Processing line: ~ calculate_collisions args~
- Inside source: true
*** True Line Result
calculate_collisions args
** Processing line: ~ remove_bullets_of_screen args~
- Inside source: true
*** True Line Result
remove_bullets_of_screen args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Adds enemies to the enemies collection and sets their values~
- Inside source: true
*** True Line Result
# Adds enemies to the enemies collection and sets their values
** Processing line: ~ def add_new_enemies_if_needed args~
- Inside source: true
*** True Line Result
def add_new_enemies_if_needed args
** Processing line: ~ return if args.state.enemies.length >= 10 # if 10 or more enemies, enemies are not added~
- Inside source: true
*** True Line Result
return if args.state.enemies.length >= 10 # if 10 or more enemies, enemies are not added
** Processing line: ~ return unless args.state.bullets.length == 0 # if user has not yet shot bullet, no enemies are added~
- Inside source: true
*** True Line Result
return unless args.state.bullets.length == 0 # if user has not yet shot bullet, no enemies are added
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.enemies += (10 - args.state.enemies.length).map do # adds enemies so there are 10 total~
- Inside source: true
*** True Line Result
args.state.enemies += (10 - args.state.enemies.length).map do # adds enemies so there are 10 total
** Processing line: ~ args.state.new_entity(:enemy) do |e| # each enemy is declared as a new entity~
- Inside source: true
*** True Line Result
args.state.new_entity(:enemy) do |e| # each enemy is declared as a new entity
** Processing line: ~ e.x = 640 + 500 * rand # each enemy is given random position on screen~
- Inside source: true
*** True Line Result
e.x = 640 + 500 * rand # each enemy is given random position on screen
** Processing line: ~ e.y = 600 * rand + 50~
- Inside source: true
*** True Line Result
e.y = 600 * rand + 50
** Processing line: ~ e.rect = [e.x, e.y, 130, 30] # sets definition for enemy's rect~
- Inside source: true
*** True Line Result
e.rect = [e.x, e.y, 130, 30] # sets definition for enemy's rect
** 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: ~ # Moves bullets across screen~
- Inside source: true
*** True Line Result
# Moves bullets across screen
** Processing line: ~ # Sets definition of the bullets~
- Inside source: true
*** True Line Result
# Sets definition of the bullets
** Processing line: ~ def move_bullets args~
- Inside source: true
*** True Line Result
def move_bullets args
** Processing line: ~ args.state.bullets.each do |bullet| # perform action on each bullet in collection~
- Inside source: true
*** True Line Result
args.state.bullets.each do |bullet| # perform action on each bullet in collection
** Processing line: ~ bullet.x += bullet.speed # increment x by speed (bullets fly horizontally across screen)~
- Inside source: true
*** True Line Result
bullet.x += bullet.speed # increment x by speed (bullets fly horizontally across screen)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # By randomizing the value that increments bullet.y, the bullet does not fly straight up and out~
- Inside source: true
*** True Line Result
# By randomizing the value that increments bullet.y, the bullet does not fly straight up and out
** Processing line: ~ # of the scope of the screen. Try removing what follows bullet.speed, or changing 0.25 to 1.25 to~
- Inside source: true
*** True Line Result
# of the scope of the screen. Try removing what follows bullet.speed, or changing 0.25 to 1.25 to
** Processing line: ~ # see what happens to the bullet's movement.~
- Inside source: true
*** True Line Result
# see what happens to the bullet's movement.
** Processing line: ~ bullet.y += bullet.speed.*(0.25).randomize(:ratio, :sign)~
- Inside source: true
*** True Line Result
bullet.y += bullet.speed.*(0.25).randomize(:ratio, :sign)
** Processing line: ~ bullet.rect = [bullet.x, bullet.y, bullet.size, bullet.size] # sets definition of bullet's rect~
- Inside source: true
*** True Line Result
bullet.rect = [bullet.x, bullet.y, bullet.size, bullet.size] # sets definition of bullet's rect
** 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: ~ # Determines if a bullet hits an enemy~
- Inside source: true
*** True Line Result
# Determines if a bullet hits an enemy
** Processing line: ~ def calculate_collisions args~
- Inside source: true
*** True Line Result
def calculate_collisions args
** Processing line: ~ args.state.bullets.each do |bullet| # perform action on every bullet and enemy in collections~
- Inside source: true
*** True Line Result
args.state.bullets.each do |bullet| # perform action on every bullet and enemy in collections
** Processing line: ~ args.state.enemies.each do |enemy|~
- Inside source: true
*** True Line Result
args.state.enemies.each do |enemy|
** Processing line: ~ # if bullet has not exploded yet and the bullet hits an enemy~
- Inside source: true
*** True Line Result
# if bullet has not exploded yet and the bullet hits an enemy
** Processing line: ~ if !bullet.exploded && bullet.rect.intersect_rect?(enemy.rect)~
- Inside source: true
*** True Line Result
if !bullet.exploded && bullet.rect.intersect_rect?(enemy.rect)
** Processing line: ~ bullet.exploded = true # bullet explodes~
- Inside source: true
*** True Line Result
bullet.exploded = true # bullet explodes
** Processing line: ~ enemy.dead = true # enemy is killed~
- Inside source: true
*** True Line Result
enemy.dead = true # enemy is killed
** 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: ~ # All exploded bullets are rejected or removed from the bullets collection~
- Inside source: true
*** True Line Result
# All exploded bullets are rejected or removed from the bullets collection
** Processing line: ~ # and any dead enemy is rejected from the enemies collection.~
- Inside source: true
*** True Line Result
# and any dead enemy is rejected from the enemies collection.
** Processing line: ~ args.state.bullets = args.state.bullets.reject(&:exploded)~
- Inside source: true
*** True Line Result
args.state.bullets = args.state.bullets.reject(&:exploded)
** Processing line: ~ args.state.enemies = args.state.enemies.reject(&:dead)~
- Inside source: true
*** True Line Result
args.state.enemies = args.state.enemies.reject(&:dead)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Bullets are rejected from bullets collection once their position exceeds the width of screen~
- Inside source: true
*** True Line Result
# Bullets are rejected from bullets collection once their position exceeds the width of screen
** Processing line: ~ def remove_bullets_of_screen args~
- Inside source: true
*** True Line Result
def remove_bullets_of_screen args
** Processing line: ~ args.state.bullets = args.state.bullets.reject { |bullet| bullet.x > 1280 } # screen width is 1280~
- Inside source: true
*** True Line Result
args.state.bullets = args.state.bullets.reject { |bullet| bullet.x > 1280 } # screen width is 1280
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls fire_bullet method~
- Inside source: true
*** True Line Result
# Calls fire_bullet method
** Processing line: ~ def process_inputs args~
- Inside source: true
*** True Line Result
def process_inputs args
** Processing line: ~ fire_bullet args~
- Inside source: true
*** True Line Result
fire_bullet args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Once mouse is clicked by the user to fire a bullet, a new bullet is added to bullets collection~
- Inside source: true
*** True Line Result
# Once mouse is clicked by the user to fire a bullet, a new bullet is added to bullets collection
** Processing line: ~ def fire_bullet args~
- Inside source: true
*** True Line Result
def fire_bullet args
** Processing line: ~ return unless args.inputs.mouse.click # return unless mouse is clicked~
- Inside source: true
*** True Line Result
return unless args.inputs.mouse.click # return unless mouse is clicked
** Processing line: ~ args.state.bullets << args.state.new_entity(:bullet) do |bullet| # new bullet is declared a new entity~
- Inside source: true
*** True Line Result
args.state.bullets << args.state.new_entity(:bullet) do |bullet| # new bullet is declared a new entity
** Processing line: ~ bullet.y = args.inputs.mouse.click.point.y # set to the y value of where the mouse was clicked~
- Inside source: true
*** True Line Result
bullet.y = args.inputs.mouse.click.point.y # set to the y value of where the mouse was clicked
** Processing line: ~ bullet.x = 0 # starts on the left side of the screen~
- Inside source: true
*** True Line Result
bullet.x = 0 # starts on the left side of the screen
** Processing line: ~ bullet.size = 10~
- Inside source: true
*** True Line Result
bullet.size = 10
** Processing line: ~ bullet.speed = 10 * rand + 2 # speed of a bullet is randomized~
- Inside source: true
*** True Line Result
bullet.speed = 10 * rand + 2 # speed of a bullet is randomized
** Processing line: ~ bullet.rect = [bullet.x, bullet.y, bullet.size, bullet.size] # definition is set~
- Inside source: true
*** True Line Result
bullet.rect = [bullet.x, bullet.y, bullet.size, bullet.size] # definition is set
** 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_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.space ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.space ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Physics And Collisions - Box Collision - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Physics And Collisions - Box Collision - 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/04_physics_and_collisions/04_box_collision/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/04_physics_and_collisions/04_box_collision/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - first: Returns the first element of the array.~
- Inside source: true
*** True Line Result
- first: Returns the first element of the array.
** Processing line: ~ For example, if we have an array~
- Inside source: true
*** True Line Result
For example, if we have an array
** Processing line: ~ numbers = [1, 2, 3, 4, 5]~
- Inside source: true
*** True Line Result
numbers = [1, 2, 3, 4, 5]
** Processing line: ~ and we call first by saying~
- Inside source: true
*** True Line Result
and we call first by saying
** Processing line: ~ numbers.first~
- Inside source: true
*** True Line Result
numbers.first
** Processing line: ~ the number 1 will be returned because it is the first element of the numbers array.~
- Inside source: true
*** True Line Result
the number 1 will be returned because it is the first element of the numbers array.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - num1.idiv(num2): Divides two numbers and returns an integer.~
- Inside source: true
*** True Line Result
- num1.idiv(num2): Divides two numbers and returns an integer.
** Processing line: ~ For example,~
- Inside source: true
*** True Line Result
For example,
** Processing line: ~ 16.idiv(3) = 5, because 16 / 3 is 5.33333 returned as an integer.~
- Inside source: true
*** True Line Result
16.idiv(3) = 5, because 16 / 3 is 5.33333 returned as an integer.
** Processing line: ~ 16.idiv(4) = 4, because 16 / 4 is 4 and already has no decimal.~
- Inside source: true
*** True Line Result
16.idiv(4) = 4, because 16 / 4 is 4 and already has no decimal.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - find_all: Finds all values that satisfy specific requirements.~
- Inside source: true
*** True Line Result
- find_all: Finds all values that satisfy specific requirements.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#intersect_rect?: An array with at least four values is~
- Inside source: true
*** True Line Result
- ARRAY#intersect_rect?: An array with at least four values is
** Processing line: ~ considered a rect. The intersect_rect? function returns true~
- Inside source: true
*** True Line Result
considered a rect. The intersect_rect? function returns true
** Processing line: ~ or false depending on if the two rectangles intersect.~
- Inside source: true
*** True Line Result
or false depending on if the two rectangles intersect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
- Inside source: true
*** True Line Result
- reject: Removes elements from a collection if they meet certain requirements.
** 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: ~ # This sample app allows users to create tiles and place them anywhere on the screen as obstacles.~
- Inside source: true
*** True Line Result
# This sample app allows users to create tiles and place them anywhere on the screen as obstacles.
** Processing line: ~ # The player can then move and maneuver around them.~
- Inside source: true
*** True Line Result
# The player can then move and maneuver around them.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class PoorManPlatformerPhysics~
- Inside source: true
*** True Line Result
class PoorManPlatformerPhysics
** Processing line: ~ attr_accessor :grid, :inputs, :state, :outputs~
- Inside source: true
*** True Line Result
attr_accessor :grid, :inputs, :state, :outputs
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls all methods necessary for the app to run successfully.~
- Inside source: true
*** True Line Result
# Calls all methods necessary for the app to run successfully.
** 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: ~ calc~
- Inside source: true
*** True Line Result
calc
** Processing line: ~ process_inputs~
- Inside source: true
*** True Line Result
process_inputs
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets default values for variables.~
- Inside source: true
*** True Line Result
# Sets default values for variables.
** Processing line: ~ # The ||= sign means that the variable will only be set to the value following the = sign if the value has~
- Inside source: true
*** True Line Result
# The ||= sign means that the variable will only be set to the value following the = sign if the value has
** Processing line: ~ # not already been set before. Intialization happens only in the first frame.~
- Inside source: true
*** True Line Result
# not already been set before. Intialization happens only in the first frame.
** Processing line: ~ def defaults~
- Inside source: true
*** True Line Result
def defaults
** Processing line: ~ state.tile_size = 64~
- Inside source: true
*** True Line Result
state.tile_size = 64
** Processing line: ~ state.gravity = -0.2~
- Inside source: true
*** True Line Result
state.gravity = -0.2
** Processing line: ~ state.previous_tile_size ||= state.tile_size~
- Inside source: true
*** True Line Result
state.previous_tile_size ||= state.tile_size
** Processing line: ~ state.x ||= 0~
- Inside source: true
*** True Line Result
state.x ||= 0
** Processing line: ~ state.y ||= 800~
- Inside source: true
*** True Line Result
state.y ||= 800
** Processing line: ~ state.dy ||= 0~
- Inside source: true
*** True Line Result
state.dy ||= 0
** Processing line: ~ state.dx ||= 0~
- Inside source: true
*** True Line Result
state.dx ||= 0
** Processing line: ~ state.world ||= []~
- Inside source: true
*** True Line Result
state.world ||= []
** Processing line: ~ state.world_lookup ||= {}~
- Inside source: true
*** True Line Result
state.world_lookup ||= {}
** Processing line: ~ state.world_collision_rects ||= []~
- Inside source: true
*** True Line Result
state.world_collision_rects ||= []
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs solids and borders of different colors for the world and collision_rects collections.~
- Inside source: true
*** True Line Result
# Outputs solids and borders of different colors for the world and collision_rects collections.
** Processing line: ~ def render~
- Inside source: true
*** True Line Result
def render
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets a black background on the screen (Comment this line out and the background will become white.)~
- Inside source: true
*** True Line Result
# Sets a black background on the screen (Comment this line out and the background will become white.)
** Processing line: ~ # Also note that black is the default color for when no color is assigned.~
- Inside source: true
*** True Line Result
# Also note that black is the default color for when no color is assigned.
** Processing line: ~ outputs.solids << grid.rect~
- Inside source: true
*** True Line Result
outputs.solids << grid.rect
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The position, size, and color (white) are set for borders given to the world collection.~
- Inside source: true
*** True Line Result
# The position, size, and color (white) are set for borders given to the world collection.
** Processing line: ~ # Try changing the color by assigning different numbers (between 0 and 255) to the last three parameters.~
- Inside source: true
*** True Line Result
# Try changing the color by assigning different numbers (between 0 and 255) to the last three parameters.
** Processing line: ~ outputs.borders << state.world.map do |x, y|~
- Inside source: true
*** True Line Result
outputs.borders << state.world.map do |x, y|
** Processing line: ~ [x * state.tile_size,~
- Inside source: true
*** True Line Result
[x * state.tile_size,
** Processing line: ~ y * state.tile_size,~
- Inside source: true
*** True Line Result
y * state.tile_size,
** Processing line: ~ state.tile_size,~
- Inside source: true
*** True Line Result
state.tile_size,
** Processing line: ~ state.tile_size, 255, 255, 255]~
- Inside source: true
*** True Line Result
state.tile_size, 255, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The top, bottom, and sides of the borders for collision_rects are different colors.~
- Inside source: true
*** True Line Result
# The top, bottom, and sides of the borders for collision_rects are different colors.
** Processing line: ~ outputs.borders << state.world_collision_rects.map do |e|~
- Inside source: true
*** True Line Result
outputs.borders << state.world_collision_rects.map do |e|
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [e[:top], 0, 170, 0], # top is a shade of green~
- Inside source: true
*** True Line Result
[e[:top], 0, 170, 0], # top is a shade of green
** Processing line: ~ [e[:bottom], 0, 100, 170], # bottom is a shade of greenish-blue~
- Inside source: true
*** True Line Result
[e[:bottom], 0, 100, 170], # bottom is a shade of greenish-blue
** Processing line: ~ [e[:left_right], 170, 0, 0], # left and right are a shade of red~
- Inside source: true
*** True Line Result
[e[:left_right], 170, 0, 0], # left and right are a shade of red
** 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: ~ # Sets the position, size, and color (a shade of green) of the borders of only the player's~
- Inside source: true
*** True Line Result
# Sets the position, size, and color (a shade of green) of the borders of only the player's
** Processing line: ~ # box and outputs it. If you change the 180 to 0, the player's box will be black and you~
- Inside source: true
*** True Line Result
# box and outputs it. If you change the 180 to 0, the player's box will be black and you
** Processing line: ~ # won't be able to see it (because it will match the black background).~
- Inside source: true
*** True Line Result
# won't be able to see it (because it will match the black background).
** Processing line: ~ outputs.borders << [state.x,~
- Inside source: true
*** True Line Result
outputs.borders << [state.x,
** Processing line: ~ state.y,~
- Inside source: true
*** True Line Result
state.y,
** Processing line: ~ state.tile_size,~
- Inside source: true
*** True Line Result
state.tile_size,
** Processing line: ~ state.tile_size, 0, 180, 0]~
- Inside source: true
*** True Line Result
state.tile_size, 0, 180, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls methods needed to perform calculations.~
- Inside source: true
*** True Line Result
# Calls methods needed to perform calculations.
** Processing line: ~ def calc~
- Inside source: true
*** True Line Result
def calc
** Processing line: ~ calc_world_lookup~
- Inside source: true
*** True Line Result
calc_world_lookup
** Processing line: ~ calc_player~
- Inside source: true
*** True Line Result
calc_player
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Performs calculations on world_lookup and sets values.~
- Inside source: true
*** True Line Result
# Performs calculations on world_lookup and sets values.
** Processing line: ~ def calc_world_lookup~
- Inside source: true
*** True Line Result
def calc_world_lookup
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If the tile size isn't equal to the previous tile size,~
- Inside source: true
*** True Line Result
# If the tile size isn't equal to the previous tile size,
** Processing line: ~ # the previous tile size is set to the tile size,~
- Inside source: true
*** True Line Result
# the previous tile size is set to the tile size,
** Processing line: ~ # and world_lookup hash is set to empty.~
- Inside source: true
*** True Line Result
# and world_lookup hash is set to empty.
** Processing line: ~ if state.tile_size != state.previous_tile_size~
- Inside source: true
*** True Line Result
if state.tile_size != state.previous_tile_size
** Processing line: ~ state.previous_tile_size = state.tile_size~
- Inside source: true
*** True Line Result
state.previous_tile_size = state.tile_size
** Processing line: ~ state.world_lookup = {} # empty hash~
- Inside source: true
*** True Line Result
state.world_lookup = {} # empty hash
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # return if the world_lookup hash has keys (or, in other words, is not empty)~
- Inside source: true
*** True Line Result
# return if the world_lookup hash has keys (or, in other words, is not empty)
** Processing line: ~ # return unless the world collection has values inside of it (or is not empty)~
- Inside source: true
*** True Line Result
# return unless the world collection has values inside of it (or is not empty)
** Processing line: ~ return if state.world_lookup.keys.length > 0~
- Inside source: true
*** True Line Result
return if state.world_lookup.keys.length > 0
** Processing line: ~ return unless state.world.length > 0~
- Inside source: true
*** True Line Result
return unless state.world.length > 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Starts with an empty hash for world_lookup.~
- Inside source: true
*** True Line Result
# Starts with an empty hash for world_lookup.
** Processing line: ~ # Searches through the world and finds the coordinates that exist.~
- Inside source: true
*** True Line Result
# Searches through the world and finds the coordinates that exist.
** Processing line: ~ state.world_lookup = {}~
- Inside source: true
*** True Line Result
state.world_lookup = {}
** Processing line: ~ state.world.each { |x, y| state.world_lookup[[x, y]] = true }~
- Inside source: true
*** True Line Result
state.world.each { |x, y| state.world_lookup[[x, y]] = true }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Assigns world_collision_rects for every sprite drawn.~
- Inside source: true
*** True Line Result
# Assigns world_collision_rects for every sprite drawn.
** Processing line: ~ state.world_collision_rects =~
- Inside source: true
*** True Line Result
state.world_collision_rects =
** Processing line: ~ state.world_lookup~
- Inside source: true
*** True Line Result
state.world_lookup
** Processing line: ~ .keys~
- Inside source: true
*** True Line Result
.keys
** Processing line: ~ .map do |coord_x, coord_y|~
- Inside source: true
*** True Line Result
.map do |coord_x, coord_y|
** Processing line: ~ s = state.tile_size~
- Inside source: true
*** True Line Result
s = state.tile_size
** Processing line: ~ # multiply by tile size so the grid coordinates; sets pixel value~
- Inside source: true
*** True Line Result
# multiply by tile size so the grid coordinates; sets pixel value
** Processing line: ~ # don't forget that position is denoted by bottom left corner~
- Inside source: true
*** True Line Result
# don't forget that position is denoted by bottom left corner
** Processing line: ~ # set x = coord_x or y = coord_y and see what happens!~
- Inside source: true
*** True Line Result
# set x = coord_x or y = coord_y and see what happens!
** Processing line: ~ x = s * coord_x~
- Inside source: true
*** True Line Result
x = s * coord_x
** Processing line: ~ y = s * coord_y~
- Inside source: true
*** True Line Result
y = s * coord_y
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ # The values added to x, y, and s position the world_collision_rects so they all appear~
- Inside source: true
*** True Line Result
# The values added to x, y, and s position the world_collision_rects so they all appear
** Processing line: ~ # stacked (on top of world rects) but don't directly overlap.~
- Inside source: true
*** True Line Result
# stacked (on top of world rects) but don't directly overlap.
** Processing line: ~ # Remove these added values and mess around with the rect placement!~
- Inside source: true
*** True Line Result
# Remove these added values and mess around with the rect placement!
** Processing line: ~ args: [coord_x, coord_y],~
- Inside source: true
*** True Line Result
args: [coord_x, coord_y],
** Processing line: ~ left_right: [x, y + 4, s, s - 6], # hash keys and values~
- Inside source: true
*** True Line Result
left_right: [x, y + 4, s, s - 6], # hash keys and values
** Processing line: ~ top: [x + 4, y + 6, s - 8, s - 6],~
- Inside source: true
*** True Line Result
top: [x + 4, y + 6, s - 8, s - 6],
** Processing line: ~ bottom: [x + 1, y - 1, s - 2, s - 8],~
- Inside source: true
*** True Line Result
bottom: [x + 1, y - 1, s - 2, s - 8],
** 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: ~ # Performs calculations to change the x and y values of the player's box.~
- Inside source: true
*** True Line Result
# Performs calculations to change the x and y values of the player's box.
** Processing line: ~ def calc_player~
- Inside source: true
*** True Line Result
def calc_player
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Since acceleration is the change in velocity, the change in y (dy) increases every frame.~
- Inside source: true
*** True Line Result
# Since acceleration is the change in velocity, the change in y (dy) increases every frame.
** Processing line: ~ # What goes up must come down because of gravity.~
- Inside source: true
*** True Line Result
# What goes up must come down because of gravity.
** Processing line: ~ state.dy += state.gravity~
- Inside source: true
*** True Line Result
state.dy += state.gravity
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls the calc_box_collision and calc_edge_collision methods.~
- Inside source: true
*** True Line Result
# Calls the calc_box_collision and calc_edge_collision methods.
** Processing line: ~ calc_box_collision~
- Inside source: true
*** True Line Result
calc_box_collision
** Processing line: ~ calc_edge_collision~
- Inside source: true
*** True Line Result
calc_edge_collision
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Since velocity is the change in position, the change in y increases by dy. Same with x and dx.~
- Inside source: true
*** True Line Result
# Since velocity is the change in position, the change in y increases by dy. Same with x and dx.
** Processing line: ~ state.y += state.dy~
- Inside source: true
*** True Line Result
state.y += state.dy
** Processing line: ~ state.x += state.dx~
- Inside source: true
*** True Line Result
state.x += state.dx
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Scales dx down.~
- Inside source: true
*** True Line Result
# Scales dx down.
** Processing line: ~ state.dx *= 0.8~
- Inside source: true
*** True Line Result
state.dx *= 0.8
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls methods needed to determine collisions between player and world_collision rects.~
- Inside source: true
*** True Line Result
# Calls methods needed to determine collisions between player and world_collision rects.
** Processing line: ~ def calc_box_collision~
- Inside source: true
*** True Line Result
def calc_box_collision
** Processing line: ~ return unless state.world_lookup.keys.length > 0 # return unless hash has atleast 1 key~
- Inside source: true
*** True Line Result
return unless state.world_lookup.keys.length > 0 # return unless hash has atleast 1 key
** Processing line: ~ collision_floor!~
- Inside source: true
*** True Line Result
collision_floor!
** Processing line: ~ collision_left!~
- Inside source: true
*** True Line Result
collision_left!
** Processing line: ~ collision_right!~
- Inside source: true
*** True Line Result
collision_right!
** Processing line: ~ collision_ceiling!~
- Inside source: true
*** True Line Result
collision_ceiling!
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Finds collisions between the bottom of the player's rect and the top of a world_collision_rect.~
- Inside source: true
*** True Line Result
# Finds collisions between the bottom of the player's rect and the top of a world_collision_rect.
** Processing line: ~ def collision_floor!~
- Inside source: true
*** True Line Result
def collision_floor!
** Processing line: ~ return unless state.dy <= 0 # return unless player is going down or is as far down as possible~
- Inside source: true
*** True Line Result
return unless state.dy <= 0 # return unless player is going down or is as far down as possible
** Processing line: ~ player_rect = [state.x, state.y - 0.1, state.tile_size, state.tile_size] # definition of player~
- Inside source: true
*** True Line Result
player_rect = [state.x, state.y - 0.1, state.tile_size, state.tile_size] # definition of player
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Goes through world_collision_rects to find all intersections between the bottom of player's rect and~
- Inside source: true
*** True Line Result
# Goes through world_collision_rects to find all intersections between the bottom of player's rect and
** Processing line: ~ # the top of a world_collision_rect (hence the "-0.1" above)~
- Inside source: true
*** True Line Result
# the top of a world_collision_rect (hence the "-0.1" above)
** Processing line: ~ floor_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
floor_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:top].intersect_rect?(player_rect, collision_tollerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:top].intersect_rect?(player_rect, collision_tollerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless floor_collisions # return unless collision occurred~
- Inside source: true
*** True Line Result
return unless floor_collisions # return unless collision occurred
** Processing line: ~ state.y = floor_collisions[:top].top # player's y is set to the y of the top of the collided rect~
- Inside source: true
*** True Line Result
state.y = floor_collisions[:top].top # player's y is set to the y of the top of the collided rect
** Processing line: ~ state.dy = 0 # if a collision occurred, the player's rect isn't moving because its path is blocked~
- Inside source: true
*** True Line Result
state.dy = 0 # if a collision occurred, the player's rect isn't moving because its path is blocked
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Finds collisions between the player's left side and the right side of a world_collision_rect.~
- Inside source: true
*** True Line Result
# Finds collisions between the player's left side and the right side of a world_collision_rect.
** Processing line: ~ def collision_left!~
- Inside source: true
*** True Line Result
def collision_left!
** Processing line: ~ return unless state.dx < 0 # return unless player is moving left~
- Inside source: true
*** True Line Result
return unless state.dx < 0 # return unless player is moving left
** Processing line: ~ player_rect = [state.x - 0.1, state.y, state.tile_size, state.tile_size]~
- Inside source: true
*** True Line Result
player_rect = [state.x - 0.1, state.y, state.tile_size, state.tile_size]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Goes through world_collision_rects to find all intersections beween the player's left side and the~
- Inside source: true
*** True Line Result
# Goes through world_collision_rects to find all intersections beween the player's left side and the
** Processing line: ~ # right side of a world_collision_rect.~
- Inside source: true
*** True Line Result
# right side of a world_collision_rect.
** Processing line: ~ left_side_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
left_side_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, collision_tollerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:left_right].intersect_rect?(player_rect, collision_tollerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless left_side_collisions # return unless collision occurred~
- Inside source: true
*** True Line Result
return unless left_side_collisions # return unless collision occurred
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # player's x is set to the value of the x of the collided rect's right side~
- Inside source: true
*** True Line Result
# player's x is set to the value of the x of the collided rect's right side
** Processing line: ~ state.x = left_side_collisions[:left_right].right~
- Inside source: true
*** True Line Result
state.x = left_side_collisions[:left_right].right
** Processing line: ~ state.dx = 0 # player isn't moving left because its path is blocked~
- Inside source: true
*** True Line Result
state.dx = 0 # player isn't moving left because its path is blocked
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Finds collisions between the right side of the player and the left side of a world_collision_rect.~
- Inside source: true
*** True Line Result
# Finds collisions between the right side of the player and the left side of a world_collision_rect.
** Processing line: ~ def collision_right!~
- Inside source: true
*** True Line Result
def collision_right!
** Processing line: ~ return unless state.dx > 0 # return unless player is moving right~
- Inside source: true
*** True Line Result
return unless state.dx > 0 # return unless player is moving right
** Processing line: ~ player_rect = [state.x + 0.1, state.y, state.tile_size, state.tile_size]~
- Inside source: true
*** True Line Result
player_rect = [state.x + 0.1, state.y, state.tile_size, state.tile_size]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Goes through world_collision_rects to find all intersections between the player's right side~
- Inside source: true
*** True Line Result
# Goes through world_collision_rects to find all intersections between the player's right side
** Processing line: ~ # and the left side of a world_collision_rect (hence the "+0.1" above)~
- Inside source: true
*** True Line Result
# and the left side of a world_collision_rect (hence the "+0.1" above)
** Processing line: ~ right_side_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
right_side_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, collision_tollerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:left_right].intersect_rect?(player_rect, collision_tollerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless right_side_collisions # return unless collision occurred~
- Inside source: true
*** True Line Result
return unless right_side_collisions # return unless collision occurred
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # player's x is set to the value of the collided rect's left, minus the size of a rect~
- Inside source: true
*** True Line Result
# player's x is set to the value of the collided rect's left, minus the size of a rect
** Processing line: ~ # tile size is subtracted because player's position is denoted by bottom left corner~
- Inside source: true
*** True Line Result
# tile size is subtracted because player's position is denoted by bottom left corner
** Processing line: ~ state.x = right_side_collisions[:left_right].left - state.tile_size~
- Inside source: true
*** True Line Result
state.x = right_side_collisions[:left_right].left - state.tile_size
** Processing line: ~ state.dx = 0 # player isn't moving right because its path is blocked~
- Inside source: true
*** True Line Result
state.dx = 0 # player isn't moving right because its path is blocked
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Finds collisions between the top of the player's rect and the bottom of a world_collision_rect.~
- Inside source: true
*** True Line Result
# Finds collisions between the top of the player's rect and the bottom of a world_collision_rect.
** Processing line: ~ def collision_ceiling!~
- Inside source: true
*** True Line Result
def collision_ceiling!
** Processing line: ~ return unless state.dy > 0 # return unless player is moving up~
- Inside source: true
*** True Line Result
return unless state.dy > 0 # return unless player is moving up
** Processing line: ~ player_rect = [state.x, state.y + 0.1, state.tile_size, state.tile_size]~
- Inside source: true
*** True Line Result
player_rect = [state.x, state.y + 0.1, state.tile_size, state.tile_size]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Goes through world_collision_rects to find intersections between the bottom of a~
- Inside source: true
*** True Line Result
# Goes through world_collision_rects to find intersections between the bottom of a
** Processing line: ~ # world_collision_rect and the top of the player's rect (hence the "+0.1" above)~
- Inside source: true
*** True Line Result
# world_collision_rect and the top of the player's rect (hence the "+0.1" above)
** Processing line: ~ ceil_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
ceil_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:bottom].intersect_rect?(player_rect, collision_tollerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:bottom].intersect_rect?(player_rect, collision_tollerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless ceil_collisions # return unless collision occurred~
- Inside source: true
*** True Line Result
return unless ceil_collisions # return unless collision occurred
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # player's y is set to the bottom y of the rect it collided with, minus the size of a rect~
- Inside source: true
*** True Line Result
# player's y is set to the bottom y of the rect it collided with, minus the size of a rect
** Processing line: ~ state.y = ceil_collisions[:bottom].y - state.tile_size~
- Inside source: true
*** True Line Result
state.y = ceil_collisions[:bottom].y - state.tile_size
** Processing line: ~ state.dy = 0 # if a collision occurred, the player isn't moving up because its path is blocked~
- Inside source: true
*** True Line Result
state.dy = 0 # if a collision occurred, the player isn't moving up because its path is blocked
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Makes sure the player remains within the screen's dimensions.~
- Inside source: true
*** True Line Result
# Makes sure the player remains within the screen's dimensions.
** Processing line: ~ def calc_edge_collision~
- Inside source: true
*** True Line Result
def calc_edge_collision
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Ensures that the player doesn't fall below the map.~
- Inside source: true
*** True Line Result
#Ensures that the player doesn't fall below the map.
** Processing line: ~ if state.y < 0~
- Inside source: true
*** True Line Result
if state.y < 0
** Processing line: ~ state.y = 0~
- Inside source: true
*** True Line Result
state.y = 0
** Processing line: ~ state.dy = 0~
- Inside source: true
*** True Line Result
state.dy = 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Ensures that the player doesn't go too high.~
- Inside source: true
*** True Line Result
#Ensures that the player doesn't go too high.
** Processing line: ~ # Position of player is denoted by bottom left hand corner, which is why we have to subtract the~
- Inside source: true
*** True Line Result
# Position of player is denoted by bottom left hand corner, which is why we have to subtract the
** Processing line: ~ # size of the player's box (so it remains visible on the screen)~
- Inside source: true
*** True Line Result
# size of the player's box (so it remains visible on the screen)
** Processing line: ~ elsif state.y > 720 - state.tile_size # if the player's y position exceeds the height of screen~
- Inside source: true
*** True Line Result
elsif state.y > 720 - state.tile_size # if the player's y position exceeds the height of screen
** Processing line: ~ state.y = 720 - state.tile_size # the player will remain as high as possible while staying on screen~
- Inside source: true
*** True Line Result
state.y = 720 - state.tile_size # the player will remain as high as possible while staying on screen
** Processing line: ~ state.dy = 0~
- Inside source: true
*** True Line Result
state.dy = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Ensures that the player remains in the horizontal range that it is supposed to.~
- Inside source: true
*** True Line Result
# Ensures that the player remains in the horizontal range that it is supposed to.
** Processing line: ~ if state.x >= 1280 - state.tile_size && state.dx > 0 # if player moves too far right~
- Inside source: true
*** True Line Result
if state.x >= 1280 - state.tile_size && state.dx > 0 # if player moves too far right
** Processing line: ~ state.x = 1280 - state.tile_size # player will remain as right as possible while staying on screen~
- Inside source: true
*** True Line Result
state.x = 1280 - state.tile_size # player will remain as right as possible while staying on screen
** Processing line: ~ state.dx = 0~
- Inside source: true
*** True Line Result
state.dx = 0
** Processing line: ~ elsif state.x <= 0 && state.dx < 0 # if player moves too far left~
- Inside source: true
*** True Line Result
elsif state.x <= 0 && state.dx < 0 # if player moves too far left
** Processing line: ~ state.x = 0 # player will remain as left as possible while remaining on screen~
- Inside source: true
*** True Line Result
state.x = 0 # player will remain as left as possible while remaining on screen
** Processing line: ~ state.dx = 0~
- Inside source: true
*** True Line Result
state.dx = 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: ~ # Processes input from the user on the keyboard.~
- Inside source: true
*** True Line Result
# Processes input from the user on the keyboard.
** Processing line: ~ def process_inputs~
- Inside source: true
*** True Line Result
def process_inputs
** Processing line: ~ if inputs.mouse.down~
- Inside source: true
*** True Line Result
if inputs.mouse.down
** Processing line: ~ state.world_lookup = {}~
- Inside source: true
*** True Line Result
state.world_lookup = {}
** Processing line: ~ x, y = to_coord inputs.mouse.down.point # gets x, y coordinates for the grid~
- Inside source: true
*** True Line Result
x, y = to_coord inputs.mouse.down.point # gets x, y coordinates for the grid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.world.any? { |loc| loc == [x, y] } # checks if coordinates duplicate~
- Inside source: true
*** True Line Result
if state.world.any? { |loc| loc == [x, y] } # checks if coordinates duplicate
** Processing line: ~ state.world = state.world.reject { |loc| loc == [x, y] } # erases tile space~
- Inside source: true
*** True Line Result
state.world = state.world.reject { |loc| loc == [x, y] } # erases tile space
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.world << [x, y] # If no duplicates, adds to world collection~
- Inside source: true
*** True Line Result
state.world << [x, y] # If no duplicates, adds to world collection
** 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: ~ # Sets dx to 0 if the player lets go of arrow keys.~
- Inside source: true
*** True Line Result
# Sets dx to 0 if the player lets go of arrow keys.
** Processing line: ~ if inputs.keyboard.key_up.right~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_up.right
** Processing line: ~ state.dx = 0~
- Inside source: true
*** True Line Result
state.dx = 0
** Processing line: ~ elsif inputs.keyboard.key_up.left~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_up.left
** Processing line: ~ state.dx = 0~
- Inside source: true
*** True Line Result
state.dx = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets dx to 3 in whatever direction the player chooses.~
- Inside source: true
*** True Line Result
# Sets dx to 3 in whatever direction the player chooses.
** Processing line: ~ if inputs.keyboard.key_held.right # if right key is pressed~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_held.right # if right key is pressed
** Processing line: ~ state.dx = 3~
- Inside source: true
*** True Line Result
state.dx = 3
** Processing line: ~ elsif inputs.keyboard.key_held.left # if left key is pressed~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_held.left # if left key is pressed
** Processing line: ~ state.dx = -3~
- Inside source: true
*** True Line Result
state.dx = -3
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Sets dy to 5 to make the player ~fly~ when they press the space bar~
- Inside source: true
*** True Line Result
#Sets dy to 5 to make the player ~fly~ when they press the space bar
** Processing line: ~ if inputs.keyboard.key_held.space~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_held.space
** Processing line: ~ state.dy = 5~
- Inside source: true
*** True Line Result
state.dy = 5
** 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 to_coord point~
- Inside source: true
*** True Line Result
def to_coord point
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Integer divides (idiv) point.x to turn into grid~
- Inside source: true
*** True Line Result
# Integer divides (idiv) point.x to turn into grid
** Processing line: ~ # Then, you can just multiply each integer by state.tile_size later so the grid coordinates.~
- Inside source: true
*** True Line Result
# Then, you can just multiply each integer by state.tile_size later so the grid coordinates.
** Processing line: ~ [point.x.idiv(state.tile_size), point.y.idiv(state.tile_size)]~
- Inside source: true
*** True Line Result
[point.x.idiv(state.tile_size), point.y.idiv(state.tile_size)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Represents the tolerance for a collision between the player's rect and another rect.~
- Inside source: true
*** True Line Result
# Represents the tolerance for a collision between the player's rect and another rect.
** Processing line: ~ def collision_tollerance~
- Inside source: true
*** True Line Result
def collision_tollerance
** Processing line: ~ 0.0~
- Inside source: true
*** True Line Result
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: ~ $platformer_physics = PoorManPlatformerPhysics.new~
- Inside source: true
*** True Line Result
$platformer_physics = PoorManPlatformerPhysics.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: ~ $platformer_physics.grid = args.grid~
- Inside source: true
*** True Line Result
$platformer_physics.grid = args.grid
** Processing line: ~ $platformer_physics.inputs = args.inputs~
- Inside source: true
*** True Line Result
$platformer_physics.inputs = args.inputs
** Processing line: ~ $platformer_physics.state = args.state~
- Inside source: true
*** True Line Result
$platformer_physics.state = args.state
** Processing line: ~ $platformer_physics.outputs = args.outputs~
- Inside source: true
*** True Line Result
$platformer_physics.outputs = args.outputs
** Processing line: ~ $platformer_physics.tick~
- Inside source: true
*** True Line Result
$platformer_physics.tick
** Processing line: ~ tick_instructions args, "Sample app shows platformer collisions. CLICK to place box. ARROW keys to move around. SPACE to jump."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows platformer collisions. CLICK to place box. ARROW keys to move around. SPACE to jump."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Physics And Collisions - Box Collision 2 - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Physics And Collisions - Box Collision 2 - 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/04_physics_and_collisions/05_box_collision_2/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/04_physics_and_collisions/05_box_collision_2/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - times: Performs an action a specific number of times.~
- Inside source: true
*** True Line Result
- times: Performs an action a specific number of times.
** Processing line: ~ For example, if we said~
- Inside source: true
*** True Line Result
For example, if we said
** Processing line: ~ 5.times puts "Hello DragonRuby",~
- Inside source: true
*** True Line Result
5.times puts "Hello DragonRuby",
** Processing line: ~ then we'd see the words "Hello DragonRuby" printed on the console 5 times.~
- Inside source: true
*** True Line Result
then we'd see the words "Hello DragonRuby" printed on the console 5 times.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - split: Divides a string into substrings based on a delimiter.~
- Inside source: true
*** True Line Result
- split: Divides a string into substrings based on a delimiter.
** Processing line: ~ For example, if we had a command~
- Inside source: true
*** True Line Result
For example, if we had a command
** Processing line: ~ "DragonRuby is awesome".split(" ")~
- Inside source: true
*** True Line Result
"DragonRuby is awesome".split(" ")
** Processing line: ~ then the result would be~
- Inside source: true
*** True Line Result
then the result would be
** Processing line: ~ ["DragonRuby", "is", "awesome"] because the words are separated by a space delimiter.~
- Inside source: true
*** True Line Result
["DragonRuby", "is", "awesome"] because the words are separated by a space delimiter.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - join: Opposite of split; converts each element of array to a string separated by delimiter.~
- Inside source: true
*** True Line Result
- join: Opposite of split; converts each element of array to a string separated by delimiter.
** Processing line: ~ For example, if we had a command~
- Inside source: true
*** True Line Result
For example, if we had a command
** Processing line: ~ ["DragonRuby","is","awesome"].join(" ")~
- Inside source: true
*** True Line Result
["DragonRuby","is","awesome"].join(" ")
** Processing line: ~ then the result would be~
- Inside source: true
*** True Line Result
then the result would be
** Processing line: ~ "DragonRuby is awesome".~
- Inside source: true
*** True Line Result
"DragonRuby is awesome".
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - to_s: Returns a string representation of an object.~
- Inside source: true
*** True Line Result
- to_s: Returns a string representation of an object.
** Processing line: ~ For example, if we had~
- Inside source: true
*** True Line Result
For example, if we had
** Processing line: ~ 500.to_s~
- Inside source: true
*** True Line Result
500.to_s
** Processing line: ~ the string "500" would be returned.~
- Inside source: true
*** True Line Result
the string "500" would be returned.
** Processing line: ~ Similar to to_i, which returns an integer representation of an object.~
- Inside source: true
*** True Line Result
Similar to to_i, which returns an integer representation of an object.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - elapsed_time: How many frames have passed since the click event.~
- Inside source: true
*** True Line Result
- elapsed_time: How many frames have passed since the click event.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. Values in the array generate labels on the screen.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. Values in the array generate labels on the screen.
** Processing line: ~ The parameters are: [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are: [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - inputs.mouse.down: Determines whether or not the mouse is being pressed down.~
- Inside source: true
*** True Line Result
- inputs.mouse.down: Determines whether or not the mouse is being pressed down.
** Processing line: ~ The position of the mouse when it is pressed down can be found using inputs.mouse.down.point.(x|y).~
- Inside source: true
*** True Line Result
The position of the mouse when it is pressed down can be found using inputs.mouse.down.point.(x|y).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - first: Returns the first element of the array.~
- Inside source: true
*** True Line Result
- first: Returns the first element of the array.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - num1.idiv(num2): Divides two numbers and returns an integer.~
- Inside source: true
*** True Line Result
- num1.idiv(num2): Divides two numbers and returns an integer.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - find_all: Finds all values that satisfy specific requirements.~
- Inside source: true
*** True Line Result
- find_all: Finds all values that satisfy specific requirements.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if two rectangles intersect.~
- Inside source: true
*** True Line Result
- ARRAY#intersect_rect?: Returns true or false depending on if two rectangles intersect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
- Inside source: true
*** True Line Result
- reject: Removes elements from a collection if they meet certain requirements.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
- Inside source: true
*** True Line Result
- String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
- Inside source: true
*** True Line Result
as Ruby code, and the placeholder is replaced with its corresponding value or 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: ~ MAP_FILE_PATH = 'app/map.txt' # the map.txt file in the app folder contains exported map~
- Inside source: true
*** True Line Result
MAP_FILE_PATH = 'app/map.txt' # the map.txt file in the app folder contains exported map
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class MetroidvaniaStarter~
- Inside source: true
*** True Line Result
class MetroidvaniaStarter
** Processing line: ~ attr_accessor :grid, :inputs, :state, :outputs, :gtk~
- Inside source: true
*** True Line Result
attr_accessor :grid, :inputs, :state, :outputs, :gtk
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls methods needed to run the game properly.~
- Inside source: true
*** True Line Result
# Calls methods needed to run the game properly.
** 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: ~ calc~
- Inside source: true
*** True Line Result
calc
** Processing line: ~ process_inputs~
- Inside source: true
*** True Line Result
process_inputs
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets all the default variables.~
- Inside source: true
*** True Line Result
# Sets all the default variables.
** Processing line: ~ # '||' states that initialization occurs only in the first frame.~
- Inside source: true
*** True Line Result
# '||' states that initialization occurs only in the first frame.
** Processing line: ~ def defaults~
- Inside source: true
*** True Line Result
def defaults
** Processing line: ~ state.tile_size = 64~
- Inside source: true
*** True Line Result
state.tile_size = 64
** Processing line: ~ state.gravity = -0.2~
- Inside source: true
*** True Line Result
state.gravity = -0.2
** Processing line: ~ state.player_width = 60~
- Inside source: true
*** True Line Result
state.player_width = 60
** Processing line: ~ state.player_height = 64~
- Inside source: true
*** True Line Result
state.player_height = 64
** Processing line: ~ state.collision_tolerance = 0.0~
- Inside source: true
*** True Line Result
state.collision_tolerance = 0.0
** Processing line: ~ state.previous_tile_size ||= state.tile_size~
- Inside source: true
*** True Line Result
state.previous_tile_size ||= state.tile_size
** Processing line: ~ state.x ||= 0~
- Inside source: true
*** True Line Result
state.x ||= 0
** Processing line: ~ state.y ||= 800~
- Inside source: true
*** True Line Result
state.y ||= 800
** Processing line: ~ state.dy ||= 0~
- Inside source: true
*** True Line Result
state.dy ||= 0
** Processing line: ~ state.dx ||= 0~
- Inside source: true
*** True Line Result
state.dx ||= 0
** Processing line: ~ attempt_load_world_from_file~
- Inside source: true
*** True Line Result
attempt_load_world_from_file
** Processing line: ~ state.world_lookup ||= { }~
- Inside source: true
*** True Line Result
state.world_lookup ||= { }
** Processing line: ~ state.world_collision_rects ||= []~
- Inside source: true
*** True Line Result
state.world_collision_rects ||= []
** Processing line: ~ state.mode ||= :creating # alternates between :creating and :selecting for sprite selection~
- Inside source: true
*** True Line Result
state.mode ||= :creating # alternates between :creating and :selecting for sprite selection
** Processing line: ~ state.select_menu ||= [0, 720, 1280, 720]~
- Inside source: true
*** True Line Result
state.select_menu ||= [0, 720, 1280, 720]
** Processing line: ~ #=======================================IMPORTANT=======================================#~
- Inside source: true
*** True Line Result
#=======================================IMPORTANT=======================================#
** Processing line: ~ # When adding sprites, please label them "image1.png", "image2.png", image3".png", etc.~
- Inside source: true
*** True Line Result
# When adding sprites, please label them "image1.png", "image2.png", image3".png", etc.
** Processing line: ~ # Once you have done that, adjust "state.sprite_quantity" to how many sprites you have.~
- Inside source: true
*** True Line Result
# Once you have done that, adjust "state.sprite_quantity" to how many sprites you have.
** Processing line: ~ #=======================================================================================#~
- Inside source: true
*** True Line Result
#=======================================================================================#
** Processing line: ~ state.sprite_quantity ||= 20 # IMPORTANT TO ALTER IF SPRITES ADDED IF YOU ADD MORE SPRITES~
- Inside source: true
*** True Line Result
state.sprite_quantity ||= 20 # IMPORTANT TO ALTER IF SPRITES ADDED IF YOU ADD MORE SPRITES
** Processing line: ~ state.sprite_coords ||= []~
- Inside source: true
*** True Line Result
state.sprite_coords ||= []
** Processing line: ~ state.banner_coords ||= [640, 680 + 720]~
- Inside source: true
*** True Line Result
state.banner_coords ||= [640, 680 + 720]
** Processing line: ~ state.sprite_selected ||= 1~
- Inside source: true
*** True Line Result
state.sprite_selected ||= 1
** Processing line: ~ state.map_saved_at ||= 0~
- Inside source: true
*** True Line Result
state.map_saved_at ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets all the cordinate values for the sprite selection screen into a grid~
- Inside source: true
*** True Line Result
# Sets all the cordinate values for the sprite selection screen into a grid
** Processing line: ~ # Displayed when 's' is pressed by player to access sprites~
- Inside source: true
*** True Line Result
# Displayed when 's' is pressed by player to access sprites
** Processing line: ~ if state.sprite_coords == [] # if sprite_coords is an empty array~
- Inside source: true
*** True Line Result
if state.sprite_coords == [] # if sprite_coords is an empty array
** Processing line: ~ count = 1~
- Inside source: true
*** True Line Result
count = 1
** Processing line: ~ temp_x = 165 # sets a starting x and y position for display~
- Inside source: true
*** True Line Result
temp_x = 165 # sets a starting x and y position for display
** Processing line: ~ temp_y = 500 + 720~
- Inside source: true
*** True Line Result
temp_y = 500 + 720
** Processing line: ~ state.sprite_quantity.times do # for the number of sprites you have~
- Inside source: true
*** True Line Result
state.sprite_quantity.times do # for the number of sprites you have
** Processing line: ~ state.sprite_coords += [[temp_x, temp_y, count]] # add element to sprite_coords array~
- Inside source: true
*** True Line Result
state.sprite_coords += [[temp_x, temp_y, count]] # add element to sprite_coords array
** Processing line: ~ temp_x += 100 # increment temp_x~
- Inside source: true
*** True Line Result
temp_x += 100 # increment temp_x
** Processing line: ~ count += 1 # increment count~
- Inside source: true
*** True Line Result
count += 1 # increment count
** Processing line: ~ if temp_x > 1280 - (165 + 50) # if exceeding specific horizontal width on screen~
- Inside source: true
*** True Line Result
if temp_x > 1280 - (165 + 50) # if exceeding specific horizontal width on screen
** Processing line: ~ temp_x = 165 # a new row of sprites starts~
- Inside source: true
*** True Line Result
temp_x = 165 # a new row of sprites starts
** Processing line: ~ temp_y -= 75 # new row of sprites starts 75 units lower than the previous row~
- Inside source: true
*** True Line Result
temp_y -= 75 # new row of sprites starts 75 units lower than the previous row
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Places sprites~
- Inside source: true
*** True Line Result
# Places sprites
** Processing line: ~ def render~
- Inside source: true
*** True Line Result
def render
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the x, y, width, height, and image path for each sprite in the world collection.~
- Inside source: true
*** True Line Result
# Sets the x, y, width, height, and image path for each sprite in the world collection.
** Processing line: ~ outputs.sprites << state.world.map do |x, y, sprite|~
- Inside source: true
*** True Line Result
outputs.sprites << state.world.map do |x, y, sprite|
** Processing line: ~ [x * state.tile_size, # multiply by size so grid coordinates; pixel value of location~
- Inside source: true
*** True Line Result
[x * state.tile_size, # multiply by size so grid coordinates; pixel value of location
** Processing line: ~ y * state.tile_size,~
- Inside source: true
*** True Line Result
y * state.tile_size,
** Processing line: ~ state.tile_size,~
- Inside source: true
*** True Line Result
state.tile_size,
** Processing line: ~ state.tile_size,~
- Inside source: true
*** True Line Result
state.tile_size,
** Processing line: ~ 'sprites/image' + sprite.to_s + '.png'] # uses concatenation to create unique image path~
- Inside source: true
*** True Line Result
'sprites/image' + sprite.to_s + '.png'] # uses concatenation to create unique image path
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs sprite for the player by setting x, y, width, height, and image path~
- Inside source: true
*** True Line Result
# Outputs sprite for the player by setting x, y, width, height, and image path
** Processing line: ~ outputs.sprites << [state.x,~
- Inside source: true
*** True Line Result
outputs.sprites << [state.x,
** Processing line: ~ state.y,~
- Inside source: true
*** True Line Result
state.y,
** Processing line: ~ state.player_width,~
- Inside source: true
*** True Line Result
state.player_width,
** Processing line: ~ state.player_height,'sprites/player.png']~
- Inside source: true
*** True Line Result
state.player_height,'sprites/player.png']
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs labels as primitives in top right of the screen~
- Inside source: true
*** True Line Result
# Outputs labels as primitives in top right of the screen
** Processing line: ~ outputs.primitives << [920, 700, 'Press \'s\' to access sprites.', 1, 0].label~
- Inside source: true
*** True Line Result
outputs.primitives << [920, 700, 'Press \'s\' to access sprites.', 1, 0].label
** Processing line: ~ outputs.primitives << [920, 675, 'Click existing sprite to delete.', 1, 0].label~
- Inside source: true
*** True Line Result
outputs.primitives << [920, 675, 'Click existing sprite to delete.', 1, 0].label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.primitives << [920, 640, '<- and -> to move.', 1, 0].label~
- Inside source: true
*** True Line Result
outputs.primitives << [920, 640, '<- and -> to move.', 1, 0].label
** Processing line: ~ outputs.primitives << [920, 615, 'Press and hold space to jump.', 1, 0].label~
- Inside source: true
*** True Line Result
outputs.primitives << [920, 615, 'Press and hold space to jump.', 1, 0].label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.primitives << [920, 580, 'Press \'e\' to export current map.', 1, 0].label~
- Inside source: true
*** True Line Result
outputs.primitives << [920, 580, 'Press \'e\' to export current map.', 1, 0].label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the map is saved and less than 120 frames have passed, the label is displayed~
- Inside source: true
*** True Line Result
# if the map is saved and less than 120 frames have passed, the label is displayed
** Processing line: ~ if state.map_saved_at > 0 && state.map_saved_at.elapsed_time < 120~
- Inside source: true
*** True Line Result
if state.map_saved_at > 0 && state.map_saved_at.elapsed_time < 120
** Processing line: ~ outputs.primitives << [920, 555, 'Map has been exported!', 1, 0, 50, 100, 50].label~
- Inside source: true
*** True Line Result
outputs.primitives << [920, 555, 'Map has been exported!', 1, 0, 50, 100, 50].label
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If player hits 's', following appears~
- Inside source: true
*** True Line Result
# If player hits 's', following appears
** Processing line: ~ if state.mode == :selecting~
- Inside source: true
*** True Line Result
if state.mode == :selecting
** Processing line: ~ # White background for sprite selection~
- Inside source: true
*** True Line Result
# White background for sprite selection
** Processing line: ~ outputs.primitives << [state.select_menu, 255, 255, 255].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [state.select_menu, 255, 255, 255].solid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Select tile label at the top of the screen~
- Inside source: true
*** True Line Result
# Select tile label at the top of the screen
** Processing line: ~ outputs.primitives << [state.banner_coords.x, state.banner_coords.y, "Select Sprite (sprites located in \"sprites\" folder)", 10, 1, 0, 0, 0, 255].label~
- Inside source: true
*** True Line Result
outputs.primitives << [state.banner_coords.x, state.banner_coords.y, "Select Sprite (sprites located in \"sprites\" folder)", 10, 1, 0, 0, 0, 255].label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Places sprites in locations calculated in the defaults function~
- Inside source: true
*** True Line Result
# Places sprites in locations calculated in the defaults function
** Processing line: ~ outputs.primitives << state.sprite_coords.map do |x, y, order|~
- Inside source: true
*** True Line Result
outputs.primitives << state.sprite_coords.map do |x, y, order|
** Processing line: ~ [x, y, 50, 50, 'sprites/image' + order.to_s + ".png"].sprite~
- Inside source: true
*** True Line Result
[x, y, 50, 50, 'sprites/image' + order.to_s + ".png"].sprite
** 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: ~ # Creates sprite following mouse to help indicate which sprite you have selected~
- Inside source: true
*** True Line Result
# Creates sprite following mouse to help indicate which sprite you have selected
** Processing line: ~ # 10 is subtracted from the mouse's x position so that the sprite is not covered by the mouse icon~
- Inside source: true
*** True Line Result
# 10 is subtracted from the mouse's x position so that the sprite is not covered by the mouse icon
** Processing line: ~ outputs.primitives << [inputs.mouse.position.x - 10, inputs.mouse.position.y,~
- Inside source: true
*** True Line Result
outputs.primitives << [inputs.mouse.position.x - 10, inputs.mouse.position.y,
** Processing line: ~ 10, 10, 'sprites/image' + state.sprite_selected.to_s + ".png"].sprite~
- Inside source: true
*** True Line Result
10, 10, 'sprites/image' + state.sprite_selected.to_s + ".png"].sprite
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls methods that perform calculations~
- Inside source: true
*** True Line Result
# Calls methods that perform calculations
** Processing line: ~ def calc~
- Inside source: true
*** True Line Result
def calc
** Processing line: ~ calc_in_game~
- Inside source: true
*** True Line Result
calc_in_game
** Processing line: ~ calc_sprite_selection~
- Inside source: true
*** True Line Result
calc_sprite_selection
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls methods that perform calculations (if in creating mode)~
- Inside source: true
*** True Line Result
# Calls methods that perform calculations (if in creating mode)
** Processing line: ~ def calc_in_game~
- Inside source: true
*** True Line Result
def calc_in_game
** Processing line: ~ return unless state.mode == :creating~
- Inside source: true
*** True Line Result
return unless state.mode == :creating
** Processing line: ~ calc_world_lookup~
- Inside source: true
*** True Line Result
calc_world_lookup
** Processing line: ~ calc_player~
- Inside source: true
*** True Line Result
calc_player
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_world_lookup~
- Inside source: true
*** True Line Result
def calc_world_lookup
** Processing line: ~ # If the tile size isn't equal to the previous tile size,~
- Inside source: true
*** True Line Result
# If the tile size isn't equal to the previous tile size,
** Processing line: ~ # the previous tile size is set to the tile size,~
- Inside source: true
*** True Line Result
# the previous tile size is set to the tile size,
** Processing line: ~ # and world_lookup hash is set to empty.~
- Inside source: true
*** True Line Result
# and world_lookup hash is set to empty.
** Processing line: ~ if state.tile_size != state.previous_tile_size~
- Inside source: true
*** True Line Result
if state.tile_size != state.previous_tile_size
** Processing line: ~ state.previous_tile_size = state.tile_size~
- Inside source: true
*** True Line Result
state.previous_tile_size = state.tile_size
** Processing line: ~ state.world_lookup = {}~
- Inside source: true
*** True Line Result
state.world_lookup = {}
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # return if world_lookup is not empty or if world is empty~
- Inside source: true
*** True Line Result
# return if world_lookup is not empty or if world is empty
** Processing line: ~ return if state.world_lookup.keys.length > 0~
- Inside source: true
*** True Line Result
return if state.world_lookup.keys.length > 0
** Processing line: ~ return unless state.world.length > 0~
- Inside source: true
*** True Line Result
return unless state.world.length > 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Searches through the world and finds the coordinates that exist~
- Inside source: true
*** True Line Result
# Searches through the world and finds the coordinates that exist
** Processing line: ~ state.world_lookup = {}~
- Inside source: true
*** True Line Result
state.world_lookup = {}
** Processing line: ~ state.world.each { |x, y| state.world_lookup[[x, y]] = true }~
- Inside source: true
*** True Line Result
state.world.each { |x, y| state.world_lookup[[x, y]] = true }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Assigns collision rects for every sprite drawn~
- Inside source: true
*** True Line Result
# Assigns collision rects for every sprite drawn
** Processing line: ~ state.world_collision_rects =~
- Inside source: true
*** True Line Result
state.world_collision_rects =
** Processing line: ~ state.world_lookup~
- Inside source: true
*** True Line Result
state.world_lookup
** Processing line: ~ .keys~
- Inside source: true
*** True Line Result
.keys
** Processing line: ~ .map do |coord_x, coord_y|~
- Inside source: true
*** True Line Result
.map do |coord_x, coord_y|
** Processing line: ~ s = state.tile_size~
- Inside source: true
*** True Line Result
s = state.tile_size
** Processing line: ~ # Multiplying by s (the size of a tile) ensures that the rect is~
- Inside source: true
*** True Line Result
# Multiplying by s (the size of a tile) ensures that the rect is
** Processing line: ~ # placed exactly where you want it to be placed (causes grid to coordinate)~
- Inside source: true
*** True Line Result
# placed exactly where you want it to be placed (causes grid to coordinate)
** Processing line: ~ # How many pixels horizontally across and vertically up and down~
- Inside source: true
*** True Line Result
# How many pixels horizontally across and vertically up and down
** Processing line: ~ x = s * coord_x~
- Inside source: true
*** True Line Result
x = s * coord_x
** Processing line: ~ y = s * coord_y~
- Inside source: true
*** True Line Result
y = s * coord_y
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ args: [coord_x, coord_y],~
- Inside source: true
*** True Line Result
args: [coord_x, coord_y],
** Processing line: ~ left_right: [x, y + 4, s, s - 6], # hash keys and values~
- Inside source: true
*** True Line Result
left_right: [x, y + 4, s, s - 6], # hash keys and values
** Processing line: ~ top: [x + 4, y + 6, s - 8, s - 6],~
- Inside source: true
*** True Line Result
top: [x + 4, y + 6, s - 8, s - 6],
** Processing line: ~ bottom: [x + 1, y - 1, s - 2, s - 8],~
- Inside source: true
*** True Line Result
bottom: [x + 1, y - 1, s - 2, s - 8],
** 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: ~ # Calculates movement of player and calls methods that perform collision calculations~
- Inside source: true
*** True Line Result
# Calculates movement of player and calls methods that perform collision calculations
** Processing line: ~ def calc_player~
- Inside source: true
*** True Line Result
def calc_player
** Processing line: ~ state.dy += state.gravity # what goes up must come down because of gravity~
- Inside source: true
*** True Line Result
state.dy += state.gravity # what goes up must come down because of gravity
** Processing line: ~ calc_box_collision~
- Inside source: true
*** True Line Result
calc_box_collision
** Processing line: ~ calc_edge_collision~
- Inside source: true
*** True Line Result
calc_edge_collision
** Processing line: ~ state.y += state.dy # Since velocity is the change in position, the change in y increases by dy~
- Inside source: true
*** True Line Result
state.y += state.dy # Since velocity is the change in position, the change in y increases by dy
** Processing line: ~ state.x += state.dx # Ditto line above but dx and x~
- Inside source: true
*** True Line Result
state.x += state.dx # Ditto line above but dx and x
** Processing line: ~ state.dx *= 0.8 # Scales dx down~
- Inside source: true
*** True Line Result
state.dx *= 0.8 # Scales dx down
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls methods that determine whether the player collides with any world_collision_rects.~
- Inside source: true
*** True Line Result
# Calls methods that determine whether the player collides with any world_collision_rects.
** Processing line: ~ def calc_box_collision~
- Inside source: true
*** True Line Result
def calc_box_collision
** Processing line: ~ return unless state.world_lookup.keys.length > 0 # return unless hash has atleast 1 key~
- Inside source: true
*** True Line Result
return unless state.world_lookup.keys.length > 0 # return unless hash has atleast 1 key
** Processing line: ~ collision_floor~
- Inside source: true
*** True Line Result
collision_floor
** Processing line: ~ collision_left~
- Inside source: true
*** True Line Result
collision_left
** Processing line: ~ collision_right~
- Inside source: true
*** True Line Result
collision_right
** Processing line: ~ collision_ceiling~
- Inside source: true
*** True Line Result
collision_ceiling
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Finds collisions between the bottom of the player's rect and the top of a world_collision_rect.~
- Inside source: true
*** True Line Result
# Finds collisions between the bottom of the player's rect and the top of a world_collision_rect.
** Processing line: ~ def collision_floor~
- Inside source: true
*** True Line Result
def collision_floor
** Processing line: ~ return unless state.dy <= 0 # return unless player is going down or is as far down as possible~
- Inside source: true
*** True Line Result
return unless state.dy <= 0 # return unless player is going down or is as far down as possible
** Processing line: ~ player_rect = [state.x, next_y, state.tile_size, state.tile_size] # definition of player~
- Inside source: true
*** True Line Result
player_rect = [state.x, next_y, state.tile_size, state.tile_size] # definition of player
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs through all the sprites on the field and finds all intersections between player's~
- Inside source: true
*** True Line Result
# Runs through all the sprites on the field and finds all intersections between player's
** Processing line: ~ # bottom and the top of a rect.~
- Inside source: true
*** True Line Result
# bottom and the top of a rect.
** Processing line: ~ floor_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
floor_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:top].intersect_rect?(player_rect, state.collision_tolerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:top].intersect_rect?(player_rect, state.collision_tolerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless floor_collisions # performs following changes if a collision has occurred~
- Inside source: true
*** True Line Result
return unless floor_collisions # performs following changes if a collision has occurred
** Processing line: ~ state.y = floor_collisions[:top].top # y of player is set to the y of the colliding rect's top~
- Inside source: true
*** True Line Result
state.y = floor_collisions[:top].top # y of player is set to the y of the colliding rect's top
** Processing line: ~ state.dy = 0 # no change in y because the player's path is blocked~
- Inside source: true
*** True Line Result
state.dy = 0 # no change in y because the player's path is blocked
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Finds collisions between the player's left side and the right side of a world_collision_rect.~
- Inside source: true
*** True Line Result
# Finds collisions between the player's left side and the right side of a world_collision_rect.
** Processing line: ~ def collision_left~
- Inside source: true
*** True Line Result
def collision_left
** Processing line: ~ return unless state.dx < 0 # return unless player is moving left~
- Inside source: true
*** True Line Result
return unless state.dx < 0 # return unless player is moving left
** Processing line: ~ player_rect = [next_x, state.y, state.tile_size, state.tile_size]~
- Inside source: true
*** True Line Result
player_rect = [next_x, state.y, state.tile_size, state.tile_size]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs through all the sprites on the field and finds all intersections between the player's left side~
- Inside source: true
*** True Line Result
# Runs through all the sprites on the field and finds all intersections between the player's left side
** Processing line: ~ # and the right side of a rect.~
- Inside source: true
*** True Line Result
# and the right side of a rect.
** Processing line: ~ left_side_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
left_side_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless left_side_collisions # return unless collision occurred~
- Inside source: true
*** True Line Result
return unless left_side_collisions # return unless collision occurred
** Processing line: ~ state.x = left_side_collisions[:left_right].right # sets player's x to the x of the colliding rect's right side~
- Inside source: true
*** True Line Result
state.x = left_side_collisions[:left_right].right # sets player's x to the x of the colliding rect's right side
** Processing line: ~ state.dx = 0 # no change in x because the player's path is blocked~
- Inside source: true
*** True Line Result
state.dx = 0 # no change in x because the player's path is blocked
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Finds collisions between the right side of the player and the left side of a world_collision_rect.~
- Inside source: true
*** True Line Result
# Finds collisions between the right side of the player and the left side of a world_collision_rect.
** Processing line: ~ def collision_right~
- Inside source: true
*** True Line Result
def collision_right
** Processing line: ~ return unless state.dx > 0 # return unless player is moving right~
- Inside source: true
*** True Line Result
return unless state.dx > 0 # return unless player is moving right
** Processing line: ~ player_rect = [next_x, state.y, state.tile_size, state.tile_size]~
- Inside source: true
*** True Line Result
player_rect = [next_x, state.y, state.tile_size, state.tile_size]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs through all the sprites on the field and finds all intersections between the player's~
- Inside source: true
*** True Line Result
# Runs through all the sprites on the field and finds all intersections between the player's
** Processing line: ~ # right side and the left side of a rect.~
- Inside source: true
*** True Line Result
# right side and the left side of a rect.
** Processing line: ~ right_side_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
right_side_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless right_side_collisions # return unless collision occurred~
- Inside source: true
*** True Line Result
return unless right_side_collisions # return unless collision occurred
** Processing line: ~ state.x = right_side_collisions[:left_right].left - state.tile_size # player's x is set to the x of colliding rect's left side (minus tile size since x is the player's bottom left corner)~
- Inside source: true
*** True Line Result
state.x = right_side_collisions[:left_right].left - state.tile_size # player's x is set to the x of colliding rect's left side (minus tile size since x is the player's bottom left corner)
** Processing line: ~ state.dx = 0 # no change in x because the player's path is blocked~
- Inside source: true
*** True Line Result
state.dx = 0 # no change in x because the player's path is blocked
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Finds collisions between the top of the player's rect and the bottom of a world_collision_rect.~
- Inside source: true
*** True Line Result
# Finds collisions between the top of the player's rect and the bottom of a world_collision_rect.
** Processing line: ~ def collision_ceiling~
- Inside source: true
*** True Line Result
def collision_ceiling
** Processing line: ~ return unless state.dy > 0 # return unless player is moving up~
- Inside source: true
*** True Line Result
return unless state.dy > 0 # return unless player is moving up
** Processing line: ~ player_rect = [state.x, next_y, state.player_width, state.player_height]~
- Inside source: true
*** True Line Result
player_rect = [state.x, next_y, state.player_width, state.player_height]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs through all the sprites on the field and finds all intersections between the player's top~
- Inside source: true
*** True Line Result
# Runs through all the sprites on the field and finds all intersections between the player's top
** Processing line: ~ # and the bottom of a rect.~
- Inside source: true
*** True Line Result
# and the bottom of a rect.
** Processing line: ~ ceil_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
ceil_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:bottom].intersect_rect?(player_rect, state.collision_tolerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:bottom].intersect_rect?(player_rect, state.collision_tolerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless ceil_collisions # return unless collision occurred~
- Inside source: true
*** True Line Result
return unless ceil_collisions # return unless collision occurred
** Processing line: ~ state.y = ceil_collisions[:bottom].y - state.tile_size # player's y is set to the y of the colliding rect's bottom (minus tile size)~
- Inside source: true
*** True Line Result
state.y = ceil_collisions[:bottom].y - state.tile_size # player's y is set to the y of the colliding rect's bottom (minus tile size)
** Processing line: ~ state.dy = 0 # no change in y because the player's path is blocked~
- Inside source: true
*** True Line Result
state.dy = 0 # no change in y because the player's path is blocked
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Makes sure the player remains within the screen's dimensions.~
- Inside source: true
*** True Line Result
# Makes sure the player remains within the screen's dimensions.
** Processing line: ~ def calc_edge_collision~
- Inside source: true
*** True Line Result
def calc_edge_collision
** Processing line: ~ # Ensures that player doesn't fall below the map~
- Inside source: true
*** True Line Result
# Ensures that player doesn't fall below the map
** Processing line: ~ if next_y < 0 && state.dy < 0 # if player is moving down and is about to fall (next_y) below the map's scope~
- Inside source: true
*** True Line Result
if next_y < 0 && state.dy < 0 # if player is moving down and is about to fall (next_y) below the map's scope
** Processing line: ~ state.y = 0 # 0 is the lowest the player can be while staying on the screen~
- Inside source: true
*** True Line Result
state.y = 0 # 0 is the lowest the player can be while staying on the screen
** Processing line: ~ state.dy = 0~
- Inside source: true
*** True Line Result
state.dy = 0
** Processing line: ~ # Ensures player doesn't go insanely high~
- Inside source: true
*** True Line Result
# Ensures player doesn't go insanely high
** Processing line: ~ elsif next_y > 720 - state.tile_size && state.dy > 0 # if player is moving up, about to exceed map's scope~
- Inside source: true
*** True Line Result
elsif next_y > 720 - state.tile_size && state.dy > 0 # if player is moving up, about to exceed map's scope
** Processing line: ~ state.y = 720 - state.tile_size # if we don't subtract tile_size, we won't be able to see the player on the screen~
- Inside source: true
*** True Line Result
state.y = 720 - state.tile_size # if we don't subtract tile_size, we won't be able to see the player on the screen
** Processing line: ~ state.dy = 0~
- Inside source: true
*** True Line Result
state.dy = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Ensures that player remains in the horizontal range its supposed to~
- Inside source: true
*** True Line Result
# Ensures that player remains in the horizontal range its supposed to
** Processing line: ~ if state.x >= 1280 - state.tile_size && state.dx > 0 # if the player is moving too far right~
- Inside source: true
*** True Line Result
if state.x >= 1280 - state.tile_size && state.dx > 0 # if the player is moving too far right
** Processing line: ~ state.x = 1280 - state.tile_size # farthest right the player can be while remaining in the screen's scope~
- Inside source: true
*** True Line Result
state.x = 1280 - state.tile_size # farthest right the player can be while remaining in the screen's scope
** Processing line: ~ state.dx = 0~
- Inside source: true
*** True Line Result
state.dx = 0
** Processing line: ~ elsif state.x <= 0 && state.dx < 0 # if the player is moving too far left~
- Inside source: true
*** True Line Result
elsif state.x <= 0 && state.dx < 0 # if the player is moving too far left
** Processing line: ~ state.x = 0 # farthest left the player can be while remaining in the screen's scope~
- Inside source: true
*** True Line Result
state.x = 0 # farthest left the player can be while remaining in the screen's scope
** Processing line: ~ state.dx = 0~
- Inside source: true
*** True Line Result
state.dx = 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 calc_sprite_selection~
- Inside source: true
*** True Line Result
def calc_sprite_selection
** Processing line: ~ # Does the transition to bring down the select sprite screen~
- Inside source: true
*** True Line Result
# Does the transition to bring down the select sprite screen
** Processing line: ~ if state.mode == :selecting && state.select_menu.y != 0~
- Inside source: true
*** True Line Result
if state.mode == :selecting && state.select_menu.y != 0
** Processing line: ~ state.select_menu.y = 0 # sets y position of select menu (shown when 's' is pressed)~
- Inside source: true
*** True Line Result
state.select_menu.y = 0 # sets y position of select menu (shown when 's' is pressed)
** Processing line: ~ state.banner_coords.y = 680 # sets y position of Select Sprite banner~
- Inside source: true
*** True Line Result
state.banner_coords.y = 680 # sets y position of Select Sprite banner
** Processing line: ~ state.sprite_coords = state.sprite_coords.map do |x, y, w, h|~
- Inside source: true
*** True Line Result
state.sprite_coords = state.sprite_coords.map do |x, y, w, h|
** Processing line: ~ [x, y - 720, w, h] # sets definition of sprites (change '-' to '+' and the sprites can't be seen)~
- Inside source: true
*** True Line Result
[x, y - 720, w, h] # sets definition of sprites (change '-' to '+' and the sprites can't be seen)
** 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: ~ # Does the transition to leave the select sprite screen~
- Inside source: true
*** True Line Result
# Does the transition to leave the select sprite screen
** Processing line: ~ if state.mode == :creating && state.select_menu.y != 720~
- Inside source: true
*** True Line Result
if state.mode == :creating && state.select_menu.y != 720
** Processing line: ~ state.select_menu.y = 720 # sets y position of select menu (menu is retreated back up)~
- Inside source: true
*** True Line Result
state.select_menu.y = 720 # sets y position of select menu (menu is retreated back up)
** Processing line: ~ state.banner_coords.y = 1000 # sets y position of Select Sprite banner~
- Inside source: true
*** True Line Result
state.banner_coords.y = 1000 # sets y position of Select Sprite banner
** Processing line: ~ state.sprite_coords = state.sprite_coords.map do |x, y, w, h|~
- Inside source: true
*** True Line Result
state.sprite_coords = state.sprite_coords.map do |x, y, w, h|
** Processing line: ~ [x, y + 720, w, h] # sets definition of all elements in collection~
- Inside source: true
*** True Line Result
[x, y + 720, w, h] # sets definition of all elements in collection
** 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 process_inputs~
- Inside source: true
*** True Line Result
def process_inputs
** Processing line: ~ # If the state.mode is back and if the menu has retreated back up~
- Inside source: true
*** True Line Result
# If the state.mode is back and if the menu has retreated back up
** Processing line: ~ # call methods that process user inputs~
- Inside source: true
*** True Line Result
# call methods that process user inputs
** Processing line: ~ if state.mode == :creating~
- Inside source: true
*** True Line Result
if state.mode == :creating
** Processing line: ~ process_inputs_player_movement~
- Inside source: true
*** True Line Result
process_inputs_player_movement
** Processing line: ~ process_inputs_place_tile~
- Inside source: true
*** True Line Result
process_inputs_place_tile
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # For each sprite_coordinate added, check what sprite was selected~
- Inside source: true
*** True Line Result
# For each sprite_coordinate added, check what sprite was selected
** Processing line: ~ if state.mode == :selecting~
- Inside source: true
*** True Line Result
if state.mode == :selecting
** Processing line: ~ state.sprite_coords.map do |x, y, order| # goes through all sprites in collection~
- Inside source: true
*** True Line Result
state.sprite_coords.map do |x, y, order| # goes through all sprites in collection
** Processing line: ~ # checks that a specific sprite was pressed based on x, y position~
- Inside source: true
*** True Line Result
# checks that a specific sprite was pressed based on x, y position
** Processing line: ~ if inputs.mouse.down && # the && (and) sign means ALL statements must be true for the evaluation to be true~
- Inside source: true
*** True Line Result
if inputs.mouse.down && # the && (and) sign means ALL statements must be true for the evaluation to be true
** Processing line: ~ inputs.mouse.down.point.x >= x && # x is greater than or equal to sprite's x and~
- Inside source: true
*** True Line Result
inputs.mouse.down.point.x >= x && # x is greater than or equal to sprite's x and
** Processing line: ~ inputs.mouse.down.point.x <= x + 50 && # x is less than or equal to 50 pixels to the right~
- Inside source: true
*** True Line Result
inputs.mouse.down.point.x <= x + 50 && # x is less than or equal to 50 pixels to the right
** Processing line: ~ inputs.mouse.down.point.y >= y && # y is greater than or equal to sprite's y~
- Inside source: true
*** True Line Result
inputs.mouse.down.point.y >= y && # y is greater than or equal to sprite's y
** Processing line: ~ inputs.mouse.down.point.y <= y + 50 # y is less than or equal to 50 pixels up~
- Inside source: true
*** True Line Result
inputs.mouse.down.point.y <= y + 50 # y is less than or equal to 50 pixels up
** Processing line: ~ state.sprite_selected = order # sprite is chosen~
- Inside source: true
*** True Line Result
state.sprite_selected = order # sprite is chosen
** 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: ~ inputs_export_stage~
- Inside source: true
*** True Line Result
inputs_export_stage
** Processing line: ~ process_inputs_show_available_sprites~
- Inside source: true
*** True Line Result
process_inputs_show_available_sprites
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Moves the player based on the keys they press on their keyboard~
- Inside source: true
*** True Line Result
# Moves the player based on the keys they press on their keyboard
** Processing line: ~ def process_inputs_player_movement~
- Inside source: true
*** True Line Result
def process_inputs_player_movement
** Processing line: ~ # Sets dx to 0 if the player lets go of arrow keys (player won't move left or right)~
- Inside source: true
*** True Line Result
# Sets dx to 0 if the player lets go of arrow keys (player won't move left or right)
** Processing line: ~ if inputs.keyboard.key_up.right~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_up.right
** Processing line: ~ state.dx = 0~
- Inside source: true
*** True Line Result
state.dx = 0
** Processing line: ~ elsif inputs.keyboard.key_up.left~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_up.left
** Processing line: ~ state.dx = 0~
- Inside source: true
*** True Line Result
state.dx = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets dx to 3 in whatever direction the player chooses when they hold down (or press) the left or right keys~
- Inside source: true
*** True Line Result
# Sets dx to 3 in whatever direction the player chooses when they hold down (or press) the left or right keys
** Processing line: ~ if inputs.keyboard.key_held.right~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_held.right
** Processing line: ~ state.dx = 3~
- Inside source: true
*** True Line Result
state.dx = 3
** Processing line: ~ elsif inputs.keyboard.key_held.left~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_held.left
** Processing line: ~ state.dx = -3~
- Inside source: true
*** True Line Result
state.dx = -3
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets dy to 5 to make the player ~fly~ when they press the space bar on their keyboard~
- Inside source: true
*** True Line Result
# Sets dy to 5 to make the player ~fly~ when they press the space bar on their keyboard
** Processing line: ~ if inputs.keyboard.key_held.space~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_held.space
** Processing line: ~ state.dy = 5~
- Inside source: true
*** True Line Result
state.dy = 5
** 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: ~ # Adds tile in the place the user holds down the mouse~
- Inside source: true
*** True Line Result
# Adds tile in the place the user holds down the mouse
** Processing line: ~ def process_inputs_place_tile~
- Inside source: true
*** True Line Result
def process_inputs_place_tile
** Processing line: ~ if inputs.mouse.down # if mouse is pressed~
- Inside source: true
*** True Line Result
if inputs.mouse.down # if mouse is pressed
** Processing line: ~ state.world_lookup = {}~
- Inside source: true
*** True Line Result
state.world_lookup = {}
** Processing line: ~ x, y = to_coord inputs.mouse.down.point # gets x, y coordinates for the grid~
- Inside source: true
*** True Line Result
x, y = to_coord inputs.mouse.down.point # gets x, y coordinates for the grid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Checks if any coordinates duplicate (already exist in world)~
- Inside source: true
*** True Line Result
# Checks if any coordinates duplicate (already exist in world)
** Processing line: ~ if state.world.any? { |existing_x, existing_y, n| existing_x == x && existing_y == y }~
- Inside source: true
*** True Line Result
if state.world.any? { |existing_x, existing_y, n| existing_x == x && existing_y == y }
** Processing line: ~ #erases existing tile space by rejecting them from world~
- Inside source: true
*** True Line Result
#erases existing tile space by rejecting them from world
** Processing line: ~ state.world = state.world.reject do |existing_x, existing_y, n|~
- Inside source: true
*** True Line Result
state.world = state.world.reject do |existing_x, existing_y, n|
** Processing line: ~ existing_x == x && existing_y == y~
- Inside source: true
*** True Line Result
existing_x == x && existing_y == y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.world << [x, y, state.sprite_selected] # If no duplicates, add the sprite~
- Inside source: true
*** True Line Result
state.world << [x, y, state.sprite_selected] # If no duplicates, add the sprite
** 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: ~ # Stores/exports world collection's info (coordinates, sprite number) into a file~
- Inside source: true
*** True Line Result
# Stores/exports world collection's info (coordinates, sprite number) into a file
** Processing line: ~ def inputs_export_stage~
- Inside source: true
*** True Line Result
def inputs_export_stage
** Processing line: ~ if inputs.keyboard.key_down.e # if "e" is pressed~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.e # if "e" is pressed
** Processing line: ~ export_string = state.world.map do |x, y, sprite_number| # stores world info in a string~
- Inside source: true
*** True Line Result
export_string = state.world.map do |x, y, sprite_number| # stores world info in a string
** Processing line: ~ "#{x},#{y},#{sprite_number}" # using string interpolation~
- Inside source: true
*** True Line Result
"#{x},#{y},#{sprite_number}" # using string interpolation
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ gtk.write_file(MAP_FILE_PATH, export_string.join("\n")) # writes string into a file~
- Inside source: true
*** True Line Result
gtk.write_file(MAP_FILE_PATH, export_string.join("\n")) # writes string into a file
** Processing line: ~ state.map_saved_at = state.tick_count # frame number (passage of time) when the map was saved~
- Inside source: true
*** True Line Result
state.map_saved_at = state.tick_count # frame number (passage of time) when the map was saved
** 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_inputs_show_available_sprites~
- Inside source: true
*** True Line Result
def process_inputs_show_available_sprites
** Processing line: ~ # Based on keyboard input, the entity (:creating and :selecting) switch~
- Inside source: true
*** True Line Result
# Based on keyboard input, the entity (:creating and :selecting) switch
** Processing line: ~ if inputs.keyboard.key_held.s && state.mode == :creating # if "s" is pressed and currently creating~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_held.s && state.mode == :creating # if "s" is pressed and currently creating
** Processing line: ~ state.mode = :selecting # will change to selecting~
- Inside source: true
*** True Line Result
state.mode = :selecting # will change to selecting
** Processing line: ~ inputs.keyboard.clear # VERY IMPORTANT! If not present, it'll flicker between on and off~
- Inside source: true
*** True Line Result
inputs.keyboard.clear # VERY IMPORTANT! If not present, it'll flicker between on and off
** Processing line: ~ elsif inputs.keyboard.key_held.s && state.mode == :selecting # if "s" is pressed and currently selecting~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_held.s && state.mode == :selecting # if "s" is pressed and currently selecting
** Processing line: ~ state.mode = :creating # will change to creating~
- Inside source: true
*** True Line Result
state.mode = :creating # will change to creating
** Processing line: ~ inputs.keyboard.clear # VERY IMPORTANT! If not present, it'll flicker between on and off~
- Inside source: true
*** True Line Result
inputs.keyboard.clear # VERY IMPORTANT! If not present, it'll flicker between on and off
** 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: ~ # Loads the world collection by reading from the map.txt file in the app folder~
- Inside source: true
*** True Line Result
# Loads the world collection by reading from the map.txt file in the app folder
** Processing line: ~ def attempt_load_world_from_file~
- Inside source: true
*** True Line Result
def attempt_load_world_from_file
** Processing line: ~ return if state.world # return if the world collection is already populated~
- Inside source: true
*** True Line Result
return if state.world # return if the world collection is already populated
** Processing line: ~ state.world ||= [] # initialized as an empty collection~
- Inside source: true
*** True Line Result
state.world ||= [] # initialized as an empty collection
** Processing line: ~ exported_world = gtk.read_file(MAP_FILE_PATH) # reads the file using the path mentioned at top of code~
- Inside source: true
*** True Line Result
exported_world = gtk.read_file(MAP_FILE_PATH) # reads the file using the path mentioned at top of code
** Processing line: ~ return unless exported_world # return unless the file read was successful~
- Inside source: true
*** True Line Result
return unless exported_world # return unless the file read was successful
** Processing line: ~ state.world = exported_world.each_line.map do |l| # perform action on each line of exported_world~
- Inside source: true
*** True Line Result
state.world = exported_world.each_line.map do |l| # perform action on each line of exported_world
** Processing line: ~ l.split(',').map(&:to_i) # calls split using ',' as a delimiter, and invokes .map on the collection,~
- Inside source: true
*** True Line Result
l.split(',').map(&:to_i) # calls split using ',' as a delimiter, and invokes .map on the collection,
** Processing line: ~ # calling to_i (converts to integers) on each element~
- Inside source: true
*** True Line Result
# calling to_i (converts to integers) on each element
** 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: ~ # Adds the change in y to y to determine the next y position of the player.~
- Inside source: true
*** True Line Result
# Adds the change in y to y to determine the next y position of the player.
** Processing line: ~ def next_y~
- Inside source: true
*** True Line Result
def next_y
** Processing line: ~ state.y + state.dy~
- Inside source: true
*** True Line Result
state.y + state.dy
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Determines next x position of player~
- Inside source: true
*** True Line Result
# Determines next x position of player
** Processing line: ~ def next_x~
- Inside source: true
*** True Line Result
def next_x
** Processing line: ~ if state.dx < 0 # if the player moves left~
- Inside source: true
*** True Line Result
if state.dx < 0 # if the player moves left
** Processing line: ~ return state.x - (state.tile_size - state.player_width) # subtracts since the change in x is negative (player is moving left)~
- Inside source: true
*** True Line Result
return state.x - (state.tile_size - state.player_width) # subtracts since the change in x is negative (player is moving left)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return state.x + (state.tile_size - state.player_width) # adds since the change in x is positive (player is moving right)~
- Inside source: true
*** True Line Result
return state.x + (state.tile_size - state.player_width) # adds since the change in x is positive (player is moving right)
** 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 to_coord point~
- Inside source: true
*** True Line Result
def to_coord point
** Processing line: ~ # Integer divides (idiv) point.x to turn into grid~
- Inside source: true
*** True Line Result
# Integer divides (idiv) point.x to turn into grid
** Processing line: ~ # Then, you can just multiply each integer by state.tile_size~
- Inside source: true
*** True Line Result
# Then, you can just multiply each integer by state.tile_size
** Processing line: ~ # later and huzzah. Grid coordinates~
- Inside source: true
*** True Line Result
# later and huzzah. Grid coordinates
** Processing line: ~ [point.x.idiv(state.tile_size), point.y.idiv(state.tile_size)]~
- Inside source: true
*** True Line Result
[point.x.idiv(state.tile_size), point.y.idiv(state.tile_size)]
** 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: ~ $metroidvania_starter = MetroidvaniaStarter.new~
- Inside source: true
*** True Line Result
$metroidvania_starter = MetroidvaniaStarter.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: ~ $metroidvania_starter.grid = args.grid~
- Inside source: true
*** True Line Result
$metroidvania_starter.grid = args.grid
** Processing line: ~ $metroidvania_starter.inputs = args.inputs~
- Inside source: true
*** True Line Result
$metroidvania_starter.inputs = args.inputs
** Processing line: ~ $metroidvania_starter.state = args.state~
- Inside source: true
*** True Line Result
$metroidvania_starter.state = args.state
** Processing line: ~ $metroidvania_starter.outputs = args.outputs~
- Inside source: true
*** True Line Result
$metroidvania_starter.outputs = args.outputs
** Processing line: ~ $metroidvania_starter.gtk = args.gtk~
- Inside source: true
*** True Line Result
$metroidvania_starter.gtk = args.gtk
** Processing line: ~ $metroidvania_starter.tick~
- Inside source: true
*** True Line Result
$metroidvania_starter.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: ~* Physics And Collisions - Jump Physics - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Physics And Collisions - Jump Physics - 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/04_physics_and_collisions/06_jump_physics/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/04_physics_and_collisions/06_jump_physics/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
- Inside source: true
*** True Line Result
- args.state.new_entity: Used when we want to create a new object, like a sprite or button.
** Processing line: ~ For example, if we want to create a new button, we would declare it as a new entity and~
- Inside source: true
*** True Line Result
For example, if we want to create a new button, we would declare it as a new entity and
** Processing line: ~ then define its properties. (Remember, you can use state to define ANY property and it will~
- Inside source: true
*** True Line Result
then define its properties. (Remember, you can use state to define ANY property and it will
** Processing line: ~ be retained across frames.)~
- Inside source: true
*** True Line Result
be retained across frames.)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
- Inside source: true
*** True Line Result
- args.outputs.solids: An array. The values generate a solid.
** Processing line: ~ The parameters for a solid are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters for a solid are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
- Inside source: true
*** True Line Result
For more information about solids, go to mygame/documentation/03-solids-and-borders.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - num1.greater(num2): Returns the greater value.~
- Inside source: true
*** True Line Result
- num1.greater(num2): Returns the greater value.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The value can be found~
- Inside source: true
*** True Line Result
- Hashes: Collection of unique keys and their corresponding values. The value can be found
** Processing line: ~ using their keys.~
- Inside source: true
*** True Line Result
using their keys.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#inside_rect?: Returns true or false depending on if the point is inside the rect.~
- Inside source: true
*** True Line Result
- ARRAY#inside_rect?: Returns true or false depending on if the point is inside the rect.
** 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: ~ # This sample app is a game that requires the user to jump from one platform to the next.~
- Inside source: true
*** True Line Result
# This sample app is a game that requires the user to jump from one platform to the next.
** Processing line: ~ # As the player successfully clears platforms, they become smaller and move faster.~
- Inside source: true
*** True Line Result
# As the player successfully clears platforms, they become smaller and move faster.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class VerticalPlatformer~
- Inside source: true
*** True Line Result
class VerticalPlatformer
** Processing line: ~ attr_gtk~
- Inside source: true
*** True Line Result
attr_gtk
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # declares vertical platformer as new entity~
- Inside source: true
*** True Line Result
# declares vertical platformer as new entity
** Processing line: ~ def s~
- Inside source: true
*** True Line Result
def s
** Processing line: ~ state.vertical_platformer ||= state.new_entity(:vertical_platformer)~
- Inside source: true
*** True Line Result
state.vertical_platformer ||= state.new_entity(:vertical_platformer)
** Processing line: ~ state.vertical_platformer~
- Inside source: true
*** True Line Result
state.vertical_platformer
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # creates a new platform using a hash~
- Inside source: true
*** True Line Result
# creates a new platform using a hash
** Processing line: ~ def new_platform hash~
- Inside source: true
*** True Line Result
def new_platform hash
** Processing line: ~ s.new_entity_strict(:platform, hash) # platform key~
- Inside source: true
*** True Line Result
s.new_entity_strict(:platform, hash) # platform key
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # calls methods needed for game to run properly~
- Inside source: true
*** True Line Result
# calls methods needed for game to run properly
** 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: ~ calc~
- Inside source: true
*** True Line Result
calc
** 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: ~ # 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: ~ s.platforms ||= [ # initializes platforms collection with two platforms using hashes~
- Inside source: true
*** True Line Result
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),~
- Inside source: true
*** True Line Result
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~
- Inside source: true
*** True Line Result
new_platform(x: 0, y: 300, w: 700, h: 32, dx: 1, speed: 0, rect: nil), # 300 pixels higher
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ s.tick_count = args.state.tick_count~
- Inside source: true
*** True Line Result
s.tick_count = args.state.tick_count
** Processing line: ~ s.gravity = -0.3 # what goes up must come down because of gravity~
- Inside source: true
*** True Line Result
s.gravity = -0.3 # what goes up must come down because of gravity
** Processing line: ~ s.player.platforms_cleared ||= 0 # counts how many platforms the player has successfully cleared~
- Inside source: true
*** True Line Result
s.player.platforms_cleared ||= 0 # counts how many platforms the player has successfully cleared
** Processing line: ~ s.player.x ||= 0 # sets player values~
- Inside source: true
*** True Line Result
s.player.x ||= 0 # sets player values
** Processing line: ~ s.player.y ||= 100~
- Inside source: true
*** True Line Result
s.player.y ||= 100
** Processing line: ~ s.player.w ||= 64~
- Inside source: true
*** True Line Result
s.player.w ||= 64
** Processing line: ~ s.player.h ||= 64~
- Inside source: true
*** True Line Result
s.player.h ||= 64
** Processing line: ~ s.player.dy ||= 0 # change in position~
- Inside source: true
*** True Line Result
s.player.dy ||= 0 # change in position
** Processing line: ~ s.player.dx ||= 0~
- Inside source: true
*** True Line Result
s.player.dx ||= 0
** Processing line: ~ s.player_jump_power = 15~
- Inside source: true
*** True Line Result
s.player_jump_power = 15
** Processing line: ~ s.player_jump_power_duration = 10~
- Inside source: true
*** True Line Result
s.player_jump_power_duration = 10
** Processing line: ~ s.player_max_run_speed = 5~
- Inside source: true
*** True Line Result
s.player_max_run_speed = 5
** Processing line: ~ s.player_speed_slowdown_rate = 0.9~
- Inside source: true
*** True Line Result
s.player_speed_slowdown_rate = 0.9
** Processing line: ~ s.player_acceleration = 1~
- Inside source: true
*** True Line Result
s.player_acceleration = 1
** Processing line: ~ s.camera ||= { y: -100 } # shows view on screen (as the player moves upward, the camera does too)~
- Inside source: true
*** True Line Result
s.camera ||= { y: -100 } # shows view on screen (as the player moves upward, the camera does too)
** 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
# Outputs objects onto the screen
** Processing line: ~ def render~
- Inside source: true
*** True Line Result
def render
** Processing line: ~ outputs.solids << s.platforms.map do |p| # outputs platforms onto screen~
- Inside source: true
*** True Line Result
outputs.solids << s.platforms.map do |p| # outputs platforms onto screen
** Processing line: ~ [p.x + 300, p.y - s.camera[:y], p.w, p.h] # add 300 to place platform in horizontal center~
- Inside source: true
*** True Line Result
[p.x + 300, p.y - s.camera[:y], p.w, p.h] # add 300 to place platform in horizontal center
** Processing line: ~ # don't forget, position of platform is denoted by bottom left hand corner~
- Inside source: true
*** True Line Result
# don't forget, position of platform is denoted by bottom left hand corner
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # outputs player using hash~
- Inside source: true
*** True Line Result
# outputs player using hash
** Processing line: ~ outputs.solids << {~
- Inside source: true
*** True Line Result
outputs.solids << {
** Processing line: ~ x: s.player.x + 300, # player positioned on top of platform~
- Inside source: true
*** True Line Result
x: s.player.x + 300, # player positioned on top of platform
** Processing line: ~ y: s.player.y - s.camera[:y],~
- Inside source: true
*** True Line Result
y: s.player.y - s.camera[:y],
** Processing line: ~ w: s.player.w,~
- Inside source: true
*** True Line Result
w: s.player.w,
** Processing line: ~ h: s.player.h,~
- Inside source: true
*** True Line Result
h: s.player.h,
** Processing line: ~ r: 100, # color saturation~
- Inside source: true
*** True Line Result
r: 100, # color saturation
** Processing line: ~ g: 100,~
- Inside source: true
*** True Line Result
g: 100,
** Processing line: ~ b: 200~
- Inside source: true
*** True Line Result
b: 200
** 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: ~ # Performs calculations~
- Inside source: true
*** True Line Result
# Performs calculations
** Processing line: ~ def calc~
- Inside source: true
*** True Line Result
def calc
** Processing line: ~ s.platforms.each do |p| # for each platform in the collection~
- Inside source: true
*** True Line Result
s.platforms.each do |p| # for each platform in the collection
** Processing line: ~ p.rect = [p.x, p.y, p.w, p.h] # set the definition~
- Inside source: true
*** True Line Result
p.rect = [p.x, p.y, p.w, p.h] # set the definition
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # sets player point by adding half the player's width to the player's x~
- Inside source: true
*** True Line Result
# sets player point by adding half the player's width to the player's x
** Processing line: ~ s.player.point = [s.player.x + s.player.w.half, s.player.y] # change + to - and see what happens!~
- Inside source: true
*** True Line Result
s.player.point = [s.player.x + s.player.w.half, s.player.y] # change + to - and see what happens!
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # search the platforms collection to find if the player's point is inside the rect of a platform~
- Inside source: true
*** True Line Result
# search the platforms collection to find if the player's point is inside the rect of a platform
** Processing line: ~ collision = s.platforms.find { |p| s.player.point.inside_rect? p.rect }~
- Inside source: true
*** True Line Result
collision = s.platforms.find { |p| s.player.point.inside_rect? p.rect }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if collision occurred and player is moving down (or not moving vertically at all)~
- Inside source: true
*** True Line Result
# if collision occurred and player is moving down (or not moving vertically at all)
** Processing line: ~ if collision && s.player.dy <= 0~
- Inside source: true
*** True Line Result
if collision && s.player.dy <= 0
** Processing line: ~ s.player.y = collision.rect.y + collision.rect.h - 2 # player positioned on top of platform~
- Inside source: true
*** True Line Result
s.player.y = collision.rect.y + collision.rect.h - 2 # player positioned on top of platform
** Processing line: ~ s.player.dy = 0 if s.player.dy < 0 # player stops moving vertically~
- Inside source: true
*** True Line Result
s.player.dy = 0 if s.player.dy < 0 # player stops moving vertically
** Processing line: ~ if !s.player.platform~
- Inside source: true
*** True Line Result
if !s.player.platform
** Processing line: ~ s.player.dx = 0 # no horizontal movement~
- Inside source: true
*** True Line Result
s.player.dx = 0 # no horizontal movement
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ # changes horizontal position of player by multiplying collision change in x (dx) by speed and adding it to current x~
- Inside source: true
*** True Line Result
# changes horizontal position of player by multiplying collision change in x (dx) by speed and adding it to current x
** Processing line: ~ s.player.x += collision.dx * collision.speed~
- Inside source: true
*** True Line Result
s.player.x += collision.dx * collision.speed
** Processing line: ~ s.player.platform = collision # player is on the platform that it collided with (or landed on)~
- Inside source: true
*** True Line Result
s.player.platform = collision # player is on the platform that it collided with (or landed on)
** Processing line: ~ if s.player.falling # if player is falling~
- Inside source: true
*** True Line Result
if s.player.falling # if player is falling
** Processing line: ~ s.player.dx = 0 # no horizontal movement~
- Inside source: true
*** True Line Result
s.player.dx = 0 # no horizontal movement
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ s.player.falling = false~
- Inside source: true
*** True Line Result
s.player.falling = false
** Processing line: ~ s.player.jumped_at = nil~
- Inside source: true
*** True Line Result
s.player.jumped_at = nil
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ s.player.platform = nil # player is not on a platform~
- Inside source: true
*** True Line Result
s.player.platform = nil # player is not on a platform
** Processing line: ~ s.player.y += s.player.dy # velocity is the change in position~
- Inside source: true
*** True Line Result
s.player.y += s.player.dy # velocity is the change in position
** Processing line: ~ s.player.dy += s.gravity # acceleration is the change in velocity; what goes up must come down~
- Inside source: true
*** True Line Result
s.player.dy += s.gravity # acceleration is the change in velocity; what goes up must come down
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ s.platforms.each do |p| # for each platform in the collection~
- Inside source: true
*** True Line Result
s.platforms.each do |p| # for each platform in the collection
** Processing line: ~ p.x += p.dx * p.speed # x is incremented by product of dx and speed (causes platform to move horizontally)~
- Inside source: true
*** True Line Result
p.x += p.dx * p.speed # x is incremented by product of dx and speed (causes platform to move horizontally)
** Processing line: ~ # changes platform's x so it moves left and right across the screen (between -300 and 300 pixels)~
- Inside source: true
*** True Line Result
# changes platform's x so it moves left and right across the screen (between -300 and 300 pixels)
** Processing line: ~ if p.x < -300 # if platform goes too far left~
- Inside source: true
*** True Line Result
if p.x < -300 # if platform goes too far left
** Processing line: ~ p.dx *= -1 # dx is scaled down~
- Inside source: true
*** True Line Result
p.dx *= -1 # dx is scaled down
** Processing line: ~ p.x = -300 # as far left as possible within scope~
- Inside source: true
*** True Line Result
p.x = -300 # as far left as possible within scope
** Processing line: ~ elsif p.x > (1000 - p.w) # if platform's x is greater than 300~
- Inside source: true
*** True Line Result
elsif p.x > (1000 - p.w) # if platform's x is greater than 300
** Processing line: ~ p.dx *= -1~
- Inside source: true
*** True Line Result
p.dx *= -1
** Processing line: ~ p.x = (1000 - p.w) # set to 300 (as far right as possible within scope)~
- Inside source: true
*** True Line Result
p.x = (1000 - p.w) # set to 300 (as far right as possible within scope)
** 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: ~ delta = (s.player.y - s.camera[:y] - 100) # used to position camera view~
- Inside source: true
*** True Line Result
delta = (s.player.y - s.camera[:y] - 100) # used to position camera view
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if delta > -200~
- Inside source: true
*** True Line Result
if delta > -200
** Processing line: ~ s.camera[:y] += delta * 0.01 # allows player to see view as they move upwards~
- Inside source: true
*** True Line Result
s.camera[:y] += delta * 0.01 # allows player to see view as they move upwards
** Processing line: ~ s.player.x += s.player.dx # velocity is change in position; change in x increases by dx~
- Inside source: true
*** True Line Result
s.player.x += s.player.dx # velocity is change in position; change in x increases by dx
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # searches platform collection to find platforms located more than 300 pixels above the player~
- Inside source: true
*** True Line Result
# searches platform collection to find platforms located more than 300 pixels above the player
** Processing line: ~ has_platforms = s.platforms.find { |p| p.y > (s.player.y + 300) }~
- Inside source: true
*** True Line Result
has_platforms = s.platforms.find { |p| p.y > (s.player.y + 300) }
** Processing line: ~ if !has_platforms # if there are no platforms 300 pixels above the player~
- Inside source: true
*** True Line Result
if !has_platforms # if there are no platforms 300 pixels above the player
** Processing line: ~ width = 700 - (700 * (0.1 * s.player.platforms_cleared)) # the next platform is smaller than previous~
- Inside source: true
*** True Line Result
width = 700 - (700 * (0.1 * s.player.platforms_cleared)) # the next platform is smaller than previous
** Processing line: ~ s.player.platforms_cleared += 1 # player successfully cleared another platform~
- Inside source: true
*** True Line Result
s.player.platforms_cleared += 1 # player successfully cleared another platform
** Processing line: ~ last_platform = s.platforms[-1] # platform just cleared becomes last platform~
- Inside source: true
*** True Line Result
last_platform = s.platforms[-1] # platform just cleared becomes last platform
** Processing line: ~ # another platform is created 300 pixels above the last platform, and this~
- Inside source: true
*** True Line Result
# another platform is created 300 pixels above the last platform, and this
** Processing line: ~ # new platform has a smaller width and moves faster than all previous platforms~
- Inside source: true
*** True Line Result
# new platform has a smaller width and moves faster than all previous platforms
** Processing line: ~ s.platforms << new_platform(x: (700 - width) * rand, # random x position~
- Inside source: true
*** True Line Result
s.platforms << new_platform(x: (700 - width) * rand, # random x position
** Processing line: ~ y: last_platform.y + 300,~
- Inside source: true
*** True Line Result
y: last_platform.y + 300,
** Processing line: ~ w: width,~
- Inside source: true
*** True Line Result
w: width,
** Processing line: ~ h: 32,~
- Inside source: true
*** True Line Result
h: 32,
** Processing line: ~ dx: 1.randomize(:sign), # random change in x~
- Inside source: true
*** True Line Result
dx: 1.randomize(:sign), # random change in x
** Processing line: ~ speed: 2 * s.player.platforms_cleared,~
- Inside source: true
*** True Line Result
speed: 2 * s.player.platforms_cleared,
** Processing line: ~ rect: nil)~
- Inside source: true
*** True Line Result
rect: nil)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** 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: ~ 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: ~ # Takes input from the user to move the player~
- Inside source: true
*** True Line Result
# Takes input from the user to move the player
** Processing line: ~ def input~
- Inside source: true
*** True Line Result
def input
** Processing line: ~ if inputs.keyboard.space # if the space bar is pressed~
- Inside source: true
*** True Line Result
if inputs.keyboard.space # if the space bar is pressed
** Processing line: ~ s.player.jumped_at ||= s.tick_count # set to current frame~
- Inside source: true
*** True Line Result
s.player.jumped_at ||= s.tick_count # set to current frame
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the time that has passed since the jump is less than the duration of a jump (10 frames)~
- Inside source: true
*** True Line Result
# if the time that has passed since the jump is less than the duration of a jump (10 frames)
** Processing line: ~ # and the player is not falling~
- Inside source: true
*** True Line Result
# and the player is not falling
** Processing line: ~ if s.player.jumped_at.elapsed_time < s.player_jump_power_duration && !s.player.falling~
- Inside source: true
*** True Line Result
if s.player.jumped_at.elapsed_time < s.player_jump_power_duration && !s.player.falling
** Processing line: ~ s.player.dy = s.player_jump_power # player jumps up~
- Inside source: true
*** True Line Result
s.player.dy = s.player_jump_power # player jumps up
** 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 inputs.keyboard.key_up.space # if space bar is in "up" state~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_up.space # if space bar is in "up" state
** Processing line: ~ s.player.falling = true # player is falling~
- Inside source: true
*** True Line Result
s.player.falling = true # player is falling
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.keyboard.left # if left key is pressed~
- Inside source: true
*** True Line Result
if inputs.keyboard.left # if left key is pressed
** Processing line: ~ s.player.dx -= s.player_acceleration # player's position changes, decremented by acceleration~
- Inside source: true
*** True Line Result
s.player.dx -= s.player_acceleration # player's position changes, decremented by acceleration
** Processing line: ~ s.player.dx = s.player.dx.greater(-s.player_max_run_speed) # dx is either current dx or -5, whichever is greater~
- Inside source: true
*** True Line Result
s.player.dx = s.player.dx.greater(-s.player_max_run_speed) # dx is either current dx or -5, whichever is greater
** Processing line: ~ elsif inputs.keyboard.right # if right key is pressed~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.right # if right key is pressed
** Processing line: ~ s.player.dx += s.player_acceleration # player's position changes, incremented by acceleration~
- Inside source: true
*** True Line Result
s.player.dx += s.player_acceleration # player's position changes, incremented by acceleration
** Processing line: ~ s.player.dx = s.player.dx.lesser(s.player_max_run_speed) # dx is either current dx or 5, whichever is lesser~
- Inside source: true
*** True Line Result
s.player.dx = s.player.dx.lesser(s.player_max_run_speed) # dx is either current dx or 5, whichever is lesser
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ s.player.dx *= s.player_speed_slowdown_rate # scales dx down~
- Inside source: true
*** True Line Result
s.player.dx *= s.player_speed_slowdown_rate # scales dx down
** 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: ~ $game = VerticalPlatformer.new~
- Inside source: true
*** True Line Result
$game = VerticalPlatformer.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: ~#+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: ~* Mouse - Mouse Click - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Mouse - Mouse Click - 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/05_mouse/01_mouse_click/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/05_mouse/01_mouse_click/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - product: Returns an array of all combinations of elements from all arrays.~
- Inside source: true
*** True Line Result
- product: Returns an array of all combinations of elements from all arrays.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ For example, [1,2].product([1,2]) would return the following array...~
- Inside source: true
*** True Line Result
For example, [1,2].product([1,2]) would return the following array...
** Processing line: ~ [[1,1], [1,2], [2,1], [2,2]]~
- Inside source: true
*** True Line Result
[[1,1], [1,2], [2,1], [2,2]]
** Processing line: ~ More than two arrays can be given to product and it will still work,~
- Inside source: true
*** True Line Result
More than two arrays can be given to product and it will still work,
** Processing line: ~ such as [1,2].product([1,2],[3,4]). What would product return in this case?~
- Inside source: true
*** True Line Result
such as [1,2].product([1,2],[3,4]). What would product return in this case?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Answer:~
- Inside source: true
*** True Line Result
Answer:
** Processing line: ~ [[1,1,3],[1,1,4],[1,2,3],[1,2,4],[2,1,3],[2,1,4],[2,2,3],[2,2,4]]~
- Inside source: true
*** True Line Result
[[1,1,3],[1,1,4],[1,2,3],[1,2,4],[2,1,3],[2,1,4],[2,2,3],[2,2,4]]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - num1.fdiv(num2): Returns the float division (will have a decimal) of the two given numbers.~
- Inside source: true
*** True Line Result
- num1.fdiv(num2): Returns the float division (will have a decimal) of the two given numbers.
** Processing line: ~ For example, 5.fdiv(2) = 2.5 and 5.fdiv(5) = 1.0~
- Inside source: true
*** True Line Result
For example, 5.fdiv(2) = 2.5 and 5.fdiv(5) = 1.0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - yield: Allows you to call a method with a code block and yield to that block.~
- Inside source: true
*** True Line Result
- yield: Allows you to call a method with a code block and yield to that block.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#inside_rect?: Returns true or false depending on if the point is inside the rect.~
- Inside source: true
*** True Line Result
- ARRAY#inside_rect?: Returns true or false depending on if the point is inside the rect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
- Inside source: true
*** True Line Result
- String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
- Inside source: true
*** True Line Result
as Ruby code, and the placeholder is replaced with its corresponding value or result.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.mouse.click: This property will be set if the mouse was clicked.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click: This property will be set if the mouse was clicked.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Ternary operator (?): Will evaluate a statement (just like an if statement)~
- Inside source: true
*** True Line Result
- Ternary operator (?): Will evaluate a statement (just like an if statement)
** Processing line: ~ and perform an action if the result is true or another action if it is false.~
- Inside source: true
*** True Line Result
and perform an action if the result is true or another action if it is false.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
- Inside source: true
*** True Line Result
- reject: Removes elements from a collection if they meet certain requirements.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.borders: An array. The values generate a border.~
- Inside source: true
*** True Line Result
- args.outputs.borders: An array. The values generate a border.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]
** Processing line: ~ For more information about borders, go to mygame/documentation/03-solids-and-borders.md.~
- Inside source: true
*** True Line Result
For more information about borders, go to mygame/documentation/03-solids-and-borders.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. The values generate a label.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.
** 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: ~ # This sample app is a classic game of Tic Tac Toe.~
- Inside source: true
*** True Line Result
# This sample app is a classic game of Tic Tac Toe.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class TicTacToe~
- Inside source: true
*** True Line Result
class TicTacToe
** Processing line: ~ attr_accessor :_, :state, :outputs, :inputs, :grid, :gtk~
- Inside source: true
*** True Line Result
attr_accessor :_, :state, :outputs, :inputs, :grid, :gtk
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Starts the game with player x's turn and creates an array (to_a) for space combinations.~
- Inside source: true
*** True Line Result
# 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.~
- Inside source: true
*** True Line Result
# Calls methods necessary for the game to run properly.
** Processing line: ~ def tick~
- 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~
- Inside source: true
*** True Line Result
state.space_combinations = [-1, 0, 1].product([-1, 0, 1]).to_a
** Processing line: ~ render_board~
- Inside source: true
*** True Line Result
render_board
** Processing line: ~ input_board~
- Inside source: true
*** True Line Result
input_board
** 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
# Uses borders to create grid squares for the game's board. Also outputs the game pieces using labels.
** Processing line: ~ def render_board~
- Inside source: true
*** True Line Result
def render_board
** Processing line: ~ square_size = 80~
- Inside source: true
*** True Line Result
square_size = 80
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Positions the game's board in the center of the screen.~
- Inside source: true
*** True Line Result
# Positions the game's board in the center of the screen.
** Processing line: ~ # Try removing what follows grid.w_half or grid.h_half and see how the position changes!~
- Inside source: true
*** True Line Result
# Try removing what follows grid.w_half or grid.h_half and see how the position changes!
** Processing line: ~ board_left = grid.w_half - square_size * 1.5~
- Inside source: true
*** True Line Result
board_left = grid.w_half - square_size * 1.5
** Processing line: ~ board_top = grid.h_half - square_size * 1.5~
- Inside source: true
*** True Line Result
board_top = grid.h_half - square_size * 1.5
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # At first glance, the add(1) looks pretty trivial. But if you remove it,~
- Inside source: true
*** True Line Result
# At first glance, the add(1) looks pretty trivial. But if you remove it,
** Processing line: ~ # you'll see that the positioning of the board would be skewed without it!~
- Inside source: true
*** True Line Result
# you'll see that the positioning of the board would be skewed without it!
** Processing line: ~ # Or if you put 2 in the parenthesis, the pieces will be placed in the wrong squares~
- Inside source: true
*** True Line Result
# Or if you put 2 in the parenthesis, the pieces will be placed in the wrong squares
** Processing line: ~ # due to the change in board placement.~
- Inside source: true
*** True Line Result
# due to the change in board placement.
** Processing line: ~ outputs.borders << all_spaces do |x, y, space| # outputs borders for all board spaces~
- Inside source: true
*** True Line Result
outputs.borders << all_spaces do |x, y, space| # outputs borders for all board spaces
** Processing line: ~ space.border ||= [~
- Inside source: true
*** True Line Result
space.border ||= [
** Processing line: ~ board_left + x.add(1) * square_size, # space.border is initialized using this definition~
- Inside source: true
*** True Line Result
board_left + x.add(1) * square_size, # space.border is initialized using this definition
** Processing line: ~ board_top + y.add(1) * square_size,~
- Inside source: true
*** True Line Result
board_top + y.add(1) * square_size,
** Processing line: ~ square_size,~
- Inside source: true
*** True Line Result
square_size,
** Processing line: ~ square_size~
- Inside source: true
*** True Line Result
square_size
** 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: ~ # Again, the calculations ensure that the piece is placed in the center of the grid square.~
- Inside source: true
*** True Line Result
# Again, the calculations ensure that the piece is placed in the center of the grid square.
** Processing line: ~ # Remove the '- 20' and the piece will be placed at the top of the grid square instead of the center.~
- Inside source: true
*** True Line Result
# Remove the '- 20' and the piece will be placed at the top of the grid square instead of the center.
** Processing line: ~ outputs.labels << filled_spaces do |x, y, space| # put label in each filled space of board~
- Inside source: true
*** True Line Result
outputs.labels << filled_spaces do |x, y, space| # put label in each filled space of board
** Processing line: ~ label board_left + x.add(1) * square_size + square_size.fdiv(2),~
- Inside source: true
*** True Line Result
label board_left + x.add(1) * square_size + square_size.fdiv(2),
** Processing line: ~ board_top + y.add(1) * square_size + square_size - 20,~
- Inside source: true
*** True Line Result
board_top + y.add(1) * square_size + square_size - 20,
** Processing line: ~ space.piece # text of label, either "x" or "o"~
- Inside source: true
*** True Line Result
space.piece # text of label, either "x" or "o"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Uses a label to output whether x or o won, or if a draw occurred.~
- Inside source: true
*** True Line Result
# Uses a label to output whether x or o won, or if a draw occurred.
** Processing line: ~ # If the game is ongoing, a label shows whose turn it currently is.~
- Inside source: true
*** True Line Result
# If the game is ongoing, a label shows whose turn it currently is.
** Processing line: ~ outputs.labels << if state.x_won~
- Inside source: true
*** True Line Result
outputs.labels << if state.x_won
** Processing line: ~ label grid.w_half, grid.top - 80, "x won" # the '-80' positions the label 80 pixels lower than top~
- Inside source: true
*** True Line Result
label grid.w_half, grid.top - 80, "x won" # the '-80' positions the label 80 pixels lower than top
** Processing line: ~ elsif state.o_won~
- Inside source: true
*** True Line Result
elsif state.o_won
** Processing line: ~ label grid.w_half, grid.top - 80, "o won" # grid.w_half positions the label in the center horizontally~
- Inside source: true
*** True Line Result
label grid.w_half, grid.top - 80, "o won" # grid.w_half positions the label in the center horizontally
** Processing line: ~ elsif state.draw~
- Inside source: true
*** True Line Result
elsif state.draw
** Processing line: ~ label grid.w_half, grid.top - 80, "a draw"~
- Inside source: true
*** True Line Result
label grid.w_half, grid.top - 80, "a draw"
** Processing line: ~ else # if no one won and the game is ongoing~
- Inside source: true
*** True Line Result
else # if no one won and the game is ongoing
** Processing line: ~ label grid.w_half, grid.top - 80, "turn: #{state.current_turn}"~
- Inside source: true
*** True Line Result
label grid.w_half, grid.top - 80, "turn: #{state.current_turn}"
** 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: ~ # Calls the methods responsible for handling user input and determining the winner.~
- Inside source: true
*** True Line Result
# Calls the methods responsible for handling user input and determining the winner.
** Processing line: ~ # Does nothing unless the mouse is clicked.~
- Inside source: true
*** True Line Result
# Does nothing unless the mouse is clicked.
** Processing line: ~ def input_board~
- Inside source: true
*** True Line Result
def input_board
** Processing line: ~ return unless inputs.mouse.click~
- Inside source: true
*** True Line Result
return unless inputs.mouse.click
** Processing line: ~ input_place_piece~
- Inside source: true
*** True Line Result
input_place_piece
** Processing line: ~ input_restart_game~
- Inside source: true
*** True Line Result
input_restart_game
** Processing line: ~ determine_winner~
- Inside source: true
*** True Line Result
determine_winner
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Handles user input for placing pieces on the board.~
- Inside source: true
*** True Line Result
# Handles user input for placing pieces on the board.
** Processing line: ~ def input_place_piece~
- Inside source: true
*** True Line Result
def input_place_piece
** Processing line: ~ return if state.game_over~
- Inside source: true
*** True Line Result
return if state.game_over
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Checks to find the space that the mouse was clicked inside of, and makes sure the space does not already~
- Inside source: true
*** True Line Result
# Checks to find the space that the mouse was clicked inside of, and makes sure the space does not already
** Processing line: ~ # have a piece in it.~
- Inside source: true
*** True Line Result
# have a piece in it.
** Processing line: ~ __, __, space = all_spaces.find do |__, __, space|~
- Inside source: true
*** True Line Result
__, __, space = all_spaces.find do |__, __, space|
** Processing line: ~ inputs.mouse.click.point.inside_rect?(space.border) && !space.piece~
- Inside source: true
*** True Line Result
inputs.mouse.click.point.inside_rect?(space.border) && !space.piece
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The piece that goes into the space belongs to the player whose turn it currently is.~
- Inside source: true
*** True Line Result
# The piece that goes into the space belongs to the player whose turn it currently is.
** Processing line: ~ return unless space~
- Inside source: true
*** True Line Result
return unless space
** Processing line: ~ space.piece = state.current_turn~
- Inside source: true
*** True Line Result
space.piece = state.current_turn
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This ternary operator statement allows us to change the current player's turn.~
- Inside source: true
*** True Line Result
# This ternary operator statement allows us to change the current player's turn.
** Processing line: ~ # If it is currently x's turn, it becomes o's turn. If it is not x's turn, it become's x's turn.~
- Inside source: true
*** True Line Result
# If it is currently x's turn, it becomes o's turn. If it is not x's turn, it become's x's turn.
** Processing line: ~ state.current_turn = state.current_turn == :x ? :o : :x~
- Inside source: true
*** True Line Result
state.current_turn = state.current_turn == :x ? :o : :x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Resets the game.~
- Inside source: true
*** True Line Result
# Resets the game.
** Processing line: ~ def input_restart_game~
- Inside source: true
*** True Line Result
def input_restart_game
** Processing line: ~ return unless state.game_over~
- Inside source: true
*** True Line Result
return unless state.game_over
** Processing line: ~ gtk.reset~
- Inside source: true
*** True Line Result
gtk.reset
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Checks if x or o won the game.~
- Inside source: true
*** True Line Result
# Checks if x or o won the game.
** Processing line: ~ # If neither player wins and all nine squares are filled, a draw happens.~
- Inside source: true
*** True Line Result
# If neither player wins and all nine squares are filled, a draw happens.
** Processing line: ~ # Once a player is chosen as the winner or a draw happens, the game is over.~
- Inside source: true
*** True Line Result
# Once a player is chosen as the winner or a draw happens, the game is over.
** Processing line: ~ def determine_winner~
- Inside source: true
*** True Line Result
def determine_winner
** Processing line: ~ state.x_won = won? :x # evaluates to either true or false (boolean values)~
- Inside source: true
*** True Line Result
state.x_won = won? :x # evaluates to either true or false (boolean values)
** Processing line: ~ state.o_won = won? :o~
- Inside source: true
*** True Line Result
state.o_won = won? :o
** Processing line: ~ state.draw = true if filled_spaces.length == 9 && !state.x_won && !state.o_won~
- Inside source: true
*** True Line Result
state.draw = true if filled_spaces.length == 9 && !state.x_won && !state.o_won
** Processing line: ~ state.game_over = state.x_won || state.o_won || state.draw~
- Inside source: true
*** True Line Result
state.game_over = state.x_won || state.o_won || state.draw
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Determines if a player won by checking if there is a horizontal match or vertical match.~
- Inside source: true
*** True Line Result
# Determines if a player won by checking if there is a horizontal match or vertical match.
** Processing line: ~ # Horizontal_match and vertical_match have boolean values. If either is true, the game has been won.~
- Inside source: true
*** True Line Result
# Horizontal_match and vertical_match have boolean values. If either is true, the game has been won.
** Processing line: ~ def won? piece~
- Inside source: true
*** True Line Result
def won? piece
** Processing line: ~ # performs action on all space combinations~
- Inside source: true
*** True Line Result
# performs action on all space combinations
** Processing line: ~ won = [[-1, 0, 1]].product([-1, 0, 1]).map do |xs, y|~
- Inside source: true
*** True Line Result
won = [[-1, 0, 1]].product([-1, 0, 1]).map do |xs, y|
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Checks if the 3 grid spaces with the same y value (or same row) and~
- Inside source: true
*** True Line Result
# Checks if the 3 grid spaces with the same y value (or same row) and
** Processing line: ~ # x values that are next to each other have pieces that belong to the same player.~
- Inside source: true
*** True Line Result
# x values that are next to each other have pieces that belong to the same player.
** Processing line: ~ # Remember, the value of piece is equal to the current turn (which is the player).~
- Inside source: true
*** True Line Result
# Remember, the value of piece is equal to the current turn (which is the player).
** Processing line: ~ horizontal_match = state.spaces[xs[0]][y].piece == piece &&~
- Inside source: true
*** True Line Result
horizontal_match = state.spaces[xs[0]][y].piece == piece &&
** Processing line: ~ state.spaces[xs[1]][y].piece == piece &&~
- Inside source: true
*** True Line Result
state.spaces[xs[1]][y].piece == piece &&
** Processing line: ~ state.spaces[xs[2]][y].piece == piece~
- Inside source: true
*** True Line Result
state.spaces[xs[2]][y].piece == piece
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Checks if the 3 grid spaces with the same x value (or same column) and~
- Inside source: true
*** True Line Result
# Checks if the 3 grid spaces with the same x value (or same column) and
** Processing line: ~ # y values that are next to each other have pieces that belong to the same player.~
- Inside source: true
*** True Line Result
# y values that are next to each other have pieces that belong to the same player.
** Processing line: ~ # The && represents an "and" statement: if even one part of the statement is false,~
- Inside source: true
*** True Line Result
# The && represents an "and" statement: if even one part of the statement is false,
** Processing line: ~ # the entire statement evaluates to false.~
- Inside source: true
*** True Line Result
# the entire statement evaluates to false.
** Processing line: ~ vertical_match = state.spaces[y][xs[0]].piece == piece &&~
- Inside source: true
*** True Line Result
vertical_match = state.spaces[y][xs[0]].piece == piece &&
** Processing line: ~ state.spaces[y][xs[1]].piece == piece &&~
- Inside source: true
*** True Line Result
state.spaces[y][xs[1]].piece == piece &&
** Processing line: ~ state.spaces[y][xs[2]].piece == piece~
- Inside source: true
*** True Line Result
state.spaces[y][xs[2]].piece == piece
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ horizontal_match || vertical_match # if either is true, true is returned~
- Inside source: true
*** True Line Result
horizontal_match || vertical_match # if either is true, true is returned
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sees if there is a diagonal match, starting from the bottom left and ending at the top right.~
- Inside source: true
*** True Line Result
# Sees if there is a diagonal match, starting from the bottom left and ending at the top right.
** Processing line: ~ # Is added to won regardless of whether the statement is true or false.~
- Inside source: true
*** True Line Result
# Is added to won regardless of whether the statement is true or false.
** Processing line: ~ won << (state.spaces[-1][-1].piece == piece && # bottom left~
- Inside source: true
*** True Line Result
won << (state.spaces[-1][-1].piece == piece && # bottom left
** Processing line: ~ state.spaces[ 0][ 0].piece == piece && # center~
- Inside source: true
*** True Line Result
state.spaces[ 0][ 0].piece == piece && # center
** Processing line: ~ state.spaces[ 1][ 1].piece == piece) # top right~
- Inside source: true
*** True Line Result
state.spaces[ 1][ 1].piece == piece) # top right
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sees if there is a diagonal match, starting at the bottom right and ending at the top left~
- Inside source: true
*** True Line Result
# Sees if there is a diagonal match, starting at the bottom right and ending at the top left
** Processing line: ~ # and is added to won.~
- Inside source: true
*** True Line Result
# and is added to won.
** Processing line: ~ won << (state.spaces[ 1][-1].piece == piece && # bottom right~
- Inside source: true
*** True Line Result
won << (state.spaces[ 1][-1].piece == piece && # bottom right
** Processing line: ~ state.spaces[ 0][ 0].piece == piece && # center~
- Inside source: true
*** True Line Result
state.spaces[ 0][ 0].piece == piece && # center
** Processing line: ~ state.spaces[-1][ 1].piece == piece) # top left~
- Inside source: true
*** True Line Result
state.spaces[-1][ 1].piece == piece) # top left
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Any false statements (meaning false diagonal matches) are rejected from won~
- Inside source: true
*** True Line Result
# Any false statements (meaning false diagonal matches) are rejected from won
** Processing line: ~ won.reject_false.any?~
- Inside source: true
*** True Line Result
won.reject_false.any?
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Defines filled spaces on the board by rejecting all spaces that do not have game pieces in them.~
- Inside source: true
*** True Line Result
# Defines filled spaces on the board by rejecting all spaces that do not have game pieces in them.
** Processing line: ~ # The ! before a statement means "not". For example, we are rejecting any space combinations that do~
- Inside source: true
*** True Line Result
# The ! before a statement means "not". For example, we are rejecting any space combinations that do
** Processing line: ~ # NOT have pieces in them.~
- Inside source: true
*** True Line Result
# NOT have pieces in them.
** Processing line: ~ def filled_spaces~
- Inside source: true
*** True Line Result
def filled_spaces
** Processing line: ~ state.space_combinations~
- Inside source: true
*** True Line Result
state.space_combinations
** Processing line: ~ .reject { |x, y| !state.spaces[x][y].piece } # reject spaces with no pieces in them~
- Inside source: true
*** True Line Result
.reject { |x, y| !state.spaces[x][y].piece } # reject spaces with no pieces in them
** Processing line: ~ .map do |x, y|~
- Inside source: true
*** True Line Result
.map do |x, y|
** Processing line: ~ if block_given?~
- Inside source: true
*** True Line Result
if block_given?
** Processing line: ~ yield x, y, state.spaces[x][y]~
- Inside source: true
*** True Line Result
yield x, y, state.spaces[x][y]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ [x, y, state.spaces[x][y]] # sets definition of space~
- Inside source: true
*** True Line Result
[x, y, state.spaces[x][y]] # sets definition of space
** 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: ~ # Defines all spaces on the board.~
- Inside source: true
*** True Line Result
# Defines all spaces on the board.
** Processing line: ~ def all_spaces~
- Inside source: true
*** True Line Result
def all_spaces
** Processing line: ~ if !block_given?~
- Inside source: true
*** True Line Result
if !block_given?
** Processing line: ~ state.space_combinations.map do |x, y|~
- Inside source: true
*** True Line Result
state.space_combinations.map do |x, y|
** Processing line: ~ [x, y, state.spaces[x][y]] # sets definition of space~
- Inside source: true
*** True Line Result
[x, y, state.spaces[x][y]] # sets definition of space
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else # if a block is given (block_given? is true)~
- Inside source: true
*** True Line Result
else # if a block is given (block_given? is true)
** Processing line: ~ state.space_combinations.map do |x, y|~
- Inside source: true
*** True Line Result
state.space_combinations.map do |x, y|
** Processing line: ~ yield x, y, state.spaces[x][y] # yield if a block is given~
- Inside source: true
*** True Line Result
yield x, y, state.spaces[x][y] # yield if a block is given
** 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: ~ # Sets values for a label, such as the position, value, size, alignment, and color.~
- Inside source: true
*** True Line Result
# Sets values for a label, such as the position, value, size, alignment, and color.
** Processing line: ~ def label x, y, value~
- Inside source: true
*** True Line Result
def label x, y, value
** Processing line: ~ [x, y + 10, value, 20, 1, 0, 0, 0]~
- Inside source: true
*** True Line Result
[x, y + 10, value, 20, 1, 0, 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: ~ $tic_tac_toe = TicTacToe.new~
- Inside source: true
*** True Line Result
$tic_tac_toe = TicTacToe.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: ~ $tic_tac_toe._ = args~
- Inside source: true
*** True Line Result
$tic_tac_toe._ = args
** Processing line: ~ $tic_tac_toe.state = args.state~
- Inside source: true
*** True Line Result
$tic_tac_toe.state = args.state
** Processing line: ~ $tic_tac_toe.outputs = args.outputs~
- Inside source: true
*** True Line Result
$tic_tac_toe.outputs = args.outputs
** Processing line: ~ $tic_tac_toe.inputs = args.inputs~
- Inside source: true
*** True Line Result
$tic_tac_toe.inputs = args.inputs
** Processing line: ~ $tic_tac_toe.grid = args.grid~
- Inside source: true
*** True Line Result
$tic_tac_toe.grid = args.grid
** Processing line: ~ $tic_tac_toe.gtk = args.gtk~
- Inside source: true
*** True Line Result
$tic_tac_toe.gtk = args.gtk
** Processing line: ~ $tic_tac_toe.tick~
- Inside source: true
*** True Line Result
$tic_tac_toe.tick
** Processing line: ~ tick_instructions args, "Sample app shows how to work with mouse clicks."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to work with mouse clicks."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Mouse - Mouse Move - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Mouse - Mouse Move - 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/05_mouse/02_mouse_move/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/05_mouse/02_mouse_move/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - num1.greater(num2): Returns the greater value.~
- Inside source: true
*** True Line Result
- num1.greater(num2): Returns the greater value.
** Processing line: ~ For example, if we have the command~
- Inside source: true
*** True Line Result
For example, if we have the command
** Processing line: ~ puts 4.greater(3)~
- Inside source: true
*** True Line Result
puts 4.greater(3)
** Processing line: ~ the number 4 would be printed to the console since it has a greater value than 3.~
- Inside source: true
*** True Line Result
the number 4 would be printed to the console since it has a greater value than 3.
** Processing line: ~ Similar to lesser, which returns the lesser value.~
- Inside source: true
*** True Line Result
Similar to lesser, which returns the lesser value.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - find_all: Finds all elements of a collection that meet certain requirements.~
- Inside source: true
*** True Line Result
- find_all: Finds all elements of a collection that meet certain requirements.
** Processing line: ~ For example, in this sample app, we're using find_all to find all zombies that have intersected~
- Inside source: true
*** True Line Result
For example, in this sample app, we're using find_all to find all zombies that have intersected
** Processing line: ~ or hit the player's sprite since these zombies have been killed.~
- Inside source: true
*** True Line Result
or hit the player's sprite since these zombies have been killed.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.keyboard.key_down.KEY: Determines if a key is being held or pressed.~
- Inside source: true
*** True Line Result
- args.inputs.keyboard.key_down.KEY: Determines if a key is being held or pressed.
** Processing line: ~ Stores the frame the "down" event occurred.~
- Inside source: true
*** True Line Result
Stores the frame the "down" event occurred.
** Processing line: ~ For more information about the keyboard, go to mygame/documentation/06-keyboard.md.~
- Inside source: true
*** True Line Result
For more information about the keyboard, go to mygame/documentation/06-keyboard.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.sprites: An array. The values generate a sprite.~
- Inside source: true
*** True Line Result
- args.outputs.sprites: An array. The values generate a sprite.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, PATH, ANGLE, ALPHA, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, PATH, ANGLE, ALPHA, RED, GREEN, BLUE]
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
- Inside source: true
*** True Line Result
For more information about sprites, go to mygame/documentation/05-sprites.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
- Inside source: true
*** True Line Result
- args.state.new_entity: Used when we want to create a new object, like a sprite or button.
** Processing line: ~ When we want to create a new object, we can declare it as a new entity and then define~
- Inside source: true
*** True Line Result
When we want to create a new object, we can declare it as a new entity and then define
** Processing line: ~ its properties. (Remember, you can use state to define ANY property and it will~
- Inside source: true
*** True Line Result
its properties. (Remember, you can use state to define ANY property and it will
** Processing line: ~ be retained across frames.)~
- Inside source: true
*** True Line Result
be retained across frames.)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
- Inside source: true
*** True Line Result
- String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
- Inside source: true
*** True Line Result
as Ruby code, and the placeholder is replaced with its corresponding value or result.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - map: Ruby method used to transform data; used in arrays, hashes, and collections.~
- Inside source: true
*** True Line Result
- map: Ruby method used to transform data; used in arrays, hashes, and collections.
** Processing line: ~ Can be used to perform an action on every element of a collection, such as multiplying~
- Inside source: true
*** True Line Result
Can be used to perform an action on every element of a collection, such as multiplying
** Processing line: ~ each element by 2 or declaring every element as a new entity.~
- Inside source: true
*** True Line Result
each element by 2 or declaring every element as a new entity.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - sample: Chooses a random element from the array.~
- Inside source: true
*** True Line Result
- sample: Chooses a random element from the array.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - reject: Removes elements that meet certain requirements.~
- Inside source: true
*** True Line Result
- reject: Removes elements that meet certain requirements.
** Processing line: ~ In this sample app, we're removing/rejecting zombies that reach the center of the screen. We're also~
- Inside source: true
*** True Line Result
In this sample app, we're removing/rejecting zombies that reach the center of the screen. We're also
** Processing line: ~ rejecting zombies that were killed more than 30 frames ago.~
- Inside source: true
*** True Line Result
rejecting zombies that were killed more than 30 frames ago.
** 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: ~ # This sample app allows users to move around the screen in order to kill zombies. Zombies appear from every direction so the goal~
- Inside source: true
*** True Line Result
# This sample app allows users to move around the screen in order to kill zombies. Zombies appear from every direction so the goal
** Processing line: ~ # is to kill the zombies as fast as possible!~
- Inside source: true
*** True Line Result
# is to kill the zombies as fast as possible!
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class ProtectThePuppiesFromTheZombies~
- Inside source: true
*** True Line Result
class ProtectThePuppiesFromTheZombies
** Processing line: ~ attr_accessor :grid, :inputs, :state, :outputs~
- Inside source: true
*** True Line Result
attr_accessor :grid, :inputs, :state, :outputs
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls the methods necessary for the game to run properly.~
- Inside source: true
*** True Line Result
# Calls the methods necessary for the game to run properly.
** 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: ~ calc~
- Inside source: true
*** True Line Result
calc
** 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: ~ # Sets default values for the zombies and for the player.~
- Inside source: true
*** True Line Result
# Sets default values for the zombies and for the player.
** Processing line: ~ # Initialization happens only in the first frame.~
- Inside source: true
*** True Line Result
# Initialization happens only in the first frame.
** Processing line: ~ def defaults~
- Inside source: true
*** True Line Result
def defaults
** Processing line: ~ state.flash_at ||= 0~
- Inside source: true
*** True Line Result
state.flash_at ||= 0
** Processing line: ~ state.zombie_min_spawn_rate ||= 60~
- Inside source: true
*** True Line Result
state.zombie_min_spawn_rate ||= 60
** Processing line: ~ state.zombie_spawn_countdown ||= random_spawn_countdown state.zombie_min_spawn_rate~
- Inside source: true
*** True Line Result
state.zombie_spawn_countdown ||= random_spawn_countdown state.zombie_min_spawn_rate
** Processing line: ~ state.zombies ||= []~
- Inside source: true
*** True Line Result
state.zombies ||= []
** Processing line: ~ state.killed_zombies ||= []~
- Inside source: true
*** True Line Result
state.killed_zombies ||= []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Declares player as a new entity and sets its properties.~
- Inside source: true
*** True Line Result
# Declares player as a new entity and sets its properties.
** Processing line: ~ # The player begins the game in the center of the screen, not moving in any direction.~
- Inside source: true
*** True Line Result
# The player begins the game in the center of the screen, not moving in any direction.
** Processing line: ~ state.player ||= state.new_entity(:player, { x: 640,~
- Inside source: true
*** True Line Result
state.player ||= state.new_entity(:player, { x: 640,
** Processing line: ~ y: 360,~
- Inside source: true
*** True Line Result
y: 360,
** Processing line: ~ attack_angle: 0,~
- Inside source: true
*** True Line Result
attack_angle: 0,
** Processing line: ~ dx: 0,~
- Inside source: true
*** True Line Result
dx: 0,
** Processing line: ~ dy: 0 })~
- Inside source: true
*** True Line Result
dy: 0 })
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs a gray background.~
- Inside source: true
*** True Line Result
# Outputs a gray background.
** Processing line: ~ # Calls the methods needed to output the player, zombies, etc onto the screen.~
- Inside source: true
*** True Line Result
# Calls the methods needed to output the player, zombies, etc onto the screen.
** Processing line: ~ def render~
- Inside source: true
*** True Line Result
def render
** Processing line: ~ outputs.solids << [grid.rect, 100, 100, 100]~
- Inside source: true
*** True Line Result
outputs.solids << [grid.rect, 100, 100, 100]
** Processing line: ~ render_zombies~
- Inside source: true
*** True Line Result
render_zombies
** Processing line: ~ render_killed_zombies~
- Inside source: true
*** True Line Result
render_killed_zombies
** Processing line: ~ render_player~
- Inside source: true
*** True Line Result
render_player
** Processing line: ~ render_flash~
- Inside source: true
*** True Line Result
render_flash
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs the zombies on the screen and sets values for the sprites, such as the position, width, height, and animation.~
- Inside source: true
*** True Line Result
# Outputs the zombies on the screen and sets values for the sprites, such as the position, width, height, and animation.
** Processing line: ~ def render_zombies~
- Inside source: true
*** True Line Result
def render_zombies
** Processing line: ~ outputs.sprites << state.zombies.map do |z| # performs action on all zombies in the collection~
- Inside source: true
*** True Line Result
outputs.sprites << state.zombies.map do |z| # performs action on all zombies in the collection
** Processing line: ~ z.sprite = [z.x, z.y, 4 * 3, 8 * 3, animation_sprite(z)].sprite # sets definition for sprite, calls animation_sprite method~
- Inside source: true
*** True Line Result
z.sprite = [z.x, z.y, 4 * 3, 8 * 3, animation_sprite(z)].sprite # sets definition for sprite, calls animation_sprite method
** Processing line: ~ z.sprite~
- Inside source: true
*** True Line Result
z.sprite
** 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: ~ # Outputs sprites of killed zombies, and displays a slash image to show that a zombie has been killed.~
- Inside source: true
*** True Line Result
# Outputs sprites of killed zombies, and displays a slash image to show that a zombie has been killed.
** Processing line: ~ def render_killed_zombies~
- Inside source: true
*** True Line Result
def render_killed_zombies
** Processing line: ~ outputs.sprites << state.killed_zombies.map do |z| # performs action on all killed zombies in collection~
- Inside source: true
*** True Line Result
outputs.sprites << state.killed_zombies.map do |z| # performs action on all killed zombies in collection
** Processing line: ~ z.sprite = [z.x,~
- Inside source: true
*** True Line Result
z.sprite = [z.x,
** Processing line: ~ z.y,~
- Inside source: true
*** True Line Result
z.y,
** Processing line: ~ 4 * 3,~
- Inside source: true
*** True Line Result
4 * 3,
** Processing line: ~ 8 * 3,~
- Inside source: true
*** True Line Result
8 * 3,
** Processing line: ~ animation_sprite(z, z.death_at), # calls animation_sprite method~
- Inside source: true
*** True Line Result
animation_sprite(z, z.death_at), # calls animation_sprite method
** Processing line: ~ 0, # angle~
- Inside source: true
*** True Line Result
0, # angle
** Processing line: ~ 255 * z.death_at.ease(30, :flip)].sprite # transparency of a zombie changes when they die~
- Inside source: true
*** True Line Result
255 * z.death_at.ease(30, :flip)].sprite # transparency of a zombie changes when they die
** Processing line: ~ # change the value of 30 and see what happens when a zombie is killed~
- Inside source: true
*** True Line Result
# change the value of 30 and see what happens when a zombie is killed
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets values to output the slash over the zombie's sprite when a zombie is killed.~
- Inside source: true
*** True Line Result
# Sets values to output the slash over the zombie's sprite when a zombie is killed.
** Processing line: ~ # The slash is tilted 45 degrees from the angle of the player's attack.~
- Inside source: true
*** True Line Result
# The slash is tilted 45 degrees from the angle of the player's attack.
** Processing line: ~ # Change the 3 inside scale_rect to 30 and the slash will be HUGE! Scale_rect positions~
- Inside source: true
*** True Line Result
# Change the 3 inside scale_rect to 30 and the slash will be HUGE! Scale_rect positions
** Processing line: ~ # the slash over the killed zombie's sprite.~
- Inside source: true
*** True Line Result
# the slash over the killed zombie's sprite.
** Processing line: ~ [z.sprite, [z.sprite.rect, 'sprites/slash.png', 45 + state.player.attack_angle_on_click, z.sprite.a].scale_rect(3, 0.5, 0.5)]~
- Inside source: true
*** True Line Result
[z.sprite, [z.sprite.rect, 'sprites/slash.png', 45 + state.player.attack_angle_on_click, z.sprite.a].scale_rect(3, 0.5, 0.5)]
** 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: ~ # Outputs the player sprite using the images in the sprites folder.~
- Inside source: true
*** True Line Result
# Outputs the player sprite using the images in the sprites folder.
** Processing line: ~ def render_player~
- Inside source: true
*** True Line Result
def render_player
** Processing line: ~ state.player_sprite = [state.player.x,~
- Inside source: true
*** True Line Result
state.player_sprite = [state.player.x,
** Processing line: ~ state.player.y,~
- Inside source: true
*** True Line Result
state.player.y,
** Processing line: ~ 4 * 3,~
- Inside source: true
*** True Line Result
4 * 3,
** Processing line: ~ 8 * 3, "sprites/player-#{animation_index(state.player.created_at_elapsed)}.png"] # string interpolation~
- Inside source: true
*** True Line Result
8 * 3, "sprites/player-#{animation_index(state.player.created_at_elapsed)}.png"] # string interpolation
** Processing line: ~ outputs.sprites << state.player_sprite~
- Inside source: true
*** True Line Result
outputs.sprites << state.player_sprite
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs a small red square that previews the angles that the player can attack in.~
- Inside source: true
*** True Line Result
# Outputs a small red square that previews the angles that the player can attack in.
** Processing line: ~ # It can be moved in a perfect circle around the player to show possible movements.~
- Inside source: true
*** True Line Result
# It can be moved in a perfect circle around the player to show possible movements.
** Processing line: ~ # Change the 60 in the parenthesis and see what happens to the movement of the red square.~
- Inside source: true
*** True Line Result
# Change the 60 in the parenthesis and see what happens to the movement of the red square.
** Processing line: ~ outputs.solids << [state.player.x + state.player.attack_angle.vector_x(60),~
- Inside source: true
*** True Line Result
outputs.solids << [state.player.x + state.player.attack_angle.vector_x(60),
** Processing line: ~ state.player.y + state.player.attack_angle.vector_y(60),~
- Inside source: true
*** True Line Result
state.player.y + state.player.attack_angle.vector_y(60),
** Processing line: ~ 3, 3, 255, 0, 0]~
- Inside source: true
*** True Line Result
3, 3, 255, 0, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Renders flash as a solid. The screen turns white for 10 frames when a zombie is killed.~
- Inside source: true
*** True Line Result
# Renders flash as a solid. The screen turns white for 10 frames when a zombie is killed.
** Processing line: ~ def render_flash~
- Inside source: true
*** True Line Result
def render_flash
** Processing line: ~ return if state.flash_at.elapsed_time > 10 # return if more than 10 frames have passed since flash.~
- Inside source: true
*** True Line Result
return if state.flash_at.elapsed_time > 10 # return if more than 10 frames have passed since flash.
** Processing line: ~ # Transparency gradually changes (or eases) during the 10 frames of flash.~
- Inside source: true
*** True Line Result
# Transparency gradually changes (or eases) during the 10 frames of flash.
** Processing line: ~ outputs.primitives << [grid.rect, 255, 255, 255, 255 * state.flash_at.ease(10, :flip)].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [grid.rect, 255, 255, 255, 255 * state.flash_at.ease(10, :flip)].solid
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls all methods necessary for performing calculations.~
- Inside source: true
*** True Line Result
# Calls all methods necessary for performing calculations.
** Processing line: ~ def calc~
- Inside source: true
*** True Line Result
def calc
** Processing line: ~ calc_spawn_zombie~
- Inside source: true
*** True Line Result
calc_spawn_zombie
** Processing line: ~ calc_move_zombies~
- Inside source: true
*** True Line Result
calc_move_zombies
** Processing line: ~ calc_player~
- Inside source: true
*** True Line Result
calc_player
** Processing line: ~ calc_kill_zombie~
- Inside source: true
*** True Line Result
calc_kill_zombie
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Decreases the zombie spawn countdown by 1 if it has a value greater than 0.~
- Inside source: true
*** True Line Result
# Decreases the zombie spawn countdown by 1 if it has a value greater than 0.
** Processing line: ~ def calc_spawn_zombie~
- Inside source: true
*** True Line Result
def calc_spawn_zombie
** Processing line: ~ if state.zombie_spawn_countdown > 0~
- Inside source: true
*** True Line Result
if state.zombie_spawn_countdown > 0
** Processing line: ~ state.zombie_spawn_countdown -= 1~
- Inside source: true
*** True Line Result
state.zombie_spawn_countdown -= 1
** 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: ~ # New zombies are created, positioned on the screen, and added to the zombies collection.~
- Inside source: true
*** True Line Result
# New zombies are created, positioned on the screen, and added to the zombies collection.
** Processing line: ~ state.zombies << state.new_entity(:zombie) do |z| # each zombie is declared a new entity~
- Inside source: true
*** True Line Result
state.zombies << state.new_entity(:zombie) do |z| # each zombie is declared a new entity
** Processing line: ~ if rand > 0.5~
- Inside source: true
*** True Line Result
if rand > 0.5
** Processing line: ~ z.x = grid.rect.w.randomize(:ratio) # random x position on screen (within grid scope)~
- Inside source: true
*** True Line Result
z.x = grid.rect.w.randomize(:ratio) # random x position on screen (within grid scope)
** Processing line: ~ z.y = [-10, 730].sample # y position is set to either -10 or 730 (randomly chosen)~
- Inside source: true
*** True Line Result
z.y = [-10, 730].sample # y position is set to either -10 or 730 (randomly chosen)
** Processing line: ~ # the possible values exceed the screen's scope so zombies appear to be coming from far away~
- Inside source: true
*** True Line Result
# the possible values exceed the screen's scope so zombies appear to be coming from far away
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ z.x = [-10, 1290].sample # x position is set to either -10 or 1290 (randomly chosen)~
- Inside source: true
*** True Line Result
z.x = [-10, 1290].sample # x position is set to either -10 or 1290 (randomly chosen)
** Processing line: ~ z.y = grid.rect.w.randomize(:ratio) # random y position on screen~
- Inside source: true
*** True Line Result
z.y = grid.rect.w.randomize(:ratio) # random y position on screen
** 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: ~ # Calls random_spawn_countdown method (determines how fast new zombies appear)~
- Inside source: true
*** True Line Result
# Calls random_spawn_countdown method (determines how fast new zombies appear)
** Processing line: ~ state.zombie_spawn_countdown = random_spawn_countdown state.zombie_min_spawn_rate~
- Inside source: true
*** True Line Result
state.zombie_spawn_countdown = random_spawn_countdown state.zombie_min_spawn_rate
** Processing line: ~ state.zombie_min_spawn_rate -= 1~
- Inside source: true
*** True Line Result
state.zombie_min_spawn_rate -= 1
** Processing line: ~ # set to either the current zombie_min_spawn_rate or 0, depending on which value is greater~
- Inside source: true
*** True Line Result
# set to either the current zombie_min_spawn_rate or 0, depending on which value is greater
** Processing line: ~ state.zombie_min_spawn_rate = state.zombie_min_spawn_rate.greater(0)~
- Inside source: true
*** True Line Result
state.zombie_min_spawn_rate = state.zombie_min_spawn_rate.greater(0)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Moves all zombies towards the center of the screen.~
- Inside source: true
*** True Line Result
# Moves all zombies towards the center of the screen.
** Processing line: ~ # All zombies that reach the center (640, 360) are rejected from the zombies collection and disappear.~
- Inside source: true
*** True Line Result
# All zombies that reach the center (640, 360) are rejected from the zombies collection and disappear.
** Processing line: ~ def calc_move_zombies~
- Inside source: true
*** True Line Result
def calc_move_zombies
** Processing line: ~ state.zombies.each do |z| # for each zombie in the collection~
- Inside source: true
*** True Line Result
state.zombies.each do |z| # for each zombie in the collection
** Processing line: ~ z.y = z.y.towards(360, 0.1) # move the zombie towards the center (640, 360) at a rate of 0.1~
- Inside source: true
*** True Line Result
z.y = z.y.towards(360, 0.1) # move the zombie towards the center (640, 360) at a rate of 0.1
** Processing line: ~ z.x = z.x.towards(640, 0.1) # change 0.1 to 1.1 and see how much faster the zombies move to the center~
- Inside source: true
*** True Line Result
z.x = z.x.towards(640, 0.1) # change 0.1 to 1.1 and see how much faster the zombies move to the center
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ state.zombies = state.zombies.reject { |z| z.y == 360 && z.x == 640 } # remove zombies that are in center~
- Inside source: true
*** True Line Result
state.zombies = state.zombies.reject { |z| z.y == 360 && z.x == 640 } # remove zombies that are in center
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calculates the position and movement of the player on the screen.~
- Inside source: true
*** True Line Result
# Calculates the position and movement of the player on the screen.
** Processing line: ~ def calc_player~
- Inside source: true
*** True Line Result
def calc_player
** Processing line: ~ state.player.x += state.player.dx # changes x based on dx (change in x)~
- Inside source: true
*** True Line Result
state.player.x += state.player.dx # changes x based on dx (change in x)
** Processing line: ~ state.player.y += state.player.dy # changes y based on dy (change in y)~
- Inside source: true
*** True Line Result
state.player.y += state.player.dy # changes y based on dy (change in y)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.player.dx *= 0.9 # scales dx down~
- Inside source: true
*** True Line Result
state.player.dx *= 0.9 # scales dx down
** Processing line: ~ state.player.dy *= 0.9 # scales dy down~
- Inside source: true
*** True Line Result
state.player.dy *= 0.9 # scales dy down
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Compares player's x to 1280 to find lesser value, then compares result to 0 to find greater value.~
- Inside source: true
*** True Line Result
# Compares player's x to 1280 to find lesser value, then compares result to 0 to find greater value.
** Processing line: ~ # This ensures that the player remains within the screen's scope.~
- Inside source: true
*** True Line Result
# This ensures that the player remains within the screen's scope.
** Processing line: ~ state.player.x = state.player.x.lesser(1280).greater(0)~
- Inside source: true
*** True Line Result
state.player.x = state.player.x.lesser(1280).greater(0)
** Processing line: ~ state.player.y = state.player.y.lesser(720).greater(0) # same with player's y~
- Inside source: true
*** True Line Result
state.player.y = state.player.y.lesser(720).greater(0) # same with player's y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Finds all zombies that intersect with the player's sprite. These zombies are removed from the zombies collection~
- Inside source: true
*** True Line Result
# Finds all zombies that intersect with the player's sprite. These zombies are removed from the zombies collection
** Processing line: ~ # and added to the killed_zombies collection since any zombie that intersects with the player is killed.~
- Inside source: true
*** True Line Result
# and added to the killed_zombies collection since any zombie that intersects with the player is killed.
** Processing line: ~ def calc_kill_zombie~
- Inside source: true
*** True Line Result
def calc_kill_zombie
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Find all zombies that intersect with the player. They are considered killed.~
- 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 }~
- Inside source: true
*** True Line Result
killed_this_frame = state.zombies.find_all { |z| 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
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~
- Inside source: true
*** True Line Result
state.killed_zombies += killed_this_frame # add newly killed zombies to killed zombies
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if killed_this_frame.length > 0 # if atleast one zombie was killed in the frame~
- Inside source: true
*** True Line Result
if killed_this_frame.length > 0 # if atleast one zombie was killed in the frame
** Processing line: ~ state.flash_at = state.tick_count # flash_at set to the frame when the zombie was killed~
- Inside source: true
*** True Line Result
state.flash_at = state.tick_count # flash_at set to the frame when the zombie was killed
** Processing line: ~ # Don't forget, the rendered flash lasts for 10 frames after the zombie is killed (look at render_flash method)~
- Inside source: true
*** True Line Result
# Don't forget, the rendered flash lasts for 10 frames after the zombie is killed (look at render_flash method)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the tick_count (passage of time) as the value of the death_at variable for each killed zombie.~
- Inside source: true
*** True Line Result
# Sets the tick_count (passage of time) as the value of the death_at variable for each killed zombie.
** Processing line: ~ # Death_at stores the frame a zombie was killed.~
- Inside source: true
*** True Line Result
# Death_at stores the frame a zombie was killed.
** Processing line: ~ killed_this_frame.each do |z|~
- Inside source: true
*** True Line Result
killed_this_frame.each do |z|
** Processing line: ~ z.death_at = state.tick_count~
- Inside source: true
*** True Line Result
z.death_at = state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Zombies are rejected from the killed_zombies collection depending on when they were killed.~
- Inside source: true
*** True Line Result
# Zombies are rejected from the killed_zombies collection depending on when they were killed.
** Processing line: ~ # They are rejected if more than 30 frames have passed since their death.~
- Inside source: true
*** True Line Result
# They are rejected if more than 30 frames have passed since their death.
** Processing line: ~ state.killed_zombies = state.killed_zombies.reject { |z| state.tick_count - z.death_at > 30 }~
- Inside source: true
*** True Line Result
state.killed_zombies = state.killed_zombies.reject { |z| state.tick_count - z.death_at > 30 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Uses input from the user to move the player around the screen.~
- Inside source: true
*** True Line Result
# Uses input from the user to move the player around the screen.
** Processing line: ~ def input~
- Inside source: true
*** True Line Result
def input
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If the "a" key or left key is pressed, the x position of the player decreases.~
- Inside source: true
*** True Line Result
# If the "a" key or left key is pressed, the x position of the player decreases.
** Processing line: ~ # Otherwise, if the "d" key or right key is pressed, the x position of the player increases.~
- Inside source: true
*** True Line Result
# Otherwise, if the "d" key or right key is pressed, the x position of the player increases.
** Processing line: ~ if inputs.keyboard.key_held.a || inputs.keyboard.key_held.left~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_held.a || inputs.keyboard.key_held.left
** Processing line: ~ state.player.x -= 5~
- Inside source: true
*** True Line Result
state.player.x -= 5
** Processing line: ~ elsif inputs.keyboard.key_held.d || inputs.keyboard.key_held.right~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_held.d || inputs.keyboard.key_held.right
** Processing line: ~ state.player.x += 5~
- Inside source: true
*** True Line Result
state.player.x += 5
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If the "w" or up key is pressed, the y position of the player increases.~
- Inside source: true
*** True Line Result
# If the "w" or up key is pressed, the y position of the player increases.
** Processing line: ~ # Otherwise, if the "s" or down key is pressed, the y position of the player decreases.~
- Inside source: true
*** True Line Result
# Otherwise, if the "s" or down key is pressed, the y position of the player decreases.
** Processing line: ~ if inputs.keyboard.key_held.w || inputs.keyboard.key_held.up~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_held.w || inputs.keyboard.key_held.up
** Processing line: ~ state.player.y += 5~
- Inside source: true
*** True Line Result
state.player.y += 5
** Processing line: ~ elsif inputs.keyboard.key_held.s || inputs.keyboard.key_held.down~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_held.s || inputs.keyboard.key_held.down
** Processing line: ~ state.player.y -= 5~
- Inside source: true
*** True Line Result
state.player.y -= 5
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the attack angle so the player can move and attack in the precise direction it wants to go.~
- Inside source: true
*** True Line Result
# Sets the attack angle so the player can move and attack in the precise direction it wants to go.
** Processing line: ~ # If the mouse is moved, the attack angle is changed (based on the player's position and mouse position).~
- Inside source: true
*** True Line Result
# If the mouse is moved, the attack angle is changed (based on the player's position and mouse position).
** Processing line: ~ # Attack angle also contributes to the position of red square.~
- Inside source: true
*** True Line Result
# Attack angle also contributes to the position of red square.
** Processing line: ~ if inputs.mouse.moved~
- Inside source: true
*** True Line Result
if inputs.mouse.moved
** Processing line: ~ state.player.attack_angle = inputs.mouse.position.angle_from [state.player.x, state.player.y]~
- Inside source: true
*** True Line Result
state.player.attack_angle = inputs.mouse.position.angle_from [state.player.x, state.player.y]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.mouse.click && state.player.dx < 0.5 && state.player.dy < 0.5~
- Inside source: true
*** True Line Result
if inputs.mouse.click && state.player.dx < 0.5 && state.player.dy < 0.5
** Processing line: ~ state.player.attack_angle_on_click = inputs.mouse.position.angle_from [state.player.x, state.player.y]~
- Inside source: true
*** True Line Result
state.player.attack_angle_on_click = inputs.mouse.position.angle_from [state.player.x, state.player.y]
** Processing line: ~ state.player.attack_angle = state.player.attack_angle_on_click # player's attack angle is set~
- Inside source: true
*** True Line Result
state.player.attack_angle = state.player.attack_angle_on_click # player's attack angle is set
** Processing line: ~ state.player.dx = state.player.attack_angle.vector_x(25) # change in player's position~
- Inside source: true
*** True Line Result
state.player.dx = state.player.attack_angle.vector_x(25) # change in player's position
** Processing line: ~ state.player.dy = state.player.attack_angle.vector_y(25)~
- Inside source: true
*** True Line Result
state.player.dy = state.player.attack_angle.vector_y(25)
** 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: ~ # Sets the zombie spawn's countdown to a random number.~
- Inside source: true
*** True Line Result
# Sets the zombie spawn's countdown to a random number.
** Processing line: ~ # How fast zombies appear (change the 60 to 6 and too many zombies will appear at once!)~
- Inside source: true
*** True Line Result
# How fast zombies appear (change the 60 to 6 and too many zombies will appear at once!)
** Processing line: ~ def random_spawn_countdown minimum~
- Inside source: true
*** True Line Result
def random_spawn_countdown minimum
** Processing line: ~ 10.randomize(:ratio, :sign).to_i + 60~
- Inside source: true
*** True Line Result
10.randomize(:ratio, :sign).to_i + 60
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Helps to iterate through the images in the sprites folder by setting the animation index.~
- Inside source: true
*** True Line Result
# Helps to iterate through the images in the sprites folder by setting the animation index.
** Processing line: ~ # 3 frames is how long to show an image, and 6 is how many images to flip through.~
- Inside source: true
*** True Line Result
# 3 frames is how long to show an image, and 6 is how many images to flip through.
** Processing line: ~ def animation_index at~
- Inside source: true
*** True Line Result
def animation_index at
** Processing line: ~ at.idiv(3).mod(6)~
- Inside source: true
*** True Line Result
at.idiv(3).mod(6)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Animates the zombies by using the animation index to go through the images in the sprites folder.~
- Inside source: true
*** True Line Result
# Animates the zombies by using the animation index to go through the images in the sprites folder.
** Processing line: ~ def animation_sprite zombie, at = nil~
- Inside source: true
*** True Line Result
def animation_sprite zombie, at = nil
** Processing line: ~ at ||= zombie.created_at_elapsed # how long it is has been since a zombie was created~
- Inside source: true
*** True Line Result
at ||= zombie.created_at_elapsed # how long it is has been since a zombie was created
** Processing line: ~ index = animation_index at~
- Inside source: true
*** True Line Result
index = animation_index at
** Processing line: ~ "sprites/zombie-#{index}.png" # string interpolation to iterate through images~
- Inside source: true
*** True Line Result
"sprites/zombie-#{index}.png" # string interpolation to iterate through images
** 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: ~ $protect_the_puppies_from_the_zombies = ProtectThePuppiesFromTheZombies.new~
- Inside source: true
*** True Line Result
$protect_the_puppies_from_the_zombies = ProtectThePuppiesFromTheZombies.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: ~ $protect_the_puppies_from_the_zombies.grid = args.grid~
- Inside source: true
*** True Line Result
$protect_the_puppies_from_the_zombies.grid = args.grid
** Processing line: ~ $protect_the_puppies_from_the_zombies.inputs = args.inputs~
- Inside source: true
*** True Line Result
$protect_the_puppies_from_the_zombies.inputs = args.inputs
** Processing line: ~ $protect_the_puppies_from_the_zombies.state = args.state~
- Inside source: true
*** True Line Result
$protect_the_puppies_from_the_zombies.state = args.state
** Processing line: ~ $protect_the_puppies_from_the_zombies.outputs = args.outputs~
- Inside source: true
*** True Line Result
$protect_the_puppies_from_the_zombies.outputs = args.outputs
** Processing line: ~ $protect_the_puppies_from_the_zombies.tick~
- Inside source: true
*** True Line Result
$protect_the_puppies_from_the_zombies.tick
** Processing line: ~ tick_instructions args, "How to get the mouse position and translate it to an x, y position using .vector_x and .vector_y. CLICK to play."~
- Inside source: true
*** True Line Result
tick_instructions args, "How to get the mouse position and translate it to an x, y position using .vector_x and .vector_y. CLICK to play."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Mouse - Mouse Move Paint App - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Mouse - Mouse Move Paint App - 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/05_mouse/03_mouse_move_paint_app/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/05_mouse/03_mouse_move_paint_app/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Floor: Method that returns an integer number smaller than or equal to the original with no decimal.~
- Inside source: true
*** True Line Result
- Floor: Method that returns an integer number smaller than or equal to the original with no decimal.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ For example, if we have a variable, a = 13.7, and we called floor on it, it would look like this...~
- Inside source: true
*** True Line Result
For example, if we have a variable, a = 13.7, and we called floor on it, it would look like this...
** Processing line: ~ puts a.floor()~
- Inside source: true
*** True Line Result
puts a.floor()
** Processing line: ~ which would print out 13.~
- Inside source: true
*** True Line Result
which would print out 13.
** Processing line: ~ (There is also a ceil method, which returns an integer number greater than or equal to the original~
- Inside source: true
*** True Line Result
(There is also a ceil method, which returns an integer number greater than or equal to the original
** Processing line: ~ with no decimal. If we had called ceil on the variable a, the result would have been 14.)~
- Inside source: true
*** True Line Result
with no decimal. If we had called ceil on the variable a, the result would have been 14.)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The value can be found~
- Inside source: true
*** True Line Result
- Hashes: Collection of unique keys and their corresponding values. The value can be found
** Processing line: ~ using their keys.~
- Inside source: true
*** True Line Result
using their keys.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ For example, if we have a "numbers" hash that stores numbers in English as the~
- Inside source: true
*** True Line Result
For example, if we have a "numbers" hash that stores numbers in English as the
** Processing line: ~ key and numbers in Spanish as the value, we'd have a hash that looks like this...~
- Inside source: true
*** True Line Result
key and numbers in Spanish as the value, we'd have a hash that looks like this...
** Processing line: ~ numbers = { "one" => "uno", "two" => "dos", "three" => "tres" }~
- Inside source: true
*** True Line Result
numbers = { "one" => "uno", "two" => "dos", "three" => "tres" }
** Processing line: ~ and on it goes.~
- Inside source: true
*** True Line Result
and on it goes.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Now if we wanted to find the corresponding value of the "one" key, we could say~
- Inside source: true
*** True Line Result
Now if we wanted to find the corresponding value of the "one" key, we could say
** Processing line: ~ puts numbers["one"]~
- Inside source: true
*** True Line Result
puts numbers["one"]
** Processing line: ~ which would print "uno" to the console.~
- Inside source: true
*** True Line Result
which would print "uno" to the console.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
- Inside source: true
*** True Line Result
- args.state.new_entity: Used when we want to create a new object, like a sprite or button.
** Processing line: ~ In this sample app, new_entity is used to create a new button that clears the grid.~
- Inside source: true
*** True Line Result
In this sample app, new_entity is used to create a new button that clears the grid.
** Processing line: ~ (Remember, you can use state to define ANY property and it will be retained across frames.)~
- Inside source: true
*** True Line Result
(Remember, you can use state to define ANY property and it will be retained across frames.)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.mouse.click.point.created_at: The frame the mouse click occurred in.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click.point.created_at: The frame the mouse click occurred in.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. The values in the array generate a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. The values in the array generate a label.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#inside_rect?: Returns true or false depending on if the point is inside the rect.~
- Inside source: true
*** True Line Result
- ARRAY#inside_rect?: Returns true or false depending on if the point is inside the rect.
** 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: ~ # This sample app shows an empty grid that the user can paint on.~
- Inside source: true
*** True Line Result
# This sample app shows an empty grid that the user can paint on.
** Processing line: ~ # To paint, the user must keep their mouse presssed and drag it around the grid.~
- Inside source: true
*** True Line Result
# To paint, the user must keep their mouse presssed and drag it around the grid.
** Processing line: ~ # The "clear" button allows users to clear the grid so they can start over.~
- Inside source: true
*** True Line Result
# The "clear" button allows users to clear the grid so they can start over.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class PaintApp~
- Inside source: true
*** True Line Result
class PaintApp
** Processing line: ~ attr_accessor :inputs, :state, :outputs, :grid, :args~
- Inside source: true
*** True Line Result
attr_accessor :inputs, :state, :outputs, :grid, :args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs methods necessary for the game to function properly.~
- Inside source: true
*** True Line Result
# Runs methods necessary for the game to function properly.
** Processing line: ~ def tick~
- Inside source: true
*** True Line Result
def tick
** Processing line: ~ print_title~
- Inside source: true
*** True Line Result
print_title
** Processing line: ~ add_grid~
- Inside source: true
*** True Line Result
add_grid
** Processing line: ~ check_click~
- Inside source: true
*** True Line Result
check_click
** Processing line: ~ draw_buttons~
- Inside source: true
*** True Line Result
draw_buttons
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Prints the title onto the screen by using a label.~
- Inside source: true
*** True Line Result
# Prints the title onto the screen by using a label.
** Processing line: ~ # Also separates the title from the grid with a line as a horizontal separator.~
- Inside source: true
*** True Line Result
# Also separates the title from the grid with a line as a horizontal separator.
** Processing line: ~ def print_title~
- Inside source: true
*** True Line Result
def print_title
** Processing line: ~ args.outputs.labels << [ 640, 700, 'Paint!', 0, 1 ]~
- Inside source: true
*** True Line Result
args.outputs.labels << [ 640, 700, 'Paint!', 0, 1 ]
** Processing line: ~ outputs.lines << horizontal_separator(660, 0, 1280)~
- Inside source: true
*** True Line Result
outputs.lines << horizontal_separator(660, 0, 1280)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the starting position, ending position, and color for the horizontal separator.~
- Inside source: true
*** True Line Result
# Sets the starting position, ending position, and color for the horizontal separator.
** Processing line: ~ # The starting and ending positions have the same y values.~
- Inside source: true
*** True Line Result
# The starting and ending positions have the same y values.
** Processing line: ~ def horizontal_separator y, x, x2~
- Inside source: true
*** True Line Result
def horizontal_separator y, x, x2
** Processing line: ~ [x, y, x2, y, 150, 150, 150]~
- Inside source: true
*** True Line Result
[x, y, x2, y, 150, 150, 150]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the starting position, ending position, and color for the vertical separator.~
- Inside source: true
*** True Line Result
# Sets the starting position, ending position, and color for the vertical separator.
** Processing line: ~ # The starting and ending positions have the same x values.~
- Inside source: true
*** True Line Result
# The starting and ending positions have the same x values.
** Processing line: ~ def vertical_separator x, y, y2~
- Inside source: true
*** True Line Result
def vertical_separator x, y, y2
** Processing line: ~ [x, y, x, y2, 150, 150, 150]~
- Inside source: true
*** True Line Result
[x, y, x, y2, 150, 150, 150]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs a border and a grid containing empty squares onto the screen.~
- Inside source: true
*** True Line Result
# Outputs a border and a grid containing empty squares onto the screen.
** Processing line: ~ def add_grid~
- Inside source: true
*** True Line Result
def add_grid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the x, y, height, and width of the grid.~
- Inside source: true
*** True Line Result
# Sets the x, y, height, and width of the grid.
** Processing line: ~ # There are 31 horizontal lines and 31 vertical lines in the grid.~
- Inside source: true
*** True Line Result
# There are 31 horizontal lines and 31 vertical lines in the grid.
** Processing line: ~ # Feel free to count them yourself before continuing!~
- Inside source: true
*** True Line Result
# Feel free to count them yourself before continuing!
** Processing line: ~ x, y, h, w = 640 - 500/2, 640 - 500, 500, 500 # calculations done so the grid appears in screen's center~
- Inside source: true
*** True Line Result
x, y, h, w = 640 - 500/2, 640 - 500, 500, 500 # calculations done so the grid appears in screen's center
** Processing line: ~ lines_h = 31~
- Inside source: true
*** True Line Result
lines_h = 31
** Processing line: ~ lines_v = 31~
- Inside source: true
*** True Line Result
lines_v = 31
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets values for the grid's border, grid lines, and filled squares.~
- Inside source: true
*** True Line Result
# Sets values for the grid's border, grid lines, and filled squares.
** Processing line: ~ # The filled_squares variable is initially set to an empty array.~
- Inside source: true
*** True Line Result
# The filled_squares variable is initially set to an empty array.
** Processing line: ~ state.grid_border ||= [ x, y, h, w ] # definition of grid's outer border~
- Inside source: true
*** True Line Result
state.grid_border ||= [ x, y, h, w ] # definition of grid's outer border
** Processing line: ~ state.grid_lines ||= draw_grid(x, y, h, w, lines_h, lines_v) # calls draw_grid method~
- Inside source: true
*** True Line Result
state.grid_lines ||= draw_grid(x, y, h, w, lines_h, lines_v) # calls draw_grid method
** Processing line: ~ state.filled_squares ||= [] # there are no filled squares until the user fills them in~
- Inside source: true
*** True Line Result
state.filled_squares ||= [] # there are no filled squares until the user fills them in
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs the grid lines, border, and filled squares onto the screen.~
- Inside source: true
*** True Line Result
# Outputs the grid lines, border, and filled squares onto the screen.
** Processing line: ~ outputs.lines.concat state.grid_lines~
- Inside source: true
*** True Line Result
outputs.lines.concat state.grid_lines
** Processing line: ~ outputs.borders << state.grid_border~
- Inside source: true
*** True Line Result
outputs.borders << state.grid_border
** Processing line: ~ outputs.solids << state.filled_squares~
- Inside source: true
*** True Line Result
outputs.solids << state.filled_squares
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Draws the grid by adding in vertical and horizontal separators.~
- Inside source: true
*** True Line Result
# Draws the grid by adding in vertical and horizontal separators.
** Processing line: ~ def draw_grid x, y, h, w, lines_h, lines_v~
- Inside source: true
*** True Line Result
def draw_grid x, y, h, w, lines_h, lines_v
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The grid starts off empty.~
- Inside source: true
*** True Line Result
# The grid starts off empty.
** Processing line: ~ grid = []~
- Inside source: true
*** True Line Result
grid = []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calculates the placement and adds horizontal lines or separators into the grid.~
- Inside source: true
*** True Line Result
# Calculates the placement and adds horizontal lines or separators into the grid.
** Processing line: ~ curr_y = y # start at the bottom of the box~
- Inside source: true
*** True Line Result
curr_y = y # start at the bottom of the box
** Processing line: ~ dist_y = h / (lines_h + 1) # finds distance to place horizontal lines evenly throughout 500 height of grid~
- Inside source: true
*** True Line Result
dist_y = h / (lines_h + 1) # finds distance to place horizontal lines evenly throughout 500 height of grid
** Processing line: ~ lines_h.times do~
- Inside source: true
*** True Line Result
lines_h.times do
** Processing line: ~ curr_y += dist_y # increment curr_y by the distance between the horizontal lines~
- Inside source: true
*** True Line Result
curr_y += dist_y # increment curr_y by the distance between the horizontal lines
** Processing line: ~ grid << horizontal_separator(curr_y, x, x + w - 1) # add a separator into the grid~
- Inside source: true
*** True Line Result
grid << horizontal_separator(curr_y, x, x + w - 1) # add a separator into the grid
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calculates the placement and adds vertical lines or separators into the grid.~
- Inside source: true
*** True Line Result
# Calculates the placement and adds vertical lines or separators into the grid.
** Processing line: ~ curr_x = x # now start at the left of the box~
- Inside source: true
*** True Line Result
curr_x = x # now start at the left of the box
** Processing line: ~ dist_x = w / (lines_v + 1) # finds distance to place vertical lines evenly throughout 500 width of grid~
- Inside source: true
*** True Line Result
dist_x = w / (lines_v + 1) # finds distance to place vertical lines evenly throughout 500 width of grid
** Processing line: ~ lines_v.times do~
- Inside source: true
*** True Line Result
lines_v.times do
** Processing line: ~ curr_x += dist_x # increment curr_x by the distance between the vertical lines~
- Inside source: true
*** True Line Result
curr_x += dist_x # increment curr_x by the distance between the vertical lines
** Processing line: ~ grid << vertical_separator(curr_x, y + 1, y + h) # add separator~
- Inside source: true
*** True Line Result
grid << vertical_separator(curr_x, y + 1, y + h) # add separator
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # paint_grid uses a hash to assign values to keys.~
- Inside source: true
*** True Line Result
# paint_grid uses a hash to assign values to keys.
** Processing line: ~ state.paint_grid ||= {"x" => x, "y" => y, "h" => h, "w" => w, "lines_h" => lines_h,~
- Inside source: true
*** True Line Result
state.paint_grid ||= {"x" => x, "y" => y, "h" => h, "w" => w, "lines_h" => lines_h,
** Processing line: ~ "lines_v" => lines_v, "dist_x" => dist_x,~
- Inside source: true
*** True Line Result
"lines_v" => lines_v, "dist_x" => dist_x,
** Processing line: ~ "dist_y" => dist_y }~
- Inside source: true
*** True Line Result
"dist_y" => dist_y }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return grid~
- Inside source: true
*** True Line Result
return grid
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Checks if the user is keeping the mouse pressed down and sets the mouse_hold variable accordingly using boolean values.~
- Inside source: true
*** True Line Result
# Checks if the user is keeping the mouse pressed down and sets the mouse_hold variable accordingly using boolean values.
** Processing line: ~ # If the mouse is up, the user cannot drag the mouse.~
- Inside source: true
*** True Line Result
# If the mouse is up, the user cannot drag the mouse.
** Processing line: ~ def check_click~
- Inside source: true
*** True Line Result
def check_click
** Processing line: ~ if inputs.mouse.down #is mouse up or down?~
- Inside source: true
*** True Line Result
if inputs.mouse.down #is mouse up or down?
** Processing line: ~ state.mouse_held = true # mouse is being held down~
- Inside source: true
*** True Line Result
state.mouse_held = true # mouse is being held down
** Processing line: ~ elsif inputs.mouse.up # if mouse is up~
- Inside source: true
*** True Line Result
elsif inputs.mouse.up # if mouse is up
** Processing line: ~ state.mouse_held = false # mouse is not being held down or dragged~
- Inside source: true
*** True Line Result
state.mouse_held = false # mouse is not being held down or dragged
** Processing line: ~ state.mouse_dragging = false~
- Inside source: true
*** True Line Result
state.mouse_dragging = false
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.mouse_held && # mouse needs to be down~
- Inside source: true
*** True Line Result
if state.mouse_held && # mouse needs to be down
** Processing line: ~ !inputs.mouse.click && # must not be first click~
- Inside source: true
*** True Line Result
!inputs.mouse.click && # must not be first click
** Processing line: ~ ((inputs.mouse.previous_click.point.x - inputs.mouse.position.x).abs > 15) # Need to move 15 pixels before "drag"~
- Inside source: true
*** True Line Result
((inputs.mouse.previous_click.point.x - inputs.mouse.position.x).abs > 15) # Need to move 15 pixels before "drag"
** Processing line: ~ state.mouse_dragging = true~
- Inside source: true
*** True Line Result
state.mouse_dragging = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If the user clicks their mouse inside the grid, the search_lines method is called with a click input type.~
- Inside source: true
*** True Line Result
# If the user clicks their mouse inside the grid, the search_lines method is called with a click input type.
** Processing line: ~ if ((inputs.mouse.click) && (inputs.mouse.click.point.inside_rect? state.grid_border))~
- Inside source: true
*** True Line Result
if ((inputs.mouse.click) && (inputs.mouse.click.point.inside_rect? state.grid_border))
** Processing line: ~ search_lines(inputs.mouse.click.point, :click)~
- Inside source: true
*** True Line Result
search_lines(inputs.mouse.click.point, :click)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If the user drags their mouse inside the grid, the search_lines method is called with a drag input type.~
- Inside source: true
*** True Line Result
# If the user drags their mouse inside the grid, the search_lines method is called with a drag input type.
** Processing line: ~ elsif ((state.mouse_dragging) && (inputs.mouse.position.inside_rect? state.grid_border))~
- Inside source: true
*** True Line Result
elsif ((state.mouse_dragging) && (inputs.mouse.position.inside_rect? state.grid_border))
** Processing line: ~ search_lines(inputs.mouse.position, :drag)~
- Inside source: true
*** True Line Result
search_lines(inputs.mouse.position, :drag)
** 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: ~ # Sets the definition of a grid box and handles user input to fill in or clear grid boxes.~
- Inside source: true
*** True Line Result
# Sets the definition of a grid box and handles user input to fill in or clear grid boxes.
** Processing line: ~ def search_lines (point, input_type)~
- Inside source: true
*** True Line Result
def search_lines (point, input_type)
** Processing line: ~ point.x -= state.paint_grid["x"] # subtracts the value assigned to the "x" key in the paint_grid hash~
- Inside source: true
*** True Line Result
point.x -= state.paint_grid["x"] # subtracts the value assigned to the "x" key in the paint_grid hash
** Processing line: ~ point.y -= state.paint_grid["y"] # subtracts the value assigned to the "y" key in the paint_grid hash~
- Inside source: true
*** True Line Result
point.y -= state.paint_grid["y"] # subtracts the value assigned to the "y" key in the paint_grid hash
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Remove code following the .floor and see what happens when you try to fill in grid squares~
- Inside source: true
*** True Line Result
# Remove code following the .floor and see what happens when you try to fill in grid squares
** Processing line: ~ point.x = (point.x / state.paint_grid["dist_x"]).floor * state.paint_grid["dist_x"]~
- Inside source: true
*** True Line Result
point.x = (point.x / state.paint_grid["dist_x"]).floor * state.paint_grid["dist_x"]
** Processing line: ~ point.y = (point.y / state.paint_grid["dist_y"]).floor * state.paint_grid["dist_y"]~
- Inside source: true
*** True Line Result
point.y = (point.y / state.paint_grid["dist_y"]).floor * state.paint_grid["dist_y"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ point.x += state.paint_grid["x"]~
- Inside source: true
*** True Line Result
point.x += state.paint_grid["x"]
** Processing line: ~ point.y += state.paint_grid["y"]~
- Inside source: true
*** True Line Result
point.y += state.paint_grid["y"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets definition of a grid box, meaning its x, y, width, and height.~
- Inside source: true
*** True Line Result
# Sets definition of a grid box, meaning its x, y, width, and height.
** Processing line: ~ # Floor is called on the point.x and point.y variables.~
- Inside source: true
*** True Line Result
# Floor is called on the point.x and point.y variables.
** Processing line: ~ # Ceil method is called on values of the distance hash keys, setting the width and height of a box.~
- Inside source: true
*** True Line Result
# Ceil method is called on values of the distance hash keys, setting the width and height of a box.
** Processing line: ~ grid_box = [ point.x.floor, point.y.floor, state.paint_grid["dist_x"].ceil, state.paint_grid["dist_y"].ceil ]~
- Inside source: true
*** True Line Result
grid_box = [ point.x.floor, point.y.floor, state.paint_grid["dist_x"].ceil, state.paint_grid["dist_y"].ceil ]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if input_type == :click # if user clicks their mouse~
- Inside source: true
*** True Line Result
if input_type == :click # if user clicks their mouse
** Processing line: ~ if state.filled_squares.include? grid_box # if grid box is already filled in~
- Inside source: true
*** True Line Result
if state.filled_squares.include? grid_box # if grid box is already filled in
** Processing line: ~ state.filled_squares.delete grid_box # box is cleared and removed from filled_squares~
- Inside source: true
*** True Line Result
state.filled_squares.delete grid_box # box is cleared and removed from filled_squares
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.filled_squares << grid_box # otherwise, box is filled in and added to filled_squares~
- Inside source: true
*** True Line Result
state.filled_squares << grid_box # otherwise, box is filled in and added to filled_squares
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ elsif input_type == :drag # if user drags mouse~
- Inside source: true
*** True Line Result
elsif input_type == :drag # if user drags mouse
** Processing line: ~ unless state.filled_squares.include? grid_box # unless the grid box dragged over is already filled in~
- Inside source: true
*** True Line Result
unless state.filled_squares.include? grid_box # unless the grid box dragged over is already filled in
** Processing line: ~ state.filled_squares << grid_box # the box is filled in and added to filled_squares~
- Inside source: true
*** True Line Result
state.filled_squares << grid_box # the box is filled in and added to filled_squares
** 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: ~ # Creates and outputs a "Clear" button on the screen using a label and a border.~
- Inside source: true
*** True Line Result
# Creates and outputs a "Clear" button on the screen using a label and a border.
** Processing line: ~ # If the button is clicked, the filled squares are cleared, making the filled_squares collection empty.~
- Inside source: true
*** True Line Result
# If the button is clicked, the filled squares are cleared, making the filled_squares collection empty.
** Processing line: ~ def draw_buttons~
- Inside source: true
*** True Line Result
def draw_buttons
** Processing line: ~ x, y, w, h = 390, 50, 240, 50~
- Inside source: true
*** True Line Result
x, y, w, h = 390, 50, 240, 50
** Processing line: ~ state.clear_button ||= state.new_entity(:button_with_fade)~
- Inside source: true
*** True Line Result
state.clear_button ||= state.new_entity(:button_with_fade)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The x and y positions are set to display the label in the center of the button.~
- Inside source: true
*** True Line Result
# The x and y positions are set to display the label in the center of the button.
** Processing line: ~ # Try changing the first two parameters to simply x, y and see what happens to the text placement!~
- Inside source: true
*** True Line Result
# Try changing the first two parameters to simply x, y and see what happens to the text placement!
** Processing line: ~ state.clear_button.label ||= [x + w.half, y + h.half + 10, "Clear", 0, 1] # placed in center of border~
- Inside source: true
*** True Line Result
state.clear_button.label ||= [x + w.half, y + h.half + 10, "Clear", 0, 1] # placed in center of border
** Processing line: ~ state.clear_button.border ||= [x, y, w, h]~
- Inside source: true
*** True Line Result
state.clear_button.border ||= [x, y, w, h]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If the mouse is clicked inside the borders of the clear button,~
- Inside source: true
*** True Line Result
# If the mouse is clicked inside the borders of the clear button,
** Processing line: ~ # the filled_squares collection is emptied and the squares are cleared.~
- Inside source: true
*** True Line Result
# the filled_squares collection is emptied and the squares are cleared.
** Processing line: ~ if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.clear_button.border)~
- Inside source: true
*** True Line Result
if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.clear_button.border)
** Processing line: ~ state.clear_button.clicked_at = inputs.mouse.click.created_at # time (frame) the click occurred~
- Inside source: true
*** True Line Result
state.clear_button.clicked_at = inputs.mouse.click.created_at # time (frame) the click occurred
** Processing line: ~ state.filled_squares.clear~
- Inside source: true
*** True Line Result
state.filled_squares.clear
** Processing line: ~ inputs.mouse.previous_click = nil~
- Inside source: true
*** True Line Result
inputs.mouse.previous_click = nil
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << state.clear_button.label~
- Inside source: true
*** True Line Result
outputs.labels << state.clear_button.label
** Processing line: ~ outputs.borders << state.clear_button.border~
- Inside source: true
*** True Line Result
outputs.borders << state.clear_button.border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # When the clear button is clicked, the color of the button changes~
- Inside source: true
*** True Line Result
# When the clear button is clicked, the color of the button changes
** Processing line: ~ # and the transparency changes, as well. If you change the time from~
- Inside source: true
*** True Line Result
# and the transparency changes, as well. If you change the time from
** Processing line: ~ # 0.25.seconds to 1.25.seconds or more, the change will last longer.~
- Inside source: true
*** True Line Result
# 0.25.seconds to 1.25.seconds or more, the change will last longer.
** Processing line: ~ if state.clear_button.clicked_at~
- Inside source: true
*** True Line Result
if state.clear_button.clicked_at
** Processing line: ~ outputs.solids << [x, y, w, h, 0, 180, 80, 255 * state.clear_button.clicked_at.ease(0.25.seconds, :flip)]~
- Inside source: true
*** True Line Result
outputs.solids << [x, y, w, h, 0, 180, 80, 255 * state.clear_button.clicked_at.ease(0.25.seconds, :flip)]
** 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: ~ $paint_app = PaintApp.new~
- Inside source: true
*** True Line Result
$paint_app = PaintApp.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: ~ $paint_app.inputs = args.inputs~
- Inside source: true
*** True Line Result
$paint_app.inputs = args.inputs
** Processing line: ~ $paint_app.state = args.state~
- Inside source: true
*** True Line Result
$paint_app.state = args.state
** Processing line: ~ $paint_app.grid = args.grid~
- Inside source: true
*** True Line Result
$paint_app.grid = args.grid
** Processing line: ~ $paint_app.args = args~
- Inside source: true
*** True Line Result
$paint_app.args = args
** Processing line: ~ $paint_app.outputs = args.outputs~
- Inside source: true
*** True Line Result
$paint_app.outputs = args.outputs
** Processing line: ~ $paint_app.tick~
- Inside source: true
*** True Line Result
$paint_app.tick
** Processing line: ~ tick_instructions args, "How to create a simple paint app. CLICK and HOLD to draw."~
- Inside source: true
*** True Line Result
tick_instructions args, "How to create a simple paint app. CLICK and HOLD to draw."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Mouse - Coordinate Systems - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Mouse - Coordinate Systems - 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/05_mouse/04_coordinate_systems/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/05_mouse/04_coordinate_systems/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.mouse.click.position: Coordinates of the mouse's position on the screen.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click.position: Coordinates of the mouse's position on the screen.
** Processing line: ~ Unlike args.inputs.mouse.click.point, the mouse does not need to be pressed down for~
- Inside source: true
*** True Line Result
Unlike args.inputs.mouse.click.point, the mouse does not need to be pressed down for
** Processing line: ~ position to know the mouse's coordinates.~
- Inside source: true
*** True Line Result
position to know the mouse's coordinates.
** Processing line: ~ For more information about the mouse, go to mygame/documentation/07-mouse.md.~
- Inside source: true
*** True Line Result
For more information about the mouse, go to mygame/documentation/07-mouse.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.mouse.click: This property will be set if the mouse was clicked.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click: This property will be set if the mouse was clicked.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
- Inside source: true
*** True Line Result
- String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
- Inside source: true
*** True Line Result
as Ruby code, and the placeholder is replaced with its corresponding value or result.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ In this sample app, string interpolation is used to show the current position of the mouse~
- Inside source: true
*** True Line Result
In this sample app, string interpolation is used to show the current position of the mouse
** Processing line: ~ in a label.~
- Inside source: true
*** True Line Result
in a label.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array that generates a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array that generates a label.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.solids: An array that generates a solid.~
- Inside source: true
*** True Line Result
- args.outputs.solids: An array that generates a solid.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE, ALPHA]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE, ALPHA]
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
- Inside source: true
*** True Line Result
For more information about solids, go to mygame/documentation/03-solids-and-borders.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.lines: An array that generates a line.~
- Inside source: true
*** True Line Result
- args.outputs.lines: An array that generates a line.
** Processing line: ~ The parameters are [X, Y, X2, Y2, RED, GREEN, BLUE, ALPHA]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, X2, Y2, RED, GREEN, BLUE, ALPHA]
** Processing line: ~ For more information about lines, go to mygame/documentation/04-lines.md.~
- Inside source: true
*** True Line Result
For more information about lines, go to mygame/documentation/04-lines.md.
** 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: ~ # This sample app shows a coordinate system or grid. The user can move their mouse around the screen and the~
- Inside source: true
*** True Line Result
# This sample app shows a coordinate system or grid. The user can move their mouse around the screen and the
** Processing line: ~ # coordinates of their position on the screen will be displayed. Users can choose to view one quadrant or~
- Inside source: true
*** True Line Result
# coordinates of their position on the screen will be displayed. Users can choose to view one quadrant or
** Processing line: ~ # four quadrants by pressing the button.~
- Inside source: true
*** True Line Result
# four quadrants by pressing the button.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The addition and subtraction in the first two parameters of the label and solid~
- Inside source: true
*** True Line Result
# The addition and subtraction in the first two parameters of the label and solid
** Processing line: ~ # ensure that the outputs don't overlap each other. Try removing them and see what happens.~
- Inside source: true
*** True Line Result
# ensure that the outputs don't overlap each other. Try removing them and see what happens.
** Processing line: ~ pos = args.inputs.mouse.position # stores coordinates of mouse's position~
- Inside source: true
*** True Line Result
pos = args.inputs.mouse.position # stores coordinates of mouse's position
** Processing line: ~ args.outputs.labels << [pos.x + 10, pos.y + 10, "#{pos}"] # outputs label of coordinates~
- Inside source: true
*** True Line Result
args.outputs.labels << [pos.x + 10, pos.y + 10, "#{pos}"] # outputs label of coordinates
** Processing line: ~ args.outputs.solids << [pos.x - 2, pos.y - 2, 5, 5] # outputs small blackk box placed where mouse is hovering~
- Inside source: true
*** True Line Result
args.outputs.solids << [pos.x - 2, pos.y - 2, 5, 5] # outputs small blackk box placed where mouse is hovering
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ button = [0, 0, 370, 50] # sets definition of toggle button~
- Inside source: true
*** True Line Result
button = [0, 0, 370, 50] # sets definition of toggle button
** Processing line: ~ args.outputs.borders << button # outputs button as border (not filled in)~
- Inside source: true
*** True Line Result
args.outputs.borders << button # outputs button as border (not filled in)
** Processing line: ~ args.outputs.labels << [10, 35, "click here toggle coordinate system"] # label of button~
- Inside source: true
*** True Line Result
args.outputs.labels << [10, 35, "click here toggle coordinate system"] # label of button
** Processing line: ~ args.outputs.lines << [ 0, -720, 0, 720] # vertical line dividing quadrants~
- Inside source: true
*** True Line Result
args.outputs.lines << [ 0, -720, 0, 720] # vertical line dividing quadrants
** Processing line: ~ args.outputs.lines << [-1280, 0, 1280, 0] # horizontal line dividing quadrants~
- Inside source: true
*** True Line Result
args.outputs.lines << [-1280, 0, 1280, 0] # horizontal line dividing quadrants
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.mouse.click # if the user clicks the mouse~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click # if the user clicks the mouse
** Processing line: ~ pos = args.inputs.mouse.click.point # pos's value is point where user clicked (coordinates)~
- Inside source: true
*** True Line Result
pos = args.inputs.mouse.click.point # pos's value is point where user clicked (coordinates)
** Processing line: ~ if pos.inside_rect? button # if the click occurred inside the button~
- Inside source: true
*** True Line Result
if pos.inside_rect? button # if the click occurred inside the button
** Processing line: ~ if args.grid.name == :bottom_left # if the grid shows bottom left as origin~
- Inside source: true
*** True Line Result
if args.grid.name == :bottom_left # if the grid shows bottom left as origin
** Processing line: ~ args.grid.origin_center! # origin will be shown in center~
- Inside source: true
*** True Line Result
args.grid.origin_center! # origin will be shown in center
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.grid.origin_bottom_left! # otherwise, the view will change to show bottom left as origin~
- Inside source: true
*** True Line Result
args.grid.origin_bottom_left! # otherwise, the view will change to show bottom left as origin
** 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: ~ tick_instructions args, "Sample app shows the two supported coordinate systems in Game Toolkit."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows the two supported coordinate systems in Game Toolkit."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Save Load - Save Load Game - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Save Load - Save Load Game - 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/06_save_load/01_save_load_game/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/06_save_load/01_save_load_game/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Symbol (:): Ruby object with a name and an internal ID. Symbols are useful~
- Inside source: true
*** True Line Result
- Symbol (:): Ruby object with a name and an internal ID. Symbols are useful
** Processing line: ~ because with a given symbol name, you can refer to the same object throughout~
- Inside source: true
*** True Line Result
because with a given symbol name, you can refer to the same object throughout
** Processing line: ~ a Ruby program.~
- Inside source: true
*** True Line Result
a Ruby program.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ In this sample app, we're using symbols for our buttons. We have buttons that~
- Inside source: true
*** True Line Result
In this sample app, we're using symbols for our buttons. We have buttons that
** Processing line: ~ light fires, save, load, etc. Each of these buttons has a distinct symbol like~
- Inside source: true
*** True Line Result
light fires, save, load, etc. Each of these buttons has a distinct symbol like
** Processing line: ~ :light_fire, :save_game, :load_game, etc.~
- Inside source: true
*** True Line Result
:light_fire, :save_game, :load_game, etc.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - to_sym: Returns the symbol corresponding to the given string; creates the symbol~
- Inside source: true
*** True Line Result
- to_sym: Returns the symbol corresponding to the given string; creates the symbol
** Processing line: ~ if it does not already exist.~
- Inside source: true
*** True Line Result
if it does not already exist.
** Processing line: ~ For example,~
- Inside source: true
*** True Line Result
For example,
** Processing line: ~ 'car'.to_sym~
- Inside source: true
*** True Line Result
'car'.to_sym
** Processing line: ~ would return the symbol :car.~
- Inside source: true
*** True Line Result
would return the symbol :car.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - last: Returns the last element of an array.~
- Inside source: true
*** True Line Result
- last: Returns the last element of an array.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - num1.lesser(num2): finds the lower value of the given options.~
- Inside source: true
*** True Line Result
- num1.lesser(num2): finds the lower value of the given options.
** Processing line: ~ For example, in the statement~
- Inside source: true
*** True Line Result
For example, in the statement
** Processing line: ~ a = 4.lesser(3)~
- Inside source: true
*** True Line Result
a = 4.lesser(3)
** Processing line: ~ 3 has a lower value than 4, which means that the value of a would be set to 3,~
- Inside source: true
*** True Line Result
3 has a lower value than 4, which means that the value of a would be set to 3,
** Processing line: ~ but if the statement had been~
- Inside source: true
*** True Line Result
but if the statement had been
** Processing line: ~ a = 4.lesser(5)~
- Inside source: true
*** True Line Result
a = 4.lesser(5)
** Processing line: ~ 4 has a lower value than 5, which means that the value of a would be set to 4.~
- Inside source: true
*** True Line Result
4 has a lower value than 5, which means that the value of a would be set to 4.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - num1.fdiv(num2): returns the float division (will have a decimal) of the two given numbers.~
- Inside source: true
*** True Line Result
- num1.fdiv(num2): returns the float division (will have a decimal) of the two given numbers.
** Processing line: ~ For example, 5.fdiv(2) = 2.5 and 5.fdiv(5) = 1.0~
- Inside source: true
*** True Line Result
For example, 5.fdiv(2) = 2.5 and 5.fdiv(5) = 1.0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - String interpolation: uses #{} syntax; everything between the #{ and the } is evaluated~
- Inside source: true
*** True Line Result
- String interpolation: uses #{} syntax; everything between the #{ and the } is evaluated
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
- Inside source: true
*** True Line Result
as Ruby code, and the placeholder is replaced with its corresponding value or result.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. Values generate a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. Values generate a label.
** Processing line: ~ Parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
Parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#inside_rect?: An array with at least two values is considered a point. An array~
- Inside source: true
*** True Line Result
- ARRAY#inside_rect?: An array with at least two values is considered a point. An array
** Processing line: ~ with at least four values is considered a rect. The inside_rect? function returns true~
- Inside source: true
*** True Line Result
with at least four values is considered a rect. The inside_rect? function returns true
** Processing line: ~ or false depending on if the point is inside the rect.~
- Inside source: true
*** True Line Result
or false depending on if the point is inside the rect.
** 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: ~ # This code allows users to perform different tasks, such as saving and loading the game.~
- Inside source: true
*** True Line Result
# This code allows users to perform different tasks, such as saving and loading the game.
** Processing line: ~ # Users also have options to reset the game and light a fire.~
- Inside source: true
*** True Line Result
# Users also have options to reset the game and light a fire.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class TextedBasedGame~
- Inside source: true
*** True Line Result
class TextedBasedGame
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Contains methods needed for game to run properly.~
- Inside source: true
*** True Line Result
# Contains methods needed for game to run properly.
** Processing line: ~ # Increments tick count by 1 each time it runs (60 times in a single second)~
- Inside source: true
*** True Line Result
# Increments tick count by 1 each time it runs (60 times in a single second)
** Processing line: ~ def tick~
- Inside source: true
*** True Line Result
def tick
** Processing line: ~ default~
- Inside source: true
*** True Line Result
default
** Processing line: ~ show_intro~
- Inside source: true
*** True Line Result
show_intro
** Processing line: ~ state.engine_tick_count += 1~
- Inside source: true
*** True Line Result
state.engine_tick_count += 1
** Processing line: ~ tick_fire~
- Inside source: true
*** True Line Result
tick_fire
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets default values.~
- Inside source: true
*** True Line Result
# Sets default values.
** Processing line: ~ # The ||= ensures that a variable's value is only set to the value following the = sign~
- Inside source: true
*** True Line Result
# The ||= ensures that a variable's value is only set to the value following the = sign
** Processing line: ~ # if the value has not already been set before. Intialization happens only in the first frame.~
- Inside source: true
*** True Line Result
# if the value has not already been set before. Intialization happens only in the first frame.
** Processing line: ~ def default~
- Inside source: true
*** True Line Result
def default
** Processing line: ~ state.engine_tick_count ||= 0~
- Inside source: true
*** True Line Result
state.engine_tick_count ||= 0
** Processing line: ~ state.active_module ||= :room~
- Inside source: true
*** True Line Result
state.active_module ||= :room
** Processing line: ~ state.fire_progress ||= 0~
- Inside source: true
*** True Line Result
state.fire_progress ||= 0
** Processing line: ~ state.fire_ready_in ||= 10~
- Inside source: true
*** True Line Result
state.fire_ready_in ||= 10
** Processing line: ~ state.previous_fire ||= :dead~
- Inside source: true
*** True Line Result
state.previous_fire ||= :dead
** Processing line: ~ state.fire ||= :dead~
- Inside source: true
*** True Line Result
state.fire ||= :dead
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def show_intro~
- Inside source: true
*** True Line Result
def show_intro
** Processing line: ~ return unless state.engine_tick_count == 0 # return unless the game just started~
- Inside source: true
*** True Line Result
return unless state.engine_tick_count == 0 # return unless the game just started
** Processing line: ~ set_story_line "awake." # calls set_story_line method, sets to "awake"~
- Inside source: true
*** True Line Result
set_story_line "awake." # calls set_story_line method, sets to "awake"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets story line.~
- Inside source: true
*** True Line Result
# Sets story line.
** Processing line: ~ def set_story_line story_line~
- Inside source: true
*** True Line Result
def set_story_line story_line
** Processing line: ~ state.story_line = story_line # story line set to value of parameter~
- Inside source: true
*** True Line Result
state.story_line = story_line # story line set to value of parameter
** Processing line: ~ state.active_module = :alert # active module set to alert~
- Inside source: true
*** True Line Result
state.active_module = :alert # active module set to alert
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Clears story line.~
- Inside source: true
*** True Line Result
# Clears story line.
** Processing line: ~ def clear_storyline~
- Inside source: true
*** True Line Result
def clear_storyline
** Processing line: ~ state.active_module = :none # active module set to none~
- Inside source: true
*** True Line Result
state.active_module = :none # active module set to none
** Processing line: ~ state.story_line = nil # story line is cleared, set to nil (or empty)~
- Inside source: true
*** True Line Result
state.story_line = nil # story line is cleared, set to nil (or empty)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Determines fire progress (how close the fire is to being ready to light).~
- Inside source: true
*** True Line Result
# Determines fire progress (how close the fire is to being ready to light).
** Processing line: ~ def tick_fire~
- Inside source: true
*** True Line Result
def tick_fire
** Processing line: ~ return if state.active_module == :alert # return if active module is alert~
- Inside source: true
*** True Line Result
return if state.active_module == :alert # return if active module is alert
** Processing line: ~ state.fire_progress += 1 # increment fire progress~
- Inside source: true
*** True Line Result
state.fire_progress += 1 # increment fire progress
** Processing line: ~ # fire_ready_in is 10. The fire_progress is either the current value or 10, whichever has a lower value.~
- Inside source: true
*** True Line Result
# fire_ready_in is 10. The fire_progress is either the current value or 10, whichever has a lower value.
** Processing line: ~ state.fire_progress = state.fire_progress.lesser(state.fire_ready_in)~
- Inside source: true
*** True Line Result
state.fire_progress = state.fire_progress.lesser(state.fire_ready_in)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the value of fire (whether it is dead or roaring), and the story line~
- Inside source: true
*** True Line Result
# Sets the value of fire (whether it is dead or roaring), and the story line
** Processing line: ~ def light_fire~
- Inside source: true
*** True Line Result
def light_fire
** Processing line: ~ return unless fire_ready? # returns unless the fire is ready to be lit~
- Inside source: true
*** True Line Result
return unless fire_ready? # returns unless the fire is ready to be lit
** Processing line: ~ state.fire = :roaring # fire is lit, set to roaring~
- Inside source: true
*** True Line Result
state.fire = :roaring # fire is lit, set to roaring
** Processing line: ~ state.fire_progress = 0 # the fire progress returns to 0, since the fire has been lit~
- Inside source: true
*** True Line Result
state.fire_progress = 0 # the fire progress returns to 0, since the fire has been lit
** Processing line: ~ if state.fire != state.previous_fire~
- Inside source: true
*** True Line Result
if state.fire != state.previous_fire
** Processing line: ~ set_story_line "the fire is #{state.fire}." # the story line is set using string interpolation~
- Inside source: true
*** True Line Result
set_story_line "the fire is #{state.fire}." # the story line is set using string interpolation
** Processing line: ~ state.previous_fire = state.fire~
- Inside source: true
*** True Line Result
state.previous_fire = state.fire
** 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: ~ # Checks if the fire is ready to be lit. Returns a boolean value.~
- Inside source: true
*** True Line Result
# Checks if the fire is ready to be lit. Returns a boolean value.
** Processing line: ~ def fire_ready?~
- Inside source: true
*** True Line Result
def fire_ready?
** Processing line: ~ # If fire_progress (value between 0 and 10) is equal to fire_ready_in (value of 10),~
- Inside source: true
*** True Line Result
# If fire_progress (value between 0 and 10) is equal to fire_ready_in (value of 10),
** Processing line: ~ # the fire is ready to be lit.~
- Inside source: true
*** True Line Result
# the fire is ready to be lit.
** Processing line: ~ state.fire_progress == state.fire_ready_in~
- Inside source: true
*** True Line Result
state.fire_progress == state.fire_ready_in
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Divides the value of the fire_progress variable by 10 to determine how close the user is to~
- Inside source: true
*** True Line Result
# Divides the value of the fire_progress variable by 10 to determine how close the user is to
** Processing line: ~ # being able to light a fire.~
- Inside source: true
*** True Line Result
# being able to light a fire.
** Processing line: ~ def light_fire_progress~
- Inside source: true
*** True Line Result
def light_fire_progress
** Processing line: ~ state.fire_progress.fdiv(10) # float division~
- Inside source: true
*** True Line Result
state.fire_progress.fdiv(10) # float division
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Defines fire as the state.fire variable.~
- Inside source: true
*** True Line Result
# Defines fire as the state.fire variable.
** Processing line: ~ def fire~
- Inside source: true
*** True Line Result
def fire
** Processing line: ~ state.fire~
- Inside source: true
*** True Line Result
state.fire
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the title of the room.~
- Inside source: true
*** True Line Result
# Sets the title of the room.
** Processing line: ~ def room_title~
- Inside source: true
*** True Line Result
def room_title
** Processing line: ~ return "a room that is dark" if state.fire == :dead # room is dark if the fire is dead~
- Inside source: true
*** True Line Result
return "a room that is dark" if state.fire == :dead # room is dark if the fire is dead
** Processing line: ~ return "a room that is lit" # room is lit if the fire is not dead~
- Inside source: true
*** True Line Result
return "a room that is lit" # room is lit if the fire is not dead
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the active_module to room.~
- Inside source: true
*** True Line Result
# Sets the active_module to room.
** Processing line: ~ def go_to_room~
- Inside source: true
*** True Line Result
def go_to_room
** Processing line: ~ state.active_module = :room~
- Inside source: true
*** True Line Result
state.active_module = :room
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Defines active_module as the state.active_module variable.~
- Inside source: true
*** True Line Result
# Defines active_module as the state.active_module variable.
** Processing line: ~ def active_module~
- Inside source: true
*** True Line Result
def active_module
** Processing line: ~ state.active_module~
- Inside source: true
*** True Line Result
state.active_module
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Defines story_line as the state.story_line variable.~
- Inside source: true
*** True Line Result
# Defines story_line as the state.story_line variable.
** Processing line: ~ def story_line~
- Inside source: true
*** True Line Result
def story_line
** Processing line: ~ state.story_line~
- Inside source: true
*** True Line Result
state.story_line
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Update every 60 frames (or every second)~
- Inside source: true
*** True Line Result
# Update every 60 frames (or every second)
** Processing line: ~ def should_tick?~
- Inside source: true
*** True Line Result
def should_tick?
** Processing line: ~ state.tick_count.mod_zero?(60)~
- Inside source: true
*** True Line Result
state.tick_count.mod_zero?(60)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the value of the game state provider.~
- Inside source: true
*** True Line Result
# Sets the value of the game state provider.
** Processing line: ~ def initialize game_state_provider~
- Inside source: true
*** True Line Result
def initialize game_state_provider
** Processing line: ~ @game_state_provider = game_state_provider~
- Inside source: true
*** True Line Result
@game_state_provider = game_state_provider
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Defines the game state.~
- Inside source: true
*** True Line Result
# Defines the game state.
** Processing line: ~ # Any variable prefixed with an @ symbol is an instance variable.~
- Inside source: true
*** True Line Result
# Any variable prefixed with an @ symbol is an instance variable.
** Processing line: ~ def state~
- Inside source: true
*** True Line Result
def state
** Processing line: ~ @game_state_provider.state~
- Inside source: true
*** True Line Result
@game_state_provider.state
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Saves the state of the game in a text file called game_state.txt.~
- Inside source: true
*** True Line Result
# Saves the state of the game in a text file called game_state.txt.
** Processing line: ~ def save~
- Inside source: true
*** True Line Result
def save
** Processing line: ~ $gtk.serialize_state('game_state.txt', state)~
- Inside source: true
*** True Line Result
$gtk.serialize_state('game_state.txt', state)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Loads the game state from the game_state.txt text file.~
- Inside source: true
*** True Line Result
# Loads the game state from the game_state.txt text file.
** Processing line: ~ # If the load is unsuccessful, the user is informed since the story line indicates the failure.~
- Inside source: true
*** True Line Result
# If the load is unsuccessful, the user is informed since the story line indicates the failure.
** Processing line: ~ def load~
- Inside source: true
*** True Line Result
def load
** Processing line: ~ parsed_state = $gtk.deserialize_state('game_state.txt')~
- Inside source: true
*** True Line Result
parsed_state = $gtk.deserialize_state('game_state.txt')
** Processing line: ~ if !parsed_state~
- Inside source: true
*** True Line Result
if !parsed_state
** Processing line: ~ set_story_line "no game to load. press save first."~
- Inside source: true
*** True Line Result
set_story_line "no game to load. press save first."
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ $gtk.args.state = parsed_state~
- Inside source: true
*** True Line Result
$gtk.args.state = parsed_state
** 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: ~ # Resets the game.~
- Inside source: true
*** True Line Result
# Resets the game.
** Processing line: ~ def reset~
- Inside source: true
*** True Line Result
def reset
** Processing line: ~ $gtk.reset~
- Inside source: true
*** True Line Result
$gtk.reset
** 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: ~ class TextedBasedGamePresenter~
- Inside source: true
*** True Line Result
class TextedBasedGamePresenter
** Processing line: ~ attr_accessor :state, :outputs, :inputs~
- Inside source: true
*** True Line Result
attr_accessor :state, :outputs, :inputs
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates empty collection called highlights.~
- Inside source: true
*** True Line Result
# Creates empty collection called highlights.
** Processing line: ~ # Calls methods necessary to run the game.~
- Inside source: true
*** True Line Result
# Calls methods necessary to run the game.
** Processing line: ~ def tick~
- Inside source: true
*** True Line Result
def tick
** Processing line: ~ state.layout.highlights ||= []~
- Inside source: true
*** True Line Result
state.layout.highlights ||= []
** Processing line: ~ game.tick if game.should_tick?~
- Inside source: true
*** True Line Result
game.tick if game.should_tick?
** Processing line: ~ render~
- Inside source: true
*** True Line Result
render
** Processing line: ~ process_input~
- Inside source: true
*** True Line Result
process_input
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs a label of the tick count (passage of time) and calls all render methods.~
- Inside source: true
*** True Line Result
# Outputs a label of the tick count (passage of time) and calls all render methods.
** Processing line: ~ def render~
- Inside source: true
*** True Line Result
def render
** Processing line: ~ outputs.labels << [10, 30, state.tick_count]~
- Inside source: true
*** True Line Result
outputs.labels << [10, 30, state.tick_count]
** Processing line: ~ render_alert~
- Inside source: true
*** True Line Result
render_alert
** Processing line: ~ render_room~
- Inside source: true
*** True Line Result
render_room
** Processing line: ~ render_highlights~
- Inside source: true
*** True Line Result
render_highlights
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs a label onto the screen that shows the story line, and also outputs a "close" button.~
- Inside source: true
*** True Line Result
# Outputs a label onto the screen that shows the story line, and also outputs a "close" button.
** Processing line: ~ def render_alert~
- Inside source: true
*** True Line Result
def render_alert
** Processing line: ~ return unless game.active_module == :alert~
- Inside source: true
*** True Line Result
return unless game.active_module == :alert
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << [640, 480, game.story_line, 5, 1] # outputs story line label~
- Inside source: true
*** True Line Result
outputs.labels << [640, 480, game.story_line, 5, 1] # outputs story line label
** Processing line: ~ outputs.primitives << button(:alert_dismiss, 490, 380, "close") # positions "close" button under story line~
- Inside source: true
*** True Line Result
outputs.primitives << button(:alert_dismiss, 490, 380, "close") # positions "close" button under story line
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_room~
- Inside source: true
*** True Line Result
def render_room
** Processing line: ~ return unless game.active_module == :room~
- Inside source: true
*** True Line Result
return unless game.active_module == :room
** Processing line: ~ outputs.labels << [640, 700, game.room_title, 4, 1] # outputs room title label at top of screen~
- Inside source: true
*** True Line Result
outputs.labels << [640, 700, game.room_title, 4, 1] # outputs room title label at top of screen
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The parameters for these outputs are (symbol, x, y, text, value/percentage) and each has a y value~
- Inside source: true
*** True Line Result
# The parameters for these outputs are (symbol, x, y, text, value/percentage) and each has a y value
** Processing line: ~ # that positions it 60 pixels lower than the previous output.~
- Inside source: true
*** True Line Result
# that positions it 60 pixels lower than the previous output.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # outputs the light_fire_progress bar, uses light_fire_progress for its percentage (which changes bar's appearance)~
- Inside source: true
*** True Line Result
# outputs the light_fire_progress bar, uses light_fire_progress for its percentage (which changes bar's appearance)
** Processing line: ~ outputs.primitives << progress_bar(:light_fire, 490, 600, "light fire", game.light_fire_progress)~
- Inside source: true
*** True Line Result
outputs.primitives << progress_bar(:light_fire, 490, 600, "light fire", game.light_fire_progress)
** Processing line: ~ outputs.primitives << button( :save_game, 490, 540, "save") # outputs save button~
- Inside source: true
*** True Line Result
outputs.primitives << button( :save_game, 490, 540, "save") # outputs save button
** Processing line: ~ outputs.primitives << button( :load_game, 490, 480, "load") # outputs load button~
- Inside source: true
*** True Line Result
outputs.primitives << button( :load_game, 490, 480, "load") # outputs load button
** Processing line: ~ outputs.primitives << button( :reset_game, 490, 420, "reset") # outputs reset button~
- Inside source: true
*** True Line Result
outputs.primitives << button( :reset_game, 490, 420, "reset") # outputs reset button
** Processing line: ~ outputs.labels << [640, 30, "the fire is #{game.fire}", 0, 1] # outputs fire label at bottom of screen~
- Inside source: true
*** True Line Result
outputs.labels << [640, 30, "the fire is #{game.fire}", 0, 1] # outputs fire label at bottom of screen
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs a collection of highlights using an array to set their values, and also rejects certain values from the collection.~
- Inside source: true
*** True Line Result
# Outputs a collection of highlights using an array to set their values, and also rejects certain values from the collection.
** Processing line: ~ def render_highlights~
- Inside source: true
*** True Line Result
def render_highlights
** Processing line: ~ state.layout.highlights.each do |h| # for each highlight in the collection~
- Inside source: true
*** True Line Result
state.layout.highlights.each do |h| # for each highlight in the collection
** Processing line: ~ h.lifetime -= 1 # decrease the value of its lifetime~
- Inside source: true
*** True Line Result
h.lifetime -= 1 # decrease the value of its lifetime
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.solids << state.layout.highlights.map do |h| # outputs highlights collection~
- Inside source: true
*** True Line Result
outputs.solids << state.layout.highlights.map do |h| # outputs highlights collection
** Processing line: ~ [h.x, h.y, h.w, h.h, h.color, 255 * h.lifetime / h.max_lifetime] # sets definition for each highlight~
- Inside source: true
*** True Line Result
[h.x, h.y, h.w, h.h, h.color, 255 * h.lifetime / h.max_lifetime] # sets definition for each highlight
** Processing line: ~ # transparency changes; divide lifetime by max_lifetime, multiply result by 255~
- Inside source: true
*** True Line Result
# transparency changes; divide lifetime by max_lifetime, multiply result by 255
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # reject highlights from collection that have no remaining lifetime~
- Inside source: true
*** True Line Result
# reject highlights from collection that have no remaining lifetime
** Processing line: ~ state.layout.highlights = state.layout.highlights.reject { |h| h.lifetime <= 0 }~
- Inside source: true
*** True Line Result
state.layout.highlights = state.layout.highlights.reject { |h| h.lifetime <= 0 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Checks whether or not a button was clicked.~
- Inside source: true
*** True Line Result
# Checks whether or not a button was clicked.
** Processing line: ~ # Returns a boolean value.~
- Inside source: true
*** True Line Result
# Returns a boolean value.
** Processing line: ~ def process_input~
- Inside source: true
*** True Line Result
def process_input
** Processing line: ~ button = button_clicked? # calls button_clicked? method~
- Inside source: true
*** True Line Result
button = button_clicked? # calls button_clicked? method
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns a boolean value.~
- Inside source: true
*** True Line Result
# Returns a boolean value.
** Processing line: ~ # Finds the button that was clicked from the button list and determines what method to call.~
- Inside source: true
*** True Line Result
# Finds the button that was clicked from the button list and determines what method to call.
** Processing line: ~ # Adds a highlight to the highlights collection.~
- Inside source: true
*** True Line Result
# Adds a highlight to the highlights collection.
** Processing line: ~ def button_clicked?~
- Inside source: true
*** True Line Result
def button_clicked?
** Processing line: ~ return nil unless click_pos # return nil unless click_pos holds coordinates of mouse click~
- Inside source: true
*** True Line Result
return nil unless click_pos # return nil unless click_pos holds coordinates of mouse click
** Processing line: ~ button = @button_list.find do |k, v| # goes through button_list to find button clicked~
- Inside source: true
*** True Line Result
button = @button_list.find do |k, v| # goes through button_list to find button clicked
** Processing line: ~ click_pos.inside_rect? v[:primitives].last.rect # was the mouse clicked inside the rect of button?~
- Inside source: true
*** True Line Result
click_pos.inside_rect? v[:primitives].last.rect # was the mouse clicked inside the rect of button?
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ return unless button # return unless a button was clicked~
- Inside source: true
*** True Line Result
return unless button # return unless a button was clicked
** Processing line: ~ method_to_call = "#{button[0]}_clicked".to_sym # sets method_to_call to symbol (like :save_game or :load_game)~
- Inside source: true
*** True Line Result
method_to_call = "#{button[0]}_clicked".to_sym # sets method_to_call to symbol (like :save_game or :load_game)
** Processing line: ~ if self.respond_to? method_to_call # returns true if self responds to the given method (method actually exists)~
- Inside source: true
*** True Line Result
if self.respond_to? method_to_call # returns true if self responds to the given method (method actually exists)
** Processing line: ~ border = button[1][:primitives].last # sets border definition using value of last key in button list hash~
- Inside source: true
*** True Line Result
border = button[1][:primitives].last # sets border definition using value of last key in button list hash
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # declares each highlight as a new entity, sets properties~
- Inside source: true
*** True Line Result
# declares each highlight as a new entity, sets properties
** Processing line: ~ state.layout.highlights << state.new_entity(:highlight) do |h|~
- Inside source: true
*** True Line Result
state.layout.highlights << state.new_entity(:highlight) do |h|
** Processing line: ~ h.x = border.x~
- Inside source: true
*** True Line Result
h.x = border.x
** Processing line: ~ h.y = border.y~
- Inside source: true
*** True Line Result
h.y = border.y
** Processing line: ~ h.w = border.w~
- Inside source: true
*** True Line Result
h.w = border.w
** Processing line: ~ h.h = border.h~
- Inside source: true
*** True Line Result
h.h = border.h
** Processing line: ~ h.max_lifetime = 10~
- Inside source: true
*** True Line Result
h.max_lifetime = 10
** Processing line: ~ h.lifetime = h.max_lifetime~
- Inside source: true
*** True Line Result
h.lifetime = h.max_lifetime
** Processing line: ~ h.color = [120, 120, 180] # sets color to shade of purple~
- Inside source: true
*** True Line Result
h.color = [120, 120, 180] # sets color to shade of purple
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ self.send method_to_call # invoke method identified by symbol~
- Inside source: true
*** True Line Result
self.send method_to_call # invoke method identified by symbol
** Processing line: ~ else # otherwise, if self doesn't respond to given method~
- Inside source: true
*** True Line Result
else # otherwise, if self doesn't respond to given method
** Processing line: ~ border = button[1][:primitives].last # sets border definition using value of last key in hash~
- Inside source: true
*** True Line Result
border = button[1][:primitives].last # sets border definition using value of last key in hash
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # declares each highlight as a new entity, sets properties~
- Inside source: true
*** True Line Result
# declares each highlight as a new entity, sets properties
** Processing line: ~ state.layout.highlights << state.new_entity(:highlight) do |h|~
- Inside source: true
*** True Line Result
state.layout.highlights << state.new_entity(:highlight) do |h|
** Processing line: ~ h.x = border.x~
- Inside source: true
*** True Line Result
h.x = border.x
** Processing line: ~ h.y = border.y~
- Inside source: true
*** True Line Result
h.y = border.y
** Processing line: ~ h.w = border.w~
- Inside source: true
*** True Line Result
h.w = border.w
** Processing line: ~ h.h = border.h~
- Inside source: true
*** True Line Result
h.h = border.h
** Processing line: ~ h.max_lifetime = 4 # different max_lifetime than the one set if respond_to? had been true~
- Inside source: true
*** True Line Result
h.max_lifetime = 4 # different max_lifetime than the one set if respond_to? had been true
** Processing line: ~ h.lifetime = h.max_lifetime~
- Inside source: true
*** True Line Result
h.lifetime = h.max_lifetime
** Processing line: ~ h.color = [120, 80, 80] # sets color to dark color~
- Inside source: true
*** True Line Result
h.color = [120, 80, 80] # sets color to dark color
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # instructions for users on how to add the missing method_to_call to the code~
- Inside source: true
*** True Line Result
# instructions for users on how to add the missing method_to_call to the code
** Processing line: ~ puts "It looks like #{method_to_call} doesn't exists on TextedBasedGamePresenter. Please add this method:"~
- Inside source: true
*** True Line Result
puts "It looks like #{method_to_call} doesn't exists on TextedBasedGamePresenter. Please add this method:"
** Processing line: ~ puts "Just copy the code below and put it in the #{TextedBasedGamePresenter} class definition."~
- Inside source: true
*** True Line Result
puts "Just copy the code below and put it in the #{TextedBasedGamePresenter} class definition."
** Processing line: ~ puts ""~
- Inside source: true
*** True Line Result
puts ""
** Processing line: ~ puts "```"~
- Inside source: true
*** True Line Result
puts "```"
** Processing line: ~ puts "class TextedBasedGamePresenter <--- find this class and put the method below in it"~
- Inside source: true
*** True Line Result
puts "class TextedBasedGamePresenter <--- find this class and put the method below in it"
** Processing line: ~ puts ""~
- Inside source: true
*** True Line Result
puts ""
** Processing line: ~ puts " def #{method_to_call}"~
- Inside source: true
*** True Line Result
puts " def #{method_to_call}"
** Processing line: ~ puts " puts 'Yay that worked!'"~
- Inside source: true
*** True Line Result
puts " puts 'Yay that worked!'"
** Processing line: ~ puts " end"~
- Inside source: true
*** True Line Result
puts " end"
** Processing line: ~ puts ""~
- Inside source: true
*** True Line Result
puts ""
** Processing line: ~ puts "end <-- make sure to put the #{method_to_call} method in between the `class` word and the final `end` statement."~
- Inside source: true
*** True Line Result
puts "end <-- make sure to put the #{method_to_call} method in between the `class` word and the final `end` statement."
** Processing line: ~ puts "```"~
- Inside source: true
*** True Line Result
puts "```"
** Processing line: ~ puts ""~
- Inside source: true
*** True Line Result
puts ""
** 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: ~ # Returns the position of the mouse when it is clicked.~
- Inside source: true
*** True Line Result
# Returns the position of the mouse when it is clicked.
** Processing line: ~ def click_pos~
- Inside source: true
*** True Line Result
def click_pos
** Processing line: ~ return nil unless inputs.mouse.click # returns nil unless the mouse was clicked~
- Inside source: true
*** True Line Result
return nil unless inputs.mouse.click # returns nil unless the mouse was clicked
** Processing line: ~ return inputs.mouse.click.point # returns location of mouse click (coordinates)~
- Inside source: true
*** True Line Result
return inputs.mouse.click.point # returns location of mouse click (coordinates)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates buttons for the button_list and sets their values using a hash (uses symbols as keys)~
- Inside source: true
*** True Line Result
# Creates buttons for the button_list and sets their values using a hash (uses symbols as keys)
** Processing line: ~ def button id, x, y, text~
- Inside source: true
*** True Line Result
def button id, x, y, text
** Processing line: ~ @button_list[id] ||= { # assigns values to hash keys~
- Inside source: true
*** True Line Result
@button_list[id] ||= { # assigns values to hash keys
** Processing line: ~ id: id,~
- Inside source: true
*** True Line Result
id: id,
** Processing line: ~ text: text,~
- Inside source: true
*** True Line Result
text: text,
** Processing line: ~ primitives: [~
- Inside source: true
*** True Line Result
primitives: [
** Processing line: ~ [x + 10, y + 30, text, 2, 0].label, # positions label inside border~
- Inside source: true
*** True Line Result
[x + 10, y + 30, text, 2, 0].label, # positions label inside border
** Processing line: ~ [x, y, 300, 50].border, # sets definition of border~
- Inside source: true
*** True Line Result
[x, y, 300, 50].border, # sets definition of border
** 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: ~ @button_list[id][:primitives] # returns label and border for buttons~
- Inside source: true
*** True Line Result
@button_list[id][:primitives] # returns label and border for buttons
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates a progress bar (used for lighting the fire) and sets its values.~
- Inside source: true
*** True Line Result
# Creates a progress bar (used for lighting the fire) and sets its values.
** Processing line: ~ def progress_bar id, x, y, text, percentage~
- Inside source: true
*** True Line Result
def progress_bar id, x, y, text, percentage
** Processing line: ~ @button_list[id] = { # assigns values to hash keys~
- Inside source: true
*** True Line Result
@button_list[id] = { # assigns values to hash keys
** Processing line: ~ id: id,~
- Inside source: true
*** True Line Result
id: id,
** Processing line: ~ text: text,~
- Inside source: true
*** True Line Result
text: text,
** Processing line: ~ primitives: [~
- Inside source: true
*** True Line Result
primitives: [
** Processing line: ~ [x, y, 300, 50, 100, 100, 100].solid, # sets definition for solid (which fills the bar with gray)~
- Inside source: true
*** True Line Result
[x, y, 300, 50, 100, 100, 100].solid, # sets definition for solid (which fills the bar with gray)
** Processing line: ~ [x + 10, y + 30, text, 2, 0].label, # sets definition for label, positions inside border~
- Inside source: true
*** True Line Result
[x + 10, y + 30, text, 2, 0].label, # sets definition for label, positions inside border
** Processing line: ~ [x, y, 300, 50].border, # sets definition of border~
- Inside source: true
*** True Line Result
[x, y, 300, 50].border, # sets definition of border
** 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: ~ # Fills progress bar based on percentage. If the fire was ready to be lit (100%) and we multiplied by~
- Inside source: true
*** True Line Result
# Fills progress bar based on percentage. If the fire was ready to be lit (100%) and we multiplied by
** Processing line: ~ # 100, only 1/3 of the bar would only be filled in. 200 would cause only 2/3 to be filled in.~
- Inside source: true
*** True Line Result
# 100, only 1/3 of the bar would only be filled in. 200 would cause only 2/3 to be filled in.
** Processing line: ~ @button_list[id][:primitives][0][2] = 300 * percentage~
- Inside source: true
*** True Line Result
@button_list[id][:primitives][0][2] = 300 * percentage
** Processing line: ~ @button_list[id][:primitives]~
- Inside source: true
*** True Line Result
@button_list[id][:primitives]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Defines the game.~
- Inside source: true
*** True Line Result
# Defines the game.
** Processing line: ~ def game~
- Inside source: true
*** True Line Result
def game
** Processing line: ~ @game~
- Inside source: true
*** True Line Result
@game
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Initalizes the game and creates an empty list of buttons.~
- Inside source: true
*** True Line Result
# Initalizes the game and creates an empty list of buttons.
** Processing line: ~ def initialize~
- Inside source: true
*** True Line Result
def initialize
** Processing line: ~ @game = TextedBasedGame.new self~
- Inside source: true
*** True Line Result
@game = TextedBasedGame.new self
** Processing line: ~ @button_list ||= {}~
- Inside source: true
*** True Line Result
@button_list ||= {}
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Clears the storyline and takes the user to the room.~
- Inside source: true
*** True Line Result
# Clears the storyline and takes the user to the room.
** Processing line: ~ def alert_dismiss_clicked~
- Inside source: true
*** True Line Result
def alert_dismiss_clicked
** Processing line: ~ game.clear_storyline~
- Inside source: true
*** True Line Result
game.clear_storyline
** Processing line: ~ game.go_to_room~
- Inside source: true
*** True Line Result
game.go_to_room
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Lights the fire when the user clicks the "light fire" option.~
- Inside source: true
*** True Line Result
# Lights the fire when the user clicks the "light fire" option.
** Processing line: ~ def light_fire_clicked~
- Inside source: true
*** True Line Result
def light_fire_clicked
** Processing line: ~ game.light_fire~
- Inside source: true
*** True Line Result
game.light_fire
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Saves the game when the user clicks the "save" option.~
- Inside source: true
*** True Line Result
# Saves the game when the user clicks the "save" option.
** Processing line: ~ def save_game_clicked~
- Inside source: true
*** True Line Result
def save_game_clicked
** Processing line: ~ game.save~
- Inside source: true
*** True Line Result
game.save
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Resets the game when the user clicks the "reset" option.~
- Inside source: true
*** True Line Result
# Resets the game when the user clicks the "reset" option.
** Processing line: ~ def reset_game_clicked~
- Inside source: true
*** True Line Result
def reset_game_clicked
** Processing line: ~ game.reset~
- Inside source: true
*** True Line Result
game.reset
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Loads the game when the user clicks the "load" option.~
- Inside source: true
*** True Line Result
# Loads the game when the user clicks the "load" option.
** Processing line: ~ def load_game_clicked~
- Inside source: true
*** True Line Result
def load_game_clicked
** Processing line: ~ game.load~
- Inside source: true
*** True Line Result
game.load
** 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: ~ $text_based_rpg = TextedBasedGamePresenter.new~
- Inside source: true
*** True Line Result
$text_based_rpg = TextedBasedGamePresenter.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: ~ $text_based_rpg.state = args.state~
- Inside source: true
*** True Line Result
$text_based_rpg.state = args.state
** Processing line: ~ $text_based_rpg.outputs = args.outputs~
- Inside source: true
*** True Line Result
$text_based_rpg.outputs = args.outputs
** Processing line: ~ $text_based_rpg.inputs = args.inputs~
- Inside source: true
*** True Line Result
$text_based_rpg.inputs = args.inputs
** Processing line: ~ $text_based_rpg.tick~
- Inside source: true
*** True Line Result
$text_based_rpg.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: ~* Advanced Rendering - Simple Render Targets - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Rendering - Simple Render Targets - 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/01_simple_render_targets/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/07_advanced_rendering/01_simple_render_targets/app/main.rb
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # args.outputs.render_targets are really really powerful.~
- Inside source: true
*** True Line Result
# args.outputs.render_targets are really really powerful.
** Processing line: ~ # They essentially allow you to create a sprite programmatically and cache the result.~
- Inside source: true
*** True Line Result
# They essentially allow you to create a sprite programmatically and cache the result.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Create a render_target of a :block and a :gradient on tick zero.~
- Inside source: true
*** True Line Result
# Create a render_target of a :block and a :gradient on tick zero.
** Processing line: ~ if args.state.tick_count == 0~
- Inside source: true
*** True Line Result
if args.state.tick_count == 0
** Processing line: ~ args.render_target(:block).solids << [0, 0, 1280, 100]~
- Inside source: true
*** True Line Result
args.render_target(:block).solids << [0, 0, 1280, 100]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The gradient is actually just a collection of black solids with increasing~
- Inside source: true
*** True Line Result
# The gradient is actually just a collection of black solids with increasing
** Processing line: ~ # opacities.~
- Inside source: true
*** True Line Result
# opacities.
** Processing line: ~ args.render_target(:gradient).solids << 90.map_with_index do |x|~
- Inside source: true
*** True Line Result
args.render_target(:gradient).solids << 90.map_with_index do |x|
** Processing line: ~ 50.map_with_index do |y|~
- Inside source: true
*** True Line Result
50.map_with_index do |y|
** Processing line: ~ [x * 15, y * 15, 15, 15, 0, 0, 0, (x * 3).fdiv(255) * 255]~
- Inside source: true
*** True Line Result
[x * 15, y * 15, 15, 15, 0, 0, 0, (x * 3).fdiv(255) * 255]
** 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: ~ # Take the :block render_target and present it horizontally centered.~
- Inside source: true
*** True Line Result
# Take the :block render_target and present it horizontally centered.
** Processing line: ~ # Use a subsection of the render_targetd specified by source_x,~
- Inside source: true
*** True Line Result
# Use a subsection of the render_targetd specified by source_x,
** Processing line: ~ # source_y, source_w, source_h.~
- Inside source: true
*** True Line Result
# source_y, source_w, source_h.
** Processing line: ~ args.outputs.sprites << { x: 0,~
- Inside source: true
*** True Line Result
args.outputs.sprites << { x: 0,
** Processing line: ~ y: 310,~
- Inside source: true
*** True Line Result
y: 310,
** Processing line: ~ w: 1280,~
- Inside source: true
*** True Line Result
w: 1280,
** Processing line: ~ h: 100,~
- Inside source: true
*** True Line Result
h: 100,
** Processing line: ~ path: :block,~
- Inside source: true
*** True Line Result
path: :block,
** Processing line: ~ source_x: 0,~
- Inside source: true
*** True Line Result
source_x: 0,
** Processing line: ~ source_y: 0,~
- Inside source: true
*** True Line Result
source_y: 0,
** Processing line: ~ source_w: 1280,~
- Inside source: true
*** True Line Result
source_w: 1280,
** Processing line: ~ source_h: 100 }~
- Inside source: true
*** True Line Result
source_h: 100 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # After rendering :block, render gradient on top of :block.~
- Inside source: true
*** True Line Result
# After rendering :block, render gradient on top of :block.
** Processing line: ~ args.outputs.sprites << [0, 0, 1280, 720, :gradient]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [0, 0, 1280, 720, :gradient]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << [1270, 710, args.gtk.current_framerate, 0, 2, 255, 255, 255]~
- Inside source: true
*** True Line Result
args.outputs.labels << [1270, 710, args.gtk.current_framerate, 0, 2, 255, 255, 255]
** Processing line: ~ tick_instructions args, "Sample app shows how to use render_targets (programmatically create cached sprites)."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows how to use render_targets (programmatically create cached sprites)."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Advanced Rendering - Render Targets With Alphas - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Rendering - Render Targets With Alphas - 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/02_render_targets_with_alphas/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/07_advanced_rendering/02_render_targets_with_alphas/app/main.rb
** Processing line: ~ # This sample is meant to show you how to do that dripping transition thing~
- Inside source: true
*** True Line Result
# This sample is meant to show you how to do that dripping transition thing
** Processing line: ~ # at the start of the original Doom. Most of this file is here to animate~
- Inside source: true
*** True Line Result
# at the start of the original Doom. Most of this file is here to animate
** Processing line: ~ # a scene to wipe away; the actual wipe effect is in the last 20 lines or~
- Inside source: true
*** True Line Result
# a scene to wipe away; the actual wipe effect is in the last 20 lines or
** Processing line: ~ # so.~
- Inside source: true
*** True Line Result
# so.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.reset # reset all game state if reloaded.~
- Inside source: true
*** True Line Result
$gtk.reset # reset all game state if reloaded.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def circle_of_blocks pass, xoffset, yoffset, angleoffset, blocksize, distance~
- Inside source: true
*** True Line Result
def circle_of_blocks pass, xoffset, yoffset, angleoffset, blocksize, distance
** Processing line: ~ numblocks = 10~
- Inside source: true
*** True Line Result
numblocks = 10
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ for i in 1..numblocks do~
- Inside source: true
*** True Line Result
for i in 1..numblocks do
** Processing line: ~ angle = ((360 / numblocks) * i) + angleoffset~
- Inside source: true
*** True Line Result
angle = ((360 / numblocks) * i) + angleoffset
** Processing line: ~ radians = angle * (Math::PI / 180)~
- Inside source: true
*** True Line Result
radians = angle * (Math::PI / 180)
** Processing line: ~ x = (xoffset + (distance * Math.cos(radians))).round~
- Inside source: true
*** True Line Result
x = (xoffset + (distance * Math.cos(radians))).round
** Processing line: ~ y = (yoffset + (distance * Math.sin(radians))).round~
- Inside source: true
*** True Line Result
y = (yoffset + (distance * Math.sin(radians))).round
** Processing line: ~ pass.solids << [ x, y, blocksize, blocksize, 255, 255, 0 ]~
- Inside source: true
*** True Line Result
pass.solids << [ x, y, blocksize, blocksize, 255, 255, 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 draw_scene args, pass~
- Inside source: true
*** True Line Result
def draw_scene args, pass
** Processing line: ~ pass.solids << [0, 360, 1280, 360, 0, 0, 200]~
- Inside source: true
*** True Line Result
pass.solids << [0, 360, 1280, 360, 0, 0, 200]
** Processing line: ~ pass.solids << [0, 0, 1280, 360, 0, 127, 0]~
- Inside source: true
*** True Line Result
pass.solids << [0, 0, 1280, 360, 0, 127, 0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ blocksize = 100~
- Inside source: true
*** True Line Result
blocksize = 100
** Processing line: ~ angleoffset = args.state.tick_count * 2.5~
- Inside source: true
*** True Line Result
angleoffset = args.state.tick_count * 2.5
** Processing line: ~ centerx = (1280 - blocksize) / 2~
- Inside source: true
*** True Line Result
centerx = (1280 - blocksize) / 2
** Processing line: ~ centery = (720 - blocksize) / 2~
- Inside source: true
*** True Line Result
centery = (720 - blocksize) / 2
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ circle_of_blocks pass, centerx, centery, angleoffset, blocksize * 2, 500~
- Inside source: true
*** True Line Result
circle_of_blocks pass, centerx, centery, angleoffset, blocksize * 2, 500
** Processing line: ~ circle_of_blocks pass, centerx, centery, angleoffset, blocksize, 325~
- Inside source: true
*** True Line Result
circle_of_blocks pass, centerx, centery, angleoffset, blocksize, 325
** Processing line: ~ circle_of_blocks pass, centerx, centery, angleoffset, blocksize / 2, 200~
- Inside source: true
*** True Line Result
circle_of_blocks pass, centerx, centery, angleoffset, blocksize / 2, 200
** Processing line: ~ circle_of_blocks pass, centerx, centery, angleoffset, blocksize / 4, 100~
- Inside source: true
*** True Line Result
circle_of_blocks pass, centerx, centery, angleoffset, blocksize / 4, 100
** 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: ~ segments = 160~
- Inside source: true
*** True Line Result
segments = 160
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # On the first tick, initialize some stuff.~
- Inside source: true
*** True Line Result
# On the first tick, initialize some stuff.
** Processing line: ~ if !args.state.yoffsets~
- Inside source: true
*** True Line Result
if !args.state.yoffsets
** Processing line: ~ args.state.baseyoff = 0~
- Inside source: true
*** True Line Result
args.state.baseyoff = 0
** Processing line: ~ args.state.yoffsets = []~
- Inside source: true
*** True Line Result
args.state.yoffsets = []
** Processing line: ~ for i in 0..segments do~
- Inside source: true
*** True Line Result
for i in 0..segments do
** Processing line: ~ args.state.yoffsets << rand * 100~
- Inside source: true
*** True Line Result
args.state.yoffsets << rand * 100
** 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: ~ # Just draw some random stuff for a few seconds.~
- Inside source: true
*** True Line Result
# Just draw some random stuff for a few seconds.
** Processing line: ~ args.state.static_debounce ||= 60 * 2.5~
- Inside source: true
*** True Line Result
args.state.static_debounce ||= 60 * 2.5
** Processing line: ~ if args.state.static_debounce > 0~
- Inside source: true
*** True Line Result
if args.state.static_debounce > 0
** Processing line: ~ last_frame = args.state.static_debounce == 1~
- Inside source: true
*** True Line Result
last_frame = args.state.static_debounce == 1
** Processing line: ~ target = last_frame ? args.render_target(:last_frame) : args.outputs~
- Inside source: true
*** True Line Result
target = last_frame ? args.render_target(:last_frame) : args.outputs
** Processing line: ~ draw_scene args, target~
- Inside source: true
*** True Line Result
draw_scene args, target
** Processing line: ~ args.state.static_debounce -= 1~
- Inside source: true
*** True Line Result
args.state.static_debounce -= 1
** Processing line: ~ return unless last_frame~
- Inside source: true
*** True Line Result
return unless last_frame
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # build up the wipe...~
- Inside source: true
*** True Line Result
# build up the wipe...
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # this is the thing we're wiping to.~
- Inside source: true
*** True Line Result
# this is the thing we're wiping to.
** Processing line: ~ args.outputs.sprites << [ 0, 0, 1280, 720, 'dragonruby.png' ]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [ 0, 0, 1280, 720, 'dragonruby.png' ]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return if (args.state.baseyoff > (1280 + 100)) # stop when done sliding~
- Inside source: true
*** True Line Result
return if (args.state.baseyoff > (1280 + 100)) # stop when done sliding
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ segmentw = 1280 / segments~
- Inside source: true
*** True Line Result
segmentw = 1280 / segments
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ x = 0~
- Inside source: true
*** True Line Result
x = 0
** Processing line: ~ for i in 0..segments do~
- Inside source: true
*** True Line Result
for i in 0..segments do
** Processing line: ~ yoffset = 0~
- Inside source: true
*** True Line Result
yoffset = 0
** Processing line: ~ if args.state.yoffsets[i] < args.state.baseyoff~
- Inside source: true
*** True Line Result
if args.state.yoffsets[i] < args.state.baseyoff
** Processing line: ~ yoffset = args.state.baseyoff - args.state.yoffsets[i]~
- Inside source: true
*** True Line Result
yoffset = args.state.baseyoff - args.state.yoffsets[i]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # (720 - yoffset) flips the coordinate system, (- 720) adjusts for the height of the segment.~
- Inside source: true
*** True Line Result
# (720 - yoffset) flips the coordinate system, (- 720) adjusts for the height of the segment.
** Processing line: ~ args.outputs.sprites << [ x, (720 - yoffset) - 720, segmentw, 720, 'last_frame', 0, 255, 255, 255, 255, x, 0, segmentw, 720 ]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [ x, (720 - yoffset) - 720, segmentw, 720, 'last_frame', 0, 255, 255, 255, 255, x, 0, segmentw, 720 ]
** Processing line: ~ x += segmentw~
- Inside source: true
*** True Line Result
x += segmentw
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.baseyoff += 4~
- Inside source: true
*** True Line Result
args.state.baseyoff += 4
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ tick_instructions args, "Sample app shows an advanced usage of render_target."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows an advanced usage of render_target."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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 - Render Target Viewports - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Rendering - Render Target Viewports - 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/03_render_target_viewports/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/07_advanced_rendering/03_render_target_viewports/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
- Inside source: true
*** True Line Result
- args.state.new_entity: Used when we want to create a new object, like a sprite or button.
** Processing line: ~ For example, if we want to create a new button, we would declare it as a new entity and~
- Inside source: true
*** True Line Result
For example, if we want to create a new button, we would declare it as a new entity and
** Processing line: ~ then define its properties. (Remember, you can use state to define ANY property and it will~
- Inside source: true
*** True Line Result
then define its properties. (Remember, you can use state to define ANY property and it will
** Processing line: ~ be retained across frames.)~
- Inside source: true
*** True Line Result
be retained across frames.)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ If you have a solar system and you're creating args.state.sun and setting its image path to an~
- Inside source: true
*** True Line Result
If you have a solar system and you're creating args.state.sun and setting its image path to an
** Processing line: ~ image in the sprites folder, you would do the following:~
- Inside source: true
*** True Line Result
image in the sprites folder, you would do the following:
** Processing line: ~ (See samples/99_sample_nddnug_workshop for more details.)~
- Inside source: true
*** True Line Result
(See samples/99_sample_nddnug_workshop for more details.)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.sun ||= args.state.new_entity(:sun) do |s|~
- Inside source: true
*** True Line Result
args.state.sun ||= args.state.new_entity(:sun) do |s|
** Processing line: ~ s.path = 'sprites/sun.png'~
- Inside source: true
*** True Line Result
s.path = 'sprites/sun.png'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
- Inside source: true
*** True Line Result
- String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
- Inside source: true
*** True Line Result
as Ruby code, and the placeholder is replaced with its corresponding value or result.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ For example, if we have a variable~
- Inside source: true
*** True Line Result
For example, if we have a variable
** Processing line: ~ name = "Ruby"~
- Inside source: true
*** True Line Result
name = "Ruby"
** Processing line: ~ then the line~
- Inside source: true
*** True Line Result
then the line
** Processing line: ~ puts "How are you, #{name}?"~
- Inside source: true
*** True Line Result
puts "How are you, #{name}?"
** Processing line: ~ would print "How are you, Ruby?" to the console.~
- Inside source: true
*** True Line Result
would print "How are you, Ruby?" to the console.
** Processing line: ~ (Remember, string interpolation only works with double quotes!)~
- Inside source: true
*** True Line Result
(Remember, string interpolation only works with double quotes!)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Ternary operator (?): Similar to if statement; first evalulates whether a statement is~
- Inside source: true
*** True Line Result
- Ternary operator (?): Similar to if statement; first evalulates whether a statement is
** Processing line: ~ true or false, and then executes a command depending on that result.~
- Inside source: true
*** True Line Result
true or false, and then executes a command depending on that result.
** Processing line: ~ For example, if we had a variable~
- Inside source: true
*** True Line Result
For example, if we had a variable
** Processing line: ~ grade = 75~
- Inside source: true
*** True Line Result
grade = 75
** Processing line: ~ and used the ternary operator in the command~
- Inside source: true
*** True Line Result
and used the ternary operator in the command
** Processing line: ~ pass_or_fail = grade > 65 ? "pass" : "fail"~
- Inside source: true
*** True Line Result
pass_or_fail = grade > 65 ? "pass" : "fail"
** Processing line: ~ then the value of pass_or_fail would be "pass" since grade's value was greater than 65.~
- Inside source: true
*** True Line Result
then the value of pass_or_fail would be "pass" since grade's value was greater than 65.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.grid.(left|right|top|bottom): Pixel value for the boundaries of the virtual~
- Inside source: true
*** True Line Result
- args.grid.(left|right|top|bottom): Pixel value for the boundaries of the virtual
** Processing line: ~ 720 p screen (Dragon Ruby Game Toolkits's virtual resolution is always 1280x720).~
- Inside source: true
*** True Line Result
720 p screen (Dragon Ruby Game Toolkits's virtual resolution is always 1280x720).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Numeric#shift_(left|right|up|down): Shifts the Numeric in the correct direction~
- Inside source: true
*** True Line Result
- Numeric#shift_(left|right|up|down): Shifts the Numeric in the correct direction
** Processing line: ~ by adding or subracting.~
- Inside source: true
*** True Line Result
by adding or subracting.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#inside_rect?: An array with at least two values is considered a point. An array~
- Inside source: true
*** True Line Result
- ARRAY#inside_rect?: An array with at least two values is considered a point. An array
** Processing line: ~ with at least four values is considered a rect. The inside_rect? function returns true~
- Inside source: true
*** True Line Result
with at least four values is considered a rect. The inside_rect? function returns true
** Processing line: ~ or false depending on if the point is inside the rect.~
- Inside source: true
*** True Line Result
or false depending on if the point is inside the rect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.~
- Inside source: true
*** True Line Result
- ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.mouse.click: This property will be set if the mouse was clicked.~
- Inside source: true
*** True Line Result
- args.inputs.mouse.click: This property will be set if the mouse was clicked.
** Processing line: ~ For more information about the mouse, go to mygame/documentation/07-mouse.md.~
- Inside source: true
*** True Line Result
For more information about the mouse, go to mygame/documentation/07-mouse.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.inputs.keyboard.key_up.KEY: The value of the properties will be set~
- Inside source: true
*** True Line Result
- args.inputs.keyboard.key_up.KEY: The value of the properties will be set
** Processing line: ~ to the frame that the key_up event occurred (the frame correlates~
- Inside source: true
*** True Line Result
to the frame that the key_up event occurred (the frame correlates
** Processing line: ~ to args.state.tick_count).~
- Inside source: true
*** True Line Result
to args.state.tick_count).
** Processing line: ~ For more information about the keyboard, go to mygame/documentation/06-keyboard.md.~
- Inside source: true
*** True Line Result
For more information about the keyboard, go to mygame/documentation/06-keyboard.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.labels:~
- Inside source: true
*** True Line Result
- args.state.labels:
** Processing line: ~ The parameters for a label are~
- Inside source: true
*** True Line Result
The parameters for a label are
** Processing line: ~ 1. the position (x, y)~
- Inside source: true
*** True Line Result
1. the position (x, y)
** Processing line: ~ 2. the text~
- Inside source: true
*** True Line Result
2. the text
** Processing line: ~ 3. the size~
- Inside source: true
*** True Line Result
3. the size
** Processing line: ~ 4. the alignment~
- Inside source: true
*** True Line Result
4. the alignment
** Processing line: ~ 5. the color (red, green, and blue saturations)~
- Inside source: true
*** True Line Result
5. the color (red, green, and blue saturations)
** Processing line: ~ 6. the alpha (or transparency)~
- Inside source: true
*** True Line Result
6. the alpha (or transparency)
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.lines:~
- Inside source: true
*** True Line Result
- args.state.lines:
** Processing line: ~ The parameters for a line are~
- Inside source: true
*** True Line Result
The parameters for a line are
** Processing line: ~ 1. the starting position (x, y)~
- Inside source: true
*** True Line Result
1. the starting position (x, y)
** Processing line: ~ 2. the ending position (x2, y2)~
- Inside source: true
*** True Line Result
2. the ending position (x2, y2)
** Processing line: ~ 3. the color (red, green, and blue saturations)~
- Inside source: true
*** True Line Result
3. the color (red, green, and blue saturations)
** Processing line: ~ 4. the alpha (or transparency)~
- Inside source: true
*** True Line Result
4. the alpha (or transparency)
** Processing line: ~ For more information about lines, go to mygame/documentation/04-lines.md.~
- Inside source: true
*** True Line Result
For more information about lines, go to mygame/documentation/04-lines.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.solids (and args.state.borders):~
- Inside source: true
*** True Line Result
- args.state.solids (and args.state.borders):
** Processing line: ~ The parameters for a solid (or border) are~
- Inside source: true
*** True Line Result
The parameters for a solid (or border) are
** Processing line: ~ 1. the position (x, y)~
- Inside source: true
*** True Line Result
1. the position (x, y)
** Processing line: ~ 2. the width (w)~
- Inside source: true
*** True Line Result
2. the width (w)
** Processing line: ~ 3. the height (h)~
- Inside source: true
*** True Line Result
3. the height (h)
** Processing line: ~ 4. the color (r, g, b)~
- Inside source: true
*** True Line Result
4. the color (r, g, b)
** Processing line: ~ 5. the alpha (or transparency)~
- Inside source: true
*** True Line Result
5. the alpha (or transparency)
** Processing line: ~ For more information about solids and borders, go to mygame/documentation/03-solids-and-borders.md.~
- Inside source: true
*** True Line Result
For more information about solids and borders, go to mygame/documentation/03-solids-and-borders.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.sprites:~
- Inside source: true
*** True Line Result
- args.state.sprites:
** Processing line: ~ The parameters for a sprite are~
- Inside source: true
*** True Line Result
The parameters for a sprite are
** Processing line: ~ 1. the position (x, y)~
- Inside source: true
*** True Line Result
1. the position (x, y)
** Processing line: ~ 2. the width (w)~
- Inside source: true
*** True Line Result
2. the width (w)
** Processing line: ~ 3. the height (h)~
- Inside source: true
*** True Line Result
3. the height (h)
** Processing line: ~ 4. the image path~
- Inside source: true
*** True Line Result
4. the image path
** Processing line: ~ 5. the angle~
- Inside source: true
*** True Line Result
5. the angle
** Processing line: ~ 6. the alpha (or transparency)~
- Inside source: true
*** True Line Result
6. the alpha (or transparency)
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
- Inside source: true
*** True Line Result
For more information about sprites, go to mygame/documentation/05-sprites.md.
** Processing line: ~ =end~
- Inside source: true
*** True Line Result
=end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This sample app shows different objects that can be used when making games, such as labels,~
- Inside source: true
*** True Line Result
# This sample app shows different objects that can be used when making games, such as labels,
** Processing line: ~ # lines, sprites, solids, buttons, etc. Each demo section shows how these objects can be used.~
- Inside source: true
*** True Line Result
# lines, sprites, solids, buttons, etc. Each demo section shows how these objects can be used.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Also note that state.tick_count refers to the passage of time, or current frame.~
- Inside source: true
*** True Line Result
# Also note that state.tick_count refers to the passage of time, or current frame.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class TechDemo~
- Inside source: true
*** True Line Result
class TechDemo
** Processing line: ~ attr_accessor :inputs, :state, :outputs, :grid, :args~
- Inside source: true
*** True Line Result
attr_accessor :inputs, :state, :outputs, :grid, :args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls all methods necessary for the app to run properly.~
- Inside source: true
*** True Line Result
# Calls all methods necessary for the app to run properly.
** Processing line: ~ def tick~
- Inside source: true
*** True Line Result
def tick
** Processing line: ~ labels_tech_demo~
- Inside source: true
*** True Line Result
labels_tech_demo
** Processing line: ~ lines_tech_demo~
- Inside source: true
*** True Line Result
lines_tech_demo
** Processing line: ~ solids_tech_demo~
- Inside source: true
*** True Line Result
solids_tech_demo
** Processing line: ~ borders_tech_demo~
- Inside source: true
*** True Line Result
borders_tech_demo
** Processing line: ~ sprites_tech_demo~
- Inside source: true
*** True Line Result
sprites_tech_demo
** Processing line: ~ keyboards_tech_demo~
- Inside source: true
*** True Line Result
keyboards_tech_demo
** Processing line: ~ controller_tech_demo~
- Inside source: true
*** True Line Result
controller_tech_demo
** Processing line: ~ mouse_tech_demo~
- Inside source: true
*** True Line Result
mouse_tech_demo
** Processing line: ~ point_to_rect_tech_demo~
- Inside source: true
*** True Line Result
point_to_rect_tech_demo
** Processing line: ~ rect_to_rect_tech_demo~
- Inside source: true
*** True Line Result
rect_to_rect_tech_demo
** Processing line: ~ button_tech_demo~
- Inside source: true
*** True Line Result
button_tech_demo
** Processing line: ~ export_game_state_demo~
- Inside source: true
*** True Line Result
export_game_state_demo
** Processing line: ~ window_state_demo~
- Inside source: true
*** True Line Result
window_state_demo
** Processing line: ~ render_seperators~
- Inside source: true
*** True Line Result
render_seperators
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Shows output of different kinds of labels on the screen~
- Inside source: true
*** True Line Result
# Shows output of different kinds of labels on the screen
** Processing line: ~ def labels_tech_demo~
- Inside source: true
*** True Line Result
def labels_tech_demo
** Processing line: ~ outputs.labels << [grid.left.shift_right(5), grid.top.shift_down(5), "This is a label located at the top left."]~
- Inside source: true
*** True Line Result
outputs.labels << [grid.left.shift_right(5), grid.top.shift_down(5), "This is a label located at the top left."]
** Processing line: ~ outputs.labels << [grid.left.shift_right(5), grid.bottom.shift_up(30), "This is a label located at the bottom left."]~
- Inside source: true
*** True Line Result
outputs.labels << [grid.left.shift_right(5), grid.bottom.shift_up(30), "This is a label located at the bottom left."]
** Processing line: ~ outputs.labels << [ 5, 690, "Labels (x, y, text, size, align, r, g, b, a)"]~
- Inside source: true
*** True Line Result
outputs.labels << [ 5, 690, "Labels (x, y, text, size, align, r, g, b, a)"]
** Processing line: ~ outputs.labels << [ 5, 660, "Smaller label.", -2]~
- Inside source: true
*** True Line Result
outputs.labels << [ 5, 660, "Smaller label.", -2]
** Processing line: ~ outputs.labels << [ 5, 630, "Small label.", -1]~
- Inside source: true
*** True Line Result
outputs.labels << [ 5, 630, "Small label.", -1]
** Processing line: ~ outputs.labels << [ 5, 600, "Medium label.", 0]~
- Inside source: true
*** True Line Result
outputs.labels << [ 5, 600, "Medium label.", 0]
** Processing line: ~ outputs.labels << [ 5, 570, "Large label.", 1]~
- Inside source: true
*** True Line Result
outputs.labels << [ 5, 570, "Large label.", 1]
** Processing line: ~ outputs.labels << [ 5, 540, "Larger label.", 2]~
- Inside source: true
*** True Line Result
outputs.labels << [ 5, 540, "Larger label.", 2]
** Processing line: ~ outputs.labels << [300, 660, "Left aligned.", 0, 2]~
- Inside source: true
*** True Line Result
outputs.labels << [300, 660, "Left aligned.", 0, 2]
** Processing line: ~ outputs.labels << [300, 640, "Center aligned.", 0, 1]~
- Inside source: true
*** True Line Result
outputs.labels << [300, 640, "Center aligned.", 0, 1]
** Processing line: ~ outputs.labels << [300, 620, "Right aligned.", 0, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [300, 620, "Right aligned.", 0, 0]
** Processing line: ~ outputs.labels << [175, 595, "Red Label.", 0, 0, 255, 0, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [175, 595, "Red Label.", 0, 0, 255, 0, 0]
** Processing line: ~ outputs.labels << [175, 575, "Green Label.", 0, 0, 0, 255, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [175, 575, "Green Label.", 0, 0, 0, 255, 0]
** Processing line: ~ outputs.labels << [175, 555, "Blue Label.", 0, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [175, 555, "Blue Label.", 0, 0, 0, 0, 255]
** Processing line: ~ outputs.labels << [175, 535, "Faded Label.", 0, 0, 0, 0, 0, 128]~
- Inside source: true
*** True Line Result
outputs.labels << [175, 535, "Faded Label.", 0, 0, 0, 0, 0, 128]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Shows output of lines on the screen~
- Inside source: true
*** True Line Result
# Shows output of lines on the screen
** Processing line: ~ def lines_tech_demo~
- Inside source: true
*** True Line Result
def lines_tech_demo
** Processing line: ~ outputs.labels << [5, 500, "Lines (x, y, x2, y2, r, g, b, a)"]~
- Inside source: true
*** True Line Result
outputs.labels << [5, 500, "Lines (x, y, x2, y2, r, g, b, a)"]
** Processing line: ~ outputs.lines << [5, 450, 100, 450]~
- Inside source: true
*** True Line Result
outputs.lines << [5, 450, 100, 450]
** Processing line: ~ outputs.lines << [5, 430, 300, 430]~
- Inside source: true
*** True Line Result
outputs.lines << [5, 430, 300, 430]
** Processing line: ~ outputs.lines << [5, 410, 300, 410, state.tick_count % 255, 0, 0, 255] # red saturation changes~
- Inside source: true
*** True Line Result
outputs.lines << [5, 410, 300, 410, state.tick_count % 255, 0, 0, 255] # red saturation changes
** Processing line: ~ outputs.lines << [5, 390 - state.tick_count % 25, 300, 390, 0, 0, 0, 255] # y position changes~
- Inside source: true
*** True Line Result
outputs.lines << [5, 390 - state.tick_count % 25, 300, 390, 0, 0, 0, 255] # y position changes
** Processing line: ~ outputs.lines << [5 + state.tick_count % 200, 360, 300, 360, 0, 0, 0, 255] # x position changes~
- Inside source: true
*** True Line Result
outputs.lines << [5 + state.tick_count % 200, 360, 300, 360, 0, 0, 0, 255] # x position changes
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Shows output of different kinds of solids on the screen~
- Inside source: true
*** True Line Result
# Shows output of different kinds of solids on the screen
** Processing line: ~ def solids_tech_demo~
- Inside source: true
*** True Line Result
def solids_tech_demo
** Processing line: ~ outputs.labels << [ 5, 350, "Solids (x, y, w, h, r, g, b, a)"]~
- Inside source: true
*** True Line Result
outputs.labels << [ 5, 350, "Solids (x, y, w, h, r, g, b, a)"]
** Processing line: ~ outputs.solids << [ 10, 270, 50, 50]~
- Inside source: true
*** True Line Result
outputs.solids << [ 10, 270, 50, 50]
** Processing line: ~ outputs.solids << [ 70, 270, 50, 50, 0, 0, 0]~
- Inside source: true
*** True Line Result
outputs.solids << [ 70, 270, 50, 50, 0, 0, 0]
** Processing line: ~ outputs.solids << [130, 270, 50, 50, 255, 0, 0]~
- Inside source: true
*** True Line Result
outputs.solids << [130, 270, 50, 50, 255, 0, 0]
** Processing line: ~ outputs.solids << [190, 270, 50, 50, 255, 0, 0, 128]~
- Inside source: true
*** True Line Result
outputs.solids << [190, 270, 50, 50, 255, 0, 0, 128]
** Processing line: ~ outputs.solids << [250, 270, 50, 50, 0, 0, 0, 128 + state.tick_count % 128] # transparency changes~
- Inside source: true
*** True Line Result
outputs.solids << [250, 270, 50, 50, 0, 0, 0, 128 + state.tick_count % 128] # transparency changes
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Shows output of different kinds of borders on the screen~
- Inside source: true
*** True Line Result
# Shows output of different kinds of borders on the screen
** Processing line: ~ # The parameters for a border are the same as the parameters for a solid~
- Inside source: true
*** True Line Result
# The parameters for a border are the same as the parameters for a solid
** Processing line: ~ def borders_tech_demo~
- Inside source: true
*** True Line Result
def borders_tech_demo
** Processing line: ~ outputs.labels << [ 5, 260, "Borders (x, y, w, h, r, g, b, a)"]~
- Inside source: true
*** True Line Result
outputs.labels << [ 5, 260, "Borders (x, y, w, h, r, g, b, a)"]
** Processing line: ~ outputs.borders << [ 10, 180, 50, 50]~
- Inside source: true
*** True Line Result
outputs.borders << [ 10, 180, 50, 50]
** Processing line: ~ outputs.borders << [ 70, 180, 50, 50, 0, 0, 0]~
- Inside source: true
*** True Line Result
outputs.borders << [ 70, 180, 50, 50, 0, 0, 0]
** Processing line: ~ outputs.borders << [130, 180, 50, 50, 255, 0, 0]~
- Inside source: true
*** True Line Result
outputs.borders << [130, 180, 50, 50, 255, 0, 0]
** Processing line: ~ outputs.borders << [190, 180, 50, 50, 255, 0, 0, 128]~
- Inside source: true
*** True Line Result
outputs.borders << [190, 180, 50, 50, 255, 0, 0, 128]
** Processing line: ~ outputs.borders << [250, 180, 50, 50, 0, 0, 0, 128 + state.tick_count % 128] # transparency changes~
- Inside source: true
*** True Line Result
outputs.borders << [250, 180, 50, 50, 0, 0, 0, 128 + state.tick_count % 128] # transparency changes
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Shows output of different kinds of sprites on the screen~
- Inside source: true
*** True Line Result
# Shows output of different kinds of sprites on the screen
** Processing line: ~ def sprites_tech_demo~
- Inside source: true
*** True Line Result
def sprites_tech_demo
** Processing line: ~ outputs.labels << [ 5, 170, "Sprites (x, y, w, h, path, angle, a)"]~
- Inside source: true
*** True Line Result
outputs.labels << [ 5, 170, "Sprites (x, y, w, h, path, angle, a)"]
** Processing line: ~ outputs.sprites << [ 10, 40, 128, 101, 'dragonruby.png']~
- Inside source: true
*** True Line Result
outputs.sprites << [ 10, 40, 128, 101, 'dragonruby.png']
** Processing line: ~ outputs.sprites << [ 150, 40, 128, 101, 'dragonruby.png', state.tick_count % 360] # angle changes~
- Inside source: true
*** True Line Result
outputs.sprites << [ 150, 40, 128, 101, 'dragonruby.png', state.tick_count % 360] # angle changes
** Processing line: ~ outputs.sprites << [ 300, 40, 128, 101, 'dragonruby.png', 0, state.tick_count % 255] # transparency changes~
- Inside source: true
*** True Line Result
outputs.sprites << [ 300, 40, 128, 101, 'dragonruby.png', 0, state.tick_count % 255] # transparency changes
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Holds size, alignment, color (black), and alpha (transparency) parameters~
- Inside source: true
*** True Line Result
# Holds size, alignment, color (black), and alpha (transparency) parameters
** Processing line: ~ # Using small_font as a parameter accounts for all remaining parameters~
- Inside source: true
*** True Line Result
# Using small_font as a parameter accounts for all remaining parameters
** Processing line: ~ # so they don't have to be repeatedly typed~
- Inside source: true
*** True Line Result
# so they don't have to be repeatedly typed
** Processing line: ~ def small_font~
- Inside source: true
*** True Line Result
def small_font
** Processing line: ~ [-2, 0, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
[-2, 0, 0, 0, 0, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets position of each row~
- Inside source: true
*** True Line Result
# Sets position of each row
** Processing line: ~ # Converts given row value to pixels that DragonRuby understands~
- Inside source: true
*** True Line Result
# Converts given row value to pixels that DragonRuby understands
** Processing line: ~ def row_to_px row_number~
- Inside source: true
*** True Line Result
def row_to_px row_number
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Row 0 starts 5 units below the top of the grid.~
- Inside source: true
*** True Line Result
# Row 0 starts 5 units below the top of the grid.
** Processing line: ~ # Each row afterward is 20 units lower.~
- Inside source: true
*** True Line Result
# Each row afterward is 20 units lower.
** Processing line: ~ grid.top.shift_down(5).shift_down(20 * row_number)~
- Inside source: true
*** True Line Result
grid.top.shift_down(5).shift_down(20 * row_number)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Uses labels to output current game time (passage of time), and whether or not "h" was pressed~
- Inside source: true
*** True Line Result
# Uses labels to output current game time (passage of time), and whether or not "h" was pressed
** Processing line: ~ # If "h" is pressed, the frame is output when the key_up event occurred~
- Inside source: true
*** True Line Result
# If "h" is pressed, the frame is output when the key_up event occurred
** Processing line: ~ def keyboards_tech_demo~
- Inside source: true
*** True Line Result
def keyboards_tech_demo
** Processing line: ~ outputs.labels << [460, row_to_px(0), "Current game time: #{state.tick_count}", small_font]~
- Inside source: true
*** True Line Result
outputs.labels << [460, row_to_px(0), "Current game time: #{state.tick_count}", small_font]
** Processing line: ~ outputs.labels << [460, row_to_px(2), "Keyboard input: inputs.keyboard.key_up.h", small_font]~
- Inside source: true
*** True Line Result
outputs.labels << [460, row_to_px(2), "Keyboard input: inputs.keyboard.key_up.h", small_font]
** Processing line: ~ outputs.labels << [460, row_to_px(3), "Press \"h\" on the keyboard.", small_font]~
- Inside source: true
*** True Line Result
outputs.labels << [460, row_to_px(3), "Press \"h\" on the keyboard.", small_font]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.keyboard.key_up.h # if "h" key_up event occurs~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_up.h # if "h" key_up event occurs
** Processing line: ~ state.h_pressed_at = state.tick_count # frame it occurred is stored~
- Inside source: true
*** True Line Result
state.h_pressed_at = state.tick_count # frame it occurred is stored
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # h_pressed_at is initially set to false, and changes once the user presses the "h" key.~
- Inside source: true
*** True Line Result
# h_pressed_at is initially set to false, and changes once the user presses the "h" key.
** Processing line: ~ state.h_pressed_at ||= false~
- Inside source: true
*** True Line Result
state.h_pressed_at ||= false
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.h_pressed_at # if h is pressed (pressed_at has a frame number and is no longer false)~
- Inside source: true
*** True Line Result
if state.h_pressed_at # if h is pressed (pressed_at has a frame number and is no longer false)
** Processing line: ~ outputs.labels << [460, row_to_px(4), "\"h\" was pressed at time: #{state.h_pressed_at}", small_font]~
- Inside source: true
*** True Line Result
outputs.labels << [460, row_to_px(4), "\"h\" was pressed at time: #{state.h_pressed_at}", small_font]
** Processing line: ~ else # otherwise, label says "h" was never pressed~
- Inside source: true
*** True Line Result
else # otherwise, label says "h" was never pressed
** Processing line: ~ outputs.labels << [460, row_to_px(4), "\"h\" has never been pressed.", small_font]~
- Inside source: true
*** True Line Result
outputs.labels << [460, row_to_px(4), "\"h\" has never been pressed.", small_font]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # border around keyboard input demo section~
- Inside source: true
*** True Line Result
# border around keyboard input demo section
** Processing line: ~ outputs.borders << [455, row_to_px(5), 360, row_to_px(2).shift_up(5) - row_to_px(5)]~
- Inside source: true
*** True Line Result
outputs.borders << [455, row_to_px(5), 360, row_to_px(2).shift_up(5) - row_to_px(5)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets definition for a small label~
- Inside source: true
*** True Line Result
# Sets definition for a small label
** Processing line: ~ # Makes it easier to position labels in respect to the position of other labels~
- Inside source: true
*** True Line Result
# Makes it easier to position labels in respect to the position of other labels
** Processing line: ~ def small_label x, row, message~
- Inside source: true
*** True Line Result
def small_label x, row, message
** Processing line: ~ [x, row_to_px(row), message, small_font]~
- Inside source: true
*** True Line Result
[x, row_to_px(row), message, small_font]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Uses small labels to show whether the "a" button on the controller is down, held, or up.~
- Inside source: true
*** True Line Result
# Uses small labels to show whether the "a" button on the controller is down, held, or up.
** Processing line: ~ # y value of each small label is set by calling the row_to_px method~
- Inside source: true
*** True Line Result
# y value of each small label is set by calling the row_to_px method
** Processing line: ~ def controller_tech_demo~
- Inside source: true
*** True Line Result
def controller_tech_demo
** Processing line: ~ x = 460~
- Inside source: true
*** True Line Result
x = 460
** Processing line: ~ outputs.labels << small_label(x, 6, "Controller one input: inputs.controller_one")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 6, "Controller one input: inputs.controller_one")
** Processing line: ~ outputs.labels << small_label(x, 7, "Current state of the \"a\" button.")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 7, "Current state of the \"a\" button.")
** Processing line: ~ outputs.labels << small_label(x, 8, "Check console window for more info.")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 8, "Check console window for more info.")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.controller_one.key_down.a # if "a" is in "down" state~
- Inside source: true
*** True Line Result
if inputs.controller_one.key_down.a # if "a" is in "down" state
** Processing line: ~ outputs.labels << small_label(x, 9, "\"a\" button down: #{inputs.controller_one.key_down.a}")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 9, "\"a\" button down: #{inputs.controller_one.key_down.a}")
** Processing line: ~ puts "\"a\" button down at #{inputs.controller_one.key_down.a}" # prints frame the event occurred~
- Inside source: true
*** True Line Result
puts "\"a\" button down at #{inputs.controller_one.key_down.a}" # prints frame the event occurred
** Processing line: ~ elsif inputs.controller_one.key_held.a # if "a" is held down~
- Inside source: true
*** True Line Result
elsif inputs.controller_one.key_held.a # if "a" is held down
** Processing line: ~ outputs.labels << small_label(x, 9, "\"a\" button held: #{inputs.controller_one.key_held.a}")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 9, "\"a\" button held: #{inputs.controller_one.key_held.a}")
** Processing line: ~ elsif inputs.controller_one.key_up.a # if "a" is in up state~
- Inside source: true
*** True Line Result
elsif inputs.controller_one.key_up.a # if "a" is in up state
** Processing line: ~ outputs.labels << small_label(x, 9, "\"a\" button up: #{inputs.controller_one.key_up.a}")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 9, "\"a\" button up: #{inputs.controller_one.key_up.a}")
** Processing line: ~ puts "\"a\" key up at #{inputs.controller_one.key_up.a}"~
- Inside source: true
*** True Line Result
puts "\"a\" key up at #{inputs.controller_one.key_up.a}"
** Processing line: ~ else # if no event has occurred~
- Inside source: true
*** True Line Result
else # if no event has occurred
** Processing line: ~ outputs.labels << small_label(x, 9, "\"a\" button state is nil.")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 9, "\"a\" button state is nil.")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # border around controller input demo section~
- Inside source: true
*** True Line Result
# border around controller input demo section
** Processing line: ~ outputs.borders << [455, row_to_px(10), 360, row_to_px(6).shift_up(5) - row_to_px(10)]~
- Inside source: true
*** True Line Result
outputs.borders << [455, row_to_px(10), 360, row_to_px(6).shift_up(5) - row_to_px(10)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs when the mouse was clicked, as well as the coordinates on the screen~
- Inside source: true
*** True Line Result
# Outputs when the mouse was clicked, as well as the coordinates on the screen
** Processing line: ~ # of where the click occurred~
- Inside source: true
*** True Line Result
# of where the click occurred
** Processing line: ~ def mouse_tech_demo~
- Inside source: true
*** True Line Result
def mouse_tech_demo
** Processing line: ~ x = 460~
- Inside source: true
*** True Line Result
x = 460
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << small_label(x, 11, "Mouse input: inputs.mouse")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 11, "Mouse input: inputs.mouse")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.mouse.click # if click has a value and is not nil~
- Inside source: true
*** True Line Result
if inputs.mouse.click # if click has a value and is not nil
** Processing line: ~ state.last_mouse_click = inputs.mouse.click # coordinates of click are stored~
- Inside source: true
*** True Line Result
state.last_mouse_click = inputs.mouse.click # coordinates of click are stored
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.last_mouse_click # if mouse is clicked (has coordinates as value)~
- Inside source: true
*** True Line Result
if state.last_mouse_click # if mouse is clicked (has coordinates as value)
** Processing line: ~ # outputs the time (frame) the click occurred, as well as how many frames have passed since the event~
- Inside source: true
*** True Line Result
# outputs the time (frame) the click occurred, as well as how many frames have passed since the event
** Processing line: ~ outputs.labels << small_label(x, 12, "Mouse click happened at: #{state.last_mouse_click.created_at}, #{state.last_mouse_click.created_at_elapsed}")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 12, "Mouse click happened at: #{state.last_mouse_click.created_at}, #{state.last_mouse_click.created_at_elapsed}")
** Processing line: ~ # outputs coordinates of click~
- Inside source: true
*** True Line Result
# outputs coordinates of click
** Processing line: ~ outputs.labels << small_label(x, 13, "Mouse click location: #{state.last_mouse_click.point.x}, #{state.last_mouse_click.point.y}")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 13, "Mouse click location: #{state.last_mouse_click.point.x}, #{state.last_mouse_click.point.y}")
** Processing line: ~ else # otherwise if the mouse has not been clicked~
- Inside source: true
*** True Line Result
else # otherwise if the mouse has not been clicked
** Processing line: ~ outputs.labels << small_label(x, 12, "Mouse click has not occurred yet.")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 12, "Mouse click has not occurred yet.")
** Processing line: ~ outputs.labels << small_label(x, 13, "Please click mouse.")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 13, "Please click mouse.")
** 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: ~ # Outputs whether a mouse click occurred inside or outside of a box~
- Inside source: true
*** True Line Result
# Outputs whether a mouse click occurred inside or outside of a box
** Processing line: ~ def point_to_rect_tech_demo~
- Inside source: true
*** True Line Result
def point_to_rect_tech_demo
** Processing line: ~ x = 460~
- Inside source: true
*** True Line Result
x = 460
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << small_label(x, 15, "Click inside the blue box maybe ---->")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 15, "Click inside the blue box maybe ---->")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ box = [765, 370, 50, 50, 0, 0, 170] # blue box~
- Inside source: true
*** True Line Result
box = [765, 370, 50, 50, 0, 0, 170] # blue box
** Processing line: ~ outputs.borders << box~
- Inside source: true
*** True Line Result
outputs.borders << box
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.last_mouse_click # if the mouse was clicked~
- Inside source: true
*** True Line Result
if state.last_mouse_click # if the mouse was clicked
** Processing line: ~ if state.last_mouse_click.point.inside_rect? box # if mouse clicked inside box~
- Inside source: true
*** True Line Result
if state.last_mouse_click.point.inside_rect? box # if mouse clicked inside box
** Processing line: ~ outputs.labels << small_label(x, 16, "Mouse click happened inside the box.")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 16, "Mouse click happened inside the box.")
** Processing line: ~ else # otherwise, if mouse was clicked outside the box~
- Inside source: true
*** True Line Result
else # otherwise, if mouse was clicked outside the box
** Processing line: ~ outputs.labels << small_label(x, 16, "Mouse click happened outside the box.")~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 16, "Mouse click happened outside the box.")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else # otherwise, if was not clicked at all~
- Inside source: true
*** True Line Result
else # otherwise, if was not clicked at all
** Processing line: ~ outputs.labels << small_label(x, 16, "Mouse click has not occurred yet.") # output if the mouse was not clicked~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 16, "Mouse click has not occurred yet.") # output if the mouse was not clicked
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # border around mouse input demo section~
- Inside source: true
*** True Line Result
# border around mouse input demo section
** Processing line: ~ outputs.borders << [455, row_to_px(14), 360, row_to_px(11).shift_up(5) - row_to_px(14)]~
- Inside source: true
*** True Line Result
outputs.borders << [455, row_to_px(14), 360, row_to_px(11).shift_up(5) - row_to_px(14)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs a red box onto the screen. A mouse click from the user inside of the red box will output~
- Inside source: true
*** True Line Result
# Outputs a red box onto the screen. A mouse click from the user inside of the red box will output
** Processing line: ~ # a smaller box. If two small boxes are inside of the red box, it will be determined whether or not~
- Inside source: true
*** True Line Result
# a smaller box. If two small boxes are inside of the red box, it will be determined whether or not
** Processing line: ~ # they intersect.~
- Inside source: true
*** True Line Result
# they intersect.
** Processing line: ~ def rect_to_rect_tech_demo~
- Inside source: true
*** True Line Result
def rect_to_rect_tech_demo
** Processing line: ~ x = 460~
- Inside source: true
*** True Line Result
x = 460
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << small_label(x, 17.5, "Click inside the red box below.") # label with instructions~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 17.5, "Click inside the red box below.") # label with instructions
** Processing line: ~ red_box = [460, 250, 355, 90, 170, 0, 0] # definition of the red box~
- Inside source: true
*** True Line Result
red_box = [460, 250, 355, 90, 170, 0, 0] # definition of the red box
** Processing line: ~ outputs.borders << red_box # output as a border (not filled in)~
- Inside source: true
*** True Line Result
outputs.borders << red_box # output as a border (not filled in)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If the mouse is clicked inside the red box, two collision boxes are created.~
- Inside source: true
*** True Line Result
# If the mouse is clicked inside the red box, two collision boxes are created.
** Processing line: ~ if inputs.mouse.click~
- Inside source: true
*** True Line Result
if inputs.mouse.click
** Processing line: ~ if inputs.mouse.click.point.inside_rect? red_box~
- Inside source: true
*** True Line Result
if inputs.mouse.click.point.inside_rect? red_box
** Processing line: ~ if !state.box_collision_one # if the collision_one box does not yet have a definition~
- Inside source: true
*** True Line Result
if !state.box_collision_one # if the collision_one box does not yet have a definition
** Processing line: ~ # Subtracts 25 from the x and y positions of the click point in order to make the click point the center of the box.~
- Inside source: true
*** True Line Result
# Subtracts 25 from the x and y positions of the click point in order to make the click point the center of the box.
** Processing line: ~ # You can try deleting the subtraction to see how it impacts the box placement.~
- Inside source: true
*** True Line Result
# You can try deleting the subtraction to see how it impacts the box placement.
** Processing line: ~ state.box_collision_one = [inputs.mouse.click.point.x - 25, inputs.mouse.click.point.y - 25, 50, 50, 180, 0, 0, 180] # sets definition~
- Inside source: true
*** True Line Result
state.box_collision_one = [inputs.mouse.click.point.x - 25, inputs.mouse.click.point.y - 25, 50, 50, 180, 0, 0, 180] # sets definition
** Processing line: ~ elsif !state.box_collision_two # if collision_two does not yet have a definition~
- Inside source: true
*** True Line Result
elsif !state.box_collision_two # if collision_two does not yet have a definition
** Processing line: ~ state.box_collision_two = [inputs.mouse.click.point.x - 25, inputs.mouse.click.point.y - 25, 50, 50, 0, 0, 180, 180] # sets definition~
- Inside source: true
*** True Line Result
state.box_collision_two = [inputs.mouse.click.point.x - 25, inputs.mouse.click.point.y - 25, 50, 50, 0, 0, 180, 180] # sets definition
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.box_collision_one = nil # both boxes are empty~
- Inside source: true
*** True Line Result
state.box_collision_one = nil # both boxes are empty
** Processing line: ~ state.box_collision_two = nil~
- Inside source: true
*** True Line Result
state.box_collision_two = nil
** 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: ~ # If collision boxes exist, they are output onto screen inside the red box as solids~
- Inside source: true
*** True Line Result
# If collision boxes exist, they are output onto screen inside the red box as solids
** Processing line: ~ if state.box_collision_one~
- Inside source: true
*** True Line Result
if state.box_collision_one
** Processing line: ~ outputs.solids << state.box_collision_one~
- Inside source: true
*** True Line Result
outputs.solids << state.box_collision_one
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.box_collision_two~
- Inside source: true
*** True Line Result
if state.box_collision_two
** Processing line: ~ outputs.solids << state.box_collision_two~
- Inside source: true
*** True Line Result
outputs.solids << state.box_collision_two
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs whether or not the two collision boxes intersect.~
- Inside source: true
*** True Line Result
# Outputs whether or not the two collision boxes intersect.
** Processing line: ~ if state.box_collision_one && state.box_collision_two # if both collision_boxes are defined (and not nil or empty)~
- Inside source: true
*** True Line Result
if state.box_collision_one && state.box_collision_two # if both collision_boxes are defined (and not nil or empty)
** Processing line: ~ if state.box_collision_one.intersect_rect? state.box_collision_two # if the two boxes intersect~
- Inside source: true
*** True Line Result
if state.box_collision_one.intersect_rect? state.box_collision_two # if the two boxes intersect
** Processing line: ~ outputs.labels << small_label(x, 23.5, 'The boxes intersect.')~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 23.5, 'The boxes intersect.')
** Processing line: ~ else # otherwise, if the two boxes do not intersect~
- Inside source: true
*** True Line Result
else # otherwise, if the two boxes do not intersect
** Processing line: ~ outputs.labels << small_label(x, 23.5, 'The boxes do not intersect.')~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 23.5, 'The boxes do not intersect.')
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ outputs.labels << small_label(x, 23.5, '--') # if the two boxes are not defined (are nil or empty), this label is output~
- Inside source: true
*** True Line Result
outputs.labels << small_label(x, 23.5, '--') # if the two boxes are not defined (are nil or empty), this label is output
** 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: ~ # Creates a button and outputs it onto the screen using labels and borders.~
- Inside source: true
*** True Line Result
# Creates a button and outputs it onto the screen using labels and borders.
** Processing line: ~ # If the button is clicked, the color changes to make it look faded.~
- Inside source: true
*** True Line Result
# If the button is clicked, the color changes to make it look faded.
** Processing line: ~ def button_tech_demo~
- Inside source: true
*** True Line Result
def button_tech_demo
** Processing line: ~ x, y, w, h = 460, 160, 300, 50~
- Inside source: true
*** True Line Result
x, y, w, h = 460, 160, 300, 50
** Processing line: ~ state.button ||= state.new_entity(:button_with_fade)~
- Inside source: true
*** True Line Result
state.button ||= state.new_entity(:button_with_fade)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Adds w.half to x and h.half + 10 to y in order to display the text inside the button's borders.~
- Inside source: true
*** True Line Result
# Adds w.half to x and h.half + 10 to y in order to display the text inside the button's borders.
** Processing line: ~ state.button.label ||= [x + w.half, y + h.half + 10, "click me and watch me fade", 0, 1]~
- Inside source: true
*** True Line Result
state.button.label ||= [x + w.half, y + h.half + 10, "click me and watch me fade", 0, 1]
** Processing line: ~ state.button.border ||= [x, y, w, h]~
- Inside source: true
*** True Line Result
state.button.border ||= [x, y, w, h]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.button.border) # if mouse is clicked, and clicked inside button's border~
- Inside source: true
*** True Line Result
if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.button.border) # if mouse is clicked, and clicked inside button's border
** Processing line: ~ state.button.clicked_at = inputs.mouse.click.created_at # stores the time the click occurred~
- Inside source: true
*** True Line Result
state.button.clicked_at = inputs.mouse.click.created_at # stores the time the click occurred
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << state.button.label~
- Inside source: true
*** True Line Result
outputs.labels << state.button.label
** Processing line: ~ outputs.borders << state.button.border~
- Inside source: true
*** True Line Result
outputs.borders << state.button.border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.button.clicked_at # if button was clicked (variable has a value and is not nil)~
- Inside source: true
*** True Line Result
if state.button.clicked_at # if button was clicked (variable has a value and is not nil)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The appearance of the button changes for 0.25 seconds after the time the button is clicked at.~
- Inside source: true
*** True Line Result
# The appearance of the button changes for 0.25 seconds after the time the button is clicked at.
** Processing line: ~ # The color changes (rgb is set to 0, 180, 80) and the transparency gradually changes.~
- Inside source: true
*** True Line Result
# The color changes (rgb is set to 0, 180, 80) and the transparency gradually changes.
** Processing line: ~ # Change 0.25 to 1.25 and notice that the transparency takes longer to return to normal.~
- Inside source: true
*** True Line Result
# Change 0.25 to 1.25 and notice that the transparency takes longer to return to normal.
** Processing line: ~ outputs.solids << [x, y, w, h, 0, 180, 80, 255 * state.button.clicked_at.ease(0.25.seconds, :flip)]~
- Inside source: true
*** True Line Result
outputs.solids << [x, y, w, h, 0, 180, 80, 255 * state.button.clicked_at.ease(0.25.seconds, :flip)]
** 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: ~ # Creates a new button by declaring it as a new entity, and sets values.~
- Inside source: true
*** True Line Result
# Creates a new button by declaring it as a new entity, and sets values.
** Processing line: ~ def new_button_prefab x, y, message~
- Inside source: true
*** True Line Result
def new_button_prefab x, y, message
** Processing line: ~ w, h = 300, 50~
- Inside source: true
*** True Line Result
w, h = 300, 50
** Processing line: ~ button = state.new_entity(:button_with_fade)~
- Inside source: true
*** True Line Result
button = state.new_entity(:button_with_fade)
** Processing line: ~ button.label = [x + w.half, y + h.half + 10, message, 0, 1] # '+ 10' keeps label's text within button's borders~
- Inside source: true
*** True Line Result
button.label = [x + w.half, y + h.half + 10, message, 0, 1] # '+ 10' keeps label's text within button's borders
** Processing line: ~ button.border = [x, y, w, h] # sets border definition~
- Inside source: true
*** True Line Result
button.border = [x, y, w, h] # sets border definition
** Processing line: ~ button~
- Inside source: true
*** True Line Result
button
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If the mouse has been clicked and the click's location is inside of the button's border, that means~
- Inside source: true
*** True Line Result
# If the mouse has been clicked and the click's location is inside of the button's border, that means
** Processing line: ~ # that the button has been clicked. This method returns a boolean value.~
- Inside source: true
*** True Line Result
# that the button has been clicked. This method returns a boolean value.
** Processing line: ~ def button_clicked? button~
- Inside source: true
*** True Line Result
def button_clicked? button
** Processing line: ~ inputs.mouse.click && inputs.mouse.click.point.inside_rect?(button.border)~
- Inside source: true
*** True Line Result
inputs.mouse.click && inputs.mouse.click.point.inside_rect?(button.border)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Determines if button was clicked, and changes its appearance if it is clicked~
- Inside source: true
*** True Line Result
# Determines if button was clicked, and changes its appearance if it is clicked
** Processing line: ~ def tick_button_prefab button~
- Inside source: true
*** True Line Result
def tick_button_prefab button
** Processing line: ~ outputs.labels << button.label # outputs button's label and border~
- Inside source: true
*** True Line Result
outputs.labels << button.label # outputs button's label and border
** Processing line: ~ outputs.borders << button.border~
- Inside source: true
*** True Line Result
outputs.borders << button.border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if button_clicked? button # if button is clicked~
- Inside source: true
*** True Line Result
if button_clicked? button # if button is clicked
** Processing line: ~ button.clicked_at = inputs.mouse.click.created_at # stores the time that the button was clicked~
- Inside source: true
*** True Line Result
button.clicked_at = inputs.mouse.click.created_at # stores the time that the button was clicked
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if button.clicked_at # if clicked_at has a frame value and is not nil~
- Inside source: true
*** True Line Result
if button.clicked_at # if clicked_at has a frame value and is not nil
** Processing line: ~ # button is output; color changes and transparency changes for 0.25 seconds after click occurs~
- Inside source: true
*** True Line Result
# button is output; color changes and transparency changes for 0.25 seconds after click occurs
** Processing line: ~ outputs.solids << [button.border.x, button.border.y, button.border.w, button.border.h,~
- Inside source: true
*** True Line Result
outputs.solids << [button.border.x, button.border.y, button.border.w, button.border.h,
** Processing line: ~ 0, 180, 80, 255 * button.clicked_at.ease(0.25.seconds, :flip)] # transparency changes for 0.25 seconds~
- Inside source: true
*** True Line Result
0, 180, 80, 255 * button.clicked_at.ease(0.25.seconds, :flip)] # transparency changes for 0.25 seconds
** 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: ~ # Exports the app's game state if the export button is clicked.~
- Inside source: true
*** True Line Result
# Exports the app's game state if the export button is clicked.
** Processing line: ~ def export_game_state_demo~
- Inside source: true
*** True Line Result
def export_game_state_demo
** Processing line: ~ state.export_game_state_button ||= new_button_prefab(460, 100, "click to export app state")~
- Inside source: true
*** True Line Result
state.export_game_state_button ||= new_button_prefab(460, 100, "click to export app state")
** Processing line: ~ tick_button_prefab(state.export_game_state_button) # calls method to output button~
- Inside source: true
*** True Line Result
tick_button_prefab(state.export_game_state_button) # calls method to output button
** Processing line: ~ if button_clicked? state.export_game_state_button # if the export button is clicked~
- Inside source: true
*** True Line Result
if button_clicked? state.export_game_state_button # if the export button is clicked
** Processing line: ~ args.gtk.export! "Exported from clicking the export button in the tech demo." # the export occurs~
- Inside source: true
*** True Line Result
args.gtk.export! "Exported from clicking the export button in the tech demo." # the export occurs
** 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: ~ # The mouse and keyboard focus are set to "yes" when the Dragonruby window is the active window.~
- Inside source: true
*** True Line Result
# The mouse and keyboard focus are set to "yes" when the Dragonruby window is the active window.
** Processing line: ~ def window_state_demo~
- Inside source: true
*** True Line Result
def window_state_demo
** Processing line: ~ m = $gtk.args.inputs.mouse.has_focus ? 'Y' : 'N' # ternary operator (similar to if statement)~
- Inside source: true
*** True Line Result
m = $gtk.args.inputs.mouse.has_focus ? 'Y' : 'N' # ternary operator (similar to if statement)
** Processing line: ~ k = $gtk.args.inputs.keyboard.has_focus ? 'Y' : 'N'~
- Inside source: true
*** True Line Result
k = $gtk.args.inputs.keyboard.has_focus ? 'Y' : 'N'
** Processing line: ~ outputs.labels << [460, 20, "mouse focus: #{m} keyboard focus: #{k}", small_font]~
- Inside source: true
*** True Line Result
outputs.labels << [460, 20, "mouse focus: #{m} keyboard focus: #{k}", small_font]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Sets values for the horizontal separator (divides demo sections)~
- Inside source: true
*** True Line Result
#Sets values for the horizontal separator (divides demo sections)
** Processing line: ~ def horizontal_seperator y, x, x2~
- Inside source: true
*** True Line Result
def horizontal_seperator y, x, x2
** Processing line: ~ [x, y, x2, y, 150, 150, 150]~
- Inside source: true
*** True Line Result
[x, y, x2, y, 150, 150, 150]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Sets the values for the vertical separator (divides demo sections)~
- Inside source: true
*** True Line Result
#Sets the values for the vertical separator (divides demo sections)
** Processing line: ~ def vertical_seperator x, y, y2~
- Inside source: true
*** True Line Result
def vertical_seperator x, y, y2
** Processing line: ~ [x, y, x, y2, 150, 150, 150]~
- Inside source: true
*** True Line Result
[x, y, x, y2, 150, 150, 150]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs vertical and horizontal separators onto the screen to separate each demo section.~
- Inside source: true
*** True Line Result
# Outputs vertical and horizontal separators onto the screen to separate each demo section.
** Processing line: ~ def render_seperators~
- Inside source: true
*** True Line Result
def render_seperators
** Processing line: ~ outputs.lines << horizontal_seperator(505, grid.left, 445)~
- Inside source: true
*** True Line Result
outputs.lines << horizontal_seperator(505, grid.left, 445)
** Processing line: ~ outputs.lines << horizontal_seperator(353, grid.left, 445)~
- Inside source: true
*** True Line Result
outputs.lines << horizontal_seperator(353, grid.left, 445)
** Processing line: ~ outputs.lines << horizontal_seperator(264, grid.left, 445)~
- Inside source: true
*** True Line Result
outputs.lines << horizontal_seperator(264, grid.left, 445)
** Processing line: ~ outputs.lines << horizontal_seperator(174, grid.left, 445)~
- Inside source: true
*** True Line Result
outputs.lines << horizontal_seperator(174, grid.left, 445)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.lines << vertical_seperator(445, grid.top, grid.bottom)~
- Inside source: true
*** True Line Result
outputs.lines << vertical_seperator(445, grid.top, grid.bottom)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.lines << horizontal_seperator(690, 445, 820)~
- Inside source: true
*** True Line Result
outputs.lines << horizontal_seperator(690, 445, 820)
** Processing line: ~ outputs.lines << horizontal_seperator(426, 445, 820)~
- Inside source: true
*** True Line Result
outputs.lines << horizontal_seperator(426, 445, 820)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.lines << vertical_seperator(820, grid.top, grid.bottom)~
- Inside source: true
*** True Line Result
outputs.lines << vertical_seperator(820, grid.top, grid.bottom)
** 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: ~ $tech_demo = TechDemo.new~
- Inside source: true
*** True Line Result
$tech_demo = TechDemo.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: ~ $tech_demo.inputs = args.inputs~
- Inside source: true
*** True Line Result
$tech_demo.inputs = args.inputs
** Processing line: ~ $tech_demo.state = args.state~
- Inside source: true
*** True Line Result
$tech_demo.state = args.state
** Processing line: ~ $tech_demo.grid = args.grid~
- Inside source: true
*** True Line Result
$tech_demo.grid = args.grid
** Processing line: ~ $tech_demo.args = args~
- Inside source: true
*** True Line Result
$tech_demo.args = args
** Processing line: ~ $tech_demo.outputs = args.render_target(:mini_map)~
- Inside source: true
*** True Line Result
$tech_demo.outputs = args.render_target(:mini_map)
** Processing line: ~ $tech_demo.tick~
- Inside source: true
*** True Line Result
$tech_demo.tick
** Processing line: ~ args.outputs.labels << [830, 715, "Render target:", [-2, 0, 0, 0, 0, 255]]~
- Inside source: true
*** True Line Result
args.outputs.labels << [830, 715, "Render target:", [-2, 0, 0, 0, 0, 255]]
** Processing line: ~ args.outputs.sprites << [0, 0, 1280, 720, :mini_map]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [0, 0, 1280, 720, :mini_map]
** Processing line: ~ args.outputs.sprites << [830, 300, 675, 379, :mini_map]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [830, 300, 675, 379, :mini_map]
** Processing line: ~ tick_instructions args, "Sample app shows all the rendering apis available."~
- Inside source: true
*** True Line Result
tick_instructions args, "Sample app shows all the rendering apis available."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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 - Render Primitive Hierarchies - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Rendering - Render Primitive Hierarchies - 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/04_render_primitive_hierarchies/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/07_advanced_rendering/04_render_primitive_hierarchies/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Nested array: An array whose individual elements are also arrays; useful for~
- Inside source: true
*** True Line Result
- Nested array: An array whose individual elements are also arrays; useful for
** Processing line: ~ storing groups of similar data. Also called multidimensional arrays.~
- Inside source: true
*** True Line Result
storing groups of similar data. Also called multidimensional arrays.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ In this sample app, we see nested arrays being used in object definitions.~
- Inside source: true
*** True Line Result
In this sample app, we see nested arrays being used in object definitions.
** Processing line: ~ Notice the parameters for solids, listed below. Parameters 1-3 set the~
- Inside source: true
*** True Line Result
Notice the parameters for solids, listed below. Parameters 1-3 set the
** Processing line: ~ definition for the rect, and parameter 4 sets the definition of the color.~
- Inside source: true
*** True Line Result
definition for the rect, and parameter 4 sets the definition of the color.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Instead of having a solid definition that looks like this,~
- Inside source: true
*** True Line Result
Instead of having a solid definition that looks like this,
** Processing line: ~ [X, Y, W, H, R, G, B]~
- Inside source: true
*** True Line Result
[X, Y, W, H, R, G, B]
** Processing line: ~ we can separate it into two separate array definitions in one, like this~
- Inside source: true
*** True Line Result
we can separate it into two separate array definitions in one, like this
** Processing line: ~ [[X, Y, W, H], [R, G, B]]~
- Inside source: true
*** True Line Result
[[X, Y, W, H], [R, G, B]]
** Processing line: ~ and both options work fine in defining our solid (or any object).~
- Inside source: true
*** True Line Result
and both options work fine in defining our solid (or any object).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Collections: Lists of data; useful for organizing large amounts of data.~
- Inside source: true
*** True Line Result
- Collections: Lists of data; useful for organizing large amounts of data.
** Processing line: ~ One element of a collection could be an array (which itself contains many elements).~
- Inside source: true
*** True Line Result
One element of a collection could be an array (which itself contains many elements).
** Processing line: ~ For example, a collection that stores two solid objects would look like this:~
- Inside source: true
*** True Line Result
For example, a collection that stores two solid objects would look like this:
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [100, 100, 50, 50, 0, 0, 0],~
- Inside source: true
*** True Line Result
[100, 100, 50, 50, 0, 0, 0],
** Processing line: ~ [100, 150, 50, 50, 255, 255, 255]~
- Inside source: true
*** True Line Result
[100, 150, 50, 50, 255, 255, 255]
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ If this collection was added to args.outputs.solids, two solids would be output~
- Inside source: true
*** True Line Result
If this collection was added to args.outputs.solids, two solids would be output
** Processing line: ~ next to each other, one black and one white.~
- Inside source: true
*** True Line Result
next to each other, one black and one white.
** Processing line: ~ Nested arrays can be used in collections, as you will see in this sample app.~
- Inside source: true
*** True Line Result
Nested arrays can be used in collections, as you will see in this sample app.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
- Inside source: true
*** True Line Result
- args.outputs.solids: An array. The values generate a solid.
** Processing line: ~ The parameters for a solid are~
- Inside source: true
*** True Line Result
The parameters for a solid are
** Processing line: ~ 1. The position on the screen (x, y)~
- Inside source: true
*** True Line Result
1. The position on the screen (x, y)
** Processing line: ~ 2. The width (w)~
- Inside source: true
*** True Line Result
2. The width (w)
** Processing line: ~ 3. The height (h)~
- Inside source: true
*** True Line Result
3. The height (h)
** Processing line: ~ 4. The color (r, g, b) (if a color is not assigned, the object's default color will be black)~
- Inside source: true
*** True Line Result
4. The color (r, g, b) (if a color is not assigned, the object's default color will be black)
** Processing line: ~ NOTE: THE PARAMETERS ARE THE SAME FOR BORDERS!~
- Inside source: true
*** True Line Result
NOTE: THE PARAMETERS ARE THE SAME FOR BORDERS!
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Here is an example of a (red) border or solid definition:~
- Inside source: true
*** True Line Result
Here is an example of a (red) border or solid definition:
** Processing line: ~ [100, 100, 400, 500, 255, 0, 0]~
- Inside source: true
*** True Line Result
[100, 100, 400, 500, 255, 0, 0]
** Processing line: ~ It will be a solid or border depending on if it is added to args.outputs.solids or args.outputs.borders.~
- Inside source: true
*** True Line Result
It will be a solid or border depending on if it is added to args.outputs.solids or args.outputs.borders.
** Processing line: ~ For more information about solids and borders, go to mygame/documentation/03-solids-and-borders.md.~
- Inside source: true
*** True Line Result
For more information about solids and borders, go to mygame/documentation/03-solids-and-borders.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.sprites: An array. The values generate a sprite.~
- Inside source: true
*** True Line Result
- args.outputs.sprites: An array. The values generate a sprite.
** Processing line: ~ The parameters for sprites are~
- Inside source: true
*** True Line Result
The parameters for sprites are
** Processing line: ~ 1. The position on the screen (x, y)~
- Inside source: true
*** True Line Result
1. The position on the screen (x, y)
** Processing line: ~ 2. The width (w)~
- Inside source: true
*** True Line Result
2. The width (w)
** Processing line: ~ 3. The height (h)~
- Inside source: true
*** True Line Result
3. The height (h)
** Processing line: ~ 4. The image path (p)~
- Inside source: true
*** True Line Result
4. The image path (p)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Here is an example of a sprite definition:~
- Inside source: true
*** True Line Result
Here is an example of a sprite definition:
** Processing line: ~ [100, 100, 400, 500, 'sprites/dragonruby.png']~
- Inside source: true
*** True Line Result
[100, 100, 400, 500, 'sprites/dragonruby.png']
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
- Inside source: true
*** True Line Result
For more information about sprites, go to mygame/documentation/05-sprites.md.
** 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: ~ # This code demonstrates the creation and output of objects like sprites, borders, and solids~
- Inside source: true
*** True Line Result
# This code demonstrates the creation and output of objects like sprites, borders, and solids
** Processing line: ~ # If filled in, they are solids~
- Inside source: true
*** True Line Result
# If filled in, they are solids
** Processing line: ~ # If hollow, they are borders~
- Inside source: true
*** True Line Result
# If hollow, they are borders
** Processing line: ~ # If images, they are sprites~
- Inside source: true
*** True Line Result
# If images, they are sprites
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Solids are added to args.outputs.solids~
- Inside source: true
*** True Line Result
# Solids are added to args.outputs.solids
** Processing line: ~ # Borders are added to args.outputs.borders~
- Inside source: true
*** True Line Result
# Borders are added to args.outputs.borders
** Processing line: ~ # Sprites are added to args.outputs.sprites~
- Inside source: true
*** True Line Result
# Sprites are added to args.outputs.sprites
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The tick method runs 60 frames every second.~
- Inside source: true
*** True Line Result
# The tick method runs 60 frames every second.
** Processing line: ~ # Your game is going to happen under this one function.~
- Inside source: true
*** True Line Result
# Your game is going to happen under this one function.
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ border_as_solid_and_solid_as_border args~
- Inside source: true
*** True Line Result
border_as_solid_and_solid_as_border args
** Processing line: ~ sprite_as_border_or_solids args~
- Inside source: true
*** True Line Result
sprite_as_border_or_solids args
** Processing line: ~ collection_of_borders_and_solids args~
- Inside source: true
*** True Line Result
collection_of_borders_and_solids args
** Processing line: ~ collection_of_sprites args~
- Inside source: true
*** True Line Result
collection_of_sprites args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Shows a border being output onto the screen as a border and a solid~
- Inside source: true
*** True Line Result
# Shows a border being output onto the screen as a border and a solid
** Processing line: ~ # Also shows how colors can be set~
- Inside source: true
*** True Line Result
# Also shows how colors can be set
** Processing line: ~ def border_as_solid_and_solid_as_border args~
- Inside source: true
*** True Line Result
def border_as_solid_and_solid_as_border args
** Processing line: ~ border = [0, 0, 50, 50]~
- Inside source: true
*** True Line Result
border = [0, 0, 50, 50]
** Processing line: ~ args.outputs.borders << border~
- Inside source: true
*** True Line Result
args.outputs.borders << border
** Processing line: ~ args.outputs.solids << border~
- Inside source: true
*** True Line Result
args.outputs.solids << border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Red, green, blue saturations (last three parameters) can be any number between 0 and 255~
- Inside source: true
*** True Line Result
# Red, green, blue saturations (last three parameters) can be any number between 0 and 255
** Processing line: ~ border_with_color = [0, 100, 50, 50, 255, 0, 0]~
- Inside source: true
*** True Line Result
border_with_color = [0, 100, 50, 50, 255, 0, 0]
** Processing line: ~ args.outputs.borders << border_with_color~
- Inside source: true
*** True Line Result
args.outputs.borders << border_with_color
** Processing line: ~ args.outputs.solids << border_with_color~
- Inside source: true
*** True Line Result
args.outputs.solids << border_with_color
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ border_with_nested_color = [0, 200, 50, 50, [0, 255, 0]] # nested color~
- Inside source: true
*** True Line Result
border_with_nested_color = [0, 200, 50, 50, [0, 255, 0]] # nested color
** Processing line: ~ args.outputs.borders << border_with_nested_color~
- Inside source: true
*** True Line Result
args.outputs.borders << border_with_nested_color
** Processing line: ~ args.outputs.solids << border_with_nested_color~
- Inside source: true
*** True Line Result
args.outputs.solids << border_with_nested_color
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ border_with_nested_rect = [[0, 300, 50, 50], 0, 0, 255] # nested rect~
- Inside source: true
*** True Line Result
border_with_nested_rect = [[0, 300, 50, 50], 0, 0, 255] # nested rect
** Processing line: ~ args.outputs.borders << border_with_nested_rect~
- Inside source: true
*** True Line Result
args.outputs.borders << border_with_nested_rect
** Processing line: ~ args.outputs.solids << border_with_nested_rect~
- Inside source: true
*** True Line Result
args.outputs.solids << border_with_nested_rect
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ border_with_nested_color_and_rect = [[0, 400, 50, 50], [255, 0, 255]] # nested rect and color~
- Inside source: true
*** True Line Result
border_with_nested_color_and_rect = [[0, 400, 50, 50], [255, 0, 255]] # nested rect and color
** Processing line: ~ args.outputs.borders << border_with_nested_color_and_rect~
- Inside source: true
*** True Line Result
args.outputs.borders << border_with_nested_color_and_rect
** Processing line: ~ args.outputs.solids << border_with_nested_color_and_rect~
- Inside source: true
*** True Line Result
args.outputs.solids << border_with_nested_color_and_rect
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Shows a sprite output onto the screen as a sprite, border, and solid~
- Inside source: true
*** True Line Result
# Shows a sprite output onto the screen as a sprite, border, and solid
** Processing line: ~ # Demonstrates that all three outputs appear differently on screen~
- Inside source: true
*** True Line Result
# Demonstrates that all three outputs appear differently on screen
** Processing line: ~ def sprite_as_border_or_solids args~
- Inside source: true
*** True Line Result
def sprite_as_border_or_solids args
** Processing line: ~ sprite = [100, 0, 50, 50, 'sprites/ship.png']~
- Inside source: true
*** True Line Result
sprite = [100, 0, 50, 50, 'sprites/ship.png']
** Processing line: ~ args.outputs.sprites << sprite~
- Inside source: true
*** True Line Result
args.outputs.sprites << sprite
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sprite_as_border variable has same parameters (excluding position) as above object,~
- Inside source: true
*** True Line Result
# Sprite_as_border variable has same parameters (excluding position) as above object,
** Processing line: ~ # but will appear differently on screen because it is added to args.outputs.borders~
- Inside source: true
*** True Line Result
# but will appear differently on screen because it is added to args.outputs.borders
** Processing line: ~ sprite_as_border = [100, 100, 50, 50, 'sprites/ship.png']~
- Inside source: true
*** True Line Result
sprite_as_border = [100, 100, 50, 50, 'sprites/ship.png']
** Processing line: ~ args.outputs.borders << sprite_as_border~
- Inside source: true
*** True Line Result
args.outputs.borders << sprite_as_border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sprite_as_solid variable has same parameters (excluding position) as above object,~
- Inside source: true
*** True Line Result
# Sprite_as_solid variable has same parameters (excluding position) as above object,
** Processing line: ~ # but will appear differently on screen because it is added to args.outputs.solids~
- Inside source: true
*** True Line Result
# but will appear differently on screen because it is added to args.outputs.solids
** Processing line: ~ sprite_as_solid = [100, 200, 50, 50, 'sprites/ship.png']~
- Inside source: true
*** True Line Result
sprite_as_solid = [100, 200, 50, 50, 'sprites/ship.png']
** Processing line: ~ args.outputs.solids << sprite_as_solid~
- Inside source: true
*** True Line Result
args.outputs.solids << sprite_as_solid
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Holds and outputs a collection of borders and a collection of solids~
- Inside source: true
*** True Line Result
# Holds and outputs a collection of borders and a collection of solids
** Processing line: ~ # Collections are created by using arrays to hold parameters of each individual object~
- Inside source: true
*** True Line Result
# Collections are created by using arrays to hold parameters of each individual object
** Processing line: ~ def collection_of_borders_and_solids args~
- Inside source: true
*** True Line Result
def collection_of_borders_and_solids args
** Processing line: ~ collection_borders = [~
- Inside source: true
*** True Line Result
collection_borders = [
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [200, 0, 50, 50], # black border~
- Inside source: true
*** True Line Result
[200, 0, 50, 50], # black border
** Processing line: ~ [200, 100, 50, 50, 255, 0, 0], # red border~
- Inside source: true
*** True Line Result
[200, 100, 50, 50, 255, 0, 0], # red border
** Processing line: ~ [200, 200, 50, 50, [0, 255, 0]], # nested color~
- Inside source: true
*** True Line Result
[200, 200, 50, 50, [0, 255, 0]], # nested color
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ [[200, 300, 50, 50], 0, 0, 255], # nested rect~
- Inside source: true
*** True Line Result
[[200, 300, 50, 50], 0, 0, 255], # nested rect
** Processing line: ~ [[200, 400, 50, 50], [255, 0, 255]] # nested rect and nested color~
- Inside source: true
*** True Line Result
[[200, 400, 50, 50], [255, 0, 255]] # nested rect and nested color
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.borders << collection_borders~
- Inside source: true
*** True Line Result
args.outputs.borders << collection_borders
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ collection_solids = [~
- Inside source: true
*** True Line Result
collection_solids = [
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [[300, 300, 50, 50], 0, 0, 255], # nested rect~
- Inside source: true
*** True Line Result
[[300, 300, 50, 50], 0, 0, 255], # nested rect
** Processing line: ~ [[300, 400, 50, 50], [255, 0, 255]] # nested rect and nested color~
- Inside source: true
*** True Line Result
[[300, 400, 50, 50], [255, 0, 255]] # nested rect and nested color
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ [300, 0, 50, 50],~
- Inside source: true
*** True Line Result
[300, 0, 50, 50],
** Processing line: ~ [300, 100, 50, 50, 255, 0, 0],~
- Inside source: true
*** True Line Result
[300, 100, 50, 50, 255, 0, 0],
** Processing line: ~ [300, 200, 50, 50, [0, 255, 0]], # nested color~
- Inside source: true
*** True Line Result
[300, 200, 50, 50, [0, 255, 0]], # nested color
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.solids << collection_solids~
- Inside source: true
*** True Line Result
args.outputs.solids << collection_solids
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Holds and outputs a collection of sprites by adding it to args.outputs.sprites~
- Inside source: true
*** True Line Result
# Holds and outputs a collection of sprites by adding it to args.outputs.sprites
** Processing line: ~ # Also outputs a collection with same parameters (excluding position) by adding~
- Inside source: true
*** True Line Result
# Also outputs a collection with same parameters (excluding position) by adding
** Processing line: ~ # it to args.outputs.solids and another to args.outputs.borders~
- Inside source: true
*** True Line Result
# it to args.outputs.solids and another to args.outputs.borders
** Processing line: ~ def collection_of_sprites args~
- Inside source: true
*** True Line Result
def collection_of_sprites args
** Processing line: ~ sprites_collection = [~
- Inside source: true
*** True Line Result
sprites_collection = [
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [400, 0, 50, 50, 'sprites/ship.png'],~
- Inside source: true
*** True Line Result
[400, 0, 50, 50, 'sprites/ship.png'],
** Processing line: ~ [400, 100, 50, 50, 'sprites/ship.png'],~
- Inside source: true
*** True Line Result
[400, 100, 50, 50, 'sprites/ship.png'],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ [400, 200, 50, 50, 'sprites/ship.png']~
- Inside source: true
*** True Line Result
[400, 200, 50, 50, 'sprites/ship.png']
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.sprites << sprites_collection~
- Inside source: true
*** True Line Result
args.outputs.sprites << sprites_collection
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.solids << [~
- Inside source: true
*** True Line Result
args.outputs.solids << [
** Processing line: ~ [500, 0, 50, 50, 'sprites/ship.png'],~
- Inside source: true
*** True Line Result
[500, 0, 50, 50, 'sprites/ship.png'],
** Processing line: ~ [500, 100, 50, 50, 'sprites/ship.png'],~
- Inside source: true
*** True Line Result
[500, 100, 50, 50, 'sprites/ship.png'],
** Processing line: ~ [[[500, 200, 50, 50, 'sprites/ship.png']]]~
- Inside source: true
*** True Line Result
[[[500, 200, 50, 50, 'sprites/ship.png']]]
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.borders << [~
- Inside source: true
*** True Line Result
args.outputs.borders << [
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [600, 0, 50, 50, 'sprites/ship.png'],~
- Inside source: true
*** True Line Result
[600, 0, 50, 50, 'sprites/ship.png'],
** Processing line: ~ [600, 100, 50, 50, 'sprites/ship.png'],~
- Inside source: true
*** True Line Result
[600, 100, 50, 50, 'sprites/ship.png'],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ [600, 200, 50, 50, 'sprites/ship.png']~
- Inside source: true
*** True Line Result
[600, 200, 50, 50, 'sprites/ship.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: ~#+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 - Render Primitives As Hash - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Rendering - Render Primitives As Hash - 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/05_render_primitives_as_hash/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/07_advanced_rendering/05_render_primitives_as_hash/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The value can be found~
- Inside source: true
*** True Line Result
- Hashes: Collection of unique keys and their corresponding values. The value can be found
** Processing line: ~ using their keys.~
- Inside source: true
*** True Line Result
using their keys.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ For example, if we have a "numbers" hash that stores numbers in English as the~
- Inside source: true
*** True Line Result
For example, if we have a "numbers" hash that stores numbers in English as the
** Processing line: ~ key and numbers in Spanish as the value, we'd have a hash that looks like this...~
- Inside source: true
*** True Line Result
key and numbers in Spanish as the value, we'd have a hash that looks like this...
** Processing line: ~ numbers = { "one" => "uno", "two" => "dos", "three" => "tres" }~
- Inside source: true
*** True Line Result
numbers = { "one" => "uno", "two" => "dos", "three" => "tres" }
** Processing line: ~ and on it goes.~
- Inside source: true
*** True Line Result
and on it goes.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Now if we wanted to find the corresponding value of the "one" key, we could say~
- Inside source: true
*** True Line Result
Now if we wanted to find the corresponding value of the "one" key, we could say
** Processing line: ~ puts numbers["one"]~
- Inside source: true
*** True Line Result
puts numbers["one"]
** Processing line: ~ which would print "uno" to the console.~
- Inside source: true
*** True Line Result
which would print "uno" to the console.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.sprites: An array. The values generate a sprite.~
- Inside source: true
*** True Line Result
- args.outputs.sprites: An array. The values generate a sprite.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, PATH, ANGLE, ALPHA, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, PATH, ANGLE, ALPHA, RED, GREEN, BLUE]
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
- Inside source: true
*** True Line Result
For more information about sprites, go to mygame/documentation/05-sprites.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. The values generate a label.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
- Inside source: true
*** True Line Result
- args.outputs.solids: An array. The values generate a solid.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE, ALPHA]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE, ALPHA]
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
- Inside source: true
*** True Line Result
For more information about solids, go to mygame/documentation/03-solids-and-borders.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.borders: An array. The values generate a border.~
- Inside source: true
*** True Line Result
- args.outputs.borders: An array. The values generate a border.
** Processing line: ~ The parameters are the same as a solid.~
- Inside source: true
*** True Line Result
The parameters are the same as a solid.
** Processing line: ~ For more information about borders, go to mygame/documentation/03-solids-and-borders.md.~
- Inside source: true
*** True Line Result
For more information about borders, go to mygame/documentation/03-solids-and-borders.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.lines: An array. The values generate a line.~
- Inside source: true
*** True Line Result
- args.outputs.lines: An array. The values generate a line.
** Processing line: ~ The parameters are [X1, Y1, X2, Y2, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters are [X1, Y1, X2, Y2, RED, GREEN, BLUE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** 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: ~ # This sample app demonstrates how hashes can be used to output different kinds of objects.~
- Inside source: true
*** True Line Result
# This sample app demonstrates how hashes can be used to output different kinds of objects.
** 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.angle ||= 0 # initializes angle to 0~
- Inside source: true
*** True Line Result
args.state.angle ||= 0 # initializes angle to 0
** Processing line: ~ args.state.angle += 1 # increments angle by 1 every frame (60 times a second)~
- Inside source: true
*** True Line Result
args.state.angle += 1 # increments angle by 1 every frame (60 times a second)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs sprite using a hash~
- Inside source: true
*** True Line Result
# Outputs sprite using a hash
** Processing line: ~ args.outputs.sprites << {~
- Inside source: true
*** True Line Result
args.outputs.sprites << {
** Processing line: ~ x: 30, # sprite position~
- Inside source: true
*** True Line Result
x: 30, # sprite position
** Processing line: ~ y: 550,~
- Inside source: true
*** True Line Result
y: 550,
** Processing line: ~ w: 128, # sprite size~
- Inside source: true
*** True Line Result
w: 128, # sprite size
** Processing line: ~ h: 101,~
- Inside source: true
*** True Line Result
h: 101,
** Processing line: ~ path: "dragonruby.png", # image path~
- Inside source: true
*** True Line Result
path: "dragonruby.png", # image path
** Processing line: ~ angle: args.state.angle, # angle~
- Inside source: true
*** True Line Result
angle: args.state.angle, # angle
** Processing line: ~ a: 255, # alpha (transparency)~
- Inside source: true
*** True Line Result
a: 255, # alpha (transparency)
** Processing line: ~ r: 255, # color saturation~
- Inside source: true
*** True Line Result
r: 255, # color saturation
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 255,~
- Inside source: true
*** True Line Result
b: 255,
** Processing line: ~ tile_x: 0, # sprite sub division/tile~
- Inside source: true
*** True Line Result
tile_x: 0, # sprite sub division/tile
** Processing line: ~ tile_y: 0,~
- Inside source: true
*** True Line Result
tile_y: 0,
** Processing line: ~ tile_w: -1,~
- Inside source: true
*** True Line Result
tile_w: -1,
** Processing line: ~ tile_h: -1,~
- Inside source: true
*** True Line Result
tile_h: -1,
** Processing line: ~ flip_vertically: false, # don't flip sprite~
- Inside source: true
*** True Line Result
flip_vertically: false, # don't flip sprite
** Processing line: ~ flip_horizontally: false,~
- Inside source: true
*** True Line Result
flip_horizontally: false,
** Processing line: ~ angle_anchor_x: 0.5, # rotation center set to middle~
- Inside source: true
*** True Line Result
angle_anchor_x: 0.5, # rotation center set to middle
** Processing line: ~ angle_anchor_y: 0.5~
- Inside source: true
*** True Line Result
angle_anchor_y: 0.5
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs label using a hash~
- Inside source: true
*** True Line Result
# Outputs label using a hash
** Processing line: ~ args.outputs.labels << {~
- Inside source: true
*** True Line Result
args.outputs.labels << {
** Processing line: ~ x: 200, # label position~
- Inside source: true
*** True Line Result
x: 200, # label position
** Processing line: ~ y: 550,~
- Inside source: true
*** True Line Result
y: 550,
** Processing line: ~ text: "dragonruby", # label text~
- Inside source: true
*** True Line Result
text: "dragonruby", # label text
** Processing line: ~ size_enum: 2,~
- Inside source: true
*** True Line Result
size_enum: 2,
** Processing line: ~ alignment_enum: 1,~
- Inside source: true
*** True Line Result
alignment_enum: 1,
** Processing line: ~ r: 155, # color saturation~
- Inside source: true
*** True Line Result
r: 155, # color saturation
** Processing line: ~ g: 50,~
- Inside source: true
*** True Line Result
g: 50,
** Processing line: ~ b: 50,~
- Inside source: true
*** True Line Result
b: 50,
** Processing line: ~ a: 255, # transparency~
- Inside source: true
*** True Line Result
a: 255, # transparency
** Processing line: ~ font: "fonts/manaspc.ttf" # font style; without mentioned file, label won't output correctly~
- Inside source: true
*** True Line Result
font: "fonts/manaspc.ttf" # font style; without mentioned file, label won't output correctly
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs solid using a hash~
- Inside source: true
*** True Line Result
# Outputs solid using a hash
** Processing line: ~ # [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE, ALPHA]~
- Inside source: true
*** True Line Result
# [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE, ALPHA]
** Processing line: ~ args.outputs.solids << {~
- Inside source: true
*** True Line Result
args.outputs.solids << {
** Processing line: ~ x: 400, # position~
- Inside source: true
*** True Line Result
x: 400, # position
** Processing line: ~ y: 550,~
- Inside source: true
*** True Line Result
y: 550,
** Processing line: ~ w: 160, # size~
- Inside source: true
*** True Line Result
w: 160, # size
** Processing line: ~ h: 90,~
- Inside source: true
*** True Line Result
h: 90,
** Processing line: ~ r: 120, # color saturation~
- Inside source: true
*** True Line Result
r: 120, # color saturation
** Processing line: ~ g: 50,~
- Inside source: true
*** True Line Result
g: 50,
** Processing line: ~ b: 50,~
- Inside source: true
*** True Line Result
b: 50,
** Processing line: ~ a: 255 # transparency~
- Inside source: true
*** True Line Result
a: 255 # transparency
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs border using a hash~
- Inside source: true
*** True Line Result
# Outputs border using a hash
** Processing line: ~ # Same parameters as a solid~
- Inside source: true
*** True Line Result
# Same parameters as a solid
** Processing line: ~ args.outputs.borders << {~
- Inside source: true
*** True Line Result
args.outputs.borders << {
** Processing line: ~ x: 600,~
- Inside source: true
*** True Line Result
x: 600,
** Processing line: ~ y: 550,~
- Inside source: true
*** True Line Result
y: 550,
** Processing line: ~ w: 160,~
- Inside source: true
*** True Line Result
w: 160,
** Processing line: ~ h: 90,~
- Inside source: true
*** True Line Result
h: 90,
** Processing line: ~ r: 120,~
- Inside source: true
*** True Line Result
r: 120,
** Processing line: ~ g: 50,~
- Inside source: true
*** True Line Result
g: 50,
** Processing line: ~ b: 50,~
- Inside source: true
*** True Line Result
b: 50,
** Processing line: ~ a: 255~
- Inside source: true
*** True Line Result
a: 255
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs line using a hash~
- Inside source: true
*** True Line Result
# Outputs line using a hash
** Processing line: ~ args.outputs.lines << {~
- Inside source: true
*** True Line Result
args.outputs.lines << {
** Processing line: ~ x: 900, # starting position~
- Inside source: true
*** True Line Result
x: 900, # starting position
** Processing line: ~ y: 550,~
- Inside source: true
*** True Line Result
y: 550,
** Processing line: ~ x2: 1200, # ending position~
- Inside source: true
*** True Line Result
x2: 1200, # ending position
** Processing line: ~ y2: 550,~
- Inside source: true
*** True Line Result
y2: 550,
** Processing line: ~ r: 120, # color saturation~
- Inside source: true
*** True Line Result
r: 120, # color saturation
** Processing line: ~ g: 50,~
- Inside source: true
*** True Line Result
g: 50,
** Processing line: ~ b: 50,~
- Inside source: true
*** True Line Result
b: 50,
** Processing line: ~ a: 255 # transparency~
- Inside source: true
*** True Line Result
a: 255 # transparency
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs sprite as a primitive using a hash~
- Inside source: true
*** True Line Result
# Outputs sprite as a primitive using a hash
** Processing line: ~ args.outputs.primitives << {~
- Inside source: true
*** True Line Result
args.outputs.primitives << {
** Processing line: ~ x: 30, # position~
- Inside source: true
*** True Line Result
x: 30, # position
** Processing line: ~ y: 200,~
- Inside source: true
*** True Line Result
y: 200,
** Processing line: ~ w: 128, # size~
- Inside source: true
*** True Line Result
w: 128, # size
** Processing line: ~ h: 101,~
- Inside source: true
*** True Line Result
h: 101,
** Processing line: ~ path: "dragonruby.png", # image path~
- Inside source: true
*** True Line Result
path: "dragonruby.png", # image path
** Processing line: ~ angle: args.state.angle, # angle~
- Inside source: true
*** True Line Result
angle: args.state.angle, # angle
** Processing line: ~ a: 255, # transparency~
- Inside source: true
*** True Line Result
a: 255, # transparency
** Processing line: ~ r: 255, # color saturation~
- Inside source: true
*** True Line Result
r: 255, # color saturation
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 255,~
- Inside source: true
*** True Line Result
b: 255,
** Processing line: ~ tile_x: 0, # sprite sub division/tile~
- Inside source: true
*** True Line Result
tile_x: 0, # sprite sub division/tile
** Processing line: ~ tile_y: 0,~
- Inside source: true
*** True Line Result
tile_y: 0,
** Processing line: ~ tile_w: -1,~
- Inside source: true
*** True Line Result
tile_w: -1,
** Processing line: ~ tile_h: -1,~
- Inside source: true
*** True Line Result
tile_h: -1,
** Processing line: ~ flip_vertically: false, # don't flip~
- Inside source: true
*** True Line Result
flip_vertically: false, # don't flip
** Processing line: ~ flip_horizontally: false,~
- Inside source: true
*** True Line Result
flip_horizontally: false,
** Processing line: ~ angle_anchor_x: 0.5, # rotation center set to middle~
- Inside source: true
*** True Line Result
angle_anchor_x: 0.5, # rotation center set to middle
** Processing line: ~ angle_anchor_y: 0.5~
- Inside source: true
*** True Line Result
angle_anchor_y: 0.5
** Processing line: ~ }.sprite~
- Inside source: true
*** True Line Result
}.sprite
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs label as primitive using a hash~
- Inside source: true
*** True Line Result
# Outputs label as primitive using a hash
** Processing line: ~ args.outputs.primitives << {~
- Inside source: true
*** True Line Result
args.outputs.primitives << {
** Processing line: ~ x: 200, # position~
- Inside source: true
*** True Line Result
x: 200, # position
** Processing line: ~ y: 200,~
- Inside source: true
*** True Line Result
y: 200,
** Processing line: ~ text: "dragonruby", # text~
- Inside source: true
*** True Line Result
text: "dragonruby", # text
** Processing line: ~ size: 2,~
- Inside source: true
*** True Line Result
size: 2,
** Processing line: ~ alignment: 1,~
- Inside source: true
*** True Line Result
alignment: 1,
** Processing line: ~ r: 155, # color saturation~
- Inside source: true
*** True Line Result
r: 155, # color saturation
** Processing line: ~ g: 50,~
- Inside source: true
*** True Line Result
g: 50,
** Processing line: ~ b: 50,~
- Inside source: true
*** True Line Result
b: 50,
** Processing line: ~ a: 255, # transparency~
- Inside source: true
*** True Line Result
a: 255, # transparency
** Processing line: ~ font: "fonts/manaspc.ttf" # font style~
- Inside source: true
*** True Line Result
font: "fonts/manaspc.ttf" # font style
** Processing line: ~ }.label~
- Inside source: true
*** True Line Result
}.label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs solid as primitive using a hash~
- Inside source: true
*** True Line Result
# Outputs solid as primitive using a hash
** Processing line: ~ args.outputs.primitives << {~
- Inside source: true
*** True Line Result
args.outputs.primitives << {
** Processing line: ~ x: 400, # position~
- Inside source: true
*** True Line Result
x: 400, # position
** Processing line: ~ y: 200,~
- Inside source: true
*** True Line Result
y: 200,
** Processing line: ~ w: 160, # size~
- Inside source: true
*** True Line Result
w: 160, # size
** Processing line: ~ h: 90,~
- Inside source: true
*** True Line Result
h: 90,
** Processing line: ~ r: 120, # color saturation~
- Inside source: true
*** True Line Result
r: 120, # color saturation
** Processing line: ~ g: 50,~
- Inside source: true
*** True Line Result
g: 50,
** Processing line: ~ b: 50,~
- Inside source: true
*** True Line Result
b: 50,
** Processing line: ~ a: 255 # transparency~
- Inside source: true
*** True Line Result
a: 255 # transparency
** Processing line: ~ }.solid~
- Inside source: true
*** True Line Result
}.solid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs border as primitive using a hash~
- Inside source: true
*** True Line Result
# Outputs border as primitive using a hash
** Processing line: ~ # Same parameters as solid~
- Inside source: true
*** True Line Result
# Same parameters as solid
** Processing line: ~ args.outputs.primitives << {~
- Inside source: true
*** True Line Result
args.outputs.primitives << {
** Processing line: ~ x: 600, # position~
- Inside source: true
*** True Line Result
x: 600, # position
** Processing line: ~ y: 200,~
- Inside source: true
*** True Line Result
y: 200,
** Processing line: ~ w: 160, # size~
- Inside source: true
*** True Line Result
w: 160, # size
** Processing line: ~ h: 90,~
- Inside source: true
*** True Line Result
h: 90,
** Processing line: ~ r: 120, # color saturation~
- Inside source: true
*** True Line Result
r: 120, # color saturation
** Processing line: ~ g: 50,~
- Inside source: true
*** True Line Result
g: 50,
** Processing line: ~ b: 50,~
- Inside source: true
*** True Line Result
b: 50,
** Processing line: ~ a: 255 # transparency~
- Inside source: true
*** True Line Result
a: 255 # transparency
** Processing line: ~ }.border~
- Inside source: true
*** True Line Result
}.border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs line as primitive using a hash~
- Inside source: true
*** True Line Result
# Outputs line as primitive using a hash
** Processing line: ~ args.outputs.primitives << {~
- Inside source: true
*** True Line Result
args.outputs.primitives << {
** Processing line: ~ x: 900, # starting position~
- Inside source: true
*** True Line Result
x: 900, # starting position
** Processing line: ~ y: 200,~
- Inside source: true
*** True Line Result
y: 200,
** Processing line: ~ x2: 1200, # ending position~
- Inside source: true
*** True Line Result
x2: 1200, # ending position
** Processing line: ~ y2: 200,~
- Inside source: true
*** True Line Result
y2: 200,
** Processing line: ~ r: 120, # color saturation~
- Inside source: true
*** True Line Result
r: 120, # color saturation
** Processing line: ~ g: 50,~
- Inside source: true
*** True Line Result
g: 50,
** Processing line: ~ b: 50,~
- Inside source: true
*** True Line Result
b: 50,
** Processing line: ~ a: 255 # transparency~
- Inside source: true
*** True Line Result
a: 255 # transparency
** Processing line: ~ }.line~
- Inside source: true
*** True Line Result
}.line
** 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: ~* Tweening Lerping Easing Functions - Easing Functions - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Tweening Lerping Easing Functions - Easing Functions - 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/08_tweening_lerping_easing_functions/01_easing_functions/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/08_tweening_lerping_easing_functions/01_easing_functions/app/main.rb
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # STOP! Watch the following presentation first!!!!~
- Inside source: true
*** True Line Result
# STOP! Watch the following presentation first!!!!
** Processing line: ~ # Math for Game Programmers: Fast and Funky 1D Nonlinear Transformations~
- Inside source: true
*** True Line Result
# Math for Game Programmers: Fast and Funky 1D Nonlinear Transformations
** Processing line: ~ # https://www.youtube.com/watch?v=mr5xkf6zSzk~
- Inside source: true
*** True Line Result
# https://www.youtube.com/watch?v=mr5xkf6zSzk
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # You've watched the talk, yes? YES???~
- Inside source: true
*** True Line Result
# You've watched the talk, yes? YES???
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # define starting and ending points of properties to animate~
- Inside source: true
*** True Line Result
# define starting and ending points of properties to animate
** Processing line: ~ args.state.target_x = 1180~
- Inside source: true
*** True Line Result
args.state.target_x = 1180
** Processing line: ~ args.state.target_y = 620~
- Inside source: true
*** True Line Result
args.state.target_y = 620
** Processing line: ~ args.state.target_w = 100~
- Inside source: true
*** True Line Result
args.state.target_w = 100
** Processing line: ~ args.state.target_h = 100~
- Inside source: true
*** True Line Result
args.state.target_h = 100
** Processing line: ~ args.state.starting_x = 0~
- Inside source: true
*** True Line Result
args.state.starting_x = 0
** Processing line: ~ args.state.starting_y = 0~
- Inside source: true
*** True Line Result
args.state.starting_y = 0
** Processing line: ~ args.state.starting_w = 300~
- Inside source: true
*** True Line Result
args.state.starting_w = 300
** Processing line: ~ args.state.starting_h = 300~
- Inside source: true
*** True Line Result
args.state.starting_h = 300
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # define start time and duration of animation~
- Inside source: true
*** True Line Result
# define start time and duration of animation
** Processing line: ~ args.state.start_animate_at = 3.seconds # this is the same as writing 60 * 5 (or 300)~
- Inside source: true
*** True Line Result
args.state.start_animate_at = 3.seconds # this is the same as writing 60 * 5 (or 300)
** Processing line: ~ args.state.duration = 2.seconds # this is the same as writing 60 * 2 (or 120)~
- Inside source: true
*** True Line Result
args.state.duration = 2.seconds # this is the same as writing 60 * 2 (or 120)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # define type of animations~
- Inside source: true
*** True Line Result
# define type of animations
** Processing line: ~ # Here are all the options you have for values you can put in the array:~
- Inside source: true
*** True Line Result
# Here are all the options you have for values you can put in the array:
** Processing line: ~ # :identity, :quad, :cube, :quart, :quint, :flip~
- Inside source: true
*** True Line Result
# :identity, :quad, :cube, :quart, :quint, :flip
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Linear is defined as:~
- Inside source: true
*** True Line Result
# Linear is defined as:
** Processing line: ~ # [:identity]~
- Inside source: true
*** True Line Result
# [:identity]
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # Smooth start variations are:~
- Inside source: true
*** True Line Result
# Smooth start variations are:
** Processing line: ~ # [:quad]~
- Inside source: true
*** True Line Result
# [:quad]
** Processing line: ~ # [:cube]~
- Inside source: true
*** True Line Result
# [:cube]
** Processing line: ~ # [:quart]~
- Inside source: true
*** True Line Result
# [:quart]
** Processing line: ~ # [:quint]~
- Inside source: true
*** True Line Result
# [:quint]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Linear reversed, and smooth stop are the same as the animations defined above, but reversed:~
- Inside source: true
*** True Line Result
# Linear reversed, and smooth stop are the same as the animations defined above, but reversed:
** Processing line: ~ # [:flip, :identity]~
- Inside source: true
*** True Line Result
# [:flip, :identity]
** Processing line: ~ # [:flip, :quad, :flip]~
- Inside source: true
*** True Line Result
# [:flip, :quad, :flip]
** Processing line: ~ # [:flip, :cube, :flip]~
- Inside source: true
*** True Line Result
# [:flip, :cube, :flip]
** Processing line: ~ # [:flip, :quart, :flip]~
- Inside source: true
*** True Line Result
# [:flip, :quart, :flip]
** Processing line: ~ # [:flip, :quint, :flip]~
- Inside source: true
*** True Line Result
# [:flip, :quint, :flip]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # You can also do custom definitions. See the bottom of the file details~
- Inside source: true
*** True Line Result
# You can also do custom definitions. See the bottom of the file details
** Processing line: ~ # on how to do that. I've defined a couple for you:~
- Inside source: true
*** True Line Result
# on how to do that. I've defined a couple for you:
** Processing line: ~ # [:smoothest_start]~
- Inside source: true
*** True Line Result
# [:smoothest_start]
** Processing line: ~ # [:smoothest_stop]~
- Inside source: true
*** True Line Result
# [:smoothest_stop]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # CHANGE THIS LINE TO ONE OF THE LINES ABOVE TO SEE VARIATIONS~
- Inside source: true
*** True Line Result
# CHANGE THIS LINE TO ONE OF THE LINES ABOVE TO SEE VARIATIONS
** Processing line: ~ args.state.animation_type = [:identity]~
- Inside source: true
*** True Line Result
args.state.animation_type = [:identity]
** Processing line: ~ # args.state.animation_type = [:quad]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:quad]
** Processing line: ~ # args.state.animation_type = [:cube]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:cube]
** Processing line: ~ # args.state.animation_type = [:quart]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:quart]
** Processing line: ~ # args.state.animation_type = [:quint]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:quint]
** Processing line: ~ # args.state.animation_type = [:flip, :identity]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:flip, :identity]
** Processing line: ~ # args.state.animation_type = [:flip, :quad, :flip]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:flip, :quad, :flip]
** Processing line: ~ # args.state.animation_type = [:flip, :cube, :flip]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:flip, :cube, :flip]
** Processing line: ~ # args.state.animation_type = [:flip, :quart, :flip]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:flip, :quart, :flip]
** Processing line: ~ # args.state.animation_type = [:flip, :quint, :flip]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:flip, :quint, :flip]
** Processing line: ~ # args.state.animation_type = [:smoothest_start]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:smoothest_start]
** Processing line: ~ # args.state.animation_type = [:smoothest_stop]~
- Inside source: true
*** True Line Result
# args.state.animation_type = [:smoothest_stop]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # THIS IS WHERE THE MAGIC HAPPENS!~
- Inside source: true
*** True Line Result
# THIS IS WHERE THE MAGIC HAPPENS!
** Processing line: ~ # Numeric#ease~
- Inside source: true
*** True Line Result
# Numeric#ease
** Processing line: ~ progress = args.state.start_animate_at.ease(args.state.duration, args.state.animation_type)~
- Inside source: true
*** True Line Result
progress = args.state.start_animate_at.ease(args.state.duration, args.state.animation_type)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Numeric#ease needs to called:~
- Inside source: true
*** True Line Result
# Numeric#ease needs to called:
** Processing line: ~ # 1. On the number that represents the point in time you want to start, and takes two parameters:~
- Inside source: true
*** True Line Result
# 1. On the number that represents the point in time you want to start, and takes two parameters:
** Processing line: ~ # a. The first parameter is how long the animation should take.~
- Inside source: true
*** True Line Result
# a. The first parameter is how long the animation should take.
** Processing line: ~ # b. The second parameter represents the functions that need to be called.~
- Inside source: true
*** True Line Result
# b. The second parameter represents the functions that need to be called.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # For example, if I wanted an animate to start 3 seconds in, and last for 10 seconds,~
- Inside source: true
*** True Line Result
# For example, if I wanted an animate to start 3 seconds in, and last for 10 seconds,
** Processing line: ~ # and I want to animation to start fast and end slow, I would do:~
- Inside source: true
*** True Line Result
# and I want to animation to start fast and end slow, I would do:
** Processing line: ~ # (60 * 3).ease(60 * 10, :flip, :quint, :flip)~
- Inside source: true
*** True Line Result
# (60 * 3).ease(60 * 10, :flip, :quint, :flip)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # initial value delta to the final value~
- Inside source: true
*** True Line Result
# initial value delta to the final value
** Processing line: ~ calc_x = args.state.starting_x + (args.state.target_x - args.state.starting_x) * progress~
- Inside source: true
*** True Line Result
calc_x = args.state.starting_x + (args.state.target_x - args.state.starting_x) * progress
** Processing line: ~ calc_y = args.state.starting_y + (args.state.target_y - args.state.starting_y) * progress~
- Inside source: true
*** True Line Result
calc_y = args.state.starting_y + (args.state.target_y - args.state.starting_y) * progress
** Processing line: ~ calc_w = args.state.starting_w + (args.state.target_w - args.state.starting_w) * progress~
- Inside source: true
*** True Line Result
calc_w = args.state.starting_w + (args.state.target_w - args.state.starting_w) * progress
** Processing line: ~ calc_h = args.state.starting_h + (args.state.target_h - args.state.starting_h) * progress~
- Inside source: true
*** True Line Result
calc_h = args.state.starting_h + (args.state.target_h - args.state.starting_h) * progress
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.solids << [calc_x, calc_y, calc_w, calc_h, 0, 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.solids << [calc_x, calc_y, calc_w, calc_h, 0, 0, 0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # count down~
- Inside source: true
*** True Line Result
# count down
** Processing line: ~ count_down = args.state.start_animate_at - args.state.tick_count~
- Inside source: true
*** True Line Result
count_down = args.state.start_animate_at - args.state.tick_count
** Processing line: ~ if count_down > 0~
- Inside source: true
*** True Line Result
if count_down > 0
** Processing line: ~ args.outputs.labels << [640, 375, "Running: #{args.state.animation_type} in...", 3, 1]~
- Inside source: true
*** True Line Result
args.outputs.labels << [640, 375, "Running: #{args.state.animation_type} in...", 3, 1]
** Processing line: ~ args.outputs.labels << [640, 345, "%.2f" % count_down.fdiv(60), 3, 1]~
- Inside source: true
*** True Line Result
args.outputs.labels << [640, 345, "%.2f" % count_down.fdiv(60), 3, 1]
** Processing line: ~ elsif progress >= 1~
- Inside source: true
*** True Line Result
elsif progress >= 1
** Processing line: ~ args.outputs.labels << [640, 360, "Click screen to reset.", 3, 1]~
- Inside source: true
*** True Line Result
args.outputs.labels << [640, 360, "Click screen to reset.", 3, 1]
** Processing line: ~ if args.inputs.click~
- Inside source: true
*** True Line Result
if args.inputs.click
** Processing line: ~ $gtk.reset~
- Inside source: true
*** True Line Result
$gtk.reset
** 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: ~ # $gtk.reset~
- Inside source: true
*** True Line Result
# $gtk.reset
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # you can make own variations of animations using this~
- Inside source: true
*** True Line Result
# you can make own variations of animations using this
** Processing line: ~ module Easing~
- Inside source: true
*** True Line Result
module Easing
** Processing line: ~ # you have access to all the built in functions: identity, flip, quad, cube, quart, quint~
- Inside source: true
*** True Line Result
# you have access to all the built in functions: identity, flip, quad, cube, quart, quint
** Processing line: ~ def self.smoothest_start x~
- Inside source: true
*** True Line Result
def self.smoothest_start x
** Processing line: ~ quad(quint(x))~
- Inside source: true
*** True Line Result
quad(quint(x))
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.smoothest_stop x~
- Inside source: true
*** True Line Result
def self.smoothest_stop x
** Processing line: ~ flip(quad(quint(flip(x))))~
- Inside source: true
*** True Line Result
flip(quad(quint(flip(x))))
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # this is the source for the existing easing functions~
- Inside source: true
*** True Line Result
# this is the source for the existing easing functions
** Processing line: ~ def self.identity x~
- Inside source: true
*** True Line Result
def self.identity x
** Processing line: ~ x~
- Inside source: true
*** True Line Result
x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.flip x~
- Inside source: true
*** True Line Result
def self.flip x
** Processing line: ~ 1 - x~
- Inside source: true
*** True Line Result
1 - x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.quad x~
- Inside source: true
*** True Line Result
def self.quad x
** Processing line: ~ x * x~
- Inside source: true
*** True Line Result
x * x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.cube x~
- Inside source: true
*** True Line Result
def self.cube x
** Processing line: ~ x * x * x~
- Inside source: true
*** True Line Result
x * x * x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.quart x~
- Inside source: true
*** True Line Result
def self.quart x
** Processing line: ~ x * x * x * x * x~
- Inside source: true
*** True Line Result
x * x * x * x * x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.quint x~
- Inside source: true
*** True Line Result
def self.quint x
** Processing line: ~ x * x * x * x * x * x~
- Inside source: true
*** True Line Result
x * x * x * x * x * x
** 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: ~* Tweening Lerping Easing Functions - Cubic Bezier - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Tweening Lerping Easing Functions - Cubic Bezier - 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/08_tweening_lerping_easing_functions/02_cubic_bezier/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/08_tweening_lerping_easing_functions/02_cubic_bezier/app/main.rb
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ args.outputs.background_color = [33, 33, 33]~
- Inside source: true
*** True Line Result
args.outputs.background_color = [33, 33, 33]
** Processing line: ~ args.outputs.lines << bezier(100, 100,~
- Inside source: true
*** True Line Result
args.outputs.lines << bezier(100, 100,
** Processing line: ~ 100, 620,~
- Inside source: true
*** True Line Result
100, 620,
** Processing line: ~ 1180, 620,~
- Inside source: true
*** True Line Result
1180, 620,
** Processing line: ~ 1180, 100,~
- Inside source: true
*** True Line Result
1180, 100,
** Processing line: ~ 0)~
- Inside source: true
*** True Line Result
0)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.lines << bezier(100, 100,~
- Inside source: true
*** True Line Result
args.outputs.lines << bezier(100, 100,
** Processing line: ~ 100, 620,~
- Inside source: true
*** True Line Result
100, 620,
** Processing line: ~ 1180, 620,~
- Inside source: true
*** True Line Result
1180, 620,
** Processing line: ~ 1180, 100,~
- Inside source: true
*** True Line Result
1180, 100,
** Processing line: ~ 20)~
- Inside source: true
*** True Line Result
20)
** 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: ~ def bezier x1, y1, x2, y2, x3, y3, x4, y4, step~
- Inside source: true
*** True Line Result
def bezier x1, y1, x2, y2, x3, y3, x4, y4, step
** Processing line: ~ step ||= 0~
- Inside source: true
*** True Line Result
step ||= 0
** Processing line: ~ color = [200, 200, 200]~
- Inside source: true
*** True Line Result
color = [200, 200, 200]
** Processing line: ~ points = points_for_bezier [x1, y1], [x2, y2], [x3, y3], [x4, y4], step~
- Inside source: true
*** True Line Result
points = points_for_bezier [x1, y1], [x2, y2], [x3, y3], [x4, y4], step
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ points.each_cons(2).map do |p1, p2|~
- Inside source: true
*** True Line Result
points.each_cons(2).map do |p1, p2|
** Processing line: ~ [p1, p2, color]~
- Inside source: true
*** True Line Result
[p1, p2, color]
** 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 points_for_bezier p1, p2, p3, p4, step~
- Inside source: true
*** True Line Result
def points_for_bezier p1, p2, p3, p4, step
** Processing line: ~ points = []~
- Inside source: true
*** True Line Result
points = []
** Processing line: ~ if step == 0~
- Inside source: true
*** True Line Result
if step == 0
** Processing line: ~ [p1, p2, p3, p4]~
- Inside source: true
*** True Line Result
[p1, p2, p3, p4]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ t_step = 1.fdiv(step + 1)~
- Inside source: true
*** True Line Result
t_step = 1.fdiv(step + 1)
** Processing line: ~ t = 0~
- Inside source: true
*** True Line Result
t = 0
** Processing line: ~ t += t_step~
- Inside source: true
*** True Line Result
t += t_step
** Processing line: ~ points = []~
- Inside source: true
*** True Line Result
points = []
** Processing line: ~ while t < 1~
- Inside source: true
*** True Line Result
while t < 1
** Processing line: ~ points << [~
- Inside source: true
*** True Line Result
points << [
** Processing line: ~ b_for_t(p1.x, p2.x, p3.x, p4.x, t),~
- Inside source: true
*** True Line Result
b_for_t(p1.x, p2.x, p3.x, p4.x, t),
** Processing line: ~ b_for_t(p1.y, p2.y, p3.y, p4.y, t),~
- Inside source: true
*** True Line Result
b_for_t(p1.y, p2.y, p3.y, p4.y, t),
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ t += t_step~
- Inside source: true
*** True Line Result
t += t_step
** 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: ~ p1,~
- Inside source: true
*** True Line Result
p1,
** Processing line: ~ *points,~
- Inside source: true
*** True Line Result
*points,
** Processing line: ~ p4~
- Inside source: true
*** True Line Result
p4
** 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 b_for_t v0, v1, v2, v3, t~
- Inside source: true
*** True Line Result
def b_for_t v0, v1, v2, v3, t
** Processing line: ~ pow(1 - t, 3) * v0 +~
- Inside source: true
*** True Line Result
pow(1 - t, 3) * v0 +
** Processing line: ~ 3 * pow(1 - t, 2) * t * v1 +~
- Inside source: true
*** True Line Result
3 * pow(1 - t, 2) * t * v1 +
** Processing line: ~ 3 * (1 - t) * pow(t, 2) * v2 +~
- Inside source: true
*** True Line Result
3 * (1 - t) * pow(t, 2) * v2 +
** Processing line: ~ pow(t, 3) * v3~
- Inside source: true
*** True Line Result
pow(t, 3) * v3
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def pow n, to~
- Inside source: true
*** True Line Result
def pow n, to
** Processing line: ~ n ** to~
- Inside source: true
*** True Line Result
n ** to
** 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: ~* Tweening Lerping Easing Functions - Easing Using Spline - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Tweening Lerping Easing Functions - Easing Using Spline - 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/08_tweening_lerping_easing_functions/03_easing_using_spline/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/08_tweening_lerping_easing_functions/03_easing_using_spline/app/main.rb
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ args.state.duration = 10.seconds~
- Inside source: true
*** True Line Result
args.state.duration = 10.seconds
** Processing line: ~ args.state.spline = [~
- Inside source: true
*** True Line Result
args.state.spline = [
** Processing line: ~ [0.0, 0.33, 0.66, 1.0],~
- Inside source: true
*** True Line Result
[0.0, 0.33, 0.66, 1.0],
** Processing line: ~ [1.0, 1.0, 1.0, 1.0],~
- Inside source: true
*** True Line Result
[1.0, 1.0, 1.0, 1.0],
** Processing line: ~ [1.0, 0.66, 0.33, 0.0],~
- Inside source: true
*** True Line Result
[1.0, 0.66, 0.33, 0.0],
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.simulation_tick = args.state.tick_count % args.state.duration~
- Inside source: true
*** True Line Result
args.state.simulation_tick = args.state.tick_count % args.state.duration
** Processing line: ~ progress = 0.ease_spline_extended args.state.simulation_tick, args.state.duration, args.state.spline~
- Inside source: true
*** True Line Result
progress = 0.ease_spline_extended args.state.simulation_tick, args.state.duration, args.state.spline
** Processing line: ~ args.outputs.borders << args.grid.rect~
- Inside source: true
*** True Line Result
args.outputs.borders << args.grid.rect
** Processing line: ~ args.outputs.solids << [20 + 1240 * progress,~
- Inside source: true
*** True Line Result
args.outputs.solids << [20 + 1240 * progress,
** Processing line: ~ 20 + 680 * progress,~
- Inside source: true
*** True Line Result
20 + 680 * progress,
** Processing line: ~ 20, 20].anchor_rect(0.5, 0.5)~
- Inside source: true
*** True Line Result
20, 20].anchor_rect(0.5, 0.5)
** Processing line: ~ args.outputs.labels << [10,~
- Inside source: true
*** True Line Result
args.outputs.labels << [10,
** Processing line: ~ 710,~
- Inside source: true
*** True Line Result
710,
** Processing line: ~ "perc: #{"%.2f" % (args.state.simulation_tick / args.state.duration)} t: #{args.state.simulation_tick}"]~
- Inside source: true
*** True Line Result
"perc: #{"%.2f" % (args.state.simulation_tick / args.state.duration)} t: #{args.state.simulation_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: ~* Tweening Lerping Easing Functions - Parametric Enemy Movement - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Tweening Lerping Easing Functions - Parametric Enemy Movement - 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/08_tweening_lerping_easing_functions/04_parametric_enemy_movement/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/08_tweening_lerping_easing_functions/04_parametric_enemy_movement/app/main.rb
** Processing line: ~ def new_star args~
- Inside source: true
*** True Line Result
def new_star args
** Processing line: ~ { x: 1280.randomize(:ratio),~
- Inside source: true
*** True Line Result
{ x: 1280.randomize(:ratio),
** Processing line: ~ starting_y: 800,~
- Inside source: true
*** True Line Result
starting_y: 800,
** Processing line: ~ distance_to_travel: 900 + 100.randomize(:ratio),~
- Inside source: true
*** True Line Result
distance_to_travel: 900 + 100.randomize(:ratio),
** Processing line: ~ duration: 100.randomize(:ratio) + 60,~
- Inside source: true
*** True Line Result
duration: 100.randomize(:ratio) + 60,
** Processing line: ~ created_at: args.state.tick_count,~
- Inside source: true
*** True Line Result
created_at: args.state.tick_count,
** Processing line: ~ max_alpha: 128.randomize(:ratio) + 128,~
- Inside source: true
*** True Line Result
max_alpha: 128.randomize(:ratio) + 128,
** Processing line: ~ b: 255.randomize(:ratio),~
- Inside source: true
*** True Line Result
b: 255.randomize(:ratio),
** Processing line: ~ g: 200.randomize(:ratio),~
- Inside source: true
*** True Line Result
g: 200.randomize(:ratio),
** Processing line: ~ w: 1.randomize(:ratio) + 1,~
- Inside source: true
*** True Line Result
w: 1.randomize(:ratio) + 1,
** Processing line: ~ h: 1.randomize(:ratio) + 1 }~
- Inside source: true
*** True Line Result
h: 1.randomize(:ratio) + 1 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def new_enemy args~
- Inside source: true
*** True Line Result
def new_enemy args
** Processing line: ~ { x: 1280.randomize(:ratio),~
- Inside source: true
*** True Line Result
{ x: 1280.randomize(:ratio),
** Processing line: ~ starting_y: 800,~
- Inside source: true
*** True Line Result
starting_y: 800,
** Processing line: ~ distance_to_travel: -900,~
- Inside source: true
*** True Line Result
distance_to_travel: -900,
** Processing line: ~ duration: 60.randomize(:ratio) + 180,~
- Inside source: true
*** True Line Result
duration: 60.randomize(:ratio) + 180,
** Processing line: ~ created_at: args.state.tick_count,~
- Inside source: true
*** True Line Result
created_at: args.state.tick_count,
** Processing line: ~ w: 32,~
- Inside source: true
*** True Line Result
w: 32,
** Processing line: ~ h: 32,~
- Inside source: true
*** True Line Result
h: 32,
** Processing line: ~ fire_rate: (30.randomize(:ratio) + (60 - args.state.score)).to_i }~
- Inside source: true
*** True Line Result
fire_rate: (30.randomize(:ratio) + (60 - args.state.score)).to_i }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def new_bullet args, starting_x, starting_y, enemy_speed~
- Inside source: true
*** True Line Result
def new_bullet args, starting_x, starting_y, enemy_speed
** Processing line: ~ { x: starting_x,~
- Inside source: true
*** True Line Result
{ x: starting_x,
** Processing line: ~ starting_y: starting_y,~
- Inside source: true
*** True Line Result
starting_y: starting_y,
** Processing line: ~ distance_to_travel: -900,~
- Inside source: true
*** True Line Result
distance_to_travel: -900,
** Processing line: ~ created_at: args.state.tick_count,~
- Inside source: true
*** True Line Result
created_at: args.state.tick_count,
** Processing line: ~ duration: 900 / (enemy_speed.abs + 2.0 + (5.0 * args.state.score.fdiv(100))).abs,~
- Inside source: true
*** True Line Result
duration: 900 / (enemy_speed.abs + 2.0 + (5.0 * args.state.score.fdiv(100))).abs,
** Processing line: ~ w: 5,~
- Inside source: true
*** True Line Result
w: 5,
** Processing line: ~ h: 5 }~
- Inside source: true
*** True Line Result
h: 5 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def new_player_bullet args, starting_x, starting_y, player_speed~
- Inside source: true
*** True Line Result
def new_player_bullet args, starting_x, starting_y, player_speed
** Processing line: ~ { x: starting_x,~
- Inside source: true
*** True Line Result
{ x: starting_x,
** Processing line: ~ starting_y: starting_y,~
- Inside source: true
*** True Line Result
starting_y: starting_y,
** Processing line: ~ distance_to_travel: 900,~
- Inside source: true
*** True Line Result
distance_to_travel: 900,
** Processing line: ~ created_at: args.state.tick_count,~
- Inside source: true
*** True Line Result
created_at: args.state.tick_count,
** Processing line: ~ duration: 900 / (player_speed + 2.0),~
- Inside source: true
*** True Line Result
duration: 900 / (player_speed + 2.0),
** Processing line: ~ w: 5,~
- Inside source: true
*** True Line Result
w: 5,
** Processing line: ~ h: 5 }~
- Inside source: true
*** True Line Result
h: 5 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def defaults args~
- Inside source: true
*** True Line Result
def defaults args
** 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.state.score ||= 0~
- Inside source: true
*** True Line Result
args.state.score ||= 0
** Processing line: ~ args.state.stars ||= []~
- Inside source: true
*** True Line Result
args.state.stars ||= []
** Processing line: ~ args.state.enemies ||= []~
- Inside source: true
*** True Line Result
args.state.enemies ||= []
** Processing line: ~ args.state.bullets ||= []~
- Inside source: true
*** True Line Result
args.state.bullets ||= []
** Processing line: ~ args.state.player_bullets ||= []~
- Inside source: true
*** True Line Result
args.state.player_bullets ||= []
** Processing line: ~ args.state.max_stars = 50~
- Inside source: true
*** True Line Result
args.state.max_stars = 50
** Processing line: ~ args.state.max_enemies = 10~
- Inside source: true
*** True Line Result
args.state.max_enemies = 10
** Processing line: ~ args.state.player.x ||= 640~
- Inside source: true
*** True Line Result
args.state.player.x ||= 640
** Processing line: ~ args.state.player.y ||= 100~
- Inside source: true
*** True Line Result
args.state.player.y ||= 100
** Processing line: ~ args.state.player.w ||= 32~
- Inside source: true
*** True Line Result
args.state.player.w ||= 32
** Processing line: ~ args.state.player.h ||= 32~
- Inside source: true
*** True Line Result
args.state.player.h ||= 32
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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.clear~
- Inside source: true
*** True Line Result
args.state.stars.clear
** Processing line: ~ args.state.max_stars.times do~
- Inside source: true
*** True Line Result
args.state.max_stars.times do
** Processing line: ~ s = new_star args~
- Inside source: true
*** True Line Result
s = new_star args
** Processing line: ~ s[:created_at] += s[:duration].randomize(:ratio)~
- Inside source: true
*** True Line Result
s[:created_at] += s[:duration].randomize(:ratio)
** Processing line: ~ args.state.stars << s~
- Inside source: true
*** True Line Result
args.state.stars << s
** 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 args.state.tick_count == 0~
- Inside source: true
*** True Line Result
if args.state.tick_count == 0
** Processing line: ~ args.state.enemies.clear~
- Inside source: true
*** True Line Result
args.state.enemies.clear
** Processing line: ~ args.state.max_enemies.times do~
- Inside source: true
*** True Line Result
args.state.max_enemies.times do
** Processing line: ~ s = new_enemy args~
- Inside source: true
*** True Line Result
s = new_enemy args
** Processing line: ~ s[:created_at] += s[:duration].randomize(:ratio)~
- Inside source: true
*** True Line Result
s[:created_at] += s[:duration].randomize(:ratio)
** Processing line: ~ args.state.enemies << s~
- Inside source: true
*** True Line Result
args.state.enemies << s
** 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 input args~
- Inside source: true
*** True Line Result
def input args
** Processing line: ~ if args.inputs.keyboard.left~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.left
** Processing line: ~ args.state.player.x -= 5~
- Inside source: true
*** True Line Result
args.state.player.x -= 5
** Processing line: ~ elsif args.inputs.keyboard.right~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.right
** Processing line: ~ args.state.player.x += 5~
- Inside source: true
*** True Line Result
args.state.player.x += 5
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.keyboard.up~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.up
** Processing line: ~ args.state.player.y += 5~
- Inside source: true
*** True Line Result
args.state.player.y += 5
** Processing line: ~ elsif args.inputs.keyboard.down~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.down
** Processing line: ~ args.state.player.y -= 5~
- Inside source: true
*** True Line Result
args.state.player.y -= 5
** 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.space~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.space
** Processing line: ~ args.state.player_bullets << new_player_bullet(args,~
- Inside source: true
*** True Line Result
args.state.player_bullets << new_player_bullet(args,
** Processing line: ~ args.state.player.x + args.state.player.w.half,~
- Inside source: true
*** True Line Result
args.state.player.x + args.state.player.w.half,
** Processing line: ~ args.state.player.y + args.state.player.h, 5)~
- Inside source: true
*** True Line Result
args.state.player.y + args.state.player.h, 5)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.player.y = args.state.player.y.greater(0).lesser(720 - args.state.player.w)~
- Inside source: true
*** True Line Result
args.state.player.y = args.state.player.y.greater(0).lesser(720 - args.state.player.w)
** Processing line: ~ args.state.player.x = args.state.player.x.greater(0).lesser(1280 - args.state.player.h)~
- Inside source: true
*** True Line Result
args.state.player.x = args.state.player.x.greater(0).lesser(1280 - args.state.player.h)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def completed? entity~
- Inside source: true
*** True Line Result
def completed? entity
** Processing line: ~ (entity[:created_at] + entity[:duration]).elapsed_time > 0~
- Inside source: true
*** True Line Result
(entity[:created_at] + entity[:duration]).elapsed_time > 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_stars args~
- Inside source: true
*** True Line Result
def calc_stars args
** Processing line: ~ if (stars_to_add = args.state.max_stars - args.state.stars.length) > 0~
- Inside source: true
*** True Line Result
if (stars_to_add = args.state.max_stars - args.state.stars.length) > 0
** Processing line: ~ stars_to_add.times { args.state.stars << new_star(args) }~
- Inside source: true
*** True Line Result
stars_to_add.times { args.state.stars << new_star(args) }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ args.state.stars = args.state.stars.reject { |s| completed? s }~
- Inside source: true
*** True Line Result
args.state.stars = args.state.stars.reject { |s| completed? s }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def move_enemies args~
- Inside source: true
*** True Line Result
def move_enemies args
** Processing line: ~ if (enemies_to_add = args.state.max_enemies - args.state.enemies.length) > 0~
- Inside source: true
*** True Line Result
if (enemies_to_add = args.state.max_enemies - args.state.enemies.length) > 0
** Processing line: ~ enemies_to_add.times { args.state.enemies << new_enemy(args) }~
- Inside source: true
*** True Line Result
enemies_to_add.times { args.state.enemies << new_enemy(args) }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.enemies = args.state.enemies.reject { |s| completed? s }~
- Inside source: true
*** True Line Result
args.state.enemies = args.state.enemies.reject { |s| completed? s }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def move_bullets args~
- Inside source: true
*** True Line Result
def move_bullets args
** Processing line: ~ args.state.enemies.each do |e|~
- Inside source: true
*** True Line Result
args.state.enemies.each do |e|
** Processing line: ~ if args.state.tick_count.mod_zero?(e[:fire_rate])~
- Inside source: true
*** True Line Result
if args.state.tick_count.mod_zero?(e[:fire_rate])
** Processing line: ~ args.state.bullets << new_bullet(args, e[:x] + e[:w].half, current_y(e), e[:distance_to_travel] / e[:duration])~
- Inside source: true
*** True Line Result
args.state.bullets << new_bullet(args, e[:x] + e[:w].half, current_y(e), e[:distance_to_travel] / e[:duration])
** 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: ~ args.state.bullets = args.state.bullets.reject { |s| completed? s }~
- Inside source: true
*** True Line Result
args.state.bullets = args.state.bullets.reject { |s| completed? s }
** Processing line: ~ args.state.player_bullets = args.state.player_bullets.reject { |s| completed? s }~
- Inside source: true
*** True Line Result
args.state.player_bullets = args.state.player_bullets.reject { |s| completed? s }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def intersect? entity_one, entity_two~
- Inside source: true
*** True Line Result
def intersect? entity_one, entity_two
** Processing line: ~ entity_one.merge(y: current_y(entity_one))~
- Inside source: true
*** True Line Result
entity_one.merge(y: current_y(entity_one))
** Processing line: ~ .intersect_rect? entity_two.merge(y: current_y(entity_two))~
- Inside source: true
*** True Line Result
.intersect_rect? entity_two.merge(y: current_y(entity_two))
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def kill args~
- Inside source: true
*** True Line Result
def kill args
** Processing line: ~ bullets_hitting_enemies = []~
- Inside source: true
*** True Line Result
bullets_hitting_enemies = []
** Processing line: ~ dead_bullets = []~
- Inside source: true
*** True Line Result
dead_bullets = []
** Processing line: ~ dead_enemies = []~
- Inside source: true
*** True Line Result
dead_enemies = []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.player_bullets.each do |b|~
- Inside source: true
*** True Line Result
args.state.player_bullets.each do |b|
** Processing line: ~ args.state.enemies.each do |e|~
- Inside source: true
*** True Line Result
args.state.enemies.each do |e|
** Processing line: ~ if intersect? b, e~
- Inside source: true
*** True Line Result
if intersect? b, e
** Processing line: ~ dead_bullets << b~
- Inside source: true
*** True Line Result
dead_bullets << b
** Processing line: ~ dead_enemies << e~
- Inside source: true
*** True Line Result
dead_enemies << 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: ~ args.state.score += dead_enemies.length~
- Inside source: true
*** True Line Result
args.state.score += dead_enemies.length
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.player_bullets.reject! { |b| dead_bullets.include? b }~
- Inside source: true
*** True Line Result
args.state.player_bullets.reject! { |b| dead_bullets.include? b }
** Processing line: ~ args.state.enemies.reject! { |e| dead_enemies.include? e }~
- Inside source: true
*** True Line Result
args.state.enemies.reject! { |e| dead_enemies.include? e }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ dead = args.state.bullets.any? do |b|~
- Inside source: true
*** True Line Result
dead = args.state.bullets.any? do |b|
** Processing line: ~ [args.state.player.x,~
- Inside source: true
*** True Line Result
[args.state.player.x,
** Processing line: ~ args.state.player.y,~
- Inside source: true
*** True Line Result
args.state.player.y,
** Processing line: ~ args.state.player.w,~
- Inside source: true
*** True Line Result
args.state.player.w,
** Processing line: ~ args.state.player.h].intersect_rect? b.merge(y: current_y(b))~
- Inside source: true
*** True Line Result
args.state.player.h].intersect_rect? b.merge(y: current_y(b))
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ return unless dead~
- Inside source: true
*** True Line Result
return unless dead
** Processing line: ~ args.gtk.reset~
- Inside source: true
*** True Line Result
args.gtk.reset
** Processing line: ~ defaults args~
- Inside source: true
*** True Line Result
defaults args
** 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: ~ calc_stars args~
- Inside source: true
*** True Line Result
calc_stars args
** Processing line: ~ move_enemies args~
- Inside source: true
*** True Line Result
move_enemies args
** Processing line: ~ move_bullets args~
- Inside source: true
*** True Line Result
move_bullets args
** Processing line: ~ kill args~
- Inside source: true
*** True Line Result
kill args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def current_y entity~
- Inside source: true
*** True Line Result
def current_y entity
** Processing line: ~ entity[:starting_y] + (entity[:distance_to_travel] * entity[:created_at].ease(entity[:duration], :identity))~
- Inside source: true
*** True Line Result
entity[:starting_y] + (entity[:distance_to_travel] * entity[:created_at].ease(entity[:duration], :identity))
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render args~
- Inside source: true
*** True Line Result
def render args
** Processing line: ~ args.outputs.solids << args.state.stars.map do |s|~
- Inside source: true
*** True Line Result
args.outputs.solids << args.state.stars.map do |s|
** Processing line: ~ [s[:x],~
- Inside source: true
*** True Line Result
[s[:x],
** Processing line: ~ current_y(s),~
- Inside source: true
*** True Line Result
current_y(s),
** Processing line: ~ s[:w], s[:h], 0, s[:g], s[:b], s[:max_alpha] * s[:created_at].ease(20, :identity)]~
- Inside source: true
*** True Line Result
s[:w], s[:h], 0, s[:g], s[:b], s[:max_alpha] * s[:created_at].ease(20, :identity)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.borders << args.state.enemies.map do |s|~
- Inside source: true
*** True Line Result
args.outputs.borders << args.state.enemies.map do |s|
** Processing line: ~ [s[:x],~
- Inside source: true
*** True Line Result
[s[:x],
** Processing line: ~ current_y(s),~
- Inside source: true
*** True Line Result
current_y(s),
** Processing line: ~ s[:w], s[:h], 255, 0, 0]~
- Inside source: true
*** True Line Result
s[:w], s[:h], 255, 0, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.borders << args.state.bullets.map do |b|~
- Inside source: true
*** True Line Result
args.outputs.borders << args.state.bullets.map do |b|
** Processing line: ~ [b[:x],~
- Inside source: true
*** True Line Result
[b[:x],
** Processing line: ~ current_y(b),~
- Inside source: true
*** True Line Result
current_y(b),
** Processing line: ~ b[:w], b[:h], 255, 0, 0]~
- Inside source: true
*** True Line Result
b[:w], b[:h], 255, 0, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.borders << args.state.player_bullets.map do |b|~
- Inside source: true
*** True Line Result
args.outputs.borders << args.state.player_bullets.map do |b|
** Processing line: ~ [b[:x],~
- Inside source: true
*** True Line Result
[b[:x],
** Processing line: ~ current_y(b),~
- Inside source: true
*** True Line Result
current_y(b),
** Processing line: ~ b[:w], b[:h], 255, 255, 255]~
- Inside source: true
*** True Line Result
b[:w], b[:h], 255, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.borders << [args.state.player.x,~
- Inside source: true
*** True Line Result
args.borders << [args.state.player.x,
** Processing line: ~ args.state.player.y,~
- Inside source: true
*** True Line Result
args.state.player.y,
** Processing line: ~ args.state.player.w,~
- Inside source: true
*** True Line Result
args.state.player.w,
** Processing line: ~ args.state.player.h, 255, 255, 255]~
- Inside source: true
*** True Line Result
args.state.player.h, 255, 255, 255]
** 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: ~ defaults args~
- Inside source: true
*** True Line Result
defaults args
** Processing line: ~ input args~
- Inside source: true
*** True Line Result
input args
** Processing line: ~ calc args~
- Inside source: true
*** True Line Result
calc args
** Processing line: ~ render args~
- Inside source: true
*** True Line Result
render args
** 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 Hash - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Performance - Sprites As Hash - 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/01_sprites_as_hash/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/09_performance/01_sprites_as_hash/app/main.rb
** Processing line: ~ # Sprites represented as Hashes using the queue ~args.outputs.sprites~~
- Inside source: true
*** True Line Result
# Sprites represented as Hashes using the queue ~args.outputs.sprites~
** Processing line: ~ # code up, but are the "slowest" to render.~
- Inside source: true
*** True Line Result
# code up, but are the "slowest" to render.
** Processing line: ~ # The reason for this is the access of the key in the Hash and also~
- Inside source: true
*** True Line Result
# The reason for this is the access of the key in the Hash and also
** Processing line: ~ # because the data args.outputs.sprites is cleared every tick.~
- Inside source: true
*** True Line Result
# because the data args.outputs.sprites is cleared every tick.
** 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: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: (random_x args),~
- Inside source: true
*** True Line Result
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, path: 'sprites/tiny-star.png',~
- Inside source: true
*** True Line Result
w: 4, h: 4, path: 'sprites/tiny-star.png',
** Processing line: ~ s: random_speed~
- Inside source: true
*** True Line Result
s: random_speed
** 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 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 "* 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 Entities - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Performance - Sprites As Entities - 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/02_sprites_as_entities/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/09_performance/02_sprites_as_entities/app/main.rb
** Processing line: ~ # Sprites represented as Entities using the queue ~args.outputs.sprites~~
- Inside source: true
*** True Line Result
# Sprites represented as Entities using the queue ~args.outputs.sprites~
** Processing line: ~ # yields nicer access apis over Hashes, but require a bit more code upfront.~
- Inside source: true
*** True Line Result
# yields nicer access apis over Hashes, but require a bit more code upfront.
** Processing line: ~ # The hash sample has to use star[:s] to get the speed of the star, but~
- Inside source: true
*** True Line Result
# The hash sample has to use star[:s] to get the speed of the star, but
** Processing line: ~ # an entity can use .s instead.~
- Inside source: true
*** True Line Result
# an entity can use .s instead.
** 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: ~ args.state.new_entity :star, {~
- Inside source: true
*** True Line Result
args.state.new_entity :star, {
** Processing line: ~ x: (random_x args),~
- Inside source: true
*** True Line Result
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: ~ }~
- 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 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 "* 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
*** True Line Result
* Performance - Sprites As Strict Entities - 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_strict_entities/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/09_performance/03_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
# 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~
- Inside source: true
*** True Line Result
# 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~
- Inside source: true
*** True Line Result
# entity must be predefined with a default value. Strict entities do not support the
** Processing line: ~ # addition of new properties after the fact. They are more performant than OpenEntities~
- Inside source: true
*** True Line Result
# addition of new properties after the fact. They are more performant than OpenEntities
** Processing line: ~ # because of this constraint.~
- Inside source: true
*** True Line Result
# because of this constraint.
** 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: ~ args.state.new_entity_strict(:star,~
- Inside source: true
*** True Line Result
args.state.new_entity_strict(:star,
** Processing line: ~ x: (random_x args),~
- Inside source: true
*** True Line Result
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) do |entity|~
- Inside source: true
*** True Line Result
s: random_speed) do |entity|
** Processing line: ~ # invoke attr_sprite so that it responds to~
- Inside source: true
*** True Line Result
# invoke attr_sprite so that it responds to
** Processing line: ~ # all properties that are required to render a sprite~
- Inside source: true
*** True Line Result
# all properties that are required to render a sprite
** Processing line: ~ entity.attr_sprite~
- Inside source: true
*** True Line Result
entity.attr_sprite
** 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 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 "* 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 Classes - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Performance - Sprites As Classes - 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/04_sprites_as_classes/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/09_performance/04_sprites_as_classes/app/main.rb
** Processing line: ~ # Sprites represented as Classes using the queue ~args.outputs.sprites~.~
- Inside source: true
*** True Line Result
# Sprites represented as Classes using the queue ~args.outputs.sprites~.
** Processing line: ~ # gives you full control of property declaration and method invocation.~
- Inside source: true
*** True Line Result
# gives you full control of property declaration and method invocation.
** Processing line: ~ # They are more performant than OpenEntities and StrictEntities, but more code upfront.~
- Inside source: true
*** True Line Result
# They are more performant than OpenEntities and StrictEntities, but more code upfront.
** Processing line: ~ class Star~
- Inside source: true
*** True Line Result
class Star
** Processing line: ~ attr_sprite~
- Inside source: true
*** True Line Result
attr_sprite
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize grid~
- Inside source: true
*** True Line Result
def initialize grid
** Processing line: ~ @grid = grid~
- Inside source: true
*** True Line Result
@grid = grid
** Processing line: ~ @x = (rand @grid.w) * -1~
- Inside source: true
*** True Line Result
@x = (rand @grid.w) * -1
** Processing line: ~ @y = (rand @grid.h) * -1~
- Inside source: true
*** True Line Result
@y = (rand @grid.h) * -1
** Processing line: ~ @w = 4~
- Inside source: true
*** True Line Result
@w = 4
** Processing line: ~ @h = 4~
- Inside source: true
*** True Line Result
@h = 4
** Processing line: ~ @s = 1 + (4.randomize :ratio)~
- Inside source: true
*** True Line Result
@s = 1 + (4.randomize :ratio)
** Processing line: ~ @path = 'sprites/tiny-star.png'~
- Inside source: true
*** True Line Result
@path = 'sprites/tiny-star.png'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def move~
- Inside source: true
*** True Line Result
def move
** Processing line: ~ @x += @s~
- Inside source: true
*** True Line Result
@x += @s
** Processing line: ~ @y += @s~
- Inside source: true
*** True Line Result
@y += @s
** Processing line: ~ @x = (rand @grid.w) * -1 if @x > @grid.right~
- Inside source: true
*** True Line Result
@x = (rand @grid.w) * -1 if @x > @grid.right
** Processing line: ~ @y = (rand @grid.h) * -1 if @y > @grid.top~
- Inside source: true
*** True Line Result
@y = (rand @grid.h) * -1 if @y > @grid.top
** 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: ~ # calls methods needed for game to run properly~
- Inside source: true
*** True Line Result
# calls methods needed for game to run properly
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** 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: ~ 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| Star.new args.grid }~
- Inside source: true
*** True Line Result
args.state.stars = args.state.star_count.map { |i| Star.new args.grid }
** 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(&:move)~
- Inside source: true
*** True Line Result
args.state.stars.each(&:move)
** 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 - Static Sprites As Classes - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Performance - Static Sprites As Classes - 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/05_static_sprites_as_classes/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/09_performance/05_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
# 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~
- Inside source: true
*** True Line Result
# 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~
- Inside source: true
*** True Line Result
# by reference. You get better performance, but you are mutating state of held objects
** Processing line: ~ # which is less functional/data oriented.~
- Inside source: true
*** True Line Result
# which is less functional/data oriented.
** Processing line: ~ class Star~
- Inside source: true
*** True Line Result
class Star
** Processing line: ~ attr_sprite~
- Inside source: true
*** True Line Result
attr_sprite
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize grid~
- Inside source: true
*** True Line Result
def initialize grid
** Processing line: ~ @grid = grid~
- Inside source: true
*** True Line Result
@grid = grid
** Processing line: ~ @x = (rand @grid.w) * -1~
- Inside source: true
*** True Line Result
@x = (rand @grid.w) * -1
** Processing line: ~ @y = (rand @grid.h) * -1~
- Inside source: true
*** True Line Result
@y = (rand @grid.h) * -1
** Processing line: ~ @w = 4~
- Inside source: true
*** True Line Result
@w = 4
** Processing line: ~ @h = 4~
- Inside source: true
*** True Line Result
@h = 4
** Processing line: ~ @s = 1 + (4.randomize :ratio)~
- Inside source: true
*** True Line Result
@s = 1 + (4.randomize :ratio)
** Processing line: ~ @path = 'sprites/tiny-star.png'~
- Inside source: true
*** True Line Result
@path = 'sprites/tiny-star.png'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def move~
- Inside source: true
*** True Line Result
def move
** Processing line: ~ @x += @s~
- Inside source: true
*** True Line Result
@x += @s
** Processing line: ~ @y += @s~
- Inside source: true
*** True Line Result
@y += @s
** Processing line: ~ @x = (rand @grid.w) * -1 if @x > @grid.right~
- Inside source: true
*** True Line Result
@x = (rand @grid.w) * -1 if @x > @grid.right
** Processing line: ~ @y = (rand @grid.h) * -1 if @y > @grid.top~
- Inside source: true
*** True Line Result
@y = (rand @grid.h) * -1 if @y > @grid.top
** 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: ~ # calls methods needed for game to run properly~
- Inside source: true
*** True Line Result
# calls methods needed for game to run properly
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** 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: ~ 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| Star.new args.grid }~
- Inside source: true
*** True Line Result
args.state.stars = args.state.star_count.map { |i| Star.new args.grid }
** 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(&:move)~
- Inside source: true
*** True Line Result
args.state.stars.each(&:move)
** 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 - Static Sprites As Classes With Custom Drawing - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Performance - Static Sprites As Classes With Custom Drawing - 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/06_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
** 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
# 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.~
- Inside source: true
*** True Line Result
# 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~
- Inside source: true
*** True Line Result
# There are tradeoffs for all this speed if the creation of a full blown class, and bypassing
** Processing line: ~ # functional/data-oriented practices.~
- Inside source: true
*** True Line Result
# functional/data-oriented practices.
** Processing line: ~ class Star~
- Inside source: true
*** True Line Result
class Star
** Processing line: ~ def initialize grid~
- Inside source: true
*** True Line Result
def initialize grid
** Processing line: ~ @grid = grid~
- Inside source: true
*** True Line Result
@grid = grid
** Processing line: ~ @x = (rand @grid.w) * -1~
- Inside source: true
*** True Line Result
@x = (rand @grid.w) * -1
** Processing line: ~ @y = (rand @grid.h) * -1~
- Inside source: true
*** True Line Result
@y = (rand @grid.h) * -1
** Processing line: ~ @w = 4~
- Inside source: true
*** True Line Result
@w = 4
** Processing line: ~ @h = 4~
- Inside source: true
*** True Line Result
@h = 4
** Processing line: ~ @s = 1 + (4.randomize :ratio)~
- Inside source: true
*** True Line Result
@s = 1 + (4.randomize :ratio)
** Processing line: ~ @path = 'sprites/tiny-star.png'~
- Inside source: true
*** True Line Result
@path = 'sprites/tiny-star.png'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def move~
- Inside source: true
*** True Line Result
def move
** Processing line: ~ @x += @s~
- Inside source: true
*** True Line Result
@x += @s
** Processing line: ~ @y += @s~
- Inside source: true
*** True Line Result
@y += @s
** Processing line: ~ @x = (rand @grid.w) * -1 if @x > @grid.right~
- Inside source: true
*** True Line Result
@x = (rand @grid.w) * -1 if @x > @grid.right
** Processing line: ~ @y = (rand @grid.h) * -1 if @y > @grid.top~
- Inside source: true
*** True Line Result
@y = (rand @grid.h) * -1 if @y > @grid.top
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the object that is in args.outputs.sprites (or static_sprites)~
- Inside source: true
*** True Line Result
# if the object that is in args.outputs.sprites (or static_sprites)
** Processing line: ~ # respond_to? :draw_override, then the method is invoked giving you~
- Inside source: true
*** True Line Result
# respond_to? :draw_override, then the method is invoked giving you
** Processing line: ~ # access to the class used to draw to the canvas.~
- Inside source: true
*** True Line Result
# access to the class used to draw to the canvas.
** Processing line: ~ def draw_override ffi_draw~
- Inside source: true
*** True Line Result
def draw_override ffi_draw
** Processing line: ~ # first move then draw~
- Inside source: true
*** True Line Result
# first move then draw
** Processing line: ~ move~
- Inside source: true
*** True Line Result
move
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The argument order for ffi.draw_sprite is:~
- Inside source: true
*** True Line Result
# The argument order for ffi.draw_sprite is:
** Processing line: ~ # x, y, w, h, path~
- Inside source: true
*** True Line Result
# x, y, w, h, path
** Processing line: ~ ffi_draw.draw_sprite @x, @y, @w, @h, @path~
- Inside source: true
*** True Line Result
ffi_draw.draw_sprite @x, @y, @w, @h, @path
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The argument order for ffi_draw.draw_sprite_2 is (pass in nil for default value):~
- Inside source: true
*** True Line Result
# The argument order for ffi_draw.draw_sprite_2 is (pass in nil for default value):
** Processing line: ~ # x, y, w, h, path,~
- Inside source: true
*** True Line Result
# x, y, w, h, path,
** Processing line: ~ # angle, alpha~
- Inside source: true
*** True Line Result
# angle, alpha
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The argument order for ffi_draw.draw_sprite_3 is:~
- Inside source: true
*** True Line Result
# The argument order for ffi_draw.draw_sprite_3 is:
** Processing line: ~ # x, y, w, h,~
- Inside source: true
*** True Line Result
# x, y, w, h,
** Processing line: ~ # path,~
- Inside source: true
*** True Line Result
# path,
** Processing line: ~ # angle,~
- Inside source: true
*** True Line Result
# angle,
** Processing line: ~ # alpha, red_saturation, green_saturation, blue_saturation~
- Inside source: true
*** True Line Result
# alpha, red_saturation, green_saturation, blue_saturation
** Processing line: ~ # flip_horizontally, flip_vertically,~
- Inside source: true
*** True Line Result
# flip_horizontally, flip_vertically,
** Processing line: ~ # tile_x, tile_y, tile_w, tile_h~
- Inside source: true
*** True Line Result
# tile_x, tile_y, tile_w, tile_h
** Processing line: ~ # angle_anchor_x, angle_anchor_y,~
- Inside source: true
*** True Line Result
# angle_anchor_x, angle_anchor_y,
** Processing line: ~ # source_x, source_y, source_w, source_h~
- Inside source: true
*** True Line Result
# source_x, source_y, source_w, source_h
** 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: ~ # calls methods needed for game to run properly~
- Inside source: true
*** True Line Result
# calls methods needed for game to run properly
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** 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: ~ 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| Star.new args.grid }~
- Inside source: true
*** True Line Result
args.state.stars = args.state.star_count.map { |i| Star.new args.grid }
** Processing line: ~ args.outputs.static_sprites << args.state.stars~
- Inside source: true
*** True Line Result
args.outputs.static_sprites << args.state.stars
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render framerate~
- Inside source: true
*** True Line Result
# render framerate
** 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 - Collision Limits - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Performance - Collision Limits - 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/07_collision_limits/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/09_performance/07_collision_limits/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~ - find_all: Finds all elements of a collection that meet certain requirements.~
- Inside source: true
*** True Line Result
- find_all: Finds all elements of a collection that meet certain requirements.
** Processing line: ~ In this sample app, we're finding all bodies that intersect with the center body.~
- Inside source: true
*** True Line Result
In this sample app, we're finding all bodies that intersect with the center body.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
- Inside source: true
*** True Line Result
- args.outputs.solids: An array. The values generate a solid.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
- Inside source: true
*** True Line Result
For more information about solids, go to mygame/documentation/03-solids-and-borders.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. The values generate a label.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if two rectangles intersect.~
- Inside source: true
*** True Line Result
- ARRAY#intersect_rect?: Returns true or false depending on if two rectangles intersect.
** 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: ~ # This code demonstrates moving objects that loop around once they exceed the scope of the screen,~
- Inside source: true
*** True Line Result
# This code demonstrates moving objects that loop around once they exceed the scope of the screen,
** Processing line: ~ # which has dimensions of 1280 by 720, and also detects collisions between objects called "bodies".~
- Inside source: true
*** True Line Result
# which has dimensions of 1280 by 720, and also detects collisions between objects called "bodies".
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def body_count num~
- Inside source: true
*** True Line Result
def body_count num
** Processing line: ~ $gtk.args.state.other_bodies = num.map { [1280 * rand, 720 * rand, 10, 10] } # other_bodies set using num collection~
- Inside source: true
*** True Line Result
$gtk.args.state.other_bodies = num.map { [1280 * rand, 720 * rand, 10, 10] } # other_bodies set using num collection
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Center body's values are set using an array~
- Inside source: true
*** True Line Result
# Center body's values are set using an array
** Processing line: ~ # Map is used to set values of 2000 other bodies~
- Inside source: true
*** True Line Result
# Map is used to set values of 2000 other bodies
** Processing line: ~ # All bodies that intersect with center body are stored in collisions collection~
- Inside source: true
*** True Line Result
# All bodies that intersect with center body are stored in collisions collection
** Processing line: ~ args.state.center_body ||= [640 - 100, 360 - 100, 200, 200] # calculations done to place body in center~
- Inside source: true
*** True Line Result
args.state.center_body ||= [640 - 100, 360 - 100, 200, 200] # calculations done to place body in center
** Processing line: ~ args.state.other_bodies ||= 2000.map { [1280 * rand, 720 * rand, 10, 10] } # 2000 bodies given random position on screen~
- Inside source: true
*** True Line Result
args.state.other_bodies ||= 2000.map { [1280 * rand, 720 * rand, 10, 10] } # 2000 bodies given random position on screen
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # finds all bodies that intersect with center body, stores them in collisions~
- Inside source: true
*** True Line Result
# finds all bodies that intersect with center body, stores them in collisions
** Processing line: ~ collisions = args.state.other_bodies.find_all { |b| b.intersect_rect? args.state.center_body }~
- Inside source: true
*** True Line Result
collisions = args.state.other_bodies.find_all { |b| b.intersect_rect? args.state.center_body }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.borders << args.state.center_body # outputs center body as a black border~
- Inside source: true
*** True Line Result
args.borders << args.state.center_body # outputs center body as a black border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # transparency changes based on number of collisions; the more collisions, the redder (more transparent) the box becomes~
- Inside source: true
*** True Line Result
# transparency changes based on number of collisions; the more collisions, the redder (more transparent) the box becomes
** Processing line: ~ args.solids << [args.state.center_body, 255, 0, 0, collisions.length * 5] # center body is red solid~
- Inside source: true
*** True Line Result
args.solids << [args.state.center_body, 255, 0, 0, collisions.length * 5] # center body is red solid
** Processing line: ~ args.solids << args.state.other_bodies # other bodies are output as (black) solids, as well~
- Inside source: true
*** True Line Result
args.solids << args.state.other_bodies # other bodies are output as (black) solids, as well
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.labels << [10, 30, args.gtk.current_framerate] # outputs frame rate in bottom left corner~
- Inside source: true
*** True Line Result
args.labels << [10, 30, args.gtk.current_framerate] # outputs frame rate in bottom left corner
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Bodies are returned to bottom left corner if positions exceed scope of screen~
- Inside source: true
*** True Line Result
# Bodies are returned to bottom left corner if positions exceed scope of screen
** Processing line: ~ args.state.other_bodies.each do |b| # for each body in the other_bodies collection~
- Inside source: true
*** True Line Result
args.state.other_bodies.each do |b| # for each body in the other_bodies collection
** Processing line: ~ b.x += 5 # x and y are both incremented by 5~
- Inside source: true
*** True Line Result
b.x += 5 # x and y are both incremented by 5
** Processing line: ~ b.y += 5~
- Inside source: true
*** True Line Result
b.y += 5
** Processing line: ~ b.x = 0 if b.x > 1280 # x becomes 0 if star exceeds scope of screen (goes too far right)~
- Inside source: true
*** True Line Result
b.x = 0 if b.x > 1280 # x becomes 0 if star exceeds scope of screen (goes too far right)
** Processing line: ~ b.y = 0 if b.y > 720 # y becomes 0 if star exceeds scope of screen (goes too far up)~
- Inside source: true
*** True Line Result
b.y = 0 if b.y > 720 # y becomes 0 if star exceeds scope of screen (goes too far up)
** 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: ~ # Resets the game.~
- Inside source: true
*** True Line Result
# Resets the game.
** 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: ~* Advanced Debugging - Trace Debugging - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Debugging - Trace Debugging - 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/01_trace_debugging/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/10_advanced_debugging/01_trace_debugging/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 method1 num~
- Inside source: true
*** True Line Result
def method1 num
** Processing line: ~ method2 num~
- Inside source: true
*** True Line Result
method2 num
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def method2 num~
- Inside source: true
*** True Line Result
def method2 num
** Processing line: ~ method3 num~
- Inside source: true
*** True Line Result
method3 num
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def method3 num~
- Inside source: true
*** True Line Result
def method3 num
** Processing line: ~ method4 num~
- Inside source: true
*** True Line Result
method4 num
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def method4 num~
- Inside source: true
*** True Line Result
def method4 num
** Processing line: ~ if num == 1~
- Inside source: true
*** True Line Result
if num == 1
** Processing line: ~ puts "UNLUCKY #{num}."~
- Inside source: true
*** True Line Result
puts "UNLUCKY #{num}."
** Processing line: ~ state.unlucky_count += 1~
- Inside source: true
*** True Line Result
state.unlucky_count += 1
** Processing line: ~ if state.unlucky_count > 3~
- Inside source: true
*** True Line Result
if state.unlucky_count > 3
** Processing line: ~ raise "NAT 1 finally occurred. Check app/trace.txt for all method invocation history."~
- Inside source: true
*** True Line Result
raise "NAT 1 finally occurred. Check app/trace.txt for all method invocation history."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ puts "LUCKY #{num}."~
- Inside source: true
*** True Line Result
puts "LUCKY #{num}."
** 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~
- Inside source: true
*** True Line Result
def tick
** Processing line: ~ state.roll_history ||= []~
- Inside source: true
*** True Line Result
state.roll_history ||= []
** Processing line: ~ state.roll_history << rand(20) + 1~
- Inside source: true
*** True Line Result
state.roll_history << rand(20) + 1
** Processing line: ~ state.countdown ||= 600~
- Inside source: true
*** True Line Result
state.countdown ||= 600
** Processing line: ~ state.countdown -= 1~
- Inside source: true
*** True Line Result
state.countdown -= 1
** Processing line: ~ state.unlucky_count ||= 0~
- Inside source: true
*** True Line Result
state.unlucky_count ||= 0
** Processing line: ~ outputs.labels << [640, 360, "A dice roll of 1 will cause an exception.", 0, 1]~
- Inside source: true
*** True Line Result
outputs.labels << [640, 360, "A dice roll of 1 will cause an exception.", 0, 1]
** Processing line: ~ if state.countdown > 0~
- Inside source: true
*** True Line Result
if state.countdown > 0
** Processing line: ~ outputs.labels << [640, 340, "Dice roll countdown: #{state.countdown}", 0, 1]~
- Inside source: true
*** True Line Result
outputs.labels << [640, 340, "Dice roll countdown: #{state.countdown}", 0, 1]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.attempts ||= 0~
- Inside source: true
*** True Line Result
state.attempts ||= 0
** Processing line: ~ state.attempts += 1~
- Inside source: true
*** True Line Result
state.attempts += 1
** Processing line: ~ outputs.labels << [640, 340, "ROLLING! #{state.attempts}", 0, 1]~
- Inside source: true
*** True Line Result
outputs.labels << [640, 340, "ROLLING! #{state.attempts}", 0, 1]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ return if state.countdown > 0~
- Inside source: true
*** True Line Result
return if state.countdown > 0
** Processing line: ~ method1 state.roll_history[-1]~
- Inside source: true
*** True Line Result
method1 state.roll_history[-1]
** 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: ~ trace! $game # <------------------- TRACING ENABLED FOR THIS OBJECT~
- Inside source: true
*** True Line Result
trace! $game # <------------------- TRACING ENABLED FOR THIS OBJECT
** 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: ~#+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 Classes - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Debugging - Trace Debugging Classes - 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/02_trace_debugging_classes/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/10_advanced_debugging/02_trace_debugging_classes/app/main.rb
** Processing line: ~ class Foobar~
- Inside source: true
*** True Line Result
class Foobar
** Processing line: ~ def initialize~
- Inside source: true
*** True Line Result
def initialize
** Processing line: ~ trace! # Trace is added to the constructor.~
- Inside source: true
*** True Line Result
trace! # Trace is added to the constructor.
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def clicky args~
- Inside source: true
*** True Line Result
def clicky args
** Processing line: ~ return unless args.inputs.mouse.click~
- Inside source: true
*** True Line Result
return unless args.inputs.mouse.click
** Processing line: ~ try_rand rand~
- Inside source: true
*** True Line Result
try_rand rand
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def try_rand num~
- Inside source: true
*** True Line Result
def try_rand num
** Processing line: ~ return if num < 0.9~
- Inside source: true
*** True Line Result
return if num < 0.9
** Processing line: ~ raise "Exception finally occurred. Take a look at logs/trace.txt #{num}."~
- Inside source: true
*** True Line Result
raise "Exception finally occurred. Take a look at logs/trace.txt #{num}."
** 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.labels << [640, 360, "Start clicking. Eventually an exception will be thrown. Then look at logs/trace.txt.", 0, 1]~
- Inside source: true
*** True Line Result
args.labels << [640, 360, "Start clicking. Eventually an exception will be thrown. Then look at logs/trace.txt.", 0, 1]
** Processing line: ~ args.state.foobar = Foobar.new if args.tick_count~
- Inside source: true
*** True Line Result
args.state.foobar = Foobar.new if args.tick_count
** Processing line: ~ return unless args.state.foobar~
- Inside source: true
*** True Line Result
return unless args.state.foobar
** Processing line: ~ args.state.foobar.clicky args~
- Inside source: true
*** True Line Result
args.state.foobar.clicky args
** 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 - Unit Tests - exception_raising_tests.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Debugging - Unit Tests - exception_raising_tests.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/03_unit_tests/exception_raising_tests.rb~
- Inside source: true
*** True Line Result
# ./samples/10_advanced_debugging/03_unit_tests/exception_raising_tests.rb
** Processing line: ~ begin :shared~
- Inside source: true
*** True Line Result
begin :shared
** Processing line: ~ class ExceptionalClass~
- Inside source: true
*** True Line Result
class ExceptionalClass
** Processing line: ~ def initialize exception_to_throw = nil~
- Inside source: true
*** True Line Result
def initialize exception_to_throw = nil
** Processing line: ~ raise exception_to_throw if exception_to_throw~
- Inside source: true
*** True Line Result
raise exception_to_throw if exception_to_throw
** 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 test_exception_in_newing_object args, assert~
- Inside source: true
*** True Line Result
def test_exception_in_newing_object args, assert
** Processing line: ~ begin~
- Inside source: true
*** True Line Result
begin
** Processing line: ~ ExceptionalClass.new TypeError~
- Inside source: true
*** True Line Result
ExceptionalClass.new TypeError
** Processing line: ~ raise "Exception wasn't thrown!"~
- Inside source: true
*** True Line Result
raise "Exception wasn't thrown!"
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ assert.equal! e.class, TypeError, "Exceptions within constructor should be retained."~
- Inside source: true
*** True Line Result
assert.equal! e.class, TypeError, "Exceptions within constructor should be retained."
** 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: ~ puts "running tests"~
- Inside source: true
*** True Line Result
puts "running tests"
** Processing line: ~ $gtk.reset 100~
- Inside source: true
*** True Line Result
$gtk.reset 100
** Processing line: ~ $gtk.log_level = :off~
- Inside source: true
*** True Line Result
$gtk.log_level = :off
** Processing line: ~ $gtk.tests.start~
- Inside source: true
*** True Line Result
$gtk.tests.start
** 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 - Unit Tests - gen_docs.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Debugging - Unit Tests - gen_docs.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/03_unit_tests/gen_docs.rb~
- Inside source: true
*** True Line Result
# ./samples/10_advanced_debugging/03_unit_tests/gen_docs.rb
** Processing line: ~ # sh ./amir-build-and-run.sh --eval samples/99_zz_gtk_unit_tests/gen_docs.rb --no-tick~
- Inside source: true
*** True Line Result
# sh ./amir-build-and-run.sh --eval samples/99_zz_gtk_unit_tests/gen_docs.rb --no-tick
** Processing line: ~ Kernel.export_docs!~
- Inside source: true
*** True Line Result
Kernel.export_docs!
** 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 - Unit Tests - geometry_tests.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Debugging - Unit Tests - geometry_tests.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/03_unit_tests/geometry_tests.rb~
- Inside source: true
*** True Line Result
# ./samples/10_advanced_debugging/03_unit_tests/geometry_tests.rb
** Processing line: ~ begin :shared~
- Inside source: true
*** True Line Result
begin :shared
** Processing line: ~ def primitive_representations x, y, w, h~
- Inside source: true
*** True Line Result
def primitive_representations x, y, w, h
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [x, y, w, h],~
- Inside source: true
*** True Line Result
[x, y, w, h],
** Processing line: ~ { x: x, y: y, w: w, h: h },~
- Inside source: true
*** True Line Result
{ x: x, y: y, w: w, h: h },
** Processing line: ~ RectForTest.new(x, y, w, h)~
- Inside source: true
*** True Line Result
RectForTest.new(x, y, w, h)
** 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: ~ class RectForTest~
- Inside source: true
*** True Line Result
class RectForTest
** Processing line: ~ attr_sprite~
- Inside source: true
*** True Line Result
attr_sprite
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize x, y, w, h~
- Inside source: true
*** True Line Result
def initialize x, y, w, h
** Processing line: ~ @x = x~
- Inside source: true
*** True Line Result
@x = x
** Processing line: ~ @y = y~
- Inside source: true
*** True Line Result
@y = y
** Processing line: ~ @w = w~
- Inside source: true
*** True Line Result
@w = w
** Processing line: ~ @h = h~
- Inside source: true
*** True Line Result
@h = h
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def to_s~
- Inside source: true
*** True Line Result
def to_s
** Processing line: ~ "RectForTest: #{[x, y, w, h]}"~
- Inside source: true
*** True Line Result
"RectForTest: #{[x, y, w, h]}"
** 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: ~ begin :intersect_rect?~
- Inside source: true
*** True Line Result
begin :intersect_rect?
** Processing line: ~ def test_intersect_rect_point args, assert~
- Inside source: true
*** True Line Result
def test_intersect_rect_point args, assert
** Processing line: ~ assert.true! [16, 13].intersect_rect?([13, 12, 4, 4]), "point intersects with rect."~
- Inside source: true
*** True Line Result
assert.true! [16, 13].intersect_rect?([13, 12, 4, 4]), "point intersects with rect."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_intersect_rect args, assert~
- Inside source: true
*** True Line Result
def test_intersect_rect args, assert
** Processing line: ~ intersecting = primitive_representations(0, 0, 100, 100) +~
- Inside source: true
*** True Line Result
intersecting = primitive_representations(0, 0, 100, 100) +
** Processing line: ~ primitive_representations(20, 20, 20, 20)~
- Inside source: true
*** True Line Result
primitive_representations(20, 20, 20, 20)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ intersecting.product(intersecting).each do |rect_one, rect_two|~
- Inside source: true
*** True Line Result
intersecting.product(intersecting).each do |rect_one, rect_two|
** Processing line: ~ assert.true! rect_one.intersect_rect?(rect_two),~
- Inside source: true
*** True Line Result
assert.true! rect_one.intersect_rect?(rect_two),
** Processing line: ~ "intersect_rect? assertion failed for #{rect_one}, #{rect_two} (expected true)."~
- Inside source: true
*** True Line Result
"intersect_rect? assertion failed for #{rect_one}, #{rect_two} (expected true)."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ not_intersecting = [~
- Inside source: true
*** True Line Result
not_intersecting = [
** Processing line: ~ [ 0, 0, 5, 5],~
- Inside source: true
*** True Line Result
[ 0, 0, 5, 5],
** Processing line: ~ { x: 10, y: 10, w: 5, h: 5 },~
- Inside source: true
*** True Line Result
{ x: 10, y: 10, w: 5, h: 5 },
** Processing line: ~ RectForTest.new(20, 20, 5, 5)~
- Inside source: true
*** True Line Result
RectForTest.new(20, 20, 5, 5)
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ not_intersecting.product(not_intersecting)~
- Inside source: true
*** True Line Result
not_intersecting.product(not_intersecting)
** Processing line: ~ .reject { |rect_one, rect_two| rect_one == rect_two }~
- Inside source: true
*** True Line Result
.reject { |rect_one, rect_two| rect_one == rect_two }
** Processing line: ~ .each do |rect_one, rect_two|~
- Inside source: true
*** True Line Result
.each do |rect_one, rect_two|
** Processing line: ~ assert.false! rect_one.intersect_rect?(rect_two),~
- Inside source: true
*** True Line Result
assert.false! rect_one.intersect_rect?(rect_two),
** Processing line: ~ "intersect_rect? assertion failed for #{rect_one}, #{rect_two} (expected false)."~
- Inside source: true
*** True Line Result
"intersect_rect? assertion failed for #{rect_one}, #{rect_two} (expected false)."
** 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: ~ begin :inside_rect?~
- Inside source: true
*** True Line Result
begin :inside_rect?
** Processing line: ~ def assert_inside_rect outer: nil, inner: nil, expected: nil, assert: nil~
- Inside source: true
*** True Line Result
def assert_inside_rect outer: nil, inner: nil, expected: nil, assert: nil
** Processing line: ~ assert.true! inner.inside_rect?(outer) == expected,~
- Inside source: true
*** True Line Result
assert.true! inner.inside_rect?(outer) == expected,
** Processing line: ~ "inside_rect? assertion failed for outer: #{outer} inner: #{inner} (expected #{expected})."~
- Inside source: true
*** True Line Result
"inside_rect? assertion failed for outer: #{outer} inner: #{inner} (expected #{expected})."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_inside_rect args, assert~
- Inside source: true
*** True Line Result
def test_inside_rect args, assert
** Processing line: ~ outer_rects = primitive_representations(0, 0, 10, 10)~
- Inside source: true
*** True Line Result
outer_rects = primitive_representations(0, 0, 10, 10)
** Processing line: ~ inner_rects = primitive_representations(1, 1, 5, 5)~
- Inside source: true
*** True Line Result
inner_rects = primitive_representations(1, 1, 5, 5)
** Processing line: ~ primitive_representations(0, 0, 10, 10).product(primitive_representations(1, 1, 5, 5))~
- Inside source: true
*** True Line Result
primitive_representations(0, 0, 10, 10).product(primitive_representations(1, 1, 5, 5))
** Processing line: ~ .each do |outer, inner|~
- Inside source: true
*** True Line Result
.each do |outer, inner|
** Processing line: ~ assert_inside_rect outer: outer, inner: inner,~
- Inside source: true
*** True Line Result
assert_inside_rect outer: outer, inner: inner,
** Processing line: ~ expected: true, assert: assert~
- Inside source: true
*** True Line Result
expected: true, assert: assert
** 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: ~ begin :angle_to~
- Inside source: true
*** True Line Result
begin :angle_to
** Processing line: ~ def test_angle_to args, assert~
- Inside source: true
*** True Line Result
def test_angle_to args, assert
** Processing line: ~ origins = primitive_representations(0, 0, 0, 0)~
- Inside source: true
*** True Line Result
origins = primitive_representations(0, 0, 0, 0)
** Processing line: ~ rights = primitive_representations(1, 0, 0, 0)~
- Inside source: true
*** True Line Result
rights = primitive_representations(1, 0, 0, 0)
** Processing line: ~ aboves = primitive_representations(0, 1, 0, 0)~
- Inside source: true
*** True Line Result
aboves = primitive_representations(0, 1, 0, 0)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ origins.product(aboves).each do |origin, above|~
- Inside source: true
*** True Line Result
origins.product(aboves).each do |origin, above|
** Processing line: ~ assert.equal! origin.angle_to(above), 90,~
- Inside source: true
*** True Line Result
assert.equal! origin.angle_to(above), 90,
** Processing line: ~ "A point directly above should be 90 degrees."~
- Inside source: true
*** True Line Result
"A point directly above should be 90 degrees."
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! above.angle_from(origin), 90,~
- Inside source: true
*** True Line Result
assert.equal! above.angle_from(origin), 90,
** Processing line: ~ "A point coming from above should be 90 degrees."~
- Inside source: true
*** True Line Result
"A point coming from above should be 90 degrees."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ origins.product(rights).each do |origin, right|~
- Inside source: true
*** True Line Result
origins.product(rights).each do |origin, right|
** Processing line: ~ assert.equal! origin.angle_to(right) % 360, 0,~
- Inside source: true
*** True Line Result
assert.equal! origin.angle_to(right) % 360, 0,
** Processing line: ~ "A point directly to the right should be 0 degrees."~
- Inside source: true
*** True Line Result
"A point directly to the right should be 0 degrees."
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! right.angle_from(origin) % 360, 0,~
- Inside source: true
*** True Line Result
assert.equal! right.angle_from(origin) % 360, 0,
** Processing line: ~ "A point coming from the right should be 0 degrees."~
- Inside source: true
*** True Line Result
"A point coming from the right should be 0 degrees."
** 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~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ begin :scale_rect~
- Inside source: true
*** True Line Result
begin :scale_rect
** Processing line: ~ def test_scale_rect args, assert~
- Inside source: true
*** True Line Result
def test_scale_rect args, assert
** Processing line: ~ assert.equal! [0, 0, 100, 100].scale_rect(0.5, 0.5),~
- Inside source: true
*** True Line Result
assert.equal! [0, 0, 100, 100].scale_rect(0.5, 0.5),
** Processing line: ~ [25.0, 25.0, 50.0, 50.0]~
- Inside source: true
*** True Line Result
[25.0, 25.0, 50.0, 50.0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! [0, 0, 100, 100].scale_rect(0.5),~
- Inside source: true
*** True Line Result
assert.equal! [0, 0, 100, 100].scale_rect(0.5),
** Processing line: ~ [0.0, 0.0, 50.0, 50.0]~
- Inside source: true
*** True Line Result
[0.0, 0.0, 50.0, 50.0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! [0, 0, 100, 100].scale_rect_extended(percentage_x: 0.5, percentage_y: 0.5, anchor_x: 0.5, anchor_y: 0.5),~
- Inside source: true
*** True Line Result
assert.equal! [0, 0, 100, 100].scale_rect_extended(percentage_x: 0.5, percentage_y: 0.5, anchor_x: 0.5, anchor_y: 0.5),
** Processing line: ~ [25.0, 25.0, 50.0, 50.0]~
- Inside source: true
*** True Line Result
[25.0, 25.0, 50.0, 50.0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! [0, 0, 100, 100].scale_rect_extended(percentage_x: 0.5, percentage_y: 0.5, anchor_x: 0, anchor_y: 0),~
- Inside source: true
*** True Line Result
assert.equal! [0, 0, 100, 100].scale_rect_extended(percentage_x: 0.5, percentage_y: 0.5, anchor_x: 0, anchor_y: 0),
** Processing line: ~ [0.0, 0.0, 50.0, 50.0]~
- Inside source: true
*** True Line Result
[0.0, 0.0, 50.0, 50.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: ~ puts "running tests"~
- Inside source: true
*** True Line Result
puts "running tests"
** Processing line: ~ $gtk.reset 100~
- Inside source: true
*** True Line Result
$gtk.reset 100
** Processing line: ~ $gtk.log_level = :off~
- Inside source: true
*** True Line Result
$gtk.log_level = :off
** Processing line: ~ $gtk.tests.start~
- Inside source: true
*** True Line Result
$gtk.tests.start
** 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 - Unit Tests - http_tests.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Debugging - Unit Tests - http_tests.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/03_unit_tests/http_tests.rb~
- Inside source: true
*** True Line Result
# ./samples/10_advanced_debugging/03_unit_tests/http_tests.rb
** Processing line: ~ def try_assert_or_schedule args, assert~
- Inside source: true
*** True Line Result
def try_assert_or_schedule args, assert
** Processing line: ~ if $result[:complete]~
- Inside source: true
*** True Line Result
if $result[:complete]
** Processing line: ~ log_info "Request completed! Verifying."~
- Inside source: true
*** True Line Result
log_info "Request completed! Verifying."
** Processing line: ~ if $result[:http_response_code] != 200~
- Inside source: true
*** True Line Result
if $result[:http_response_code] != 200
** Processing line: ~ log_info "The request yielded a result of #{$result[:http_response_code]} instead of 200."~
- Inside source: true
*** True Line Result
log_info "The request yielded a result of #{$result[:http_response_code]} instead of 200."
** Processing line: ~ exit~
- Inside source: true
*** True Line Result
exit
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ log_info ":try_assert_or_schedule succeeded!"~
- Inside source: true
*** True Line Result
log_info ":try_assert_or_schedule succeeded!"
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.gtk.schedule_callback Kernel.tick_count + 10 do~
- Inside source: true
*** True Line Result
args.gtk.schedule_callback Kernel.tick_count + 10 do
** Processing line: ~ try_assert_or_schedule args, assert~
- Inside source: true
*** True Line Result
try_assert_or_schedule args, assert
** 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 test_http args, assert~
- Inside source: true
*** True Line Result
def test_http args, assert
** Processing line: ~ $result = $gtk.http_get 'http://dragonruby.org'~
- Inside source: true
*** True Line Result
$result = $gtk.http_get 'http://dragonruby.org'
** Processing line: ~ try_assert_or_schedule args, assert~
- Inside source: true
*** True Line Result
try_assert_or_schedule args, assert
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "running tests"~
- Inside source: true
*** True Line Result
puts "running tests"
** Processing line: ~ $gtk.reset 100~
- Inside source: true
*** True Line Result
$gtk.reset 100
** Processing line: ~ $gtk.log_level = :off~
- Inside source: true
*** True Line Result
$gtk.log_level = :off
** Processing line: ~ $gtk.tests.start~
- Inside source: true
*** True Line Result
$gtk.tests.start
** 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 - Unit Tests - object_to_primitive_tests.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Debugging - Unit Tests - object_to_primitive_tests.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/03_unit_tests/object_to_primitive_tests.rb~
- Inside source: true
*** True Line Result
# ./samples/10_advanced_debugging/03_unit_tests/object_to_primitive_tests.rb
** Processing line: ~ class PlayerSpriteForTest~
- Inside source: true
*** True Line Result
class PlayerSpriteForTest
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_array_to_sprite args, assert~
- Inside source: true
*** True Line Result
def test_array_to_sprite args, assert
** Processing line: ~ array = [[0, 0, 100, 100, "test.png"]].sprites~
- Inside source: true
*** True Line Result
array = [[0, 0, 100, 100, "test.png"]].sprites
** Processing line: ~ puts "No exception was thrown. Sweet!"~
- Inside source: true
*** True Line Result
puts "No exception was thrown. Sweet!"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_class_to_sprite args, assert~
- Inside source: true
*** True Line Result
def test_class_to_sprite args, assert
** Processing line: ~ array = [PlayerSprite.new].sprites~
- Inside source: true
*** True Line Result
array = [PlayerSprite.new].sprites
** Processing line: ~ assert.true! array.first.is_a?(PlayerSprite)~
- Inside source: true
*** True Line Result
assert.true! array.first.is_a?(PlayerSprite)
** Processing line: ~ puts "No exception was thrown. Sweet!"~
- Inside source: true
*** True Line Result
puts "No exception was thrown. Sweet!"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.reset 100~
- Inside source: true
*** True Line Result
$gtk.reset 100
** Processing line: ~ $gtk.log_level = :off~
- Inside source: true
*** True Line Result
$gtk.log_level = :off
** Processing line: ~ $gtk.tests.start~
- Inside source: true
*** True Line Result
$gtk.tests.start
** 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 - Unit Tests - parsing_tests.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Debugging - Unit Tests - parsing_tests.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/03_unit_tests/parsing_tests.rb~
- Inside source: true
*** True Line Result
# ./samples/10_advanced_debugging/03_unit_tests/parsing_tests.rb
** Processing line: ~ def test_parse_json args, assert~
- Inside source: true
*** True Line Result
def test_parse_json args, assert
** Processing line: ~ result = args.gtk.parse_json '{ "name": "John Doe", "aliases": ["JD"] }'~
- Inside source: true
*** True Line Result
result = args.gtk.parse_json '{ "name": "John Doe", "aliases": ["JD"] }'
** Processing line: ~ assert.equal! result, { "name"=>"John Doe", "aliases"=>["JD"] }, "Parsing JSON failed."~
- Inside source: true
*** True Line Result
assert.equal! result, { "name"=>"John Doe", "aliases"=>["JD"] }, "Parsing JSON failed."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_parse_xml args, assert~
- Inside source: true
*** True Line Result
def test_parse_xml args, assert
** Processing line: ~ result = args.gtk.parse_xml <<-S~
- Inside source: true
*** True Line Result
result = args.gtk.parse_xml <<-S
** Processing line: ~ ~
- Inside source: true
*** True Line Result
** Processing line: ~ John Doe~
- Inside source: true
*** True Line Result
John Doe
** Processing line: ~ ~
- Inside source: true
*** True Line Result
** Processing line: ~ S~
- Inside source: true
*** True Line Result
S
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ expected = {:type=>:element,~
- Inside source: true
*** True Line Result
expected = {:type=>:element,
** Processing line: ~ :name=>nil,~
- Inside source: true
*** True Line Result
:name=>nil,
** Processing line: ~ :children=>[{:type=>:element,~
- Inside source: true
*** True Line Result
:children=>[{:type=>:element,
** Processing line: ~ :name=>"Person",~
- Inside source: true
*** True Line Result
:name=>"Person",
** Processing line: ~ :children=>[{:type=>:element,~
- Inside source: true
*** True Line Result
:children=>[{:type=>:element,
** Processing line: ~ :name=>"Name",~
- Inside source: true
*** True Line Result
:name=>"Name",
** Processing line: ~ :children=>[{:type=>:content,~
- Inside source: true
*** True Line Result
:children=>[{:type=>:content,
** Processing line: ~ :data=>"John Doe"}]}],~
- Inside source: true
*** True Line Result
:data=>"John Doe"}]}],
** Processing line: ~ :attributes=>{"id"=>"100"}}]}~
- Inside source: true
*** True Line Result
:attributes=>{"id"=>"100"}}]}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! result, expected, "Parsing xml failed."~
- Inside source: true
*** True Line Result
assert.equal! result, expected, "Parsing xml failed."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "running tests"~
- Inside source: true
*** True Line Result
puts "running tests"
** Processing line: ~ $gtk.reset 100~
- Inside source: true
*** True Line Result
$gtk.reset 100
** Processing line: ~ $gtk.log_level = :off~
- Inside source: true
*** True Line Result
$gtk.log_level = :off
** Processing line: ~ $gtk.tests.start~
- Inside source: true
*** True Line Result
$gtk.tests.start
** 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 - Unit Tests - serialize_deserialize_tests.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Debugging - Unit Tests - serialize_deserialize_tests.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/03_unit_tests/serialize_deserialize_tests.rb~
- Inside source: true
*** True Line Result
# ./samples/10_advanced_debugging/03_unit_tests/serialize_deserialize_tests.rb
** Processing line: ~ def test_serialize args, assert~
- Inside source: true
*** True Line Result
def test_serialize args, assert
** Processing line: ~ GTK::Entity.__reset_id__!~
- Inside source: true
*** True Line Result
GTK::Entity.__reset_id__!
** Processing line: ~ args.state.player_one = "test"~
- Inside source: true
*** True Line Result
args.state.player_one = "test"
** Processing line: ~ result = args.gtk.serialize_state args.state~
- Inside source: true
*** True Line Result
result = args.gtk.serialize_state args.state
** Processing line: ~ assert.equal! result, "{:entity_id=>3, :tick_count=>-1, :player_one=>\"test\"}"~
- Inside source: true
*** True Line Result
assert.equal! result, "{:entity_id=>3, :tick_count=>-1, :player_one=>\"test\"}"
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ GTK::Entity.__reset_id__!~
- Inside source: true
*** True Line Result
GTK::Entity.__reset_id__!
** Processing line: ~ args.gtk.write_file 'state.txt', ''~
- Inside source: true
*** True Line Result
args.gtk.write_file 'state.txt', ''
** Processing line: ~ result = args.gtk.serialize_state 'state.txt', args.state~
- Inside source: true
*** True Line Result
result = args.gtk.serialize_state 'state.txt', args.state
** Processing line: ~ assert.equal! result, "{:entity_id=>3, :tick_count=>-1, :player_one=>\"test\"}"~
- Inside source: true
*** True Line Result
assert.equal! result, "{:entity_id=>3, :tick_count=>-1, :player_one=>\"test\"}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_deserialize args, assert~
- Inside source: true
*** True Line Result
def test_deserialize args, assert
** Processing line: ~ GTK::Entity.__reset_id__!~
- Inside source: true
*** True Line Result
GTK::Entity.__reset_id__!
** Processing line: ~ result = args.gtk.deserialize_state '{:entity_id=>3, :tick_count=>-1, :player_one=>"test"}'~
- Inside source: true
*** True Line Result
result = args.gtk.deserialize_state '{:entity_id=>3, :tick_count=>-1, :player_one=>"test"}'
** Processing line: ~ assert.equal! result.player_one, "test"~
- Inside source: true
*** True Line Result
assert.equal! result.player_one, "test"
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ GTK::Entity.__reset_id__!~
- Inside source: true
*** True Line Result
GTK::Entity.__reset_id__!
** Processing line: ~ args.gtk.write_file 'state.txt', '{:entity_id=>3, :tick_count=>-1, :player_one=>"test"}'~
- Inside source: true
*** True Line Result
args.gtk.write_file 'state.txt', '{:entity_id=>3, :tick_count=>-1, :player_one=>"test"}'
** Processing line: ~ result = args.gtk.deserialize_state 'state.txt'~
- Inside source: true
*** True Line Result
result = args.gtk.deserialize_state 'state.txt'
** Processing line: ~ assert.equal! result.player_one, "test"~
- Inside source: true
*** True Line Result
assert.equal! result.player_one, "test"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_very_large_serialization args, assert~
- Inside source: true
*** True Line Result
def test_very_large_serialization args, assert
** Processing line: ~ GTK::Entity.__reset_id__!~
- Inside source: true
*** True Line Result
GTK::Entity.__reset_id__!
** Processing line: ~ size = 3000~
- Inside source: true
*** True Line Result
size = 3000
** Processing line: ~ size.map_with_index do |i|~
- Inside source: true
*** True Line Result
size.map_with_index do |i|
** Processing line: ~ args.state.send("k#{i}=".to_sym, i)~
- Inside source: true
*** True Line Result
args.state.send("k#{i}=".to_sym, i)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ result = args.gtk.serialize_state args.state~
- Inside source: true
*** True Line Result
result = args.gtk.serialize_state args.state
** Processing line: ~ assert.true! (args.gtk.console.log.join.include? "unlikely a string this large will deserialize correctly")~
- Inside source: true
*** True Line Result
assert.true! (args.gtk.console.log.join.include? "unlikely a string this large will deserialize correctly")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_strict_entity_serialization args, assert~
- Inside source: true
*** True Line Result
def test_strict_entity_serialization args, assert
** Processing line: ~ GTK::Entity.__reset_id__!~
- Inside source: true
*** True Line Result
GTK::Entity.__reset_id__!
** Processing line: ~ args.state.player_one = args.state.new_entity(:player, name: "Ryu")~
- Inside source: true
*** True Line Result
args.state.player_one = args.state.new_entity(:player, name: "Ryu")
** Processing line: ~ args.state.player_two = args.state.new_entity_strict(:player_strict, name: "Ken")~
- Inside source: true
*** True Line Result
args.state.player_two = args.state.new_entity_strict(:player_strict, name: "Ken")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ serialized_state = args.gtk.serialize_state args.state~
- Inside source: true
*** True Line Result
serialized_state = args.gtk.serialize_state args.state
** Processing line: ~ assert.equal! serialized_state, '{:entity_id=>1, :tick_count=>-1, :player_one=>{:entity_id=>1, :entity_name=>:player, :entity_type=>:player, :created_at=>-1, :global_created_at=>-1, :name=>"Ryu"}, :player_two=>{:entity_id=>3, :entity_name=>:player_strict, :created_at=>-1, :global_created_at_elapsed=>-1, :entity_strict=>true, :name=>"Ken"}}'~
- Inside source: true
*** True Line Result
assert.equal! serialized_state, '{:entity_id=>1, :tick_count=>-1, :player_one=>{:entity_id=>1, :entity_name=>:player, :entity_type=>:player, :created_at=>-1, :global_created_at=>-1, :name=>"Ryu"}, :player_two=>{:entity_id=>3, :entity_name=>:player_strict, :created_at=>-1, :global_created_at_elapsed=>-1, :entity_strict=>true, :name=>"Ken"}}'
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ deserialize_state = args.gtk.deserialize_state serialized_state~
- Inside source: true
*** True Line Result
deserialize_state = args.gtk.deserialize_state serialized_state
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! args.state.player_one.name, deserialize_state.player_one.name~
- Inside source: true
*** True Line Result
assert.equal! args.state.player_one.name, deserialize_state.player_one.name
** Processing line: ~ assert.true! args.state.player_one.is_a? GTK::OpenEntity~
- Inside source: true
*** True Line Result
assert.true! args.state.player_one.is_a? GTK::OpenEntity
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! args.state.player_two.name, deserialize_state.player_two.name~
- Inside source: true
*** True Line Result
assert.equal! args.state.player_two.name, deserialize_state.player_two.name
** Processing line: ~ assert.true! args.state.player_two.is_a? GTK::StrictEntity~
- Inside source: true
*** True Line Result
assert.true! args.state.player_two.is_a? GTK::StrictEntity
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_strict_entity_serialization_with_nil args, assert~
- Inside source: true
*** True Line Result
def test_strict_entity_serialization_with_nil args, assert
** Processing line: ~ GTK::Entity.__reset_id__!~
- Inside source: true
*** True Line Result
GTK::Entity.__reset_id__!
** Processing line: ~ args.state.player_one = args.state.new_entity(:player, name: "Ryu")~
- Inside source: true
*** True Line Result
args.state.player_one = args.state.new_entity(:player, name: "Ryu")
** Processing line: ~ args.state.player_two = args.state.new_entity_strict(:player_strict, name: "Ken", blood_type: nil)~
- Inside source: true
*** True Line Result
args.state.player_two = args.state.new_entity_strict(:player_strict, name: "Ken", blood_type: nil)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ serialized_state = args.gtk.serialize_state args.state~
- Inside source: true
*** True Line Result
serialized_state = args.gtk.serialize_state args.state
** Processing line: ~ assert.equal! serialized_state, '{:entity_id=>3, :tick_count=>-1, :player_one=>{:entity_id=>1, :entity_name=>:player, :entity_type=>:player, :created_at=>-1, :global_created_at=>-1, :name=>"Ryu"}, :player_two=>{:entity_id=>3, :entity_name=>:player_strict, :created_at=>-1, :global_created_at_elapsed=>-1, :entity_strict=>true, :name=>"Ken", :blood_type=>nil}}'~
- Inside source: true
*** True Line Result
assert.equal! serialized_state, '{:entity_id=>3, :tick_count=>-1, :player_one=>{:entity_id=>1, :entity_name=>:player, :entity_type=>:player, :created_at=>-1, :global_created_at=>-1, :name=>"Ryu"}, :player_two=>{:entity_id=>3, :entity_name=>:player_strict, :created_at=>-1, :global_created_at_elapsed=>-1, :entity_strict=>true, :name=>"Ken", :blood_type=>nil}}'
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ deserialized_state = args.gtk.deserialize_state serialized_state~
- Inside source: true
*** True Line Result
deserialized_state = args.gtk.deserialize_state serialized_state
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! args.state.player_one.name, deserialized_state.player_one.name~
- Inside source: true
*** True Line Result
assert.equal! args.state.player_one.name, deserialized_state.player_one.name
** Processing line: ~ assert.true! args.state.player_one.is_a? GTK::OpenEntity~
- Inside source: true
*** True Line Result
assert.true! args.state.player_one.is_a? GTK::OpenEntity
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! args.state.player_two.name, deserialized_state.player_two.name~
- Inside source: true
*** True Line Result
assert.equal! args.state.player_two.name, deserialized_state.player_two.name
** Processing line: ~ assert.equal! args.state.player_two.blood_type, deserialized_state.player_two.blood_type~
- Inside source: true
*** True Line Result
assert.equal! args.state.player_two.blood_type, deserialized_state.player_two.blood_type
** Processing line: ~ assert.equal! deserialized_state.player_two.blood_type, nil~
- Inside source: true
*** True Line Result
assert.equal! deserialized_state.player_two.blood_type, nil
** Processing line: ~ assert.true! args.state.player_two.is_a? GTK::StrictEntity~
- Inside source: true
*** True Line Result
assert.true! args.state.player_two.is_a? GTK::StrictEntity
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ deserialized_state.player_two.blood_type = :O~
- Inside source: true
*** True Line Result
deserialized_state.player_two.blood_type = :O
** Processing line: ~ assert.equal! deserialized_state.player_two.blood_type, :O~
- Inside source: true
*** True Line Result
assert.equal! deserialized_state.player_two.blood_type, :O
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_multiple_strict_entities args, assert~
- Inside source: true
*** True Line Result
def test_multiple_strict_entities args, assert
** Processing line: ~ GTK::Entity.__reset_id__!~
- Inside source: true
*** True Line Result
GTK::Entity.__reset_id__!
** Processing line: ~ args.state.player = args.state.new_entity_strict(:player_one, name: "Ryu")~
- Inside source: true
*** True Line Result
args.state.player = args.state.new_entity_strict(:player_one, name: "Ryu")
** Processing line: ~ args.state.enemy = args.state.new_entity_strict(:enemy, name: "Bison", other_property: 'extra mean')~
- Inside source: true
*** True Line Result
args.state.enemy = args.state.new_entity_strict(:enemy, name: "Bison", other_property: 'extra mean')
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ serialized_state = args.gtk.serialize_state args.state~
- Inside source: true
*** True Line Result
serialized_state = args.gtk.serialize_state args.state
** Processing line: ~ deserialized_state = args.gtk.deserialize_state serialized_state~
- Inside source: true
*** True Line Result
deserialized_state = args.gtk.deserialize_state serialized_state
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ assert.equal! deserialized_state.player.name, "Ryu"~
- Inside source: true
*** True Line Result
assert.equal! deserialized_state.player.name, "Ryu"
** Processing line: ~ assert.equal! deserialized_state.enemy.other_property, "extra mean"~
- Inside source: true
*** True Line Result
assert.equal! deserialized_state.enemy.other_property, "extra mean"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $tests.start~
- Inside source: true
*** True Line Result
$tests.start
** 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 - Unit Tests - state_serialization_experimental_tests.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Advanced Debugging - Unit Tests - state_serialization_experimental_tests.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/03_unit_tests/state_serialization_experimental_tests.rb~
- Inside source: true
*** True Line Result
# ./samples/10_advanced_debugging/03_unit_tests/state_serialization_experimental_tests.rb
** Processing line: ~ MAX_CODE_GEN_LENGTH = 50~
- Inside source: true
*** True Line Result
MAX_CODE_GEN_LENGTH = 50
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # NOTE: This is experimental/advanced stuff.~
- Inside source: true
*** True Line Result
# NOTE: This is experimental/advanced stuff.
** Processing line: ~ def needs_partitioning? target~
- Inside source: true
*** True Line Result
def needs_partitioning? target
** Processing line: ~ target[:value].to_s.length > MAX_CODE_GEN_LENGTH~
- Inside source: true
*** True Line Result
target[:value].to_s.length > MAX_CODE_GEN_LENGTH
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def partition target~
- Inside source: true
*** True Line Result
def partition target
** Processing line: ~ return [] unless needs_partitioning? target~
- Inside source: true
*** True Line Result
return [] unless needs_partitioning? target
** Processing line: ~ if target[:value].is_a? GTK::OpenEntity~
- Inside source: true
*** True Line Result
if target[:value].is_a? GTK::OpenEntity
** Processing line: ~ target[:value] = target[:value].hash~
- Inside source: true
*** True Line Result
target[:value] = target[:value].hash
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ results = []~
- Inside source: true
*** True Line Result
results = []
** Processing line: ~ idx = 0~
- Inside source: true
*** True Line Result
idx = 0
** Processing line: ~ left, right = target[:value].partition do~
- Inside source: true
*** True Line Result
left, right = target[:value].partition do
** Processing line: ~ idx += 1~
- Inside source: true
*** True Line Result
idx += 1
** Processing line: ~ idx.even?~
- Inside source: true
*** True Line Result
idx.even?
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ left, right = Hash[left], Hash[right]~
- Inside source: true
*** True Line Result
left, right = Hash[left], Hash[right]
** Processing line: ~ left = { value: left }~
- Inside source: true
*** True Line Result
left = { value: left }
** Processing line: ~ right = { value: right}~
- Inside source: true
*** True Line Result
right = { value: right}
** Processing line: ~ [left, right]~
- Inside source: true
*** True Line Result
[left, right]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def add_partition target, path, aggregate, final_result~
- Inside source: true
*** True Line Result
def add_partition target, path, aggregate, final_result
** Processing line: ~ partitions = partition target~
- Inside source: true
*** True Line Result
partitions = partition target
** Processing line: ~ partitions.each do |part|~
- Inside source: true
*** True Line Result
partitions.each do |part|
** Processing line: ~ if needs_partitioning? part~
- Inside source: true
*** True Line Result
if needs_partitioning? part
** Processing line: ~ if part[:value].keys.length == 1~
- Inside source: true
*** True Line Result
if part[:value].keys.length == 1
** Processing line: ~ first_key = part[:value].keys[0]~
- Inside source: true
*** True Line Result
first_key = part[:value].keys[0]
** Processing line: ~ new_part = { value: part[:value][first_key] }~
- Inside source: true
*** True Line Result
new_part = { value: part[:value][first_key] }
** Processing line: ~ path.push first_key~
- Inside source: true
*** True Line Result
path.push first_key
** Processing line: ~ add_partition new_part, path, aggregate, final_result~
- Inside source: true
*** True Line Result
add_partition new_part, path, aggregate, final_result
** Processing line: ~ path.pop~
- Inside source: true
*** True Line Result
path.pop
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ add_partition part, path, aggregate, final_result~
- Inside source: true
*** True Line Result
add_partition part, path, aggregate, final_result
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ final_result << { value: { __path__: [*path] } }~
- Inside source: true
*** True Line Result
final_result << { value: { __path__: [*path] } }
** Processing line: ~ final_result << { value: part[:value] }~
- Inside source: true
*** True Line Result
final_result << { value: part[:value] }
** 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 state_to_string state~
- Inside source: true
*** True Line Result
def state_to_string state
** Processing line: ~ parts_queue = []~
- Inside source: true
*** True Line Result
parts_queue = []
** Processing line: ~ final_queue = []~
- Inside source: true
*** True Line Result
final_queue = []
** Processing line: ~ add_partition({ value: state.hash },~
- Inside source: true
*** True Line Result
add_partition({ value: state.hash },
** Processing line: ~ [],~
- Inside source: true
*** True Line Result
[],
** Processing line: ~ parts_queue,~
- Inside source: true
*** True Line Result
parts_queue,
** Processing line: ~ final_queue)~
- Inside source: true
*** True Line Result
final_queue)
** Processing line: ~ final_queue.reject {|i| i[:value].keys.length == 0}.map do |i|~
- Inside source: true
*** True Line Result
final_queue.reject {|i| i[:value].keys.length == 0}.map do |i|
** Processing line: ~ i[:value].to_s~
- Inside source: true
*** True Line Result
i[:value].to_s
** Processing line: ~ end.join("\n#==================================================#\n")~
- Inside source: true
*** True Line Result
end.join("\n#==================================================#\n")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def state_from_string string~
- Inside source: true
*** True Line Result
def state_from_string string
** Processing line: ~ Kernel.eval("$load_data = {}")~
- Inside source: true
*** True Line Result
Kernel.eval("$load_data = {}")
** Processing line: ~ lines = string.split("\n#==================================================#\n")~
- Inside source: true
*** True Line Result
lines = string.split("\n#==================================================#\n")
** Processing line: ~ lines.each do |l|~
- Inside source: true
*** True Line Result
lines.each do |l|
** Processing line: ~ puts "todo: #{l}"~
- Inside source: true
*** True Line Result
puts "todo: #{l}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ GTK::OpenEntity.parse_from_hash $load_data~
- Inside source: true
*** True Line Result
GTK::OpenEntity.parse_from_hash $load_data
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_save_and_load args, assert~
- Inside source: true
*** True Line Result
def test_save_and_load args, assert
** Processing line: ~ args.state.item_1.name = "Jane"~
- Inside source: true
*** True Line Result
args.state.item_1.name = "Jane"
** Processing line: ~ string = state_to_string args.state~
- Inside source: true
*** True Line Result
string = state_to_string args.state
** Processing line: ~ state = state_from_string string~
- Inside source: true
*** True Line Result
state = state_from_string string
** Processing line: ~ assert.equal! args.state.item_1.name, state.item_1.name~
- Inside source: true
*** True Line Result
assert.equal! args.state.item_1.name, state.item_1.name
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_save_and_load_big args, assert~
- Inside source: true
*** True Line Result
def test_save_and_load_big args, assert
** Processing line: ~ size = 1000~
- Inside source: true
*** True Line Result
size = 1000
** Processing line: ~ size.map_with_index do |i|~
- Inside source: true
*** True Line Result
size.map_with_index do |i|
** Processing line: ~ args.state.send("k#{i}=".to_sym, i)~
- Inside source: true
*** True Line Result
args.state.send("k#{i}=".to_sym, i)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ string = state_to_string args.state~
- Inside source: true
*** True Line Result
string = state_to_string args.state
** Processing line: ~ state = state_from_string string~
- Inside source: true
*** True Line Result
state = state_from_string string
** Processing line: ~ size.map_with_index do |i|~
- Inside source: true
*** True Line Result
size.map_with_index do |i|
** Processing line: ~ assert.equal! args.state.send("k#{i}".to_sym), state.send("k#{i}".to_sym)~
- Inside source: true
*** True Line Result
assert.equal! args.state.send("k#{i}".to_sym), state.send("k#{i}".to_sym)
** Processing line: ~ assert.equal! args.state.send("k#{i}".to_sym), i~
- Inside source: true
*** True Line Result
assert.equal! args.state.send("k#{i}".to_sym), i
** Processing line: ~ assert.equal! state.send("k#{i}".to_sym), i~
- Inside source: true
*** True Line Result
assert.equal! state.send("k#{i}".to_sym), 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 test_save_and_load_big_nested args, assert~
- Inside source: true
*** True Line Result
def test_save_and_load_big_nested args, assert
** Processing line: ~ args.state.player_one.friend.nested_hash.k0 = 0~
- Inside source: true
*** True Line Result
args.state.player_one.friend.nested_hash.k0 = 0
** Processing line: ~ args.state.player_one.friend.nested_hash.k1 = 1~
- Inside source: true
*** True Line Result
args.state.player_one.friend.nested_hash.k1 = 1
** Processing line: ~ args.state.player_one.friend.nested_hash.k2 = 2~
- Inside source: true
*** True Line Result
args.state.player_one.friend.nested_hash.k2 = 2
** Processing line: ~ args.state.player_one.friend.nested_hash.k3 = 3~
- Inside source: true
*** True Line Result
args.state.player_one.friend.nested_hash.k3 = 3
** Processing line: ~ args.state.player_one.friend.nested_hash.k4 = 4~
- Inside source: true
*** True Line Result
args.state.player_one.friend.nested_hash.k4 = 4
** Processing line: ~ args.state.player_one.friend.nested_hash.k5 = 5~
- Inside source: true
*** True Line Result
args.state.player_one.friend.nested_hash.k5 = 5
** Processing line: ~ args.state.player_one.friend.nested_hash.k6 = 6~
- Inside source: true
*** True Line Result
args.state.player_one.friend.nested_hash.k6 = 6
** Processing line: ~ args.state.player_one.friend.nested_hash.k7 = 7~
- Inside source: true
*** True Line Result
args.state.player_one.friend.nested_hash.k7 = 7
** Processing line: ~ args.state.player_one.friend.nested_hash.k8 = 8~
- Inside source: true
*** True Line Result
args.state.player_one.friend.nested_hash.k8 = 8
** Processing line: ~ args.state.player_one.friend.nested_hash.k9 = 9~
- Inside source: true
*** True Line Result
args.state.player_one.friend.nested_hash.k9 = 9
** Processing line: ~ string = state_to_string args.state~
- Inside source: true
*** True Line Result
string = state_to_string args.state
** Processing line: ~ state = state_from_string string~
- Inside source: true
*** True Line Result
state = state_from_string string
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $gtk.reset 100~
- Inside source: true
*** True Line Result
$gtk.reset 100
** Processing line: ~ $gtk.log_level = :off~
- Inside source: true
*** True Line Result
$gtk.log_level = :off
** Processing line: ~ $gtk.tests.start~
- Inside source: true
*** True Line Result
$gtk.tests.start
** 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: ~* Http - Retrieve Images - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Http - Retrieve Images - 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/01_retrieve_images/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/11_http/01_retrieve_images/app/main.rb
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ args.outputs.background_color = [0, 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.background_color = [0, 0, 0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Show a warning at the start.~
- Inside source: true
*** True Line Result
# Show a warning at the start.
** Processing line: ~ args.state.warning_debounce ||= 11 * 60~
- Inside source: true
*** True Line Result
args.state.warning_debounce ||= 11 * 60
** Processing line: ~ if args.state.warning_debounce > 0~
- Inside source: true
*** True Line Result
if args.state.warning_debounce > 0
** Processing line: ~ args.state.warning_debounce -= 1~
- Inside source: true
*** True Line Result
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]~
- Inside source: true
*** True Line Result
args.outputs.labels << [640, 600, "This app shows random images from the Internet.", 10, 1, 255, 255, 255]
** Processing line: ~ args.outputs.labels << [640, 500, "Quit in the next few seconds if this is a problem.", 10, 1, 255, 255, 255]~
- Inside source: true
*** True Line Result
args.outputs.labels << [640, 500, "Quit in the next few seconds if this is a problem.", 10, 1, 255, 255, 255]
** Processing line: ~ args.outputs.labels << [640, 350, "#{(args.state.warning_debounce / 60.0).to_i}", 10, 1, 255, 255, 255]~
- Inside source: true
*** True Line Result
args.outputs.labels << [640, 350, "#{(args.state.warning_debounce / 60.0).to_i}", 10, 1, 255, 255, 255]
** 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: ~ args.state.download_debounce ||= 0 # start immediately, reset to non zero later.~
- Inside source: true
*** True Line Result
args.state.download_debounce ||= 0 # start immediately, reset to non zero later.
** Processing line: ~ args.state.photos ||= []~
- Inside source: true
*** True Line Result
args.state.photos ||= []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Put a little pause between each download.~
- Inside source: true
*** True Line Result
# Put a little pause between each download.
** Processing line: ~ if args.state.download.nil?~
- Inside source: true
*** True Line Result
if args.state.download.nil?
** Processing line: ~ if args.state.download_debounce > 0~
- Inside source: true
*** True Line Result
if args.state.download_debounce > 0
** Processing line: ~ args.state.download_debounce -= 1~
- Inside source: true
*** True Line Result
args.state.download_debounce -= 1
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.state.download = $gtk.http_get 'https://picsum.photos/200/300.jpg'~
- Inside source: true
*** True Line Result
args.state.download = $gtk.http_get 'https://picsum.photos/200/300.jpg'
** 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 !args.state.download.nil?~
- Inside source: true
*** True Line Result
if !args.state.download.nil?
** Processing line: ~ if args.state.download[:complete]~
- Inside source: true
*** True Line Result
if args.state.download[:complete]
** Processing line: ~ if args.state.download[:http_response_code] == 200~
- Inside source: true
*** True Line Result
if args.state.download[:http_response_code] == 200
** Processing line: ~ fname = "sprites/#{args.state.photos.length}.jpg"~
- Inside source: true
*** True Line Result
fname = "sprites/#{args.state.photos.length}.jpg"
** Processing line: ~ $gtk.write_file fname, args.state.download[:response_data]~
- Inside source: true
*** True Line Result
$gtk.write_file fname, args.state.download[:response_data]
** Processing line: ~ args.state.photos << [ 100 + rand(1080), 500 - rand(480), fname, rand(80) - 40 ]~
- Inside source: true
*** True Line Result
args.state.photos << [ 100 + rand(1080), 500 - rand(480), fname, rand(80) - 40 ]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ args.state.download = nil~
- Inside source: true
*** True Line Result
args.state.download = nil
** Processing line: ~ args.state.download_debounce = (rand(3) + 2) * 60~
- Inside source: true
*** True Line Result
args.state.download_debounce = (rand(3) + 2) * 60
** 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: ~ # draw any downloaded photos...~
- Inside source: true
*** True Line Result
# draw any downloaded photos...
** Processing line: ~ args.state.photos.each { |i|~
- Inside source: true
*** True Line Result
args.state.photos.each { |i|
** Processing line: ~ args.outputs.primitives << [i[0], i[1], 200, 300, i[2], i[3]].sprite~
- Inside source: true
*** True Line Result
args.outputs.primitives << [i[0], i[1], 200, 300, i[2], i[3]].sprite
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Draw a download progress bar...~
- Inside source: true
*** True Line Result
# Draw a download progress bar...
** Processing line: ~ args.outputs.primitives << [0, 0, 1280, 30, 0, 0, 0, 255].solid~
- Inside source: true
*** True Line Result
args.outputs.primitives << [0, 0, 1280, 30, 0, 0, 0, 255].solid
** Processing line: ~ if !args.state.download.nil?~
- Inside source: true
*** True Line Result
if !args.state.download.nil?
** Processing line: ~ br = args.state.download[:response_read]~
- Inside source: true
*** True Line Result
br = args.state.download[:response_read]
** Processing line: ~ total = args.state.download[:response_total]~
- Inside source: true
*** True Line Result
total = args.state.download[:response_total]
** Processing line: ~ if total != 0~
- Inside source: true
*** True Line Result
if total != 0
** Processing line: ~ pct = br.to_f / total.to_f~
- Inside source: true
*** True Line Result
pct = br.to_f / total.to_f
** Processing line: ~ args.outputs.primitives << [0, 0, 1280 * pct, 30, 0, 0, 255, 255].solid~
- Inside source: true
*** True Line Result
args.outputs.primitives << [0, 0, 1280 * pct, 30, 0, 0, 255, 255].solid
** 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: ~* 12 C Extensions - Basics - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* 12 C Extensions - Basics - 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/12_c_extensions/01_basics/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/12_c_extensions/01_basics/app/main.rb
** Processing line: ~ $gtk.ffi_misc.gtk_dlopen("./samples/12_c_extensions/01_basics/build.dir/ext.lib")~
- Inside source: true
*** True Line Result
$gtk.ffi_misc.gtk_dlopen("./samples/12_c_extensions/01_basics/build.dir/ext.lib")
** Processing line: ~ include FFI::CExt~
- Inside source: true
*** True Line Result
include FFI::CExt
** 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.outputs.labels << [460, 600, "square(42) = #{square(42)}"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [460, 600, "square(42) = #{square(42)}"]
** 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: ~#+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: ~* 3d - 3d Cube - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* 3d - 3d Cube - 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/3d_cube/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_3d/3d_cube/app/main.rb
** Processing line: ~ STARTX = 0.0~
- Inside source: true
*** True Line Result
STARTX = 0.0
** Processing line: ~ STARTY = 0.0~
- Inside source: true
*** True Line Result
STARTY = 0.0
** Processing line: ~ ENDY = 20.0~
- Inside source: true
*** True Line Result
ENDY = 20.0
** Processing line: ~ ENDX = 20.0~
- Inside source: true
*** True Line Result
ENDX = 20.0
** Processing line: ~ SPINPOINT = 10~
- Inside source: true
*** True Line Result
SPINPOINT = 10
** Processing line: ~ SPINDURATION = 400~
- Inside source: true
*** True Line Result
SPINDURATION = 400
** Processing line: ~ POINTSIZE = 8~
- Inside source: true
*** True Line Result
POINTSIZE = 8
** Processing line: ~ BOXDEPTH = 40~
- Inside source: true
*** True Line Result
BOXDEPTH = 40
** Processing line: ~ YAW = 1~
- Inside source: true
*** True Line Result
YAW = 1
** Processing line: ~ DISTANCE = 10~
- Inside source: true
*** True Line Result
DISTANCE = 10
** 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.outputs.background_color = [0, 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.background_color = [0, 0, 0]
** Processing line: ~ a = Math.sin(args.state.tick_count / SPINDURATION) * Math.tan(args.state.tick_count / SPINDURATION)~
- Inside source: true
*** True Line Result
a = Math.sin(args.state.tick_count / SPINDURATION) * Math.tan(args.state.tick_count / SPINDURATION)
** Processing line: ~ s = Math.sin(a)~
- Inside source: true
*** True Line Result
s = Math.sin(a)
** Processing line: ~ c = Math.cos(a)~
- Inside source: true
*** True Line Result
c = Math.cos(a)
** Processing line: ~ x = STARTX~
- Inside source: true
*** True Line Result
x = STARTX
** Processing line: ~ y = STARTY~
- Inside source: true
*** True Line Result
y = STARTY
** Processing line: ~ offset_x = (1280 - (ENDX - STARTX)) / 2~
- Inside source: true
*** True Line Result
offset_x = (1280 - (ENDX - STARTX)) / 2
** Processing line: ~ offset_y = (360 - (ENDY - STARTY)) / 2~
- Inside source: true
*** True Line Result
offset_y = (360 - (ENDY - STARTY)) / 2
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ srand(1)~
- Inside source: true
*** True Line Result
srand(1)
** Processing line: ~ while y < ENDY do~
- Inside source: true
*** True Line Result
while y < ENDY do
** Processing line: ~ while x < ENDX do~
- Inside source: true
*** True Line Result
while x < ENDX do
** Processing line: ~ if (y == STARTY ||~
- Inside source: true
*** True Line Result
if (y == STARTY ||
** Processing line: ~ y == (ENDY / 0.5) * 2 ||~
- Inside source: true
*** True Line Result
y == (ENDY / 0.5) * 2 ||
** Processing line: ~ y == (ENDY / 0.5) * 2 + 0.5 ||~
- Inside source: true
*** True Line Result
y == (ENDY / 0.5) * 2 + 0.5 ||
** Processing line: ~ y == ENDY - 0.5 ||~
- Inside source: true
*** True Line Result
y == ENDY - 0.5 ||
** Processing line: ~ x == STARTX ||~
- Inside source: true
*** True Line Result
x == STARTX ||
** Processing line: ~ x == ENDX - 0.5)~
- Inside source: true
*** True Line Result
x == ENDX - 0.5)
** Processing line: ~ z = rand(BOXDEPTH)~
- Inside source: true
*** True Line Result
z = rand(BOXDEPTH)
** Processing line: ~ z *= Math.sin(a / 2)~
- Inside source: true
*** True Line Result
z *= Math.sin(a / 2)
** Processing line: ~ x -= SPINPOINT~
- Inside source: true
*** True Line Result
x -= SPINPOINT
** Processing line: ~ u = (x * c) - (z * s)~
- Inside source: true
*** True Line Result
u = (x * c) - (z * s)
** Processing line: ~ v = (x * s) + (z * c)~
- Inside source: true
*** True Line Result
v = (x * s) + (z * c)
** Processing line: ~ k = DISTANCE.fdiv(100) + (v / 500 * YAW)~
- Inside source: true
*** True Line Result
k = DISTANCE.fdiv(100) + (v / 500 * YAW)
** Processing line: ~ u = u / k~
- Inside source: true
*** True Line Result
u = u / k
** Processing line: ~ v = y / k~
- Inside source: true
*** True Line Result
v = y / k
** Processing line: ~ w = POINTSIZE / 10 / k~
- Inside source: true
*** True Line Result
w = POINTSIZE / 10 / k
** Processing line: ~ args.outputs.sprites << { x: offset_x + u - w, y: offset_y + v - w, w: w, h: w, path: 'sprites/square-blue.png'}~
- Inside source: true
*** True Line Result
args.outputs.sprites << { x: offset_x + u - w, y: offset_y + v - w, w: w, h: w, path: 'sprites/square-blue.png'}
** Processing line: ~ x += SPINPOINT~
- Inside source: true
*** True Line Result
x += SPINPOINT
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ x += 0.5~
- Inside source: true
*** True Line Result
x += 0.5
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ y += 0.5~
- Inside source: true
*** True Line Result
y += 0.5
** Processing line: ~ x = STARTX~
- Inside source: true
*** True Line Result
x = STARTX
** 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: ~ $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 - Dueling Starships - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Arcade - Dueling Starships - 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_arcade/dueling_starships/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_arcade/dueling_starships/app/main.rb
** Processing line: ~ class DuelingSpaceships~
- Inside source: true
*** True Line Result
class DuelingSpaceships
** Processing line: ~ attr_accessor :state, :inputs, :outputs, :grid~
- Inside source: true
*** True Line Result
attr_accessor :state, :inputs, :outputs, :grid
** 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: ~ calc~
- Inside source: true
*** True Line Result
calc
** 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 defaults~
- Inside source: true
*** True Line Result
def defaults
** Processing line: ~ outputs.background_color = [0, 0, 0]~
- Inside source: true
*** True Line Result
outputs.background_color = [0, 0, 0]
** Processing line: ~ state.ship_blue ||= new_blue_ship~
- Inside source: true
*** True Line Result
state.ship_blue ||= new_blue_ship
** Processing line: ~ state.ship_red ||= new_red_ship~
- Inside source: true
*** True Line Result
state.ship_red ||= new_red_ship
** Processing line: ~ state.flames ||= []~
- Inside source: true
*** True Line Result
state.flames ||= []
** Processing line: ~ state.bullets ||= []~
- Inside source: true
*** True Line Result
state.bullets ||= []
** Processing line: ~ state.ship_blue_score ||= 0~
- Inside source: true
*** True Line Result
state.ship_blue_score ||= 0
** Processing line: ~ state.ship_red_score ||= 0~
- Inside source: true
*** True Line Result
state.ship_red_score ||= 0
** Processing line: ~ state.stars ||= 100.map do~
- Inside source: true
*** True Line Result
state.stars ||= 100.map do
** Processing line: ~ [rand.add(2).to_square(grid.w_half.randomize(:sign, :ratio),~
- Inside source: true
*** True Line Result
[rand.add(2).to_square(grid.w_half.randomize(:sign, :ratio),
** Processing line: ~ grid.h_half.randomize(:sign, :ratio)),~
- Inside source: true
*** True Line Result
grid.h_half.randomize(:sign, :ratio)),
** Processing line: ~ 128 + 128.randomize(:ratio), 255, 255]~
- Inside source: true
*** True Line Result
128 + 128.randomize(:ratio), 255, 255]
** 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 default_ship x, y, angle, sprite_path, bullet_sprite_path, color~
- Inside source: true
*** True Line Result
def default_ship x, y, angle, sprite_path, bullet_sprite_path, color
** Processing line: ~ state.new_entity(:ship,~
- Inside source: true
*** True Line Result
state.new_entity(:ship,
** Processing line: ~ { x: x,~
- Inside source: true
*** True Line Result
{ x: x,
** Processing line: ~ y: y,~
- Inside source: true
*** True Line Result
y: y,
** Processing line: ~ dy: 0,~
- Inside source: true
*** True Line Result
dy: 0,
** Processing line: ~ dx: 0,~
- Inside source: true
*** True Line Result
dx: 0,
** Processing line: ~ damage: 0,~
- Inside source: true
*** True Line Result
damage: 0,
** Processing line: ~ dead: false,~
- Inside source: true
*** True Line Result
dead: false,
** Processing line: ~ angle: angle,~
- Inside source: true
*** True Line Result
angle: angle,
** Processing line: ~ max_alpha: 255,~
- Inside source: true
*** True Line Result
max_alpha: 255,
** Processing line: ~ sprite_path: sprite_path,~
- Inside source: true
*** True Line Result
sprite_path: sprite_path,
** Processing line: ~ bullet_sprite_path: bullet_sprite_path,~
- Inside source: true
*** True Line Result
bullet_sprite_path: bullet_sprite_path,
** Processing line: ~ color: color })~
- Inside source: true
*** True Line Result
color: color })
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def new_red_ship~
- Inside source: true
*** True Line Result
def new_red_ship
** Processing line: ~ default_ship(400, 250.randomize(:sign, :ratio),~
- Inside source: true
*** True Line Result
default_ship(400, 250.randomize(:sign, :ratio),
** Processing line: ~ 180, 'sprites/ship_red.png', 'sprites/red_bullet.png',~
- Inside source: true
*** True Line Result
180, 'sprites/ship_red.png', 'sprites/red_bullet.png',
** Processing line: ~ [255, 90, 90])~
- Inside source: true
*** True Line Result
[255, 90, 90])
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def new_blue_ship~
- Inside source: true
*** True Line Result
def new_blue_ship
** Processing line: ~ default_ship(-400, 250.randomize(:sign, :ratio),~
- Inside source: true
*** True Line Result
default_ship(-400, 250.randomize(:sign, :ratio),
** Processing line: ~ 0, 'sprites/ship_blue.png', 'sprites/blue_bullet.png',~
- Inside source: true
*** True Line Result
0, 'sprites/ship_blue.png', 'sprites/blue_bullet.png',
** Processing line: ~ [110, 140, 255])~
- Inside source: true
*** True Line Result
[110, 140, 255])
** 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: ~ render_instructions~
- Inside source: true
*** True Line Result
render_instructions
** Processing line: ~ render_score~
- Inside source: true
*** True Line Result
render_score
** Processing line: ~ render_universe~
- Inside source: true
*** True Line Result
render_universe
** Processing line: ~ render_flames~
- Inside source: true
*** True Line Result
render_flames
** Processing line: ~ render_ships~
- Inside source: true
*** True Line Result
render_ships
** Processing line: ~ render_bullets~
- Inside source: true
*** True Line Result
render_bullets
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_ships~
- Inside source: true
*** True Line Result
def render_ships
** Processing line: ~ update_ship_outputs(state.ship_blue)~
- Inside source: true
*** True Line Result
update_ship_outputs(state.ship_blue)
** Processing line: ~ update_ship_outputs(state.ship_red)~
- Inside source: true
*** True Line Result
update_ship_outputs(state.ship_red)
** Processing line: ~ outputs.sprites << [state.ship_blue.sprite, state.ship_red.sprite]~
- Inside source: true
*** True Line Result
outputs.sprites << [state.ship_blue.sprite, state.ship_red.sprite]
** Processing line: ~ outputs.labels << [state.ship_blue.label, state.ship_red.label]~
- Inside source: true
*** True Line Result
outputs.labels << [state.ship_blue.label, state.ship_red.label]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_instructions~
- Inside source: true
*** True Line Result
def render_instructions
** Processing line: ~ return if state.ship_blue.dx > 0 || state.ship_blue.dy > 0 ||~
- Inside source: true
*** True Line Result
return if state.ship_blue.dx > 0 || state.ship_blue.dy > 0 ||
** Processing line: ~ state.ship_red.dx > 0 || state.ship_red.dy > 0 ||~
- Inside source: true
*** True Line Result
state.ship_red.dx > 0 || state.ship_red.dy > 0 ||
** Processing line: ~ state.flames.length > 0~
- Inside source: true
*** True Line Result
state.flames.length > 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << [grid.left.shift_right(30),~
- Inside source: true
*** True Line Result
outputs.labels << [grid.left.shift_right(30),
** Processing line: ~ grid.bottom.shift_up(30),~
- Inside source: true
*** True Line Result
grid.bottom.shift_up(30),
** Processing line: ~ "Two gamepads needed to play. R1 to accelerate. Left and right on D-PAD to turn ship. Hold A to shoot. Press B to drop mines.",~
- Inside source: true
*** True Line Result
"Two gamepads needed to play. R1 to accelerate. Left and right on D-PAD to turn ship. Hold A to shoot. Press B to drop mines.",
** Processing line: ~ 0, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
0, 0, 255, 255, 255]
** 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_thrusts~
- Inside source: true
*** True Line Result
calc_thrusts
** Processing line: ~ calc_ships~
- Inside source: true
*** True Line Result
calc_ships
** Processing line: ~ calc_bullets~
- Inside source: true
*** True Line Result
calc_bullets
** Processing line: ~ calc_winner~
- Inside source: true
*** True Line Result
calc_winner
** 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_accelerate~
- Inside source: true
*** True Line Result
input_accelerate
** Processing line: ~ input_turn~
- Inside source: true
*** True Line Result
input_turn
** Processing line: ~ input_bullets_and_mines~
- Inside source: true
*** True Line Result
input_bullets_and_mines
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_score~
- Inside source: true
*** True Line Result
def render_score
** Processing line: ~ outputs.labels << [grid.left.shift_right(80),~
- Inside source: true
*** True Line Result
outputs.labels << [grid.left.shift_right(80),
** Processing line: ~ grid.top.shift_down(40),~
- Inside source: true
*** True Line Result
grid.top.shift_down(40),
** Processing line: ~ state.ship_blue_score, 30, 1, state.ship_blue.color]~
- Inside source: true
*** True Line Result
state.ship_blue_score, 30, 1, state.ship_blue.color]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << [grid.right.shift_left(80),~
- Inside source: true
*** True Line Result
outputs.labels << [grid.right.shift_left(80),
** Processing line: ~ grid.top.shift_down(40),~
- Inside source: true
*** True Line Result
grid.top.shift_down(40),
** Processing line: ~ state.ship_red_score, 30, 1, state.ship_red.color]~
- Inside source: true
*** True Line Result
state.ship_red_score, 30, 1, state.ship_red.color]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_universe~
- Inside source: true
*** True Line Result
def render_universe
** Processing line: ~ return if outputs.static_solids.any?~
- Inside source: true
*** True Line Result
return if outputs.static_solids.any?
** Processing line: ~ outputs.static_solids << grid.rect~
- Inside source: true
*** True Line Result
outputs.static_solids << grid.rect
** Processing line: ~ outputs.static_solids << state.stars~
- Inside source: true
*** True Line Result
outputs.static_solids << state.stars
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def apply_round_finished_alpha entity~
- Inside source: true
*** True Line Result
def apply_round_finished_alpha entity
** Processing line: ~ return entity unless state.round_finished_debounce~
- Inside source: true
*** True Line Result
return entity unless state.round_finished_debounce
** Processing line: ~ entity.a *= state.round_finished_debounce.percentage_of(2.seconds)~
- Inside source: true
*** True Line Result
entity.a *= state.round_finished_debounce.percentage_of(2.seconds)
** Processing line: ~ return entity~
- Inside source: true
*** True Line Result
return entity
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def update_ship_outputs ship, sprite_size = 66~
- Inside source: true
*** True Line Result
def update_ship_outputs ship, sprite_size = 66
** Processing line: ~ ship.sprite =~
- Inside source: true
*** True Line Result
ship.sprite =
** Processing line: ~ apply_round_finished_alpha [sprite_size.to_square(ship.x, ship.y),~
- Inside source: true
*** True Line Result
apply_round_finished_alpha [sprite_size.to_square(ship.x, ship.y),
** Processing line: ~ ship.sprite_path,~
- Inside source: true
*** True Line Result
ship.sprite_path,
** Processing line: ~ ship.angle,~
- Inside source: true
*** True Line Result
ship.angle,
** Processing line: ~ ship.dead ? 0 : 255 * ship.created_at.ease(2.seconds)].sprite~
- Inside source: true
*** True Line Result
ship.dead ? 0 : 255 * ship.created_at.ease(2.seconds)].sprite
** Processing line: ~ ship.label =~
- Inside source: true
*** True Line Result
ship.label =
** Processing line: ~ apply_round_finished_alpha [ship.x,~
- Inside source: true
*** True Line Result
apply_round_finished_alpha [ship.x,
** Processing line: ~ ship.y + 100,~
- Inside source: true
*** True Line Result
ship.y + 100,
** Processing line: ~ "." * 5.minus(ship.damage).greater(0), 20, 1, ship.color, 255].label~
- Inside source: true
*** True Line Result
"." * 5.minus(ship.damage).greater(0), 20, 1, ship.color, 255].label
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_flames sprite_size = 6~
- Inside source: true
*** True Line Result
def render_flames sprite_size = 6
** Processing line: ~ outputs.sprites << state.flames.map do |p|~
- Inside source: true
*** True Line Result
outputs.sprites << state.flames.map do |p|
** Processing line: ~ apply_round_finished_alpha [sprite_size.to_square(p.x, p.y),~
- Inside source: true
*** True Line Result
apply_round_finished_alpha [sprite_size.to_square(p.x, p.y),
** Processing line: ~ 'sprites/flame.png', 0,~
- Inside source: true
*** True Line Result
'sprites/flame.png', 0,
** Processing line: ~ p.max_alpha * p.created_at.ease(p.lifetime, :flip)].sprite~
- Inside source: true
*** True Line Result
p.max_alpha * p.created_at.ease(p.lifetime, :flip)].sprite
** 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_bullets sprite_size = 10~
- Inside source: true
*** True Line Result
def render_bullets sprite_size = 10
** Processing line: ~ outputs.sprites << state.bullets.map do |b|~
- Inside source: true
*** True Line Result
outputs.sprites << state.bullets.map do |b|
** Processing line: ~ apply_round_finished_alpha [b.sprite_size.to_square(b.x, b.y),~
- Inside source: true
*** True Line Result
apply_round_finished_alpha [b.sprite_size.to_square(b.x, b.y),
** Processing line: ~ b.owner.bullet_sprite_path,~
- Inside source: true
*** True Line Result
b.owner.bullet_sprite_path,
** Processing line: ~ 0, b.max_alpha].sprite~
- Inside source: true
*** True Line Result
0, b.max_alpha].sprite
** 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 wrap_location! location~
- Inside source: true
*** True Line Result
def wrap_location! location
** Processing line: ~ location.x = grid.left if location.x > grid.right~
- Inside source: true
*** True Line Result
location.x = grid.left if location.x > grid.right
** Processing line: ~ location.x = grid.right if location.x < grid.left~
- Inside source: true
*** True Line Result
location.x = grid.right if location.x < grid.left
** Processing line: ~ location.y = grid.top if location.y < grid.bottom~
- Inside source: true
*** True Line Result
location.y = grid.top if location.y < grid.bottom
** Processing line: ~ location.y = grid.bottom if location.y > grid.top~
- Inside source: true
*** True Line Result
location.y = grid.bottom if location.y > grid.top
** Processing line: ~ location~
- Inside source: true
*** True Line Result
location
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_thrusts~
- Inside source: true
*** True Line Result
def calc_thrusts
** Processing line: ~ state.flames =~
- Inside source: true
*** True Line Result
state.flames =
** Processing line: ~ state.flames~
- Inside source: true
*** True Line Result
state.flames
** Processing line: ~ .reject(&:old?)~
- Inside source: true
*** True Line Result
.reject(&:old?)
** Processing line: ~ .map do |p|~
- Inside source: true
*** True Line Result
.map do |p|
** Processing line: ~ p.speed *= 0.9~
- Inside source: true
*** True Line Result
p.speed *= 0.9
** Processing line: ~ p.y += p.angle.vector_y(p.speed)~
- Inside source: true
*** True Line Result
p.y += p.angle.vector_y(p.speed)
** Processing line: ~ p.x += p.angle.vector_x(p.speed)~
- Inside source: true
*** True Line Result
p.x += p.angle.vector_x(p.speed)
** Processing line: ~ wrap_location! p~
- Inside source: true
*** True Line Result
wrap_location! p
** 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 all_ships~
- Inside source: true
*** True Line Result
def all_ships
** Processing line: ~ [state.ship_blue, state.ship_red]~
- Inside source: true
*** True Line Result
[state.ship_blue, state.ship_red]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def alive_ships~
- Inside source: true
*** True Line Result
def alive_ships
** Processing line: ~ all_ships.reject { |s| s.dead }~
- Inside source: true
*** True Line Result
all_ships.reject { |s| s.dead }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_bullet bullet~
- Inside source: true
*** True Line Result
def calc_bullet bullet
** Processing line: ~ bullet.y += bullet.angle.vector_y(bullet.speed)~
- Inside source: true
*** True Line Result
bullet.y += bullet.angle.vector_y(bullet.speed)
** Processing line: ~ bullet.x += bullet.angle.vector_x(bullet.speed)~
- Inside source: true
*** True Line Result
bullet.x += bullet.angle.vector_x(bullet.speed)
** Processing line: ~ wrap_location! bullet~
- Inside source: true
*** True Line Result
wrap_location! bullet
** Processing line: ~ explode_bullet! bullet if bullet.old?~
- Inside source: true
*** True Line Result
explode_bullet! bullet if bullet.old?
** Processing line: ~ return if bullet.exploded~
- Inside source: true
*** True Line Result
return if bullet.exploded
** Processing line: ~ return if state.round_finished~
- Inside source: true
*** True Line Result
return if state.round_finished
** Processing line: ~ alive_ships.each do |s|~
- Inside source: true
*** True Line Result
alive_ships.each do |s|
** Processing line: ~ if s != bullet.owner &&~
- Inside source: true
*** True Line Result
if s != bullet.owner &&
** Processing line: ~ s.sprite.intersect_rect?(bullet.sprite_size.to_square(bullet.x, bullet.y))~
- Inside source: true
*** True Line Result
s.sprite.intersect_rect?(bullet.sprite_size.to_square(bullet.x, bullet.y))
** Processing line: ~ explode_bullet! bullet, 10, 5, 30~
- Inside source: true
*** True Line Result
explode_bullet! bullet, 10, 5, 30
** Processing line: ~ s.damage += 1~
- Inside source: true
*** True Line Result
s.damage += 1
** 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_bullets~
- Inside source: true
*** True Line Result
def calc_bullets
** Processing line: ~ state.bullets.each { |b| calc_bullet b }~
- Inside source: true
*** True Line Result
state.bullets.each { |b| calc_bullet b }
** Processing line: ~ state.bullets.reject! { |b| b.exploded }~
- Inside source: true
*** True Line Result
state.bullets.reject! { |b| b.exploded }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def create_explosion! type, entity, flame_count, max_speed, lifetime, max_alpha = 255~
- Inside source: true
*** True Line Result
def create_explosion! type, entity, flame_count, max_speed, lifetime, max_alpha = 255
** Processing line: ~ flame_count.times do~
- Inside source: true
*** True Line Result
flame_count.times do
** Processing line: ~ state.flames << state.new_entity(type,~
- Inside source: true
*** True Line Result
state.flames << state.new_entity(type,
** Processing line: ~ { angle: 360.randomize(:ratio),~
- Inside source: true
*** True Line Result
{ angle: 360.randomize(:ratio),
** Processing line: ~ speed: max_speed.randomize(:ratio),~
- Inside source: true
*** True Line Result
speed: max_speed.randomize(:ratio),
** Processing line: ~ lifetime: lifetime,~
- Inside source: true
*** True Line Result
lifetime: lifetime,
** Processing line: ~ x: entity.x,~
- Inside source: true
*** True Line Result
x: entity.x,
** Processing line: ~ y: entity.y,~
- Inside source: true
*** True Line Result
y: entity.y,
** Processing line: ~ max_alpha: max_alpha })~
- Inside source: true
*** True Line Result
max_alpha: max_alpha })
** 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 explode_bullet! bullet, flame_override = 5, max_speed = 5, lifetime = 10~
- Inside source: true
*** True Line Result
def explode_bullet! bullet, flame_override = 5, max_speed = 5, lifetime = 10
** Processing line: ~ bullet.exploded = true~
- Inside source: true
*** True Line Result
bullet.exploded = true
** Processing line: ~ create_explosion! :bullet_explosion,~
- Inside source: true
*** True Line Result
create_explosion! :bullet_explosion,
** Processing line: ~ bullet,~
- Inside source: true
*** True Line Result
bullet,
** Processing line: ~ flame_override,~
- Inside source: true
*** True Line Result
flame_override,
** Processing line: ~ max_speed,~
- Inside source: true
*** True Line Result
max_speed,
** Processing line: ~ lifetime,~
- Inside source: true
*** True Line Result
lifetime,
** Processing line: ~ bullet.max_alpha~
- Inside source: true
*** True Line Result
bullet.max_alpha
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_ship ship~
- Inside source: true
*** True Line Result
def calc_ship ship
** Processing line: ~ ship.x += ship.dx~
- Inside source: true
*** True Line Result
ship.x += ship.dx
** Processing line: ~ ship.y += ship.dy~
- Inside source: true
*** True Line Result
ship.y += ship.dy
** Processing line: ~ wrap_location! ship~
- Inside source: true
*** True Line Result
wrap_location! ship
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_ships~
- Inside source: true
*** True Line Result
def calc_ships
** Processing line: ~ all_ships.each { |s| calc_ship s }~
- Inside source: true
*** True Line Result
all_ships.each { |s| calc_ship s }
** Processing line: ~ return if all_ships.any? { |s| s.dead }~
- Inside source: true
*** True Line Result
return if all_ships.any? { |s| s.dead }
** Processing line: ~ return if state.round_finished~
- Inside source: true
*** True Line Result
return if state.round_finished
** Processing line: ~ return unless state.ship_blue.sprite.intersect_rect?(state.ship_red.sprite)~
- Inside source: true
*** True Line Result
return unless state.ship_blue.sprite.intersect_rect?(state.ship_red.sprite)
** Processing line: ~ state.ship_blue.damage = 5~
- Inside source: true
*** True Line Result
state.ship_blue.damage = 5
** Processing line: ~ state.ship_red.damage = 5~
- Inside source: true
*** True Line Result
state.ship_red.damage = 5
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def create_thruster_flames! ship~
- Inside source: true
*** True Line Result
def create_thruster_flames! ship
** Processing line: ~ state.flames << state.new_entity(:ship_thruster,~
- Inside source: true
*** True Line Result
state.flames << state.new_entity(:ship_thruster,
** Processing line: ~ { angle: ship.angle + 180 + 60.randomize(:sign, :ratio),~
- Inside source: true
*** True Line Result
{ angle: ship.angle + 180 + 60.randomize(:sign, :ratio),
** Processing line: ~ speed: 5.randomize(:ratio),~
- Inside source: true
*** True Line Result
speed: 5.randomize(:ratio),
** Processing line: ~ max_alpha: 255 * ship.created_at_elapsed.percentage_of(2.seconds),~
- Inside source: true
*** True Line Result
max_alpha: 255 * ship.created_at_elapsed.percentage_of(2.seconds),
** Processing line: ~ lifetime: 30,~
- Inside source: true
*** True Line Result
lifetime: 30,
** Processing line: ~ x: ship.x - ship.angle.vector_x(40) + 5.randomize(:sign, :ratio),~
- Inside source: true
*** True Line Result
x: ship.x - ship.angle.vector_x(40) + 5.randomize(:sign, :ratio),
** Processing line: ~ y: ship.y - ship.angle.vector_y(40) + 5.randomize(:sign, :ratio) })~
- Inside source: true
*** True Line Result
y: ship.y - ship.angle.vector_y(40) + 5.randomize(:sign, :ratio) })
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_accelerate_ship should_move_ship, ship~
- Inside source: true
*** True Line Result
def input_accelerate_ship should_move_ship, ship
** Processing line: ~ return if ship.dead~
- Inside source: true
*** True Line Result
return if ship.dead
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ should_move_ship &&= (ship.dx + ship.dy).abs < 5~
- Inside source: true
*** True Line Result
should_move_ship &&= (ship.dx + ship.dy).abs < 5
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if should_move_ship~
- Inside source: true
*** True Line Result
if should_move_ship
** Processing line: ~ create_thruster_flames! ship~
- Inside source: true
*** True Line Result
create_thruster_flames! ship
** Processing line: ~ ship.dx += ship.angle.vector_x 0.050~
- Inside source: true
*** True Line Result
ship.dx += ship.angle.vector_x 0.050
** Processing line: ~ ship.dy += ship.angle.vector_y 0.050~
- Inside source: true
*** True Line Result
ship.dy += ship.angle.vector_y 0.050
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ ship.dx *= 0.99~
- Inside source: true
*** True Line Result
ship.dx *= 0.99
** Processing line: ~ ship.dy *= 0.99~
- Inside source: true
*** True Line Result
ship.dy *= 0.99
** 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 input_accelerate~
- Inside source: true
*** True Line Result
def input_accelerate
** Processing line: ~ input_accelerate_ship inputs.controller_one.key_held.r1 || inputs.keyboard.up, state.ship_blue~
- Inside source: true
*** True Line Result
input_accelerate_ship inputs.controller_one.key_held.r1 || inputs.keyboard.up, state.ship_blue
** Processing line: ~ input_accelerate_ship inputs.controller_two.key_held.r1, state.ship_red~
- Inside source: true
*** True Line Result
input_accelerate_ship inputs.controller_two.key_held.r1, state.ship_red
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_turn_ship direction, ship~
- Inside source: true
*** True Line Result
def input_turn_ship direction, ship
** Processing line: ~ ship.angle -= 3 * direction~
- Inside source: true
*** True Line Result
ship.angle -= 3 * direction
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_turn~
- Inside source: true
*** True Line Result
def input_turn
** Processing line: ~ input_turn_ship inputs.controller_one.left_right + inputs.keyboard.left_right, state.ship_blue~
- Inside source: true
*** True Line Result
input_turn_ship inputs.controller_one.left_right + inputs.keyboard.left_right, state.ship_blue
** Processing line: ~ input_turn_ship inputs.controller_two.left_right, state.ship_red~
- Inside source: true
*** True Line Result
input_turn_ship inputs.controller_two.left_right, state.ship_red
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_bullet create_bullet, ship~
- Inside source: true
*** True Line Result
def input_bullet create_bullet, ship
** Processing line: ~ return unless create_bullet~
- Inside source: true
*** True Line Result
return unless create_bullet
** Processing line: ~ return if ship.dead~
- Inside source: true
*** True Line Result
return if ship.dead
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.bullets << state.new_entity(:ship_bullet,~
- Inside source: true
*** True Line Result
state.bullets << state.new_entity(:ship_bullet,
** Processing line: ~ { owner: ship,~
- Inside source: true
*** True Line Result
{ owner: ship,
** Processing line: ~ angle: ship.angle,~
- Inside source: true
*** True Line Result
angle: ship.angle,
** Processing line: ~ max_alpha: 255 * ship.created_at_elapsed.percentage_of(2.seconds),~
- Inside source: true
*** True Line Result
max_alpha: 255 * ship.created_at_elapsed.percentage_of(2.seconds),
** Processing line: ~ speed: 5 + ship.dx.mult(ship.angle.vector_x) + ship.dy.mult(ship.angle.vector_y),~
- Inside source: true
*** True Line Result
speed: 5 + ship.dx.mult(ship.angle.vector_x) + ship.dy.mult(ship.angle.vector_y),
** Processing line: ~ lifetime: 120,~
- Inside source: true
*** True Line Result
lifetime: 120,
** Processing line: ~ sprite_size: 10,~
- Inside source: true
*** True Line Result
sprite_size: 10,
** Processing line: ~ x: ship.x + ship.angle.vector_x * 32,~
- Inside source: true
*** True Line Result
x: ship.x + ship.angle.vector_x * 32,
** Processing line: ~ y: ship.y + ship.angle.vector_y * 32 })~
- Inside source: true
*** True Line Result
y: ship.y + ship.angle.vector_y * 32 })
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_mine create_mine, ship~
- Inside source: true
*** True Line Result
def input_mine create_mine, ship
** Processing line: ~ return unless create_mine~
- Inside source: true
*** True Line Result
return unless create_mine
** Processing line: ~ return if ship.dead~
- Inside source: true
*** True Line Result
return if ship.dead
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.bullets << state.new_entity(:ship_bullet,~
- Inside source: true
*** True Line Result
state.bullets << state.new_entity(:ship_bullet,
** Processing line: ~ { owner: ship,~
- Inside source: true
*** True Line Result
{ owner: ship,
** Processing line: ~ angle: 360.randomize(:sign, :ratio),~
- Inside source: true
*** True Line Result
angle: 360.randomize(:sign, :ratio),
** Processing line: ~ max_alpha: 255 * ship.created_at_elapsed.percentage_of(2.seconds),~
- Inside source: true
*** True Line Result
max_alpha: 255 * ship.created_at_elapsed.percentage_of(2.seconds),
** Processing line: ~ speed: 0.02,~
- Inside source: true
*** True Line Result
speed: 0.02,
** Processing line: ~ sprite_size: 10,~
- Inside source: true
*** True Line Result
sprite_size: 10,
** Processing line: ~ lifetime: 600,~
- Inside source: true
*** True Line Result
lifetime: 600,
** Processing line: ~ x: ship.x + ship.angle.vector_x * -50,~
- Inside source: true
*** True Line Result
x: ship.x + ship.angle.vector_x * -50,
** Processing line: ~ y: ship.y + ship.angle.vector_y * -50 })~
- Inside source: true
*** True Line Result
y: ship.y + ship.angle.vector_y * -50 })
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_bullets_and_mines~
- Inside source: true
*** True Line Result
def input_bullets_and_mines
** Processing line: ~ return if state.bullets.length > 100~
- Inside source: true
*** True Line Result
return if state.bullets.length > 100
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [inputs.controller_one.key_held.a || inputs.keyboard.key_held.space,~
- Inside source: true
*** True Line Result
[inputs.controller_one.key_held.a || inputs.keyboard.key_held.space,
** Processing line: ~ inputs.controller_one.key_down.b || inputs.keyboard.key_down.down,~
- Inside source: true
*** True Line Result
inputs.controller_one.key_down.b || inputs.keyboard.key_down.down,
** Processing line: ~ state.ship_blue],~
- Inside source: true
*** True Line Result
state.ship_blue],
** Processing line: ~ [inputs.controller_two.key_held.a, inputs.controller_two.key_down.b, state.ship_red]~
- Inside source: true
*** True Line Result
[inputs.controller_two.key_held.a, inputs.controller_two.key_down.b, state.ship_red]
** Processing line: ~ ].each do |a_held, b_down, ship|~
- Inside source: true
*** True Line Result
].each do |a_held, b_down, ship|
** Processing line: ~ input_bullet(a_held && state.tick_count.mod_zero?(10).or(a_held == 0), ship)~
- Inside source: true
*** True Line Result
input_bullet(a_held && state.tick_count.mod_zero?(10).or(a_held == 0), ship)
** Processing line: ~ input_mine(b_down, ship)~
- Inside source: true
*** True Line Result
input_mine(b_down, ship)
** 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_kill_ships~
- Inside source: true
*** True Line Result
def calc_kill_ships
** Processing line: ~ alive_ships.find_all { |s| s.damage >= 5 }.each do |s|~
- Inside source: true
*** True Line Result
alive_ships.find_all { |s| s.damage >= 5 }.each do |s|
** Processing line: ~ s.dead = true~
- Inside source: true
*** True Line Result
s.dead = true
** Processing line: ~ create_explosion! :ship_explosion, s, 20, 20, 30, s.max_alpha~
- Inside source: true
*** True Line Result
create_explosion! :ship_explosion, s, 20, 20, 30, s.max_alpha
** 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_score~
- Inside source: true
*** True Line Result
def calc_score
** Processing line: ~ return if state.round_finished~
- Inside source: true
*** True Line Result
return if state.round_finished
** Processing line: ~ return if alive_ships.length > 1~
- Inside source: true
*** True Line Result
return if alive_ships.length > 1
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if alive_ships.first == state.ship_red~
- Inside source: true
*** True Line Result
if alive_ships.first == state.ship_red
** Processing line: ~ state.ship_red_score += 1~
- Inside source: true
*** True Line Result
state.ship_red_score += 1
** Processing line: ~ elsif alive_ships.first == state.ship_blue~
- Inside source: true
*** True Line Result
elsif alive_ships.first == state.ship_blue
** Processing line: ~ state.ship_blue_score += 1~
- Inside source: true
*** True Line Result
state.ship_blue_score += 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.round_finished = true~
- Inside source: true
*** True Line Result
state.round_finished = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_reset_ships~
- Inside source: true
*** True Line Result
def calc_reset_ships
** Processing line: ~ return unless state.round_finished~
- Inside source: true
*** True Line Result
return unless state.round_finished
** Processing line: ~ state.round_finished_debounce ||= 2.seconds~
- Inside source: true
*** True Line Result
state.round_finished_debounce ||= 2.seconds
** Processing line: ~ state.round_finished_debounce -= 1~
- Inside source: true
*** True Line Result
state.round_finished_debounce -= 1
** Processing line: ~ return if state.round_finished_debounce > 0~
- Inside source: true
*** True Line Result
return if state.round_finished_debounce > 0
** Processing line: ~ start_new_round!~
- Inside source: true
*** True Line Result
start_new_round!
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def start_new_round!~
- Inside source: true
*** True Line Result
def start_new_round!
** Processing line: ~ state.ship_blue = new_blue_ship~
- Inside source: true
*** True Line Result
state.ship_blue = new_blue_ship
** Processing line: ~ state.ship_red = new_red_ship~
- Inside source: true
*** True Line Result
state.ship_red = new_red_ship
** Processing line: ~ state.round_finished = false~
- Inside source: true
*** True Line Result
state.round_finished = false
** Processing line: ~ state.round_finished_debounce = nil~
- Inside source: true
*** True Line Result
state.round_finished_debounce = nil
** Processing line: ~ state.flames.clear~
- Inside source: true
*** True Line Result
state.flames.clear
** Processing line: ~ state.bullets.clear~
- Inside source: true
*** True Line Result
state.bullets.clear
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_winner~
- Inside source: true
*** True Line Result
def calc_winner
** Processing line: ~ calc_kill_ships~
- Inside source: true
*** True Line Result
calc_kill_ships
** Processing line: ~ calc_score~
- Inside source: true
*** True Line Result
calc_score
** Processing line: ~ calc_reset_ships~
- Inside source: true
*** True Line Result
calc_reset_ships
** 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: ~ $dueling_spaceship = DuelingSpaceships.new~
- Inside source: true
*** True Line Result
$dueling_spaceship = DuelingSpaceships.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: ~ args.grid.origin_center!~
- Inside source: true
*** True Line Result
args.grid.origin_center!
** Processing line: ~ $dueling_spaceship.inputs = args.inputs~
- Inside source: true
*** True Line Result
$dueling_spaceship.inputs = args.inputs
** Processing line: ~ $dueling_spaceship.outputs = args.outputs~
- Inside source: true
*** True Line Result
$dueling_spaceship.outputs = args.outputs
** Processing line: ~ $dueling_spaceship.state = args.state~
- Inside source: true
*** True Line Result
$dueling_spaceship.state = args.state
** Processing line: ~ $dueling_spaceship.grid = args.grid~
- Inside source: true
*** True Line Result
$dueling_spaceship.grid = args.grid
** Processing line: ~ $dueling_spaceship.tick~
- Inside source: true
*** True Line Result
$dueling_spaceship.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: ~* arcade/flappy dragon/credits.txt~
- Header detected.
*** True Line Result
*** True Line Result
* arcade/flappy dragon/credits.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_arcade/flappy_dragon/CREDITS.txt~
- Inside source: true
*** True Line Result
# ./samples/99_genre_arcade/flappy_dragon/CREDITS.txt
** Processing line: ~ code: Amir Rajan, https://twitter.com/amirrajan~
- Inside source: true
*** True Line Result
code: Amir Rajan, https://twitter.com/amirrajan
** Processing line: ~ graphics and audio: Nick Culbertson, https://twitter.com/MobyPixel~
- Inside source: true
*** True Line Result
graphics and audio: Nick Culbertson, https://twitter.com/MobyPixel
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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/flappy dragon/main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* arcade/flappy dragon/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_arcade/flappy_dragon/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_arcade/flappy_dragon/app/main.rb
** Processing line: ~ class FlappyDragon~
- Inside source: true
*** True Line Result
class FlappyDragon
** Processing line: ~ attr_accessor :grid, :inputs, :state, :outputs~
- Inside source: true
*** True Line Result
attr_accessor :grid, :inputs, :state, :outputs
** 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: ~ calc~
- Inside source: true
*** True Line Result
calc
** Processing line: ~ process_inputs~
- Inside source: true
*** True Line Result
process_inputs
** 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.flap_power = 11~
- Inside source: true
*** True Line Result
state.flap_power = 11
** Processing line: ~ state.gravity = 0.9~
- Inside source: true
*** True Line Result
state.gravity = 0.9
** Processing line: ~ state.ceiling = 600~
- Inside source: true
*** True Line Result
state.ceiling = 600
** Processing line: ~ state.ceiling_flap_power = 6~
- Inside source: true
*** True Line Result
state.ceiling_flap_power = 6
** Processing line: ~ state.wall_countdown_length = 100~
- Inside source: true
*** True Line Result
state.wall_countdown_length = 100
** Processing line: ~ state.wall_gap_size = 100~
- Inside source: true
*** True Line Result
state.wall_gap_size = 100
** Processing line: ~ state.wall_countdown ||= 0~
- Inside source: true
*** True Line Result
state.wall_countdown ||= 0
** Processing line: ~ state.hi_score ||= 0~
- Inside source: true
*** True Line Result
state.hi_score ||= 0
** Processing line: ~ state.score ||= 0~
- Inside source: true
*** True Line Result
state.score ||= 0
** Processing line: ~ state.walls ||= []~
- Inside source: true
*** True Line Result
state.walls ||= []
** Processing line: ~ state.x ||= 50~
- Inside source: true
*** True Line Result
state.x ||= 50
** Processing line: ~ state.y ||= 500~
- Inside source: true
*** True Line Result
state.y ||= 500
** Processing line: ~ state.dy ||= 0~
- Inside source: true
*** True Line Result
state.dy ||= 0
** Processing line: ~ state.scene ||= :menu~
- Inside source: true
*** True Line Result
state.scene ||= :menu
** Processing line: ~ state.scene_at ||= 0~
- Inside source: true
*** True Line Result
state.scene_at ||= 0
** Processing line: ~ state.difficulty ||= :normal~
- Inside source: true
*** True Line Result
state.difficulty ||= :normal
** Processing line: ~ state.new_difficulty ||= :normal~
- Inside source: true
*** True Line Result
state.new_difficulty ||= :normal
** Processing line: ~ state.countdown ||= 4.seconds~
- Inside source: true
*** True Line Result
state.countdown ||= 4.seconds
** Processing line: ~ state.flash_at ||= 0~
- Inside source: true
*** True Line Result
state.flash_at ||= 0
** 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.sounds << "sounds/flappy-song.ogg" if state.tick_count == 1~
- Inside source: true
*** True Line Result
outputs.sounds << "sounds/flappy-song.ogg" if state.tick_count == 1
** Processing line: ~ render_score~
- Inside source: true
*** True Line Result
render_score
** Processing line: ~ render_menu~
- Inside source: true
*** True Line Result
render_menu
** Processing line: ~ render_game~
- Inside source: true
*** True Line Result
render_game
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_score~
- Inside source: true
*** True Line Result
def render_score
** Processing line: ~ outputs.primitives << [10, 710, "HI SCORE: #{state.hi_score}", large_white_typeset].label~
- 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~
- 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~
- Inside source: true
*** True Line Result
outputs.primitives << [10, 650, "DIFFICULTY: #{state.difficulty.upcase}", large_white_typeset].label
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_menu~
- Inside source: true
*** True Line Result
def render_menu
** Processing line: ~ return unless state.scene == :menu~
- Inside source: true
*** True Line Result
return unless state.scene == :menu
** Processing line: ~ render_overlay~
- Inside source: true
*** True Line Result
render_overlay
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << [640, 700, "Flappy Dragon", 50, 1, 255, 255, 255]~
- 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]~
- 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]~
- 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]~
- 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]~
- 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]~
- 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]~
- Inside source: true
*** True Line Result
outputs.labels << [640, 200, "Difficulty: #{state.new_difficulty.capitalize}", 4, 1, 255, 255, 255]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << [10, 100, "Code: @amirrajan", 255, 255, 255]~
- 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]~
- 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]~
- 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]~
- Inside source: true
*** True Line Result
outputs.labels << [10, 40, "Engine: DragonRuby GTK", 255, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_overlay~
- 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~
- Inside source: true
*** True Line Result
outputs.primitives << [grid.rect.scale_rect(1.1, 0, 0), 0, 0, 0, 230].solid
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_game~
- Inside source: true
*** True Line Result
def render_game
** Processing line: ~ render_game_over~
- Inside source: true
*** True Line Result
render_game_over
** Processing line: ~ render_background~
- Inside source: true
*** True Line Result
render_background
** Processing line: ~ render_walls~
- Inside source: true
*** True Line Result
render_walls
** Processing line: ~ render_dragon~
- Inside source: true
*** True Line Result
render_dragon
** Processing line: ~ render_flash~
- Inside source: true
*** True Line Result
render_flash
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_game_over~
- Inside source: true
*** True Line Result
def render_game_over
** Processing line: ~ return unless state.scene == :game~
- Inside source: true
*** True Line Result
return unless state.scene == :game
** Processing line: ~ outputs.labels << [638, 358, score_text, 20, 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]~
- 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]~
- 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]~
- Inside source: true
*** True Line Result
outputs.labels << [635, 430, countdown_text, 20, 1, 255, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_background~
- Inside source: true
*** True Line Result
def render_background
** Processing line: ~ outputs.sprites << [0, 0, 1280, 720, 'sprites/background.png']~
- Inside source: true
*** True Line Result
outputs.sprites << [0, 0, 1280, 720, 'sprites/background.png']
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ scroll_point_at = state.tick_count~
- Inside source: true
*** True Line Result
scroll_point_at = state.tick_count
** Processing line: ~ scroll_point_at = state.scene_at if state.scene == :menu~
- Inside source: true
*** True Line Result
scroll_point_at = state.scene_at if state.scene == :menu
** Processing line: ~ scroll_point_at = state.death_at if state.countdown > 0~
- Inside source: true
*** True Line Result
scroll_point_at = state.death_at if state.countdown > 0
** Processing line: ~ scroll_point_at ||= 0~
- Inside source: true
*** True Line Result
scroll_point_at ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_back.png', 0.25)~
- Inside source: true
*** True Line Result
outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_back.png', 0.25)
** Processing line: ~ outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_middle.png', 0.50)~
- Inside source: true
*** True Line Result
outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_middle.png', 0.50)
** Processing line: ~ outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_front.png', 1.00, -80)~
- Inside source: true
*** True Line Result
outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_front.png', 1.00, -80)
** 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
def render_walls
** Processing line: ~ state.walls.each do |w|~
- Inside source: true
*** True Line Result
state.walls.each do |w|
** Processing line: ~ w.sprites = [~
- Inside source: true
*** True Line Result
w.sprites = [
** Processing line: ~ [w.x, w.bottom_height - 720, 100, 720, 'sprites/wall.png', 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]~
- Inside source: true
*** True Line Result
[w.x, w.top_y, 100, 720, 'sprites/wallbottom.png', 0]
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ outputs.sprites << state.walls.map(&:sprites)~
- Inside source: true
*** True Line Result
outputs.sprites << state.walls.map(&:sprites)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_dragon~
- Inside source: true
*** True Line Result
def render_dragon
** Processing line: ~ state.show_death = true if state.countdown == 3.seconds~
- Inside source: true
*** True Line Result
state.show_death = true if state.countdown == 3.seconds
** Processing line: ~~
- 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
if state.show_death == false || !state.death_at
** Processing line: ~ animation_index = state.flapped_at.frame_index 6, 2, false if state.flapped_at~
- Inside source: true
*** True Line Result
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"~
- 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]~
- Inside source: true
*** True Line Result
state.dragon_sprite = [state.x, state.y, 100, 80, sprite_name, state.dy * 1.2]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ sprite_name = "sprites/dragon_die.png"~
- 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]~
- Inside source: true
*** True Line Result
state.dragon_sprite = [state.x, state.y, 100, 80, sprite_name, state.dy * 1.2]
** Processing line: ~ sprite_changed_elapsed = state.death_at.elapsed_time - 1.seconds~
- Inside source: true
*** True Line Result
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~
- Inside source: true
*** True Line Result
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~
- Inside source: true
*** True Line Result
state.dragon_sprite.x += (sprite_changed_elapsed ** 1.2) * state.death_fall_direction
** Processing line: ~ state.dragon_sprite.y += (sprite_changed_elapsed * 14 - sprite_changed_elapsed ** 1.6)~
- Inside source: true
*** True Line Result
state.dragon_sprite.y += (sprite_changed_elapsed * 14 - sprite_changed_elapsed ** 1.6)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.sprites << state.dragon_sprite~
- Inside source: true
*** True Line Result
outputs.sprites << state.dragon_sprite
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- 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
def render_flash
** Processing line: ~ return unless state.flash_at~
- Inside source: true
*** True Line Result
return unless state.flash_at
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.primitives << [grid.rect,~
- Inside source: true
*** True Line Result
outputs.primitives << [grid.rect,
** Processing line: ~ white,~
- Inside source: true
*** True Line Result
white,
** Processing line: ~ 255 * state.flash_at.ease(20, :flip)].solid~
- Inside source: true
*** True Line Result
255 * state.flash_at.ease(20, :flip)].solid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.flash_at = 0 if state.flash_at.elapsed_time > 20~
- Inside source: true
*** True Line Result
state.flash_at = 0 if state.flash_at.elapsed_time > 20
** 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: ~ return unless state.scene == :game~
- Inside source: true
*** True Line Result
return unless state.scene == :game
** Processing line: ~ reset_game if state.countdown == 1~
- Inside source: true
*** True Line Result
reset_game if state.countdown == 1
** Processing line: ~ state.countdown -= 1 and return if state.countdown > 0~
- Inside source: true
*** True Line Result
state.countdown -= 1 and return if state.countdown > 0
** Processing line: ~ calc_walls~
- Inside source: true
*** True Line Result
calc_walls
** Processing line: ~ calc_flap~
- Inside source: true
*** True Line Result
calc_flap
** 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 calc_walls~
- Inside source: true
*** True Line Result
def calc_walls
** Processing line: ~ state.walls.each { |w| w.x -= 8 }~
- Inside source: true
*** True Line Result
state.walls.each { |w| w.x -= 8 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ walls_count_before_removal = state.walls.length~
- Inside source: true
*** True Line Result
walls_count_before_removal = state.walls.length
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.walls.reject! { |w| w.x < -100 }~
- Inside source: true
*** True Line Result
state.walls.reject! { |w| w.x < -100 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.score += 1 if state.walls.count < walls_count_before_removal~
- Inside source: true
*** True Line Result
state.score += 1 if state.walls.count < walls_count_before_removal
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.wall_countdown -= 1 and return if state.wall_countdown > 0~
- Inside source: true
*** True Line Result
state.wall_countdown -= 1 and return if state.wall_countdown > 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.walls << state.new_entity(:wall) do |w|~
- Inside source: true
*** True Line Result
state.walls << state.new_entity(:wall) do |w|
** Processing line: ~ w.x = grid.right~
- Inside source: true
*** True Line Result
w.x = grid.right
** Processing line: ~ w.opening = grid.top~
- Inside source: true
*** True Line Result
w.opening = grid.top
** Processing line: ~ .randomize(:ratio)~
- Inside source: true
*** True Line Result
.randomize(:ratio)
** Processing line: ~ .greater(200)~
- Inside source: true
*** True Line Result
.greater(200)
** Processing line: ~ .lesser(520)~
- Inside source: true
*** True Line Result
.lesser(520)
** Processing line: ~ w.bottom_height = w.opening - state.wall_gap_size~
- Inside source: true
*** True Line Result
w.bottom_height = w.opening - state.wall_gap_size
** Processing line: ~ w.top_y = w.opening + state.wall_gap_size~
- Inside source: true
*** True Line Result
w.top_y = w.opening + state.wall_gap_size
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.wall_countdown = state.wall_countdown_length~
- Inside source: true
*** True Line Result
state.wall_countdown = state.wall_countdown_length
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_flap~
- Inside source: true
*** True Line Result
def calc_flap
** Processing line: ~ state.y += state.dy~
- Inside source: true
*** True Line Result
state.y += state.dy
** Processing line: ~ state.dy = state.dy.lesser state.flap_power~
- Inside source: true
*** True Line Result
state.dy = state.dy.lesser state.flap_power
** Processing line: ~ state.dy -= state.gravity~
- Inside source: true
*** True Line Result
state.dy -= state.gravity
** Processing line: ~ return if state.y < state.ceiling~
- Inside source: true
*** True Line Result
return if state.y < state.ceiling
** Processing line: ~ state.y = state.ceiling~
- Inside source: true
*** True Line Result
state.y = state.ceiling
** Processing line: ~ state.dy = state.dy.lesser state.ceiling_flap_power~
- Inside source: true
*** True Line Result
state.dy = state.dy.lesser state.ceiling_flap_power
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_game_over~
- Inside source: true
*** True Line Result
def calc_game_over
** Processing line: ~ return unless game_over?~
- Inside source: true
*** True Line Result
return unless game_over?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.death_at = state.tick_count~
- Inside source: true
*** True Line Result
state.death_at = state.tick_count
** Processing line: ~ state.death_from = state.walls.first~
- Inside source: true
*** True Line Result
state.death_from = state.walls.first
** Processing line: ~ state.death_fall_direction = -1~
- Inside source: true
*** True Line Result
state.death_fall_direction = -1
** Processing line: ~ state.death_fall_direction = 1 if state.x > state.death_from.x~
- Inside source: true
*** True Line Result
state.death_fall_direction = 1 if state.x > state.death_from.x
** Processing line: ~ outputs.sounds << "sounds/hit-sound.wav"~
- Inside source: true
*** True Line Result
outputs.sounds << "sounds/hit-sound.wav"
** Processing line: ~ begin_countdown~
- Inside source: true
*** True Line Result
begin_countdown
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def process_inputs~
- Inside source: true
*** True Line Result
def process_inputs
** Processing line: ~ process_inputs_menu~
- Inside source: true
*** True Line Result
process_inputs_menu
** Processing line: ~ process_inputs_game~
- Inside source: true
*** True Line Result
process_inputs_game
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def process_inputs_menu~
- Inside source: true
*** True Line Result
def process_inputs_menu
** Processing line: ~ return unless state.scene == :menu~
- Inside source: true
*** True Line Result
return unless state.scene == :menu
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ changediff = inputs.keyboard.key_down.tab || inputs.controller_one.key_down.select~
- Inside source: true
*** True Line Result
changediff = inputs.keyboard.key_down.tab || inputs.controller_one.key_down.select
** Processing line: ~ if inputs.mouse.click~
- Inside source: true
*** True Line Result
if inputs.mouse.click
** Processing line: ~ p = inputs.mouse.click.point~
- Inside source: true
*** True Line Result
p = inputs.mouse.click.point
** Processing line: ~ if (p.y >= 165) && (p.y < 200) && (p.x >= 500) && (p.x < 800)~
- Inside source: true
*** True Line Result
if (p.y >= 165) && (p.y < 200) && (p.x >= 500) && (p.x < 800)
** Processing line: ~ changediff = true~
- Inside source: true
*** True Line Result
changediff = true
** 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 changediff~
- Inside source: true
*** True Line Result
if changediff
** Processing line: ~ case state.new_difficulty~
- Inside source: true
*** True Line Result
case state.new_difficulty
** Processing line: ~ when :easy~
- Inside source: true
*** True Line Result
when :easy
** Processing line: ~ state.new_difficulty = :normal~
- Inside source: true
*** True Line Result
state.new_difficulty = :normal
** Processing line: ~ when :normal~
- Inside source: true
*** True Line Result
when :normal
** Processing line: ~ state.new_difficulty = :hard~
- Inside source: true
*** True Line Result
state.new_difficulty = :hard
** Processing line: ~ when :hard~
- Inside source: true
*** True Line Result
when :hard
** Processing line: ~ state.new_difficulty = :flappy~
- Inside source: true
*** True Line Result
state.new_difficulty = :flappy
** Processing line: ~ when :flappy~
- Inside source: true
*** True Line Result
when :flappy
** Processing line: ~ state.new_difficulty = :easy~
- Inside source: true
*** True Line Result
state.new_difficulty = :easy
** 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 inputs.keyboard.key_down.enter || inputs.controller_one.key_down.start || inputs.controller_one.key_down.a~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.enter || inputs.controller_one.key_down.start || inputs.controller_one.key_down.a
** Processing line: ~ state.difficulty = state.new_difficulty~
- Inside source: true
*** True Line Result
state.difficulty = state.new_difficulty
** Processing line: ~ change_to_scene :game~
- Inside source: true
*** True Line Result
change_to_scene :game
** Processing line: ~ reset_game false~
- Inside source: true
*** True Line Result
reset_game false
** Processing line: ~ state.hi_score = 0~
- Inside source: true
*** True Line Result
state.hi_score = 0
** Processing line: ~ begin_countdown~
- Inside source: true
*** True Line Result
begin_countdown
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.keyboard.key_down.escape || (inputs.mouse.click && !changediff) || inputs.controller_one.key_down.b~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.escape || (inputs.mouse.click && !changediff) || inputs.controller_one.key_down.b
** Processing line: ~ state.new_difficulty = state.difficulty~
- Inside source: true
*** True Line Result
state.new_difficulty = state.difficulty
** Processing line: ~ change_to_scene :game~
- Inside source: true
*** True Line Result
change_to_scene :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 process_inputs_game~
- Inside source: true
*** True Line Result
def process_inputs_game
** Processing line: ~ return unless state.scene == :game~
- Inside source: true
*** True Line Result
return unless state.scene == :game
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ clicked_menu = false~
- Inside source: true
*** True Line Result
clicked_menu = false
** Processing line: ~ if inputs.mouse.click~
- Inside source: true
*** True Line Result
if inputs.mouse.click
** Processing line: ~ p = inputs.mouse.click.point~
- Inside source: true
*** True Line Result
p = inputs.mouse.click.point
** Processing line: ~ clicked_menu = (p.y >= 620) && (p.x < 275)~
- Inside source: true
*** True Line Result
clicked_menu = (p.y >= 620) && (p.x < 275)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if clicked_menu || inputs.keyboard.key_down.escape || inputs.keyboard.key_down.enter || inputs.controller_one.key_down.start~
- Inside source: true
*** True Line Result
if clicked_menu || inputs.keyboard.key_down.escape || inputs.keyboard.key_down.enter || inputs.controller_one.key_down.start
** Processing line: ~ change_to_scene :menu~
- Inside source: true
*** True Line Result
change_to_scene :menu
** Processing line: ~ elsif (inputs.mouse.down || inputs.mouse.click || inputs.keyboard.key_down.space || inputs.controller_one.key_down.a) && state.countdown == 0~
- Inside source: true
*** True Line Result
elsif (inputs.mouse.down || inputs.mouse.click || inputs.keyboard.key_down.space || inputs.controller_one.key_down.a) && state.countdown == 0
** Processing line: ~ state.dy = 0~
- Inside source: true
*** True Line Result
state.dy = 0
** Processing line: ~ state.dy += state.flap_power~
- Inside source: true
*** True Line Result
state.dy += state.flap_power
** Processing line: ~ state.flapped_at = state.tick_count~
- Inside source: true
*** True Line Result
state.flapped_at = state.tick_count
** Processing line: ~ outputs.sounds << "sounds/fly-sound.wav"~
- Inside source: true
*** True Line Result
outputs.sounds << "sounds/fly-sound.wav"
** 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 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]~
- Inside source: true
*** True Line Result
[255, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def large_white_typeset~
- Inside source: true
*** True Line Result
def large_white_typeset
** Processing line: ~ [5, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
[5, 0, 255, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def at_beginning?~
- Inside source: true
*** True Line Result
def at_beginning?
** Processing line: ~ state.walls.count == 0~
- Inside source: true
*** True Line Result
state.walls.count == 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def dragon_collision_box~
- Inside source: true
*** True Line Result
def dragon_collision_box
** Processing line: ~ state.dragon_sprite~
- Inside source: true
*** True Line Result
state.dragon_sprite
** 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)~
- Inside source: true
*** True Line Result
.rect_shift_right(10)
** Processing line: ~ .rect_shift_up(state.dy * 2)~
- Inside source: true
*** True Line Result
.rect_shift_up(state.dy * 2)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def game_over?~
- Inside source: true
*** True Line Result
def game_over?
** Processing line: ~ return true if state.y <= 0.-(500 * collision_forgiveness) && !at_beginning?~
- Inside source: true
*** True Line Result
return true if state.y <= 0.-(500 * collision_forgiveness) && !at_beginning?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.walls~
- Inside source: true
*** True Line Result
state.walls
** Processing line: ~ .flat_map { |w| w.sprites }~
- Inside source: true
*** True Line Result
.flat_map { |w| w.sprites }
** Processing line: ~ .any? do |s|~
- Inside source: true
*** True Line Result
.any? do |s|
** Processing line: ~ s.intersect_rect?(dragon_collision_box)~
- Inside source: true
*** True Line Result
s.intersect_rect?(dragon_collision_box)
** 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 collision_forgiveness~
- Inside source: true
*** True Line Result
def collision_forgiveness
** Processing line: ~ case state.difficulty~
- Inside source: true
*** True Line Result
case state.difficulty
** Processing line: ~ when :easy~
- Inside source: true
*** True Line Result
when :easy
** Processing line: ~ 0.9~
- Inside source: true
*** True Line Result
0.9
** Processing line: ~ when :normal~
- Inside source: true
*** True Line Result
when :normal
** Processing line: ~ 0.7~
- Inside source: true
*** True Line Result
0.7
** Processing line: ~ when :hard~
- Inside source: true
*** True Line Result
when :hard
** Processing line: ~ 0.5~
- Inside source: true
*** True Line Result
0.5
** Processing line: ~ when :flappy~
- Inside source: true
*** True Line Result
when :flappy
** Processing line: ~ 0.3~
- Inside source: true
*** True Line Result
0.3
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ 0.9~
- Inside source: true
*** True Line Result
0.9
** 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 countdown_text~
- Inside source: true
*** True Line Result
def countdown_text
** Processing line: ~ state.countdown ||= -1~
- Inside source: true
*** True Line Result
state.countdown ||= -1
** Processing line: ~ return "" if state.countdown == 0~
- Inside source: true
*** True Line Result
return "" if state.countdown == 0
** Processing line: ~ return "GO!" if state.countdown.idiv(60) == 0~
- Inside source: true
*** True Line Result
return "GO!" if state.countdown.idiv(60) == 0
** Processing line: ~ return "GAME OVER" if state.death_at~
- Inside source: true
*** True Line Result
return "GAME OVER" if state.death_at
** Processing line: ~ return "READY?"~
- Inside source: true
*** True Line Result
return "READY?"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def begin_countdown~
- Inside source: true
*** True Line Result
def begin_countdown
** Processing line: ~ state.countdown = 4.seconds~
- Inside source: true
*** True Line Result
state.countdown = 4.seconds
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def score_text~
- Inside source: true
*** True Line Result
def score_text
** Processing line: ~ return "" unless state.countdown > 1.seconds~
- Inside source: true
*** True Line Result
return "" unless state.countdown > 1.seconds
** Processing line: ~ return "" unless state.death_at~
- Inside source: true
*** True Line Result
return "" unless state.death_at
** Processing line: ~ return "SCORE: 0 (LOL)" if state.score == 0~
- Inside source: true
*** True Line Result
return "SCORE: 0 (LOL)" if state.score == 0
** Processing line: ~ return "HI SCORE: #{state.score}" if state.score == state.hi_score~
- Inside source: true
*** True Line Result
return "HI SCORE: #{state.score}" if state.score == state.hi_score
** Processing line: ~ return "SCORE: #{state.score}"~
- Inside source: true
*** True Line Result
return "SCORE: #{state.score}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def reset_game set_flash = true~
- Inside source: true
*** True Line Result
def reset_game set_flash = true
** Processing line: ~ state.flash_at = state.tick_count if set_flash~
- Inside source: true
*** True Line Result
state.flash_at = state.tick_count if set_flash
** Processing line: ~ state.walls = []~
- Inside source: true
*** True Line Result
state.walls = []
** Processing line: ~ state.y = 500~
- Inside source: true
*** True Line Result
state.y = 500
** Processing line: ~ state.dy = 0~
- Inside source: true
*** True Line Result
state.dy = 0
** Processing line: ~ state.hi_score = state.hi_score.greater(state.score)~
- Inside source: true
*** True Line Result
state.hi_score = state.hi_score.greater(state.score)
** Processing line: ~ state.score = 0~
- Inside source: true
*** True Line Result
state.score = 0
** Processing line: ~ state.wall_countdown = state.wall_countdown_length.fdiv(2)~
- Inside source: true
*** True Line Result
state.wall_countdown = state.wall_countdown_length.fdiv(2)
** Processing line: ~ state.show_death = false~
- Inside source: true
*** True Line Result
state.show_death = false
** Processing line: ~ state.death_at = nil~
- Inside source: true
*** True Line Result
state.death_at = nil
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def change_to_scene scene~
- Inside source: true
*** True Line Result
def change_to_scene scene
** Processing line: ~ state.scene = scene~
- Inside source: true
*** True Line Result
state.scene = scene
** Processing line: ~ state.scene_at = state.tick_count~
- Inside source: true
*** True Line Result
state.scene_at = state.tick_count
** Processing line: ~ inputs.keyboard.clear~
- Inside source: true
*** True Line Result
inputs.keyboard.clear
** Processing line: ~ inputs.controller_one.clear~
- Inside source: true
*** True Line Result
inputs.controller_one.clear
** 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: ~ $flappy_dragon = FlappyDragon.new~
- Inside source: true
*** True Line Result
$flappy_dragon = FlappyDragon.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: ~ $flappy_dragon.grid = args.grid~
- Inside source: true
*** True Line Result
$flappy_dragon.grid = args.grid
** Processing line: ~ $flappy_dragon.inputs = args.inputs~
- Inside source: true
*** True Line Result
$flappy_dragon.inputs = args.inputs
** Processing line: ~ $flappy_dragon.state = args.state~
- Inside source: true
*** True Line Result
$flappy_dragon.state = args.state
** Processing line: ~ $flappy_dragon.outputs = args.outputs~
- Inside source: true
*** True Line Result
$flappy_dragon.outputs = args.outputs
** Processing line: ~ $flappy_dragon.tick~
- Inside source: true
*** True Line Result
$flappy_dragon.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: ~* Arcade - Pong - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Arcade - Pong - 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_arcade/pong/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_arcade/pong/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: ~ calc args~
- Inside source: true
*** True Line Result
calc args
** Processing line: ~ input args~
- Inside source: true
*** True Line Result
input args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def defaults args~
- Inside source: true
*** True Line Result
def defaults args
** Processing line: ~ args.state.ball.debounce ||= 3 * 60~
- Inside source: true
*** True Line Result
args.state.ball.debounce ||= 3 * 60
** Processing line: ~ args.state.ball.size ||= 10~
- Inside source: true
*** True Line Result
args.state.ball.size ||= 10
** Processing line: ~ args.state.ball.size_half ||= args.state.ball.size / 2~
- Inside source: true
*** True Line Result
args.state.ball.size_half ||= args.state.ball.size / 2
** Processing line: ~ args.state.ball.x ||= 640~
- Inside source: true
*** True Line Result
args.state.ball.x ||= 640
** Processing line: ~ args.state.ball.y ||= 360~
- Inside source: true
*** True Line Result
args.state.ball.y ||= 360
** Processing line: ~ args.state.ball.dx ||= 5.randomize(:sign)~
- Inside source: true
*** True Line Result
args.state.ball.dx ||= 5.randomize(:sign)
** Processing line: ~ args.state.ball.dy ||= 5.randomize(:sign)~
- Inside source: true
*** True Line Result
args.state.ball.dy ||= 5.randomize(:sign)
** Processing line: ~ args.state.left_paddle.y ||= 360~
- Inside source: true
*** True Line Result
args.state.left_paddle.y ||= 360
** Processing line: ~ args.state.right_paddle.y ||= 360~
- Inside source: true
*** True Line Result
args.state.right_paddle.y ||= 360
** Processing line: ~ args.state.paddle.h ||= 120~
- Inside source: true
*** True Line Result
args.state.paddle.h ||= 120
** Processing line: ~ args.state.paddle.w ||= 10~
- Inside source: true
*** True Line Result
args.state.paddle.w ||= 10
** Processing line: ~ args.state.left_paddle.score ||= 0~
- Inside source: true
*** True Line Result
args.state.left_paddle.score ||= 0
** Processing line: ~ args.state.right_paddle.score ||= 0~
- Inside source: true
*** True Line Result
args.state.right_paddle.score ||= 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render args~
- Inside source: true
*** True Line Result
def render args
** Processing line: ~ render_center_line args~
- Inside source: true
*** True Line Result
render_center_line args
** Processing line: ~ render_scores args~
- Inside source: true
*** True Line Result
render_scores args
** Processing line: ~ render_countdown args~
- Inside source: true
*** True Line Result
render_countdown args
** Processing line: ~ render_ball args~
- Inside source: true
*** True Line Result
render_ball args
** Processing line: ~ render_paddles args~
- Inside source: true
*** True Line Result
render_paddles args
** Processing line: ~ render_instructions args~
- Inside source: true
*** True Line Result
render_instructions args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ begin :render_methods~
- Inside source: true
*** True Line Result
begin :render_methods
** Processing line: ~ def render_center_line args~
- Inside source: true
*** True Line Result
def render_center_line args
** Processing line: ~ args.outputs.lines << [640, 0, 640, 720]~
- Inside source: true
*** True Line Result
args.outputs.lines << [640, 0, 640, 720]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_scores args~
- Inside source: true
*** True Line Result
def render_scores args
** Processing line: ~ args.outputs.labels << [~
- Inside source: true
*** True Line Result
args.outputs.labels << [
** Processing line: ~ [320, 650, args.state.left_paddle.score, 10, 1],~
- Inside source: true
*** True Line Result
[320, 650, args.state.left_paddle.score, 10, 1],
** Processing line: ~ [960, 650, args.state.right_paddle.score, 10, 1]~
- Inside source: true
*** True Line Result
[960, 650, args.state.right_paddle.score, 10, 1]
** 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_countdown args~
- Inside source: true
*** True Line Result
def render_countdown args
** Processing line: ~ return unless args.state.ball.debounce > 0~
- Inside source: true
*** True Line Result
return unless args.state.ball.debounce > 0
** Processing line: ~ args.outputs.labels << [640, 360, "%.2f" % args.state.ball.debounce.fdiv(60), 10, 1]~
- Inside source: true
*** True Line Result
args.outputs.labels << [640, 360, "%.2f" % args.state.ball.debounce.fdiv(60), 10, 1]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_ball args~
- Inside source: true
*** True Line Result
def render_ball args
** Processing line: ~ args.outputs.solids << solid_ball(args)~
- Inside source: true
*** True Line Result
args.outputs.solids << solid_ball(args)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_paddles args~
- Inside source: true
*** True Line Result
def render_paddles args
** Processing line: ~ args.outputs.solids << solid_left_paddle(args)~
- Inside source: true
*** True Line Result
args.outputs.solids << solid_left_paddle(args)
** Processing line: ~ args.outputs.solids << solid_right_paddle(args)~
- Inside source: true
*** True Line Result
args.outputs.solids << solid_right_paddle(args)
** 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 << [320, 30, "W and S keys to move left paddle.", 0, 1]~
- Inside source: true
*** True Line Result
args.outputs.labels << [320, 30, "W and S keys to move left paddle.", 0, 1]
** Processing line: ~ args.outputs.labels << [920, 30, "O and L keys to move right paddle.", 0, 1]~
- Inside source: true
*** True Line Result
args.outputs.labels << [920, 30, "O and L keys to move right paddle.", 0, 1]
** 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: ~ args.state.ball.debounce -= 1 and return if args.state.ball.debounce > 0~
- Inside source: true
*** True Line Result
args.state.ball.debounce -= 1 and return if args.state.ball.debounce > 0
** Processing line: ~ calc_move_ball args~
- Inside source: true
*** True Line Result
calc_move_ball args
** Processing line: ~ calc_collision_with_left_paddle args~
- Inside source: true
*** True Line Result
calc_collision_with_left_paddle args
** Processing line: ~ calc_collision_with_right_paddle args~
- Inside source: true
*** True Line Result
calc_collision_with_right_paddle args
** Processing line: ~ calc_collision_with_walls args~
- Inside source: true
*** True Line Result
calc_collision_with_walls args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ begin :calc_methods~
- Inside source: true
*** True Line Result
begin :calc_methods
** Processing line: ~ def calc_move_ball args~
- Inside source: true
*** True Line Result
def calc_move_ball args
** Processing line: ~ args.state.ball.x += args.state.ball.dx~
- Inside source: true
*** True Line Result
args.state.ball.x += args.state.ball.dx
** Processing line: ~ args.state.ball.y += args.state.ball.dy~
- Inside source: true
*** True Line Result
args.state.ball.y += args.state.ball.dy
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_collision_with_left_paddle args~
- Inside source: true
*** True Line Result
def calc_collision_with_left_paddle args
** Processing line: ~ if solid_left_paddle(args).intersect_rect? solid_ball(args)~
- Inside source: true
*** True Line Result
if solid_left_paddle(args).intersect_rect? solid_ball(args)
** Processing line: ~ args.state.ball.dx *= -1~
- Inside source: true
*** True Line Result
args.state.ball.dx *= -1
** Processing line: ~ elsif args.state.ball.x < 0~
- Inside source: true
*** True Line Result
elsif args.state.ball.x < 0
** Processing line: ~ args.state.right_paddle.score += 1~
- Inside source: true
*** True Line Result
args.state.right_paddle.score += 1
** Processing line: ~ calc_reset_round args~
- Inside source: true
*** True Line Result
calc_reset_round 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 calc_collision_with_right_paddle args~
- Inside source: true
*** True Line Result
def calc_collision_with_right_paddle args
** Processing line: ~ if solid_right_paddle(args).intersect_rect? solid_ball(args)~
- Inside source: true
*** True Line Result
if solid_right_paddle(args).intersect_rect? solid_ball(args)
** Processing line: ~ args.state.ball.dx *= -1~
- Inside source: true
*** True Line Result
args.state.ball.dx *= -1
** Processing line: ~ elsif args.state.ball.x > 1280~
- Inside source: true
*** True Line Result
elsif args.state.ball.x > 1280
** Processing line: ~ args.state.left_paddle.score += 1~
- Inside source: true
*** True Line Result
args.state.left_paddle.score += 1
** Processing line: ~ calc_reset_round args~
- Inside source: true
*** True Line Result
calc_reset_round 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 calc_collision_with_walls args~
- Inside source: true
*** True Line Result
def calc_collision_with_walls args
** Processing line: ~ if args.state.ball.y + args.state.ball.size_half > 720~
- Inside source: true
*** True Line Result
if args.state.ball.y + args.state.ball.size_half > 720
** Processing line: ~ args.state.ball.y = 720 - args.state.ball.size_half~
- Inside source: true
*** True Line Result
args.state.ball.y = 720 - args.state.ball.size_half
** Processing line: ~ args.state.ball.dy *= -1~
- Inside source: true
*** True Line Result
args.state.ball.dy *= -1
** Processing line: ~ elsif args.state.ball.y - args.state.ball.size_half < 0~
- Inside source: true
*** True Line Result
elsif args.state.ball.y - args.state.ball.size_half < 0
** Processing line: ~ args.state.ball.y = args.state.ball.size_half~
- Inside source: true
*** True Line Result
args.state.ball.y = args.state.ball.size_half
** Processing line: ~ args.state.ball.dy *= -1~
- Inside source: true
*** True Line Result
args.state.ball.dy *= -1
** 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_reset_round args~
- Inside source: true
*** True Line Result
def calc_reset_round args
** Processing line: ~ args.state.ball.x = 640~
- Inside source: true
*** True Line Result
args.state.ball.x = 640
** Processing line: ~ args.state.ball.y = 360~
- Inside source: true
*** True Line Result
args.state.ball.y = 360
** Processing line: ~ args.state.ball.dx = 5.randomize(:sign)~
- Inside source: true
*** True Line Result
args.state.ball.dx = 5.randomize(:sign)
** Processing line: ~ args.state.ball.dy = 5.randomize(:sign)~
- Inside source: true
*** True Line Result
args.state.ball.dy = 5.randomize(:sign)
** Processing line: ~ args.state.ball.debounce = 3 * 60~
- Inside source: true
*** True Line Result
args.state.ball.debounce = 3 * 60
** 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 input args~
- Inside source: true
*** True Line Result
def input args
** Processing line: ~ input_left_paddle args~
- Inside source: true
*** True Line Result
input_left_paddle args
** Processing line: ~ input_right_paddle args~
- Inside source: true
*** True Line Result
input_right_paddle args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ begin :input_methods~
- Inside source: true
*** True Line Result
begin :input_methods
** Processing line: ~ def input_left_paddle args~
- Inside source: true
*** True Line Result
def input_left_paddle args
** Processing line: ~ if args.inputs.controller_one.key_down.down || args.inputs.keyboard.key_down.s~
- Inside source: true
*** True Line Result
if args.inputs.controller_one.key_down.down || args.inputs.keyboard.key_down.s
** Processing line: ~ args.state.left_paddle.y -= 40~
- Inside source: true
*** True Line Result
args.state.left_paddle.y -= 40
** Processing line: ~ elsif args.inputs.controller_one.key_down.up || args.inputs.keyboard.key_down.w~
- Inside source: true
*** True Line Result
elsif args.inputs.controller_one.key_down.up || args.inputs.keyboard.key_down.w
** Processing line: ~ args.state.left_paddle.y += 40~
- Inside source: true
*** True Line Result
args.state.left_paddle.y += 40
** 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 input_right_paddle args~
- Inside source: true
*** True Line Result
def input_right_paddle args
** Processing line: ~ if args.inputs.controller_two.key_down.down || args.inputs.keyboard.key_down.l~
- Inside source: true
*** True Line Result
if args.inputs.controller_two.key_down.down || args.inputs.keyboard.key_down.l
** Processing line: ~ args.state.right_paddle.y -= 40~
- Inside source: true
*** True Line Result
args.state.right_paddle.y -= 40
** Processing line: ~ elsif args.inputs.controller_two.key_down.up || args.inputs.keyboard.key_down.o~
- Inside source: true
*** True Line Result
elsif args.inputs.controller_two.key_down.up || args.inputs.keyboard.key_down.o
** Processing line: ~ args.state.right_paddle.y += 40~
- Inside source: true
*** True Line Result
args.state.right_paddle.y += 40
** 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: ~ begin :assets~
- Inside source: true
*** True Line Result
begin :assets
** Processing line: ~ def solid_ball args~
- Inside source: true
*** True Line Result
def solid_ball args
** Processing line: ~ centered_rect args.state.ball.x, args.state.ball.y, args.state.ball.size, args.state.ball.size~
- Inside source: true
*** True Line Result
centered_rect args.state.ball.x, args.state.ball.y, args.state.ball.size, args.state.ball.size
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def solid_left_paddle args~
- Inside source: true
*** True Line Result
def solid_left_paddle args
** Processing line: ~ centered_rect_vertically 0, args.state.left_paddle.y, args.state.paddle.w, args.state.paddle.h~
- Inside source: true
*** True Line Result
centered_rect_vertically 0, args.state.left_paddle.y, args.state.paddle.w, args.state.paddle.h
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def solid_right_paddle args~
- Inside source: true
*** True Line Result
def solid_right_paddle args
** Processing line: ~ centered_rect_vertically 1280 - args.state.paddle.w, args.state.right_paddle.y, args.state.paddle.w, args.state.paddle.h~
- Inside source: true
*** True Line Result
centered_rect_vertically 1280 - args.state.paddle.w, args.state.right_paddle.y, args.state.paddle.w, args.state.paddle.h
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def centered_rect x, y, w, h~
- Inside source: true
*** True Line Result
def centered_rect x, y, w, h
** Processing line: ~ [x - w / 2, y - h / 2, w, h]~
- Inside source: true
*** True Line Result
[x - w / 2, y - h / 2, w, h]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def centered_rect_vertically x, y, w, h~
- Inside source: true
*** True Line Result
def centered_rect_vertically x, y, w, h
** Processing line: ~ [x, y - h / 2, w, h]~
- Inside source: true
*** True Line Result
[x, y - h / 2, w, h]
** 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: ~* Arcade - Snakemoji - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Arcade - Snakemoji - 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_arcade/snakemoji/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_arcade/snakemoji/app/main.rb
** Processing line: ~ # coding: utf-8~
- Inside source: true
*** True Line Result
# coding: utf-8
** Processing line: ~ ################################~
- Inside source: true
*** True Line Result
################################
** Processing line: ~ # So I was working on a snake game while~
- Inside source: true
*** True Line Result
# So I was working on a snake game while
** Processing line: ~ # learning DragonRuby, and at some point I had a thought~
- Inside source: true
*** True Line Result
# learning DragonRuby, and at some point I had a thought
** Processing line: ~ # what if I use "😀" as a function name, surely it wont work right...?~
- Inside source: true
*** True Line Result
# what if I use "😀" as a function name, surely it wont work right...?
** Processing line: ~ # RIGHT....?~
- Inside source: true
*** True Line Result
# RIGHT....?
** Processing line: ~ # BUT IT DID, IT WORKED~
- Inside source: true
*** True Line Result
# BUT IT DID, IT WORKED
** Processing line: ~ # it all went downhill from then~
- Inside source: true
*** True Line Result
# it all went downhill from then
** Processing line: ~ # Created by Anton K. (ai Doge)~
- Inside source: true
*** True Line Result
# Created by Anton K. (ai Doge)
** Processing line: ~ # https://gist.github.com/scorp200~
- Inside source: true
*** True Line Result
# https://gist.github.com/scorp200
** Processing line: ~ #############LICENSE############~
- Inside source: true
*** True Line Result
#############LICENSE############
** Processing line: ~ # Feel free to use this anywhere and however you want~
- Inside source: true
*** True Line Result
# Feel free to use this anywhere and however you want
** Processing line: ~ # You can sell this to EA for $1,000,000 if you want, its completely free.~
- Inside source: true
*** True Line Result
# You can sell this to EA for $1,000,000 if you want, its completely free.
** Processing line: ~ # Just rememeber you are helping this... thing... to spread...~
- Inside source: true
*** True Line Result
# Just rememeber you are helping this... thing... to spread...
** Processing line: ~ # ALSO! I am not liable for any mental, physical or financial damage caused.~
- Inside source: true
*** True Line Result
# ALSO! I am not liable for any mental, physical or financial damage caused.
** Processing line: ~ #############LICENSE############~
- Inside source: true
*** True Line Result
#############LICENSE############
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class Array~
- Inside source: true
*** True Line Result
class Array
** Processing line: ~ #Helper function~
- Inside source: true
*** True Line Result
#Helper function
** Processing line: ~ def move! vector~
- Inside source: true
*** True Line Result
def move! vector
** Processing line: ~ self.x += vector.x~
- Inside source: true
*** True Line Result
self.x += vector.x
** Processing line: ~ self.y += vector.y~
- Inside source: true
*** True Line Result
self.y += vector.y
** Processing line: ~ return self~
- Inside source: true
*** True Line Result
return self
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Helper function to draw snake body~
- Inside source: true
*** True Line Result
#Helper function to draw snake body
** Processing line: ~ def draw! 🎮, 📺, color~
- Inside source: true
*** True Line Result
def draw! 🎮, 📺, color
** Processing line: ~ translate 📺.solids, 🎮.⛓, [self.x * 🎮.⚖️ + 🎮.🛶 / 2, self.y * 🎮.⚖️ + 🎮.🛶 / 2, 🎮.⚖️ - 🎮.🛶, 🎮.⚖️ - 🎮.🛶, color]~
- Inside source: true
*** True Line Result
translate 📺.solids, 🎮.⛓, [self.x * 🎮.⚖️ + 🎮.🛶 / 2, self.y * 🎮.⚖️ + 🎮.🛶 / 2, 🎮.⚖️ - 🎮.🛶, 🎮.⚖️ - 🎮.🛶, color]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #This is where it all started, I was trying to find good way to multiply a map by a number, * is already used so is **~
- Inside source: true
*** True Line Result
#This is where it all started, I was trying to find good way to multiply a map by a number, * is already used so is **
** Processing line: ~ #I kept trying different combinations of symbols, when suddenly...~
- Inside source: true
*** True Line Result
#I kept trying different combinations of symbols, when suddenly...
** Processing line: ~ def 😀 value~
- Inside source: true
*** True Line Result
def 😀 value
** Processing line: ~ self.map {|d| d * value}~
- Inside source: true
*** True Line Result
self.map {|d| d * 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: ~ #Draw stuff with an offset~
- Inside source: true
*** True Line Result
#Draw stuff with an offset
** Processing line: ~ def translate output_collection, ⛓, what~
- Inside source: true
*** True Line Result
def translate output_collection, ⛓, what
** Processing line: ~ what.x += ⛓.x~
- Inside source: true
*** True Line Result
what.x += ⛓.x
** Processing line: ~ what.y += ⛓.y~
- Inside source: true
*** True Line Result
what.y += ⛓.y
** Processing line: ~ output_collection << what~
- Inside source: true
*** True Line Result
output_collection << what
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ BLUE = [33, 150, 243]~
- Inside source: true
*** True Line Result
BLUE = [33, 150, 243]
** Processing line: ~ RED = [244, 67, 54]~
- Inside source: true
*** True Line Result
RED = [244, 67, 54]
** Processing line: ~ GOLD = [255, 193, 7]~
- Inside source: true
*** True Line Result
GOLD = [255, 193, 7]
** Processing line: ~ LAST = 0~
- Inside source: true
*** True Line Result
LAST = 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ defaults args.state~
- Inside source: true
*** True Line Result
defaults args.state
** Processing line: ~ render args.state, args.outputs~
- Inside source: true
*** True Line Result
render args.state, args.outputs
** Processing line: ~ input args.state, args.inputs~
- Inside source: true
*** True Line Result
input args.state, args.inputs
** Processing line: ~ update args.state~
- Inside source: true
*** True Line Result
update args.state
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def update 🎮~
- Inside source: true
*** True Line Result
def update 🎮
** Processing line: ~ #Update every 10 frames~
- Inside source: true
*** True Line Result
#Update every 10 frames
** Processing line: ~ if 🎮.tick_count.mod_zero? 10~
- Inside source: true
*** True Line Result
if 🎮.tick_count.mod_zero? 10
** Processing line: ~ #Add new snake body piece at head's location~
- Inside source: true
*** True Line Result
#Add new snake body piece at head's location
** Processing line: ~ 🎮.🐍 << [*🎮.🤖]~
- Inside source: true
*** True Line Result
🎮.🐍 << [*🎮.🤖]
** Processing line: ~ #Assign Next Direction to Direction~
- Inside source: true
*** True Line Result
#Assign Next Direction to Direction
** Processing line: ~ 🎮.🚗 = *🎮.🚦~
- Inside source: true
*** True Line Result
🎮.🚗 = *🎮.🚦
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Trim the snake a bit if its longer than current size~
- Inside source: true
*** True Line Result
#Trim the snake a bit if its longer than current size
** Processing line: ~ if 🎮.🐍.length > 🎮.🛒~
- Inside source: true
*** True Line Result
if 🎮.🐍.length > 🎮.🛒
** Processing line: ~ 🎮.🐍 = 🎮.🐍[-🎮.🛒..-1]~
- Inside source: true
*** True Line Result
🎮.🐍 = 🎮.🐍[-🎮.🛒..-1]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Move the head in the Direction~
- Inside source: true
*** True Line Result
#Move the head in the Direction
** Processing line: ~ 🎮.🤖.move! 🎮.🚗~
- Inside source: true
*** True Line Result
🎮.🤖.move! 🎮.🚗
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #If Head is outside the playing field, or inside snake's body restart game~
- Inside source: true
*** True Line Result
#If Head is outside the playing field, or inside snake's body restart game
** Processing line: ~ if 🎮.🤖.x < 0 || 🎮.🤖.x >= 🎮.🗺.x || 🎮.🤖.y < 0 || 🎮.🤖.y >= 🎮.🗺.y || 🎮.🚗 != [0, 0] && 🎮.🐍.any? {|s| s == 🎮.🤖}~
- Inside source: true
*** True Line Result
if 🎮.🤖.x < 0 || 🎮.🤖.x >= 🎮.🗺.x || 🎮.🤖.y < 0 || 🎮.🤖.y >= 🎮.🗺.y || 🎮.🚗 != [0, 0] && 🎮.🐍.any? {|s| s == 🎮.🤖}
** Processing line: ~ LAST = 🎮.💰~
- Inside source: true
*** True Line Result
LAST = 🎮.💰
** Processing line: ~ 🎮.as_hash.clear~
- Inside source: true
*** True Line Result
🎮.as_hash.clear
** 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 head lands on food add size and score~
- Inside source: true
*** True Line Result
#If head lands on food add size and score
** Processing line: ~ if 🎮.🤖 == 🎮.🍎~
- Inside source: true
*** True Line Result
if 🎮.🤖 == 🎮.🍎
** Processing line: ~ 🎮.🛒 += 1~
- Inside source: true
*** True Line Result
🎮.🛒 += 1
** Processing line: ~ 🎮.💰 += (🎮.🛒 * 0.8).floor.to_i + 5~
- Inside source: true
*** True Line Result
🎮.💰 += (🎮.🛒 * 0.8).floor.to_i + 5
** Processing line: ~ spawn_🍎 🎮~
- Inside source: true
*** True Line Result
spawn_🍎 🎮
** Processing line: ~ puts 🎮.🍎~
- Inside source: true
*** True Line Result
puts 🎮.🍎
** 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: ~ #Every second remove 1 point~
- Inside source: true
*** True Line Result
#Every second remove 1 point
** Processing line: ~ if 🎮.💰 > 0 && 🎮.tick_count.mod_zero?(60)~
- Inside source: true
*** True Line Result
if 🎮.💰 > 0 && 🎮.tick_count.mod_zero?(60)
** Processing line: ~ 🎮.💰 -= 1~
- Inside source: true
*** True Line Result
🎮.💰 -= 1
** 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 spawn_🍎 🎮~
- Inside source: true
*** True Line Result
def spawn_🍎 🎮
** Processing line: ~ #Food~
- Inside source: true
*** True Line Result
#Food
** Processing line: ~ 🎮.🍎 ||= [*🎮.🤖]~
- Inside source: true
*** True Line Result
🎮.🍎 ||= [*🎮.🤖]
** Processing line: ~ #Randomly spawns food inside the playing field, keep doing this if the food keeps landing on the snake's body~
- Inside source: true
*** True Line Result
#Randomly spawns food inside the playing field, keep doing this if the food keeps landing on the snake's body
** Processing line: ~ while 🎮.🐍.any? {|s| s == 🎮.🍎} || 🎮.🍎 == 🎮.🤖 do~
- Inside source: true
*** True Line Result
while 🎮.🐍.any? {|s| s == 🎮.🍎} || 🎮.🍎 == 🎮.🤖 do
** Processing line: ~ 🎮.🍎 = [rand(🎮.🗺.x), rand(🎮.🗺.y)]~
- Inside source: true
*** True Line Result
🎮.🍎 = [rand(🎮.🗺.x), rand(🎮.🗺.y)]
** 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: ~ #Paint the background black~
- Inside source: true
*** True Line Result
#Paint the background black
** Processing line: ~ 📺.solids << [0, 0, 1280, 720, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
📺.solids << [0, 0, 1280, 720, 0, 0, 0, 255]
** Processing line: ~ #Draw a border for the playing field~
- Inside source: true
*** True Line Result
#Draw a border for the playing field
** Processing line: ~ translate 📺.borders, 🎮.⛓, [0, 0, 🎮.🗺.x * 🎮.⚖️, 🎮.🗺.y * 🎮.⚖️, 255, 255, 255]~
- Inside source: true
*** True Line Result
translate 📺.borders, 🎮.⛓, [0, 0, 🎮.🗺.x * 🎮.⚖️, 🎮.🗺.y * 🎮.⚖️, 255, 255, 255]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Draw the snake's body~
- Inside source: true
*** True Line Result
#Draw the snake's body
** Processing line: ~ 🎮.🐍.map do |🐍| 🐍.draw! 🎮, 📺, BLUE end~
- Inside source: true
*** True Line Result
🎮.🐍.map do |🐍| 🐍.draw! 🎮, 📺, BLUE end
** Processing line: ~ #Draw the head~
- Inside source: true
*** True Line Result
#Draw the head
** Processing line: ~ 🎮.🤖.draw! 🎮, 📺, BLUE~
- Inside source: true
*** True Line Result
🎮.🤖.draw! 🎮, 📺, BLUE
** Processing line: ~ #Draw the food~
- Inside source: true
*** True Line Result
#Draw the food
** Processing line: ~ 🎮.🍎.draw! 🎮, 📺, RED~
- Inside source: true
*** True Line Result
🎮.🍎.draw! 🎮, 📺, RED
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Draw current score~
- Inside source: true
*** True Line Result
#Draw current score
** Processing line: ~ translate 📺.labels, 🎮.⛓, [5, 715, "Score: #{🎮.💰}", GOLD]~
- Inside source: true
*** True Line Result
translate 📺.labels, 🎮.⛓, [5, 715, "Score: #{🎮.💰}", GOLD]
** Processing line: ~ #Draw your last score, if any~
- Inside source: true
*** True Line Result
#Draw your last score, if any
** Processing line: ~ translate 📺.labels, 🎮.⛓, [[*🎮.🤖.😀(🎮.⚖️)].move!([0, 🎮.⚖️ * 2]), "Your Last score is #{LAST}", 0, 1, GOLD] unless LAST == 0 || 🎮.🚗 != [0, 0]~
- Inside source: true
*** True Line Result
translate 📺.labels, 🎮.⛓, [[*🎮.🤖.😀(🎮.⚖️)].move!([0, 🎮.⚖️ * 2]), "Your Last score is #{LAST}", 0, 1, GOLD] unless LAST == 0 || 🎮.🚗 != [0, 0]
** Processing line: ~ #Draw starting message, only if Direction is 0~
- Inside source: true
*** True Line Result
#Draw starting message, only if Direction is 0
** Processing line: ~ translate 📺.labels, 🎮.⛓, [🎮.🤖.😀(🎮.⚖️), "Press any Arrow key to start", 0, 1, GOLD] unless 🎮.🚗 != [0, 0]~
- Inside source: true
*** True Line Result
translate 📺.labels, 🎮.⛓, [🎮.🤖.😀(🎮.⚖️), "Press any Arrow key to start", 0, 1, GOLD] unless 🎮.🚗 != [0, 0]
** 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: ~ #Left and Right keyboard input, only change if X direction is 0~
- Inside source: true
*** True Line Result
#Left and Right keyboard input, only change if X direction is 0
** Processing line: ~ if 🕹.keyboard.key_held.left && 🎮.🚗.x == 0~
- Inside source: true
*** True Line Result
if 🕹.keyboard.key_held.left && 🎮.🚗.x == 0
** Processing line: ~ 🎮.🚦 = [-1, 0]~
- Inside source: true
*** True Line Result
🎮.🚦 = [-1, 0]
** Processing line: ~ elsif 🕹.keyboard.key_held.right && 🎮.🚗.x == 0~
- Inside source: true
*** True Line Result
elsif 🕹.keyboard.key_held.right && 🎮.🚗.x == 0
** Processing line: ~ 🎮.🚦 = [1, 0]~
- Inside source: true
*** True Line Result
🎮.🚦 = [1, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Up and Down keyboard input, only change if Y direction is 0~
- Inside source: true
*** True Line Result
#Up and Down keyboard input, only change if Y direction is 0
** Processing line: ~ if 🕹.keyboard.key_held.up && 🎮.🚗.y == 0~
- Inside source: true
*** True Line Result
if 🕹.keyboard.key_held.up && 🎮.🚗.y == 0
** Processing line: ~ 🎮.🚦 = [0, 1]~
- Inside source: true
*** True Line Result
🎮.🚦 = [0, 1]
** Processing line: ~ elsif 🕹.keyboard.key_held.down && 🎮.🚗.y == 0~
- Inside source: true
*** True Line Result
elsif 🕹.keyboard.key_held.down && 🎮.🚗.y == 0
** Processing line: ~ 🎮.🚦 = [0, -1]~
- Inside source: true
*** True Line Result
🎮.🚦 = [0, -1]
** 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 defaults 🎮~
- Inside source: true
*** True Line Result
def defaults 🎮
** Processing line: ~ #Playing field size~
- Inside source: true
*** True Line Result
#Playing field size
** Processing line: ~ 🎮.🗺 ||= [20, 20]~
- Inside source: true
*** True Line Result
🎮.🗺 ||= [20, 20]
** Processing line: ~ #Scale for drawing, screen height / Field height~
- Inside source: true
*** True Line Result
#Scale for drawing, screen height / Field height
** Processing line: ~ 🎮.⚖️ ||= 720 / 🎮.🗺.y~
- Inside source: true
*** True Line Result
🎮.⚖️ ||= 720 / 🎮.🗺.y
** Processing line: ~ #Offset, offset all rendering to the center of the screen~
- Inside source: true
*** True Line Result
#Offset, offset all rendering to the center of the screen
** Processing line: ~ 🎮.⛓ ||= [(1280 - 720).fdiv(2), 0]~
- Inside source: true
*** True Line Result
🎮.⛓ ||= [(1280 - 720).fdiv(2), 0]
** Processing line: ~ #Padding, make the snake body slightly smaller than the scale~
- Inside source: true
*** True Line Result
#Padding, make the snake body slightly smaller than the scale
** Processing line: ~ 🎮.🛶 ||= (🎮.⚖️ * 0.2).to_i~
- Inside source: true
*** True Line Result
🎮.🛶 ||= (🎮.⚖️ * 0.2).to_i
** Processing line: ~ #Snake Size~
- Inside source: true
*** True Line Result
#Snake Size
** Processing line: ~ 🎮.🛒 ||= 3~
- Inside source: true
*** True Line Result
🎮.🛒 ||= 3
** Processing line: ~ #Snake head, the only part we are actually controlling~
- Inside source: true
*** True Line Result
#Snake head, the only part we are actually controlling
** Processing line: ~ 🎮.🤖 ||= [🎮.🗺.x / 2, 🎮.🗺.y / 2]~
- Inside source: true
*** True Line Result
🎮.🤖 ||= [🎮.🗺.x / 2, 🎮.🗺.y / 2]
** Processing line: ~ #Snake body map, follows the head~
- Inside source: true
*** True Line Result
#Snake body map, follows the head
** Processing line: ~ 🎮.🐍 ||= []~
- Inside source: true
*** True Line Result
🎮.🐍 ||= []
** Processing line: ~ #Direction the head moves to~
- Inside source: true
*** True Line Result
#Direction the head moves to
** Processing line: ~ 🎮.🚗 ||= [0, 0]~
- Inside source: true
*** True Line Result
🎮.🚗 ||= [0, 0]
** Processing line: ~ #Next_Direction, during input check only change this variable and then when game updates asign this to Direction~
- Inside source: true
*** True Line Result
#Next_Direction, during input check only change this variable and then when game updates asign this to Direction
** Processing line: ~ 🎮.🚦 ||= [*🎮.🚗]~
- Inside source: true
*** True Line Result
🎮.🚦 ||= [*🎮.🚗]
** Processing line: ~ #Your score~
- Inside source: true
*** True Line Result
#Your score
** Processing line: ~ 🎮.💰 ||= 0~
- Inside source: true
*** True Line Result
🎮.💰 ||= 0
** Processing line: ~ #Spawns Food randomly~
- Inside source: true
*** True Line Result
#Spawns Food randomly
** Processing line: ~ spawn_🍎(🎮) unless 🎮.🍎?~
- Inside source: true
*** True Line Result
spawn_🍎(🎮) unless 🎮.🍎?
** 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: ~* Arcade - Solar System - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Arcade - Solar System - 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_arcade/solar_system/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_arcade/solar_system/app/main.rb
** Processing line: ~ # Focused tutorial video: https://s3.amazonaws.com/s3.dragonruby.org/dragonruby-nddnug-workshop.mp4~
- Inside source: true
*** True Line Result
# Focused tutorial video: https://s3.amazonaws.com/s3.dragonruby.org/dragonruby-nddnug-workshop.mp4
** Processing line: ~ # Workshop/Presentation which provides motivation for creating a game engine: https://www.youtube.com/watch?v=S3CFce1arC8~
- Inside source: true
*** True Line Result
# Workshop/Presentation which provides motivation for creating a game engine: https://www.youtube.com/watch?v=S3CFce1arC8
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def defaults args~
- Inside source: true
*** True Line Result
def defaults args
** 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.state.x ||= 640~
- Inside source: true
*** True Line Result
args.state.x ||= 640
** Processing line: ~ args.state.y ||= 360~
- Inside source: true
*** True Line Result
args.state.y ||= 360
** Processing line: ~ args.state.stars ||= 100.map do~
- Inside source: true
*** True Line Result
args.state.stars ||= 100.map do
** Processing line: ~ [1280 * rand, 720 * rand, rand.fdiv(10), 255 * rand, 255 * rand, 255 * rand]~
- Inside source: true
*** True Line Result
[1280 * rand, 720 * rand, rand.fdiv(10), 255 * rand, 255 * rand, 255 * rand]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.sun ||= args.state.new_entity(:sun) do |s|~
- Inside source: true
*** True Line Result
args.state.sun ||= args.state.new_entity(:sun) do |s|
** Processing line: ~ s.s = 100~
- Inside source: true
*** True Line Result
s.s = 100
** Processing line: ~ s.path = 'sprites/sun.png'~
- Inside source: true
*** True Line Result
s.path = 'sprites/sun.png'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.planets = [~
- Inside source: true
*** True Line Result
args.state.planets = [
** Processing line: ~ [:mercury, 65, 5, 88],~
- Inside source: true
*** True Line Result
[:mercury, 65, 5, 88],
** Processing line: ~ [:venus, 100, 10, 225],~
- Inside source: true
*** True Line Result
[:venus, 100, 10, 225],
** Processing line: ~ [:earth, 120, 10, 365],~
- Inside source: true
*** True Line Result
[:earth, 120, 10, 365],
** Processing line: ~ [:mars, 140, 8, 687],~
- Inside source: true
*** True Line Result
[:mars, 140, 8, 687],
** Processing line: ~ [:jupiter, 280, 30, 365 * 11.8],~
- Inside source: true
*** True Line Result
[:jupiter, 280, 30, 365 * 11.8],
** Processing line: ~ [:saturn, 350, 20, 365 * 29.5],~
- Inside source: true
*** True Line Result
[:saturn, 350, 20, 365 * 29.5],
** Processing line: ~ [:uranus, 400, 15, 365 * 84],~
- Inside source: true
*** True Line Result
[:uranus, 400, 15, 365 * 84],
** Processing line: ~ [:neptune, 440, 15, 365 * 164.8],~
- Inside source: true
*** True Line Result
[:neptune, 440, 15, 365 * 164.8],
** Processing line: ~ [:pluto, 480, 5, 365 * 247.8],~
- Inside source: true
*** True Line Result
[:pluto, 480, 5, 365 * 247.8],
** Processing line: ~ ].map do |name, distance, size, year_in_days|~
- Inside source: true
*** True Line Result
].map do |name, distance, size, year_in_days|
** Processing line: ~ args.state.new_entity(name) do |p|~
- Inside source: true
*** True Line Result
args.state.new_entity(name) do |p|
** Processing line: ~ p.path = "sprites/#{name}.png"~
- Inside source: true
*** True Line Result
p.path = "sprites/#{name}.png"
** Processing line: ~ p.distance = distance * 0.7~
- Inside source: true
*** True Line Result
p.distance = distance * 0.7
** Processing line: ~ p.s = size * 0.7~
- Inside source: true
*** True Line Result
p.s = size * 0.7
** Processing line: ~ p.year_in_days = year_in_days~
- Inside source: true
*** True Line Result
p.year_in_days = year_in_days
** 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: ~ args.state.ship ||= args.state.new_entity(:ship) do |s|~
- Inside source: true
*** True Line Result
args.state.ship ||= args.state.new_entity(:ship) do |s|
** Processing line: ~ s.x = 1280 * rand~
- Inside source: true
*** True Line Result
s.x = 1280 * rand
** Processing line: ~ s.y = 720 * rand~
- Inside source: true
*** True Line Result
s.y = 720 * rand
** Processing line: ~ s.angle = 0~
- Inside source: true
*** True Line Result
s.angle = 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 to_sprite args, entity~
- Inside source: true
*** True Line Result
def to_sprite args, entity
** Processing line: ~ x = 0~
- Inside source: true
*** True Line Result
x = 0
** Processing line: ~ y = 0~
- Inside source: true
*** True Line Result
y = 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if entity.year_in_days~
- Inside source: true
*** True Line Result
if entity.year_in_days
** Processing line: ~ day = args.state.tick_count~
- Inside source: true
*** True Line Result
day = args.state.tick_count
** Processing line: ~ day_in_year = day % entity.year_in_days~
- Inside source: true
*** True Line Result
day_in_year = day % entity.year_in_days
** Processing line: ~ entity.random_start_day ||= day_in_year * rand~
- Inside source: true
*** True Line Result
entity.random_start_day ||= day_in_year * rand
** Processing line: ~ percentage_of_year = day_in_year.fdiv(entity.year_in_days)~
- Inside source: true
*** True Line Result
percentage_of_year = day_in_year.fdiv(entity.year_in_days)
** Processing line: ~ angle = 365 * percentage_of_year~
- Inside source: true
*** True Line Result
angle = 365 * percentage_of_year
** Processing line: ~ x = angle.vector_x(entity.distance)~
- Inside source: true
*** True Line Result
x = angle.vector_x(entity.distance)
** Processing line: ~ y = angle.vector_y(entity.distance)~
- Inside source: true
*** True Line Result
y = angle.vector_y(entity.distance)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [640 + x - entity.s.half, 360 + y - entity.s.half, entity.s, entity.s, entity.path]~
- Inside source: true
*** True Line Result
[640 + x - entity.s.half, 360 + y - entity.s.half, entity.s, entity.s, entity.path]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render args~
- Inside source: true
*** True Line Result
def render args
** Processing line: ~ args.outputs.solids << [0, 0, 1280, 720]~
- Inside source: true
*** True Line Result
args.outputs.solids << [0, 0, 1280, 720]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.sprites << args.state.stars.map do |x, y, _, r, g, b|~
- Inside source: true
*** True Line Result
args.outputs.sprites << args.state.stars.map do |x, y, _, r, g, b|
** Processing line: ~ [x, y, 10, 10, 'sprites/star.png', 0, 100, r, g, b]~
- Inside source: true
*** True Line Result
[x, y, 10, 10, 'sprites/star.png', 0, 100, r, g, b]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.sprites << to_sprite(args, args.state.sun)~
- Inside source: true
*** True Line Result
args.outputs.sprites << to_sprite(args, args.state.sun)
** Processing line: ~ args.outputs.sprites << args.state.planets.map { |p| to_sprite args, p }~
- Inside source: true
*** True Line Result
args.outputs.sprites << args.state.planets.map { |p| to_sprite args, p }
** Processing line: ~ args.outputs.sprites << [args.state.ship.x, args.state.ship.y, 20, 20, 'sprites/ship.png', args.state.ship.angle]~
- Inside source: true
*** True Line Result
args.outputs.sprites << [args.state.ship.x, args.state.ship.y, 20, 20, 'sprites/ship.png', args.state.ship.angle]
** 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: ~ args.state.stars = args.state.stars.map do |x, y, speed, r, g, b|~
- Inside source: true
*** True Line Result
args.state.stars = args.state.stars.map do |x, y, speed, r, g, b|
** Processing line: ~ x += speed~
- Inside source: true
*** True Line Result
x += speed
** Processing line: ~ y += speed~
- Inside source: true
*** True Line Result
y += speed
** Processing line: ~ x = 0 if x > 1280~
- Inside source: true
*** True Line Result
x = 0 if x > 1280
** Processing line: ~ y = 0 if y > 720~
- Inside source: true
*** True Line Result
y = 0 if y > 720
** Processing line: ~ [x, y, speed, r, g, b]~
- Inside source: true
*** True Line Result
[x, y, speed, r, g, b]
** 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 == 0~
- Inside source: true
*** True Line Result
if args.state.tick_count == 0
** Processing line: ~ args.outputs.sounds << 'sounds/bg.ogg'~
- Inside source: true
*** True Line Result
args.outputs.sounds << 'sounds/bg.ogg'
** 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_inputs args~
- Inside source: true
*** True Line Result
def process_inputs args
** Processing line: ~ if args.inputs.keyboard.left || args.inputs.controller_one.key_held.left~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.left || args.inputs.controller_one.key_held.left
** Processing line: ~ args.state.ship.angle += 1~
- Inside source: true
*** True Line Result
args.state.ship.angle += 1
** Processing line: ~ elsif args.inputs.keyboard.right || args.inputs.controller_one.key_held.right~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.right || args.inputs.controller_one.key_held.right
** Processing line: ~ args.state.ship.angle -= 1~
- Inside source: true
*** True Line Result
args.state.ship.angle -= 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.up || args.inputs.controller_one.key_held.a~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.up || args.inputs.controller_one.key_held.a
** Processing line: ~ args.state.ship.x += args.state.ship.angle.x_vector~
- Inside source: true
*** True Line Result
args.state.ship.x += args.state.ship.angle.x_vector
** Processing line: ~ args.state.ship.y += args.state.ship.angle.y_vector~
- Inside source: true
*** True Line Result
args.state.ship.y += args.state.ship.angle.y_vector
** 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: ~ defaults args~
- Inside source: true
*** True Line Result
defaults args
** Processing line: ~ render args~
- Inside source: true
*** True Line Result
render args
** Processing line: ~ calc args~
- Inside source: true
*** True Line Result
calc args
** Processing line: ~ process_inputs args~
- Inside source: true
*** True Line Result
process_inputs args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def r~
- Inside source: true
*** True Line Result
def r
** Processing line: ~ $gtk.reset~
- Inside source: true
*** True Line Result
$gtk.reset
** 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 - Craft Game Starting Point - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Crafting - Craft Game 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_crafting/craft_game_starting_point/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_crafting/craft_game_starting_point/app/main.rb
** Processing line: ~ # ==================================================~
- Inside source: true
*** True Line Result
# ==================================================
** Processing line: ~ # A NOTE TO JAM CRAFT PARTICIPANTS:~
- Inside source: true
*** True Line Result
# A NOTE TO JAM CRAFT PARTICIPANTS:
** Processing line: ~ # The comments and code in here are just as small piece of DragonRuby's capabilities.~
- Inside source: true
*** True Line Result
# The comments and code in here are just as small piece of DragonRuby's capabilities.
** Processing line: ~ # Be sure to check out the rest of the sample apps. Start with README.txt and go from there!~
- Inside source: true
*** True Line Result
# Be sure to check out the rest of the sample apps. Start with README.txt and go from there!
** Processing line: ~ # ==================================================~
- Inside source: true
*** True Line Result
# ==================================================
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # def tick args is the entry point into your game. This function is called at~
- Inside source: true
*** True Line Result
# def tick args is the entry point into your game. This function is called at
** Processing line: ~ # a fixed update time of 60hz (60 fps).~
- Inside source: true
*** True Line Result
# a fixed update time of 60hz (60 fps).
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # The defaults function intitializes the game.~
- Inside source: true
*** True Line Result
# The defaults function intitializes the game.
** Processing line: ~ defaults args~
- Inside source: true
*** True Line Result
defaults args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # After the game is initialized, render it.~
- Inside source: true
*** True Line Result
# After the game is initialized, render it.
** Processing line: ~ render args~
- Inside source: true
*** True Line Result
render args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # After rendering the player should be able to respond to input.~
- Inside source: true
*** True Line Result
# After rendering the player should be able to respond to input.
** Processing line: ~ input args~
- Inside source: true
*** True Line Result
input args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # After responding to input, the game performs any additional calculations.~
- Inside source: true
*** True Line Result
# After responding to input, the game performs any additional calculations.
** 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: ~ def defaults args~
- Inside source: true
*** True Line Result
def defaults args
** Processing line: ~ # hide the mouse cursor for this game, we are going to render our own cursor~
- Inside source: true
*** True Line Result
# hide the mouse cursor for this game, we are going to render our own cursor
** Processing line: ~ if args.state.tick_count == 0~
- Inside source: true
*** True Line Result
if args.state.tick_count == 0
** Processing line: ~ args.gtk.hide_cursor~
- Inside source: true
*** True Line Result
args.gtk.hide_cursor
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.click_ripples ||= []~
- Inside source: true
*** True Line Result
args.state.click_ripples ||= []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # everything is on a 1280x720 virtual canvas, so you can~
- Inside source: true
*** True Line Result
# everything is on a 1280x720 virtual canvas, so you can
** Processing line: ~ # hardcode locations~
- Inside source: true
*** True Line Result
# hardcode locations
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # define the borders for where the inventory is located~
- Inside source: true
*** True Line Result
# define the borders for where the inventory is located
** Processing line: ~ # args.state is a data structure that accepts any arbitrary parameters~
- Inside source: true
*** True Line Result
# args.state is a data structure that accepts any arbitrary parameters
** Processing line: ~ # so you can create an object graph without having to create any classes.~
- Inside source: true
*** True Line Result
# so you can create an object graph without having to create any classes.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Bottom left is 0, 0. Top right is 1280, 720.~
- Inside source: true
*** True Line Result
# Bottom left is 0, 0. Top right is 1280, 720.
** Processing line: ~ # The inventory area is at the top of the screen~
- Inside source: true
*** True Line Result
# The inventory area is at the top of the screen
** Processing line: ~ # the number 80 is the size of all the sprites, so that is what is being~
- Inside source: true
*** True Line Result
# the number 80 is the size of all the sprites, so that is what is being
** Processing line: ~ # used to decide the with and height~
- Inside source: true
*** True Line Result
# used to decide the with and height
** Processing line: ~ args.state.sprite_size = 80~
- Inside source: true
*** True Line Result
args.state.sprite_size = 80
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.inventory_border.w = args.state.sprite_size * 10~
- Inside source: true
*** True Line Result
args.state.inventory_border.w = args.state.sprite_size * 10
** Processing line: ~ args.state.inventory_border.h = args.state.sprite_size * 3~
- Inside source: true
*** True Line Result
args.state.inventory_border.h = args.state.sprite_size * 3
** Processing line: ~ args.state.inventory_border.x = 10~
- Inside source: true
*** True Line Result
args.state.inventory_border.x = 10
** Processing line: ~ args.state.inventory_border.y = 710 - args.state.inventory_border.h~
- Inside source: true
*** True Line Result
args.state.inventory_border.y = 710 - args.state.inventory_border.h
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # define the borders for where the crafting area is located~
- Inside source: true
*** True Line Result
# define the borders for where the crafting area is located
** Processing line: ~ # the crafting area is below the inventory area~
- Inside source: true
*** True Line Result
# the crafting area is below the inventory area
** Processing line: ~ # the number 80 is the size of all the sprites, so that is what is being~
- Inside source: true
*** True Line Result
# the number 80 is the size of all the sprites, so that is what is being
** Processing line: ~ # used to decide the with and height~
- Inside source: true
*** True Line Result
# used to decide the with and height
** Processing line: ~ args.state.craft_border.x = 10~
- Inside source: true
*** True Line Result
args.state.craft_border.x = 10
** Processing line: ~ args.state.craft_border.y = 220~
- Inside source: true
*** True Line Result
args.state.craft_border.y = 220
** Processing line: ~ args.state.craft_border.w = args.state.sprite_size * 3~
- Inside source: true
*** True Line Result
args.state.craft_border.w = args.state.sprite_size * 3
** Processing line: ~ args.state.craft_border.h = args.state.sprite_size * 3~
- Inside source: true
*** True Line Result
args.state.craft_border.h = args.state.sprite_size * 3
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # define the area where results are located~
- Inside source: true
*** True Line Result
# define the area where results are located
** Processing line: ~ # the crafting result is to the right of the craft area~
- Inside source: true
*** True Line Result
# the crafting result is to the right of the craft area
** Processing line: ~ args.state.result_border.x = 10 + args.state.sprite_size * 3 + args.state.sprite_size~
- Inside source: true
*** True Line Result
args.state.result_border.x = 10 + args.state.sprite_size * 3 + args.state.sprite_size
** Processing line: ~ args.state.result_border.y = 220 + args.state.sprite_size~
- Inside source: true
*** True Line Result
args.state.result_border.y = 220 + args.state.sprite_size
** Processing line: ~ args.state.result_border.w = args.state.sprite_size~
- Inside source: true
*** True Line Result
args.state.result_border.w = args.state.sprite_size
** Processing line: ~ args.state.result_border.h = args.state.sprite_size~
- Inside source: true
*** True Line Result
args.state.result_border.h = args.state.sprite_size
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # initialize items for the first time if they are nil~
- Inside source: true
*** True Line Result
# initialize items for the first time if they are nil
** Processing line: ~ # you start with 15 wood, 1 chest, and 5 plank~
- Inside source: true
*** True Line Result
# you start with 15 wood, 1 chest, and 5 plank
** Processing line: ~ # Ruby has built in syntax for dictionaries (they look a lot like json objects).~
- Inside source: true
*** True Line Result
# Ruby has built in syntax for dictionaries (they look a lot like json objects).
** Processing line: ~ # Ruby also has a special type called a Symbol denoted with a : followed by a word.~
- Inside source: true
*** True Line Result
# Ruby also has a special type called a Symbol denoted with a : followed by a word.
** Processing line: ~ # Symbols are nice because they remove the need for magic strings.~
- Inside source: true
*** True Line Result
# Symbols are nice because they remove the need for magic strings.
** Processing line: ~ if !args.state.items~
- Inside source: true
*** True Line Result
if !args.state.items
** Processing line: ~ args.state.items = [~
- Inside source: true
*** True Line Result
args.state.items = [
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ id: :wood, # :wood is a Symbol, this is better than using "wood" for the id~
- Inside source: true
*** True Line Result
id: :wood, # :wood is a Symbol, this is better than using "wood" for the id
** Processing line: ~ quantity: 15,~
- Inside source: true
*** True Line Result
quantity: 15,
** Processing line: ~ path: 'sprites/wood.png',~
- Inside source: true
*** True Line Result
path: 'sprites/wood.png',
** Processing line: ~ location: :inventory,~
- Inside source: true
*** True Line Result
location: :inventory,
** Processing line: ~ ordinal_x: 0, ordinal_y: 0~
- Inside source: true
*** True Line Result
ordinal_x: 0, ordinal_y: 0
** Processing line: ~ },~
- Inside source: true
*** True Line Result
},
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ id: :chest,~
- Inside source: true
*** True Line Result
id: :chest,
** Processing line: ~ quantity: 1,~
- Inside source: true
*** True Line Result
quantity: 1,
** Processing line: ~ path: 'sprites/chest.png',~
- Inside source: true
*** True Line Result
path: 'sprites/chest.png',
** Processing line: ~ location: :inventory,~
- Inside source: true
*** True Line Result
location: :inventory,
** Processing line: ~ ordinal_x: 1, ordinal_y: 0~
- Inside source: true
*** True Line Result
ordinal_x: 1, ordinal_y: 0
** Processing line: ~ },~
- Inside source: true
*** True Line Result
},
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ id: :plank,~
- Inside source: true
*** True Line Result
id: :plank,
** Processing line: ~ quantity: 5,~
- Inside source: true
*** True Line Result
quantity: 5,
** Processing line: ~ path: 'sprites/plank.png',~
- Inside source: true
*** True Line Result
path: 'sprites/plank.png',
** Processing line: ~ location: :inventory,~
- Inside source: true
*** True Line Result
location: :inventory,
** Processing line: ~ ordinal_x: 2, ordinal_y: 0~
- Inside source: true
*** True Line Result
ordinal_x: 2, ordinal_y: 0
** 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: ~ # after initializing the oridinal positions, derive the pixel~
- Inside source: true
*** True Line Result
# after initializing the oridinal positions, derive the pixel
** Processing line: ~ # locations assuming that the width and height are 80~
- Inside source: true
*** True Line Result
# locations assuming that the width and height are 80
** Processing line: ~ args.state.items.each { |item| set_inventory_position args, item }~
- Inside source: true
*** True Line Result
args.state.items.each { |item| set_inventory_position args, item }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # define all the oridinal positions of the inventory slots~
- Inside source: true
*** True Line Result
# define all the oridinal positions of the inventory slots
** Processing line: ~ if !args.state.inventory_area~
- Inside source: true
*** True Line Result
if !args.state.inventory_area
** Processing line: ~ args.state.inventory_area = [~
- Inside source: true
*** True Line Result
args.state.inventory_area = [
** 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: 0, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 0, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 1, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 1, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 2, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 2, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 3, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 3, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 4, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 4, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 5, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 5, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 6, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 6, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 7, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 7, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 8, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 8, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 9, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 9, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 0, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 0, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 1, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 1, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 2, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 2, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 3, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 3, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 4, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 4, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 5, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 5, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 6, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 6, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 7, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 7, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 8, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 8, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 9, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 9, ordinal_y: 2 },
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # after initializing the oridinal positions, derive the pixel~
- Inside source: true
*** True Line Result
# after initializing the oridinal positions, derive the pixel
** Processing line: ~ # locations assuming that the width and height are 80~
- Inside source: true
*** True Line Result
# locations assuming that the width and height are 80
** Processing line: ~ args.state.inventory_area.each { |i| set_inventory_position args, i }~
- Inside source: true
*** True Line Result
args.state.inventory_area.each { |i| set_inventory_position args, i }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if you want to see the result you can use the Ruby function called "puts".~
- Inside source: true
*** True Line Result
# if you want to see the result you can use the Ruby function called "puts".
** Processing line: ~ # Uncomment this line to see the value.~
- Inside source: true
*** True Line Result
# Uncomment this line to see the value.
** Processing line: ~ # puts args.state.inventory_area~
- Inside source: true
*** True Line Result
# puts args.state.inventory_area
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # You can see all things written via puts in DragonRuby's Console, or under logs/log.txt.~
- Inside source: true
*** True Line Result
# You can see all things written via puts in DragonRuby's Console, or under logs/log.txt.
** Processing line: ~ # To bring up DragonRuby's Console, press the ~ key within the game.~
- Inside source: true
*** True Line Result
# To bring up DragonRuby's Console, press the ~ key within the game.
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # define all the oridinal positions of the craft slots~
- Inside source: true
*** True Line Result
# define all the oridinal positions of the craft slots
** Processing line: ~ if !args.state.craft_area~
- Inside source: true
*** True Line Result
if !args.state.craft_area
** Processing line: ~ args.state.craft_area = [~
- Inside source: true
*** True Line Result
args.state.craft_area = [
** Processing line: ~ { ordinal_x: 0, ordinal_y: 0 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 0, ordinal_y: 0 },
** Processing line: ~ { ordinal_x: 0, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 0, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 0, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 0, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 1, ordinal_y: 0 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 1, ordinal_y: 0 },
** Processing line: ~ { ordinal_x: 1, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 1, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 1, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 1, ordinal_y: 2 },
** Processing line: ~ { ordinal_x: 2, ordinal_y: 0 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 2, ordinal_y: 0 },
** Processing line: ~ { ordinal_x: 2, ordinal_y: 1 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 2, ordinal_y: 1 },
** Processing line: ~ { ordinal_x: 2, ordinal_y: 2 },~
- Inside source: true
*** True Line Result
{ ordinal_x: 2, ordinal_y: 2 },
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # after initializing the oridinal positions, derive the pixel~
- Inside source: true
*** True Line Result
# after initializing the oridinal positions, derive the pixel
** Processing line: ~ # locations assuming that the width and height are 80~
- Inside source: true
*** True Line Result
# locations assuming that the width and height are 80
** Processing line: ~ args.state.craft_area.each { |c| set_craft_position args, c }~
- Inside source: true
*** True Line Result
args.state.craft_area.each { |c| set_craft_position args, c }
** 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: ~ def render args~
- Inside source: true
*** True Line Result
def render args
** Processing line: ~ # for the results area, create a sprite that show its boundaries~
- Inside source: true
*** True Line Result
# for the results area, create a sprite that show its boundaries
** Processing line: ~ args.outputs.primitives << { x: args.state.result_border.x,~
- Inside source: true
*** True Line Result
args.outputs.primitives << { x: args.state.result_border.x,
** Processing line: ~ y: args.state.result_border.y,~
- Inside source: true
*** True Line Result
y: args.state.result_border.y,
** Processing line: ~ w: args.state.result_border.w,~
- Inside source: true
*** True Line Result
w: args.state.result_border.w,
** Processing line: ~ h: args.state.result_border.h,~
- Inside source: true
*** True Line Result
h: args.state.result_border.h,
** Processing line: ~ path: 'sprites/border-black.png' }~
- Inside source: true
*** True Line Result
path: 'sprites/border-black.png' }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # for each inventory spot, create a sprite~
- Inside source: true
*** True Line Result
# for each inventory spot, create a sprite
** Processing line: ~ # args.outputs.primitives is how DragonRuby performs a render.~
- Inside source: true
*** True Line Result
# args.outputs.primitives is how DragonRuby performs a render.
** Processing line: ~ # Adding a single hash or multiple hashes to this array will tell~
- Inside source: true
*** True Line Result
# Adding a single hash or multiple hashes to this array will tell
** Processing line: ~ # DragonRuby to render those primitives on that frame.~
- Inside source: true
*** True Line Result
# DragonRuby to render those primitives on that frame.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The .map function on Array is used instead of any kind of looping.~
- Inside source: true
*** True Line Result
# The .map function on Array is used instead of any kind of looping.
** Processing line: ~ # .map returns a new object for every object within an Array.~
- Inside source: true
*** True Line Result
# .map returns a new object for every object within an Array.
** Processing line: ~ args.outputs.primitives << args.state.inventory_area.map do |a|~
- Inside source: true
*** True Line Result
args.outputs.primitives << args.state.inventory_area.map do |a|
** Processing line: ~ { x: a.x, y: a.y, w: a.w, h: a.h, path: 'sprites/border-black.png' }~
- Inside source: true
*** True Line Result
{ x: a.x, y: a.y, w: a.w, h: a.h, path: 'sprites/border-black.png' }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # for each craft spot, create a sprite~
- Inside source: true
*** True Line Result
# for each craft spot, create a sprite
** Processing line: ~ args.outputs.primitives << args.state.craft_area.map do |a|~
- Inside source: true
*** True Line Result
args.outputs.primitives << args.state.craft_area.map do |a|
** Processing line: ~ { x: a.x, y: a.y, w: a.w, h: a.h, path: 'sprites/border-black.png' }~
- Inside source: true
*** True Line Result
{ x: a.x, y: a.y, w: a.w, h: a.h, path: 'sprites/border-black.png' }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # after the borders have been rendered, render the~
- Inside source: true
*** True Line Result
# after the borders have been rendered, render the
** Processing line: ~ # items within those slots (and allow for highlighting)~
- Inside source: true
*** True Line Result
# items within those slots (and allow for highlighting)
** Processing line: ~ # if an item isn't currently being held~
- Inside source: true
*** True Line Result
# if an item isn't currently being held
** Processing line: ~ allow_inventory_highlighting = !args.state.held_item~
- Inside source: true
*** True Line Result
allow_inventory_highlighting = !args.state.held_item
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # go through each item and render them~
- Inside source: true
*** True Line Result
# go through each item and render them
** Processing line: ~ # use Array's find_all method to remove any items that are currently being held~
- Inside source: true
*** True Line Result
# use Array's find_all method to remove any items that are currently being held
** Processing line: ~ args.state.items.find_all { |item| item[:location] != :held }.map do |item|~
- Inside source: true
*** True Line Result
args.state.items.find_all { |item| item[:location] != :held }.map do |item|
** Processing line: ~ # if an item is currently being held, don't render it in it's spot within the~
- Inside source: true
*** True Line Result
# if an item is currently being held, don't render it in it's spot within the
** Processing line: ~ # inventory or craft area (this is handled via the find_all method).~
- Inside source: true
*** True Line Result
# inventory or craft area (this is handled via the find_all method).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # the item_prefab returns a hash containing all the visual components of an item.~
- Inside source: true
*** True Line Result
# the item_prefab returns a hash containing all the visual components of an item.
** Processing line: ~ # the main sprite, the black background, the quantity text, and a hover indication~
- Inside source: true
*** True Line Result
# the main sprite, the black background, the quantity text, and a hover indication
** Processing line: ~ # if the mouse is currently hovering over the item.~
- Inside source: true
*** True Line Result
# if the mouse is currently hovering over the item.
** Processing line: ~ args.outputs.primitives << item_prefab(args, item, allow_inventory_highlighting, args.inputs.mouse)~
- Inside source: true
*** True Line Result
args.outputs.primitives << item_prefab(args, item, allow_inventory_highlighting, args.inputs.mouse)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The last thing we want to render is the item currently being held.~
- Inside source: true
*** True Line Result
# The last thing we want to render is the item currently being held.
** Processing line: ~ args.outputs.primitives << item_prefab(args, args.state.held_item, allow_inventory_highlighting, args.inputs.mouse)~
- Inside source: true
*** True Line Result
args.outputs.primitives << item_prefab(args, args.state.held_item, allow_inventory_highlighting, args.inputs.mouse)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.primitives << args.state.click_ripples~
- Inside source: true
*** True Line Result
args.outputs.primitives << args.state.click_ripples
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render a mouse cursor since we have the OS cursor hidden~
- Inside source: true
*** True Line Result
# render a mouse cursor since we have the OS cursor hidden
** Processing line: ~ args.outputs.primitives << { x: args.inputs.mouse.x - 5, y: args.inputs.mouse.y - 5, w: 10, h: 10, path: 'sprites/circle-gray.png', a: 128 }~
- Inside source: true
*** True Line Result
args.outputs.primitives << { x: args.inputs.mouse.x - 5, y: args.inputs.mouse.y - 5, w: 10, h: 10, path: 'sprites/circle-gray.png', a: 128 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Alrighty! This is where all the fun happens~
- Inside source: true
*** True Line Result
# Alrighty! This is where all the fun happens
** Processing line: ~ def input args~
- Inside source: true
*** True Line Result
def input args
** Processing line: ~ # if the mouse is clicked and not item is currently being held~
- Inside source: true
*** True Line Result
# if the mouse is clicked and not item is currently being held
** Processing line: ~ # args.state.held_item is nil when the game starts.~
- Inside source: true
*** True Line Result
# args.state.held_item is nil when the game starts.
** Processing line: ~ # If the player clicks, the property args.inputs.mouse.click will~
- Inside source: true
*** True Line Result
# If the player clicks, the property args.inputs.mouse.click will
** Processing line: ~ # be a non nil value, we don't want to process any of the code here~
- Inside source: true
*** True Line Result
# be a non nil value, we don't want to process any of the code here
** Processing line: ~ # if the mouse hasn't been clicked~
- Inside source: true
*** True Line Result
# if the mouse hasn't been clicked
** Processing line: ~ return if !args.inputs.mouse.click~
- Inside source: true
*** True Line Result
return if !args.inputs.mouse.click
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if a click occurred, add a ripple to the ripple queue~
- Inside source: true
*** True Line Result
# if a click occurred, add a ripple to the ripple queue
** Processing line: ~ args.state.click_ripples << { x: args.inputs.mouse.x - 5, y: args.inputs.mouse.y - 5, w: 10, h: 10, path: 'sprites/circle-gray.png', a: 128 }~
- Inside source: true
*** True Line Result
args.state.click_ripples << { x: args.inputs.mouse.x - 5, y: args.inputs.mouse.y - 5, w: 10, h: 10, path: 'sprites/circle-gray.png', a: 128 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the mouse has been clicked, and no item is currently held...~
- Inside source: true
*** True Line Result
# if the mouse has been clicked, and no item is currently held...
** Processing line: ~ if !args.state.held_item~
- Inside source: true
*** True Line Result
if !args.state.held_item
** Processing line: ~ # see if any of the items intersect the pointer using the inside_rect? method~
- Inside source: true
*** True Line Result
# see if any of the items intersect the pointer using the inside_rect? method
** Processing line: ~ # the find method will either return the first object that returns true~
- Inside source: true
*** True Line Result
# the find method will either return the first object that returns true
** Processing line: ~ # for the match clause, or it'll return nil if nothing matches the match clause~
- Inside source: true
*** True Line Result
# for the match clause, or it'll return nil if nothing matches the match clause
** Processing line: ~ found = args.state.items.find do |item|~
- Inside source: true
*** True Line Result
found = args.state.items.find do |item|
** Processing line: ~ # for each item in args.state.items, run the following boolean check~
- Inside source: true
*** True Line Result
# for each item in args.state.items, run the following boolean check
** Processing line: ~ args.inputs.mouse.click.point.inside_rect?(item)~
- Inside source: true
*** True Line Result
args.inputs.mouse.click.point.inside_rect?(item)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if an item intersects the mouse pointer, then set the item's location to :held and~
- Inside source: true
*** True Line Result
# if an item intersects the mouse pointer, then set the item's location to :held and
** Processing line: ~ # set args.state.held_item to the item for later reference~
- Inside source: true
*** True Line Result
# set args.state.held_item to the item for later reference
** Processing line: ~ if found~
- Inside source: true
*** True Line Result
if found
** Processing line: ~ args.state.held_item = found~
- Inside source: true
*** True Line Result
args.state.held_item = found
** Processing line: ~ found[:location] = :held~
- Inside source: true
*** True Line Result
found[:location] = :held
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the mouse is clicked and an item is currently beign held....~
- Inside source: true
*** True Line Result
# if the mouse is clicked and an item is currently beign held....
** Processing line: ~ elsif args.state.held_item~
- Inside source: true
*** True Line Result
elsif args.state.held_item
** Processing line: ~ # determine if a slot within the craft area was clicked~
- Inside source: true
*** True Line Result
# determine if a slot within the craft area was clicked
** Processing line: ~ craft_area = args.state.craft_area.find { |a| args.inputs.mouse.click.point.inside_rect? a }~
- Inside source: true
*** True Line Result
craft_area = args.state.craft_area.find { |a| args.inputs.mouse.click.point.inside_rect? a }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # also determine if a slot within the inventory area was clicked~
- Inside source: true
*** True Line Result
# also determine if a slot within the inventory area was clicked
** Processing line: ~ inventory_area = args.state.inventory_area.find { |a| args.inputs.mouse.click.point.inside_rect? a }~
- Inside source: true
*** True Line Result
inventory_area = args.state.inventory_area.find { |a| args.inputs.mouse.click.point.inside_rect? a }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the click was within a craft area~
- Inside source: true
*** True Line Result
# if the click was within a craft area
** Processing line: ~ if craft_area~
- Inside source: true
*** True Line Result
if craft_area
** Processing line: ~ # check to see if an item is already there and ignore the click if an item is found~
- Inside source: true
*** True Line Result
# check to see if an item is already there and ignore the click if an item is found
** Processing line: ~ # item_at_craft_slot is a helper method that returns an item or nil for a given oridinal~
- Inside source: true
*** True Line Result
# item_at_craft_slot is a helper method that returns an item or nil for a given oridinal
** Processing line: ~ # position~
- Inside source: true
*** True Line Result
# position
** Processing line: ~ item_already_there = item_at_craft_slot args, craft_area[:ordinal_x], craft_area[:ordinal_y]~
- Inside source: true
*** True Line Result
item_already_there = item_at_craft_slot args, craft_area[:ordinal_x], craft_area[:ordinal_y]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if an item *doesn't* exist in the craft area~
- Inside source: true
*** True Line Result
# if an item *doesn't* exist in the craft area
** Processing line: ~ if !item_already_there~
- Inside source: true
*** True Line Result
if !item_already_there
** Processing line: ~ # if the quantity they are currently holding is greater than 1~
- Inside source: true
*** True Line Result
# if the quantity they are currently holding is greater than 1
** Processing line: ~ if args.state.held_item[:quantity] > 1~
- Inside source: true
*** True Line Result
if args.state.held_item[:quantity] > 1
** Processing line: ~ # remove one item (creating a seperate item of the same type), and place it~
- Inside source: true
*** True Line Result
# remove one item (creating a seperate item of the same type), and place it
** Processing line: ~ # at the oridinal position and location of the craft area~
- Inside source: true
*** True Line Result
# at the oridinal position and location of the craft area
** Processing line: ~ # the .merge method on Hash creates a new Hash, but updates any values~
- Inside source: true
*** True Line Result
# the .merge method on Hash creates a new Hash, but updates any values
** Processing line: ~ # passed as arguments to merge~
- Inside source: true
*** True Line Result
# passed as arguments to merge
** Processing line: ~ new_item = args.state.held_item.merge(quantity: 1,~
- Inside source: true
*** True Line Result
new_item = args.state.held_item.merge(quantity: 1,
** Processing line: ~ location: :craft,~
- Inside source: true
*** True Line Result
location: :craft,
** Processing line: ~ ordinal_x: craft_area[:ordinal_x],~
- Inside source: true
*** True Line Result
ordinal_x: craft_area[:ordinal_x],
** Processing line: ~ ordinal_y: craft_area[:ordinal_y])~
- Inside source: true
*** True Line Result
ordinal_y: craft_area[:ordinal_y])
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # after the item is crated, place it into the args.state.items collection~
- Inside source: true
*** True Line Result
# after the item is crated, place it into the args.state.items collection
** Processing line: ~ args.state.items << new_item~
- Inside source: true
*** True Line Result
args.state.items << new_item
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # then subtract one from the held item~
- Inside source: true
*** True Line Result
# then subtract one from the held item
** Processing line: ~ args.state.held_item[:quantity] -= 1~
- Inside source: true
*** True Line Result
args.state.held_item[:quantity] -= 1
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if the craft area is available and there is only one item being held~
- Inside source: true
*** True Line Result
# if the craft area is available and there is only one item being held
** Processing line: ~ elsif args.state.held_item[:quantity] == 1~
- Inside source: true
*** True Line Result
elsif args.state.held_item[:quantity] == 1
** Processing line: ~ # instead of creating any new items just set the location of the held item~
- Inside source: true
*** True Line Result
# instead of creating any new items just set the location of the held item
** Processing line: ~ # to the oridinal position of the craft area, and then nil out the~
- Inside source: true
*** True Line Result
# to the oridinal position of the craft area, and then nil out the
** Processing line: ~ # held item state so that a new item can be picked up~
- Inside source: true
*** True Line Result
# held item state so that a new item can be picked up
** Processing line: ~ args.state.held_item[:location] = :craft~
- Inside source: true
*** True Line Result
args.state.held_item[:location] = :craft
** Processing line: ~ args.state.held_item[:ordinal_x] = craft_area[:ordinal_x]~
- Inside source: true
*** True Line Result
args.state.held_item[:ordinal_x] = craft_area[:ordinal_x]
** Processing line: ~ args.state.held_item[:ordinal_y] = craft_area[:ordinal_y]~
- Inside source: true
*** True Line Result
args.state.held_item[:ordinal_y] = craft_area[:ordinal_y]
** Processing line: ~ args.state.held_item = nil~
- Inside source: true
*** True Line Result
args.state.held_item = nil
** 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 selected area is an inventory area (as opposed to within the craft area)~
- Inside source: true
*** True Line Result
# if the selected area is an inventory area (as opposed to within the craft area)
** Processing line: ~ elsif inventory_area~
- Inside source: true
*** True Line Result
elsif inventory_area
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # check to see if there is already an item in that inventory slot~
- Inside source: true
*** True Line Result
# check to see if there is already an item in that inventory slot
** Processing line: ~ # the item_at_inventory_slot helper method returns an item or nil~
- Inside source: true
*** True Line Result
# the item_at_inventory_slot helper method returns an item or nil
** Processing line: ~ item_already_there = item_at_inventory_slot args, inventory_area[:ordinal_x], inventory_area[:ordinal_y]~
- Inside source: true
*** True Line Result
item_already_there = item_at_inventory_slot args, inventory_area[:ordinal_x], inventory_area[:ordinal_y]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if there is already an item there, and the item types/id match~
- Inside source: true
*** True Line Result
# if there is already an item there, and the item types/id match
** Processing line: ~ if item_already_there && item_already_there[:id] == args.state.held_item[:id]~
- Inside source: true
*** True Line Result
if item_already_there && item_already_there[:id] == args.state.held_item[:id]
** Processing line: ~ # then merge the item quantities~
- Inside source: true
*** True Line Result
# then merge the item quantities
** Processing line: ~ held_quantity = args.state.held_item[:quantity]~
- Inside source: true
*** True Line Result
held_quantity = args.state.held_item[:quantity]
** Processing line: ~ item_already_there[:quantity] += held_quantity~
- Inside source: true
*** True Line Result
item_already_there[:quantity] += held_quantity
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # remove the item being held from the items collection (since it's quantity is now 0)~
- Inside source: true
*** True Line Result
# remove the item being held from the items collection (since it's quantity is now 0)
** Processing line: ~ args.state.items.reject! { |i| i[:location] == :held }~
- Inside source: true
*** True Line Result
args.state.items.reject! { |i| i[:location] == :held }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # nil out the held_item so a new item can be picked up~
- Inside source: true
*** True Line Result
# nil out the held_item so a new item can be picked up
** Processing line: ~ args.state.held_item = nil~
- Inside source: true
*** True Line Result
args.state.held_item = nil
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if there currently isn't an item there, then put the held item in the slot~
- Inside source: true
*** True Line Result
# if there currently isn't an item there, then put the held item in the slot
** Processing line: ~ elsif !item_already_there~
- Inside source: true
*** True Line Result
elsif !item_already_there
** Processing line: ~ args.state.held_item[:location] = :inventory~
- Inside source: true
*** True Line Result
args.state.held_item[:location] = :inventory
** Processing line: ~ args.state.held_item[:ordinal_x] = inventory_area[:ordinal_x]~
- Inside source: true
*** True Line Result
args.state.held_item[:ordinal_x] = inventory_area[:ordinal_x]
** Processing line: ~ args.state.held_item[:ordinal_y] = inventory_area[:ordinal_y]~
- Inside source: true
*** True Line Result
args.state.held_item[:ordinal_y] = inventory_area[:ordinal_y]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # nil out the held_item so a new item can be picked up~
- Inside source: true
*** True Line Result
# nil out the held_item so a new item can be picked up
** Processing line: ~ args.state.held_item = nil~
- Inside source: true
*** True Line Result
args.state.held_item = nil
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # the calc method is executed after input~
- Inside source: true
*** True Line Result
# the calc method is executed after input
** Processing line: ~ def calc args~
- Inside source: true
*** True Line Result
def calc args
** Processing line: ~ # make sure that the real position of the inventory~
- Inside source: true
*** True Line Result
# make sure that the real position of the inventory
** Processing line: ~ # items are updated every frame to ensure that they~
- Inside source: true
*** True Line Result
# items are updated every frame to ensure that they
** Processing line: ~ # are placed correctly given their location and oridinal positions~
- Inside source: true
*** True Line Result
# are placed correctly given their location and oridinal positions
** Processing line: ~ # instead of using .map, here we use .each (since we are not returning a new item and just updating the items in place)~
- Inside source: true
*** True Line Result
# instead of using .map, here we use .each (since we are not returning a new item and just updating the items in place)
** Processing line: ~ args.state.items.each do |item|~
- Inside source: true
*** True Line Result
args.state.items.each do |item|
** Processing line: ~ # based on the location of the item, invoke the correct pixel conversion method~
- Inside source: true
*** True Line Result
# based on the location of the item, invoke the correct pixel conversion method
** Processing line: ~ if item[:location] == :inventory~
- Inside source: true
*** True Line Result
if item[:location] == :inventory
** Processing line: ~ set_inventory_position args, item~
- Inside source: true
*** True Line Result
set_inventory_position args, item
** Processing line: ~ elsif item[:location] == :craft~
- Inside source: true
*** True Line Result
elsif item[:location] == :craft
** Processing line: ~ set_craft_position args, item~
- Inside source: true
*** True Line Result
set_craft_position args, item
** Processing line: ~ elsif item[:location] == :held~
- Inside source: true
*** True Line Result
elsif item[:location] == :held
** Processing line: ~ # if the item is held, center the item around the mouse pointer~
- Inside source: true
*** True Line Result
# if the item is held, center the item around the mouse pointer
** Processing line: ~ args.state.held_item.x = args.inputs.mouse.x - args.state.held_item.w.half~
- Inside source: true
*** True Line Result
args.state.held_item.x = args.inputs.mouse.x - args.state.held_item.w.half
** Processing line: ~ args.state.held_item.y = args.inputs.mouse.y - args.state.held_item.h.half~
- Inside source: true
*** True Line Result
args.state.held_item.y = args.inputs.mouse.y - args.state.held_item.h.half
** 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: ~ # for each hash/sprite in the click ripples queue,~
- Inside source: true
*** True Line Result
# for each hash/sprite in the click ripples queue,
** Processing line: ~ # expand its size by 20 percent and decrease its alpha~
- Inside source: true
*** True Line Result
# expand its size by 20 percent and decrease its alpha
** Processing line: ~ # by 10.~
- Inside source: true
*** True Line Result
# by 10.
** Processing line: ~ args.state.click_ripples.each do |ripple|~
- Inside source: true
*** True Line Result
args.state.click_ripples.each do |ripple|
** Processing line: ~ delta_w = ripple.w * 1.2 - ripple.w~
- Inside source: true
*** True Line Result
delta_w = ripple.w * 1.2 - ripple.w
** Processing line: ~ delta_h = ripple.h * 1.2 - ripple.h~
- Inside source: true
*** True Line Result
delta_h = ripple.h * 1.2 - ripple.h
** Processing line: ~ ripple.x -= delta_w.half~
- Inside source: true
*** True Line Result
ripple.x -= delta_w.half
** Processing line: ~ ripple.y -= delta_h.half~
- Inside source: true
*** True Line Result
ripple.y -= delta_h.half
** Processing line: ~ ripple.w += delta_w~
- Inside source: true
*** True Line Result
ripple.w += delta_w
** Processing line: ~ ripple.h += delta_h~
- Inside source: true
*** True Line Result
ripple.h += delta_h
** Processing line: ~ ripple.a -= 10~
- Inside source: true
*** True Line Result
ripple.a -= 10
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # remove any items from the collection where the alpha value is less than equal to~
- Inside source: true
*** True Line Result
# remove any items from the collection where the alpha value is less than equal to
** Processing line: ~ # zero using the reject! method (reject with an exclamation point at the end changes the~
- Inside source: true
*** True Line Result
# zero using the reject! method (reject with an exclamation point at the end changes the
** Processing line: ~ # array value in place, while reject without the exclamation point returns a new array).~
- Inside source: true
*** True Line Result
# array value in place, while reject without the exclamation point returns a new array).
** Processing line: ~ args.state.click_ripples.reject! { |ripple| ripple.a <= 0 }~
- Inside source: true
*** True Line Result
args.state.click_ripples.reject! { |ripple| ripple.a <= 0 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # helper function for finding an item at a craft slot~
- Inside source: true
*** True Line Result
# helper function for finding an item at a craft slot
** Processing line: ~ def item_at_craft_slot args, ordinal_x, ordinal_y~
- Inside source: true
*** True Line Result
def item_at_craft_slot args, ordinal_x, ordinal_y
** Processing line: ~ args.state.items.find { |i| i[:location] == :craft && i[:ordinal_x] == ordinal_x && i[:ordinal_y] == ordinal_y }~
- Inside source: true
*** True Line Result
args.state.items.find { |i| i[:location] == :craft && i[:ordinal_x] == ordinal_x && i[:ordinal_y] == ordinal_y }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # helper function for finding an item at an inventory slot~
- Inside source: true
*** True Line Result
# helper function for finding an item at an inventory slot
** Processing line: ~ def item_at_inventory_slot args, ordinal_x, ordinal_y~
- Inside source: true
*** True Line Result
def item_at_inventory_slot args, ordinal_x, ordinal_y
** Processing line: ~ args.state.items.find { |i| i[:location] == :inventory && i[:ordinal_x] == ordinal_x && i[:ordinal_y] == ordinal_y }~
- Inside source: true
*** True Line Result
args.state.items.find { |i| i[:location] == :inventory && i[:ordinal_x] == ordinal_x && i[:ordinal_y] == ordinal_y }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # helper function that creates a visual representation of an item~
- Inside source: true
*** True Line Result
# helper function that creates a visual representation of an item
** Processing line: ~ def item_prefab args, item, should_highlight, mouse~
- Inside source: true
*** True Line Result
def item_prefab args, item, should_highlight, mouse
** Processing line: ~ return nil unless item~
- Inside source: true
*** True Line Result
return nil unless item
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ overlay = nil~
- Inside source: true
*** True Line Result
overlay = nil
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ x = item.x~
- Inside source: true
*** True Line Result
x = item.x
** Processing line: ~ y = item.y~
- Inside source: true
*** True Line Result
y = item.y
** Processing line: ~ w = item.w~
- Inside source: true
*** True Line Result
w = item.w
** Processing line: ~ h = item.h~
- Inside source: true
*** True Line Result
h = item.h
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if should_highlight && mouse.point.inside_rect?(item)~
- Inside source: true
*** True Line Result
if should_highlight && mouse.point.inside_rect?(item)
** Processing line: ~ overlay = { x: x, y: y, w: w, h: h, path: "sprites/square-blue.png", a: 130, }~
- Inside source: true
*** True Line Result
overlay = { x: x, y: y, w: w, h: h, path: "sprites/square-blue.png", a: 130, }
** 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: ~ # sprites are hashes with a path property, this is the main sprite~
- Inside source: true
*** True Line Result
# sprites are hashes with a path property, this is the main sprite
** Processing line: ~ { x: x, y: y, w: args.state.sprite_size, h: args.state.sprite_size, path: item[:path], },~
- Inside source: true
*** True Line Result
{ x: x, y: y, w: args.state.sprite_size, h: args.state.sprite_size, path: item[:path], },
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # this represents the black area in the bottom right corner of the main sprite so that the~
- Inside source: true
*** True Line Result
# this represents the black area in the bottom right corner of the main sprite so that the
** Processing line: ~ # quantity is visible~
- Inside source: true
*** True Line Result
# quantity is visible
** Processing line: ~ { x: x + 55, y: y, w: 25, h: 25, path: "sprites/square-black.png", }, # sprites are hashes with a path property~
- Inside source: true
*** True Line Result
{ x: x + 55, y: y, w: 25, h: 25, path: "sprites/square-black.png", }, # sprites are hashes with a path property
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # labels are hashes with a text property~
- Inside source: true
*** True Line Result
# labels are hashes with a text property
** Processing line: ~ { x: x + 56, y: y + 22, text: "#{item[:quantity]}", r: 255, g: 255, b: 255, },~
- Inside source: true
*** True Line Result
{ x: x + 56, y: y + 22, text: "#{item[:quantity]}", r: 255, g: 255, b: 255, },
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # this is the mouse overlay, if the overlay isn't applicable, then this value will be nil (nil values will not be rendered)~
- Inside source: true
*** True Line Result
# this is the mouse overlay, if the overlay isn't applicable, then this value will be nil (nil values will not be rendered)
** Processing line: ~ overlay~
- Inside source: true
*** True Line Result
overlay
** 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: ~ # helper function for deriving the position of an item within inventory~
- Inside source: true
*** True Line Result
# helper function for deriving the position of an item within inventory
** Processing line: ~ def set_inventory_position args, item~
- Inside source: true
*** True Line Result
def set_inventory_position args, item
** Processing line: ~ item.x = args.state.inventory_border.x + item[:ordinal_x] * 80~
- Inside source: true
*** True Line Result
item.x = args.state.inventory_border.x + item[:ordinal_x] * 80
** Processing line: ~ item.y = (args.state.inventory_border.y + args.state.inventory_border.h - 80) - item[:ordinal_y] * 80~
- Inside source: true
*** True Line Result
item.y = (args.state.inventory_border.y + args.state.inventory_border.h - 80) - item[:ordinal_y] * 80
** Processing line: ~ item.w = 80~
- Inside source: true
*** True Line Result
item.w = 80
** Processing line: ~ item.h = 80~
- Inside source: true
*** True Line Result
item.h = 80
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # helper function for deriving the position of an item within the craft area~
- Inside source: true
*** True Line Result
# helper function for deriving the position of an item within the craft area
** Processing line: ~ def set_craft_position args, item~
- Inside source: true
*** True Line Result
def set_craft_position args, item
** Processing line: ~ item.x = args.state.craft_border.x + item[:ordinal_x] * 80~
- Inside source: true
*** True Line Result
item.x = args.state.craft_border.x + item[:ordinal_x] * 80
** Processing line: ~ item.y = (args.state.craft_border.y + args.state.inventory_border.h - 80) - item[:ordinal_y] * 80~
- Inside source: true
*** True Line Result
item.y = (args.state.craft_border.y + args.state.inventory_border.h - 80) - item[:ordinal_y] * 80
** Processing line: ~ item.w = 80~
- Inside source: true
*** True Line Result
item.w = 80
** Processing line: ~ item.h = 80~
- Inside source: true
*** True Line Result
item.h = 80
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Any lines outside of a function will be executed when the file is reloaded.~
- Inside source: true
*** True Line Result
# Any lines outside of a function will be executed when the file is reloaded.
** Processing line: ~ # So every time you save main.rb, the game will be reset.~
- Inside source: true
*** True Line Result
# So every time you save main.rb, the game will be reset.
** Processing line: ~ # Comment out the line below if you don't want this to happen.~
- Inside source: true
*** True Line Result
# Comment out the line below if you don't want this to happen.
** 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: ~* Dev Tools - Add Buttons To Console - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Dev Tools - Add Buttons To Console - 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_dev_tools/add_buttons_to_console/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_dev_tools/add_buttons_to_console/app/main.rb
** Processing line: ~ # You can customize the buttons that show up in the Console.~
- Inside source: true
*** True Line Result
# You can customize the buttons that show up in the Console.
** Processing line: ~ class GTK::Console::Menu~
- Inside source: true
*** True Line Result
class GTK::Console::Menu
** Processing line: ~ # STEP 1: Override the custom_buttons function.~
- Inside source: true
*** True Line Result
# STEP 1: Override the custom_buttons function.
** Processing line: ~ def custom_buttons~
- Inside source: true
*** True Line Result
def custom_buttons
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ (button id: :yay,~
- Inside source: true
*** True Line Result
(button id: :yay,
** Processing line: ~ # row for button~
- Inside source: true
*** True Line Result
# row for button
** Processing line: ~ row: 3,~
- Inside source: true
*** True Line Result
row: 3,
** Processing line: ~ # column for button~
- Inside source: true
*** True Line Result
# column for button
** Processing line: ~ col: 10,~
- Inside source: true
*** True Line Result
col: 10,
** Processing line: ~ # text~
- Inside source: true
*** True Line Result
# text
** Processing line: ~ text: "I AM CUSTOM",~
- Inside source: true
*** True Line Result
text: "I AM CUSTOM",
** Processing line: ~ # when clicked call the custom_button_clicked function~
- Inside source: true
*** True Line Result
# when clicked call the custom_button_clicked function
** Processing line: ~ method: :custom_button_clicked),~
- Inside source: true
*** True Line Result
method: :custom_button_clicked),
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ (button id: :yay,~
- Inside source: true
*** True Line Result
(button id: :yay,
** Processing line: ~ # row for button~
- Inside source: true
*** True Line Result
# row for button
** Processing line: ~ row: 3,~
- Inside source: true
*** True Line Result
row: 3,
** Processing line: ~ # column for button~
- Inside source: true
*** True Line Result
# column for button
** Processing line: ~ col: 9,~
- Inside source: true
*** True Line Result
col: 9,
** Processing line: ~ # text~
- Inside source: true
*** True Line Result
# text
** Processing line: ~ text: "CUSTOM ALSO",~
- Inside source: true
*** True Line Result
text: "CUSTOM ALSO",
** Processing line: ~ # when clicked call the custom_button_also_clicked function~
- Inside source: true
*** True Line Result
# when clicked call the custom_button_also_clicked function
** Processing line: ~ method: :custom_button_also_clicked)~
- Inside source: true
*** True Line Result
method: :custom_button_also_clicked)
** 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: ~ # STEP 2: Define the function that should be called.~
- Inside source: true
*** True Line Result
# STEP 2: Define the function that should be called.
** Processing line: ~ def custom_button_clicked~
- Inside source: true
*** True Line Result
def custom_button_clicked
** Processing line: ~ log "* INFO: I AM CUSTOM was clicked!"~
- Inside source: true
*** True Line Result
log "* INFO: I AM CUSTOM was clicked!"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def custom_button_also_clicked~
- Inside source: true
*** True Line Result
def custom_button_also_clicked
** Processing line: ~ log "* INFO: Custom Button Clicked at #{Kernel.global_tick_count}!"~
- Inside source: true
*** True Line Result
log "* INFO: Custom Button Clicked at #{Kernel.global_tick_count}!"
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ all_buttons_as_string = $gtk.console.menu.buttons.map do |b|~
- Inside source: true
*** True Line Result
all_buttons_as_string = $gtk.console.menu.buttons.map do |b|
** Processing line: ~ <<-S.strip~
- Inside source: true
*** True Line Result
<<-S.strip
** Processing line: ~ ** id: #{b[:id]}~
- Inside source: true
*** True Line Result
** id: #{b[:id]}
** Processing line: ~ :PROPERTIES:~
- Inside source: true
*** True Line Result
:PROPERTIES:
** Processing line: ~ :id: :#{b[:id]}~
- Inside source: true
*** True Line Result
:id: :#{b[:id]}
** Processing line: ~ :method: :#{b[:method]}~
- Inside source: true
*** True Line Result
:method: :#{b[:method]}
** Processing line: ~ :text: #{b[:text]}~
- Inside source: true
*** True Line Result
:text: #{b[:text]}
** Processing line: ~ :END:~
- Inside source: true
*** True Line Result
:END:
** Processing line: ~ S~
- Inside source: true
*** True Line Result
S
** Processing line: ~ end.join("\n")~
- Inside source: true
*** True Line Result
end.join("\n")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ log <<-S~
- Inside source: true
*** True Line Result
log <<-S
** Processing line: ~ * INFO: Here are all the buttons:~
- Inside source: true
*** True Line Result
* INFO: Here are all the buttons:
** Processing line: ~ #{all_buttons_as_string}~
- Inside source: true
*** True Line Result
#{all_buttons_as_string}
** Processing line: ~ S~
- Inside source: true
*** True Line Result
S
** 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.outputs.labels << [args.grid.center.x, args.grid.center.y,~
- Inside source: true
*** True Line Result
args.outputs.labels << [args.grid.center.x, args.grid.center.y,
** Processing line: ~ "Open the DragonRuby Console to see the custom menu items.",~
- Inside source: true
*** True Line Result
"Open the DragonRuby Console to see the custom menu items.",
** Processing line: ~ 0, 1]~
- Inside source: true
*** True Line Result
0, 1]
** 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: ~* Dev Tools - Animation Creator Starting Point - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Dev Tools - Animation Creator 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_dev_tools/animation_creator_starting_point/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_dev_tools/animation_creator_starting_point/app/main.rb
** Processing line: ~ class OneBitLowrezPaint~
- Inside source: true
*** True Line Result
class OneBitLowrezPaint
** 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: ~ outputs.background_color = [0, 0, 0]~
- Inside source: true
*** True Line Result
outputs.background_color = [0, 0, 0]
** Processing line: ~ defaults~
- Inside source: true
*** True Line Result
defaults
** Processing line: ~ render_instructions~
- Inside source: true
*** True Line Result
render_instructions
** Processing line: ~ render_canvas~
- Inside source: true
*** True Line Result
render_canvas
** Processing line: ~ render_buttons_frame_selection~
- Inside source: true
*** True Line Result
render_buttons_frame_selection
** Processing line: ~ render_animation_frame_thumbnails~
- Inside source: true
*** True Line Result
render_animation_frame_thumbnails
** Processing line: ~ render_animation~
- Inside source: true
*** True Line Result
render_animation
** Processing line: ~ input_mouse_click~
- Inside source: true
*** True Line Result
input_mouse_click
** Processing line: ~ input_keyboard~
- Inside source: true
*** True Line Result
input_keyboard
** Processing line: ~ calc_auto_export~
- Inside source: true
*** True Line Result
calc_auto_export
** Processing line: ~ calc_buttons_frame_selection~
- Inside source: true
*** True Line Result
calc_buttons_frame_selection
** Processing line: ~ calc_animation_frames~
- Inside source: true
*** True Line Result
calc_animation_frames
** Processing line: ~ process_queue_create_sprite~
- Inside source: true
*** True Line Result
process_queue_create_sprite
** Processing line: ~ process_queue_reset_sprite~
- Inside source: true
*** True Line Result
process_queue_reset_sprite
** Processing line: ~ process_queue_update_rt_animation_frame~
- Inside source: true
*** True Line Result
process_queue_update_rt_animation_frame
** 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.animation_frames_per_second = 12~
- Inside source: true
*** True Line Result
state.animation_frames_per_second = 12
** Processing line: ~ queues.create_sprite ||= []~
- Inside source: true
*** True Line Result
queues.create_sprite ||= []
** Processing line: ~ queues.reset_sprite ||= []~
- Inside source: true
*** True Line Result
queues.reset_sprite ||= []
** Processing line: ~ queues.update_rt_animation_frame ||= []~
- Inside source: true
*** True Line Result
queues.update_rt_animation_frame ||= []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if !state.animation_frames~
- Inside source: true
*** True Line Result
if !state.animation_frames
** Processing line: ~ state.animation_frames ||= []~
- Inside source: true
*** True Line Result
state.animation_frames ||= []
** Processing line: ~ add_animation_frame_to_end~
- Inside source: true
*** True Line Result
add_animation_frame_to_end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.last_mouse_down ||= 0~
- Inside source: true
*** True Line Result
state.last_mouse_down ||= 0
** Processing line: ~ state.last_mouse_up ||= 0~
- Inside source: true
*** True Line Result
state.last_mouse_up ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.buttons_frame_selection.left = 10~
- Inside source: true
*** True Line Result
state.buttons_frame_selection.left = 10
** Processing line: ~ state.buttons_frame_selection.top = grid.top - 10~
- Inside source: true
*** True Line Result
state.buttons_frame_selection.top = grid.top - 10
** Processing line: ~ state.buttons_frame_selection.size = 20~
- Inside source: true
*** True Line Result
state.buttons_frame_selection.size = 20
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ defaults_canvas_sprite~
- Inside source: true
*** True Line Result
defaults_canvas_sprite
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.edit_mode ||= :drawing~
- Inside source: true
*** True Line Result
state.edit_mode ||= :drawing
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def defaults_canvas_sprite~
- Inside source: true
*** True Line Result
def defaults_canvas_sprite
** Processing line: ~ rt_canvas.size = 16~
- Inside source: true
*** True Line Result
rt_canvas.size = 16
** Processing line: ~ rt_canvas.zoom = 30~
- Inside source: true
*** True Line Result
rt_canvas.zoom = 30
** Processing line: ~ rt_canvas.width = rt_canvas.size * rt_canvas.zoom~
- Inside source: true
*** True Line Result
rt_canvas.width = rt_canvas.size * rt_canvas.zoom
** Processing line: ~ rt_canvas.height = rt_canvas.size * rt_canvas.zoom~
- Inside source: true
*** True Line Result
rt_canvas.height = rt_canvas.size * rt_canvas.zoom
** Processing line: ~ rt_canvas.sprite = { x: 0,~
- Inside source: true
*** True Line Result
rt_canvas.sprite = { x: 0,
** Processing line: ~ y: 0,~
- Inside source: true
*** True Line Result
y: 0,
** Processing line: ~ w: rt_canvas.width,~
- Inside source: true
*** True Line Result
w: rt_canvas.width,
** Processing line: ~ h: rt_canvas.height,~
- Inside source: true
*** True Line Result
h: rt_canvas.height,
** Processing line: ~ path: :rt_canvas }.center_inside_rect(x: 0, y: 0, w: 640, h: 720)~
- Inside source: true
*** True Line Result
path: :rt_canvas }.center_inside_rect(x: 0, y: 0, w: 640, h: 720)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless state.tick_count == 1~
- Inside source: true
*** True Line Result
return unless state.tick_count == 1
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs[:rt_canvas].width = rt_canvas.width~
- Inside source: true
*** True Line Result
outputs[:rt_canvas].width = rt_canvas.width
** Processing line: ~ outputs[:rt_canvas].height = rt_canvas.height~
- Inside source: true
*** True Line Result
outputs[:rt_canvas].height = rt_canvas.height
** Processing line: ~ outputs[:rt_canvas].sprites << (rt_canvas.size + 1).map_with_index do |x|~
- Inside source: true
*** True Line Result
outputs[:rt_canvas].sprites << (rt_canvas.size + 1).map_with_index do |x|
** Processing line: ~ (rt_canvas.size + 1).map_with_index do |y|~
- Inside source: true
*** True Line Result
(rt_canvas.size + 1).map_with_index do |y|
** Processing line: ~ path = 'sprites/square-white.png'~
- Inside source: true
*** True Line Result
path = 'sprites/square-white.png'
** Processing line: ~ path = 'sprites/square-blue.png' if x == 7 || x == 8~
- Inside source: true
*** True Line Result
path = 'sprites/square-blue.png' if x == 7 || x == 8
** Processing line: ~ { x: x * rt_canvas.zoom,~
- Inside source: true
*** True Line Result
{ x: x * rt_canvas.zoom,
** Processing line: ~ y: y * rt_canvas.zoom,~
- Inside source: true
*** True Line Result
y: y * rt_canvas.zoom,
** Processing line: ~ w: rt_canvas.zoom,~
- Inside source: true
*** True Line Result
w: rt_canvas.zoom,
** Processing line: ~ h: rt_canvas.zoom,~
- Inside source: true
*** True Line Result
h: rt_canvas.zoom,
** Processing line: ~ path: path,~
- Inside source: true
*** True Line Result
path: path,
** Processing line: ~ a: 50 }~
- Inside source: true
*** True Line Result
a: 50 }
** 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 render_instructions~
- Inside source: true
*** True Line Result
def render_instructions
** Processing line: ~ instructions = <<-S~
- Inside source: true
*** True Line Result
instructions = <<-S
** Processing line: ~ * Instructions:~
- Inside source: true
*** True Line Result
* Instructions:
** Processing line: ~ - All data is stored in the ~canvas~ directory.~
- Inside source: true
*** True Line Result
- All data is stored in the ~canvas~ directory.
** Processing line: ~ - Hold ~d~ to set the edit mode to erase.~
- Inside source: true
*** True Line Result
- Hold ~d~ to set the edit mode to erase.
** Processing line: ~ - Release ~d~ to set the edit mode drawing.~
- Inside source: true
*** True Line Result
- Release ~d~ to set the edit mode drawing.
** Processing line: ~ - Press ~a~ to added a frame to the end.~
- Inside source: true
*** True Line Result
- Press ~a~ to added a frame to the end.
** Processing line: ~ - Press ~b~ to select the previous frame.~
- Inside source: true
*** True Line Result
- Press ~b~ to select the previous frame.
** Processing line: ~ - Press ~f~ to select the next frame.~
- Inside source: true
*** True Line Result
- Press ~f~ to select the next frame.
** Processing line: ~ - Press ~c~ to copy a frame.~
- Inside source: true
*** True Line Result
- Press ~c~ to copy a frame.
** Processing line: ~ - Press ~v~ to paste a copied frame into the selected frame.~
- Inside source: true
*** True Line Result
- Press ~v~ to paste a copied frame into the selected frame.
** Processing line: ~ - Press ~x~ to delete the currently selected frame.~
- Inside source: true
*** True Line Result
- Press ~x~ to delete the currently selected frame.
** Processing line: ~ - Press ~w~ to save the canvas and export all sprites.~
- Inside source: true
*** True Line Result
- Press ~w~ to save the canvas and export all sprites.
** Processing line: ~ - Press ~l~ to load the canvas.~
- Inside source: true
*** True Line Result
- Press ~l~ to load the canvas.
** Processing line: ~ S~
- Inside source: true
*** True Line Result
S
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ instructions.strip.each_line.with_index do |l, i|~
- Inside source: true
*** True Line Result
instructions.strip.each_line.with_index do |l, i|
** Processing line: ~ outputs.labels << { x: 840, y: 500 - (i * 20), text: "#{l}",~
- Inside source: true
*** True Line Result
outputs.labels << { x: 840, y: 500 - (i * 20), text: "#{l}",
** Processing line: ~ r: 180, g: 180, b: 180, size_enum: -3 }~
- Inside source: true
*** True Line Result
r: 180, g: 180, b: 180, size_enum: -3 }
** 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_canvas~
- Inside source: true
*** True Line Result
def render_canvas
** Processing line: ~ return if state.tick_count.zero?~
- Inside source: true
*** True Line Result
return if state.tick_count.zero?
** Processing line: ~ outputs.sprites << rt_canvas.sprite~
- Inside source: true
*** True Line Result
outputs.sprites << rt_canvas.sprite
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_buttons_frame_selection~
- Inside source: true
*** True Line Result
def render_buttons_frame_selection
** Processing line: ~ args.outputs.primitives << state.buttons_frame_selection.items.map_with_index do |b, i|~
- Inside source: true
*** True Line Result
args.outputs.primitives << state.buttons_frame_selection.items.map_with_index do |b, i|
** Processing line: ~ label = { x: b.x + state.buttons_frame_selection.size.half,~
- Inside source: true
*** True Line Result
label = { x: b.x + state.buttons_frame_selection.size.half,
** Processing line: ~ y: b.y,~
- Inside source: true
*** True Line Result
y: b.y,
** Processing line: ~ text: "#{i + 1}", r: 180, g: 180, b: 180,~
- Inside source: true
*** True Line Result
text: "#{i + 1}", r: 180, g: 180, b: 180,
** Processing line: ~ size_enum: -4, alignment_enum: 1 }.label~
- Inside source: true
*** True Line Result
size_enum: -4, alignment_enum: 1 }.label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ selection_border = b.merge(r: 40, g: 40, b: 40).border~
- Inside source: true
*** True Line Result
selection_border = b.merge(r: 40, g: 40, b: 40).border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if i == state.animation_frames_selected_index~
- Inside source: true
*** True Line Result
if i == state.animation_frames_selected_index
** Processing line: ~ selection_border = b.merge(r: 40, g: 230, b: 200).border~
- Inside source: true
*** True Line Result
selection_border = b.merge(r: 40, g: 230, b: 200).border
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [selection_border, label]~
- Inside source: true
*** True Line Result
[selection_border, label]
** 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_animation_frame_thumbnails~
- Inside source: true
*** True Line Result
def render_animation_frame_thumbnails
** Processing line: ~ return if state.tick_count.zero?~
- Inside source: true
*** True Line Result
return if state.tick_count.zero?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs[:current_animation_frame].width = rt_canvas.size~
- Inside source: true
*** True Line Result
outputs[:current_animation_frame].width = rt_canvas.size
** Processing line: ~ outputs[:current_animation_frame].height = rt_canvas.size~
- Inside source: true
*** True Line Result
outputs[:current_animation_frame].height = rt_canvas.size
** Processing line: ~ outputs[:current_animation_frame].solids << selected_animation_frame[:pixels].map_with_index do |f, i|~
- Inside source: true
*** True Line Result
outputs[:current_animation_frame].solids << selected_animation_frame[:pixels].map_with_index do |f, i|
** Processing line: ~ { x: f.x,~
- Inside source: true
*** True Line Result
{ x: f.x,
** Processing line: ~ y: f.y,~
- Inside source: true
*** True Line Result
y: f.y,
** Processing line: ~ w: 1,~
- Inside source: true
*** True Line Result
w: 1,
** Processing line: ~ h: 1, r: 255, g: 255, b: 255 }~
- Inside source: true
*** True Line Result
h: 1, r: 255, g: 255, b: 255 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.sprites << rt_canvas.sprite.merge(path: :current_animation_frame)~
- Inside source: true
*** True Line Result
outputs.sprites << rt_canvas.sprite.merge(path: :current_animation_frame)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.animation_frames.map_with_index do |animation_frame, animation_frame_index|~
- Inside source: true
*** True Line Result
state.animation_frames.map_with_index do |animation_frame, animation_frame_index|
** Processing line: ~ outputs.sprites << state.buttons_frame_selection[:items][animation_frame_index][:inner_rect]~
- Inside source: true
*** True Line Result
outputs.sprites << state.buttons_frame_selection[:items][animation_frame_index][:inner_rect]
** Processing line: ~ .merge(path: animation_frame[:rt_name])~
- Inside source: true
*** True Line Result
.merge(path: animation_frame[:rt_name])
** 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_animation~
- Inside source: true
*** True Line Result
def render_animation
** Processing line: ~ sprite_index = 0.frame_index count: state.animation_frames.length,~
- Inside source: true
*** True Line Result
sprite_index = 0.frame_index count: state.animation_frames.length,
** Processing line: ~ hold_for: 60 / state.animation_frames_per_second,~
- Inside source: true
*** True Line Result
hold_for: 60 / state.animation_frames_per_second,
** Processing line: ~ repeat: true~
- Inside source: true
*** True Line Result
repeat: true
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.sprites << { x: 700 - 8,~
- Inside source: true
*** True Line Result
args.outputs.sprites << { x: 700 - 8,
** Processing line: ~ y: 120,~
- Inside source: true
*** True Line Result
y: 120,
** Processing line: ~ w: 16,~
- Inside source: true
*** True Line Result
w: 16,
** Processing line: ~ h: 16,~
- Inside source: true
*** True Line Result
h: 16,
** Processing line: ~ path: (sprite_path sprite_index) }~
- Inside source: true
*** True Line Result
path: (sprite_path sprite_index) }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.sprites << { x: 700 - 16,~
- Inside source: true
*** True Line Result
args.outputs.sprites << { x: 700 - 16,
** Processing line: ~ y: 230,~
- Inside source: true
*** True Line Result
y: 230,
** Processing line: ~ w: 32,~
- Inside source: true
*** True Line Result
w: 32,
** Processing line: ~ h: 32,~
- Inside source: true
*** True Line Result
h: 32,
** Processing line: ~ path: (sprite_path sprite_index) }~
- Inside source: true
*** True Line Result
path: (sprite_path sprite_index) }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.sprites << { x: 700 - 32,~
- Inside source: true
*** True Line Result
args.outputs.sprites << { x: 700 - 32,
** Processing line: ~ y: 360,~
- Inside source: true
*** True Line Result
y: 360,
** 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: ~ path: (sprite_path sprite_index) }~
- Inside source: true
*** True Line Result
path: (sprite_path sprite_index) }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.sprites << { x: 700 - 64,~
- Inside source: true
*** True Line Result
args.outputs.sprites << { x: 700 - 64,
** Processing line: ~ y: 520,~
- Inside source: true
*** True Line Result
y: 520,
** Processing line: ~ w: 128,~
- Inside source: true
*** True Line Result
w: 128,
** Processing line: ~ h: 128,~
- Inside source: true
*** True Line Result
h: 128,
** Processing line: ~ path: (sprite_path sprite_index) }~
- Inside source: true
*** True Line Result
path: (sprite_path sprite_index) }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_mouse_click~
- Inside source: true
*** True Line Result
def input_mouse_click
** Processing line: ~ if inputs.mouse.up~
- Inside source: true
*** True Line Result
if inputs.mouse.up
** Processing line: ~ state.last_mouse_up = state.tick_count~
- Inside source: true
*** True Line Result
state.last_mouse_up = state.tick_count
** Processing line: ~ elsif inputs.mouse.moved && user_is_editing?~
- Inside source: true
*** True Line Result
elsif inputs.mouse.moved && user_is_editing?
** Processing line: ~ edit_current_animation_frame inputs.mouse.point~
- Inside source: true
*** True Line Result
edit_current_animation_frame inputs.mouse.point
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless inputs.mouse.click~
- Inside source: true
*** True Line Result
return unless inputs.mouse.click
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ clicked_frame_button = state.buttons_frame_selection.items.find do |b|~
- Inside source: true
*** True Line Result
clicked_frame_button = state.buttons_frame_selection.items.find do |b|
** Processing line: ~ inputs.mouse.point.inside_rect? b~
- Inside source: true
*** True Line Result
inputs.mouse.point.inside_rect? b
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if (clicked_frame_button)~
- Inside source: true
*** True Line Result
if (clicked_frame_button)
** Processing line: ~ state.animation_frames_selected_index = clicked_frame_button[:index]~
- Inside source: true
*** True Line Result
state.animation_frames_selected_index = clicked_frame_button[:index]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if (inputs.mouse.point.inside_rect? rt_canvas.sprite)~
- Inside source: true
*** True Line Result
if (inputs.mouse.point.inside_rect? rt_canvas.sprite)
** Processing line: ~ state.last_mouse_down = state.tick_count~
- Inside source: true
*** True Line Result
state.last_mouse_down = state.tick_count
** Processing line: ~ edit_current_animation_frame inputs.mouse.point~
- Inside source: true
*** True Line Result
edit_current_animation_frame inputs.mouse.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 input_keyboard~
- Inside source: true
*** True Line Result
def input_keyboard
** Processing line: ~ # w to save~
- Inside source: true
*** True Line Result
# w to save
** Processing line: ~ if inputs.keyboard.key_down.w~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.w
** Processing line: ~ t = Time.now~
- Inside source: true
*** True Line Result
t = Time.now
** Processing line: ~ state.save_description = "Time: #{t} (#{t.to_i})"~
- Inside source: true
*** True Line Result
state.save_description = "Time: #{t} (#{t.to_i})"
** Processing line: ~ gtk.serialize_state 'canvas/state.txt', state~
- Inside source: true
*** True Line Result
gtk.serialize_state 'canvas/state.txt', state
** Processing line: ~ gtk.serialize_state "tmp/canvas_backups/#{t.to_i}/state.txt", state~
- Inside source: true
*** True Line Result
gtk.serialize_state "tmp/canvas_backups/#{t.to_i}/state.txt", state
** Processing line: ~ animation_frames.each_with_index do |animation_frame, i|~
- Inside source: true
*** True Line Result
animation_frames.each_with_index do |animation_frame, i|
** Processing line: ~ queues.update_rt_animation_frame << { index: i,~
- Inside source: true
*** True Line Result
queues.update_rt_animation_frame << { index: i,
** Processing line: ~ at: state.tick_count + i,~
- Inside source: true
*** True Line Result
at: state.tick_count + i,
** Processing line: ~ queue_sprite_creation: true }~
- Inside source: true
*** True Line Result
queue_sprite_creation: true }
** Processing line: ~ queues.create_sprite << { index: i,~
- Inside source: true
*** True Line Result
queues.create_sprite << { index: i,
** Processing line: ~ at: state.tick_count + animation_frames.length + i,~
- Inside source: true
*** True Line Result
at: state.tick_count + animation_frames.length + i,
** Processing line: ~ path_override: "tmp/canvas_backups/#{t.to_i}/sprite-#{i}.png" }~
- Inside source: true
*** True Line Result
path_override: "tmp/canvas_backups/#{t.to_i}/sprite-#{i}.png" }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ gtk.notify! "Canvas saved."~
- Inside source: true
*** True Line Result
gtk.notify! "Canvas saved."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # l to load~
- Inside source: true
*** True Line Result
# l to load
** Processing line: ~ if inputs.keyboard.key_down.l~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.l
** Processing line: ~ args.state = gtk.deserialize_state 'canvas/state.txt'~
- Inside source: true
*** True Line Result
args.state = gtk.deserialize_state 'canvas/state.txt'
** Processing line: ~ animation_frames.each_with_index do |a, i|~
- Inside source: true
*** True Line Result
animation_frames.each_with_index do |a, i|
** Processing line: ~ queues.update_rt_animation_frame << { index: i,~
- Inside source: true
*** True Line Result
queues.update_rt_animation_frame << { index: i,
** Processing line: ~ at: state.tick_count + i,~
- Inside source: true
*** True Line Result
at: state.tick_count + i,
** Processing line: ~ queue_sprite_creation: true }~
- Inside source: true
*** True Line Result
queue_sprite_creation: true }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ gtk.notify! "Canvas loaded."~
- Inside source: true
*** True Line Result
gtk.notify! "Canvas loaded."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # d to go into delete mode, release to paint~
- Inside source: true
*** True Line Result
# d to go into delete mode, release to paint
** Processing line: ~ if inputs.keyboard.key_held.d~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_held.d
** Processing line: ~ state.edit_mode = :erasing~
- Inside source: true
*** True Line Result
state.edit_mode = :erasing
** Processing line: ~ gtk.notify! "Erasing." if inputs.keyboard.key_held.d == (state.tick_count - 1)~
- Inside source: true
*** True Line Result
gtk.notify! "Erasing." if inputs.keyboard.key_held.d == (state.tick_count - 1)
** Processing line: ~ elsif inputs.keyboard.key_up.d~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_up.d
** Processing line: ~ state.edit_mode = :drawing~
- Inside source: true
*** True Line Result
state.edit_mode = :drawing
** Processing line: ~ gtk.notify! "Drawing."~
- Inside source: true
*** True Line Result
gtk.notify! "Drawing."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # a to add a frame to the end~
- Inside source: true
*** True Line Result
# a to add a frame to the end
** Processing line: ~ if inputs.keyboard.key_down.a~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.a
** Processing line: ~ queues.create_sprite << { index: state.animation_frames_selected_index,~
- Inside source: true
*** True Line Result
queues.create_sprite << { index: state.animation_frames_selected_index,
** Processing line: ~ at: state.tick_count }~
- Inside source: true
*** True Line Result
at: state.tick_count }
** Processing line: ~ queues.create_sprite << { index: state.animation_frames_selected_index + 1,~
- Inside source: true
*** True Line Result
queues.create_sprite << { index: state.animation_frames_selected_index + 1,
** Processing line: ~ at: state.tick_count }~
- Inside source: true
*** True Line Result
at: state.tick_count }
** Processing line: ~ add_animation_frame_to_end~
- Inside source: true
*** True Line Result
add_animation_frame_to_end
** Processing line: ~ gtk.notify! "Frame added to end."~
- Inside source: true
*** True Line Result
gtk.notify! "Frame added to end."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # c or t to copy~
- Inside source: true
*** True Line Result
# c or t to copy
** Processing line: ~ if (inputs.keyboard.key_down.c || inputs.keyboard.key_down.t)~
- Inside source: true
*** True Line Result
if (inputs.keyboard.key_down.c || inputs.keyboard.key_down.t)
** Processing line: ~ state.clipboard = [selected_animation_frame[:pixels]].flatten~
- Inside source: true
*** True Line Result
state.clipboard = [selected_animation_frame[:pixels]].flatten
** Processing line: ~ gtk.notify! "Current frame copied."~
- Inside source: true
*** True Line Result
gtk.notify! "Current frame copied."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # v or q to paste~
- Inside source: true
*** True Line Result
# v or q to paste
** Processing line: ~ if (inputs.keyboard.key_down.v || inputs.keyboard.key_down.q) && state.clipboard~
- Inside source: true
*** True Line Result
if (inputs.keyboard.key_down.v || inputs.keyboard.key_down.q) && state.clipboard
** Processing line: ~ selected_animation_frame[:pixels] = [state.clipboard].flatten~
- Inside source: true
*** True Line Result
selected_animation_frame[:pixels] = [state.clipboard].flatten
** Processing line: ~ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,~
- Inside source: true
*** True Line Result
queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,
** Processing line: ~ at: state.tick_count,~
- Inside source: true
*** True Line Result
at: state.tick_count,
** Processing line: ~ queue_sprite_creation: true }~
- Inside source: true
*** True Line Result
queue_sprite_creation: true }
** Processing line: ~ gtk.notify! "Pasted."~
- Inside source: true
*** True Line Result
gtk.notify! "Pasted."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # f to go forward/next frame~
- Inside source: true
*** True Line Result
# f to go forward/next frame
** Processing line: ~ if (inputs.keyboard.key_down.f)~
- Inside source: true
*** True Line Result
if (inputs.keyboard.key_down.f)
** Processing line: ~ if (state.animation_frames_selected_index == (state.animation_frames.length - 1))~
- Inside source: true
*** True Line Result
if (state.animation_frames_selected_index == (state.animation_frames.length - 1))
** Processing line: ~ state.animation_frames_selected_index = 0~
- Inside source: true
*** True Line Result
state.animation_frames_selected_index = 0
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.animation_frames_selected_index += 1~
- Inside source: true
*** True Line Result
state.animation_frames_selected_index += 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ gtk.notify! "Next frame."~
- Inside source: true
*** True Line Result
gtk.notify! "Next frame."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # b to go back/previous frame~
- Inside source: true
*** True Line Result
# b to go back/previous frame
** Processing line: ~ if (inputs.keyboard.key_down.b)~
- Inside source: true
*** True Line Result
if (inputs.keyboard.key_down.b)
** Processing line: ~ if (state.animation_frames_selected_index == 0)~
- Inside source: true
*** True Line Result
if (state.animation_frames_selected_index == 0)
** Processing line: ~ state.animation_frames_selected_index = state.animation_frames.length - 1~
- Inside source: true
*** True Line Result
state.animation_frames_selected_index = state.animation_frames.length - 1
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.animation_frames_selected_index -= 1~
- Inside source: true
*** True Line Result
state.animation_frames_selected_index -= 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ gtk.notify! "Previous frame."~
- Inside source: true
*** True Line Result
gtk.notify! "Previous frame."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # x to delete frame~
- Inside source: true
*** True Line Result
# x to delete frame
** Processing line: ~ if (inputs.keyboard.key_down.x) && animation_frames.length > 1~
- Inside source: true
*** True Line Result
if (inputs.keyboard.key_down.x) && animation_frames.length > 1
** Processing line: ~ state.clipboard = selected_animation_frame[:pixels]~
- Inside source: true
*** True Line Result
state.clipboard = selected_animation_frame[:pixels]
** Processing line: ~ state.animation_frames = animation_frames.find_all { |v| v[:index] != state.animation_frames_selected_index }~
- Inside source: true
*** True Line Result
state.animation_frames = animation_frames.find_all { |v| v[:index] != state.animation_frames_selected_index }
** Processing line: ~ if state.animation_frames_selected_index >= state.animation_frames.length~
- Inside source: true
*** True Line Result
if state.animation_frames_selected_index >= state.animation_frames.length
** Processing line: ~ state.animation_frames_selected_index = state.animation_frames.length - 1~
- Inside source: true
*** True Line Result
state.animation_frames_selected_index = state.animation_frames.length - 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ gtk.notify! "Frame deleted."~
- Inside source: true
*** True Line Result
gtk.notify! "Frame deleted."
** 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_auto_export~
- Inside source: true
*** True Line Result
def calc_auto_export
** Processing line: ~ return if user_is_editing?~
- Inside source: true
*** True Line Result
return if user_is_editing?
** Processing line: ~ return if state.last_mouse_up.elapsed_time != 30~
- Inside source: true
*** True Line Result
return if state.last_mouse_up.elapsed_time != 30
** Processing line: ~ # auto export current animation frame if there is no editing for 30 ticks~
- Inside source: true
*** True Line Result
# auto export current animation frame if there is no editing for 30 ticks
** Processing line: ~ queues.create_sprite << { index: state.animation_frames_selected_index,~
- Inside source: true
*** True Line Result
queues.create_sprite << { index: state.animation_frames_selected_index,
** Processing line: ~ at: state.tick_count }~
- Inside source: true
*** True Line Result
at: state.tick_count }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_buttons_frame_selection~
- Inside source: true
*** True Line Result
def calc_buttons_frame_selection
** Processing line: ~ state.buttons_frame_selection.items = animation_frames.length.map_with_index do |i|~
- Inside source: true
*** True Line Result
state.buttons_frame_selection.items = animation_frames.length.map_with_index do |i|
** Processing line: ~ { x: state.buttons_frame_selection.left + i * state.buttons_frame_selection.size,~
- Inside source: true
*** True Line Result
{ x: state.buttons_frame_selection.left + i * state.buttons_frame_selection.size,
** Processing line: ~ y: state.buttons_frame_selection.top - state.buttons_frame_selection.size,~
- Inside source: true
*** True Line Result
y: state.buttons_frame_selection.top - state.buttons_frame_selection.size,
** Processing line: ~ inner_rect: {~
- Inside source: true
*** True Line Result
inner_rect: {
** Processing line: ~ x: (state.buttons_frame_selection.left + 2) + i * state.buttons_frame_selection.size,~
- Inside source: true
*** True Line Result
x: (state.buttons_frame_selection.left + 2) + i * state.buttons_frame_selection.size,
** Processing line: ~ y: (state.buttons_frame_selection.top - state.buttons_frame_selection.size + 2),~
- Inside source: true
*** True Line Result
y: (state.buttons_frame_selection.top - state.buttons_frame_selection.size + 2),
** Processing line: ~ w: 16,~
- Inside source: true
*** True Line Result
w: 16,
** Processing line: ~ h: 16,~
- Inside source: true
*** True Line Result
h: 16,
** Processing line: ~ },~
- Inside source: true
*** True Line Result
},
** Processing line: ~ w: state.buttons_frame_selection.size,~
- Inside source: true
*** True Line Result
w: state.buttons_frame_selection.size,
** Processing line: ~ h: state.buttons_frame_selection.size,~
- Inside source: true
*** True Line Result
h: state.buttons_frame_selection.size,
** Processing line: ~ index: i }~
- Inside source: true
*** True Line Result
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: ~ def calc_animation_frames~
- Inside source: true
*** True Line Result
def calc_animation_frames
** Processing line: ~ animation_frames.each_with_index do |animation_frame, i|~
- Inside source: true
*** True Line Result
animation_frames.each_with_index do |animation_frame, i|
** Processing line: ~ animation_frame[:index] = i~
- Inside source: true
*** True Line Result
animation_frame[:index] = i
** Processing line: ~ animation_frame[:rt_name] = "animation_frame_#{i}"~
- Inside source: true
*** True Line Result
animation_frame[:rt_name] = "animation_frame_#{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 process_queue_create_sprite~
- Inside source: true
*** True Line Result
def process_queue_create_sprite
** Processing line: ~ sprites_to_create = queues.create_sprite~
- Inside source: true
*** True Line Result
sprites_to_create = queues.create_sprite
** Processing line: ~ .find_all { |h| h[:at].elapsed? }~
- Inside source: true
*** True Line Result
.find_all { |h| h[:at].elapsed? }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queues.create_sprite = queues.create_sprite - sprites_to_create~
- Inside source: true
*** True Line Result
queues.create_sprite = queues.create_sprite - sprites_to_create
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ sprites_to_create.each do |h|~
- Inside source: true
*** True Line Result
sprites_to_create.each do |h|
** Processing line: ~ export_animation_frame h[:index], h[:path_override]~
- Inside source: true
*** True Line Result
export_animation_frame h[:index], h[:path_override]
** 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_queue_reset_sprite~
- Inside source: true
*** True Line Result
def process_queue_reset_sprite
** Processing line: ~ sprites_to_reset = queues.reset_sprite~
- Inside source: true
*** True Line Result
sprites_to_reset = queues.reset_sprite
** Processing line: ~ .find_all { |h| h[:at].elapsed? }~
- Inside source: true
*** True Line Result
.find_all { |h| h[:at].elapsed? }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queues.reset_sprite -= sprites_to_reset~
- Inside source: true
*** True Line Result
queues.reset_sprite -= sprites_to_reset
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ sprites_to_reset.each { |h| gtk.reset_sprite (sprite_path h[:index]) }~
- Inside source: true
*** True Line Result
sprites_to_reset.each { |h| gtk.reset_sprite (sprite_path h[:index]) }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def process_queue_update_rt_animation_frame~
- Inside source: true
*** True Line Result
def process_queue_update_rt_animation_frame
** Processing line: ~ animation_frames_to_update = queues.update_rt_animation_frame~
- Inside source: true
*** True Line Result
animation_frames_to_update = queues.update_rt_animation_frame
** Processing line: ~ .find_all { |h| h[:at].elapsed? }~
- Inside source: true
*** True Line Result
.find_all { |h| h[:at].elapsed? }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queues.update_rt_animation_frame -= animation_frames_to_update~
- Inside source: true
*** True Line Result
queues.update_rt_animation_frame -= animation_frames_to_update
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ animation_frames_to_update.each do |h|~
- Inside source: true
*** True Line Result
animation_frames_to_update.each do |h|
** Processing line: ~ update_animation_frame_render_target animation_frames[h[:index]]~
- Inside source: true
*** True Line Result
update_animation_frame_render_target animation_frames[h[:index]]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if h[:queue_sprite_creation]~
- Inside source: true
*** True Line Result
if h[:queue_sprite_creation]
** Processing line: ~ queues.create_sprite << { index: h[:index],~
- Inside source: true
*** True Line Result
queues.create_sprite << { index: h[:index],
** Processing line: ~ at: state.tick_count + 1 }~
- Inside source: true
*** True Line Result
at: state.tick_count + 1 }
** 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 update_animation_frame_render_target animation_frame~
- Inside source: true
*** True Line Result
def update_animation_frame_render_target animation_frame
** Processing line: ~ return if !animation_frame~
- Inside source: true
*** True Line Result
return if !animation_frame
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs[animation_frame[:rt_name]].width = state.rt_canvas.size~
- Inside source: true
*** True Line Result
outputs[animation_frame[:rt_name]].width = state.rt_canvas.size
** Processing line: ~ outputs[animation_frame[:rt_name]].height = state.rt_canvas.size~
- Inside source: true
*** True Line Result
outputs[animation_frame[:rt_name]].height = state.rt_canvas.size
** Processing line: ~ outputs[animation_frame[:rt_name]].solids << animation_frame[:pixels].map do |f|~
- Inside source: true
*** True Line Result
outputs[animation_frame[:rt_name]].solids << animation_frame[:pixels].map do |f|
** Processing line: ~ { x: f.x,~
- Inside source: true
*** True Line Result
{ x: f.x,
** Processing line: ~ y: f.y,~
- Inside source: true
*** True Line Result
y: f.y,
** Processing line: ~ w: 1,~
- Inside source: true
*** True Line Result
w: 1,
** Processing line: ~ h: 1, r: 255, g: 255, b: 255 }~
- Inside source: true
*** True Line Result
h: 1, r: 255, g: 255, b: 255 }
** 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 animation_frames~
- Inside source: true
*** True Line Result
def animation_frames
** Processing line: ~ state.animation_frames~
- Inside source: true
*** True Line Result
state.animation_frames
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def add_animation_frame_to_end~
- Inside source: true
*** True Line Result
def add_animation_frame_to_end
** Processing line: ~ animation_frames << {~
- Inside source: true
*** True Line Result
animation_frames << {
** Processing line: ~ index: animation_frames.length,~
- Inside source: true
*** True Line Result
index: animation_frames.length,
** Processing line: ~ pixels: [],~
- Inside source: true
*** True Line Result
pixels: [],
** Processing line: ~ rt_name: "animation_frame_#{animation_frames.length}"~
- Inside source: true
*** True Line Result
rt_name: "animation_frame_#{animation_frames.length}"
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.animation_frames_selected_index = (animation_frames.length - 1)~
- Inside source: true
*** True Line Result
state.animation_frames_selected_index = (animation_frames.length - 1)
** Processing line: ~ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,~
- Inside source: true
*** True Line Result
queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,
** Processing line: ~ at: state.tick_count,~
- Inside source: true
*** True Line Result
at: state.tick_count,
** Processing line: ~ queue_sprite_creation: true }~
- Inside source: true
*** True Line Result
queue_sprite_creation: true }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def sprite_path i~
- Inside source: true
*** True Line Result
def sprite_path i
** Processing line: ~ "canvas/sprite-#{i}.png"~
- Inside source: true
*** True Line Result
"canvas/sprite-#{i}.png"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def export_animation_frame i, path_override = nil~
- Inside source: true
*** True Line Result
def export_animation_frame i, path_override = nil
** Processing line: ~ return if !state.animation_frames[i]~
- Inside source: true
*** True Line Result
return if !state.animation_frames[i]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.screenshots << state.buttons_frame_selection~
- Inside source: true
*** True Line Result
outputs.screenshots << state.buttons_frame_selection
** Processing line: ~ .items[i][:inner_rect]~
- Inside source: true
*** True Line Result
.items[i][:inner_rect]
** Processing line: ~ .merge(path: path_override || (sprite_path i))~
- Inside source: true
*** True Line Result
.merge(path: path_override || (sprite_path i))
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.screenshots << state.buttons_frame_selection~
- Inside source: true
*** True Line Result
outputs.screenshots << state.buttons_frame_selection
** Processing line: ~ .items[i][:inner_rect]~
- Inside source: true
*** True Line Result
.items[i][:inner_rect]
** Processing line: ~ .merge(path: "tmp/sprite_backups/#{Time.now.to_i}-sprite-#{i}.png")~
- Inside source: true
*** True Line Result
.merge(path: "tmp/sprite_backups/#{Time.now.to_i}-sprite-#{i}.png")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ queues.reset_sprite << { index: i, at: state.tick_count }~
- Inside source: true
*** True Line Result
queues.reset_sprite << { index: i, at: state.tick_count }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def selected_animation_frame~
- Inside source: true
*** True Line Result
def selected_animation_frame
** Processing line: ~ state.animation_frames[state.animation_frames_selected_index]~
- Inside source: true
*** True Line Result
state.animation_frames[state.animation_frames_selected_index]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def edit_current_animation_frame point~
- Inside source: true
*** True Line Result
def edit_current_animation_frame point
** Processing line: ~ draw_area_point = (to_draw_area point)~
- Inside source: true
*** True Line Result
draw_area_point = (to_draw_area point)
** Processing line: ~ if state.edit_mode == :drawing && (!selected_animation_frame[:pixels].include? draw_area_point)~
- Inside source: true
*** True Line Result
if state.edit_mode == :drawing && (!selected_animation_frame[:pixels].include? draw_area_point)
** Processing line: ~ selected_animation_frame[:pixels] << draw_area_point~
- Inside source: true
*** True Line Result
selected_animation_frame[:pixels] << draw_area_point
** Processing line: ~ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,~
- Inside source: true
*** True Line Result
queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,
** Processing line: ~ at: state.tick_count,~
- Inside source: true
*** True Line Result
at: state.tick_count,
** Processing line: ~ queue_sprite_creation: !user_is_editing? }~
- Inside source: true
*** True Line Result
queue_sprite_creation: !user_is_editing? }
** Processing line: ~ elsif state.edit_mode == :erasing && (selected_animation_frame[:pixels].include? draw_area_point)~
- Inside source: true
*** True Line Result
elsif state.edit_mode == :erasing && (selected_animation_frame[:pixels].include? draw_area_point)
** Processing line: ~ selected_animation_frame[:pixels] = selected_animation_frame[:pixels].reject { |p| p == draw_area_point }~
- Inside source: true
*** True Line Result
selected_animation_frame[:pixels] = selected_animation_frame[:pixels].reject { |p| p == draw_area_point }
** Processing line: ~ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,~
- Inside source: true
*** True Line Result
queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,
** Processing line: ~ at: state.tick_count,~
- Inside source: true
*** True Line Result
at: state.tick_count,
** Processing line: ~ queue_sprite_creation: !user_is_editing? }~
- Inside source: true
*** True Line Result
queue_sprite_creation: !user_is_editing? }
** 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 user_is_editing?~
- Inside source: true
*** True Line Result
def user_is_editing?
** Processing line: ~ state.last_mouse_down > state.last_mouse_up~
- Inside source: true
*** True Line Result
state.last_mouse_down > state.last_mouse_up
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def to_draw_area point~
- Inside source: true
*** True Line Result
def to_draw_area point
** Processing line: ~ x, y = point~
- Inside source: true
*** True Line Result
x, y = point
** Processing line: ~ x -= rt_canvas.sprite.x~
- Inside source: true
*** True Line Result
x -= rt_canvas.sprite.x
** Processing line: ~ y -= rt_canvas.sprite.y~
- Inside source: true
*** True Line Result
y -= rt_canvas.sprite.y
** Processing line: ~ { x: x.idiv(rt_canvas.zoom),~
- Inside source: true
*** True Line Result
{ x: x.idiv(rt_canvas.zoom),
** Processing line: ~ y: y.idiv(rt_canvas.zoom) }~
- Inside source: true
*** True Line Result
y: y.idiv(rt_canvas.zoom) }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def rt_canvas~
- Inside source: true
*** True Line Result
def rt_canvas
** Processing line: ~ state.rt_canvas ||= state.new_entity(:rt_canvas)~
- Inside source: true
*** True Line Result
state.rt_canvas ||= state.new_entity(:rt_canvas)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def queues~
- Inside source: true
*** True Line Result
def queues
** Processing line: ~ state.queues ||= state.new_entity(:queues)~
- Inside source: true
*** True Line Result
state.queues ||= state.new_entity(:queues)
** 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 = OneBitLowrezPaint.new~
- Inside source: true
*** True Line Result
$game = OneBitLowrezPaint.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: ~ # $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: ~* Dev Tools - Tile Editor Starting Point - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Dev Tools - Tile Editor 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_dev_tools/tile_editor_starting_point/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_dev_tools/tile_editor_starting_point/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - to_s: Returns a string representation of an object.~
- Inside source: true
*** True Line Result
- to_s: Returns a string representation of an object.
** Processing line: ~ For example, if we had~
- Inside source: true
*** True Line Result
For example, if we had
** Processing line: ~ 500.to_s~
- Inside source: true
*** True Line Result
500.to_s
** Processing line: ~ the string "500" would be returned.~
- Inside source: true
*** True Line Result
the string "500" would be returned.
** Processing line: ~ Similar to to_i, which returns an integer representation of an object.~
- Inside source: true
*** True Line Result
Similar to to_i, which returns an integer representation of an object.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Ceil: Returns an integer number greater than or equal to the original~
- Inside source: true
*** True Line Result
- Ceil: Returns an integer number greater than or equal to the original
** Processing line: ~ with no decimal.~
- Inside source: true
*** True Line Result
with no decimal.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#inside_rect?: Returns true or false depending on if the point is inside a rect.~
- Inside source: true
*** True Line Result
- ARRAY#inside_rect?: Returns true or false depending on if the point is inside a rect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. The values generate a label.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.sprites: An array. The values generate a sprite.~
- Inside source: true
*** True Line Result
- args.outputs.sprites: An array. The values generate a sprite.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, IMAGE PATH]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, IMAGE PATH]
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
- Inside source: true
*** True Line Result
For more information about sprites, go to mygame/documentation/05-sprites.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
- Inside source: true
*** True Line Result
- args.outputs.solids: An array. The values generate a solid.
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
- Inside source: true
*** True Line Result
For more information about solids, go to mygame/documentation/03-solids-and-borders.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.lines: An array. The values generate a line.~
- Inside source: true
*** True Line Result
- args.outputs.lines: An array. The values generate a line.
** Processing line: ~ The parameters are [X1, Y1, X2, Y2, RED, GREEN, BLUE]~
- Inside source: true
*** True Line Result
The parameters are [X1, Y1, X2, Y2, RED, GREEN, BLUE]
** Processing line: ~ For more information about lines, go to mygame/documentation/04-lines.md.~
- Inside source: true
*** True Line Result
For more information about lines, go to mygame/documentation/04-lines.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
- Inside source: true
*** True Line Result
- args.state.new_entity: Used when we want to create a new object, like a sprite or button.
** Processing line: ~ In this sample app, new_entity is used to create a new button that clears the grid.~
- Inside source: true
*** True Line Result
In this sample app, new_entity is used to create a new button that clears the grid.
** Processing line: ~ (Remember, you can use state to define ANY property and it will be retained across frames.)~
- Inside source: true
*** True Line Result
(Remember, you can use state to define ANY property and it will be retained across frames.)
** 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: ~ # This sample app shows an empty grid that the user can paint in. There are different image tiles that~
- Inside source: true
*** True Line Result
# This sample app shows an empty grid that the user can paint in. There are different image tiles that
** Processing line: ~ # the user can use to fill the grid, and the "Clear" button can be pressed to clear the grid boxes.~
- Inside source: true
*** True Line Result
# the user can use to fill the grid, and the "Clear" button can be pressed to clear the grid boxes.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class TileEditor~
- Inside source: true
*** True Line Result
class TileEditor
** Processing line: ~ attr_accessor :inputs, :state, :outputs, :grid, :args~
- Inside source: true
*** True Line Result
attr_accessor :inputs, :state, :outputs, :grid, :args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs all the methods necessary for the game to function properly.~
- Inside source: true
*** True Line Result
# Runs all the methods necessary for the game to function properly.
** 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: ~ check_click~
- Inside source: true
*** True Line Result
check_click
** Processing line: ~ draw_buttons~
- Inside source: true
*** True Line Result
draw_buttons
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets default values~
- Inside source: true
*** True Line Result
# Sets default values
** Processing line: ~ # Initialization only happens in the first frame~
- Inside source: true
*** True Line Result
# Initialization only happens in the first frame
** Processing line: ~ # NOTE: The values of some of these variables may seem confusingly large at first.~
- Inside source: true
*** True Line Result
# NOTE: The values of some of these variables may seem confusingly large at first.
** Processing line: ~ # The gridSize is 1600 but it seems a lot smaller on the screen, for example.~
- Inside source: true
*** True Line Result
# The gridSize is 1600 but it seems a lot smaller on the screen, for example.
** Processing line: ~ # But keep in mind that by using the "W", "A", "S", and "D" keys, you can~
- Inside source: true
*** True Line Result
# But keep in mind that by using the "W", "A", "S", and "D" keys, you can
** Processing line: ~ # move the grid's view in all four directions for more grid spaces.~
- Inside source: true
*** True Line Result
# move the grid's view in all four directions for more grid spaces.
** Processing line: ~ def defaults~
- Inside source: true
*** True Line Result
def defaults
** Processing line: ~ state.tileCords ||= []~
- Inside source: true
*** True Line Result
state.tileCords ||= []
** Processing line: ~ state.tileQuantity ||= 6~
- Inside source: true
*** True Line Result
state.tileQuantity ||= 6
** Processing line: ~ state.tileSize ||= 50~
- Inside source: true
*** True Line Result
state.tileSize ||= 50
** Processing line: ~ state.tileSelected ||= 1~
- Inside source: true
*** True Line Result
state.tileSelected ||= 1
** Processing line: ~ state.tempX ||= 50~
- Inside source: true
*** True Line Result
state.tempX ||= 50
** Processing line: ~ state.tempY ||= 500~
- Inside source: true
*** True Line Result
state.tempY ||= 500
** Processing line: ~ state.speed ||= 4~
- Inside source: true
*** True Line Result
state.speed ||= 4
** Processing line: ~ state.centerX ||= 4000~
- Inside source: true
*** True Line Result
state.centerX ||= 4000
** Processing line: ~ state.centerY ||= 4000~
- Inside source: true
*** True Line Result
state.centerY ||= 4000
** Processing line: ~ state.originalCenter ||= [state.centerX, state.centerY]~
- Inside source: true
*** True Line Result
state.originalCenter ||= [state.centerX, state.centerY]
** Processing line: ~ state.gridSize ||= 1600~
- Inside source: true
*** True Line Result
state.gridSize ||= 1600
** Processing line: ~ state.lineQuantity ||= 50~
- Inside source: true
*** True Line Result
state.lineQuantity ||= 50
** Processing line: ~ state.increment ||= state.gridSize / state.lineQuantity~
- Inside source: true
*** True Line Result
state.increment ||= state.gridSize / state.lineQuantity
** Processing line: ~ state.gridX ||= []~
- Inside source: true
*** True Line Result
state.gridX ||= []
** Processing line: ~ state.gridY ||= []~
- Inside source: true
*** True Line Result
state.gridY ||= []
** Processing line: ~ state.filled_squares ||= []~
- Inside source: true
*** True Line Result
state.filled_squares ||= []
** Processing line: ~ state.grid_border ||= [390, 140, 500, 500]~
- Inside source: true
*** True Line Result
state.grid_border ||= [390, 140, 500, 500]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ get_grid unless state.tempX == 0 # calls get_grid in the first frame only~
- Inside source: true
*** True Line Result
get_grid unless state.tempX == 0 # calls get_grid in the first frame only
** Processing line: ~ determineTileCords unless state.tempX == 0 # calls determineTileCords in first frame~
- Inside source: true
*** True Line Result
determineTileCords unless state.tempX == 0 # calls determineTileCords in first frame
** Processing line: ~ state.tempX = 0 # sets tempX to 0; the two methods aren't called again~
- Inside source: true
*** True Line Result
state.tempX = 0 # sets tempX to 0; the two methods aren't called again
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calculates the placement of lines or separators in the grid~
- Inside source: true
*** True Line Result
# Calculates the placement of lines or separators in the grid
** Processing line: ~ def get_grid~
- Inside source: true
*** True Line Result
def get_grid
** Processing line: ~ curr_x = state.centerX - (state.gridSize / 2) # starts at left of grid~
- Inside source: true
*** True Line Result
curr_x = state.centerX - (state.gridSize / 2) # starts at left of grid
** Processing line: ~ deltaX = state.gridSize / state.lineQuantity # finds distance to place vertical lines evenly through width of grid~
- Inside source: true
*** True Line Result
deltaX = state.gridSize / state.lineQuantity # finds distance to place vertical lines evenly through width of grid
** Processing line: ~ (state.lineQuantity + 2).times do~
- Inside source: true
*** True Line Result
(state.lineQuantity + 2).times do
** Processing line: ~ state.gridX << curr_x # adds curr_x to gridX collection~
- Inside source: true
*** True Line Result
state.gridX << curr_x # adds curr_x to gridX collection
** Processing line: ~ curr_x += deltaX # increment curr_x by the distance between vertical lines~
- Inside source: true
*** True Line Result
curr_x += deltaX # increment curr_x by the distance between vertical lines
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ curr_y = state.centerY - (state.gridSize / 2) # starts at bottom of grid~
- Inside source: true
*** True Line Result
curr_y = state.centerY - (state.gridSize / 2) # starts at bottom of grid
** Processing line: ~ deltaY = state.gridSize / state.lineQuantity # finds distance to place horizontal lines evenly through height of grid~
- Inside source: true
*** True Line Result
deltaY = state.gridSize / state.lineQuantity # finds distance to place horizontal lines evenly through height of grid
** Processing line: ~ (state.lineQuantity + 2).times do~
- Inside source: true
*** True Line Result
(state.lineQuantity + 2).times do
** Processing line: ~ state.gridY << curr_y # adds curr_y to gridY collection~
- Inside source: true
*** True Line Result
state.gridY << curr_y # adds curr_y to gridY collection
** Processing line: ~ curr_y += deltaY # increments curr_y to distance between horizontal lines~
- Inside source: true
*** True Line Result
curr_y += deltaY # increments curr_y to distance between horizontal lines
** 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: ~ # Determines coordinate positions of patterned tiles (on the left side of the grid)~
- Inside source: true
*** True Line Result
# Determines coordinate positions of patterned tiles (on the left side of the grid)
** Processing line: ~ def determineTileCords~
- Inside source: true
*** True Line Result
def determineTileCords
** Processing line: ~ state.tempCounter ||= 1 # initializes tempCounter to 1~
- Inside source: true
*** True Line Result
state.tempCounter ||= 1 # initializes tempCounter to 1
** Processing line: ~ state.tileQuantity.times do # there are 6 different kinds of tiles~
- Inside source: true
*** True Line Result
state.tileQuantity.times do # there are 6 different kinds of tiles
** Processing line: ~ state.tileCords += [[state.tempX, state.tempY, state.tempCounter]] # adds tile definition to collection~
- Inside source: true
*** True Line Result
state.tileCords += [[state.tempX, state.tempY, state.tempCounter]] # adds tile definition to collection
** Processing line: ~ state.tempX += 75 # increments tempX to put horizontal space between the patterned tiles~
- Inside source: true
*** True Line Result
state.tempX += 75 # increments tempX to put horizontal space between the patterned tiles
** Processing line: ~ state.tempCounter += 1 # increments tempCounter~
- Inside source: true
*** True Line Result
state.tempCounter += 1 # increments tempCounter
** Processing line: ~ if state.tempX > 200 # if tempX exceeds 200 pixels~
- Inside source: true
*** True Line Result
if state.tempX > 200 # if tempX exceeds 200 pixels
** Processing line: ~ state.tempX = 50 # a new row of patterned tiles begins~
- Inside source: true
*** True Line Result
state.tempX = 50 # a new row of patterned tiles begins
** Processing line: ~ state.tempY -= 75 # the new row is 75 pixels lower than the previous row~
- Inside source: true
*** True Line Result
state.tempY -= 75 # the new row is 75 pixels lower than the previous row
** 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: ~ # Outputs objects (grid, tiles, etc) onto the screen~
- Inside source: true
*** True Line Result
# Outputs objects (grid, tiles, etc) onto the screen
** Processing line: ~ def render~
- Inside source: true
*** True Line Result
def render
** Processing line: ~ outputs.sprites << state.tileCords.map do # outputs tileCords collection using images in sprites folder~
- Inside source: true
*** True Line Result
outputs.sprites << state.tileCords.map do # outputs tileCords collection using images in sprites folder
** Processing line: ~ |x, y, order|~
- Inside source: true
*** True Line Result
|x, y, order|
** Processing line: ~ [x, y, state.tileSize, state.tileSize, 'sprites/image' + order.to_s + ".png"]~
- Inside source: true
*** True Line Result
[x, y, state.tileSize, state.tileSize, 'sprites/image' + order.to_s + ".png"]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ outputs.solids << [0, 0, 1280, 720, 255, 255, 255] # outputs white background~
- Inside source: true
*** True Line Result
outputs.solids << [0, 0, 1280, 720, 255, 255, 255] # outputs white background
** Processing line: ~ add_grid # outputs grid~
- Inside source: true
*** True Line Result
add_grid # outputs grid
** Processing line: ~ print_title # outputs title and current tile pattern~
- Inside source: true
*** True Line Result
print_title # outputs title and current tile pattern
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates a grid by outputting vertical and horizontal grid lines onto the screen.~
- Inside source: true
*** True Line Result
# Creates a grid by outputting vertical and horizontal grid lines onto the screen.
** Processing line: ~ # Outputs sprites for the filled_squares collection onto the screen.~
- Inside source: true
*** True Line Result
# Outputs sprites for the filled_squares collection onto the screen.
** Processing line: ~ def add_grid~
- Inside source: true
*** True Line Result
def add_grid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs the grid's border.~
- Inside source: true
*** True Line Result
# Outputs the grid's border.
** Processing line: ~ outputs.borders << state.grid_border~
- Inside source: true
*** True Line Result
outputs.borders << state.grid_border
** Processing line: ~ temp = 0~
- Inside source: true
*** True Line Result
temp = 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Before looking at the code that outputs the vertical and horizontal lines in the~
- Inside source: true
*** True Line Result
# Before looking at the code that outputs the vertical and horizontal lines in the
** Processing line: ~ # grid, take note of the fact that:~
- Inside source: true
*** True Line Result
# grid, take note of the fact that:
** Processing line: ~ # grid_border[1] refers to the border's bottom line (running horizontally),~
- Inside source: true
*** True Line Result
# grid_border[1] refers to the border's bottom line (running horizontally),
** Processing line: ~ # grid_border[2] refers to the border's top line (running (horizontally),~
- Inside source: true
*** True Line Result
# grid_border[2] refers to the border's top line (running (horizontally),
** Processing line: ~ # grid_border[0] refers to the border's left line (running vertically),~
- Inside source: true
*** True Line Result
# grid_border[0] refers to the border's left line (running vertically),
** Processing line: ~ # and grid_border[3] refers to the border's right line (running vertically).~
- Inside source: true
*** True Line Result
# and grid_border[3] refers to the border's right line (running vertically).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # [2]~
- Inside source: true
*** True Line Result
# [2]
** Processing line: ~ # ----------~
- Inside source: true
*** True Line Result
# ----------
** Processing line: ~ # | |~
- Inside source: true
*** True Line Result
# | |
** Processing line: ~ # [0] | | [3]~
- Inside source: true
*** True Line Result
# [0] | | [3]
** Processing line: ~ # | |~
- Inside source: true
*** True Line Result
# | |
** Processing line: ~ # ----------~
- Inside source: true
*** True Line Result
# ----------
** Processing line: ~ # [1]~
- Inside source: true
*** True Line Result
# [1]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calculates the positions and outputs the x grid lines in the color gray.~
- Inside source: true
*** True Line Result
# Calculates the positions and outputs the x grid lines in the color gray.
** Processing line: ~ state.gridX.map do # perform an action on all elements of the gridX collection~
- Inside source: true
*** True Line Result
state.gridX.map do # perform an action on all elements of the gridX collection
** Processing line: ~ |x|~
- Inside source: true
*** True Line Result
|x|
** Processing line: ~ temp += 1 # increment temp~
- Inside source: true
*** True Line Result
temp += 1 # increment temp
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if x's value is greater than (or equal to) the x value of the border's left side~
- Inside source: true
*** True Line Result
# if x's value is greater than (or equal to) the x value of the border's left side
** Processing line: ~ # and less than (or equal to) the x value of the border's right side~
- Inside source: true
*** True Line Result
# and less than (or equal to) the x value of the border's right side
** Processing line: ~ if x >= state.centerX - (state.grid_border[2] / 2) && x <= state.centerX + (state.grid_border[2] / 2)~
- Inside source: true
*** True Line Result
if x >= state.centerX - (state.grid_border[2] / 2) && x <= state.centerX + (state.grid_border[2] / 2)
** Processing line: ~ delta = state.centerX - 640~
- Inside source: true
*** True Line Result
delta = state.centerX - 640
** Processing line: ~ # vertical lines have the same starting and ending x positions~
- Inside source: true
*** True Line Result
# vertical lines have the same starting and ending x positions
** Processing line: ~ # starting y and ending y positions lead from the bottom of the border to the top of the border~
- Inside source: true
*** True Line Result
# starting y and ending y positions lead from the bottom of the border to the top of the border
** Processing line: ~ outputs.lines << [x - delta, state.grid_border[1], x - delta, state.grid_border[1] + state.grid_border[2], 150, 150, 150] # sets definition of vertical line and outputs it~
- Inside source: true
*** True Line Result
outputs.lines << [x - delta, state.grid_border[1], x - delta, state.grid_border[1] + state.grid_border[2], 150, 150, 150] # sets definition of vertical line and outputs it
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ temp = 0~
- Inside source: true
*** True Line Result
temp = 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calculates the positions and outputs the y grid lines in the color gray.~
- Inside source: true
*** True Line Result
# Calculates the positions and outputs the y grid lines in the color gray.
** Processing line: ~ state.gridY.map do # perform an action on all elements of the gridY collection~
- Inside source: true
*** True Line Result
state.gridY.map do # perform an action on all elements of the gridY collection
** Processing line: ~ |y|~
- Inside source: true
*** True Line Result
|y|
** Processing line: ~ temp += 1 # increment temp~
- Inside source: true
*** True Line Result
temp += 1 # increment temp
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if y's value is greater than (or equal to) the y value of the border's bottom side~
- Inside source: true
*** True Line Result
# if y's value is greater than (or equal to) the y value of the border's bottom side
** Processing line: ~ # and less than (or equal to) the y value of the border's top side~
- Inside source: true
*** True Line Result
# and less than (or equal to) the y value of the border's top side
** Processing line: ~ if y >= state.centerY - (state.grid_border[3] / 2) && y <= state.centerY + (state.grid_border[3] / 2)~
- Inside source: true
*** True Line Result
if y >= state.centerY - (state.grid_border[3] / 2) && y <= state.centerY + (state.grid_border[3] / 2)
** Processing line: ~ delta = state.centerY - 393~
- Inside source: true
*** True Line Result
delta = state.centerY - 393
** Processing line: ~ # horizontal lines have the same starting and ending y positions~
- Inside source: true
*** True Line Result
# horizontal lines have the same starting and ending y positions
** Processing line: ~ # starting x and ending x positions lead from the left side of the border to the right side of the border~
- Inside source: true
*** True Line Result
# starting x and ending x positions lead from the left side of the border to the right side of the border
** Processing line: ~ outputs.lines << [state.grid_border[0], y - delta, state.grid_border[0] + state.grid_border[3], y - delta, 150, 150, 150] # sets definition of horizontal line and outputs it~
- Inside source: true
*** True Line Result
outputs.lines << [state.grid_border[0], y - delta, state.grid_border[0] + state.grid_border[3], y - delta, 150, 150, 150] # sets definition of horizontal line and outputs it
** 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: ~ # Sets values and outputs sprites for the filled_squares collection.~
- Inside source: true
*** True Line Result
# Sets values and outputs sprites for the filled_squares collection.
** Processing line: ~ state.filled_squares.map do # perform an action on every element of the filled_squares collection~
- Inside source: true
*** True Line Result
state.filled_squares.map do # perform an action on every element of the filled_squares collection
** Processing line: ~ |x, y, w, h, sprite|~
- Inside source: true
*** True Line Result
|x, y, w, h, sprite|
** Processing line: ~ # if x's value is greater than (or equal to) the x value of 17 pixels to the left of the border's left side~
- Inside source: true
*** True Line Result
# if x's value is greater than (or equal to) the x value of 17 pixels to the left of the border's left side
** Processing line: ~ # and less than (or equal to) the x value of the border's right side~
- Inside source: true
*** True Line Result
# and less than (or equal to) the x value of the border's right side
** Processing line: ~ # and y's value is greater than (or equal to) the y value of the border's bottom side~
- Inside source: true
*** True Line Result
# and y's value is greater than (or equal to) the y value of the border's bottom side
** Processing line: ~ # and less than (or equal to) the y value of 25 pixels above the border's top side~
- Inside source: true
*** True Line Result
# and less than (or equal to) the y value of 25 pixels above the border's top side
** Processing line: ~ # NOTE: The allowance of 17 pixels and 25 pixels is due to the fact that a grid box may be slightly cut off or~
- Inside source: true
*** True Line Result
# NOTE: The allowance of 17 pixels and 25 pixels is due to the fact that a grid box may be slightly cut off or
** Processing line: ~ # not entirely visible in the grid's view (until it is moved using "W", "A", "S", "D")~
- Inside source: true
*** True Line Result
# not entirely visible in the grid's view (until it is moved using "W", "A", "S", "D")
** Processing line: ~ if x >= state.centerX - (state.grid_border[2] / 2) - 17 && x <= state.centerX + (state.grid_border[2] / 2) &&~
- Inside source: true
*** True Line Result
if x >= state.centerX - (state.grid_border[2] / 2) - 17 && x <= state.centerX + (state.grid_border[2] / 2) &&
** Processing line: ~ y >= state.centerY - (state.grid_border[3] / 2) && y <= state.centerY + (state.grid_border[3] / 2) + 25~
- Inside source: true
*** True Line Result
y >= state.centerY - (state.grid_border[3] / 2) && y <= state.centerY + (state.grid_border[3] / 2) + 25
** Processing line: ~ # calculations done to place sprites in grid spaces that are meant to filled in~
- Inside source: true
*** True Line Result
# calculations done to place sprites in grid spaces that are meant to filled in
** Processing line: ~ # mess around with the x and y values and see how the sprite placement changes~
- Inside source: true
*** True Line Result
# mess around with the x and y values and see how the sprite placement changes
** Processing line: ~ outputs.sprites << [x - state.centerX + 630, y - state.centerY + 360, w, h, sprite]~
- Inside source: true
*** True Line Result
outputs.sprites << [x - state.centerX + 630, y - state.centerY + 360, w, h, sprite]
** 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: ~ # outputs a white solid along the left side of the grid (change the color and you'll be able to see it against the white background)~
- Inside source: true
*** True Line Result
# outputs a white solid along the left side of the grid (change the color and you'll be able to see it against the white background)
** Processing line: ~ # state.increment subtracted in x parameter because solid's position is denoted by bottom left corner~
- Inside source: true
*** True Line Result
# state.increment subtracted in x parameter because solid's position is denoted by bottom left corner
** Processing line: ~ # state.increment subtracted in y parameter to avoid covering the title label~
- Inside source: true
*** True Line Result
# state.increment subtracted in y parameter to avoid covering the title label
** Processing line: ~ outputs.primitives << [state.grid_border[0] - state.increment,~
- Inside source: true
*** True Line Result
outputs.primitives << [state.grid_border[0] - state.increment,
** Processing line: ~ state.grid_border[1] - state.increment, state.increment, state.grid_border[3] + (state.increment * 2),~
- Inside source: true
*** True Line Result
state.grid_border[1] - state.increment, state.increment, state.grid_border[3] + (state.increment * 2),
** Processing line: ~ 255, 255, 255].solid~
- Inside source: true
*** True Line Result
255, 255, 255].solid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # outputs a white solid along the right side of the grid~
- Inside source: true
*** True Line Result
# outputs a white solid along the right side of the grid
** Processing line: ~ # state.increment subtracted from y parameter to avoid covering title label~
- Inside source: true
*** True Line Result
# state.increment subtracted from y parameter to avoid covering title label
** Processing line: ~ outputs.primitives << [state.grid_border[0] + state.grid_border[2],~
- Inside source: true
*** True Line Result
outputs.primitives << [state.grid_border[0] + state.grid_border[2],
** Processing line: ~ state.grid_border[1] - state.increment, state.increment, state.grid_border[3] + (state.increment * 2),~
- Inside source: true
*** True Line Result
state.grid_border[1] - state.increment, state.increment, state.grid_border[3] + (state.increment * 2),
** Processing line: ~ 255, 255, 255].solid~
- Inside source: true
*** True Line Result
255, 255, 255].solid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # outputs a white solid along the bottom of the grid~
- Inside source: true
*** True Line Result
# outputs a white solid along the bottom of the grid
** Processing line: ~ # state.increment subtracted from y parameter to avoid covering last row of grid boxes~
- Inside source: true
*** True Line Result
# state.increment subtracted from y parameter to avoid covering last row of grid boxes
** Processing line: ~ outputs.primitives << [state.grid_border[0] - state.increment, state.grid_border[1] - state.increment,~
- Inside source: true
*** True Line Result
outputs.primitives << [state.grid_border[0] - state.increment, state.grid_border[1] - state.increment,
** Processing line: ~ state.grid_border[2] + (2 * state.increment), state.increment, 255, 255, 255].solid~
- Inside source: true
*** True Line Result
state.grid_border[2] + (2 * state.increment), state.increment, 255, 255, 255].solid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # outputs a white solid along the top of the grid~
- Inside source: true
*** True Line Result
# outputs a white solid along the top of the grid
** Processing line: ~ outputs.primitives << [state.grid_border[0] - state.increment, state.grid_border[1] + state.grid_border[3],~
- Inside source: true
*** True Line Result
outputs.primitives << [state.grid_border[0] - state.increment, state.grid_border[1] + state.grid_border[3],
** Processing line: ~ state.grid_border[2] + (2 * state.increment), state.increment, 255, 255, 255].solid~
- Inside source: true
*** True Line Result
state.grid_border[2] + (2 * state.increment), state.increment, 255, 255, 255].solid
** 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: ~ # Outputs title and current tile pattern~
- Inside source: true
*** True Line Result
# Outputs title and current tile pattern
** Processing line: ~ def print_title~
- Inside source: true
*** True Line Result
def print_title
** Processing line: ~ outputs.labels << [640, 700, 'Mouse to Place Tile, WASD to Move Around', 7, 1] # title label~
- Inside source: true
*** True Line Result
outputs.labels << [640, 700, 'Mouse to Place Tile, WASD to Move Around', 7, 1] # title label
** Processing line: ~ outputs.lines << horizontal_separator(660, 0, 1280) # outputs horizontal separator~
- Inside source: true
*** True Line Result
outputs.lines << horizontal_separator(660, 0, 1280) # outputs horizontal separator
** Processing line: ~ outputs.labels << [1050, 500, 'Current:', 3, 1] # outputs Current label~
- Inside source: true
*** True Line Result
outputs.labels << [1050, 500, 'Current:', 3, 1] # outputs Current label
** Processing line: ~ outputs.sprites << [1110, 474, state.tileSize / 2, state.tileSize / 2, 'sprites/image' + state.tileSelected.to_s + ".png"] # outputs sprite of current tile pattern using images in sprites folder; output is half the size of a tile~
- Inside source: true
*** True Line Result
outputs.sprites << [1110, 474, state.tileSize / 2, state.tileSize / 2, 'sprites/image' + state.tileSelected.to_s + ".png"] # outputs sprite of current tile pattern using images in sprites folder; output is half the size of a tile
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the starting position, ending position, and color for the horizontal separator.~
- Inside source: true
*** True Line Result
# Sets the starting position, ending position, and color for the horizontal separator.
** Processing line: ~ def horizontal_separator y, x, x2~
- Inside source: true
*** True Line Result
def horizontal_separator y, x, x2
** Processing line: ~ [x, y, x2, y, 150, 150, 150] # definition of separator; horizontal line means same starting/ending y~
- Inside source: true
*** True Line Result
[x, y, x2, y, 150, 150, 150] # definition of separator; horizontal line means same starting/ending y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Checks if the mouse is being clicked or dragged~
- Inside source: true
*** True Line Result
# Checks if the mouse is being clicked or dragged
** Processing line: ~ def check_click~
- Inside source: true
*** True Line Result
def check_click
** Processing line: ~ if inputs.keyboard.key_down.r # if the "r" key is pressed down~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.r # if the "r" key is pressed down
** Processing line: ~ $dragon.reset~
- Inside source: true
*** True Line Result
$dragon.reset
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.mouse.down #is mouse up or down?~
- Inside source: true
*** True Line Result
if inputs.mouse.down #is mouse up or down?
** Processing line: ~ state.mouse_held = true~
- Inside source: true
*** True Line Result
state.mouse_held = true
** Processing line: ~ if inputs.mouse.position.x < state.grid_border[0] # if mouse's x position is inside the grid's borders~
- Inside source: true
*** True Line Result
if inputs.mouse.position.x < state.grid_border[0] # if mouse's x position is inside the grid's borders
** Processing line: ~ state.tileCords.map do # perform action on all elements of tileCords collection~
- Inside source: true
*** True Line Result
state.tileCords.map do # perform action on all elements of tileCords collection
** Processing line: ~ |x, y, order|~
- Inside source: true
*** True Line Result
|x, y, order|
** Processing line: ~ # if mouse's x position is greater than (or equal to) the starting x position of a tile~
- Inside source: true
*** True Line Result
# if mouse's x position is greater than (or equal to) the starting x position of a tile
** Processing line: ~ # and the mouse's x position is also less than (or equal to) the ending x position of that tile,~
- Inside source: true
*** True Line Result
# and the mouse's x position is also less than (or equal to) the ending x position of that tile,
** Processing line: ~ # and the mouse's y position is greater than (or equal to) the starting y position of that tile,~
- Inside source: true
*** True Line Result
# and the mouse's y position is greater than (or equal to) the starting y position of that tile,
** Processing line: ~ # and the mouse's y position is also less than (or equal to) the ending y position of that tile,~
- Inside source: true
*** True Line Result
# and the mouse's y position is also less than (or equal to) the ending y position of that tile,
** Processing line: ~ # (BASICALLY, IF THE MOUSE'S POSITION IS WITHIN THE STARTING AND ENDING POSITIONS OF A TILE)~
- Inside source: true
*** True Line Result
# (BASICALLY, IF THE MOUSE'S POSITION IS WITHIN THE STARTING AND ENDING POSITIONS OF A TILE)
** Processing line: ~ if inputs.mouse.position.x >= x && inputs.mouse.position.x <= x + state.tileSize &&~
- Inside source: true
*** True Line Result
if inputs.mouse.position.x >= x && inputs.mouse.position.x <= x + state.tileSize &&
** Processing line: ~ inputs.mouse.position.y >= y && inputs.mouse.position.y <= y + state.tileSize~
- Inside source: true
*** True Line Result
inputs.mouse.position.y >= y && inputs.mouse.position.y <= y + state.tileSize
** Processing line: ~ state.tileSelected = order # that tile is selected~
- Inside source: true
*** True Line Result
state.tileSelected = order # that tile is selected
** 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: ~ elsif inputs.mouse.up # otherwise, if the mouse is in the "up" state~
- Inside source: true
*** True Line Result
elsif inputs.mouse.up # otherwise, if the mouse is in the "up" state
** Processing line: ~ state.mouse_held = false # mouse is not held down or dragged~
- Inside source: true
*** True Line Result
state.mouse_held = false # mouse is not held down or dragged
** Processing line: ~ state.mouse_dragging = false~
- Inside source: true
*** True Line Result
state.mouse_dragging = false
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.mouse_held && # mouse needs to be down~
- Inside source: true
*** True Line Result
if state.mouse_held && # mouse needs to be down
** Processing line: ~ !inputs.mouse.click && # must not be first click~
- Inside source: true
*** True Line Result
!inputs.mouse.click && # must not be first click
** Processing line: ~ ((inputs.mouse.previous_click.point.x - inputs.mouse.position.x).abs > 15 ||~
- Inside source: true
*** True Line Result
((inputs.mouse.previous_click.point.x - inputs.mouse.position.x).abs > 15 ||
** Processing line: ~ (inputs.mouse.previous_click.point.y - inputs.mouse.position.y).abs > 15) # Need to move 15 pixels before "drag"~
- Inside source: true
*** True Line Result
(inputs.mouse.previous_click.point.y - inputs.mouse.position.y).abs > 15) # Need to move 15 pixels before "drag"
** Processing line: ~ state.mouse_dragging = true~
- Inside source: true
*** True Line Result
state.mouse_dragging = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if mouse is clicked inside grid's border, search_lines method is called with click input type~
- Inside source: true
*** True Line Result
# if mouse is clicked inside grid's border, search_lines method is called with click input type
** Processing line: ~ if ((inputs.mouse.click) && (inputs.mouse.click.point.inside_rect? state.grid_border))~
- Inside source: true
*** True Line Result
if ((inputs.mouse.click) && (inputs.mouse.click.point.inside_rect? state.grid_border))
** Processing line: ~ search_lines(inputs.mouse.click.point, :click)~
- Inside source: true
*** True Line Result
search_lines(inputs.mouse.click.point, :click)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if mouse is dragged inside grid's border, search_lines method is called with drag input type~
- Inside source: true
*** True Line Result
# if mouse is dragged inside grid's border, search_lines method is called with drag input type
** Processing line: ~ elsif ((state.mouse_dragging) && (inputs.mouse.position.inside_rect? state.grid_border))~
- Inside source: true
*** True Line Result
elsif ((state.mouse_dragging) && (inputs.mouse.position.inside_rect? state.grid_border))
** Processing line: ~ search_lines(inputs.mouse.position, :drag)~
- Inside source: true
*** True Line Result
search_lines(inputs.mouse.position, :drag)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Changes grid's position on screen by moving it up, down, left, or right.~
- Inside source: true
*** True Line Result
# Changes grid's position on screen by moving it up, down, left, or right.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # centerX is incremented by speed if the "d" key is pressed and if that sum is less than~
- Inside source: true
*** True Line Result
# centerX is incremented by speed if the "d" key is pressed and if that sum is less than
** Processing line: ~ # the original left side of the center plus half the grid, minus half the top border of grid.~
- Inside source: true
*** True Line Result
# the original left side of the center plus half the grid, minus half the top border of grid.
** Processing line: ~ # MOVES GRID RIGHT (increasing x)~
- Inside source: true
*** True Line Result
# MOVES GRID RIGHT (increasing x)
** Processing line: ~ state.centerX += state.speed if inputs.keyboard.key_held.d &&~
- Inside source: true
*** True Line Result
state.centerX += state.speed if inputs.keyboard.key_held.d &&
** Processing line: ~ (state.centerX + state.speed) < state.originalCenter[0] + (state.gridSize / 2) - (state.grid_border[2] / 2)~
- Inside source: true
*** True Line Result
(state.centerX + state.speed) < state.originalCenter[0] + (state.gridSize / 2) - (state.grid_border[2] / 2)
** Processing line: ~ # centerX is decremented by speed if the "a" key is pressed and if that difference is greater than~
- Inside source: true
*** True Line Result
# centerX is decremented by speed if the "a" key is pressed and if that difference is greater than
** Processing line: ~ # the original left side of the center minus half the grid, plus half the top border of grid.~
- Inside source: true
*** True Line Result
# the original left side of the center minus half the grid, plus half the top border of grid.
** Processing line: ~ # MOVES GRID LEFT (decreasing x)~
- Inside source: true
*** True Line Result
# MOVES GRID LEFT (decreasing x)
** Processing line: ~ state.centerX -= state.speed if inputs.keyboard.key_held.a &&~
- Inside source: true
*** True Line Result
state.centerX -= state.speed if inputs.keyboard.key_held.a &&
** Processing line: ~ (state.centerX - state.speed) > state.originalCenter[0] - (state.gridSize / 2) + (state.grid_border[2] / 2)~
- Inside source: true
*** True Line Result
(state.centerX - state.speed) > state.originalCenter[0] - (state.gridSize / 2) + (state.grid_border[2] / 2)
** Processing line: ~ # centerY is incremented by speed if the "w" key is pressed and if that sum is less than~
- Inside source: true
*** True Line Result
# centerY is incremented by speed if the "w" key is pressed and if that sum is less than
** Processing line: ~ # the original bottom of the center plus half the grid, minus half the right border of grid.~
- Inside source: true
*** True Line Result
# the original bottom of the center plus half the grid, minus half the right border of grid.
** Processing line: ~ # MOVES GRID UP (increasing y)~
- Inside source: true
*** True Line Result
# MOVES GRID UP (increasing y)
** Processing line: ~ state.centerY += state.speed if inputs.keyboard.key_held.w &&~
- Inside source: true
*** True Line Result
state.centerY += state.speed if inputs.keyboard.key_held.w &&
** Processing line: ~ (state.centerY + state.speed) < state.originalCenter[1] + (state.gridSize / 2) - (state.grid_border[3] / 2)~
- Inside source: true
*** True Line Result
(state.centerY + state.speed) < state.originalCenter[1] + (state.gridSize / 2) - (state.grid_border[3] / 2)
** Processing line: ~ # centerY is decremented by speed if the "s" key is pressed and if the difference is greater than~
- Inside source: true
*** True Line Result
# centerY is decremented by speed if the "s" key is pressed and if the difference is greater than
** Processing line: ~ # the original bottom of the center minus half the grid, plus half the right border of grid.~
- Inside source: true
*** True Line Result
# the original bottom of the center minus half the grid, plus half the right border of grid.
** Processing line: ~ # MOVES GRID DOWN (decreasing y)~
- Inside source: true
*** True Line Result
# MOVES GRID DOWN (decreasing y)
** Processing line: ~ state.centerY -= state.speed if inputs.keyboard.key_held.s &&~
- Inside source: true
*** True Line Result
state.centerY -= state.speed if inputs.keyboard.key_held.s &&
** Processing line: ~ (state.centerY - state.speed) > state.originalCenter[1] - (state.gridSize / 2) + (state.grid_border[3] / 2)~
- Inside source: true
*** True Line Result
(state.centerY - state.speed) > state.originalCenter[1] - (state.gridSize / 2) + (state.grid_border[3] / 2)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Performs calculations on the gridX and gridY collections, and sets values.~
- Inside source: true
*** True Line Result
# Performs calculations on the gridX and gridY collections, and sets values.
** Processing line: ~ # Sets the definition of a grid box, including the image that it is filled with.~
- Inside source: true
*** True Line Result
# Sets the definition of a grid box, including the image that it is filled with.
** Processing line: ~ def search_lines (point, input_type)~
- Inside source: true
*** True Line Result
def search_lines (point, input_type)
** Processing line: ~ point.x += state.centerX - 630 # increments x and y~
- Inside source: true
*** True Line Result
point.x += state.centerX - 630 # increments x and y
** Processing line: ~ point.y += state.centerY - 360~
- Inside source: true
*** True Line Result
point.y += state.centerY - 360
** Processing line: ~ findX = 0~
- Inside source: true
*** True Line Result
findX = 0
** Processing line: ~ findY = 0~
- Inside source: true
*** True Line Result
findY = 0
** Processing line: ~ increment = state.gridSize / state.lineQuantity # divides grid by number of separators~
- Inside source: true
*** True Line Result
increment = state.gridSize / state.lineQuantity # divides grid by number of separators
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.gridX.map do # perform an action on every element of collection~
- Inside source: true
*** True Line Result
state.gridX.map do # perform an action on every element of collection
** Processing line: ~ |x|~
- Inside source: true
*** True Line Result
|x|
** Processing line: ~ # findX increments x by 10 if point.x is less than that sum and findX is currently 0~
- Inside source: true
*** True Line Result
# findX increments x by 10 if point.x is less than that sum and findX is currently 0
** Processing line: ~ findX = x + 10 if point.x < (x + 10) && findX == 0~
- Inside source: true
*** True Line Result
findX = x + 10 if point.x < (x + 10) && findX == 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.gridY.map do~
- Inside source: true
*** True Line Result
state.gridY.map do
** Processing line: ~ |y|~
- Inside source: true
*** True Line Result
|y|
** Processing line: ~ # findY is set to y if point.y is less than that value and findY is currently 0~
- Inside source: true
*** True Line Result
# findY is set to y if point.y is less than that value and findY is currently 0
** Processing line: ~ findY = y if point.y < (y) && findY == 0~
- Inside source: true
*** True Line Result
findY = y if point.y < (y) && findY == 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ # position of a box is denoted by bottom left corner, which is why the increment is being subtracted~
- Inside source: true
*** True Line Result
# position of a box is denoted by bottom left corner, which is why the increment is being subtracted
** Processing line: ~ grid_box = [findX - (increment.ceil), findY - (increment.ceil), increment.ceil, increment.ceil,~
- Inside source: true
*** True Line Result
grid_box = [findX - (increment.ceil), findY - (increment.ceil), increment.ceil, increment.ceil,
** Processing line: ~ "sprites/image" + state.tileSelected.to_s + ".png"] # sets sprite definition~
- Inside source: true
*** True Line Result
"sprites/image" + state.tileSelected.to_s + ".png"] # sets sprite definition
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if input_type == :click # if user clicks their mouse~
- Inside source: true
*** True Line Result
if input_type == :click # if user clicks their mouse
** Processing line: ~ if state.filled_squares.include? grid_box # if grid box is already filled in~
- Inside source: true
*** True Line Result
if state.filled_squares.include? grid_box # if grid box is already filled in
** Processing line: ~ state.filled_squares.delete grid_box # box is cleared and removed from filled_squares~
- Inside source: true
*** True Line Result
state.filled_squares.delete grid_box # box is cleared and removed from filled_squares
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.filled_squares << grid_box # otherwise, box is filled in and added to filled_squares~
- Inside source: true
*** True Line Result
state.filled_squares << grid_box # otherwise, box is filled in and added to filled_squares
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ elsif input_type == :drag # if user drags mouse~
- Inside source: true
*** True Line Result
elsif input_type == :drag # if user drags mouse
** Processing line: ~ unless state.filled_squares.include? grid_box # unless grid box dragged over is already filled in~
- Inside source: true
*** True Line Result
unless state.filled_squares.include? grid_box # unless grid box dragged over is already filled in
** Processing line: ~ state.filled_squares << grid_box # box is filled in and added to filled_squares~
- Inside source: true
*** True Line Result
state.filled_squares << grid_box # box is filled in and added to filled_squares
** 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: ~ # Creates a "Clear" button using labels and borders.~
- Inside source: true
*** True Line Result
# Creates a "Clear" button using labels and borders.
** Processing line: ~ def draw_buttons~
- Inside source: true
*** True Line Result
def draw_buttons
** Processing line: ~ x, y, w, h = 390, 50, 240, 50~
- Inside source: true
*** True Line Result
x, y, w, h = 390, 50, 240, 50
** Processing line: ~ state.clear_button ||= state.new_entity(:button_with_fade)~
- Inside source: true
*** True Line Result
state.clear_button ||= state.new_entity(:button_with_fade)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # x and y positions are set to display "Clear" label in center of the button~
- Inside source: true
*** True Line Result
# x and y positions are set to display "Clear" label in center of the button
** Processing line: ~ # Try changing first two parameters to simply x, y and see what happens to the text placement~
- Inside source: true
*** True Line Result
# Try changing first two parameters to simply x, y and see what happens to the text placement
** Processing line: ~ state.clear_button.label ||= [x + w.half, y + h.half + 10, "Clear", 0, 1]~
- Inside source: true
*** True Line Result
state.clear_button.label ||= [x + w.half, y + h.half + 10, "Clear", 0, 1]
** Processing line: ~ state.clear_button.border ||= [x, y, w, h] # definition of button's border~
- Inside source: true
*** True Line Result
state.clear_button.border ||= [x, y, w, h] # definition of button's border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If the mouse is clicked inside the borders of the clear button~
- Inside source: true
*** True Line Result
# If the mouse is clicked inside the borders of the clear button
** Processing line: ~ if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.clear_button.border)~
- Inside source: true
*** True Line Result
if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.clear_button.border)
** Processing line: ~ state.clear_button.clicked_at = inputs.mouse.click.created_at # value is frame of mouse click~
- Inside source: true
*** True Line Result
state.clear_button.clicked_at = inputs.mouse.click.created_at # value is frame of mouse click
** Processing line: ~ state.filled_squares.clear # filled squares collection is emptied (squares are cleared)~
- Inside source: true
*** True Line Result
state.filled_squares.clear # filled squares collection is emptied (squares are cleared)
** Processing line: ~ inputs.mouse.previous_click = nil # no previous click~
- Inside source: true
*** True Line Result
inputs.mouse.previous_click = nil # no previous click
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << state.clear_button.label # outputs clear button~
- Inside source: true
*** True Line Result
outputs.labels << state.clear_button.label # outputs clear button
** Processing line: ~ outputs.borders << state.clear_button.border~
- Inside source: true
*** True Line Result
outputs.borders << state.clear_button.border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # When the clear button is clicked, the color of the button changes~
- Inside source: true
*** True Line Result
# When the clear button is clicked, the color of the button changes
** Processing line: ~ # and the transparency changes, as well. If you change the time from~
- Inside source: true
*** True Line Result
# and the transparency changes, as well. If you change the time from
** Processing line: ~ # 0.25.seconds to 1.25.seconds or more, the change will last longer.~
- Inside source: true
*** True Line Result
# 0.25.seconds to 1.25.seconds or more, the change will last longer.
** Processing line: ~ if state.clear_button.clicked_at~
- Inside source: true
*** True Line Result
if state.clear_button.clicked_at
** Processing line: ~ outputs.solids << [x, y, w, h, 0, 180, 80, 255 * state.clear_button.clicked_at.ease(0.25.seconds, :flip)]~
- Inside source: true
*** True Line Result
outputs.solids << [x, y, w, h, 0, 180, 80, 255 * state.clear_button.clicked_at.ease(0.25.seconds, :flip)]
** 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: ~ $tile_editor = TileEditor.new~
- Inside source: true
*** True Line Result
$tile_editor = TileEditor.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: ~ $tile_editor.inputs = args.inputs~
- Inside source: true
*** True Line Result
$tile_editor.inputs = args.inputs
** Processing line: ~ $tile_editor.grid = args.grid~
- Inside source: true
*** True Line Result
$tile_editor.grid = args.grid
** Processing line: ~ $tile_editor.args = args~
- Inside source: true
*** True Line Result
$tile_editor.args = args
** Processing line: ~ $tile_editor.outputs = args.outputs~
- Inside source: true
*** True Line Result
$tile_editor.outputs = args.outputs
** Processing line: ~ $tile_editor.state = args.state~
- Inside source: true
*** True Line Result
$tile_editor.state = args.state
** Processing line: ~ $tile_editor.tick~
- Inside source: true
*** True Line Result
$tile_editor.tick
** Processing line: ~ tick_instructions args, "Roll your own tile editor. CLICK to select a sprite. CLICK in grid to place sprite. WASD to move around."~
- Inside source: true
*** True Line Result
tick_instructions args, "Roll your own tile editor. CLICK to select a sprite. CLICK in grid to place sprite. WASD to move around."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.mouse.click ||~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click ||
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.directional_vector ||
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.enter ||
** Processing line: ~ args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.escape
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Lowrez - Resolution 64x64 - lowrez.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Lowrez - Resolution 64x64 - lowrez.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_lowrez/resolution_64x64/app/lowrez.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_lowrez/resolution_64x64/app/lowrez.rb
** Processing line: ~ # Emulation of a 64x64 canvas. Don't change this file unless you know what you're doing :-)~
- Inside source: true
*** True Line Result
# Emulation of a 64x64 canvas. Don't change this file unless you know what you're doing :-)
** Processing line: ~ # Head over to main.rb and study the code there.~
- Inside source: true
*** True Line Result
# Head over to main.rb and study the code there.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ LOWREZ_SIZE = 64~
- Inside source: true
*** True Line Result
LOWREZ_SIZE = 64
** Processing line: ~ LOWREZ_ZOOM = 10~
- Inside source: true
*** True Line Result
LOWREZ_ZOOM = 10
** Processing line: ~ LOWREZ_ZOOMED_SIZE = LOWREZ_SIZE * LOWREZ_ZOOM~
- Inside source: true
*** True Line Result
LOWREZ_ZOOMED_SIZE = LOWREZ_SIZE * LOWREZ_ZOOM
** Processing line: ~ LOWREZ_X_OFFSET = (1280 - LOWREZ_ZOOMED_SIZE).half~
- Inside source: true
*** True Line Result
LOWREZ_X_OFFSET = (1280 - LOWREZ_ZOOMED_SIZE).half
** Processing line: ~ LOWREZ_Y_OFFSET = ( 720 - LOWREZ_ZOOMED_SIZE).half~
- Inside source: true
*** True Line Result
LOWREZ_Y_OFFSET = ( 720 - LOWREZ_ZOOMED_SIZE).half
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ LOWREZ_FONT_XL = -1~
- Inside source: true
*** True Line Result
LOWREZ_FONT_XL = -1
** Processing line: ~ LOWREZ_FONT_XL_HEIGHT = 20~
- Inside source: true
*** True Line Result
LOWREZ_FONT_XL_HEIGHT = 20
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ LOWREZ_FONT_LG = -3.5~
- Inside source: true
*** True Line Result
LOWREZ_FONT_LG = -3.5
** Processing line: ~ LOWREZ_FONT_LG_HEIGHT = 15~
- Inside source: true
*** True Line Result
LOWREZ_FONT_LG_HEIGHT = 15
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ LOWREZ_FONT_MD = -6~
- Inside source: true
*** True Line Result
LOWREZ_FONT_MD = -6
** Processing line: ~ LOWREZ_FONT_MD_HEIGHT = 10~
- Inside source: true
*** True Line Result
LOWREZ_FONT_MD_HEIGHT = 10
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ LOWREZ_FONT_SM = -8.5~
- Inside source: true
*** True Line Result
LOWREZ_FONT_SM = -8.5
** Processing line: ~ LOWREZ_FONT_SM_HEIGHT = 5~
- Inside source: true
*** True Line Result
LOWREZ_FONT_SM_HEIGHT = 5
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ LOWREZ_FONT_PATH = 'fonts/lowrez.ttf'~
- Inside source: true
*** True Line Result
LOWREZ_FONT_PATH = 'fonts/lowrez.ttf'
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class LowrezOutputs~
- Inside source: true
*** True Line Result
class LowrezOutputs
** Processing line: ~ attr_accessor :width, :height~
- Inside source: true
*** True Line Result
attr_accessor :width, :height
** 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: ~ @background_color ||= [0, 0, 0]~
- Inside source: true
*** True Line Result
@background_color ||= [0, 0, 0]
** Processing line: ~ @args.outputs.background_color = @background_color~
- Inside source: true
*** True Line Result
@args.outputs.background_color = @background_color
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def background_color~
- Inside source: true
*** True Line Result
def background_color
** Processing line: ~ @background_color ||= [0, 0, 0]~
- Inside source: true
*** True Line Result
@background_color ||= [0, 0, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def background_color= opts~
- Inside source: true
*** True Line Result
def background_color= opts
** Processing line: ~ @background_color = opts~
- Inside source: true
*** True Line Result
@background_color = opts
** Processing line: ~ @args.outputs.background_color = @background_color~
- Inside source: true
*** True Line Result
@args.outputs.background_color = @background_color
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs_lowrez.solids << [0, 0, LOWREZ_SIZE, LOWREZ_SIZE, @background_color]~
- Inside source: true
*** True Line Result
outputs_lowrez.solids << [0, 0, LOWREZ_SIZE, LOWREZ_SIZE, @background_color]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def outputs_lowrez~
- Inside source: true
*** True Line Result
def outputs_lowrez
** Processing line: ~ return @args.outputs if @args.state.tick_count <= 0~
- Inside source: true
*** True Line Result
return @args.outputs if @args.state.tick_count <= 0
** Processing line: ~ return @args.outputs[:lowrez]~
- Inside source: true
*** True Line Result
return @args.outputs[:lowrez]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def solids~
- Inside source: true
*** True Line Result
def solids
** Processing line: ~ outputs_lowrez.solids~
- Inside source: true
*** True Line Result
outputs_lowrez.solids
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def borders~
- Inside source: true
*** True Line Result
def borders
** Processing line: ~ outputs_lowrez.borders~
- Inside source: true
*** True Line Result
outputs_lowrez.borders
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def sprites~
- Inside source: true
*** True Line Result
def sprites
** Processing line: ~ outputs_lowrez.sprites~
- Inside source: true
*** True Line Result
outputs_lowrez.sprites
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def labels~
- Inside source: true
*** True Line Result
def labels
** Processing line: ~ outputs_lowrez.labels~
- Inside source: true
*** True Line Result
outputs_lowrez.labels
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def default_label~
- Inside source: true
*** True Line Result
def default_label
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: 0,~
- Inside source: true
*** True Line Result
x: 0,
** Processing line: ~ y: 63,~
- Inside source: true
*** True Line Result
y: 63,
** Processing line: ~ text: "",~
- Inside source: true
*** True Line Result
text: "",
** Processing line: ~ size_enum: LOWREZ_FONT_SM,~
- Inside source: true
*** True Line Result
size_enum: LOWREZ_FONT_SM,
** Processing line: ~ alignment_enum: 0,~
- Inside source: true
*** True Line Result
alignment_enum: 0,
** Processing line: ~ r: 0,~
- Inside source: true
*** True Line Result
r: 0,
** Processing line: ~ g: 0,~
- Inside source: true
*** True Line Result
g: 0,
** Processing line: ~ b: 0,~
- Inside source: true
*** True Line Result
b: 0,
** Processing line: ~ a: 255,~
- Inside source: true
*** True Line Result
a: 255,
** Processing line: ~ font: LOWREZ_FONT_PATH~
- Inside source: true
*** True Line Result
font: LOWREZ_FONT_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 lines~
- Inside source: true
*** True Line Result
def lines
** Processing line: ~ outputs_lowrez.lines~
- Inside source: true
*** True Line Result
outputs_lowrez.lines
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def primitives~
- Inside source: true
*** True Line Result
def primitives
** Processing line: ~ outputs_lowrez.primitives~
- Inside source: true
*** True Line Result
outputs_lowrez.primitives
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def click~
- Inside source: true
*** True Line Result
def click
** Processing line: ~ return nil unless @args.inputs.mouse.click~
- Inside source: true
*** True Line Result
return nil unless @args.inputs.mouse.click
** Processing line: ~ mouse~
- Inside source: true
*** True Line Result
mouse
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def mouse_click~
- Inside source: true
*** True Line Result
def mouse_click
** Processing line: ~ click~
- Inside source: true
*** True Line Result
click
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def mouse_down~
- Inside source: true
*** True Line Result
def mouse_down
** Processing line: ~ @args.inputs.mouse.down~
- Inside source: true
*** True Line Result
@args.inputs.mouse.down
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def mouse_up~
- Inside source: true
*** True Line Result
def mouse_up
** Processing line: ~ @args.inputs.mouse.up~
- Inside source: true
*** True Line Result
@args.inputs.mouse.up
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def mouse~
- Inside source: true
*** True Line Result
def mouse
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ ((@args.inputs.mouse.x - LOWREZ_X_OFFSET).idiv(LOWREZ_ZOOM)),~
- Inside source: true
*** True Line Result
((@args.inputs.mouse.x - LOWREZ_X_OFFSET).idiv(LOWREZ_ZOOM)),
** Processing line: ~ ((@args.inputs.mouse.y - LOWREZ_Y_OFFSET).idiv(LOWREZ_ZOOM))~
- Inside source: true
*** True Line Result
((@args.inputs.mouse.y - LOWREZ_Y_OFFSET).idiv(LOWREZ_ZOOM))
** 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 mouse_position~
- Inside source: true
*** True Line Result
def mouse_position
** Processing line: ~ mouse~
- Inside source: true
*** True Line Result
mouse
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def keyboard~
- Inside source: true
*** True Line Result
def keyboard
** Processing line: ~ @args.inputs.keyboard~
- Inside source: true
*** True Line Result
@args.inputs.keyboard
** 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: ~ class GTK::Args~
- Inside source: true
*** True Line Result
class GTK::Args
** Processing line: ~ def init_lowrez~
- Inside source: true
*** True Line Result
def init_lowrez
** Processing line: ~ return if @lowrez~
- Inside source: true
*** True Line Result
return if @lowrez
** Processing line: ~ @lowrez = LowrezOutputs.new self~
- Inside source: true
*** True Line Result
@lowrez = LowrezOutputs.new self
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def lowrez~
- Inside source: true
*** True Line Result
def lowrez
** Processing line: ~ @lowrez~
- Inside source: true
*** True Line Result
@lowrez
** 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: ~ module GTK~
- Inside source: true
*** True Line Result
module GTK
** Processing line: ~ class Runtime~
- Inside source: true
*** True Line Result
class Runtime
** Processing line: ~ alias_method :__original_tick_core__, :tick_core unless Runtime.instance_methods.include?(:__original_tick_core__)~
- Inside source: true
*** True Line Result
alias_method :__original_tick_core__, :tick_core unless Runtime.instance_methods.include?(:__original_tick_core__)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_core~
- Inside source: true
*** True Line Result
def tick_core
** Processing line: ~ @args.init_lowrez~
- Inside source: true
*** True Line Result
@args.init_lowrez
** Processing line: ~ __original_tick_core__~
- Inside source: true
*** True Line Result
__original_tick_core__
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return if @args.state.tick_count <= 0~
- Inside source: true
*** True Line Result
return if @args.state.tick_count <= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @args.render_target(:lowrez)~
- Inside source: true
*** True Line Result
@args.render_target(:lowrez)
** Processing line: ~ .labels~
- Inside source: true
*** True Line Result
.labels
** Processing line: ~ .each do |l|~
- Inside source: true
*** True Line Result
.each do |l|
** Processing line: ~ l.y += 1~
- Inside source: true
*** True Line Result
l.y += 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @args.render_target(:lowrez)~
- Inside source: true
*** True Line Result
@args.render_target(:lowrez)
** Processing line: ~ .lines~
- Inside source: true
*** True Line Result
.lines
** Processing line: ~ .each do |l|~
- Inside source: true
*** True Line Result
.each do |l|
** Processing line: ~ l.y += 1~
- Inside source: true
*** True Line Result
l.y += 1
** Processing line: ~ l.y2 += 1~
- Inside source: true
*** True Line Result
l.y2 += 1
** Processing line: ~ l.y2 += 1 if l.y1 != l.y2~
- Inside source: true
*** True Line Result
l.y2 += 1 if l.y1 != l.y2
** Processing line: ~ l.x2 += 1 if l.x1 != l.x2~
- Inside source: true
*** True Line Result
l.x2 += 1 if l.x1 != l.x2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @args.outputs~
- Inside source: true
*** True Line Result
@args.outputs
** Processing line: ~ .sprites << { x: 320,~
- Inside source: true
*** True Line Result
.sprites << { x: 320,
** Processing line: ~ y: 40,~
- Inside source: true
*** True Line Result
y: 40,
** Processing line: ~ w: 640,~
- Inside source: true
*** True Line Result
w: 640,
** Processing line: ~ h: 640,~
- Inside source: true
*** True Line Result
h: 640,
** Processing line: ~ source_x: 0,~
- Inside source: true
*** True Line Result
source_x: 0,
** Processing line: ~ source_y: 0,~
- Inside source: true
*** True Line Result
source_y: 0,
** Processing line: ~ source_w: 64,~
- Inside source: true
*** True Line Result
source_w: 64,
** Processing line: ~ source_h: 64,~
- Inside source: true
*** True Line Result
source_h: 64,
** Processing line: ~ path: :lowrez }~
- Inside source: true
*** True Line Result
path: :lowrez }
** 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: ~* Lowrez - Resolution 64x64 - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Lowrez - Resolution 64x64 - 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_lowrez/resolution_64x64/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_lowrez/resolution_64x64/app/main.rb
** Processing line: ~ require 'app/lowrez.rb'~
- Inside source: true
*** True Line Result
require 'app/lowrez.rb'
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ # How to set the background color~
- Inside source: true
*** True Line Result
# How to set the background color
** Processing line: ~ args.lowrez.background_color = [255, 255, 255]~
- Inside source: true
*** True Line Result
args.lowrez.background_color = [255, 255, 255]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # ==== HELLO WORLD ======================================================~
- Inside source: true
*** True Line Result
# ==== HELLO WORLD ======================================================
** Processing line: ~ # Steps to get started:~
- Inside source: true
*** True Line Result
# Steps to get started:
** Processing line: ~ # 1. ~def tick args~ is the entry point for your game.~
- Inside source: true
*** True Line Result
# 1. ~def tick args~ is the entry point for your game.
** Processing line: ~ # 2. There are quite a few code samples below, remove the "##"~
- Inside source: true
*** True Line Result
# 2. There are quite a few code samples below, remove the "##"
** Processing line: ~ # before each line and save the file to see the changes.~
- Inside source: true
*** True Line Result
# before each line and save the file to see the changes.
** Processing line: ~ # 3. 0, 0 is in bottom left and 63, 63 is in top right corner.~
- Inside source: true
*** True Line Result
# 3. 0, 0 is in bottom left and 63, 63 is in top right corner.
** Processing line: ~ # 4. Be sure to come to the discord channel if you need~
- Inside source: true
*** True Line Result
# 4. Be sure to come to the discord channel if you need
** Processing line: ~ # more help: [[http://discord.dragonruby.org]].~
- Inside source: true
*** True Line Result
# more help: [[http://discord.dragonruby.org]].
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Commenting and uncommenting code:~
- Inside source: true
*** True Line Result
# Commenting and uncommenting code:
** Processing line: ~ # - Add a "#" infront of lines to comment out code~
- Inside source: true
*** True Line Result
# - Add a "#" infront of lines to comment out code
** Processing line: ~ # - Remove the "#" infront of lines to comment out code~
- Inside source: true
*** True Line Result
# - Remove the "#" infront of lines to comment out code
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Invoke the hello_world subroutine/method~
- Inside source: true
*** True Line Result
# Invoke the hello_world subroutine/method
** Processing line: ~ hello_world args # <---- add a "#" to the beginning of the line to stop running this subroutine/method.~
- Inside source: true
*** True Line Result
hello_world args # <---- add a "#" to the beginning of the line to stop running this subroutine/method.
** 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: ~ # ==== HOW TO RENDER A LABEL ============================================~
- Inside source: true
*** True Line Result
# ==== HOW TO RENDER A LABEL ============================================
** Processing line: ~ # Uncomment the line below to invoke the how_to_render_a_label subroutine/method.~
- Inside source: true
*** True Line Result
# Uncomment the line below to invoke the how_to_render_a_label subroutine/method.
** Processing line: ~ # Note: The method is defined in this file with the signature ~def how_to_render_a_label args~~
- Inside source: true
*** True Line Result
# Note: The method is defined in this file with the signature ~def how_to_render_a_label args~
** Processing line: ~ # Scroll down to the method to see the details.~
- Inside source: true
*** True Line Result
# Scroll down to the method to see the details.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Remove the "#" at the beginning of the line below~
- Inside source: true
*** True Line Result
# Remove the "#" at the beginning of the line below
** Processing line: ~ # how_to_render_a_label args # <---- remove the "#" at the begging of this line to run the method~
- Inside source: true
*** True Line Result
# how_to_render_a_label args # <---- remove the "#" at the begging of this line to run the method
** 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: ~ # ==== HOW TO RENDER A FILLED SQUARE (SOLID) ============================~
- Inside source: true
*** True Line Result
# ==== HOW TO RENDER A FILLED SQUARE (SOLID) ============================
** Processing line: ~ # Remove the "#" at the beginning of the line below~
- Inside source: true
*** True Line Result
# Remove the "#" at the beginning of the line below
** Processing line: ~ # how_to_render_solids args~
- Inside source: true
*** True Line Result
# how_to_render_solids args
** 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: ~ # ==== HOW TO RENDER AN UNFILLED SQUARE (BORDER) ========================~
- Inside source: true
*** True Line Result
# ==== HOW TO RENDER AN UNFILLED SQUARE (BORDER) ========================
** Processing line: ~ # Remove the "#" at the beginning of the line below~
- Inside source: true
*** True Line Result
# Remove the "#" at the beginning of the line below
** Processing line: ~ # how_to_render_borders args~
- Inside source: true
*** True Line Result
# how_to_render_borders args
** 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: ~ # ==== HOW TO RENDER A LINE =============================================~
- Inside source: true
*** True Line Result
# ==== HOW TO RENDER A LINE =============================================
** Processing line: ~ # Remove the "#" at the beginning of the line below~
- Inside source: true
*** True Line Result
# Remove the "#" at the beginning of the line below
** Processing line: ~ # how_to_render_lines args~
- Inside source: true
*** True Line Result
# how_to_render_lines args
** 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: ~ # == HOW TO RENDER A SPRITE =============================================~
- Inside source: true
*** True Line Result
# == HOW TO RENDER A SPRITE =============================================
** Processing line: ~ # Remove the "#" at the beginning of the line below~
- Inside source: true
*** True Line Result
# Remove the "#" at the beginning of the line below
** Processing line: ~ # how_to_render_sprites args~
- Inside source: true
*** True Line Result
# how_to_render_sprites args
** 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: ~ # ==== HOW TO MOVE A SPRITE BASED OFF OF USER INPUT =====================~
- Inside source: true
*** True Line Result
# ==== HOW TO MOVE A SPRITE BASED OFF OF USER INPUT =====================
** Processing line: ~ # Remove the "#" at the beginning of the line below~
- Inside source: true
*** True Line Result
# Remove the "#" at the beginning of the line below
** Processing line: ~ # how_to_move_a_sprite args~
- Inside source: true
*** True Line Result
# how_to_move_a_sprite args
** 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: ~ # ==== HOW TO ANIMATE A SPRITE (SEPERATE PNGS) ==========================~
- Inside source: true
*** True Line Result
# ==== HOW TO ANIMATE A SPRITE (SEPERATE PNGS) ==========================
** Processing line: ~ # Remove the "#" at the beginning of the line below~
- Inside source: true
*** True Line Result
# Remove the "#" at the beginning of the line below
** Processing line: ~ # how_to_animate_a_sprite args~
- Inside source: true
*** True Line Result
# how_to_animate_a_sprite args
** 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: ~ # ==== HOW TO ANIMATE A SPRITE (SPRITE SHEET) ===========================~
- Inside source: true
*** True Line Result
# ==== HOW TO ANIMATE A SPRITE (SPRITE SHEET) ===========================
** Processing line: ~ # Remove the "#" at the beginning of the line below~
- Inside source: true
*** True Line Result
# Remove the "#" at the beginning of the line below
** Processing line: ~ # how_to_animate_a_sprite_sheet args~
- Inside source: true
*** True Line Result
# how_to_animate_a_sprite_sheet args
** 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: ~ # ==== HOW TO DETERMINE COLLISION =============================================~
- Inside source: true
*** True Line Result
# ==== HOW TO DETERMINE COLLISION =============================================
** Processing line: ~ # Remove the "#" at the beginning of the line below~
- Inside source: true
*** True Line Result
# Remove the "#" at the beginning of the line below
** Processing line: ~ # how_to_determine_collision args~
- Inside source: true
*** True Line Result
# how_to_determine_collision args
** 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: ~ # ==== HOW TO CREATE BUTTONS ==================================================~
- Inside source: true
*** True Line Result
# ==== HOW TO CREATE BUTTONS ==================================================
** Processing line: ~ # Remove the "#" at the beginning of the line below~
- Inside source: true
*** True Line Result
# Remove the "#" at the beginning of the line below
** Processing line: ~ # how_to_create_buttons args~
- Inside source: true
*** True Line Result
# how_to_create_buttons args
** 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: ~ # ==== The line below renders a debug grid, mouse information, and current tick~
- Inside source: true
*** True Line Result
# ==== The line below renders a debug grid, mouse information, and current tick
** Processing line: ~ render_debug args~
- Inside source: true
*** True Line Result
render_debug args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def hello_world args~
- Inside source: true
*** True Line Result
def hello_world args
** Processing line: ~ args.lowrez.solids << { x: 0, y: 64, w: 10, h: 10, r: 255 }~
- Inside source: true
*** True Line Result
args.lowrez.solids << { x: 0, y: 64, w: 10, h: 10, r: 255 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.lowrez.labels << {~
- Inside source: true
*** True Line Result
args.lowrez.labels << {
** Processing line: ~ x: 32,~
- Inside source: true
*** True Line Result
x: 32,
** Processing line: ~ y: 63,~
- Inside source: true
*** True Line Result
y: 63,
** Processing line: ~ text: "lowrezjam 2020",~
- Inside source: true
*** True Line Result
text: "lowrezjam 2020",
** Processing line: ~ size_enum: LOWREZ_FONT_SM,~
- Inside source: true
*** True Line Result
size_enum: LOWREZ_FONT_SM,
** Processing line: ~ alignment_enum: 1,~
- Inside source: true
*** True Line Result
alignment_enum: 1,
** Processing line: ~ r: 0,~
- Inside source: true
*** True Line Result
r: 0,
** Processing line: ~ g: 0,~
- Inside source: true
*** True Line Result
g: 0,
** Processing line: ~ b: 0,~
- Inside source: true
*** True Line Result
b: 0,
** Processing line: ~ a: 255,~
- Inside source: true
*** True Line Result
a: 255,
** Processing line: ~ font: LOWREZ_FONT_PATH~
- Inside source: true
*** True Line Result
font: LOWREZ_FONT_PATH
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.lowrez.sprites << {~
- Inside source: true
*** True Line Result
args.lowrez.sprites << {
** Processing line: ~ x: 32 - 10,~
- Inside source: true
*** True Line Result
x: 32 - 10,
** Processing line: ~ y: 32 - 10,~
- Inside source: true
*** True Line Result
y: 32 - 10,
** Processing line: ~ w: 20,~
- Inside source: true
*** True Line Result
w: 20,
** Processing line: ~ h: 20,~
- Inside source: true
*** True Line Result
h: 20,
** Processing line: ~ path: 'sprites/lowrez-ship-blue.png',~
- Inside source: true
*** True Line Result
path: 'sprites/lowrez-ship-blue.png',
** Processing line: ~ a: args.state.tick_count % 255,~
- Inside source: true
*** True Line Result
a: args.state.tick_count % 255,
** Processing line: ~ angle: args.state.tick_count % 360~
- Inside source: true
*** True Line Result
angle: args.state.tick_count % 360
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # =======================================================================~
- Inside source: true
*** True Line Result
# =======================================================================
** Processing line: ~ # ==== HOW TO RENDER A LABEL ============================================~
- Inside source: true
*** True Line Result
# ==== HOW TO RENDER A LABEL ============================================
** Processing line: ~ # =======================================================================~
- Inside source: true
*** True Line Result
# =======================================================================
** Processing line: ~ def how_to_render_a_label args~
- Inside source: true
*** True Line Result
def how_to_render_a_label args
** Processing line: ~ # NOTE: Text is aligned from the TOP LEFT corner~
- Inside source: true
*** True Line Result
# NOTE: Text is aligned from the TOP LEFT corner
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render an EXTRA LARGE/XL label (remove the "#" in front of each line below)~
- Inside source: true
*** True Line Result
# Render an EXTRA LARGE/XL label (remove the "#" in front of each line below)
** Processing line: ~ args.lowrez.labels << { x: 0, y: 57, text: "Hello World",~
- Inside source: true
*** True Line Result
args.lowrez.labels << { x: 0, y: 57, text: "Hello World",
** Processing line: ~ size_enum: LOWREZ_FONT_XL,~
- Inside source: true
*** True Line Result
size_enum: LOWREZ_FONT_XL,
** Processing line: ~ r: 0, g: 0, b: 0, a: 255,~
- Inside source: true
*** True Line Result
r: 0, g: 0, b: 0, a: 255,
** Processing line: ~ font: LOWREZ_FONT_PATH }~
- Inside source: true
*** True Line Result
font: LOWREZ_FONT_PATH }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a LARGE/LG label (remove the "#" in front of each line below)~
- Inside source: true
*** True Line Result
# Render a LARGE/LG label (remove the "#" in front of each line below)
** Processing line: ~ args.lowrez.labels << { x: 0, y: 36, text: "Hello World",~
- Inside source: true
*** True Line Result
args.lowrez.labels << { x: 0, y: 36, text: "Hello World",
** Processing line: ~ size_enum: LOWREZ_FONT_LG,~
- Inside source: true
*** True Line Result
size_enum: LOWREZ_FONT_LG,
** Processing line: ~ r: 0, g: 0, b: 0, a: 255,~
- Inside source: true
*** True Line Result
r: 0, g: 0, b: 0, a: 255,
** Processing line: ~ font: LOWREZ_FONT_PATH }~
- Inside source: true
*** True Line Result
font: LOWREZ_FONT_PATH }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a MEDIUM/MD label (remove the "#" in front of each line below)~
- Inside source: true
*** True Line Result
# Render a MEDIUM/MD label (remove the "#" in front of each line below)
** Processing line: ~ args.lowrez.labels << { x: 0, y: 20, text: "Hello World",~
- Inside source: true
*** True Line Result
args.lowrez.labels << { x: 0, y: 20, text: "Hello World",
** Processing line: ~ size_enum: LOWREZ_FONT_MD,~
- Inside source: true
*** True Line Result
size_enum: LOWREZ_FONT_MD,
** Processing line: ~ r: 0, g: 0, b: 0, a: 255,~
- Inside source: true
*** True Line Result
r: 0, g: 0, b: 0, a: 255,
** Processing line: ~ font: LOWREZ_FONT_PATH }~
- Inside source: true
*** True Line Result
font: LOWREZ_FONT_PATH }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a SMALL/SM label (remove the "#" in front of each line below)~
- Inside source: true
*** True Line Result
# Render a SMALL/SM label (remove the "#" in front of each line below)
** Processing line: ~ args.lowrez.labels << { x: 0, y: 9, text: "Hello World",~
- Inside source: true
*** True Line Result
args.lowrez.labels << { x: 0, y: 9, text: "Hello World",
** Processing line: ~ size_enum: LOWREZ_FONT_SM,~
- Inside source: true
*** True Line Result
size_enum: LOWREZ_FONT_SM,
** Processing line: ~ r: 0, g: 0, b: 0, a: 255,~
- Inside source: true
*** True Line Result
r: 0, g: 0, b: 0, a: 255,
** Processing line: ~ font: LOWREZ_FONT_PATH }~
- Inside source: true
*** True Line Result
font: LOWREZ_FONT_PATH }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # You are provided args.lowrez.default_label which returns a Hash that you~
- Inside source: true
*** True Line Result
# You are provided args.lowrez.default_label which returns a Hash that you
** Processing line: ~ # can ~merge~ properties with~
- Inside source: true
*** True Line Result
# can ~merge~ properties with
** Processing line: ~ # Example 1~
- Inside source: true
*** True Line Result
# Example 1
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(text: "Default")~
- Inside source: true
*** True Line Result
.merge(text: "Default")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Example 2~
- Inside source: true
*** True Line Result
# Example 2
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 31,~
- Inside source: true
*** True Line Result
.merge(x: 31,
** Processing line: ~ text: "Default",~
- Inside source: true
*** True Line Result
text: "Default",
** Processing line: ~ r: 128,~
- Inside source: true
*** True Line Result
r: 128,
** Processing line: ~ g: 128,~
- Inside source: true
*** True Line Result
g: 128,
** Processing line: ~ b: 128)~
- Inside source: true
*** True Line Result
b: 128)
** 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: ~ ## # ==== HOW TO RENDER FILLED SQUARES (SOLIDS) ==================================~
- Inside source: true
*** True Line Result
## # ==== HOW TO RENDER FILLED SQUARES (SOLIDS) ==================================
** Processing line: ~ ## # =============================================================================~
- Inside source: true
*** True Line Result
## # =============================================================================
** Processing line: ~ def how_to_render_solids args~
- Inside source: true
*** True Line Result
def how_to_render_solids args
** Processing line: ~ # Render a red square at 0, 0 with a width and height of 1~
- Inside source: true
*** True Line Result
# Render a red square at 0, 0 with a width and height of 1
** Processing line: ~ args.lowrez.solids << { x: 0, y: 0, w: 1, h: 1, r: 255, g: 0, b: 0, a: 255 }~
- Inside source: true
*** True Line Result
args.lowrez.solids << { x: 0, y: 0, w: 1, h: 1, r: 255, g: 0, b: 0, a: 255 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a red square at 1, 1 with a width and height of 2~
- Inside source: true
*** True Line Result
# Render a red square at 1, 1 with a width and height of 2
** Processing line: ~ args.lowrez.solids << { x: 1, y: 1, w: 2, h: 2, r: 255, g: 0, b: 0, a: 255 }~
- Inside source: true
*** True Line Result
args.lowrez.solids << { x: 1, y: 1, w: 2, h: 2, r: 255, g: 0, b: 0, a: 255 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a red square at 3, 3 with a width and height of 3~
- Inside source: true
*** True Line Result
# Render a red square at 3, 3 with a width and height of 3
** Processing line: ~ args.lowrez.solids << { x: 3, y: 3, w: 3, h: 3, r: 255, g: 0, b: 0 }~
- Inside source: true
*** True Line Result
args.lowrez.solids << { x: 3, y: 3, w: 3, h: 3, r: 255, g: 0, b: 0 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a red square at 6, 6 with a width and height of 4~
- Inside source: true
*** True Line Result
# Render a red square at 6, 6 with a width and height of 4
** Processing line: ~ args.lowrez.solids << { x: 6, y: 6, w: 4, h: 4, r: 255, g: 0, b: 0 }~
- Inside source: true
*** True Line Result
args.lowrez.solids << { x: 6, y: 6, w: 4, h: 4, r: 255, g: 0, b: 0 }
** 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: ~ ## # ==== HOW TO RENDER UNFILLED SQUARES (BORDERS) ===============================~
- Inside source: true
*** True Line Result
## # ==== HOW TO RENDER UNFILLED SQUARES (BORDERS) ===============================
** Processing line: ~ ## # =============================================================================~
- Inside source: true
*** True Line Result
## # =============================================================================
** Processing line: ~ def how_to_render_borders args~
- Inside source: true
*** True Line Result
def how_to_render_borders args
** Processing line: ~ # Render a red square at 0, 0 with a width and height of 3~
- Inside source: true
*** True Line Result
# Render a red square at 0, 0 with a width and height of 3
** Processing line: ~ args.lowrez.borders << { x: 0, y: 0, w: 3, h: 3, r: 255, g: 0, b: 0, a: 255 }~
- Inside source: true
*** True Line Result
args.lowrez.borders << { x: 0, y: 0, w: 3, h: 3, r: 255, g: 0, b: 0, a: 255 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a red square at 3, 3 with a width and height of 3~
- Inside source: true
*** True Line Result
# Render a red square at 3, 3 with a width and height of 3
** Processing line: ~ args.lowrez.borders << { x: 3, y: 3, w: 4, h: 4, r: 255, g: 0, b: 0, a: 255 }~
- Inside source: true
*** True Line Result
args.lowrez.borders << { x: 3, y: 3, w: 4, h: 4, r: 255, g: 0, b: 0, a: 255 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a red square at 5, 5 with a width and height of 4~
- Inside source: true
*** True Line Result
# Render a red square at 5, 5 with a width and height of 4
** Processing line: ~ args.lowrez.borders << { x: 7, y: 7, w: 5, h: 5, r: 255, g: 0, b: 0, a: 255 }~
- Inside source: true
*** True Line Result
args.lowrez.borders << { x: 7, y: 7, w: 5, h: 5, r: 255, g: 0, b: 0, a: 255 }
** 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: ~ ## # ==== HOW TO RENDER A LINE ===================================================~
- Inside source: true
*** True Line Result
## # ==== HOW TO RENDER A LINE ===================================================
** Processing line: ~ ## # =============================================================================~
- Inside source: true
*** True Line Result
## # =============================================================================
** Processing line: ~ def how_to_render_lines args~
- Inside source: true
*** True Line Result
def how_to_render_lines args
** Processing line: ~ # Render a horizontal line at the bottom~
- Inside source: true
*** True Line Result
# Render a horizontal line at the bottom
** Processing line: ~ args.lowrez.lines << { x: 0, y: 0, x2: 63, y2: 0, r: 255 }~
- Inside source: true
*** True Line Result
args.lowrez.lines << { x: 0, y: 0, x2: 63, y2: 0, r: 255 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a vertical line at the left~
- Inside source: true
*** True Line Result
# Render a vertical line at the left
** Processing line: ~ args.lowrez.lines << { x: 0, y: 0, x2: 0, y2: 63, r: 255 }~
- Inside source: true
*** True Line Result
args.lowrez.lines << { x: 0, y: 0, x2: 0, y2: 63, r: 255 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render a diagonal line starting from the bottom left and going to the top right~
- Inside source: true
*** True Line Result
# Render a diagonal line starting from the bottom left and going to the top right
** Processing line: ~ args.lowrez.lines << { x: 0, y: 0, x2: 63, y2: 63, r: 255 }~
- Inside source: true
*** True Line Result
args.lowrez.lines << { x: 0, y: 0, x2: 63, y2: 63, r: 255 }
** 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: ~ ## # == HOW TO RENDER A SPRITE ===================================================~
- Inside source: true
*** True Line Result
## # == HOW TO RENDER A SPRITE ===================================================
** Processing line: ~ ## # =============================================================================~
- Inside source: true
*** True Line Result
## # =============================================================================
** Processing line: ~ def how_to_render_sprites args~
- Inside source: true
*** True Line Result
def how_to_render_sprites args
** Processing line: ~ # Loop 10 times and create 10 sprites in 10 positions~
- Inside source: true
*** True Line Result
# Loop 10 times and create 10 sprites in 10 positions
** Processing line: ~ # Render a sprite at the bottom left with a width and height of 5 and a path of 'sprites/lowrez-ship-blue.png'~
- Inside source: true
*** True Line Result
# Render a sprite at the bottom left with a width and height of 5 and a path of 'sprites/lowrez-ship-blue.png'
** Processing line: ~ 10.times do |i|~
- Inside source: true
*** True Line Result
10.times do |i|
** Processing line: ~ args.lowrez.sprites << {~
- Inside source: true
*** True Line Result
args.lowrez.sprites << {
** Processing line: ~ x: i * 5,~
- Inside source: true
*** True Line Result
x: i * 5,
** Processing line: ~ y: i * 5,~
- Inside source: true
*** True Line Result
y: i * 5,
** Processing line: ~ w: 5,~
- Inside source: true
*** True Line Result
w: 5,
** Processing line: ~ h: 5,~
- Inside source: true
*** True Line Result
h: 5,
** Processing line: ~ path: 'sprites/lowrez-ship-blue.png'~
- Inside source: true
*** True Line Result
path: 'sprites/lowrez-ship-blue.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: ~ # Given an array of positions create sprites~
- Inside source: true
*** True Line Result
# Given an array of positions create sprites
** Processing line: ~ positions = [~
- Inside source: true
*** True Line Result
positions = [
** Processing line: ~ { x: 10, y: 42 },~
- Inside source: true
*** True Line Result
{ x: 10, y: 42 },
** Processing line: ~ { x: 15, y: 45 },~
- Inside source: true
*** True Line Result
{ x: 15, y: 45 },
** Processing line: ~ { x: 22, y: 33 },~
- Inside source: true
*** True Line Result
{ x: 22, y: 33 },
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ positions.each do |position|~
- Inside source: true
*** True Line Result
positions.each do |position|
** Processing line: ~ # use Ruby's ~Hash#merge~ function to create a sprite~
- Inside source: true
*** True Line Result
# use Ruby's ~Hash#merge~ function to create a sprite
** Processing line: ~ args.lowrez.sprites << position.merge(path: 'sprites/lowrez-ship-red.png',~
- Inside source: true
*** True Line Result
args.lowrez.sprites << position.merge(path: 'sprites/lowrez-ship-red.png',
** Processing line: ~ w: 5,~
- Inside source: true
*** True Line Result
w: 5,
** Processing line: ~ h: 5)~
- Inside source: true
*** True Line Result
h: 5)
** 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: ~ ## # ==== HOW TO ANIMATE A SPRITE (SEPERATE PNGS) ==========================~
- Inside source: true
*** True Line Result
## # ==== HOW TO ANIMATE A SPRITE (SEPERATE PNGS) ==========================
** Processing line: ~ ## # =============================================================================~
- Inside source: true
*** True Line Result
## # =============================================================================
** Processing line: ~ def how_to_animate_a_sprite args~
- Inside source: true
*** True Line Result
def how_to_animate_a_sprite args
** Processing line: ~ # STEP 1: Define when you want the animation to start. The animation in this case will start in 3 seconds~
- Inside source: true
*** True Line Result
# STEP 1: Define when you want the animation to start. The animation in this case will start in 3 seconds
** Processing line: ~ start_animation_on_tick = 180~
- Inside source: true
*** True Line Result
start_animation_on_tick = 180
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # STEP 2: Get the frame_index given the start tick.~
- Inside source: true
*** True Line Result
# STEP 2: Get the frame_index given the start tick.
** Processing line: ~ sprite_index = start_animation_on_tick.frame_index count: 7, # how many sprites?~
- Inside source: true
*** True Line Result
sprite_index = start_animation_on_tick.frame_index count: 7, # how many sprites?
** Processing line: ~ hold_for: 4, # how long to hold each sprite?~
- Inside source: true
*** True Line Result
hold_for: 4, # how long to hold each sprite?
** Processing line: ~ repeat: true # should it repeat?~
- Inside source: true
*** True Line Result
repeat: true # should it repeat?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # STEP 3: frame_index will return nil if the frame hasn't arrived yet~
- Inside source: true
*** True Line Result
# STEP 3: frame_index will return nil if the frame hasn't arrived yet
** Processing line: ~ if sprite_index~
- Inside source: true
*** True Line Result
if sprite_index
** Processing line: ~ # if the sprite_index is populated, use it to determine the sprite path and render it~
- Inside source: true
*** True Line Result
# if the sprite_index is populated, use it to determine the sprite path and render it
** Processing line: ~ sprite_path = "sprites/explosion-#{sprite_index}.png"~
- Inside source: true
*** True Line Result
sprite_path = "sprites/explosion-#{sprite_index}.png"
** Processing line: ~ args.lowrez.sprites << { x: 0, y: 0, w: 64, h: 64, path: sprite_path }~
- Inside source: true
*** True Line Result
args.lowrez.sprites << { x: 0, y: 0, w: 64, h: 64, path: sprite_path }
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ # if the sprite_index is nil, render a countdown instead~
- Inside source: true
*** True Line Result
# if the sprite_index is nil, render a countdown instead
** Processing line: ~ countdown_in_seconds = ((start_animation_on_tick - args.state.tick_count) / 60).round(1)~
- Inside source: true
*** True Line Result
countdown_in_seconds = ((start_animation_on_tick - args.state.tick_count) / 60).round(1)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 32,~
- Inside source: true
*** True Line Result
.merge(x: 32,
** Processing line: ~ y: 32,~
- Inside source: true
*** True Line Result
y: 32,
** Processing line: ~ text: "Count Down: #{countdown_in_seconds}",~
- Inside source: true
*** True Line Result
text: "Count Down: #{countdown_in_seconds}",
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render the current tick and the resolved sprite index~
- Inside source: true
*** True Line Result
# render the current tick and the resolved sprite index
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 0,~
- Inside source: true
*** True Line Result
.merge(x: 0,
** Processing line: ~ y: 11,~
- Inside source: true
*** True Line Result
y: 11,
** Processing line: ~ text: "Tick: #{args.state.tick_count}")~
- Inside source: true
*** True Line Result
text: "Tick: #{args.state.tick_count}")
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 0,~
- Inside source: true
*** True Line Result
.merge(x: 0,
** Processing line: ~ y: 5,~
- Inside source: true
*** True Line Result
y: 5,
** Processing line: ~ text: "sprite_index: #{sprite_index}")~
- Inside source: true
*** True Line Result
text: "sprite_index: #{sprite_index}")
** 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: ~ ## # ==== HOW TO ANIMATE A SPRITE (SPRITE SHEET) =================================~
- Inside source: true
*** True Line Result
## # ==== HOW TO ANIMATE A SPRITE (SPRITE SHEET) =================================
** Processing line: ~ ## # =============================================================================~
- Inside source: true
*** True Line Result
## # =============================================================================
** Processing line: ~ def how_to_animate_a_sprite_sheet args~
- Inside source: true
*** True Line Result
def how_to_animate_a_sprite_sheet args
** Processing line: ~ # STEP 1: Define when you want the animation to start. The animation in this case will start in 3 seconds~
- Inside source: true
*** True Line Result
# STEP 1: Define when you want the animation to start. The animation in this case will start in 3 seconds
** Processing line: ~ start_animation_on_tick = 180~
- Inside source: true
*** True Line Result
start_animation_on_tick = 180
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # STEP 2: Get the frame_index given the start tick.~
- Inside source: true
*** True Line Result
# STEP 2: Get the frame_index given the start tick.
** Processing line: ~ sprite_index = start_animation_on_tick.frame_index count: 7, # how many sprites?~
- Inside source: true
*** True Line Result
sprite_index = start_animation_on_tick.frame_index count: 7, # how many sprites?
** Processing line: ~ hold_for: 4, # how long to hold each sprite?~
- Inside source: true
*** True Line Result
hold_for: 4, # how long to hold each sprite?
** Processing line: ~ repeat: true # should it repeat?~
- Inside source: true
*** True Line Result
repeat: true # should it repeat?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # STEP 3: frame_index will return nil if the frame hasn't arrived yet~
- Inside source: true
*** True Line Result
# STEP 3: frame_index will return nil if the frame hasn't arrived yet
** Processing line: ~ if sprite_index~
- Inside source: true
*** True Line Result
if sprite_index
** Processing line: ~ # if the sprite_index is populated, use it to determine the source rectangle and render it~
- Inside source: true
*** True Line Result
# if the sprite_index is populated, use it to determine the source rectangle and render it
** Processing line: ~ args.lowrez.sprites << {~
- Inside source: true
*** True Line Result
args.lowrez.sprites << {
** Processing line: ~ x: 0,~
- Inside source: true
*** True Line Result
x: 0,
** Processing line: ~ y: 0,~
- Inside source: true
*** True Line Result
y: 0,
** 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: ~ path: "sprites/explosion-sheet.png",~
- Inside source: true
*** True Line Result
path: "sprites/explosion-sheet.png",
** Processing line: ~ source_x: 32 * sprite_index,~
- Inside source: true
*** True Line Result
source_x: 32 * sprite_index,
** Processing line: ~ source_y: 0,~
- Inside source: true
*** True Line Result
source_y: 0,
** Processing line: ~ source_w: 32,~
- Inside source: true
*** True Line Result
source_w: 32,
** Processing line: ~ source_h: 32~
- Inside source: true
*** True Line Result
source_h: 32
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ # if the sprite_index is nil, render a countdown instead~
- Inside source: true
*** True Line Result
# if the sprite_index is nil, render a countdown instead
** Processing line: ~ countdown_in_seconds = ((start_animation_on_tick - args.state.tick_count) / 60).round(1)~
- Inside source: true
*** True Line Result
countdown_in_seconds = ((start_animation_on_tick - args.state.tick_count) / 60).round(1)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 32,~
- Inside source: true
*** True Line Result
.merge(x: 32,
** Processing line: ~ y: 32,~
- Inside source: true
*** True Line Result
y: 32,
** Processing line: ~ text: "Count Down: #{countdown_in_seconds}",~
- Inside source: true
*** True Line Result
text: "Count Down: #{countdown_in_seconds}",
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render the current tick and the resolved sprite index~
- Inside source: true
*** True Line Result
# render the current tick and the resolved sprite index
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 0,~
- Inside source: true
*** True Line Result
.merge(x: 0,
** Processing line: ~ y: 11,~
- Inside source: true
*** True Line Result
y: 11,
** Processing line: ~ text: "tick: #{args.state.tick_count}")~
- Inside source: true
*** True Line Result
text: "tick: #{args.state.tick_count}")
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 0,~
- Inside source: true
*** True Line Result
.merge(x: 0,
** Processing line: ~ y: 5,~
- Inside source: true
*** True Line Result
y: 5,
** Processing line: ~ text: "sprite_index: #{sprite_index}")~
- Inside source: true
*** True Line Result
text: "sprite_index: #{sprite_index}")
** 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: ~ ## # ==== HOW TO STORE STATE, ACCEPT INPUT, AND RENDER SPRITE BASED OFF OF STATE =~
- Inside source: true
*** True Line Result
## # ==== HOW TO STORE STATE, ACCEPT INPUT, AND RENDER SPRITE BASED OFF OF STATE =
** Processing line: ~ ## # =============================================================================~
- Inside source: true
*** True Line Result
## # =============================================================================
** Processing line: ~ def how_to_move_a_sprite args~
- Inside source: true
*** True Line Result
def how_to_move_a_sprite args
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 32,~
- Inside source: true
*** True Line Result
.merge(x: 32,
** Processing line: ~ y: 62, text: "Use Arrow Keys",~
- Inside source: true
*** True Line Result
y: 62, text: "Use Arrow Keys",
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 32,~
- Inside source: true
*** True Line Result
.merge(x: 32,
** Processing line: ~ y: 56, text: "Use WASD",~
- Inside source: true
*** True Line Result
y: 56, text: "Use WASD",
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 32,~
- Inside source: true
*** True Line Result
.merge(x: 32,
** Processing line: ~ y: 50, text: "Or Click",~
- Inside source: true
*** True Line Result
y: 50, text: "Or Click",
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # set the initial values for x and y using ||= ("or equal operator")~
- Inside source: true
*** True Line Result
# set the initial values for x and y using ||= ("or equal operator")
** Processing line: ~ args.state.ship.x ||= 0~
- Inside source: true
*** True Line Result
args.state.ship.x ||= 0
** Processing line: ~ args.state.ship.y ||= 0~
- Inside source: true
*** True Line Result
args.state.ship.y ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if a mouse click occurs, update the ship's x and y to be the location of the click~
- Inside source: true
*** True Line Result
# if a mouse click occurs, update the ship's x and y to be the location of the click
** Processing line: ~ if args.lowrez.mouse_click~
- Inside source: true
*** True Line Result
if args.lowrez.mouse_click
** Processing line: ~ args.state.ship.x = args.lowrez.mouse_click.x~
- Inside source: true
*** True Line Result
args.state.ship.x = args.lowrez.mouse_click.x
** Processing line: ~ args.state.ship.y = args.lowrez.mouse_click.y~
- Inside source: true
*** True Line Result
args.state.ship.y = args.lowrez.mouse_click.y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if a or left arrow is pressed/held, decrement the ships x position~
- Inside source: true
*** True Line Result
# if a or left arrow is pressed/held, decrement the ships x position
** Processing line: ~ if args.lowrez.keyboard.left~
- Inside source: true
*** True Line Result
if args.lowrez.keyboard.left
** Processing line: ~ args.state.ship.x -= 1~
- Inside source: true
*** True Line Result
args.state.ship.x -= 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if d or right arrow is pressed/held, increment the ships x position~
- Inside source: true
*** True Line Result
# if d or right arrow is pressed/held, increment the ships x position
** Processing line: ~ if args.lowrez.keyboard.right~
- Inside source: true
*** True Line Result
if args.lowrez.keyboard.right
** Processing line: ~ args.state.ship.x += 1~
- Inside source: true
*** True Line Result
args.state.ship.x += 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if s or down arrow is pressed/held, decrement the ships y position~
- Inside source: true
*** True Line Result
# if s or down arrow is pressed/held, decrement the ships y position
** Processing line: ~ if args.lowrez.keyboard.down~
- Inside source: true
*** True Line Result
if args.lowrez.keyboard.down
** Processing line: ~ args.state.ship.y -= 1~
- Inside source: true
*** True Line Result
args.state.ship.y -= 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if w or up arrow is pressed/held, increment the ships y position~
- Inside source: true
*** True Line Result
# if w or up arrow is pressed/held, increment the ships y position
** Processing line: ~ if args.lowrez.keyboard.up~
- Inside source: true
*** True Line Result
if args.lowrez.keyboard.up
** Processing line: ~ args.state.ship.y += 1~
- Inside source: true
*** True Line Result
args.state.ship.y += 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render the sprite to the screen using the position stored in args.state.ship~
- Inside source: true
*** True Line Result
# render the sprite to the screen using the position stored in args.state.ship
** Processing line: ~ args.lowrez.sprites << {~
- Inside source: true
*** True Line Result
args.lowrez.sprites << {
** Processing line: ~ x: args.state.ship.x,~
- Inside source: true
*** True Line Result
x: args.state.ship.x,
** Processing line: ~ y: args.state.ship.y,~
- Inside source: true
*** True Line Result
y: args.state.ship.y,
** Processing line: ~ w: 5,~
- Inside source: true
*** True Line Result
w: 5,
** Processing line: ~ h: 5,~
- Inside source: true
*** True Line Result
h: 5,
** Processing line: ~ path: 'sprites/lowrez-ship-blue.png',~
- Inside source: true
*** True Line Result
path: 'sprites/lowrez-ship-blue.png',
** Processing line: ~ # parameters beyond this point are optional~
- Inside source: true
*** True Line Result
# parameters beyond this point are optional
** Processing line: ~ angle: 0, # Note: rotation angle is denoted in degrees NOT radians~
- Inside source: true
*** True Line Result
angle: 0, # Note: rotation angle is denoted in degrees NOT radians
** Processing line: ~ r: 255,~
- Inside source: true
*** True Line Result
r: 255,
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 255,~
- Inside source: true
*** True Line Result
b: 255,
** Processing line: ~ a: 255~
- Inside source: true
*** True Line Result
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: ~ # =======================================================================~
- Inside source: true
*** True Line Result
# =======================================================================
** Processing line: ~ # ==== HOW TO DETERMINE COLLISION =======================================~
- Inside source: true
*** True Line Result
# ==== HOW TO DETERMINE COLLISION =======================================
** Processing line: ~ # =======================================================================~
- Inside source: true
*** True Line Result
# =======================================================================
** Processing line: ~ def how_to_determine_collision args~
- Inside source: true
*** True Line Result
def how_to_determine_collision args
** Processing line: ~ # Render the instructions~
- Inside source: true
*** True Line Result
# Render the instructions
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 32,~
- Inside source: true
*** True Line Result
.merge(x: 32,
** Processing line: ~ y: 62, text: "Click Anywhere",~
- Inside source: true
*** True Line Result
y: 62, text: "Click Anywhere",
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if a mouse click occurs:~
- Inside source: true
*** True Line Result
# if a mouse click occurs:
** Processing line: ~ # - set ship_one if it isn't set~
- Inside source: true
*** True Line Result
# - set ship_one if it isn't set
** Processing line: ~ # - set ship_two if it isn't set~
- Inside source: true
*** True Line Result
# - set ship_two if it isn't set
** Processing line: ~ # - otherwise reset ship one and ship two~
- Inside source: true
*** True Line Result
# - otherwise reset ship one and ship two
** Processing line: ~ if args.lowrez.mouse_click~
- Inside source: true
*** True Line Result
if args.lowrez.mouse_click
** Processing line: ~ # is ship_one set?~
- Inside source: true
*** True Line Result
# is ship_one set?
** Processing line: ~ if !args.state.ship_one~
- Inside source: true
*** True Line Result
if !args.state.ship_one
** Processing line: ~ args.state.ship_one = { x: args.lowrez.mouse_click.x - 10,~
- Inside source: true
*** True Line Result
args.state.ship_one = { x: args.lowrez.mouse_click.x - 10,
** Processing line: ~ y: args.lowrez.mouse_click.y - 10,~
- Inside source: true
*** True Line Result
y: args.lowrez.mouse_click.y - 10,
** Processing line: ~ w: 20,~
- Inside source: true
*** True Line Result
w: 20,
** Processing line: ~ h: 20 }~
- Inside source: true
*** True Line Result
h: 20 }
** Processing line: ~ # is ship_one set?~
- Inside source: true
*** True Line Result
# is ship_one set?
** Processing line: ~ elsif !args.state.ship_two~
- Inside source: true
*** True Line Result
elsif !args.state.ship_two
** Processing line: ~ args.state.ship_two = { x: args.lowrez.mouse_click.x - 10,~
- Inside source: true
*** True Line Result
args.state.ship_two = { x: args.lowrez.mouse_click.x - 10,
** Processing line: ~ y: args.lowrez.mouse_click.y - 10,~
- Inside source: true
*** True Line Result
y: args.lowrez.mouse_click.y - 10,
** Processing line: ~ w: 20,~
- Inside source: true
*** True Line Result
w: 20,
** Processing line: ~ h: 20 }~
- Inside source: true
*** True Line Result
h: 20 }
** Processing line: ~ # should we reset?~
- Inside source: true
*** True Line Result
# should we reset?
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.state.ship_one = nil~
- Inside source: true
*** True Line Result
args.state.ship_one = nil
** Processing line: ~ args.state.ship_two = nil~
- Inside source: true
*** True Line Result
args.state.ship_two = nil
** 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: ~ # render ship one if it's set~
- Inside source: true
*** True Line Result
# render ship one if it's set
** Processing line: ~ if args.state.ship_one~
- Inside source: true
*** True Line Result
if args.state.ship_one
** Processing line: ~ # use Ruby's .merge method which is available on ~Hash~ to set the sprite and alpha~
- Inside source: true
*** True Line Result
# use Ruby's .merge method which is available on ~Hash~ to set the sprite and alpha
** Processing line: ~ # render ship one~
- Inside source: true
*** True Line Result
# render ship one
** Processing line: ~ args.lowrez.sprites << args.state.ship_one.merge(path: 'sprites/lowrez-ship-blue.png', a: 100)~
- Inside source: true
*** True Line Result
args.lowrez.sprites << args.state.ship_one.merge(path: 'sprites/lowrez-ship-blue.png', a: 100)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.ship_two~
- Inside source: true
*** True Line Result
if args.state.ship_two
** Processing line: ~ # use Ruby's .merge method which is available on ~Hash~ to set the sprite and alpha~
- Inside source: true
*** True Line Result
# use Ruby's .merge method which is available on ~Hash~ to set the sprite and alpha
** Processing line: ~ # render ship two~
- Inside source: true
*** True Line Result
# render ship two
** Processing line: ~ args.lowrez.sprites << args.state.ship_two.merge(path: 'sprites/lowrez-ship-red.png', a: 100)~
- Inside source: true
*** True Line Result
args.lowrez.sprites << args.state.ship_two.merge(path: 'sprites/lowrez-ship-red.png', a: 100)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # if both ship one and ship two are set, then determine collision~
- Inside source: true
*** True Line Result
# if both ship one and ship two are set, then determine collision
** Processing line: ~ if args.state.ship_one && args.state.ship_two~
- Inside source: true
*** True Line Result
if args.state.ship_one && args.state.ship_two
** Processing line: ~ # collision is determined using the intersect_rect? method~
- Inside source: true
*** True Line Result
# collision is determined using the intersect_rect? method
** Processing line: ~ if args.state.ship_one.intersect_rect? args.state.ship_two~
- Inside source: true
*** True Line Result
if args.state.ship_one.intersect_rect? args.state.ship_two
** Processing line: ~ # if collision occurred, render the words collision!~
- Inside source: true
*** True Line Result
# if collision occurred, render the words collision!
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 31,~
- Inside source: true
*** True Line Result
.merge(x: 31,
** Processing line: ~ y: 5,~
- Inside source: true
*** True Line Result
y: 5,
** Processing line: ~ text: "Collision!",~
- Inside source: true
*** True Line Result
text: "Collision!",
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ # if collision occurred, render the words no collision.~
- Inside source: true
*** True Line Result
# if collision occurred, render the words no collision.
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 31,~
- Inside source: true
*** True Line Result
.merge(x: 31,
** Processing line: ~ y: 5,~
- Inside source: true
*** True Line Result
y: 5,
** Processing line: ~ text: "No Collision.",~
- Inside source: true
*** True Line Result
text: "No Collision.",
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ # if both ship one and ship two aren't set, then render --~
- Inside source: true
*** True Line Result
# if both ship one and ship two aren't set, then render --
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(x: 31,~
- Inside source: true
*** True Line Result
.merge(x: 31,
** Processing line: ~ y: 6,~
- Inside source: true
*** True Line Result
y: 6,
** Processing line: ~ text: "--",~
- Inside source: true
*** True Line Result
text: "--",
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** 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: ~ ## # ==== HOW TO CREATE BUTTONS ==================================================~
- Inside source: true
*** True Line Result
## # ==== HOW TO CREATE BUTTONS ==================================================
** Processing line: ~ ## # =============================================================================~
- Inside source: true
*** True Line Result
## # =============================================================================
** Processing line: ~ def how_to_create_buttons args~
- Inside source: true
*** True Line Result
def how_to_create_buttons args
** Processing line: ~ # Define a button style~
- Inside source: true
*** True Line Result
# Define a button style
** Processing line: ~ args.state.button_style = { w: 62, h: 10, r: 80, g: 80, b: 80 }~
- Inside source: true
*** True Line Result
args.state.button_style = { w: 62, h: 10, r: 80, g: 80, b: 80 }
** Processing line: ~ args.state.label_style = { r: 80, g: 80, b: 80 }~
- Inside source: true
*** True Line Result
args.state.label_style = { r: 80, g: 80, b: 80 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Render instructions~
- Inside source: true
*** True Line Result
# Render instructions
** Processing line: ~ args.state.button_message ||= "Press a Button!"~
- Inside source: true
*** True Line Result
args.state.button_message ||= "Press a Button!"
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(args.state.label_style)~
- Inside source: true
*** True Line Result
.merge(args.state.label_style)
** Processing line: ~ .merge(x: 32,~
- Inside source: true
*** True Line Result
.merge(x: 32,
** Processing line: ~ y: 62,~
- Inside source: true
*** True Line Result
y: 62,
** Processing line: ~ text: args.state.button_message,~
- Inside source: true
*** True Line Result
text: args.state.button_message,
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates button one using a border and a label~
- Inside source: true
*** True Line Result
# Creates button one using a border and a label
** Processing line: ~ args.state.button_one_border = args.state.button_style.merge( x: 1, y: 32)~
- Inside source: true
*** True Line Result
args.state.button_one_border = args.state.button_style.merge( x: 1, y: 32)
** Processing line: ~ args.lowrez.borders << args.state.button_one_border~
- Inside source: true
*** True Line Result
args.lowrez.borders << args.state.button_one_border
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(args.state.label_style)~
- Inside source: true
*** True Line Result
.merge(args.state.label_style)
** Processing line: ~ .merge(x: args.state.button_one_border.x + 2,~
- Inside source: true
*** True Line Result
.merge(x: args.state.button_one_border.x + 2,
** Processing line: ~ y: args.state.button_one_border.y + LOWREZ_FONT_SM_HEIGHT + 2,~
- Inside source: true
*** True Line Result
y: args.state.button_one_border.y + LOWREZ_FONT_SM_HEIGHT + 2,
** Processing line: ~ text: "Button One")~
- Inside source: true
*** True Line Result
text: "Button One")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates button two using a border and a label~
- Inside source: true
*** True Line Result
# Creates button two using a border and a label
** Processing line: ~ args.state.button_two_border = args.state.button_style.merge( x: 1, y: 20)~
- Inside source: true
*** True Line Result
args.state.button_two_border = args.state.button_style.merge( x: 1, y: 20)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.lowrez.borders << args.state.button_two_border~
- Inside source: true
*** True Line Result
args.lowrez.borders << args.state.button_two_border
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(args.state.label_style)~
- Inside source: true
*** True Line Result
.merge(args.state.label_style)
** Processing line: ~ .merge(x: args.state.button_two_border.x + 2,~
- Inside source: true
*** True Line Result
.merge(x: args.state.button_two_border.x + 2,
** Processing line: ~ y: args.state.button_two_border.y + LOWREZ_FONT_SM_HEIGHT + 2,~
- Inside source: true
*** True Line Result
y: args.state.button_two_border.y + LOWREZ_FONT_SM_HEIGHT + 2,
** Processing line: ~ text: "Button Two")~
- Inside source: true
*** True Line Result
text: "Button Two")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Initialize the state variable that tracks which button was clicked to "" (empty stringI~
- Inside source: true
*** True Line Result
# Initialize the state variable that tracks which button was clicked to "" (empty stringI
** Processing line: ~ args.state.last_button_clicked ||= "--"~
- Inside source: true
*** True Line Result
args.state.last_button_clicked ||= "--"
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If a click occurs, check to see if either button one, or button two was clicked~
- Inside source: true
*** True Line Result
# If a click occurs, check to see if either button one, or button two was clicked
** Processing line: ~ # using the inside_rect? method of the mouse~
- Inside source: true
*** True Line Result
# using the inside_rect? method of the mouse
** Processing line: ~ # set args.state.last_button_clicked accordingly~
- Inside source: true
*** True Line Result
# set args.state.last_button_clicked accordingly
** Processing line: ~ if args.lowrez.mouse_click~
- Inside source: true
*** True Line Result
if args.lowrez.mouse_click
** Processing line: ~ if args.lowrez.mouse_click.inside_rect? args.state.button_one_border~
- Inside source: true
*** True Line Result
if args.lowrez.mouse_click.inside_rect? args.state.button_one_border
** Processing line: ~ args.state.last_button_clicked = "One Clicked!"~
- Inside source: true
*** True Line Result
args.state.last_button_clicked = "One Clicked!"
** Processing line: ~ elsif args.lowrez.mouse_click.inside_rect? args.state.button_two_border~
- Inside source: true
*** True Line Result
elsif args.lowrez.mouse_click.inside_rect? args.state.button_two_border
** Processing line: ~ args.state.last_button_clicked = "Two Clicked!"~
- Inside source: true
*** True Line Result
args.state.last_button_clicked = "Two Clicked!"
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.state.last_button_clicked = "--"~
- Inside source: true
*** True Line Result
args.state.last_button_clicked = "--"
** 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: ~ # Render the current value of args.state.last_button_clicked~
- Inside source: true
*** True Line Result
# Render the current value of args.state.last_button_clicked
** Processing line: ~ args.lowrez.labels << args.lowrez~
- Inside source: true
*** True Line Result
args.lowrez.labels << args.lowrez
** Processing line: ~ .default_label~
- Inside source: true
*** True Line Result
.default_label
** Processing line: ~ .merge(args.state.label_style)~
- Inside source: true
*** True Line Result
.merge(args.state.label_style)
** Processing line: ~ .merge(x: 32,~
- Inside source: true
*** True Line Result
.merge(x: 32,
** Processing line: ~ y: 5,~
- Inside source: true
*** True Line Result
y: 5,
** Processing line: ~ text: args.state.last_button_clicked,~
- Inside source: true
*** True Line Result
text: args.state.last_button_clicked,
** Processing line: ~ alignment_enum: 1)~
- Inside source: true
*** True Line Result
alignment_enum: 1)
** 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: ~ def render_debug args~
- Inside source: true
*** True Line Result
def render_debug args
** Processing line: ~ if !args.state.grid_rendered~
- Inside source: true
*** True Line Result
if !args.state.grid_rendered
** Processing line: ~ 65.map_with_index do |i|~
- Inside source: true
*** True Line Result
65.map_with_index do |i|
** Processing line: ~ args.outputs.static_debug << {~
- Inside source: true
*** True Line Result
args.outputs.static_debug << {
** Processing line: ~ x: LOWREZ_X_OFFSET,~
- Inside source: true
*** True Line Result
x: LOWREZ_X_OFFSET,
** Processing line: ~ y: LOWREZ_Y_OFFSET + (i * 10),~
- Inside source: true
*** True Line Result
y: LOWREZ_Y_OFFSET + (i * 10),
** Processing line: ~ x2: LOWREZ_X_OFFSET + LOWREZ_ZOOMED_SIZE,~
- Inside source: true
*** True Line Result
x2: LOWREZ_X_OFFSET + LOWREZ_ZOOMED_SIZE,
** Processing line: ~ y2: LOWREZ_Y_OFFSET + (i * 10),~
- Inside source: true
*** True Line Result
y2: LOWREZ_Y_OFFSET + (i * 10),
** Processing line: ~ r: 128,~
- Inside source: true
*** True Line Result
r: 128,
** Processing line: ~ g: 128,~
- Inside source: true
*** True Line Result
g: 128,
** Processing line: ~ b: 128,~
- Inside source: true
*** True Line Result
b: 128,
** Processing line: ~ a: 80~
- Inside source: true
*** True Line Result
a: 80
** Processing line: ~ }.line~
- Inside source: true
*** True Line Result
}.line
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.static_debug << {~
- Inside source: true
*** True Line Result
args.outputs.static_debug << {
** Processing line: ~ x: LOWREZ_X_OFFSET + (i * 10),~
- Inside source: true
*** True Line Result
x: LOWREZ_X_OFFSET + (i * 10),
** Processing line: ~ y: LOWREZ_Y_OFFSET,~
- Inside source: true
*** True Line Result
y: LOWREZ_Y_OFFSET,
** Processing line: ~ x2: LOWREZ_X_OFFSET + (i * 10),~
- Inside source: true
*** True Line Result
x2: LOWREZ_X_OFFSET + (i * 10),
** Processing line: ~ y2: LOWREZ_Y_OFFSET + LOWREZ_ZOOMED_SIZE,~
- Inside source: true
*** True Line Result
y2: LOWREZ_Y_OFFSET + LOWREZ_ZOOMED_SIZE,
** Processing line: ~ r: 128,~
- Inside source: true
*** True Line Result
r: 128,
** Processing line: ~ g: 128,~
- Inside source: true
*** True Line Result
g: 128,
** Processing line: ~ b: 128,~
- Inside source: true
*** True Line Result
b: 128,
** Processing line: ~ a: 80~
- Inside source: true
*** True Line Result
a: 80
** Processing line: ~ }.line~
- Inside source: true
*** True Line Result
}.line
** 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: ~ args.state.grid_rendered = true~
- Inside source: true
*** True Line Result
args.state.grid_rendered = true
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.last_click ||= 0~
- Inside source: true
*** True Line Result
args.state.last_click ||= 0
** Processing line: ~ args.state.last_up ||= 0~
- Inside source: true
*** True Line Result
args.state.last_up ||= 0
** Processing line: ~ args.state.last_click = args.state.tick_count if args.lowrez.mouse_down # you can also use args.lowrez.click~
- Inside source: true
*** True Line Result
args.state.last_click = args.state.tick_count if args.lowrez.mouse_down # you can also use args.lowrez.click
** Processing line: ~ args.state.last_up = args.state.tick_count if args.lowrez.mouse_up~
- Inside source: true
*** True Line Result
args.state.last_up = args.state.tick_count if args.lowrez.mouse_up
** Processing line: ~ args.state.label_style = { size_enum: -1.5 }~
- Inside source: true
*** True Line Result
args.state.label_style = { size_enum: -1.5 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.watch_list = [~
- Inside source: true
*** True Line Result
args.state.watch_list = [
** Processing line: ~ "args.state.tick_count is: #{args.state.tick_count}",~
- Inside source: true
*** True Line Result
"args.state.tick_count is: #{args.state.tick_count}",
** Processing line: ~ "args.lowrez.mouse_position is: #{args.lowrez.mouse_position.x}, #{args.lowrez.mouse_position.y}",~
- Inside source: true
*** True Line Result
"args.lowrez.mouse_position is: #{args.lowrez.mouse_position.x}, #{args.lowrez.mouse_position.y}",
** Processing line: ~ "args.lowrez.mouse_down tick: #{args.state.last_click || "never"}",~
- Inside source: true
*** True Line Result
"args.lowrez.mouse_down tick: #{args.state.last_click || "never"}",
** Processing line: ~ "args.lowrez.mouse_up tick: #{args.state.last_up || "false"}",~
- Inside source: true
*** True Line Result
"args.lowrez.mouse_up tick: #{args.state.last_up || "false"}",
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << args.state~
- Inside source: true
*** True Line Result
args.outputs.debug << args.state
** Processing line: ~ .watch_list~
- Inside source: true
*** True Line Result
.watch_list
** Processing line: ~ .map_with_index do |text, i|~
- Inside source: true
*** True Line Result
.map_with_index do |text, i|
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: 5,~
- Inside source: true
*** True Line Result
x: 5,
** Processing line: ~ y: 720 - (i * 20),~
- Inside source: true
*** True Line Result
y: 720 - (i * 20),
** Processing line: ~ text: text,~
- Inside source: true
*** True Line Result
text: text,
** Processing line: ~ size_enum: -1.5~
- Inside source: true
*** True Line Result
size_enum: -1.5
** Processing line: ~ }.label~
- Inside source: true
*** True Line Result
}.label
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << {~
- Inside source: true
*** True Line Result
args.outputs.debug << {
** Processing line: ~ x: 640,~
- Inside source: true
*** True Line Result
x: 640,
** Processing line: ~ y: 25,~
- Inside source: true
*** True Line Result
y: 25,
** Processing line: ~ text: "INFO: dev mode is currently enabled. Comment out the invocation of ~render_debug~ within the ~tick~ method to hide the debug layer.",~
- Inside source: true
*** True Line Result
text: "INFO: dev mode is currently enabled. Comment out the invocation of ~render_debug~ within the ~tick~ method to hide the debug layer.",
** Processing line: ~ size_enum: -0.5,~
- Inside source: true
*** True Line Result
size_enum: -0.5,
** Processing line: ~ alignment_enum: 1~
- Inside source: true
*** True Line Result
alignment_enum: 1
** Processing line: ~ }.label~
- Inside source: true
*** True Line Result
}.label
** 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 = 'app/map.txt'~
- Inside source: true
*** True Line Result
MAP_FILE_PATH = 'app/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
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.tick_count >= (state.game_over_at + 240)~
- 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",~
- 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)]~
- Inside source: true
*** True Line Result
4, 1, 0, 0, 0, 255 * (state.game_over_at + 240).ease(60)]
** 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)~
- 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",~
- 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)]~
- Inside source: true
*** True Line Result
4, 1, 0, 0, 0, 255 * (state.game_over_at + 360).ease(60)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.sprites << [640 - 50, 360 - 50, 100, 100,~
- Inside source: true
*** True Line Result
outputs.sprites << [640 - 50, 360 - 50, 100, 100,
** Processing line: ~ "sprites/square-green.png"]~
- Inside source: true
*** True Line Result
"sprites/square-green.png"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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 >= 120
** Processing line: ~ outputs.labels << [640, 620, "\"Uh... your office has a pet frog?\" - New Guy",~
- 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)]~
- Inside source: true
*** True Line Result
4, 1, 0, 0, 0, 255 * 120.ease(60)]
** 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~
- Inside source: true
*** True Line Result
if state.tick_count >= 240
** Processing line: ~ outputs.labels << [640, 580, "\"Yep! His name is Clepto.\" - Jim",~
- 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)]~
- Inside source: true
*** True Line Result
4, 1, 0, 0, 0, 255 * 240.ease(60)]
** 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~
- Inside source: true
*** True Line Result
if state.tick_count >= 360
** Processing line: ~ outputs.labels << [640, 540, "\"Uh...\" - New Guy",~
- Inside source: true
*** True Line Result
outputs.labels << [640, 540, "\"Uh...\" - New Guy",
** Processing line: ~ 4, 1, 0, 0, 0, 255 * 360.ease(60)]~
- Inside source: true
*** True Line Result
4, 1, 0, 0, 0, 255 * 360.ease(60)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.tick_count >= 480~
- 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",~
- 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)]~
- Inside source: true
*** True Line Result
4, 1, 0, 0, 0, 255 * 480.ease(60)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.tick_count >= 600~
- 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",~
- 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)]~
- Inside source: true
*** True Line Result
4, 1, 0, 0, 0, 255 * 600.ease(60)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.sprites << [640 - 50, 360 - 50, 100, 100,~
- Inside source: true
*** True Line Result
outputs.sprites << [640 - 50, 360 - 50, 100, 100,
** Processing line: ~ "sprites/square-green.png"]~
- Inside source: true
*** True Line Result
"sprites/square-green.png"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.tick_count == 800~
- Inside source: true
*** True Line Result
if state.tick_count == 800
** Processing line: ~ state.scene = :game~
- Inside source: true
*** True Line Result
state.scene = :game
** Processing line: ~ state.game_start_at = state.tick_count~
- Inside source: true
*** True Line Result
state.game_start_at = state.tick_count
** 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~
- Inside source: true
*** True Line Result
def tick
** Processing line: ~ defaults~
- Inside source: true
*** True Line Result
defaults
** Processing line: ~ if state.scene == :intro && state.tick_count <= 800~
- Inside source: true
*** True Line Result
if state.scene == :intro && state.tick_count <= 800
** Processing line: ~ render_intro~
- Inside source: true
*** True Line Result
render_intro
** Processing line: ~ elsif state.scene == :ending~
- Inside source: true
*** True Line Result
elsif state.scene == :ending
** Processing line: ~ render_ending~
- Inside source: true
*** True Line Result
render_ending
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ render~
- Inside source: true
*** True Line Result
render
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ calc~
- Inside source: true
*** True Line Result
calc
** Processing line: ~ process_inputs~
- Inside source: true
*** True Line Result
process_inputs
** 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.scene ||= :intro~
- Inside source: true
*** True Line Result
state.scene ||= :intro
** 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.stuff_best_time ||= nil~
- Inside source: true
*** True Line Result
state.stuff_best_time ||= nil
** Processing line: ~ state.camera_x ||= 0~
- Inside source: true
*** True Line Result
state.camera_x ||= 0
** Processing line: ~ state.camera_y ||= 0~
- Inside source: true
*** True Line Result
state.camera_y ||= 0
** Processing line: ~ state.target_camera_scale ||= 1~
- Inside source: true
*** True Line Result
state.target_camera_scale ||= 1
** Processing line: ~ state.camera_scale ||= 1~
- Inside source: true
*** True Line Result
state.camera_scale ||= 1
** Processing line: ~ state.tongue_length ||= 100~
- Inside source: true
*** True Line Result
state.tongue_length ||= 100
** Processing line: ~ state.dev_action ||= :collision_mode~
- Inside source: true
*** True Line Result
state.dev_action ||= :collision_mode
** Processing line: ~ state.action ||= :aiming~
- Inside source: true
*** True Line Result
state.action ||= :aiming
** Processing line: ~ state.tongue_angle ||= 90~
- Inside source: true
*** True Line Result
state.tongue_angle ||= 90
** Processing line: ~ state.tile_size = 64~
- Inside source: true
*** True Line Result
state.tile_size = 64
** Processing line: ~ state.gravity = -0.1~
- Inside source: true
*** True Line Result
state.gravity = -0.1
** Processing line: ~ state.air = -0.01~
- Inside source: true
*** True Line Result
state.air = -0.01
** Processing line: ~ state.player_width = 60~
- Inside source: true
*** True Line Result
state.player_width = 60
** Processing line: ~ state.player_height = 60~
- Inside source: true
*** True Line Result
state.player_height = 60
** Processing line: ~ state.collision_tolerance = 0.0~
- Inside source: true
*** True Line Result
state.collision_tolerance = 0.0
** Processing line: ~ state.previous_tile_size ||= state.tile_size~
- Inside source: true
*** True Line Result
state.previous_tile_size ||= state.tile_size
** Processing line: ~ state.x ||= 2400~
- Inside source: true
*** True Line Result
state.x ||= 2400
** Processing line: ~ state.y ||= 200~
- Inside source: true
*** True Line Result
state.y ||= 200
** Processing line: ~ state.dy ||= 0~
- Inside source: true
*** True Line Result
state.dy ||= 0
** Processing line: ~ state.dx ||= 0~
- Inside source: true
*** True Line Result
state.dx ||= 0
** Processing line: ~ attempt_load_world_from_file~
- Inside source: true
*** True Line Result
attempt_load_world_from_file
** Processing line: ~ state.world_lookup ||= { }~
- Inside source: true
*** True Line Result
state.world_lookup ||= { }
** Processing line: ~ state.world_collision_rects ||= []~
- Inside source: true
*** True Line Result
state.world_collision_rects ||= []
** Processing line: ~ state.mode ||= :creating~
- Inside source: true
*** True Line Result
state.mode ||= :creating
** Processing line: ~ state.select_menu ||= [0, 720, 1280, 720]~
- Inside source: true
*** True Line Result
state.select_menu ||= [0, 720, 1280, 720]
** Processing line: ~ state.sprite_quantity ||= 20~
- Inside source: true
*** True Line Result
state.sprite_quantity ||= 20
** Processing line: ~ state.sprite_coords ||= []~
- Inside source: true
*** True Line Result
state.sprite_coords ||= []
** Processing line: ~ state.banner_coords ||= [640, 680 + 720]~
- Inside source: true
*** True Line Result
state.banner_coords ||= [640, 680 + 720]
** Processing line: ~ state.sprite_selected ||= 1~
- Inside source: true
*** True Line Result
state.sprite_selected ||= 1
** Processing line: ~ state.map_saved_at ||= 0~
- Inside source: true
*** True Line Result
state.map_saved_at ||= 0
** Processing line: ~ state.intro_tick_count ||= state.tick_count~
- Inside source: true
*** True Line Result
state.intro_tick_count ||= state.tick_count
** Processing line: ~ if state.sprite_coords == []~
- Inside source: true
*** True Line Result
if state.sprite_coords == []
** Processing line: ~ count = 1~
- Inside source: true
*** True Line Result
count = 1
** Processing line: ~ temp_x = 165~
- Inside source: true
*** True Line Result
temp_x = 165
** Processing line: ~ temp_y = 500 + 720~
- Inside source: true
*** True Line Result
temp_y = 500 + 720
** Processing line: ~ state.sprite_quantity.times do~
- Inside source: true
*** True Line Result
state.sprite_quantity.times do
** Processing line: ~ state.sprite_coords += [[temp_x, temp_y, count]]~
- Inside source: true
*** True Line Result
state.sprite_coords += [[temp_x, temp_y, count]]
** Processing line: ~ temp_x += 100~
- Inside source: true
*** True Line Result
temp_x += 100
** Processing line: ~ count += 1~
- Inside source: true
*** True Line Result
count += 1
** Processing line: ~ if temp_x > 1280 - (165 + 50)~
- Inside source: true
*** True Line Result
if temp_x > 1280 - (165 + 50)
** Processing line: ~ temp_x = 165~
- Inside source: true
*** True Line Result
temp_x = 165
** Processing line: ~ temp_y -= 75~
- Inside source: true
*** True Line Result
temp_y -= 75
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def start_of_tongue x = nil, y = nil~
- Inside source: true
*** True Line Result
def start_of_tongue x = nil, y = nil
** Processing line: ~ x ||= state.x~
- Inside source: true
*** True Line Result
x ||= state.x
** Processing line: ~ y ||= state.y~
- Inside source: true
*** True Line Result
y ||= state.y
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ x + state.player_width.half,~
- Inside source: true
*** True Line Result
x + state.player_width.half,
** Processing line: ~ y + state.player_height.half~
- Inside source: true
*** True Line Result
y + state.player_height.half
** 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 stage_definition~
- Inside source: true
*** True Line Result
def stage_definition
** Processing line: ~ outputs.sprites << [vx(0), vy(0), vw(10000), vw(5875), 'sprites/level-map.png']~
- Inside source: true
*** True Line Result
outputs.sprites << [vx(0), vy(0), vw(10000), vw(5875), 'sprites/level-map.png']
** 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: ~ stage_definition~
- Inside source: true
*** True Line Result
stage_definition
** Processing line: ~ start_of_tongue_render = [vx(start_of_tongue.x), vy(start_of_tongue.y)]~
- Inside source: true
*** True Line Result
start_of_tongue_render = [vx(start_of_tongue.x), vy(start_of_tongue.y)]
** Processing line: ~ end_of_tongue_render = [vx(end_of_tongue.x), vy(end_of_tongue.y)]~
- Inside source: true
*** True Line Result
end_of_tongue_render = [vx(end_of_tongue.x), vy(end_of_tongue.y)]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.anchor_point~
- Inside source: true
*** True Line Result
if state.anchor_point
** Processing line: ~ anchor_point_render = [vx(state.anchor_point.x), vy(state.anchor_point.y)]~
- Inside source: true
*** True Line Result
anchor_point_render = [vx(state.anchor_point.x), vy(state.anchor_point.y)]
** Processing line: ~ outputs.sprites << { x: start_of_tongue_render.x,~
- Inside source: true
*** True Line Result
outputs.sprites << { x: start_of_tongue_render.x,
** Processing line: ~ y: start_of_tongue_render.y,~
- Inside source: true
*** True Line Result
y: start_of_tongue_render.y,
** Processing line: ~ w: vw(2),~
- Inside source: true
*** True Line Result
w: vw(2),
** Processing line: ~ h: args.geometry.distance(start_of_tongue_render, anchor_point_render),~
- Inside source: true
*** True Line Result
h: args.geometry.distance(start_of_tongue_render, anchor_point_render),
** Processing line: ~ path: 'sprites/square-pink.png',~
- Inside source: true
*** True Line Result
path: 'sprites/square-pink.png',
** Processing line: ~ angle_anchor_y: 0,~
- Inside source: true
*** True Line Result
angle_anchor_y: 0,
** Processing line: ~ angle: state.tongue_angle - 90 }~
- Inside source: true
*** True Line Result
angle: state.tongue_angle - 90 }
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ outputs.sprites << { x: vx(start_of_tongue.x),~
- Inside source: true
*** True Line Result
outputs.sprites << { x: vx(start_of_tongue.x),
** Processing line: ~ y: vy(start_of_tongue.y),~
- Inside source: true
*** True Line Result
y: vy(start_of_tongue.y),
** Processing line: ~ w: vw(2),~
- Inside source: true
*** True Line Result
w: vw(2),
** Processing line: ~ h: vh(state.tongue_length),~
- Inside source: true
*** True Line Result
h: vh(state.tongue_length),
** Processing line: ~ path: 'sprites/square-pink.png',~
- Inside source: true
*** True Line Result
path: 'sprites/square-pink.png',
** Processing line: ~ angle_anchor_y: 0,~
- Inside source: true
*** True Line Result
angle_anchor_y: 0,
** Processing line: ~ angle: state.tongue_angle - 90 }~
- Inside source: true
*** True Line Result
angle: state.tongue_angle - 90 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.sprites << state.objects.map { |o| [vx(o.x), vy(o.y), vw(o.w), vh(o.h), o.path] }~
- Inside source: true
*** True Line Result
outputs.sprites << state.objects.map { |o| [vx(o.x), vy(o.y), vw(o.w), vh(o.h), o.path] }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.god_mode~
- Inside source: true
*** True Line Result
if state.god_mode
** Processing line: ~ # SHOW HIDE COLLISIONS~
- Inside source: true
*** True Line Result
# SHOW HIDE COLLISIONS
** Processing line: ~ outputs.sprites << state.world.map do |x, y, w, h|~
- Inside source: true
*** True Line Result
outputs.sprites << state.world.map do |x, y, w, h|
** Processing line: ~ x = vx(x)~
- Inside source: true
*** True Line Result
x = vx(x)
** Processing line: ~ y = vy(y)~
- Inside source: true
*** True Line Result
y = vy(y)
** Processing line: ~ if x > -80 && x < 1280 && y > -80 && y < 720~
- Inside source: true
*** True Line Result
if x > -80 && x < 1280 && y > -80 && y < 720
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: x,~
- Inside source: true
*** True Line Result
x: x,
** Processing line: ~ y: y,~
- Inside source: true
*** True Line Result
y: y,
** Processing line: ~ w: vw(w || state.tile_size),~
- Inside source: true
*** True Line Result
w: vw(w || state.tile_size),
** Processing line: ~ h: vh(h || state.tile_size),~
- Inside source: true
*** True Line Result
h: vh(h || state.tile_size),
** Processing line: ~ path: 'sprites/square-gray.png',~
- Inside source: true
*** True Line Result
path: 'sprites/square-gray.png',
** Processing line: ~ a: 128~
- Inside source: true
*** True Line Result
a: 128
** 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~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ render_player~
- Inside source: true
*** True Line Result
render_player
** Processing line: ~ outputs.sprites << [vx(2315), vy(45), vw(569), vh(402), 'sprites/square-blue.png', 0, 40]~
- Inside source: true
*** True Line Result
outputs.sprites << [vx(2315), vy(45), vw(569), vh(402), 'sprites/square-blue.png', 0, 40]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Label in top left of the screen~
- Inside source: true
*** True Line Result
# Label in top left of the screen
** Processing line: ~ outputs.primitives << [20, 640, 180, 70, 255, 255, 255, 128].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [20, 640, 180, 70, 255, 255, 255, 128].solid
** Processing line: ~ outputs.primitives << [30, 700, "Stuff: #{state.stuff_score} of #{$mugs.count}", 1].label~
- Inside source: true
*** True Line Result
outputs.primitives << [30, 700, "Stuff: #{state.stuff_score} of #{$mugs.count}", 1].label
** Processing line: ~ outputs.primitives << [30, 670, "Time: #{"%.2f" % state.stuff_time}", 1].label~
- Inside source: true
*** True Line Result
outputs.primitives << [30, 670, "Time: #{"%.2f" % state.stuff_time}", 1].label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.god_mode~
- Inside source: true
*** True Line Result
if state.god_mode
** Processing line: ~ if state.map_saved_at > 0 && state.map_saved_at.elapsed_time < 120~
- Inside source: true
*** True Line Result
if state.map_saved_at > 0 && state.map_saved_at.elapsed_time < 120
** Processing line: ~ outputs.primitives << [920, 670, 'Map has been exported!', 1, 0, 50, 100, 50].label~
- Inside source: true
*** True Line Result
outputs.primitives << [920, 670, 'Map has been exported!', 1, 0, 50, 100, 50].label
** 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: ~ # Creates sprite following mouse to help indicate which sprite you have selected~
- 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,~
- 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~
- Inside source: true
*** True Line Result
state.tile_size, state.tile_size, 'sprites/square-indigo.png', 0, 100].sprite
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ render_mini_map~
- Inside source: true
*** True Line Result
render_mini_map
** Processing line: ~ outputs.primitives << [0, 0, 1280, 720, 255, 255, 255, 255 * state.game_start_at.ease(60, :flip)].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [0, 0, 1280, 720, 255, 255, 255, 255 * state.game_start_at.ease(60, :flip)].solid
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_mini_map~
- Inside source: true
*** True Line Result
def render_mini_map
** Processing line: ~ x, y = 1170, 10~
- Inside source: true
*** True Line Result
x, y = 1170, 10
** Processing line: ~ outputs.primitives << [x, y, 100, 58, 0, 0, 0, 200].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [x, y, 100, 58, 0, 0, 0, 200].solid
** Processing line: ~ outputs.primitives << [x + args.state.x.fdiv(100) - 1, y + args.state.y.fdiv(100) - 1, 2, 2, 0, 255, 0].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [x + args.state.x.fdiv(100) - 1, y + args.state.y.fdiv(100) - 1, 2, 2, 0, 255, 0].solid
** Processing line: ~ t_start = start_of_tongue~
- Inside source: true
*** True Line Result
t_start = start_of_tongue
** Processing line: ~ t_end = end_of_tongue~
- Inside source: true
*** True Line Result
t_end = end_of_tongue
** Processing line: ~ outputs.primitives << [~
- Inside source: true
*** True Line Result
outputs.primitives << [
** Processing line: ~ x + t_start.x.fdiv(100), y + t_start.y.fdiv(100),~
- Inside source: true
*** True Line Result
x + t_start.x.fdiv(100), y + t_start.y.fdiv(100),
** Processing line: ~ x + t_end.x.fdiv(100), y + t_end.y.fdiv(100),~
- Inside source: true
*** True Line Result
x + t_end.x.fdiv(100), y + t_end.y.fdiv(100),
** Processing line: ~ 255, 255, 255~
- Inside source: true
*** True Line Result
255, 255, 255
** Processing line: ~ ].line~
- Inside source: true
*** True Line Result
].line
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.objects.each do |o|~
- Inside source: true
*** True Line Result
state.objects.each do |o|
** Processing line: ~ outputs.primitives << [x + o.x.fdiv(100) - 1, y + o.y.fdiv(100) - 1, 2, 2, 200, 200, 0].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [x + o.x.fdiv(100) - 1, y + o.y.fdiv(100) - 1, 2, 2, 200, 200, 0].solid
** 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_camera percentage_override = nil~
- Inside source: true
*** True Line Result
def calc_camera percentage_override = nil
** Processing line: ~ percentage = percentage_override || (0.2 * state.camera_scale)~
- Inside source: true
*** True Line Result
percentage = percentage_override || (0.2 * state.camera_scale)
** Processing line: ~ target_scale = state.target_camera_scale~
- Inside source: true
*** True Line Result
target_scale = state.target_camera_scale
** Processing line: ~ distance_scale = target_scale - state.camera_scale~
- Inside source: true
*** True Line Result
distance_scale = target_scale - state.camera_scale
** Processing line: ~ state.camera_scale += distance_scale * percentage~
- Inside source: true
*** True Line Result
state.camera_scale += distance_scale * percentage
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ target_x = state.x * state.target_camera_scale~
- Inside source: true
*** True Line Result
target_x = state.x * state.target_camera_scale
** Processing line: ~ target_y = state.y * state.target_camera_scale~
- Inside source: true
*** True Line Result
target_y = state.y * state.target_camera_scale
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ distance_x = target_x - (state.camera_x + 640)~
- Inside source: true
*** True Line Result
distance_x = target_x - (state.camera_x + 640)
** Processing line: ~ distance_y = target_y - (state.camera_y + 360)~
- Inside source: true
*** True Line Result
distance_y = target_y - (state.camera_y + 360)
** Processing line: ~ state.camera_x += distance_x * percentage if distance_x.abs > 1~
- Inside source: true
*** True Line Result
state.camera_x += distance_x * percentage if distance_x.abs > 1
** Processing line: ~ state.camera_y += distance_y * percentage if distance_y.abs > 1~
- Inside source: true
*** True Line Result
state.camera_y += distance_y * percentage if distance_y.abs > 1
** Processing line: ~ state.camera_x = 0 if state.camera_x < 0~
- Inside source: true
*** True Line Result
state.camera_x = 0 if state.camera_x < 0
** Processing line: ~ state.camera_y = 0 if state.camera_y < 0~
- Inside source: true
*** True Line Result
state.camera_y = 0 if state.camera_y < 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def vx x~
- Inside source: true
*** True Line Result
def vx x
** Processing line: ~ (x * state.camera_scale) - state.camera_x~
- Inside source: true
*** True Line Result
(x * state.camera_scale) - state.camera_x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def vy y~
- Inside source: true
*** True Line Result
def vy y
** Processing line: ~ (y * state.camera_scale) - state.camera_y~
- Inside source: true
*** True Line Result
(y * state.camera_scale) - state.camera_y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def vw w~
- Inside source: true
*** True Line Result
def vw w
** Processing line: ~ w * state.camera_scale~
- Inside source: true
*** True Line Result
w * state.camera_scale
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def vh h~
- Inside source: true
*** True Line Result
def vh h
** Processing line: ~ h * state.camera_scale~
- Inside source: true
*** True Line Result
h * state.camera_scale
** 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_camera~
- Inside source: true
*** True Line Result
calc_camera
** Processing line: ~ calc_world_lookup~
- Inside source: true
*** True Line Result
calc_world_lookup
** Processing line: ~ calc_player~
- Inside source: true
*** True Line Result
calc_player
** Processing line: ~ calc_on_floor~
- Inside source: true
*** True Line Result
calc_on_floor
** Processing line: ~ calc_score~
- Inside source: true
*** True Line Result
calc_score
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def set_camera_scale v = nil~
- Inside source: true
*** True Line Result
def set_camera_scale v = nil
** Processing line: ~ return if v < 0.1~
- Inside source: true
*** True Line Result
return if v < 0.1
** Processing line: ~ state.target_camera_scale = v~
- Inside source: true
*** True Line Result
state.target_camera_scale = v
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def process_inputs_god_mode~
- Inside source: true
*** True Line Result
def process_inputs_god_mode
** Processing line: ~ return unless state.god_mode~
- Inside source: true
*** True Line Result
return unless state.god_mode
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.keyboard.key_down.equal_sign || (inputs.keyboard.equal_sign && state.tick_count.mod_zero?(10))~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.equal_sign || (inputs.keyboard.equal_sign && state.tick_count.mod_zero?(10))
** Processing line: ~ set_camera_scale state.camera_scale + 0.1~
- Inside source: true
*** True Line Result
set_camera_scale state.camera_scale + 0.1
** Processing line: ~ elsif inputs.keyboard.key_down.hyphen || (inputs.keyboard.hyphen && state.tick_count.mod_zero?(10))~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_down.hyphen || (inputs.keyboard.hyphen && state.tick_count.mod_zero?(10))
** Processing line: ~ set_camera_scale state.camera_scale - 0.1~
- Inside source: true
*** True Line Result
set_camera_scale state.camera_scale - 0.1
** Processing line: ~ elsif inputs.keyboard.eight || inputs.keyboard.zero~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.eight || inputs.keyboard.zero
** Processing line: ~ set_camera_scale 1~
- Inside source: true
*** True Line Result
set_camera_scale 1
** 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
if input_up?
** Processing line: ~ state.y += 10~
- Inside source: true
*** True Line Result
state.y += 10
** Processing line: ~ state.dy = 0~
- Inside source: true
*** True Line Result
state.dy = 0
** Processing line: ~ elsif input_down?~
- Inside source: true
*** True Line Result
elsif input_down?
** Processing line: ~ state.y -= 10~
- Inside source: true
*** True Line Result
state.y -= 10
** Processing line: ~ state.dy = 0~
- Inside source: true
*** True Line Result
state.dy = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if input_left?~
- Inside source: true
*** True Line Result
if input_left?
** Processing line: ~ state.x -= 10~
- Inside source: true
*** True Line Result
state.x -= 10
** Processing line: ~ state.dx = 0~
- Inside source: true
*** True Line Result
state.dx = 0
** Processing line: ~ elsif input_right?~
- Inside source: true
*** True Line Result
elsif input_right?
** Processing line: ~ state.x += 10~
- Inside source: true
*** True Line Result
state.x += 10
** Processing line: ~ state.dx = 0~
- Inside source: true
*** True Line Result
state.dx = 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 process_inputs~
- Inside source: true
*** True Line Result
def process_inputs
** Processing line: ~ if state.scene == :game~
- Inside source: true
*** True Line Result
if state.scene == :game
** Processing line: ~ process_inputs_player_movement~
- Inside source: true
*** True Line Result
process_inputs_player_movement
** Processing line: ~ process_inputs_god_mode~
- 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
end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_up?~
- Inside source: true
*** True Line Result
def input_up?
** Processing line: ~ inputs.keyboard.w || inputs.keyboard.up || inputs.keyboard.k~
- Inside source: true
*** True Line Result
inputs.keyboard.w || inputs.keyboard.up || inputs.keyboard.k
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_up_released?~
- Inside source: true
*** True Line Result
def input_up_released?
** Processing line: ~ inputs.keyboard.key_up.w ||~
- Inside source: true
*** True Line Result
inputs.keyboard.key_up.w ||
** Processing line: ~ inputs.keyboard.key_up.up ||~
- Inside source: true
*** True Line Result
inputs.keyboard.key_up.up ||
** Processing line: ~ inputs.keyboard.key_up.k~
- Inside source: true
*** True Line Result
inputs.keyboard.key_up.k
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_down?~
- Inside source: true
*** True Line Result
def input_down?
** Processing line: ~ inputs.keyboard.s || inputs.keyboard.down || inputs.keyboard.j~
- Inside source: true
*** True Line Result
inputs.keyboard.s || inputs.keyboard.down || inputs.keyboard.j
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_down_released?~
- Inside source: true
*** True Line Result
def input_down_released?
** Processing line: ~ inputs.keyboard.key_up.s ||~
- Inside source: true
*** True Line Result
inputs.keyboard.key_up.s ||
** Processing line: ~ inputs.keyboard.key_up.down ||~
- Inside source: true
*** True Line Result
inputs.keyboard.key_up.down ||
** Processing line: ~ inputs.keyboard.key_up.j~
- Inside source: true
*** True Line Result
inputs.keyboard.key_up.j
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_left?~
- Inside source: true
*** True Line Result
def input_left?
** Processing line: ~ inputs.keyboard.a || inputs.keyboard.left || inputs.keyboard.h~
- Inside source: true
*** True Line Result
inputs.keyboard.a || inputs.keyboard.left || inputs.keyboard.h
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_right?~
- Inside source: true
*** True Line Result
def input_right?
** Processing line: ~ inputs.keyboard.d || inputs.keyboard.right || inputs.keyboard.l~
- Inside source: true
*** True Line Result
inputs.keyboard.d || inputs.keyboard.right || inputs.keyboard.l
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def set_object path, w, h~
- Inside source: true
*** True Line Result
def set_object path, w, h
** Processing line: ~ state.object = path~
- Inside source: true
*** True Line Result
state.object = path
** Processing line: ~ state.object_w = w~
- Inside source: true
*** True Line Result
state.object_w = w
** Processing line: ~ state.object_h = h~
- Inside source: true
*** True Line Result
state.object_h = h
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def collision_mode~
- Inside source: true
*** True Line Result
def collision_mode
** Processing line: ~ state.dev_action = :collision_mode~
- Inside source: true
*** True Line Result
state.dev_action = :collision_mode
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def process_inputs_player_movement~
- Inside source: true
*** True Line Result
def process_inputs_player_movement
** Processing line: ~ if inputs.keyboard.key_down.g~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.g
** Processing line: ~ state.god_mode = !state.god_mode~
- Inside source: true
*** True Line Result
state.god_mode = !state.god_mode
** Processing line: ~ puts state.god_mode~
- Inside source: true
*** True Line Result
puts state.god_mode
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.keyboard.key_down.u && state.dev_action == :collision_mode~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.u && state.dev_action == :collision_mode
** Processing line: ~ state.world = state.world[0..-2]~
- Inside source: true
*** True Line Result
state.world = state.world[0..-2]
** Processing line: ~ state.world_lookup = {}~
- Inside source: true
*** True Line Result
state.world_lookup = {}
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.keyboard.key_down.space && !state.anchor_point~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.space && !state.anchor_point
** Processing line: ~ state.tongue_length = 0~
- Inside source: true
*** True Line Result
state.tongue_length = 0
** Processing line: ~ state.action = :shooting~
- Inside source: true
*** True Line Result
state.action = :shooting
** Processing line: ~ outputs.sounds << 'sounds/shooting.wav'~
- Inside source: true
*** True Line Result
outputs.sounds << 'sounds/shooting.wav'
** Processing line: ~ elsif inputs.keyboard.key_down.space~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_down.space
** Processing line: ~ state.action = :aiming~
- Inside source: true
*** True Line Result
state.action = :aiming
** Processing line: ~ state.anchor_point = nil~
- Inside source: true
*** True Line Result
state.anchor_point = nil
** Processing line: ~ state.tongue_length = 100~
- Inside source: true
*** True Line Result
state.tongue_length = 100
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.anchor_point~
- Inside source: true
*** True Line Result
if state.anchor_point
** Processing line: ~ if input_up?~
- Inside source: true
*** True Line Result
if input_up?
** Processing line: ~ if state.tongue_length >= 105~
- Inside source: true
*** True Line Result
if state.tongue_length >= 105
** Processing line: ~ state.tongue_length -= 5~
- Inside source: true
*** True Line Result
state.tongue_length -= 5
** Processing line: ~ state.dy += 0.8~
- Inside source: true
*** True Line Result
state.dy += 0.8
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ elsif input_down?~
- Inside source: true
*** True Line Result
elsif input_down?
** Processing line: ~ state.tongue_length += 5~
- Inside source: true
*** True Line Result
state.tongue_length += 5
** Processing line: ~ state.dy -= 0.8~
- Inside source: true
*** True Line Result
state.dy -= 0.8
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if input_left? && state.dx > 1~
- Inside source: true
*** True Line Result
if input_left? && state.dx > 1
** Processing line: ~ state.dx *= 0.98~
- Inside source: true
*** True Line Result
state.dx *= 0.98
** Processing line: ~ elsif input_left? && state.dx < -1~
- Inside source: true
*** True Line Result
elsif input_left? && state.dx < -1
** Processing line: ~ state.dx *= 1.03~
- Inside source: true
*** True Line Result
state.dx *= 1.03
** Processing line: ~ elsif input_left? && !state.on_floor~
- Inside source: true
*** True Line Result
elsif input_left? && !state.on_floor
** Processing line: ~ state.dx -= 3~
- Inside source: true
*** True Line Result
state.dx -= 3
** Processing line: ~ elsif input_right? && state.dx > 1~
- Inside source: true
*** True Line Result
elsif input_right? && state.dx > 1
** Processing line: ~ state.dx *= 1.03~
- Inside source: true
*** True Line Result
state.dx *= 1.03
** Processing line: ~ elsif input_right? && state.dx < -1~
- Inside source: true
*** True Line Result
elsif input_right? && state.dx < -1
** Processing line: ~ state.dx *= 0.98~
- Inside source: true
*** True Line Result
state.dx *= 0.98
** Processing line: ~ elsif input_right? && !state.on_floor~
- Inside source: true
*** True Line Result
elsif input_right? && !state.on_floor
** Processing line: ~ state.dx += 3~
- Inside source: true
*** True Line Result
state.dx += 3
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ if input_left?~
- Inside source: true
*** True Line Result
if input_left?
** Processing line: ~ state.tongue_angle += 1.5~
- Inside source: true
*** True Line Result
state.tongue_angle += 1.5
** Processing line: ~ state.tongue_angle = state.tongue_angle~
- Inside source: true
*** True Line Result
state.tongue_angle = state.tongue_angle
** Processing line: ~ elsif input_right?~
- Inside source: true
*** True Line Result
elsif input_right?
** Processing line: ~ state.tongue_angle -= 1.5~
- Inside source: true
*** True Line Result
state.tongue_angle -= 1.5
** Processing line: ~ state.tongue_angle = state.tongue_angle~
- Inside source: true
*** True Line Result
state.tongue_angle = state.tongue_angle
** 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 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
def attempt_load_world_from_file
** Processing line: ~ return if state.world~
- Inside source: true
*** True Line Result
return if state.world
** Processing line: ~ # exported_world = gtk.read_file(MAP_FILE_PATH)~
- Inside source: true
*** True Line Result
# exported_world = gtk.read_file(MAP_FILE_PATH)
** Processing line: ~ state.world = []~
- Inside source: true
*** True Line Result
state.world = []
** Processing line: ~ state.objects = []~
- Inside source: true
*** True Line Result
state.objects = []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if $collisions~
- Inside source: true
*** True Line Result
if $collisions
** Processing line: ~ $collisions.map do |x, y, w, h|~
- Inside source: true
*** True Line Result
$collisions.map do |x, y, w, h|
** Processing line: ~ state.world << [x, y, w, h]~
- Inside source: true
*** True Line Result
state.world << [x, y, w, h]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ add_floors~
- 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~
- Inside source: true
*** True Line Result
# add_floors
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if $mugs~
- Inside source: true
*** True Line Result
if $mugs
** Processing line: ~ $mugs.map do |x, y, w, h, path|~
- Inside source: true
*** True Line Result
$mugs.map do |x, y, w, h, path|
** Processing line: ~ state.objects << [x, y, w, h, path]~
- Inside source: true
*** True Line Result
state.objects << [x, y, w, h, path]
** 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_world_lookup~
- Inside source: true
*** True Line Result
def calc_world_lookup
** Processing line: ~ if state.tile_size != state.previous_tile_size~
- Inside source: true
*** True Line Result
if state.tile_size != state.previous_tile_size
** Processing line: ~ state.previous_tile_size = state.tile_size~
- Inside source: true
*** True Line Result
state.previous_tile_size = state.tile_size
** Processing line: ~ state.world_lookup = {}~
- Inside source: true
*** True Line Result
state.world_lookup = {}
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return if state.world_lookup.keys.length > 0~
- Inside source: true
*** True Line Result
return if state.world_lookup.keys.length > 0
** Processing line: ~ return unless state.world.length > 0~
- Inside source: true
*** True Line Result
return unless state.world.length > 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Searches through the world and finds the cordinates that exist~
- Inside source: true
*** True Line Result
# Searches through the world and finds the cordinates that exist
** Processing line: ~ state.world_lookup = {}~
- Inside source: true
*** True Line Result
state.world_lookup = {}
** Processing line: ~ state.world.each do |x, y, w, h|~
- 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~
- Inside source: true
*** True Line Result
state.world_lookup[[x, y, w || state.tile_size, h || state.tile_size]] = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Assigns collision rects for every sprite drawn~
- Inside source: true
*** True Line Result
# Assigns collision rects for every sprite drawn
** Processing line: ~ state.world_collision_rects =~
- Inside source: true
*** True Line Result
state.world_collision_rects =
** Processing line: ~ state.world_lookup~
- Inside source: true
*** True Line Result
state.world_lookup
** Processing line: ~ .keys~
- Inside source: true
*** True Line Result
.keys
** Processing line: ~ .map do |x, y, w, h|~
- Inside source: true
*** True Line Result
.map do |x, y, w, h|
** Processing line: ~ s = state.tile_size~
- Inside source: true
*** True Line Result
s = state.tile_size
** Processing line: ~ w ||= s~
- Inside source: true
*** True Line Result
w ||= s
** Processing line: ~ h ||= s~
- Inside source: true
*** True Line Result
h ||= s
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ args: [x, y, w, h],~
- Inside source: true
*** True Line Result
args: [x, y, w, h],
** Processing line: ~ left_right: [x, y + 4, w, 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],~
- 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],~
- Inside source: true
*** True Line Result
bottom: [x + 1, y - 1, w - 2, h - 8],
** 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~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_pendulum~
- Inside source: true
*** True Line Result
def calc_pendulum
** Processing line: ~ return if !state.anchor_point~
- Inside source: true
*** True Line Result
return if !state.anchor_point
** Processing line: ~ target_x = state.anchor_point.x - start_of_tongue.x~
- Inside source: true
*** True Line Result
target_x = state.anchor_point.x - start_of_tongue.x
** Processing line: ~ target_y = state.anchor_point.y -~
- Inside source: true
*** True Line Result
target_y = state.anchor_point.y -
** Processing line: ~ state.tongue_length - 5 - 20 - state.player_height~
- Inside source: true
*** True Line Result
state.tongue_length - 5 - 20 - state.player_height
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ diff_y = state.y - target_y~
- Inside source: true
*** True Line Result
diff_y = state.y - target_y
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if target_x > 0~
- Inside source: true
*** True Line Result
if target_x > 0
** Processing line: ~ state.dx += 0.6~
- Inside source: true
*** True Line Result
state.dx += 0.6
** Processing line: ~ elsif target_x < 0~
- Inside source: true
*** True Line Result
elsif target_x < 0
** Processing line: ~ state.dx -= 0.6~
- Inside source: true
*** True Line Result
state.dx -= 0.6
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if diff_y > 0~
- Inside source: true
*** True Line Result
if diff_y > 0
** Processing line: ~ state.dy -= 0.1~
- Inside source: true
*** True Line Result
state.dy -= 0.1
** Processing line: ~ elsif diff_y < 0~
- Inside source: true
*** True Line Result
elsif diff_y < 0
** Processing line: ~ state.dy += 0.1~
- Inside source: true
*** True Line Result
state.dy += 0.1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.dx *= 0.99~
- Inside source: true
*** True Line Result
state.dx *= 0.99
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.dy.abs < 2~
- Inside source: true
*** True Line Result
if state.dy.abs < 2
** Processing line: ~ state.dy *= 0.8~
- Inside source: true
*** True Line Result
state.dy *= 0.8
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.dy *= 0.90~
- Inside source: true
*** True Line Result
state.dy *= 0.90
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.tongue_length && state.y~
- Inside source: true
*** True Line Result
if state.tongue_length && state.y
** Processing line: ~ state.dy += state.tongue_angle.vector_y state.tongue_length.fdiv(1000)~
- Inside source: true
*** True Line Result
state.dy += state.tongue_angle.vector_y state.tongue_length.fdiv(1000)
** 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_tongue_angle~
- Inside source: true
*** True Line Result
def calc_tongue_angle
** Processing line: ~ return unless state.anchor_point~
- Inside source: true
*** True Line Result
return unless state.anchor_point
** Processing line: ~ state.tongue_angle = args.geometry.angle_from state.anchor_point, start_of_tongue~
- Inside source: true
*** True Line Result
state.tongue_angle = args.geometry.angle_from state.anchor_point, start_of_tongue
** Processing line: ~ state.tongue_length = args.geometry.distance(start_of_tongue, state.anchor_point)~
- Inside source: true
*** True Line Result
state.tongue_length = args.geometry.distance(start_of_tongue, state.anchor_point)
** Processing line: ~ state.tongue_length = state.tongue_length.greater(100)~
- Inside source: true
*** True Line Result
state.tongue_length = state.tongue_length.greater(100)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def player_from_end_of_tongue~
- Inside source: true
*** True Line Result
def player_from_end_of_tongue
** Processing line: ~ p = state.tongue_angle.vector(state.tongue_length)~
- Inside source: true
*** True Line Result
p = state.tongue_angle.vector(state.tongue_length)
** Processing line: ~ derived_start = [state.anchor_point.x - p.x, state.anchor_point.y - p.y]~
- Inside source: true
*** True Line Result
derived_start = [state.anchor_point.x - p.x, state.anchor_point.y - p.y]
** Processing line: ~ derived_start.x -= state.player_width.half~
- Inside source: true
*** True Line Result
derived_start.x -= state.player_width.half
** Processing line: ~ derived_start.y -= state.player_height.half~
- Inside source: true
*** True Line Result
derived_start.y -= state.player_height.half
** Processing line: ~ derived_start~
- Inside source: true
*** True Line Result
derived_start
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def end_of_tongue~
- Inside source: true
*** True Line Result
def end_of_tongue
** Processing line: ~ p = state.tongue_angle.vector(state.tongue_length)~
- 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]~
- Inside source: true
*** True Line Result
[start_of_tongue.x + p.x, start_of_tongue.y + p.y]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_shooting~
- Inside source: true
*** True Line Result
def calc_shooting
** Processing line: ~ return unless state.action == :shooting~
- Inside source: true
*** True Line Result
return unless state.action == :shooting
** Processing line: ~ state.tongue_length += 30~
- Inside source: true
*** True Line Result
state.tongue_length += 30
** Processing line: ~ potential_anchor = end_of_tongue~
- Inside source: true
*** True Line Result
potential_anchor = end_of_tongue
** Processing line: ~ if potential_anchor.x <= 0~
- Inside source: true
*** True Line Result
if potential_anchor.x <= 0
** Processing line: ~ state.anchor_point = potential_anchor~
- Inside source: true
*** True Line Result
state.anchor_point = potential_anchor
** Processing line: ~ state.action = :anchored~
- Inside source: true
*** True Line Result
state.action = :anchored
** Processing line: ~ outputs.sounds << 'sounds/attached.wav'~
- Inside source: true
*** True Line Result
outputs.sounds << 'sounds/attached.wav'
** Processing line: ~ elsif potential_anchor.x >= 10000~
- Inside source: true
*** True Line Result
elsif potential_anchor.x >= 10000
** Processing line: ~ state.anchor_point = potential_anchor~
- Inside source: true
*** True Line Result
state.anchor_point = potential_anchor
** Processing line: ~ state.action = :anchored~
- Inside source: true
*** True Line Result
state.action = :anchored
** Processing line: ~ outputs.sounds << 'sounds/attached.wav'~
- Inside source: true
*** True Line Result
outputs.sounds << 'sounds/attached.wav'
** Processing line: ~ elsif potential_anchor.y <= 0~
- Inside source: true
*** True Line Result
elsif potential_anchor.y <= 0
** Processing line: ~ state.anchor_point = potential_anchor~
- Inside source: true
*** True Line Result
state.anchor_point = potential_anchor
** Processing line: ~ state.action = :anchored~
- Inside source: true
*** True Line Result
state.action = :anchored
** Processing line: ~ outputs.sounds << 'sounds/attached.wav'~
- Inside source: true
*** True Line Result
outputs.sounds << 'sounds/attached.wav'
** Processing line: ~ elsif potential_anchor.y >= 5875~
- Inside source: true
*** True Line Result
elsif potential_anchor.y >= 5875
** Processing line: ~ state.anchor_point = potential_anchor~
- Inside source: true
*** True Line Result
state.anchor_point = potential_anchor
** Processing line: ~ state.action = :anchored~
- Inside source: true
*** True Line Result
state.action = :anchored
** Processing line: ~ outputs.sounds << 'sounds/attached.wav'~
- Inside source: true
*** True Line Result
outputs.sounds << 'sounds/attached.wav'
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ anchor_rect = [potential_anchor.x - 5, potential_anchor.y - 5, 10, 10]~
- Inside source: true
*** True Line Result
anchor_rect = [potential_anchor.x - 5, potential_anchor.y - 5, 10, 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)~
- Inside source: true
*** True Line Result
[v[:args].x, v[:args].y, v[:args].w, v[:args].h].intersect_rect?(anchor_rect)
** Processing line: ~ end.first~
- Inside source: true
*** True Line Result
end.first
** Processing line: ~ if collision~
- Inside source: true
*** True Line Result
if collision
** Processing line: ~ state.anchor_point = potential_anchor~
- Inside source: true
*** True Line Result
state.anchor_point = potential_anchor
** Processing line: ~ state.action = :anchored~
- Inside source: true
*** True Line Result
state.action = :anchored
** Processing line: ~ outputs.sounds << 'sounds/attached.wav'~
- Inside source: true
*** True Line Result
outputs.sounds << 'sounds/attached.wav'
** 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_player~
- Inside source: true
*** True Line Result
def calc_player
** Processing line: ~ calc_shooting~
- Inside source: true
*** True Line Result
calc_shooting
** Processing line: ~ if !state.god_mode~
- Inside source: true
*** True Line Result
if !state.god_mode
** Processing line: ~ state.dy += state.gravity # Since acceleration is the change in velocity, the change in y (dy) increases every frame~
- Inside source: true
*** True Line Result
state.dy += state.gravity # Since acceleration is the change in velocity, the change in y (dy) increases every frame
** Processing line: ~ state.dx += state.dx * state.air~
- Inside source: true
*** True Line Result
state.dx += state.dx * state.air
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ calc_pendulum~
- Inside source: true
*** True Line Result
calc_pendulum
** Processing line: ~ calc_box_collision~
- Inside source: true
*** True Line Result
calc_box_collision
** Processing line: ~ calc_edge_collision~
- Inside source: true
*** True Line Result
calc_edge_collision
** Processing line: ~ if !state.god_mode~
- Inside source: true
*** True Line Result
if !state.god_mode
** Processing line: ~ state.y += state.dy~
- Inside source: true
*** True Line Result
state.y += state.dy
** Processing line: ~ state.x += state.dx~
- Inside source: true
*** True Line Result
state.x += state.dx
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ calc_tongue_angle~
- Inside source: true
*** True Line Result
calc_tongue_angle
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_box_collision~
- Inside source: true
*** True Line Result
def calc_box_collision
** Processing line: ~ return unless state.world_lookup.keys.length > 0~
- Inside source: true
*** True Line Result
return unless state.world_lookup.keys.length > 0
** Processing line: ~ collision_floor~
- Inside source: true
*** True Line Result
collision_floor
** Processing line: ~ collision_left~
- Inside source: true
*** True Line Result
collision_left
** Processing line: ~ collision_right~
- Inside source: true
*** True Line Result
collision_right
** Processing line: ~ collision_ceiling~
- Inside source: true
*** True Line Result
collision_ceiling
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_edge_collision~
- Inside source: true
*** True Line Result
def calc_edge_collision
** Processing line: ~ # Ensures that player doesn't fall below the map~
- Inside source: true
*** True Line Result
# Ensures that player doesn't fall below the map
** Processing line: ~ if next_y < 0 && state.dy < 0~
- Inside source: true
*** True Line Result
if next_y < 0 && state.dy < 0
** Processing line: ~ state.y = 0~
- Inside source: true
*** True Line Result
state.y = 0
** Processing line: ~ state.dy = state.dy.abs * 0.8~
- Inside source: true
*** True Line Result
state.dy = state.dy.abs * 0.8
** Processing line: ~ state.collision_on_y = true~
- Inside source: true
*** True Line Result
state.collision_on_y = true
** Processing line: ~ # Ensures player doesn't go insanely high~
- Inside source: true
*** True Line Result
# Ensures player doesn't go insanely high
** Processing line: ~ elsif next_y > 5875 - state.tile_size && state.dy > 0~
- Inside source: true
*** True Line Result
elsif next_y > 5875 - state.tile_size && state.dy > 0
** Processing line: ~ state.y = 5875 - state.tile_size~
- Inside source: true
*** True Line Result
state.y = 5875 - state.tile_size
** Processing line: ~ state.dy = state.dy.abs * 0.8 * -1~
- Inside source: true
*** True Line Result
state.dy = state.dy.abs * 0.8 * -1
** Processing line: ~ state.collision_on_y = true~
- Inside source: true
*** True Line Result
state.collision_on_y = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Ensures that player remains in the horizontal range its supposed to~
- Inside source: true
*** True Line Result
# Ensures that player remains in the horizontal range its supposed to
** Processing line: ~ if state.x >= 10000 - state.tile_size && state.dx > 0~
- Inside source: true
*** True Line Result
if state.x >= 10000 - state.tile_size && state.dx > 0
** Processing line: ~ state.x = 10000 - state.tile_size~
- Inside source: true
*** True Line Result
state.x = 10000 - state.tile_size
** Processing line: ~ state.dx = state.dx.abs * 0.8 * -1~
- Inside source: true
*** True Line Result
state.dx = state.dx.abs * 0.8 * -1
** Processing line: ~ state.collision_on_x = true~
- Inside source: true
*** True Line Result
state.collision_on_x = true
** Processing line: ~ elsif state.x <= 0 && state.dx < 0~
- Inside source: true
*** True Line Result
elsif state.x <= 0 && state.dx < 0
** Processing line: ~ state.x = 0~
- Inside source: true
*** True Line Result
state.x = 0
** Processing line: ~ state.dx = state.dx.abs * 0.8~
- Inside source: true
*** True Line Result
state.dx = state.dx.abs * 0.8
** Processing line: ~ state.collision_on_x = true~
- Inside source: true
*** True Line Result
state.collision_on_x = true
** 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 next_y~
- Inside source: true
*** True Line Result
def next_y
** Processing line: ~ state.y + state.dy~
- Inside source: true
*** True Line Result
state.y + state.dy
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def next_x~
- Inside source: true
*** True Line Result
def next_x
** Processing line: ~ if state.dx < 0~
- Inside source: true
*** True Line Result
if state.dx < 0
** Processing line: ~ return (state.x + state.dx) - (state.tile_size - state.player_width)~
- Inside source: true
*** True Line Result
return (state.x + state.dx) - (state.tile_size - state.player_width)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return (state.x + state.dx) + (state.tile_size - state.player_width)~
- Inside source: true
*** True Line Result
return (state.x + state.dx) + (state.tile_size - state.player_width)
** 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 collision_floor~
- Inside source: true
*** True Line Result
def collision_floor
** Processing line: ~ return unless state.dy <= 0~
- Inside source: true
*** True Line Result
return unless state.dy <= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ player_rect = [state.x, next_y, state.tile_size, state.tile_size]~
- Inside source: true
*** True Line Result
player_rect = [state.x, next_y, state.tile_size, state.tile_size]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs through all the sprites on the field and determines if the player hits the bottom of sprite (hence "-0.1" above)~
- Inside source: true
*** True Line Result
# Runs through all the sprites on the field and determines if the player hits the bottom of sprite (hence "-0.1" above)
** Processing line: ~ floor_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
floor_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:top].intersect_rect?(player_rect, state.collision_tolerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:top].intersect_rect?(player_rect, state.collision_tolerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless floor_collisions~
- Inside source: true
*** True Line Result
return unless floor_collisions
** Processing line: ~ state.y = floor_collisions[:top].top~
- Inside source: true
*** True Line Result
state.y = floor_collisions[:top].top
** Processing line: ~ state.dy = state.dy.abs * 0.8~
- Inside source: true
*** True Line Result
state.dy = state.dy.abs * 0.8
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def collision_left~
- Inside source: true
*** True Line Result
def collision_left
** Processing line: ~ return unless state.dx < 0~
- Inside source: true
*** True Line Result
return unless state.dx < 0
** Processing line: ~ player_rect = [next_x, state.y, state.tile_size, state.tile_size]~
- Inside source: true
*** True Line Result
player_rect = [next_x, state.y, state.tile_size, state.tile_size]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs through all the sprites on the field and determines if the player hits the left side of sprite (hence "-0.1" above)~
- Inside source: true
*** True Line Result
# Runs through all the sprites on the field and determines if the player hits the left side of sprite (hence "-0.1" above)
** Processing line: ~ left_side_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
left_side_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless left_side_collisions~
- Inside source: true
*** True Line Result
return unless left_side_collisions
** Processing line: ~ state.x = left_side_collisions[:left_right].right~
- Inside source: true
*** True Line Result
state.x = left_side_collisions[:left_right].right
** Processing line: ~ state.dx = state.dy.abs * 0.8~
- Inside source: true
*** True Line Result
state.dx = state.dy.abs * 0.8
** Processing line: ~ state.collision_on_x = true~
- Inside source: true
*** True Line Result
state.collision_on_x = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def collision_right~
- Inside source: true
*** True Line Result
def collision_right
** Processing line: ~ return unless state.dx > 0~
- Inside source: true
*** True Line Result
return unless state.dx > 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ player_rect = [next_x, state.y, state.tile_size, state.tile_size]~
- Inside source: true
*** True Line Result
player_rect = [next_x, state.y, state.tile_size, state.tile_size]
** Processing line: ~ # Runs through all the sprites on the field and determines if the player hits the right side of sprite (hence "-0.1" above)~
- Inside source: true
*** True Line Result
# Runs through all the sprites on the field and determines if the player hits the right side of sprite (hence "-0.1" above)
** Processing line: ~ right_side_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
right_side_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless right_side_collisions~
- Inside source: true
*** True Line Result
return unless right_side_collisions
** Processing line: ~ state.x = right_side_collisions[:left_right].left - state.tile_size~
- Inside source: true
*** True Line Result
state.x = right_side_collisions[:left_right].left - state.tile_size
** Processing line: ~ state.dx = state.dx.abs * 0.8 * -1~
- Inside source: true
*** True Line Result
state.dx = state.dx.abs * 0.8 * -1
** Processing line: ~ state.collision_on_x = true~
- Inside source: true
*** True Line Result
state.collision_on_x = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def collision_ceiling~
- Inside source: true
*** True Line Result
def collision_ceiling
** Processing line: ~ return unless state.dy > 0~
- Inside source: true
*** True Line Result
return unless state.dy > 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ player_rect = [state.x, next_y, state.player_width, state.player_height]~
- Inside source: true
*** True Line Result
player_rect = [state.x, next_y, state.player_width, state.player_height]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Runs through all the sprites on the field and determines if the player hits the ceiling of sprite (hence "+0.1" above)~
- Inside source: true
*** True Line Result
# Runs through all the sprites on the field and determines if the player hits the ceiling of sprite (hence "+0.1" above)
** Processing line: ~ ceil_collisions = state.world_collision_rects~
- Inside source: true
*** True Line Result
ceil_collisions = state.world_collision_rects
** Processing line: ~ .find_all { |r| r[:bottom].intersect_rect?(player_rect, state.collision_tolerance) }~
- Inside source: true
*** True Line Result
.find_all { |r| r[:bottom].intersect_rect?(player_rect, state.collision_tolerance) }
** Processing line: ~ .first~
- Inside source: true
*** True Line Result
.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless ceil_collisions~
- Inside source: true
*** True Line Result
return unless ceil_collisions
** Processing line: ~ state.y = ceil_collisions[:bottom].y - state.tile_size~
- Inside source: true
*** True Line Result
state.y = ceil_collisions[:bottom].y - state.tile_size
** Processing line: ~ state.dy = state.dy.abs * 0.8 * -1~
- Inside source: true
*** True Line Result
state.dy = state.dy.abs * 0.8 * -1
** Processing line: ~ state.collision_on_y = true~
- Inside source: true
*** True Line Result
state.collision_on_y = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def to_coord point~
- Inside source: true
*** True Line Result
def to_coord point
** Processing line: ~ # Integer divides (idiv) point.x to turn into grid~
- Inside source: true
*** True Line Result
# Integer divides (idiv) point.x to turn into grid
** Processing line: ~ # Then, you can just multiply each integer by state.tile_size~
- Inside source: true
*** True Line Result
# Then, you can just multiply each integer by state.tile_size
** Processing line: ~ # later and huzzah. Grid coordinates~
- Inside source: true
*** True Line Result
# later and huzzah. Grid coordinates
** Processing line: ~ [point.x.idiv(state.tile_size), point.y.idiv(state.tile_size)]~
- Inside source: true
*** True Line Result
[point.x.idiv(state.tile_size), point.y.idiv(state.tile_size)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def export_map~
- Inside source: true
*** True Line Result
def export_map
** Processing line: ~ export_string = state.world.map do |x, y|~
- Inside source: true
*** True Line Result
export_string = state.world.map do |x, y|
** Processing line: ~ "#{x},#{y},1"~
- Inside source: true
*** True Line Result
"#{x},#{y},1"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** 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}"~
- Inside source: true
*** True Line Result
"#{x},#{y},2,#{w},#{h},#{path}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ gtk.write_file(MAP_FILE_PATH, export_string.join("\n"))~
- Inside source: true
*** True Line Result
gtk.write_file(MAP_FILE_PATH, export_string.join("\n"))
** Processing line: ~ state.map_saved_at = state.tick_count~
- Inside source: true
*** True Line Result
state.map_saved_at = state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inputs_export_stage~
- Inside source: true
*** True Line Result
def inputs_export_stage
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_score~
- Inside source: true
*** True Line Result
def calc_score
** Processing line: ~ return unless state.scene == :game~
- Inside source: true
*** True Line Result
return unless state.scene == :game
** Processing line: ~ player = [state.x, state.y, state.player_width, state.player_height]~
- Inside source: true
*** True Line Result
player = [state.x, state.y, state.player_width, state.player_height]
** Processing line: ~ collected = state.objects.find_all { |s| s.intersect_rect? player }~
- Inside source: true
*** True Line Result
collected = state.objects.find_all { |s| s.intersect_rect? player }
** Processing line: ~ state.stuff_score += collected.length~
- Inside source: true
*** True Line Result
state.stuff_score += collected.length
** Processing line: ~ if collected.length > 0~
- Inside source: true
*** True Line Result
if collected.length > 0
** Processing line: ~ outputs.sounds << 'sounds/collectable.wav'~
- Inside source: true
*** True Line Result
outputs.sounds << 'sounds/collectable.wav'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ state.objects = state.objects.reject { |s| collected.include? s }~
- Inside source: true
*** True Line Result
state.objects = state.objects.reject { |s| collected.include? s }
** Processing line: ~ state.stuff_time += 0.01~
- Inside source: true
*** True Line Result
state.stuff_time += 0.01
** Processing line: ~ if state.objects.length == 0~
- Inside source: true
*** True Line Result
if state.objects.length == 0
** Processing line: ~ if !state.stuff_best_time || state.stuff_time < state.stuff_best_time~
- Inside source: true
*** True Line Result
if !state.stuff_best_time || state.stuff_time < state.stuff_best_time
** Processing line: ~ state.stuff_best_time = state.stuff_time~
- Inside source: true
*** True Line Result
state.stuff_best_time = state.stuff_time
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ state.game_over_at = nil~
- Inside source: true
*** True Line Result
state.game_over_at = nil
** Processing line: ~ state.scene = :ending~
- Inside source: true
*** True Line Result
state.scene = :ending
** 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_on_floor~
- Inside source: true
*** True Line Result
def calc_on_floor
** Processing line: ~ if state.action == :anchored~
- Inside source: true
*** True Line Result
if state.action == :anchored
** Processing line: ~ state.on_floor = false~
- Inside source: true
*** True Line Result
state.on_floor = false
** Processing line: ~ state.on_floor_debounce = 30~
- Inside source: true
*** True Line Result
state.on_floor_debounce = 30
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.on_floor_debounce ||= 30~
- Inside source: true
*** True Line Result
state.on_floor_debounce ||= 30
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.dy.round != 0~
- Inside source: true
*** True Line Result
if state.dy.round != 0
** Processing line: ~ state.on_floor_debounce = 30~
- Inside source: true
*** True Line Result
state.on_floor_debounce = 30
** Processing line: ~ state.on_floor = false~
- Inside source: true
*** True Line Result
state.on_floor = false
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.on_floor_debounce -= 1~
- Inside source: true
*** True Line Result
state.on_floor_debounce -= 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.on_floor_debounce <= 0~
- Inside source: true
*** True Line Result
if state.on_floor_debounce <= 0
** Processing line: ~ state.on_floor_debounce = 0~
- Inside source: true
*** True Line Result
state.on_floor_debounce = 0
** Processing line: ~ state.on_floor = true~
- Inside source: true
*** True Line Result
state.on_floor = 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: ~ def render_player~
- Inside source: true
*** True Line Result
def render_player
** Processing line: ~ path = "sprites/square-green.png"~
- Inside source: true
*** True Line Result
path = "sprites/square-green.png"
** Processing line: ~ angle = 0~
- Inside source: true
*** True Line Result
angle = 0
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y) - 30, "dy: #{state.dy.round}"]~
- Inside source: true
*** True Line Result
# outputs.labels << [vx(state.x), vy(state.y) - 30, "dy: #{state.dy.round}"]
** Processing line: ~ if state.action == :idle~
- Inside source: true
*** True Line Result
if state.action == :idle
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "IDLE"]~
- Inside source: true
*** True Line Result
# outputs.labels << [vx(state.x), vy(state.y), "IDLE"]
** Processing line: ~ path = "sprites/square-green.png"~
- Inside source: true
*** True Line Result
path = "sprites/square-green.png"
** Processing line: ~ elsif state.action == :aiming && !state.on_floor~
- Inside source: true
*** True Line Result
elsif state.action == :aiming && !state.on_floor
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "AIMING AIR BORN"]~
- Inside source: true
*** True Line Result
# outputs.labels << [vx(state.x), vy(state.y), "AIMING AIR BORN"]
** Processing line: ~ angle = state.tongue_angle - 90~
- Inside source: true
*** True Line Result
angle = state.tongue_angle - 90
** Processing line: ~ path = "sprites/square-green.png"~
- Inside source: true
*** True Line Result
path = "sprites/square-green.png"
** Processing line: ~ elsif state.action == :aiming # ON THE GROUND~
- Inside source: true
*** True Line Result
elsif state.action == :aiming # ON THE GROUND
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "AIMING GROUND"]~
- Inside source: true
*** True Line Result
# outputs.labels << [vx(state.x), vy(state.y), "AIMING GROUND"]
** Processing line: ~ path = "sprites/square-green.png"~
- Inside source: true
*** True Line Result
path = "sprites/square-green.png"
** Processing line: ~ elsif state.action == :shooting && !state.on_floor~
- Inside source: true
*** True Line Result
elsif state.action == :shooting && !state.on_floor
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "SHOOTING AIR BORN"]~
- Inside source: true
*** True Line Result
# outputs.labels << [vx(state.x), vy(state.y), "SHOOTING AIR BORN"]
** Processing line: ~ path = "sprites/square-green.png"~
- Inside source: true
*** True Line Result
path = "sprites/square-green.png"
** Processing line: ~ angle = state.tongue_angle - 90~
- Inside source: true
*** True Line Result
angle = state.tongue_angle - 90
** Processing line: ~ elsif state.action == :shooting~
- Inside source: true
*** True Line Result
elsif state.action == :shooting
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "SHOOTING ON GROUND"]~
- Inside source: true
*** True Line Result
# outputs.labels << [vx(state.x), vy(state.y), "SHOOTING ON GROUND"]
** Processing line: ~ path = "sprites/square-green.png"~
- Inside source: true
*** True Line Result
path = "sprites/square-green.png"
** Processing line: ~ elsif state.action == :anchored~
- Inside source: true
*** True Line Result
elsif state.action == :anchored
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "SWINGING"]~
- Inside source: true
*** True Line Result
# outputs.labels << [vx(state.x), vy(state.y), "SWINGING"]
** Processing line: ~ angle = state.tongue_angle - 90~
- Inside source: true
*** True Line Result
angle = state.tongue_angle - 90
** Processing line: ~ path = "sprites/square-green.png"~
- Inside source: true
*** True Line Result
path = "sprites/square-green.png"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.sprites << [vx(state.x),~
- Inside source: true
*** True Line Result
outputs.sprites << [vx(state.x),
** Processing line: ~ vy(state.y),~
- Inside source: true
*** True Line Result
vy(state.y),
** Processing line: ~ vw(state.player_width),~
- Inside source: true
*** True Line Result
vw(state.player_width),
** Processing line: ~ vh(state.player_height),~
- Inside source: true
*** True Line Result
vh(state.player_height),
** Processing line: ~ path,~
- Inside source: true
*** True Line Result
path,
** Processing line: ~ angle]~
- Inside source: true
*** True Line Result
angle]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_player_old~
- Inside source: true
*** True Line Result
def render_player_old
** Processing line: ~ # Player~
- Inside source: true
*** True Line Result
# Player
** Processing line: ~ if state.action == :aiming~
- Inside source: true
*** True Line Result
if state.action == :aiming
** Processing line: ~ path = 'sprites\frg\idle\frog_idle.png'~
- Inside source: true
*** True Line Result
path = 'sprites\frg\idle\frog_idle.png'
** Processing line: ~ if state.dx > 2~
- Inside source: true
*** True Line Result
if state.dx > 2
** Processing line: ~ #directional right sprite was here but i needa redo it~
- Inside source: true
*** True Line Result
#directional right sprite was here but i needa redo it
** Processing line: ~ path = 'sprites\frg\anchor\frog-anchor-0.png'~
- Inside source: true
*** True Line Result
path = 'sprites\frg\anchor\frog-anchor-0.png'
** Processing line: ~ #directional left sprite was here but i needa redo it~
- Inside source: true
*** True Line Result
#directional left sprite was here but i needa redo it
** Processing line: ~ elsif state.dx < -2~
- Inside source: true
*** True Line Result
elsif state.dx < -2
** Processing line: ~ path = 'sprites\frg\anchor\frog-anchor-0.png'~
- Inside source: true
*** True Line Result
path = 'sprites\frg\anchor\frog-anchor-0.png'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ outputs.sprites << [vx(state.x),~
- Inside source: true
*** True Line Result
outputs.sprites << [vx(state.x),
** Processing line: ~ vy(state.y),~
- Inside source: true
*** True Line Result
vy(state.y),
** Processing line: ~ vw(state.player_width),~
- Inside source: true
*** True Line Result
vw(state.player_width),
** Processing line: ~ vh(state.player_height),~
- Inside source: true
*** True Line Result
vh(state.player_height),
** Processing line: ~ path,~
- Inside source: true
*** True Line Result
path,
** Processing line: ~ (state.tongue_angle - 90)]~
- Inside source: true
*** True Line Result
(state.tongue_angle - 90)]
** Processing line: ~ elsif state.action == :anchored || state.action == :shooting~
- Inside source: true
*** True Line Result
elsif state.action == :anchored || state.action == :shooting
** Processing line: ~ outputs.sprites << [vx(state.x),~
- Inside source: true
*** True Line Result
outputs.sprites << [vx(state.x),
** Processing line: ~ vy(state.y),~
- Inside source: true
*** True Line Result
vy(state.y),
** Processing line: ~ vw(state.player_width),~
- Inside source: true
*** True Line Result
vw(state.player_width),
** Processing line: ~ vw(state.player_height),~
- Inside source: true
*** True Line Result
vw(state.player_height),
** Processing line: ~ 'sprites/animations_povfrog/frog_bwah_up.png',~
- Inside source: true
*** True Line Result
'sprites/animations_povfrog/frog_bwah_up.png',
** Processing line: ~ (state.tongue_angle - 90)]~
- Inside source: true
*** True Line Result
(state.tongue_angle - 90)]
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $game = CleptoFrog.new~
- Inside source: true
*** True Line Result
$game = CleptoFrog.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: ~ if args.state.scene == :game~
- Inside source: true
*** True Line Result
if args.state.scene == :game
** Processing line: ~ tick_instructions args, "SPACE to SHOOT and RELEASE tongue. LEFT, RIGHT to SWING and BUILD momentum. MINIMAP in bottom right corner.", 360~
- Inside source: true
*** True Line Result
tick_instructions args, "SPACE to SHOOT and RELEASE tongue. LEFT, RIGHT to SWING and BUILD momentum. MINIMAP in bottom right corner.", 360
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** 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 tick_instructions args, text, y = 715~
- Inside source: true
*** True Line Result
def tick_instructions args, text, y = 715
** Processing line: ~ return if args.state.key_event_occurred~
- Inside source: true
*** True Line Result
return if args.state.key_event_occurred
** Processing line: ~ if args.inputs.keyboard.directional_vector || args.inputs.keyboard.key_down.space~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.directional_vector || args.inputs.keyboard.key_down.space
** Processing line: ~ args.state.key_event_occurred = true~
- Inside source: true
*** True Line Result
args.state.key_event_occurred = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
- Inside source: true
*** True Line Result
args.outputs.debug << [0, y - 50, 1280, 60].solid
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label
** Processing line: ~ args.outputs.debug << [640, y - 25, "(SPACE to dismiss instructions)" , -2, 1, 255, 255, 255].label~
- Inside source: true
*** True Line Result
args.outputs.debug << [640, y - 25, "(SPACE to dismiss instructions)" , -2, 1, 255, 255, 255].label
** 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: ~* Platformer - Clepto Frog - map.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Platformer - Clepto Frog - map.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/map.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_platformer/clepto_frog/app/map.rb
** Processing line: ~ $collisions = [~
- Inside source: true
*** True Line Result
$collisions = [
** Processing line: ~ [326, 463, 64, 64],~
- Inside source: true
*** True Line Result
[326, 463, 64, 64],
** Processing line: ~ [274, 462, 64, 64],~
- Inside source: true
*** True Line Result
[274, 462, 64, 64],
** Processing line: ~ [326, 413, 64, 64],~
- Inside source: true
*** True Line Result
[326, 413, 64, 64],
** Processing line: ~ [275, 412, 64, 64],~
- Inside source: true
*** True Line Result
[275, 412, 64, 64],
** Processing line: ~ [124, 651, 64, 64],~
- Inside source: true
*** True Line Result
[124, 651, 64, 64],
** Processing line: ~ [72, 651, 64, 64],~
- Inside source: true
*** True Line Result
[72, 651, 64, 64],
** Processing line: ~ [124, 600, 64, 64],~
- Inside source: true
*** True Line Result
[124, 600, 64, 64],
** Processing line: ~ [69, 599, 64, 64],~
- Inside source: true
*** True Line Result
[69, 599, 64, 64],
** Processing line: ~ [501, 997, 64, 64],~
- Inside source: true
*** True Line Result
[501, 997, 64, 64],
** Processing line: ~ [476, 995, 64, 64],~
- Inside source: true
*** True Line Result
[476, 995, 64, 64],
** Processing line: ~ [3224, 2057, 64, 64],~
- Inside source: true
*** True Line Result
[3224, 2057, 64, 64],
** Processing line: ~ [3224, 1994, 64, 64],~
- Inside source: true
*** True Line Result
[3224, 1994, 64, 64],
** Processing line: ~ [3225, 1932, 64, 64],~
- Inside source: true
*** True Line Result
[3225, 1932, 64, 64],
** Processing line: ~ [3225, 1870, 64, 64],~
- Inside source: true
*** True Line Result
[3225, 1870, 64, 64],
** Processing line: ~ [3226, 1806, 64, 64],~
- Inside source: true
*** True Line Result
[3226, 1806, 64, 64],
** Processing line: ~ [3224, 1744, 64, 64],~
- Inside source: true
*** True Line Result
[3224, 1744, 64, 64],
** Processing line: ~ [3225, 1689, 64, 64],~
- Inside source: true
*** True Line Result
[3225, 1689, 64, 64],
** Processing line: ~ [3226, 1660, 64, 64],~
- Inside source: true
*** True Line Result
[3226, 1660, 64, 64],
** Processing line: ~ [3161, 1658, 64, 64],~
- Inside source: true
*** True Line Result
[3161, 1658, 64, 64],
** Processing line: ~ [3097, 1660, 64, 64],~
- Inside source: true
*** True Line Result
[3097, 1660, 64, 64],
** Processing line: ~ [3033, 1658, 64, 64],~
- Inside source: true
*** True Line Result
[3033, 1658, 64, 64],
** Processing line: ~ [2969, 1658, 64, 64],~
- Inside source: true
*** True Line Result
[2969, 1658, 64, 64],
** Processing line: ~ [2904, 1658, 64, 64],~
- Inside source: true
*** True Line Result
[2904, 1658, 64, 64],
** Processing line: ~ [2839, 1657, 64, 64],~
- Inside source: true
*** True Line Result
[2839, 1657, 64, 64],
** Processing line: ~ [2773, 1657, 64, 64],~
- Inside source: true
*** True Line Result
[2773, 1657, 64, 64],
** Processing line: ~ [2709, 1658, 64, 64],~
- Inside source: true
*** True Line Result
[2709, 1658, 64, 64],
** Processing line: ~ [2643, 1657, 64, 64],~
- Inside source: true
*** True Line Result
[2643, 1657, 64, 64],
** Processing line: ~ [2577, 1657, 64, 64],~
- Inside source: true
*** True Line Result
[2577, 1657, 64, 64],
** Processing line: ~ [2509, 1658, 64, 64],~
- Inside source: true
*** True Line Result
[2509, 1658, 64, 64],
** Processing line: ~ [2440, 1658, 64, 64],~
- Inside source: true
*** True Line Result
[2440, 1658, 64, 64],
** Processing line: ~ [2371, 1658, 64, 64],~
- Inside source: true
*** True Line Result
[2371, 1658, 64, 64],
** Processing line: ~ [2301, 1659, 64, 64],~
- Inside source: true
*** True Line Result
[2301, 1659, 64, 64],
** Processing line: ~ [2230, 1659, 64, 64],~
- Inside source: true
*** True Line Result
[2230, 1659, 64, 64],
** Processing line: ~ [2159, 1659, 64, 64],~
- Inside source: true
*** True Line Result
[2159, 1659, 64, 64],
** Processing line: ~ [2092, 1660, 64, 64],~
- Inside source: true
*** True Line Result
[2092, 1660, 64, 64],
** Processing line: ~ [2025, 1661, 64, 64],~
- Inside source: true
*** True Line Result
[2025, 1661, 64, 64],
** Processing line: ~ [1958, 1660, 64, 64],~
- Inside source: true
*** True Line Result
[1958, 1660, 64, 64],
** Processing line: ~ [1888, 1659, 64, 64],~
- Inside source: true
*** True Line Result
[1888, 1659, 64, 64],
** Processing line: ~ [1817, 1657, 64, 64],~
- Inside source: true
*** True Line Result
[1817, 1657, 64, 64],
** Processing line: ~ [1745, 1656, 64, 64],~
- Inside source: true
*** True Line Result
[1745, 1656, 64, 64],
** Processing line: ~ [1673, 1658, 64, 64],~
- Inside source: true
*** True Line Result
[1673, 1658, 64, 64],
** Processing line: ~ [1605, 1660, 64, 64],~
- Inside source: true
*** True Line Result
[1605, 1660, 64, 64],
** Processing line: ~ [1536, 1658, 64, 64],~
- Inside source: true
*** True Line Result
[1536, 1658, 64, 64],
** Processing line: ~ [1465, 1660, 64, 64],~
- Inside source: true
*** True Line Result
[1465, 1660, 64, 64],
** Processing line: ~ [1386, 1960, 64, 64],~
- Inside source: true
*** True Line Result
[1386, 1960, 64, 64],
** Processing line: ~ [1384, 1908, 64, 64],~
- Inside source: true
*** True Line Result
[1384, 1908, 64, 64],
** Processing line: ~ [1387, 1862, 64, 64],~
- Inside source: true
*** True Line Result
[1387, 1862, 64, 64],
** Processing line: ~ [1326, 1863, 64, 64],~
- Inside source: true
*** True Line Result
[1326, 1863, 64, 64],
** Processing line: ~ [1302, 1862, 64, 64],~
- Inside source: true
*** True Line Result
[1302, 1862, 64, 64],
** Processing line: ~ [1119, 1906, 64, 64],~
- Inside source: true
*** True Line Result
[1119, 1906, 64, 64],
** Processing line: ~ [1057, 1905, 64, 64],~
- Inside source: true
*** True Line Result
[1057, 1905, 64, 64],
** Processing line: ~ [994, 1905, 64, 64],~
- Inside source: true
*** True Line Result
[994, 1905, 64, 64],
** Processing line: ~ [937, 1904, 64, 64],~
- Inside source: true
*** True Line Result
[937, 1904, 64, 64],
** Processing line: ~ [896, 1904, 64, 64],~
- Inside source: true
*** True Line Result
[896, 1904, 64, 64],
** Processing line: ~ [1001, 1845, 64, 64],~
- Inside source: true
*** True Line Result
[1001, 1845, 64, 64],
** Processing line: ~ [1003, 1780, 64, 64],~
- Inside source: true
*** True Line Result
[1003, 1780, 64, 64],
** Processing line: ~ [1003, 1718, 64, 64],~
- Inside source: true
*** True Line Result
[1003, 1718, 64, 64],
** Processing line: ~ [692, 1958, 64, 64],~
- Inside source: true
*** True Line Result
[692, 1958, 64, 64],
** Processing line: ~ [691, 1900, 64, 64],~
- Inside source: true
*** True Line Result
[691, 1900, 64, 64],
** Processing line: ~ [774, 1861, 64, 64],~
- Inside source: true
*** True Line Result
[774, 1861, 64, 64],
** Processing line: ~ [712, 1861, 64, 64],~
- Inside source: true
*** True Line Result
[712, 1861, 64, 64],
** Processing line: ~ [691, 1863, 64, 64],~
- Inside source: true
*** True Line Result
[691, 1863, 64, 64],
** Processing line: ~ [325, 2133, 64, 64],~
- Inside source: true
*** True Line Result
[325, 2133, 64, 64],
** Processing line: ~ [275, 2134, 64, 64],~
- Inside source: true
*** True Line Result
[275, 2134, 64, 64],
** Processing line: ~ [326, 2082, 64, 64],~
- Inside source: true
*** True Line Result
[326, 2082, 64, 64],
** Processing line: ~ [275, 2082, 64, 64],~
- Inside source: true
*** True Line Result
[275, 2082, 64, 64],
** Processing line: ~ [124, 2321, 64, 64],~
- Inside source: true
*** True Line Result
[124, 2321, 64, 64],
** Processing line: ~ [71, 2320, 64, 64],~
- Inside source: true
*** True Line Result
[71, 2320, 64, 64],
** Processing line: ~ [123, 2267, 64, 64],~
- Inside source: true
*** True Line Result
[123, 2267, 64, 64],
** Processing line: ~ [71, 2268, 64, 64],~
- Inside source: true
*** True Line Result
[71, 2268, 64, 64],
** Processing line: ~ [2354, 1859, 64, 64],~
- Inside source: true
*** True Line Result
[2354, 1859, 64, 64],
** Processing line: ~ [2292, 1859, 64, 64],~
- Inside source: true
*** True Line Result
[2292, 1859, 64, 64],
** Processing line: ~ [2231, 1857, 64, 64],~
- Inside source: true
*** True Line Result
[2231, 1857, 64, 64],
** Processing line: ~ [2198, 1858, 64, 64],~
- Inside source: true
*** True Line Result
[2198, 1858, 64, 64],
** Processing line: ~ [2353, 1802, 64, 64],~
- Inside source: true
*** True Line Result
[2353, 1802, 64, 64],
** Processing line: ~ [2296, 1798, 64, 64],~
- Inside source: true
*** True Line Result
[2296, 1798, 64, 64],
** Processing line: ~ [2233, 1797, 64, 64],~
- Inside source: true
*** True Line Result
[2233, 1797, 64, 64],
** Processing line: ~ [2200, 1797, 64, 64],~
- Inside source: true
*** True Line Result
[2200, 1797, 64, 64],
** Processing line: ~ [2352, 1742, 64, 64],~
- Inside source: true
*** True Line Result
[2352, 1742, 64, 64],
** Processing line: ~ [2288, 1741, 64, 64],~
- Inside source: true
*** True Line Result
[2288, 1741, 64, 64],
** Processing line: ~ [2230, 1743, 64, 64],~
- Inside source: true
*** True Line Result
[2230, 1743, 64, 64],
** Processing line: ~ [2196, 1743, 64, 64],~
- Inside source: true
*** True Line Result
[2196, 1743, 64, 64],
** Processing line: ~ [1736, 460, 64, 64],~
- Inside source: true
*** True Line Result
[1736, 460, 64, 64],
** Processing line: ~ [1735, 400, 64, 64],~
- Inside source: true
*** True Line Result
[1735, 400, 64, 64],
** Processing line: ~ [1736, 339, 64, 64],~
- Inside source: true
*** True Line Result
[1736, 339, 64, 64],
** Processing line: ~ [1736, 275, 64, 64],~
- Inside source: true
*** True Line Result
[1736, 275, 64, 64],
** Processing line: ~ [1738, 210, 64, 64],~
- Inside source: true
*** True Line Result
[1738, 210, 64, 64],
** Processing line: ~ [1735, 145, 64, 64],~
- Inside source: true
*** True Line Result
[1735, 145, 64, 64],
** Processing line: ~ [1735, 87, 64, 64],~
- Inside source: true
*** True Line Result
[1735, 87, 64, 64],
** Processing line: ~ [1736, 51, 64, 64],~
- Inside source: true
*** True Line Result
[1736, 51, 64, 64],
** Processing line: ~ [539, 289, 64, 64],~
- Inside source: true
*** True Line Result
[539, 289, 64, 64],
** Processing line: ~ [541, 228, 64, 64],~
- Inside source: true
*** True Line Result
[541, 228, 64, 64],
** Processing line: ~ [626, 191, 64, 64],~
- Inside source: true
*** True Line Result
[626, 191, 64, 64],
** Processing line: ~ [572, 192, 64, 64],~
- Inside source: true
*** True Line Result
[572, 192, 64, 64],
** Processing line: ~ [540, 193, 64, 64],~
- Inside source: true
*** True Line Result
[540, 193, 64, 64],
** Processing line: ~ [965, 233, 64, 64],~
- Inside source: true
*** True Line Result
[965, 233, 64, 64],
** Processing line: ~ [904, 234, 64, 64],~
- Inside source: true
*** True Line Result
[904, 234, 64, 64],
** Processing line: ~ [840, 234, 64, 64],~
- Inside source: true
*** True Line Result
[840, 234, 64, 64],
** Processing line: ~ [779, 234, 64, 64],~
- Inside source: true
*** True Line Result
[779, 234, 64, 64],
** Processing line: ~ [745, 236, 64, 64],~
- Inside source: true
*** True Line Result
[745, 236, 64, 64],
** Processing line: ~ [851, 169, 64, 64],~
- Inside source: true
*** True Line Result
[851, 169, 64, 64],
** Processing line: ~ [849, 108, 64, 64],~
- Inside source: true
*** True Line Result
[849, 108, 64, 64],
** Processing line: ~ [852, 50, 64, 64],~
- Inside source: true
*** True Line Result
[852, 50, 64, 64],
** Processing line: ~ [1237, 289, 64, 64],~
- Inside source: true
*** True Line Result
[1237, 289, 64, 64],
** Processing line: ~ [1236, 228, 64, 64],~
- Inside source: true
*** True Line Result
[1236, 228, 64, 64],
** Processing line: ~ [1238, 197, 64, 64],~
- Inside source: true
*** True Line Result
[1238, 197, 64, 64],
** Processing line: ~ [1181, 192, 64, 64],~
- Inside source: true
*** True Line Result
[1181, 192, 64, 64],
** Processing line: ~ [1152, 192, 64, 64],~
- Inside source: true
*** True Line Result
[1152, 192, 64, 64],
** Processing line: ~ [1443, 605, 64, 64],~
- Inside source: true
*** True Line Result
[1443, 605, 64, 64],
** Processing line: ~ [1419, 606, 64, 64],~
- Inside source: true
*** True Line Result
[1419, 606, 64, 64],
** Processing line: ~ [1069, 925, 64, 64],~
- Inside source: true
*** True Line Result
[1069, 925, 64, 64],
** Processing line: ~ [1068, 902, 64, 64],~
- Inside source: true
*** True Line Result
[1068, 902, 64, 64],
** Processing line: ~ [1024, 927, 64, 64],~
- Inside source: true
*** True Line Result
[1024, 927, 64, 64],
** Processing line: ~ [1017, 897, 64, 64],~
- Inside source: true
*** True Line Result
[1017, 897, 64, 64],
** Processing line: ~ [963, 926, 64, 64],~
- Inside source: true
*** True Line Result
[963, 926, 64, 64],
** Processing line: ~ [958, 898, 64, 64],~
- Inside source: true
*** True Line Result
[958, 898, 64, 64],
** Processing line: ~ [911, 928, 64, 64],~
- Inside source: true
*** True Line Result
[911, 928, 64, 64],
** Processing line: ~ [911, 896, 64, 64],~
- Inside source: true
*** True Line Result
[911, 896, 64, 64],
** Processing line: ~ [2132, 803, 64, 64],~
- Inside source: true
*** True Line Result
[2132, 803, 64, 64],
** Processing line: ~ [2081, 803, 64, 64],~
- Inside source: true
*** True Line Result
[2081, 803, 64, 64],
** Processing line: ~ [2131, 752, 64, 64],~
- Inside source: true
*** True Line Result
[2131, 752, 64, 64],
** Processing line: ~ [2077, 751, 64, 64],~
- Inside source: true
*** True Line Result
[2077, 751, 64, 64],
** Processing line: ~ [2615, 649, 64, 64],~
- Inside source: true
*** True Line Result
[2615, 649, 64, 64],
** Processing line: ~ [2564, 651, 64, 64],~
- Inside source: true
*** True Line Result
[2564, 651, 64, 64],
** Processing line: ~ [2533, 650, 64, 64],~
- Inside source: true
*** True Line Result
[2533, 650, 64, 64],
** Processing line: ~ [2027, 156, 64, 64],~
- Inside source: true
*** True Line Result
[2027, 156, 64, 64],
** Processing line: ~ [1968, 155, 64, 64],~
- Inside source: true
*** True Line Result
[1968, 155, 64, 64],
** Processing line: ~ [1907, 153, 64, 64],~
- Inside source: true
*** True Line Result
[1907, 153, 64, 64],
** Processing line: ~ [1873, 155, 64, 64],~
- Inside source: true
*** True Line Result
[1873, 155, 64, 64],
** Processing line: ~ [2025, 95, 64, 64],~
- Inside source: true
*** True Line Result
[2025, 95, 64, 64],
** Processing line: ~ [1953, 98, 64, 64],~
- Inside source: true
*** True Line Result
[1953, 98, 64, 64],
** Processing line: ~ [1894, 100, 64, 64],~
- Inside source: true
*** True Line Result
[1894, 100, 64, 64],
** Processing line: ~ [1870, 100, 64, 64],~
- Inside source: true
*** True Line Result
[1870, 100, 64, 64],
** Processing line: ~ [2029, 45, 64, 64],~
- Inside source: true
*** True Line Result
[2029, 45, 64, 64],
** Processing line: ~ [1971, 48, 64, 64],~
- Inside source: true
*** True Line Result
[1971, 48, 64, 64],
** Processing line: ~ [1915, 47, 64, 64],~
- Inside source: true
*** True Line Result
[1915, 47, 64, 64],
** Processing line: ~ [1873, 47, 64, 64],~
- Inside source: true
*** True Line Result
[1873, 47, 64, 64],
** Processing line: ~ [3956, 288, 64, 64],~
- Inside source: true
*** True Line Result
[3956, 288, 64, 64],
** Processing line: ~ [3954, 234, 64, 64],~
- Inside source: true
*** True Line Result
[3954, 234, 64, 64],
** Processing line: ~ [4042, 190, 64, 64],~
- Inside source: true
*** True Line Result
[4042, 190, 64, 64],
** Processing line: ~ [3990, 190, 64, 64],~
- Inside source: true
*** True Line Result
[3990, 190, 64, 64],
** Processing line: ~ [3958, 195, 64, 64],~
- Inside source: true
*** True Line Result
[3958, 195, 64, 64],
** Processing line: ~ [3422, 709, 64, 64],~
- Inside source: true
*** True Line Result
[3422, 709, 64, 64],
** Processing line: ~ [3425, 686, 64, 64],~
- Inside source: true
*** True Line Result
[3425, 686, 64, 64],
** Processing line: ~ [3368, 709, 64, 64],~
- Inside source: true
*** True Line Result
[3368, 709, 64, 64],
** Processing line: ~ [3364, 683, 64, 64],~
- Inside source: true
*** True Line Result
[3364, 683, 64, 64],
** Processing line: ~ [3312, 711, 64, 64],~
- Inside source: true
*** True Line Result
[3312, 711, 64, 64],
** Processing line: ~ [3307, 684, 64, 64],~
- Inside source: true
*** True Line Result
[3307, 684, 64, 64],
** Processing line: ~ [3266, 712, 64, 64],~
- Inside source: true
*** True Line Result
[3266, 712, 64, 64],
** Processing line: ~ [3269, 681, 64, 64],~
- Inside source: true
*** True Line Result
[3269, 681, 64, 64],
** Processing line: ~ [4384, 236, 64, 64],~
- Inside source: true
*** True Line Result
[4384, 236, 64, 64],
** Processing line: ~ [4320, 234, 64, 64],~
- Inside source: true
*** True Line Result
[4320, 234, 64, 64],
** Processing line: ~ [4257, 235, 64, 64],~
- Inside source: true
*** True Line Result
[4257, 235, 64, 64],
** Processing line: ~ [4192, 234, 64, 64],~
- Inside source: true
*** True Line Result
[4192, 234, 64, 64],
** Processing line: ~ [4162, 234, 64, 64],~
- Inside source: true
*** True Line Result
[4162, 234, 64, 64],
** Processing line: ~ [4269, 171, 64, 64],~
- Inside source: true
*** True Line Result
[4269, 171, 64, 64],
** Processing line: ~ [4267, 111, 64, 64],~
- Inside source: true
*** True Line Result
[4267, 111, 64, 64],
** Processing line: ~ [4266, 52, 64, 64],~
- Inside source: true
*** True Line Result
[4266, 52, 64, 64],
** Processing line: ~ [4580, 458, 64, 64],~
- Inside source: true
*** True Line Result
[4580, 458, 64, 64],
** Processing line: ~ [4582, 396, 64, 64],~
- Inside source: true
*** True Line Result
[4582, 396, 64, 64],
** Processing line: ~ [4582, 335, 64, 64],~
- Inside source: true
*** True Line Result
[4582, 335, 64, 64],
** Processing line: ~ [4581, 275, 64, 64],~
- Inside source: true
*** True Line Result
[4581, 275, 64, 64],
** Processing line: ~ [4581, 215, 64, 64],~
- Inside source: true
*** True Line Result
[4581, 215, 64, 64],
** Processing line: ~ [4581, 152, 64, 64],~
- Inside source: true
*** True Line Result
[4581, 152, 64, 64],
** Processing line: ~ [4582, 89, 64, 64],~
- Inside source: true
*** True Line Result
[4582, 89, 64, 64],
** Processing line: ~ [4583, 51, 64, 64],~
- Inside source: true
*** True Line Result
[4583, 51, 64, 64],
** Processing line: ~ [4810, 289, 64, 64],~
- Inside source: true
*** True Line Result
[4810, 289, 64, 64],
** Processing line: ~ [4810, 227, 64, 64],~
- Inside source: true
*** True Line Result
[4810, 227, 64, 64],
** Processing line: ~ [4895, 189, 64, 64],~
- Inside source: true
*** True Line Result
[4895, 189, 64, 64],
** Processing line: ~ [4844, 191, 64, 64],~
- Inside source: true
*** True Line Result
[4844, 191, 64, 64],
** Processing line: ~ [4809, 191, 64, 64],~
- Inside source: true
*** True Line Result
[4809, 191, 64, 64],
** Processing line: ~ [5235, 233, 64, 64],~
- Inside source: true
*** True Line Result
[5235, 233, 64, 64],
** Processing line: ~ [5176, 232, 64, 64],~
- Inside source: true
*** True Line Result
[5176, 232, 64, 64],
** Processing line: ~ [5118, 230, 64, 64],~
- Inside source: true
*** True Line Result
[5118, 230, 64, 64],
** Processing line: ~ [5060, 232, 64, 64],~
- Inside source: true
*** True Line Result
[5060, 232, 64, 64],
** Processing line: ~ [5015, 237, 64, 64],~
- Inside source: true
*** True Line Result
[5015, 237, 64, 64],
** Processing line: ~ [5123, 171, 64, 64],~
- Inside source: true
*** True Line Result
[5123, 171, 64, 64],
** Processing line: ~ [5123, 114, 64, 64],~
- Inside source: true
*** True Line Result
[5123, 114, 64, 64],
** Processing line: ~ [5121, 51, 64, 64],~
- Inside source: true
*** True Line Result
[5121, 51, 64, 64],
** Processing line: ~ [5523, 461, 64, 64],~
- Inside source: true
*** True Line Result
[5523, 461, 64, 64],
** Processing line: ~ [5123, 42, 64, 64],~
- Inside source: true
*** True Line Result
[5123, 42, 64, 64],
** Processing line: ~ [5525, 401, 64, 64],~
- Inside source: true
*** True Line Result
[5525, 401, 64, 64],
** Processing line: ~ [5525, 340, 64, 64],~
- Inside source: true
*** True Line Result
[5525, 340, 64, 64],
** Processing line: ~ [5526, 273, 64, 64],~
- Inside source: true
*** True Line Result
[5526, 273, 64, 64],
** Processing line: ~ [5527, 211, 64, 64],~
- Inside source: true
*** True Line Result
[5527, 211, 64, 64],
** Processing line: ~ [5525, 150, 64, 64],~
- Inside source: true
*** True Line Result
[5525, 150, 64, 64],
** Processing line: ~ [5527, 84, 64, 64],~
- Inside source: true
*** True Line Result
[5527, 84, 64, 64],
** Processing line: ~ [5524, 44, 64, 64],~
- Inside source: true
*** True Line Result
[5524, 44, 64, 64],
** Processing line: ~ [5861, 288, 64, 64],~
- Inside source: true
*** True Line Result
[5861, 288, 64, 64],
** Processing line: ~ [5861, 229, 64, 64],~
- Inside source: true
*** True Line Result
[5861, 229, 64, 64],
** Processing line: ~ [5945, 193, 64, 64],~
- Inside source: true
*** True Line Result
[5945, 193, 64, 64],
** Processing line: ~ [5904, 193, 64, 64],~
- Inside source: true
*** True Line Result
[5904, 193, 64, 64],
** Processing line: ~ [5856, 194, 64, 64],~
- Inside source: true
*** True Line Result
[5856, 194, 64, 64],
** Processing line: ~ [6542, 234, 64, 64],~
- Inside source: true
*** True Line Result
[6542, 234, 64, 64],
** Processing line: ~ [6478, 235, 64, 64],~
- Inside source: true
*** True Line Result
[6478, 235, 64, 64],
** Processing line: ~ [6413, 238, 64, 64],~
- Inside source: true
*** True Line Result
[6413, 238, 64, 64],
** Processing line: ~ [6348, 235, 64, 64],~
- Inside source: true
*** True Line Result
[6348, 235, 64, 64],
** Processing line: ~ [6285, 236, 64, 64],~
- Inside source: true
*** True Line Result
[6285, 236, 64, 64],
** Processing line: ~ [6222, 235, 64, 64],~
- Inside source: true
*** True Line Result
[6222, 235, 64, 64],
** Processing line: ~ [6160, 235, 64, 64],~
- Inside source: true
*** True Line Result
[6160, 235, 64, 64],
** Processing line: ~ [6097, 236, 64, 64],~
- Inside source: true
*** True Line Result
[6097, 236, 64, 64],
** Processing line: ~ [6069, 237, 64, 64],~
- Inside source: true
*** True Line Result
[6069, 237, 64, 64],
** Processing line: ~ [6321, 174, 64, 64],~
- Inside source: true
*** True Line Result
[6321, 174, 64, 64],
** Processing line: ~ [6318, 111, 64, 64],~
- Inside source: true
*** True Line Result
[6318, 111, 64, 64],
** Processing line: ~ [6320, 49, 64, 64],~
- Inside source: true
*** True Line Result
[6320, 49, 64, 64],
** Processing line: ~ [6753, 291, 64, 64],~
- Inside source: true
*** True Line Result
[6753, 291, 64, 64],
** Processing line: ~ [6752, 227, 64, 64],~
- Inside source: true
*** True Line Result
[6752, 227, 64, 64],
** Processing line: ~ [6753, 192, 64, 64],~
- Inside source: true
*** True Line Result
[6753, 192, 64, 64],
** Processing line: ~ [6692, 191, 64, 64],~
- Inside source: true
*** True Line Result
[6692, 191, 64, 64],
** Processing line: ~ [6668, 193, 64, 64],~
- Inside source: true
*** True Line Result
[6668, 193, 64, 64],
** Processing line: ~ [6336, 604, 64, 64],~
- Inside source: true
*** True Line Result
[6336, 604, 64, 64],
** Processing line: ~ [6309, 603, 64, 64],~
- Inside source: true
*** True Line Result
[6309, 603, 64, 64],
** Processing line: ~ [7264, 461, 64, 64],~
- Inside source: true
*** True Line Result
[7264, 461, 64, 64],
** Processing line: ~ [7264, 395, 64, 64],~
- Inside source: true
*** True Line Result
[7264, 395, 64, 64],
** Processing line: ~ [7264, 333, 64, 64],~
- Inside source: true
*** True Line Result
[7264, 333, 64, 64],
** Processing line: ~ [7264, 270, 64, 64],~
- Inside source: true
*** True Line Result
[7264, 270, 64, 64],
** Processing line: ~ [7265, 207, 64, 64],~
- Inside source: true
*** True Line Result
[7265, 207, 64, 64],
** Processing line: ~ [7266, 138, 64, 64],~
- Inside source: true
*** True Line Result
[7266, 138, 64, 64],
** Processing line: ~ [7264, 78, 64, 64],~
- Inside source: true
*** True Line Result
[7264, 78, 64, 64],
** Processing line: ~ [7266, 48, 64, 64],~
- Inside source: true
*** True Line Result
[7266, 48, 64, 64],
** Processing line: ~ [7582, 149, 64, 64],~
- Inside source: true
*** True Line Result
[7582, 149, 64, 64],
** Processing line: ~ [7524, 147, 64, 64],~
- Inside source: true
*** True Line Result
[7524, 147, 64, 64],
** Processing line: ~ [7461, 146, 64, 64],~
- Inside source: true
*** True Line Result
[7461, 146, 64, 64],
** Processing line: ~ [7425, 148, 64, 64],~
- Inside source: true
*** True Line Result
[7425, 148, 64, 64],
** Processing line: ~ [7580, 86, 64, 64],~
- Inside source: true
*** True Line Result
[7580, 86, 64, 64],
** Processing line: ~ [7582, 41, 64, 64],~
- Inside source: true
*** True Line Result
[7582, 41, 64, 64],
** Processing line: ~ [7519, 41, 64, 64],~
- Inside source: true
*** True Line Result
[7519, 41, 64, 64],
** Processing line: ~ [7460, 40, 64, 64],~
- Inside source: true
*** True Line Result
[7460, 40, 64, 64],
** Processing line: ~ [7427, 96, 64, 64],~
- Inside source: true
*** True Line Result
[7427, 96, 64, 64],
** Processing line: ~ [7427, 41, 64, 64],~
- Inside source: true
*** True Line Result
[7427, 41, 64, 64],
** Processing line: ~ [8060, 288, 64, 64],~
- Inside source: true
*** True Line Result
[8060, 288, 64, 64],
** Processing line: ~ [8059, 226, 64, 64],~
- Inside source: true
*** True Line Result
[8059, 226, 64, 64],
** Processing line: ~ [8145, 194, 64, 64],~
- Inside source: true
*** True Line Result
[8145, 194, 64, 64],
** Processing line: ~ [8081, 194, 64, 64],~
- Inside source: true
*** True Line Result
[8081, 194, 64, 64],
** Processing line: ~ [8058, 195, 64, 64],~
- Inside source: true
*** True Line Result
[8058, 195, 64, 64],
** Processing line: ~ [8485, 234, 64, 64],~
- Inside source: true
*** True Line Result
[8485, 234, 64, 64],
** Processing line: ~ [8422, 235, 64, 64],~
- Inside source: true
*** True Line Result
[8422, 235, 64, 64],
** Processing line: ~ [8360, 235, 64, 64],~
- Inside source: true
*** True Line Result
[8360, 235, 64, 64],
** Processing line: ~ [8296, 235, 64, 64],~
- Inside source: true
*** True Line Result
[8296, 235, 64, 64],
** Processing line: ~ [8266, 237, 64, 64],~
- Inside source: true
*** True Line Result
[8266, 237, 64, 64],
** Processing line: ~ [8371, 173, 64, 64],~
- Inside source: true
*** True Line Result
[8371, 173, 64, 64],
** Processing line: ~ [8370, 117, 64, 64],~
- Inside source: true
*** True Line Result
[8370, 117, 64, 64],
** Processing line: ~ [8372, 59, 64, 64],~
- Inside source: true
*** True Line Result
[8372, 59, 64, 64],
** Processing line: ~ [8372, 51, 64, 64],~
- Inside source: true
*** True Line Result
[8372, 51, 64, 64],
** Processing line: ~ [9147, 192, 64, 64],~
- Inside source: true
*** True Line Result
[9147, 192, 64, 64],
** Processing line: ~ [9063, 287, 64, 64],~
- Inside source: true
*** True Line Result
[9063, 287, 64, 64],
** Processing line: ~ [9064, 225, 64, 64],~
- Inside source: true
*** True Line Result
[9064, 225, 64, 64],
** Processing line: ~ [9085, 193, 64, 64],~
- Inside source: true
*** True Line Result
[9085, 193, 64, 64],
** Processing line: ~ [9063, 194, 64, 64],~
- Inside source: true
*** True Line Result
[9063, 194, 64, 64],
** Processing line: ~ [9492, 234, 64, 64],~
- Inside source: true
*** True Line Result
[9492, 234, 64, 64],
** Processing line: ~ [9428, 234, 64, 64],~
- Inside source: true
*** True Line Result
[9428, 234, 64, 64],
** Processing line: ~ [9365, 235, 64, 64],~
- Inside source: true
*** True Line Result
[9365, 235, 64, 64],
** Processing line: ~ [9302, 235, 64, 64],~
- Inside source: true
*** True Line Result
[9302, 235, 64, 64],
** Processing line: ~ [9270, 237, 64, 64],~
- Inside source: true
*** True Line Result
[9270, 237, 64, 64],
** Processing line: ~ [9374, 172, 64, 64],~
- Inside source: true
*** True Line Result
[9374, 172, 64, 64],
** Processing line: ~ [9376, 109, 64, 64],~
- Inside source: true
*** True Line Result
[9376, 109, 64, 64],
** Processing line: ~ [9377, 48, 64, 64],~
- Inside source: true
*** True Line Result
[9377, 48, 64, 64],
** Processing line: ~ [9545, 1060, 64, 64],~
- Inside source: true
*** True Line Result
[9545, 1060, 64, 64],
** Processing line: ~ [9482, 1062, 64, 64],~
- Inside source: true
*** True Line Result
[9482, 1062, 64, 64],
** Processing line: ~ [9423, 1062, 64, 64],~
- Inside source: true
*** True Line Result
[9423, 1062, 64, 64],
** Processing line: ~ [9387, 1062, 64, 64],~
- Inside source: true
*** True Line Result
[9387, 1062, 64, 64],
** Processing line: ~ [9541, 999, 64, 64],~
- Inside source: true
*** True Line Result
[9541, 999, 64, 64],
** Processing line: ~ [9542, 953, 64, 64],~
- Inside source: true
*** True Line Result
[9542, 953, 64, 64],
** Processing line: ~ [9478, 953, 64, 64],~
- Inside source: true
*** True Line Result
[9478, 953, 64, 64],
** Processing line: ~ [9388, 999, 64, 64],~
- Inside source: true
*** True Line Result
[9388, 999, 64, 64],
** Processing line: ~ [9414, 953, 64, 64],~
- Inside source: true
*** True Line Result
[9414, 953, 64, 64],
** Processing line: ~ [9389, 953, 64, 64],~
- Inside source: true
*** True Line Result
[9389, 953, 64, 64],
** Processing line: ~ [9294, 1194, 64, 64],~
- Inside source: true
*** True Line Result
[9294, 1194, 64, 64],
** Processing line: ~ [9245, 1195, 64, 64],~
- Inside source: true
*** True Line Result
[9245, 1195, 64, 64],
** Processing line: ~ [9297, 1143, 64, 64],~
- Inside source: true
*** True Line Result
[9297, 1143, 64, 64],
** Processing line: ~ [9245, 1144, 64, 64],~
- Inside source: true
*** True Line Result
[9245, 1144, 64, 64],
** Processing line: ~ [5575, 1781, 64, 64],~
- Inside source: true
*** True Line Result
[5575, 1781, 64, 64],
** Processing line: ~ [5574, 1753, 64, 64],~
- Inside source: true
*** True Line Result
[5574, 1753, 64, 64],
** Processing line: ~ [5522, 1782, 64, 64],~
- Inside source: true
*** True Line Result
[5522, 1782, 64, 64],
** Processing line: ~ [5518, 1753, 64, 64],~
- Inside source: true
*** True Line Result
[5518, 1753, 64, 64],
** Processing line: ~ [5472, 1783, 64, 64],~
- Inside source: true
*** True Line Result
[5472, 1783, 64, 64],
** Processing line: ~ [5471, 1751, 64, 64],~
- Inside source: true
*** True Line Result
[5471, 1751, 64, 64],
** Processing line: ~ [5419, 1781, 64, 64],~
- Inside source: true
*** True Line Result
[5419, 1781, 64, 64],
** Processing line: ~ [5421, 1749, 64, 64],~
- Inside source: true
*** True Line Result
[5421, 1749, 64, 64],
** Processing line: ~ [500, 3207, 64, 64],~
- Inside source: true
*** True Line Result
[500, 3207, 64, 64],
** Processing line: ~ [477, 3205, 64, 64],~
- Inside source: true
*** True Line Result
[477, 3205, 64, 64],
** Processing line: ~ [1282, 3214, 64, 64],~
- Inside source: true
*** True Line Result
[1282, 3214, 64, 64],
** Processing line: ~ [1221, 3214, 64, 64],~
- Inside source: true
*** True Line Result
[1221, 3214, 64, 64],
** Processing line: ~ [1188, 3215, 64, 64],~
- Inside source: true
*** True Line Result
[1188, 3215, 64, 64],
** Processing line: ~ [1345, 3103, 64, 64],~
- Inside source: true
*** True Line Result
[1345, 3103, 64, 64],
** Processing line: ~ [1288, 3103, 64, 64],~
- Inside source: true
*** True Line Result
[1288, 3103, 64, 64],
** Processing line: ~ [1231, 3104, 64, 64],~
- Inside source: true
*** True Line Result
[1231, 3104, 64, 64],
** Processing line: ~ [1190, 3153, 64, 64],~
- Inside source: true
*** True Line Result
[1190, 3153, 64, 64],
** Processing line: ~ [1189, 3105, 64, 64],~
- Inside source: true
*** True Line Result
[1189, 3105, 64, 64],
** Processing line: ~ [2255, 3508, 64, 64],~
- Inside source: true
*** True Line Result
[2255, 3508, 64, 64],
** Processing line: ~ [2206, 3510, 64, 64],~
- Inside source: true
*** True Line Result
[2206, 3510, 64, 64],
** Processing line: ~ [2254, 3458, 64, 64],~
- Inside source: true
*** True Line Result
[2254, 3458, 64, 64],
** Processing line: ~ [2202, 3458, 64, 64],~
- Inside source: true
*** True Line Result
[2202, 3458, 64, 64],
** Processing line: ~ [2754, 2930, 64, 64],~
- Inside source: true
*** True Line Result
[2754, 2930, 64, 64],
** Processing line: ~ [2726, 2932, 64, 64],~
- Inside source: true
*** True Line Result
[2726, 2932, 64, 64],
** Processing line: ~ [3408, 2874, 64, 64],~
- Inside source: true
*** True Line Result
[3408, 2874, 64, 64],
** Processing line: ~ [3407, 2849, 64, 64],~
- Inside source: true
*** True Line Result
[3407, 2849, 64, 64],
** Processing line: ~ [3345, 2872, 64, 64],~
- Inside source: true
*** True Line Result
[3345, 2872, 64, 64],
** Processing line: ~ [3342, 2847, 64, 64],~
- Inside source: true
*** True Line Result
[3342, 2847, 64, 64],
** Processing line: ~ [3284, 2874, 64, 64],~
- Inside source: true
*** True Line Result
[3284, 2874, 64, 64],
** Processing line: ~ [3284, 2848, 64, 64],~
- Inside source: true
*** True Line Result
[3284, 2848, 64, 64],
** Processing line: ~ [3248, 2878, 64, 64],~
- Inside source: true
*** True Line Result
[3248, 2878, 64, 64],
** Processing line: ~ [3252, 2848, 64, 64],~
- Inside source: true
*** True Line Result
[3252, 2848, 64, 64],
** Processing line: ~ [3953, 3274, 64, 64],~
- Inside source: true
*** True Line Result
[3953, 3274, 64, 64],
** Processing line: ~ [3899, 3277, 64, 64],~
- Inside source: true
*** True Line Result
[3899, 3277, 64, 64],
** Processing line: ~ [3951, 3222, 64, 64],~
- Inside source: true
*** True Line Result
[3951, 3222, 64, 64],
** Processing line: ~ [3900, 3222, 64, 64],~
- Inside source: true
*** True Line Result
[3900, 3222, 64, 64],
** Processing line: ~ [4310, 2968, 64, 64],~
- Inside source: true
*** True Line Result
[4310, 2968, 64, 64],
** Processing line: ~ [4246, 2969, 64, 64],~
- Inside source: true
*** True Line Result
[4246, 2969, 64, 64],
** Processing line: ~ [4183, 2965, 64, 64],~
- Inside source: true
*** True Line Result
[4183, 2965, 64, 64],
** Processing line: ~ [4153, 2967, 64, 64],~
- Inside source: true
*** True Line Result
[4153, 2967, 64, 64],
** Processing line: ~ [4311, 2910, 64, 64],~
- Inside source: true
*** True Line Result
[4311, 2910, 64, 64],
** Processing line: ~ [4308, 2856, 64, 64],~
- Inside source: true
*** True Line Result
[4308, 2856, 64, 64],
** Processing line: ~ [4251, 2855, 64, 64],~
- Inside source: true
*** True Line Result
[4251, 2855, 64, 64],
** Processing line: ~ [4197, 2857, 64, 64],~
- Inside source: true
*** True Line Result
[4197, 2857, 64, 64],
** Processing line: ~ [5466, 3184, 64, 64],~
- Inside source: true
*** True Line Result
[5466, 3184, 64, 64],
** Processing line: ~ [5466, 3158, 64, 64],~
- Inside source: true
*** True Line Result
[5466, 3158, 64, 64],
** Processing line: ~ [5404, 3184, 64, 64],~
- Inside source: true
*** True Line Result
[5404, 3184, 64, 64],
** Processing line: ~ [5404, 3156, 64, 64],~
- Inside source: true
*** True Line Result
[5404, 3156, 64, 64],
** Processing line: ~ [5343, 3185, 64, 64],~
- Inside source: true
*** True Line Result
[5343, 3185, 64, 64],
** Processing line: ~ [5342, 3156, 64, 64],~
- Inside source: true
*** True Line Result
[5342, 3156, 64, 64],
** Processing line: ~ [5308, 3185, 64, 64],~
- Inside source: true
*** True Line Result
[5308, 3185, 64, 64],
** Processing line: ~ [5307, 3154, 64, 64],~
- Inside source: true
*** True Line Result
[5307, 3154, 64, 64],
** Processing line: ~ [6163, 2950, 64, 64],~
- Inside source: true
*** True Line Result
[6163, 2950, 64, 64],
** Processing line: ~ [6111, 2952, 64, 64],~
- Inside source: true
*** True Line Result
[6111, 2952, 64, 64],
** Processing line: ~ [6164, 2898, 64, 64],~
- Inside source: true
*** True Line Result
[6164, 2898, 64, 64],
** Processing line: ~ [6113, 2897, 64, 64],~
- Inside source: true
*** True Line Result
[6113, 2897, 64, 64],
** Processing line: ~ [7725, 3156, 64, 64],~
- Inside source: true
*** True Line Result
[7725, 3156, 64, 64],
** Processing line: ~ [7661, 3157, 64, 64],~
- Inside source: true
*** True Line Result
[7661, 3157, 64, 64],
** Processing line: ~ [7598, 3157, 64, 64],~
- Inside source: true
*** True Line Result
[7598, 3157, 64, 64],
** Processing line: ~ [7533, 3156, 64, 64],~
- Inside source: true
*** True Line Result
[7533, 3156, 64, 64],
** Processing line: ~ [7468, 3156, 64, 64],~
- Inside source: true
*** True Line Result
[7468, 3156, 64, 64],
** Processing line: ~ [7401, 3156, 64, 64],~
- Inside source: true
*** True Line Result
[7401, 3156, 64, 64],
** Processing line: ~ [7335, 3157, 64, 64],~
- Inside source: true
*** True Line Result
[7335, 3157, 64, 64],
** Processing line: ~ [7270, 3157, 64, 64],~
- Inside source: true
*** True Line Result
[7270, 3157, 64, 64],
** Processing line: ~ [7208, 3157, 64, 64],~
- Inside source: true
*** True Line Result
[7208, 3157, 64, 64],
** Processing line: ~ [7146, 3157, 64, 64],~
- Inside source: true
*** True Line Result
[7146, 3157, 64, 64],
** Processing line: ~ [7134, 3159, 64, 64],~
- Inside source: true
*** True Line Result
[7134, 3159, 64, 64],
** Processing line: ~ [6685, 3726, 64, 64],~
- Inside source: true
*** True Line Result
[6685, 3726, 64, 64],
** Processing line: ~ [6685, 3663, 64, 64],~
- Inside source: true
*** True Line Result
[6685, 3663, 64, 64],
** Processing line: ~ [6683, 3602, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 3602, 64, 64],
** Processing line: ~ [6679, 3538, 64, 64],~
- Inside source: true
*** True Line Result
[6679, 3538, 64, 64],
** Processing line: ~ [6680, 3474, 64, 64],~
- Inside source: true
*** True Line Result
[6680, 3474, 64, 64],
** Processing line: ~ [6682, 3413, 64, 64],~
- Inside source: true
*** True Line Result
[6682, 3413, 64, 64],
** Processing line: ~ [6681, 3347, 64, 64],~
- Inside source: true
*** True Line Result
[6681, 3347, 64, 64],
** Processing line: ~ [6681, 3287, 64, 64],~
- Inside source: true
*** True Line Result
[6681, 3287, 64, 64],
** Processing line: ~ [6682, 3223, 64, 64],~
- Inside source: true
*** True Line Result
[6682, 3223, 64, 64],
** Processing line: ~ [6683, 3161, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 3161, 64, 64],
** Processing line: ~ [6682, 3102, 64, 64],~
- Inside source: true
*** True Line Result
[6682, 3102, 64, 64],
** Processing line: ~ [6684, 3042, 64, 64],~
- Inside source: true
*** True Line Result
[6684, 3042, 64, 64],
** Processing line: ~ [6685, 2980, 64, 64],~
- Inside source: true
*** True Line Result
[6685, 2980, 64, 64],
** Processing line: ~ [6685, 2920, 64, 64],~
- Inside source: true
*** True Line Result
[6685, 2920, 64, 64],
** Processing line: ~ [6683, 2859, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 2859, 64, 64],
** Processing line: ~ [6684, 2801, 64, 64],~
- Inside source: true
*** True Line Result
[6684, 2801, 64, 64],
** Processing line: ~ [6686, 2743, 64, 64],~
- Inside source: true
*** True Line Result
[6686, 2743, 64, 64],
** Processing line: ~ [6683, 2683, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 2683, 64, 64],
** Processing line: ~ [6681, 2622, 64, 64],~
- Inside source: true
*** True Line Result
[6681, 2622, 64, 64],
** Processing line: ~ [6682, 2559, 64, 64],~
- Inside source: true
*** True Line Result
[6682, 2559, 64, 64],
** Processing line: ~ [6683, 2498, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 2498, 64, 64],
** Processing line: ~ [6685, 2434, 64, 64],~
- Inside source: true
*** True Line Result
[6685, 2434, 64, 64],
** Processing line: ~ [6683, 2371, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 2371, 64, 64],
** Processing line: ~ [6683, 2306, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 2306, 64, 64],
** Processing line: ~ [6684, 2242, 64, 64],~
- Inside source: true
*** True Line Result
[6684, 2242, 64, 64],
** Processing line: ~ [6683, 2177, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 2177, 64, 64],
** Processing line: ~ [6683, 2112, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 2112, 64, 64],
** Processing line: ~ [6683, 2049, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 2049, 64, 64],
** Processing line: ~ [6683, 1985, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 1985, 64, 64],
** Processing line: ~ [6682, 1923, 64, 64],~
- Inside source: true
*** True Line Result
[6682, 1923, 64, 64],
** Processing line: ~ [6683, 1860, 64, 64],~
- Inside source: true
*** True Line Result
[6683, 1860, 64, 64],
** Processing line: ~ [6685, 1797, 64, 64],~
- Inside source: true
*** True Line Result
[6685, 1797, 64, 64],
** Processing line: ~ [6684, 1735, 64, 64],~
- Inside source: true
*** True Line Result
[6684, 1735, 64, 64],
** Processing line: ~ [6685, 1724, 64, 64],~
- Inside source: true
*** True Line Result
[6685, 1724, 64, 64],
** Processing line: ~ [7088, 1967, 64, 64],~
- Inside source: true
*** True Line Result
[7088, 1967, 64, 64],
** Processing line: ~ [7026, 1966, 64, 64],~
- Inside source: true
*** True Line Result
[7026, 1966, 64, 64],
** Processing line: ~ [6964, 1967, 64, 64],~
- Inside source: true
*** True Line Result
[6964, 1967, 64, 64],
** Processing line: ~ [6900, 1965, 64, 64],~
- Inside source: true
*** True Line Result
[6900, 1965, 64, 64],
** Processing line: ~ [6869, 1969, 64, 64],~
- Inside source: true
*** True Line Result
[6869, 1969, 64, 64],
** Processing line: ~ [6972, 1904, 64, 64],~
- Inside source: true
*** True Line Result
[6972, 1904, 64, 64],
** Processing line: ~ [6974, 1840, 64, 64],~
- Inside source: true
*** True Line Result
[6974, 1840, 64, 64],
** Processing line: ~ [6971, 1776, 64, 64],~
- Inside source: true
*** True Line Result
[6971, 1776, 64, 64],
** Processing line: ~ [6971, 1716, 64, 64],~
- Inside source: true
*** True Line Result
[6971, 1716, 64, 64],
** Processing line: ~ [7168, 1979, 64, 64],~
- Inside source: true
*** True Line Result
[7168, 1979, 64, 64],
** Processing line: ~ [7170, 1919, 64, 64],~
- Inside source: true
*** True Line Result
[7170, 1919, 64, 64],
** Processing line: ~ [7169, 1882, 64, 64],~
- Inside source: true
*** True Line Result
[7169, 1882, 64, 64],
** Processing line: ~ [7115, 1880, 64, 64],~
- Inside source: true
*** True Line Result
[7115, 1880, 64, 64],
** Processing line: ~ [7086, 1881, 64, 64],~
- Inside source: true
*** True Line Result
[7086, 1881, 64, 64],
** Processing line: ~ [7725, 1837, 64, 64],~
- Inside source: true
*** True Line Result
[7725, 1837, 64, 64],
** Processing line: ~ [7724, 1776, 64, 64],~
- Inside source: true
*** True Line Result
[7724, 1776, 64, 64],
** Processing line: ~ [7724, 1728, 64, 64],~
- Inside source: true
*** True Line Result
[7724, 1728, 64, 64],
** Processing line: ~ [7661, 1727, 64, 64],~
- Inside source: true
*** True Line Result
[7661, 1727, 64, 64],
** Processing line: ~ [7603, 1728, 64, 64],~
- Inside source: true
*** True Line Result
[7603, 1728, 64, 64],
** Processing line: ~ [7571, 1837, 64, 64],~
- Inside source: true
*** True Line Result
[7571, 1837, 64, 64],
** Processing line: ~ [7570, 1774, 64, 64],~
- Inside source: true
*** True Line Result
[7570, 1774, 64, 64],
** Processing line: ~ [7572, 1725, 64, 64],~
- Inside source: true
*** True Line Result
[7572, 1725, 64, 64],
** Processing line: ~ [7859, 2134, 64, 64],~
- Inside source: true
*** True Line Result
[7859, 2134, 64, 64],
** Processing line: ~ [7858, 2070, 64, 64],~
- Inside source: true
*** True Line Result
[7858, 2070, 64, 64],
** Processing line: ~ [7858, 2008, 64, 64],~
- Inside source: true
*** True Line Result
[7858, 2008, 64, 64],
** Processing line: ~ [7860, 1942, 64, 64],~
- Inside source: true
*** True Line Result
[7860, 1942, 64, 64],
** Processing line: ~ [7856, 1878, 64, 64],~
- Inside source: true
*** True Line Result
[7856, 1878, 64, 64],
** Processing line: ~ [7860, 1813, 64, 64],~
- Inside source: true
*** True Line Result
[7860, 1813, 64, 64],
** Processing line: ~ [7859, 1750, 64, 64],~
- Inside source: true
*** True Line Result
[7859, 1750, 64, 64],
** Processing line: ~ [7856, 1724, 64, 64],~
- Inside source: true
*** True Line Result
[7856, 1724, 64, 64],
** Processing line: ~ [8155, 1837, 64, 64],~
- Inside source: true
*** True Line Result
[8155, 1837, 64, 64],
** Processing line: ~ [8092, 1839, 64, 64],~
- Inside source: true
*** True Line Result
[8092, 1839, 64, 64],
** Processing line: ~ [8032, 1838, 64, 64],~
- Inside source: true
*** True Line Result
[8032, 1838, 64, 64],
** Processing line: ~ [7999, 1839, 64, 64],~
- Inside source: true
*** True Line Result
[7999, 1839, 64, 64],
** Processing line: ~ [8153, 1773, 64, 64],~
- Inside source: true
*** True Line Result
[8153, 1773, 64, 64],
** Processing line: ~ [8154, 1731, 64, 64],~
- Inside source: true
*** True Line Result
[8154, 1731, 64, 64],
** Processing line: ~ [8090, 1730, 64, 64],~
- Inside source: true
*** True Line Result
[8090, 1730, 64, 64],
** Processing line: ~ [8035, 1732, 64, 64],~
- Inside source: true
*** True Line Result
[8035, 1732, 64, 64],
** Processing line: ~ [8003, 1776, 64, 64],~
- Inside source: true
*** True Line Result
[8003, 1776, 64, 64],
** Processing line: ~ [8003, 1730, 64, 64],~
- Inside source: true
*** True Line Result
[8003, 1730, 64, 64],
** Processing line: ~ [8421, 1978, 64, 64],~
- Inside source: true
*** True Line Result
[8421, 1978, 64, 64],
** Processing line: ~ [8420, 1917, 64, 64],~
- Inside source: true
*** True Line Result
[8420, 1917, 64, 64],
** Processing line: ~ [8505, 1878, 64, 64],~
- Inside source: true
*** True Line Result
[8505, 1878, 64, 64],
** Processing line: ~ [8443, 1881, 64, 64],~
- Inside source: true
*** True Line Result
[8443, 1881, 64, 64],
** Processing line: ~ [8420, 1882, 64, 64],~
- Inside source: true
*** True Line Result
[8420, 1882, 64, 64],
** Processing line: ~ [8847, 1908, 64, 64],~
- Inside source: true
*** True Line Result
[8847, 1908, 64, 64],
** Processing line: ~ [8783, 1908, 64, 64],~
- Inside source: true
*** True Line Result
[8783, 1908, 64, 64],
** Processing line: ~ [8718, 1910, 64, 64],~
- Inside source: true
*** True Line Result
[8718, 1910, 64, 64],
** Processing line: ~ [8654, 1910, 64, 64],~
- Inside source: true
*** True Line Result
[8654, 1910, 64, 64],
** Processing line: ~ [8628, 1911, 64, 64],~
- Inside source: true
*** True Line Result
[8628, 1911, 64, 64],
** Processing line: ~ [8729, 1847, 64, 64],~
- Inside source: true
*** True Line Result
[8729, 1847, 64, 64],
** Processing line: ~ [8731, 1781, 64, 64],~
- Inside source: true
*** True Line Result
[8731, 1781, 64, 64],
** Processing line: ~ [8731, 1721, 64, 64],~
- Inside source: true
*** True Line Result
[8731, 1721, 64, 64],
** Processing line: ~ [9058, 2135, 64, 64],~
- Inside source: true
*** True Line Result
[9058, 2135, 64, 64],
** Processing line: ~ [9056, 2073, 64, 64],~
- Inside source: true
*** True Line Result
[9056, 2073, 64, 64],
** Processing line: ~ [9058, 2006, 64, 64],~
- Inside source: true
*** True Line Result
[9058, 2006, 64, 64],
** Processing line: ~ [9057, 1939, 64, 64],~
- Inside source: true
*** True Line Result
[9057, 1939, 64, 64],
** Processing line: ~ [9058, 1876, 64, 64],~
- Inside source: true
*** True Line Result
[9058, 1876, 64, 64],
** Processing line: ~ [9056, 1810, 64, 64],~
- Inside source: true
*** True Line Result
[9056, 1810, 64, 64],
** Processing line: ~ [9059, 1745, 64, 64],~
- Inside source: true
*** True Line Result
[9059, 1745, 64, 64],
** Processing line: ~ [9060, 1722, 64, 64],~
- Inside source: true
*** True Line Result
[9060, 1722, 64, 64],
** Processing line: ~ [9273, 1977, 64, 64],~
- Inside source: true
*** True Line Result
[9273, 1977, 64, 64],
** Processing line: ~ [9273, 1912, 64, 64],~
- Inside source: true
*** True Line Result
[9273, 1912, 64, 64],
** Processing line: ~ [9358, 1883, 64, 64],~
- Inside source: true
*** True Line Result
[9358, 1883, 64, 64],
** Processing line: ~ [9298, 1881, 64, 64],~
- Inside source: true
*** True Line Result
[9298, 1881, 64, 64],
** Processing line: ~ [9270, 1883, 64, 64],~
- Inside source: true
*** True Line Result
[9270, 1883, 64, 64],
** Processing line: ~ [9699, 1910, 64, 64],~
- Inside source: true
*** True Line Result
[9699, 1910, 64, 64],
** Processing line: ~ [9637, 1910, 64, 64],~
- Inside source: true
*** True Line Result
[9637, 1910, 64, 64],
** Processing line: ~ [9576, 1910, 64, 64],~
- Inside source: true
*** True Line Result
[9576, 1910, 64, 64],
** Processing line: ~ [9512, 1911, 64, 64],~
- Inside source: true
*** True Line Result
[9512, 1911, 64, 64],
** Processing line: ~ [9477, 1912, 64, 64],~
- Inside source: true
*** True Line Result
[9477, 1912, 64, 64],
** Processing line: ~ [9584, 1846, 64, 64],~
- Inside source: true
*** True Line Result
[9584, 1846, 64, 64],
** Processing line: ~ [9585, 1783, 64, 64],~
- Inside source: true
*** True Line Result
[9585, 1783, 64, 64],
** Processing line: ~ [9586, 1719, 64, 64],~
- Inside source: true
*** True Line Result
[9586, 1719, 64, 64],
** Processing line: ~ [8320, 2788, 64, 64],~
- Inside source: true
*** True Line Result
[8320, 2788, 64, 64],
** Processing line: ~ [8256, 2789, 64, 64],~
- Inside source: true
*** True Line Result
[8256, 2789, 64, 64],
** Processing line: ~ [8192, 2789, 64, 64],~
- Inside source: true
*** True Line Result
[8192, 2789, 64, 64],
** Processing line: ~ [8180, 2789, 64, 64],~
- Inside source: true
*** True Line Result
[8180, 2789, 64, 64],
** Processing line: ~ [8319, 2730, 64, 64],~
- Inside source: true
*** True Line Result
[8319, 2730, 64, 64],
** Processing line: ~ [8319, 2671, 64, 64],~
- Inside source: true
*** True Line Result
[8319, 2671, 64, 64],
** Processing line: ~ [8319, 2639, 64, 64],~
- Inside source: true
*** True Line Result
[8319, 2639, 64, 64],
** Processing line: ~ [8259, 2639, 64, 64],~
- Inside source: true
*** True Line Result
[8259, 2639, 64, 64],
** Processing line: ~ [8202, 2639, 64, 64],~
- Inside source: true
*** True Line Result
[8202, 2639, 64, 64],
** Processing line: ~ [8179, 2727, 64, 64],~
- Inside source: true
*** True Line Result
[8179, 2727, 64, 64],
** Processing line: ~ [8178, 2665, 64, 64],~
- Inside source: true
*** True Line Result
[8178, 2665, 64, 64],
** Processing line: ~ [8177, 2636, 64, 64],~
- Inside source: true
*** True Line Result
[8177, 2636, 64, 64],
** Processing line: ~ [9360, 3138, 64, 64],~
- Inside source: true
*** True Line Result
[9360, 3138, 64, 64],
** Processing line: ~ [9296, 3137, 64, 64],~
- Inside source: true
*** True Line Result
[9296, 3137, 64, 64],
** Processing line: ~ [9235, 3139, 64, 64],~
- Inside source: true
*** True Line Result
[9235, 3139, 64, 64],
** Processing line: ~ [9174, 3139, 64, 64],~
- Inside source: true
*** True Line Result
[9174, 3139, 64, 64],
** Processing line: ~ [9113, 3138, 64, 64],~
- Inside source: true
*** True Line Result
[9113, 3138, 64, 64],
** Processing line: ~ [9050, 3138, 64, 64],~
- Inside source: true
*** True Line Result
[9050, 3138, 64, 64],
** Processing line: ~ [8988, 3138, 64, 64],~
- Inside source: true
*** True Line Result
[8988, 3138, 64, 64],
** Processing line: ~ [8925, 3138, 64, 64],~
- Inside source: true
*** True Line Result
[8925, 3138, 64, 64],
** Processing line: ~ [8860, 3136, 64, 64],~
- Inside source: true
*** True Line Result
[8860, 3136, 64, 64],
** Processing line: ~ [8797, 3136, 64, 64],~
- Inside source: true
*** True Line Result
[8797, 3136, 64, 64],
** Processing line: ~ [8770, 3138, 64, 64],~
- Inside source: true
*** True Line Result
[8770, 3138, 64, 64],
** Processing line: ~ [8827, 4171, 64, 64],~
- Inside source: true
*** True Line Result
[8827, 4171, 64, 64],
** Processing line: ~ [8827, 4107, 64, 64],~
- Inside source: true
*** True Line Result
[8827, 4107, 64, 64],
** Processing line: ~ [8827, 4043, 64, 64],~
- Inside source: true
*** True Line Result
[8827, 4043, 64, 64],
** Processing line: ~ [8827, 3978, 64, 64],~
- Inside source: true
*** True Line Result
[8827, 3978, 64, 64],
** Processing line: ~ [8825, 3914, 64, 64],~
- Inside source: true
*** True Line Result
[8825, 3914, 64, 64],
** Processing line: ~ [8824, 3858, 64, 64],~
- Inside source: true
*** True Line Result
[8824, 3858, 64, 64],
** Processing line: ~ [9635, 4234, 64, 64],~
- Inside source: true
*** True Line Result
[9635, 4234, 64, 64],
** Processing line: ~ [9584, 4235, 64, 64],~
- Inside source: true
*** True Line Result
[9584, 4235, 64, 64],
** Processing line: ~ [9634, 4187, 64, 64],~
- Inside source: true
*** True Line Result
[9634, 4187, 64, 64],
** Processing line: ~ [9582, 4183, 64, 64],~
- Inside source: true
*** True Line Result
[9582, 4183, 64, 64],
** Processing line: ~ [9402, 5114, 64, 64],~
- Inside source: true
*** True Line Result
[9402, 5114, 64, 64],
** Processing line: ~ [9402, 5087, 64, 64],~
- Inside source: true
*** True Line Result
[9402, 5087, 64, 64],
** Processing line: ~ [9347, 5113, 64, 64],~
- Inside source: true
*** True Line Result
[9347, 5113, 64, 64],
** Processing line: ~ [9345, 5086, 64, 64],~
- Inside source: true
*** True Line Result
[9345, 5086, 64, 64],
** Processing line: ~ [9287, 5114, 64, 64],~
- Inside source: true
*** True Line Result
[9287, 5114, 64, 64],
** Processing line: ~ [9285, 5085, 64, 64],~
- Inside source: true
*** True Line Result
[9285, 5085, 64, 64],
** Processing line: ~ [9245, 5114, 64, 64],~
- Inside source: true
*** True Line Result
[9245, 5114, 64, 64],
** Processing line: ~ [9244, 5086, 64, 64],~
- Inside source: true
*** True Line Result
[9244, 5086, 64, 64],
** Processing line: ~ [9336, 5445, 64, 64],~
- Inside source: true
*** True Line Result
[9336, 5445, 64, 64],
** Processing line: ~ [9285, 5445, 64, 64],~
- Inside source: true
*** True Line Result
[9285, 5445, 64, 64],
** Processing line: ~ [9337, 5395, 64, 64],~
- Inside source: true
*** True Line Result
[9337, 5395, 64, 64],
** Processing line: ~ [9283, 5393, 64, 64],~
- Inside source: true
*** True Line Result
[9283, 5393, 64, 64],
** Processing line: ~ [8884, 4968, 64, 64],~
- Inside source: true
*** True Line Result
[8884, 4968, 64, 64],
** Processing line: ~ [8884, 4939, 64, 64],~
- Inside source: true
*** True Line Result
[8884, 4939, 64, 64],
** Processing line: ~ [8822, 4967, 64, 64],~
- Inside source: true
*** True Line Result
[8822, 4967, 64, 64],
** Processing line: ~ [8823, 4940, 64, 64],~
- Inside source: true
*** True Line Result
[8823, 4940, 64, 64],
** Processing line: ~ [8765, 4967, 64, 64],~
- Inside source: true
*** True Line Result
[8765, 4967, 64, 64],
** Processing line: ~ [8762, 4937, 64, 64],~
- Inside source: true
*** True Line Result
[8762, 4937, 64, 64],
** Processing line: ~ [8726, 4969, 64, 64],~
- Inside source: true
*** True Line Result
[8726, 4969, 64, 64],
** Processing line: ~ [8727, 4939, 64, 64],~
- Inside source: true
*** True Line Result
[8727, 4939, 64, 64],
** Processing line: ~ [7946, 5248, 64, 64],~
- Inside source: true
*** True Line Result
[7946, 5248, 64, 64],
** Processing line: ~ [7945, 5220, 64, 64],~
- Inside source: true
*** True Line Result
[7945, 5220, 64, 64],
** Processing line: ~ [7887, 5248, 64, 64],~
- Inside source: true
*** True Line Result
[7887, 5248, 64, 64],
** Processing line: ~ [7886, 5219, 64, 64],~
- Inside source: true
*** True Line Result
[7886, 5219, 64, 64],
** Processing line: ~ [7830, 5248, 64, 64],~
- Inside source: true
*** True Line Result
[7830, 5248, 64, 64],
** Processing line: ~ [7827, 5218, 64, 64],~
- Inside source: true
*** True Line Result
[7827, 5218, 64, 64],
** Processing line: ~ [7781, 5248, 64, 64],~
- Inside source: true
*** True Line Result
[7781, 5248, 64, 64],
** Processing line: ~ [7781, 5216, 64, 64],~
- Inside source: true
*** True Line Result
[7781, 5216, 64, 64],
** Processing line: ~ [6648, 4762, 64, 64],~
- Inside source: true
*** True Line Result
[6648, 4762, 64, 64],
** Processing line: ~ [6621, 4761, 64, 64],~
- Inside source: true
*** True Line Result
[6621, 4761, 64, 64],
** Processing line: ~ [5011, 4446, 64, 64],~
- Inside source: true
*** True Line Result
[5011, 4446, 64, 64],
** Processing line: ~ [4982, 4444, 64, 64],~
- Inside source: true
*** True Line Result
[4982, 4444, 64, 64],
** Processing line: ~ [4146, 4641, 64, 64],~
- Inside source: true
*** True Line Result
[4146, 4641, 64, 64],
** Processing line: ~ [4092, 4643, 64, 64],~
- Inside source: true
*** True Line Result
[4092, 4643, 64, 64],
** Processing line: ~ [4145, 4589, 64, 64],~
- Inside source: true
*** True Line Result
[4145, 4589, 64, 64],
** Processing line: ~ [4091, 4590, 64, 64],~
- Inside source: true
*** True Line Result
[4091, 4590, 64, 64],
** Processing line: ~ [4139, 4497, 64, 64],~
- Inside source: true
*** True Line Result
[4139, 4497, 64, 64],
** Processing line: ~ [4135, 4437, 64, 64],~
- Inside source: true
*** True Line Result
[4135, 4437, 64, 64],
** Processing line: ~ [4135, 4383, 64, 64],~
- Inside source: true
*** True Line Result
[4135, 4383, 64, 64],
** Processing line: ~ [4078, 4495, 64, 64],~
- Inside source: true
*** True Line Result
[4078, 4495, 64, 64],
** Processing line: ~ [4014, 4494, 64, 64],~
- Inside source: true
*** True Line Result
[4014, 4494, 64, 64],
** Processing line: ~ [3979, 4496, 64, 64],~
- Inside source: true
*** True Line Result
[3979, 4496, 64, 64],
** Processing line: ~ [4074, 4384, 64, 64],~
- Inside source: true
*** True Line Result
[4074, 4384, 64, 64],
** Processing line: ~ [4015, 4381, 64, 64],~
- Inside source: true
*** True Line Result
[4015, 4381, 64, 64],
** Processing line: ~ [3980, 4433, 64, 64],~
- Inside source: true
*** True Line Result
[3980, 4433, 64, 64],
** Processing line: ~ [3981, 4384, 64, 64],~
- Inside source: true
*** True Line Result
[3981, 4384, 64, 64],
** Processing line: ~ [3276, 4279, 64, 64],~
- Inside source: true
*** True Line Result
[3276, 4279, 64, 64],
** Processing line: ~ [3275, 4218, 64, 64],~
- Inside source: true
*** True Line Result
[3275, 4218, 64, 64],
** Processing line: ~ [3276, 4170, 64, 64],~
- Inside source: true
*** True Line Result
[3276, 4170, 64, 64],
** Processing line: ~ [3211, 4164, 64, 64],~
- Inside source: true
*** True Line Result
[3211, 4164, 64, 64],
** Processing line: ~ [3213, 4280, 64, 64],~
- Inside source: true
*** True Line Result
[3213, 4280, 64, 64],
** Processing line: ~ [3156, 4278, 64, 64],~
- Inside source: true
*** True Line Result
[3156, 4278, 64, 64],
** Processing line: ~ [3120, 4278, 64, 64],~
- Inside source: true
*** True Line Result
[3120, 4278, 64, 64],
** Processing line: ~ [3151, 4163, 64, 64],~
- Inside source: true
*** True Line Result
[3151, 4163, 64, 64],
** Processing line: ~ [3120, 4216, 64, 64],~
- Inside source: true
*** True Line Result
[3120, 4216, 64, 64],
** Processing line: ~ [3120, 4161, 64, 64],~
- Inside source: true
*** True Line Result
[3120, 4161, 64, 64],
** Processing line: ~ [1536, 4171, 64, 64],~
- Inside source: true
*** True Line Result
[1536, 4171, 64, 64],
** Processing line: ~ [1536, 4110, 64, 64],~
- Inside source: true
*** True Line Result
[1536, 4110, 64, 64],
** Processing line: ~ [1535, 4051, 64, 64],~
- Inside source: true
*** True Line Result
[1535, 4051, 64, 64],
** Processing line: ~ [1536, 3991, 64, 64],~
- Inside source: true
*** True Line Result
[1536, 3991, 64, 64],
** Processing line: ~ [1536, 3928, 64, 64],~
- Inside source: true
*** True Line Result
[1536, 3928, 64, 64],
** Processing line: ~ [1536, 3863, 64, 64],~
- Inside source: true
*** True Line Result
[1536, 3863, 64, 64],
** Processing line: ~ [1078, 4605, 64, 64],~
- Inside source: true
*** True Line Result
[1078, 4605, 64, 64],
** Processing line: ~ [1076, 4577, 64, 64],~
- Inside source: true
*** True Line Result
[1076, 4577, 64, 64],
** Processing line: ~ [1018, 4604, 64, 64],~
- Inside source: true
*** True Line Result
[1018, 4604, 64, 64],
** Processing line: ~ [1018, 4575, 64, 64],~
- Inside source: true
*** True Line Result
[1018, 4575, 64, 64],
** Processing line: ~ [957, 4606, 64, 64],~
- Inside source: true
*** True Line Result
[957, 4606, 64, 64],
** Processing line: ~ [960, 4575, 64, 64],~
- Inside source: true
*** True Line Result
[960, 4575, 64, 64],
** Processing line: ~ [918, 4602, 64, 64],~
- Inside source: true
*** True Line Result
[918, 4602, 64, 64],
** Processing line: ~ [918, 4580, 64, 64],~
- Inside source: true
*** True Line Result
[918, 4580, 64, 64],
** Processing line: ~ [394, 4164, 64, 64],~
- Inside source: true
*** True Line Result
[394, 4164, 64, 64],
** Processing line: ~ [335, 4163, 64, 64],~
- Inside source: true
*** True Line Result
[335, 4163, 64, 64],
** Processing line: ~ [274, 4161, 64, 64],~
- Inside source: true
*** True Line Result
[274, 4161, 64, 64],
** Processing line: ~ [236, 4163, 64, 64],~
- Inside source: true
*** True Line Result
[236, 4163, 64, 64],
** Processing line: ~ [394, 4140, 64, 64],~
- Inside source: true
*** True Line Result
[394, 4140, 64, 64],
** Processing line: ~ [329, 4139, 64, 64],~
- Inside source: true
*** True Line Result
[329, 4139, 64, 64],
** Processing line: ~ [268, 4139, 64, 64],~
- Inside source: true
*** True Line Result
[268, 4139, 64, 64],
** Processing line: ~ [239, 4139, 64, 64],~
- Inside source: true
*** True Line Result
[239, 4139, 64, 64],
** Processing line: ~ [4326, 5073, 64, 64],~
- Inside source: true
*** True Line Result
[4326, 5073, 64, 64],
** Processing line: ~ [4324, 5042, 64, 64],~
- Inside source: true
*** True Line Result
[4324, 5042, 64, 64],
** Processing line: ~ [4265, 5074, 64, 64],~
- Inside source: true
*** True Line Result
[4265, 5074, 64, 64],
** Processing line: ~ [4263, 5042, 64, 64],~
- Inside source: true
*** True Line Result
[4263, 5042, 64, 64],
** Processing line: ~ [4214, 5072, 64, 64],~
- Inside source: true
*** True Line Result
[4214, 5072, 64, 64],
** Processing line: ~ [4211, 5043, 64, 64],~
- Inside source: true
*** True Line Result
[4211, 5043, 64, 64],
** Processing line: ~ [4166, 5073, 64, 64],~
- Inside source: true
*** True Line Result
[4166, 5073, 64, 64],
** Processing line: ~ [4164, 5041, 64, 64],~
- Inside source: true
*** True Line Result
[4164, 5041, 64, 64],
** Processing line: ~ [4844, 5216, 64, 64],~
- Inside source: true
*** True Line Result
[4844, 5216, 64, 64],
** Processing line: ~ [4844, 5189, 64, 64],~
- Inside source: true
*** True Line Result
[4844, 5189, 64, 64],
** Processing line: ~ [4785, 5217, 64, 64],~
- Inside source: true
*** True Line Result
[4785, 5217, 64, 64],
** Processing line: ~ [4790, 5187, 64, 64],~
- Inside source: true
*** True Line Result
[4790, 5187, 64, 64],
** Processing line: ~ [4726, 5219, 64, 64],~
- Inside source: true
*** True Line Result
[4726, 5219, 64, 64],
** Processing line: ~ [4728, 5185, 64, 64],~
- Inside source: true
*** True Line Result
[4728, 5185, 64, 64],
** Processing line: ~ [4681, 5218, 64, 64],~
- Inside source: true
*** True Line Result
[4681, 5218, 64, 64],
** Processing line: ~ [4684, 5186, 64, 64],~
- Inside source: true
*** True Line Result
[4684, 5186, 64, 64],
** Processing line: ~ [4789, 4926, 64, 64],~
- Inside source: true
*** True Line Result
[4789, 4926, 64, 64],
** Processing line: ~ [4734, 4928, 64, 64],~
- Inside source: true
*** True Line Result
[4734, 4928, 64, 64],
** Processing line: ~ [4787, 4876, 64, 64],~
- Inside source: true
*** True Line Result
[4787, 4876, 64, 64],
** Processing line: ~ [4738, 4874, 64, 64],~
- Inside source: true
*** True Line Result
[4738, 4874, 64, 64],
** Processing line: ~ [4775, 5548, 64, 64],~
- Inside source: true
*** True Line Result
[4775, 5548, 64, 64],
** Processing line: ~ [4775, 5495, 64, 64],~
- Inside source: true
*** True Line Result
[4775, 5495, 64, 64],
** Processing line: ~ [4723, 5550, 64, 64],~
- Inside source: true
*** True Line Result
[4723, 5550, 64, 64],
** Processing line: ~ [4725, 5494, 64, 64],~
- Inside source: true
*** True Line Result
[4725, 5494, 64, 64],
** Processing line: ~ [1360, 5269, 64, 64],~
- Inside source: true
*** True Line Result
[1360, 5269, 64, 64],
** Processing line: ~ [1362, 5218, 64, 64],~
- Inside source: true
*** True Line Result
[1362, 5218, 64, 64],
** Processing line: ~ [1315, 5266, 64, 64],~
- Inside source: true
*** True Line Result
[1315, 5266, 64, 64],
** Processing line: ~ [1282, 5266, 64, 64],~
- Inside source: true
*** True Line Result
[1282, 5266, 64, 64],
** Processing line: ~ [1246, 5311, 64, 64],~
- Inside source: true
*** True Line Result
[1246, 5311, 64, 64],
** Processing line: ~ [1190, 5312, 64, 64],~
- Inside source: true
*** True Line Result
[1190, 5312, 64, 64],
** Processing line: ~ [1136, 5310, 64, 64],~
- Inside source: true
*** True Line Result
[1136, 5310, 64, 64],
** Processing line: ~ [1121, 5427, 64, 64],~
- Inside source: true
*** True Line Result
[1121, 5427, 64, 64],
** Processing line: ~ [1121, 5370, 64, 64],~
- Inside source: true
*** True Line Result
[1121, 5370, 64, 64],
** Processing line: ~ [1074, 5427, 64, 64],~
- Inside source: true
*** True Line Result
[1074, 5427, 64, 64],
** Processing line: ~ [1064, 5423, 64, 64],~
- Inside source: true
*** True Line Result
[1064, 5423, 64, 64],
** Processing line: ~ [1052, 5417, 64, 64],~
- Inside source: true
*** True Line Result
[1052, 5417, 64, 64],
** Processing line: ~ [1050, 5368, 64, 64],~
- Inside source: true
*** True Line Result
[1050, 5368, 64, 64],
** Processing line: ~ [1008, 5314, 64, 64],~
- Inside source: true
*** True Line Result
[1008, 5314, 64, 64],
** Processing line: ~ [997, 5307, 64, 64],~
- Inside source: true
*** True Line Result
[997, 5307, 64, 64],
** Processing line: ~ [977, 5299, 64, 64],~
- Inside source: true
*** True Line Result
[977, 5299, 64, 64],
** Processing line: ~ [976, 5248, 64, 64],~
- Inside source: true
*** True Line Result
[976, 5248, 64, 64],
** Processing line: ~ [825, 5267, 64, 64],~
- Inside source: true
*** True Line Result
[825, 5267, 64, 64],
** Processing line: ~ [826, 5213, 64, 64],~
- Inside source: true
*** True Line Result
[826, 5213, 64, 64],
** Processing line: ~ [776, 5267, 64, 64],~
- Inside source: true
*** True Line Result
[776, 5267, 64, 64],
** Processing line: ~ [768, 5261, 64, 64],~
- Inside source: true
*** True Line Result
[768, 5261, 64, 64],
** Processing line: ~ [755, 5256, 64, 64],~
- Inside source: true
*** True Line Result
[755, 5256, 64, 64],
** Processing line: ~ [753, 5209, 64, 64],~
- Inside source: true
*** True Line Result
[753, 5209, 64, 64],
** Processing line: ~ [1299, 5206, 64, 64],~
- Inside source: true
*** True Line Result
[1299, 5206, 64, 64],
** Processing line: ~ [1238, 5204, 64, 64],~
- Inside source: true
*** True Line Result
[1238, 5204, 64, 64],
** Processing line: ~ [1178, 5203, 64, 64],~
- Inside source: true
*** True Line Result
[1178, 5203, 64, 64],
** Processing line: ~ [1124, 5204, 64, 64],~
- Inside source: true
*** True Line Result
[1124, 5204, 64, 64],
** Processing line: ~ [1065, 5206, 64, 64],~
- Inside source: true
*** True Line Result
[1065, 5206, 64, 64],
** Processing line: ~ [1008, 5203, 64, 64],~
- Inside source: true
*** True Line Result
[1008, 5203, 64, 64],
** Processing line: ~ [977, 5214, 64, 64],~
- Inside source: true
*** True Line Result
[977, 5214, 64, 64],
** Processing line: ~ [410, 5313, 64, 64],~
- Inside source: true
*** True Line Result
[410, 5313, 64, 64],
** Processing line: ~ [407, 5249, 64, 64],~
- Inside source: true
*** True Line Result
[407, 5249, 64, 64],
** Processing line: ~ [411, 5225, 64, 64],~
- Inside source: true
*** True Line Result
[411, 5225, 64, 64],
** Processing line: ~ [397, 5217, 64, 64],~
- Inside source: true
*** True Line Result
[397, 5217, 64, 64],
** Processing line: ~ [378, 5209, 64, 64],~
- Inside source: true
*** True Line Result
[378, 5209, 64, 64],
** Processing line: ~ [358, 5312, 64, 64],~
- Inside source: true
*** True Line Result
[358, 5312, 64, 64],
** Processing line: ~ [287, 5427, 64, 64],~
- Inside source: true
*** True Line Result
[287, 5427, 64, 64],
** Processing line: ~ [286, 5364, 64, 64],~
- Inside source: true
*** True Line Result
[286, 5364, 64, 64],
** Processing line: ~ [300, 5313, 64, 64],~
- Inside source: true
*** True Line Result
[300, 5313, 64, 64],
** Processing line: ~ [242, 5427, 64, 64],~
- Inside source: true
*** True Line Result
[242, 5427, 64, 64],
** Processing line: ~ [229, 5420, 64, 64],~
- Inside source: true
*** True Line Result
[229, 5420, 64, 64],
** Processing line: ~ [217, 5416, 64, 64],~
- Inside source: true
*** True Line Result
[217, 5416, 64, 64],
** Processing line: ~ [215, 5364, 64, 64],~
- Inside source: true
*** True Line Result
[215, 5364, 64, 64],
** Processing line: ~ [174, 5311, 64, 64],~
- Inside source: true
*** True Line Result
[174, 5311, 64, 64],
** Processing line: ~ [165, 5308, 64, 64],~
- Inside source: true
*** True Line Result
[165, 5308, 64, 64],
** Processing line: ~ [139, 5300, 64, 64],~
- Inside source: true
*** True Line Result
[139, 5300, 64, 64],
** Processing line: ~ [141, 5236, 64, 64],~
- Inside source: true
*** True Line Result
[141, 5236, 64, 64],
** Processing line: ~ [141, 5211, 64, 64],~
- Inside source: true
*** True Line Result
[141, 5211, 64, 64],
** Processing line: ~ [315, 5208, 64, 64],~
- Inside source: true
*** True Line Result
[315, 5208, 64, 64],
** Processing line: ~ [251, 5208, 64, 64],~
- Inside source: true
*** True Line Result
[251, 5208, 64, 64],
** Processing line: ~ [211, 5211, 64, 64],~
- Inside source: true
*** True Line Result
[211, 5211, 64, 64],
** Processing line: ~ [8050, 4060, 64, 64],~
- Inside source: true
*** True Line Result
[8050, 4060, 64, 64],
** Processing line: ~ [7992, 4060, 64, 64],~
- Inside source: true
*** True Line Result
[7992, 4060, 64, 64],
** Processing line: ~ [7929, 4060, 64, 64],~
- Inside source: true
*** True Line Result
[7929, 4060, 64, 64],
** Processing line: ~ [7866, 4061, 64, 64],~
- Inside source: true
*** True Line Result
[7866, 4061, 64, 64],
** Processing line: ~ [7828, 4063, 64, 64],~
- Inside source: true
*** True Line Result
[7828, 4063, 64, 64],
** Processing line: ~ [7934, 4001, 64, 64],~
- Inside source: true
*** True Line Result
[7934, 4001, 64, 64],
** Processing line: ~ [7935, 3936, 64, 64],~
- Inside source: true
*** True Line Result
[7935, 3936, 64, 64],
** Processing line: ~ [7935, 3875, 64, 64],~
- Inside source: true
*** True Line Result
[7935, 3875, 64, 64],
** Processing line: ~ [7622, 4111, 64, 64],~
- Inside source: true
*** True Line Result
[7622, 4111, 64, 64],
** Processing line: ~ [7623, 4049, 64, 64],~
- Inside source: true
*** True Line Result
[7623, 4049, 64, 64],
** Processing line: ~ [7707, 4018, 64, 64],~
- Inside source: true
*** True Line Result
[7707, 4018, 64, 64],
** Processing line: ~ [7663, 4019, 64, 64],~
- Inside source: true
*** True Line Result
[7663, 4019, 64, 64],
** Processing line: ~ [7623, 4017, 64, 64],~
- Inside source: true
*** True Line Result
[7623, 4017, 64, 64],
** Processing line: ~ [7193, 4060, 64, 64],~
- Inside source: true
*** True Line Result
[7193, 4060, 64, 64],
** Processing line: ~ [7131, 4059, 64, 64],~
- Inside source: true
*** True Line Result
[7131, 4059, 64, 64],
** Processing line: ~ [7070, 4057, 64, 64],~
- Inside source: true
*** True Line Result
[7070, 4057, 64, 64],
** Processing line: ~ [7008, 4060, 64, 64],~
- Inside source: true
*** True Line Result
[7008, 4060, 64, 64],
** Processing line: ~ [6977, 4060, 64, 64],~
- Inside source: true
*** True Line Result
[6977, 4060, 64, 64],
** Processing line: ~ [7080, 3998, 64, 64],~
- Inside source: true
*** True Line Result
[7080, 3998, 64, 64],
** Processing line: ~ [7081, 3935, 64, 64],~
- Inside source: true
*** True Line Result
[7081, 3935, 64, 64],
** Processing line: ~ [7080, 3873, 64, 64],~
- Inside source: true
*** True Line Result
[7080, 3873, 64, 64],
** Processing line: ~ [6855, 4019, 64, 64],~
- Inside source: true
*** True Line Result
[6855, 4019, 64, 64],
** Processing line: ~ [6790, 4018, 64, 64],~
- Inside source: true
*** True Line Result
[6790, 4018, 64, 64],
** Processing line: ~ [6770, 4114, 64, 64],~
- Inside source: true
*** True Line Result
[6770, 4114, 64, 64],
** Processing line: ~ [6770, 4060, 64, 64],~
- Inside source: true
*** True Line Result
[6770, 4060, 64, 64],
** Processing line: ~ [6768, 4013, 64, 64],~
- Inside source: true
*** True Line Result
[6768, 4013, 64, 64],
** Processing line: ~ [6345, 4060, 64, 64],~
- Inside source: true
*** True Line Result
[6345, 4060, 64, 64],
** Processing line: ~ [6284, 4062, 64, 64],~
- Inside source: true
*** True Line Result
[6284, 4062, 64, 64],
** Processing line: ~ [6222, 4061, 64, 64],~
- Inside source: true
*** True Line Result
[6222, 4061, 64, 64],
** Processing line: ~ [6166, 4061, 64, 64],~
- Inside source: true
*** True Line Result
[6166, 4061, 64, 64],
** Processing line: ~ [6124, 4066, 64, 64],~
- Inside source: true
*** True Line Result
[6124, 4066, 64, 64],
** Processing line: ~ [6226, 3995, 64, 64],~
- Inside source: true
*** True Line Result
[6226, 3995, 64, 64],
** Processing line: ~ [6226, 3933, 64, 64],~
- Inside source: true
*** True Line Result
[6226, 3933, 64, 64],
** Processing line: ~ [6228, 3868, 64, 64],~
- Inside source: true
*** True Line Result
[6228, 3868, 64, 64],
** Processing line: ~ [5916, 4113, 64, 64],~
- Inside source: true
*** True Line Result
[5916, 4113, 64, 64],
** Processing line: ~ [5918, 4052, 64, 64],~
- Inside source: true
*** True Line Result
[5918, 4052, 64, 64],
** Processing line: ~ [6001, 4018, 64, 64],~
- Inside source: true
*** True Line Result
[6001, 4018, 64, 64],
** Processing line: ~ [5941, 4019, 64, 64],~
- Inside source: true
*** True Line Result
[5941, 4019, 64, 64],
** Processing line: ~ [5918, 4020, 64, 64],~
- Inside source: true
*** True Line Result
[5918, 4020, 64, 64],
** Processing line: ~ [5501, 4059, 64, 64],~
- Inside source: true
*** True Line Result
[5501, 4059, 64, 64],
** Processing line: ~ [5439, 4061, 64, 64],~
- Inside source: true
*** True Line Result
[5439, 4061, 64, 64],
** Processing line: ~ [5376, 4059, 64, 64],~
- Inside source: true
*** True Line Result
[5376, 4059, 64, 64],
** Processing line: ~ [5312, 4058, 64, 64],~
- Inside source: true
*** True Line Result
[5312, 4058, 64, 64],
** Processing line: ~ [5285, 4062, 64, 64],~
- Inside source: true
*** True Line Result
[5285, 4062, 64, 64],
** Processing line: ~ [5388, 3999, 64, 64],~
- Inside source: true
*** True Line Result
[5388, 3999, 64, 64],
** Processing line: ~ [5385, 3941, 64, 64],~
- Inside source: true
*** True Line Result
[5385, 3941, 64, 64],
** Processing line: ~ [5384, 3874, 64, 64],~
- Inside source: true
*** True Line Result
[5384, 3874, 64, 64],
** Processing line: ~ [5075, 4112, 64, 64],~
- Inside source: true
*** True Line Result
[5075, 4112, 64, 64],
** Processing line: ~ [5074, 4051, 64, 64],~
- Inside source: true
*** True Line Result
[5074, 4051, 64, 64],
** Processing line: ~ [5158, 4018, 64, 64],~
- Inside source: true
*** True Line Result
[5158, 4018, 64, 64],
** Processing line: ~ [5095, 4020, 64, 64],~
- Inside source: true
*** True Line Result
[5095, 4020, 64, 64],
** Processing line: ~ [5073, 4018, 64, 64],~
- Inside source: true
*** True Line Result
[5073, 4018, 64, 64],
** Processing line: ~ [4549, 3998, 64, 64],~
- Inside source: true
*** True Line Result
[4549, 3998, 64, 64],
** Processing line: ~ [4393, 3996, 64, 64],~
- Inside source: true
*** True Line Result
[4393, 3996, 64, 64],
** Processing line: ~ [4547, 3938, 64, 64],~
- Inside source: true
*** True Line Result
[4547, 3938, 64, 64],
** Processing line: ~ [4547, 3886, 64, 64],~
- Inside source: true
*** True Line Result
[4547, 3886, 64, 64],
** Processing line: ~ [4488, 3885, 64, 64],~
- Inside source: true
*** True Line Result
[4488, 3885, 64, 64],
** Processing line: ~ [4427, 3885, 64, 64],~
- Inside source: true
*** True Line Result
[4427, 3885, 64, 64],
** Processing line: ~ [4395, 3938, 64, 64],~
- Inside source: true
*** True Line Result
[4395, 3938, 64, 64],
** Processing line: ~ [4395, 3885, 64, 64],~
- Inside source: true
*** True Line Result
[4395, 3885, 64, 64],
** Processing line: ~ [0, 0, 64, 64],~
- Inside source: true
*** True Line Result
[0, 0, 64, 64],
** Processing line: ~ [0, 1670, 64, 64],~
- Inside source: true
*** True Line Result
[0, 1670, 64, 64],
** Processing line: ~ [6691, 1653, 64, 64],~
- Inside source: true
*** True Line Result
[6691, 1653, 64, 64],
** Processing line: ~ [1521, 3792, 64, 64],~
- Inside source: true
*** True Line Result
[1521, 3792, 64, 64],
** Processing line: ~ [0, 5137, 64, 64],~
- Inside source: true
*** True Line Result
[0, 5137, 64, 64],
** Processing line: ~ [0, 0, 64, 64],~
- Inside source: true
*** True Line Result
[0, 0, 64, 64],
** Processing line: ~ [0, 1670, 64, 64],~
- Inside source: true
*** True Line Result
[0, 1670, 64, 64],
** Processing line: ~ [6691, 1653, 64, 64],~
- Inside source: true
*** True Line Result
[6691, 1653, 64, 64],
** Processing line: ~ [1521, 3792, 64, 64],~
- Inside source: true
*** True Line Result
[1521, 3792, 64, 64],
** Processing line: ~ [0, 5137, 64, 64],~
- Inside source: true
*** True Line Result
[0, 5137, 64, 64],
** Processing line: ~ [1215, 2421, 64, 64],~
- Inside source: true
*** True Line Result
[1215, 2421, 64, 64],
** Processing line: ~ [1214, 2360, 64, 64],~
- Inside source: true
*** True Line Result
[1214, 2360, 64, 64],
** Processing line: ~ [1211, 2300, 64, 64],~
- Inside source: true
*** True Line Result
[1211, 2300, 64, 64],
** Processing line: ~ [1211, 2291, 64, 64],~
- Inside source: true
*** True Line Result
[1211, 2291, 64, 64],
** Processing line: ~ [1158, 2420, 64, 64],~
- Inside source: true
*** True Line Result
[1158, 2420, 64, 64],
** Processing line: ~ [1156, 2358, 64, 64],~
- Inside source: true
*** True Line Result
[1156, 2358, 64, 64],
** Processing line: ~ [1149, 2291, 64, 64],~
- Inside source: true
*** True Line Result
[1149, 2291, 64, 64],
** Processing line: ~ [1095, 2420, 64, 64],~
- Inside source: true
*** True Line Result
[1095, 2420, 64, 64],
** Processing line: ~ [1030, 2418, 64, 64],~
- Inside source: true
*** True Line Result
[1030, 2418, 64, 64],
** Processing line: ~ [966, 2419, 64, 64],~
- Inside source: true
*** True Line Result
[966, 2419, 64, 64],
** Processing line: ~ [903, 2419, 64, 64],~
- Inside source: true
*** True Line Result
[903, 2419, 64, 64],
** Processing line: ~ [852, 2419, 64, 64],~
- Inside source: true
*** True Line Result
[852, 2419, 64, 64],
** Processing line: ~ [1087, 2291, 64, 64],~
- Inside source: true
*** True Line Result
[1087, 2291, 64, 64],
** Processing line: ~ [1023, 2291, 64, 64],~
- Inside source: true
*** True Line Result
[1023, 2291, 64, 64],
** Processing line: ~ [960, 2291, 64, 64],~
- Inside source: true
*** True Line Result
[960, 2291, 64, 64],
** Processing line: ~ [896, 2292, 64, 64],~
- Inside source: true
*** True Line Result
[896, 2292, 64, 64],
** Processing line: ~ [854, 2355, 64, 64],~
- Inside source: true
*** True Line Result
[854, 2355, 64, 64],
** Processing line: ~ [854, 2292, 64, 64],~
- Inside source: true
*** True Line Result
[854, 2292, 64, 64],
** Processing line: ~ [675, 3017, 64, 64],~
- Inside source: true
*** True Line Result
[675, 3017, 64, 64],
** Processing line: ~ [622, 3017, 64, 64],~
- Inside source: true
*** True Line Result
[622, 3017, 64, 64],
** Processing line: ~ [676, 2965, 64, 64],~
- Inside source: true
*** True Line Result
[676, 2965, 64, 64],
** Processing line: ~ [622, 2965, 64, 64],~
- Inside source: true
*** True Line Result
[622, 2965, 64, 64],
** Processing line: ~ [1560, 3212, 64, 64],~
- Inside source: true
*** True Line Result
[1560, 3212, 64, 64],
** Processing line: ~ [1496, 3212, 64, 64],~
- Inside source: true
*** True Line Result
[1496, 3212, 64, 64],
** Processing line: ~ [1430, 3211, 64, 64],~
- Inside source: true
*** True Line Result
[1430, 3211, 64, 64],
** Processing line: ~ [1346, 3214, 64, 64],~
- Inside source: true
*** True Line Result
[1346, 3214, 64, 64],
** Processing line: ~ [1410, 3213, 64, 64],~
- Inside source: true
*** True Line Result
[1410, 3213, 64, 64],
** Processing line: ~ [1560, 3147, 64, 64],~
- Inside source: true
*** True Line Result
[1560, 3147, 64, 64],
** Processing line: ~ [1559, 3105, 64, 64],~
- Inside source: true
*** True Line Result
[1559, 3105, 64, 64],
** Processing line: ~ [1496, 3105, 64, 64],~
- Inside source: true
*** True Line Result
[1496, 3105, 64, 64],
** Processing line: ~ [1442, 3105, 64, 64],~
- Inside source: true
*** True Line Result
[1442, 3105, 64, 64],
** Processing line: ~ [1412, 3106, 64, 64],~
- Inside source: true
*** True Line Result
[1412, 3106, 64, 64],
** Processing line: ~ [918, 4163, 64, 64],~
- Inside source: true
*** True Line Result
[918, 4163, 64, 64],
** Processing line: ~ [854, 4161, 64, 64],~
- Inside source: true
*** True Line Result
[854, 4161, 64, 64],
** Processing line: ~ [792, 4160, 64, 64],~
- Inside source: true
*** True Line Result
[792, 4160, 64, 64],
** Processing line: ~ [729, 4159, 64, 64],~
- Inside source: true
*** True Line Result
[729, 4159, 64, 64],
** Processing line: ~ [666, 4158, 64, 64],~
- Inside source: true
*** True Line Result
[666, 4158, 64, 64],
** Processing line: ~ [601, 4158, 64, 64],~
- Inside source: true
*** True Line Result
[601, 4158, 64, 64],
** Processing line: ~ [537, 4156, 64, 64],~
- Inside source: true
*** True Line Result
[537, 4156, 64, 64],
** Processing line: ~ [918, 4137, 64, 64],~
- Inside source: true
*** True Line Result
[918, 4137, 64, 64],
** Processing line: ~ [854, 4137, 64, 64],~
- Inside source: true
*** True Line Result
[854, 4137, 64, 64],
** Processing line: ~ [789, 4136, 64, 64],~
- Inside source: true
*** True Line Result
[789, 4136, 64, 64],
** Processing line: ~ [726, 4137, 64, 64],~
- Inside source: true
*** True Line Result
[726, 4137, 64, 64],
** Processing line: ~ [661, 4137, 64, 64],~
- Inside source: true
*** True Line Result
[661, 4137, 64, 64],
** Processing line: ~ [599, 4139, 64, 64],~
- Inside source: true
*** True Line Result
[599, 4139, 64, 64],
** Processing line: ~ [538, 4137, 64, 64],~
- Inside source: true
*** True Line Result
[538, 4137, 64, 64],
** Processing line: ~ [5378, 4254, 64, 64],~
- Inside source: true
*** True Line Result
[5378, 4254, 64, 64],
** Processing line: ~ [5440, 4204, 64, 64],~
- Inside source: true
*** True Line Result
[5440, 4204, 64, 64],
** Processing line: ~ [5405, 4214, 64, 64],~
- Inside source: true
*** True Line Result
[5405, 4214, 64, 64],
** Processing line: ~ [5350, 4254, 64, 64],~
- Inside source: true
*** True Line Result
[5350, 4254, 64, 64],
** Processing line: ~ [5439, 4177, 64, 64],~
- Inside source: true
*** True Line Result
[5439, 4177, 64, 64],
** Processing line: ~ [5413, 4173, 64, 64],~
- Inside source: true
*** True Line Result
[5413, 4173, 64, 64],
** Processing line: ~ [5399, 4128, 64, 64],~
- Inside source: true
*** True Line Result
[5399, 4128, 64, 64],
** Processing line: ~ [5352, 4200, 64, 64],~
- Inside source: true
*** True Line Result
[5352, 4200, 64, 64],
** Processing line: ~ [5352, 4158, 64, 64],~
- Inside source: true
*** True Line Result
[5352, 4158, 64, 64],
** Processing line: ~ [5392, 4130, 64, 64],~
- Inside source: true
*** True Line Result
[5392, 4130, 64, 64],
** Processing line: ~ [6216, 4251, 64, 64],~
- Inside source: true
*** True Line Result
[6216, 4251, 64, 64],
** Processing line: ~ [6190, 4251, 64, 64],~
- Inside source: true
*** True Line Result
[6190, 4251, 64, 64],
** Processing line: ~ [6279, 4200, 64, 64],~
- Inside source: true
*** True Line Result
[6279, 4200, 64, 64],
** Processing line: ~ [6262, 4205, 64, 64],~
- Inside source: true
*** True Line Result
[6262, 4205, 64, 64],
** Processing line: ~ [6233, 4214, 64, 64],~
- Inside source: true
*** True Line Result
[6233, 4214, 64, 64],
** Processing line: ~ [6280, 4172, 64, 64],~
- Inside source: true
*** True Line Result
[6280, 4172, 64, 64],
** Processing line: ~ [6256, 4169, 64, 64],~
- Inside source: true
*** True Line Result
[6256, 4169, 64, 64],
** Processing line: ~ [6239, 4128, 64, 64],~
- Inside source: true
*** True Line Result
[6239, 4128, 64, 64],
** Processing line: ~ [6231, 4128, 64, 64],~
- Inside source: true
*** True Line Result
[6231, 4128, 64, 64],
** Processing line: ~ [6191, 4195, 64, 64],~
- Inside source: true
*** True Line Result
[6191, 4195, 64, 64],
** Processing line: ~ [6190, 4158, 64, 64],~
- Inside source: true
*** True Line Result
[6190, 4158, 64, 64],
** Processing line: ~ [7072, 4250, 64, 64],~
- Inside source: true
*** True Line Result
[7072, 4250, 64, 64],
** Processing line: ~ [7046, 4250, 64, 64],~
- Inside source: true
*** True Line Result
[7046, 4250, 64, 64],
** Processing line: ~ [7133, 4202, 64, 64],~
- Inside source: true
*** True Line Result
[7133, 4202, 64, 64],
** Processing line: ~ [7107, 4209, 64, 64],~
- Inside source: true
*** True Line Result
[7107, 4209, 64, 64],
** Processing line: ~ [7086, 4214, 64, 64],~
- Inside source: true
*** True Line Result
[7086, 4214, 64, 64],
** Processing line: ~ [7133, 4173, 64, 64],~
- Inside source: true
*** True Line Result
[7133, 4173, 64, 64],
** Processing line: ~ [7108, 4169, 64, 64],~
- Inside source: true
*** True Line Result
[7108, 4169, 64, 64],
** Processing line: ~ [7092, 4127, 64, 64],~
- Inside source: true
*** True Line Result
[7092, 4127, 64, 64],
** Processing line: ~ [7084, 4128, 64, 64],~
- Inside source: true
*** True Line Result
[7084, 4128, 64, 64],
** Processing line: ~ [7047, 4191, 64, 64],~
- Inside source: true
*** True Line Result
[7047, 4191, 64, 64],
** Processing line: ~ [7047, 4156, 64, 64],~
- Inside source: true
*** True Line Result
[7047, 4156, 64, 64],
** Processing line: ~ [7926, 4252, 64, 64],~
- Inside source: true
*** True Line Result
[7926, 4252, 64, 64],
** Processing line: ~ [7900, 4253, 64, 64],~
- Inside source: true
*** True Line Result
[7900, 4253, 64, 64],
** Processing line: ~ [7987, 4202, 64, 64],~
- Inside source: true
*** True Line Result
[7987, 4202, 64, 64],
** Processing line: ~ [7965, 4209, 64, 64],~
- Inside source: true
*** True Line Result
[7965, 4209, 64, 64],
** Processing line: ~ [7942, 4216, 64, 64],~
- Inside source: true
*** True Line Result
[7942, 4216, 64, 64],
** Processing line: ~ [7989, 4174, 64, 64],~
- Inside source: true
*** True Line Result
[7989, 4174, 64, 64],
** Processing line: ~ [7970, 4170, 64, 64],~
- Inside source: true
*** True Line Result
[7970, 4170, 64, 64],
** Processing line: ~ [7949, 4126, 64, 64],~
- Inside source: true
*** True Line Result
[7949, 4126, 64, 64],
** Processing line: ~ [7901, 4196, 64, 64],~
- Inside source: true
*** True Line Result
[7901, 4196, 64, 64],
** Processing line: ~ [7900, 4159, 64, 64],~
- Inside source: true
*** True Line Result
[7900, 4159, 64, 64],
** Processing line: ~ [7941, 4130, 64, 64],~
- Inside source: true
*** True Line Result
[7941, 4130, 64, 64],
** Processing line: ~ [2847, 379, 64, 64],~
- Inside source: true
*** True Line Result
[2847, 379, 64, 64],
** Processing line: ~ [2825, 380, 64, 64],~
- Inside source: true
*** True Line Result
[2825, 380, 64, 64],
** Processing line: ~ [2845, 317, 64, 64],~
- Inside source: true
*** True Line Result
[2845, 317, 64, 64],
** Processing line: ~ [2829, 316, 64, 64],~
- Inside source: true
*** True Line Result
[2829, 316, 64, 64],
** Processing line: ~ [2845, 255, 64, 64],~
- Inside source: true
*** True Line Result
[2845, 255, 64, 64],
** Processing line: ~ [2830, 257, 64, 64],~
- Inside source: true
*** True Line Result
[2830, 257, 64, 64],
** Processing line: ~ [2845, 202, 64, 64],~
- Inside source: true
*** True Line Result
[2845, 202, 64, 64],
** Processing line: ~ [2829, 198, 64, 64],~
- Inside source: true
*** True Line Result
[2829, 198, 64, 64],
** Processing line: ~ [2770, 169, 64, 64],~
- Inside source: true
*** True Line Result
[2770, 169, 64, 64],
** Processing line: ~ [2708, 170, 64, 64],~
- Inside source: true
*** True Line Result
[2708, 170, 64, 64],
** Processing line: ~ [2646, 171, 64, 64],~
- Inside source: true
*** True Line Result
[2646, 171, 64, 64],
** Processing line: ~ [2582, 171, 64, 64],~
- Inside source: true
*** True Line Result
[2582, 171, 64, 64],
** Processing line: ~ [2518, 171, 64, 64],~
- Inside source: true
*** True Line Result
[2518, 171, 64, 64],
** Processing line: ~ [2454, 171, 64, 64],~
- Inside source: true
*** True Line Result
[2454, 171, 64, 64],
** Processing line: ~ [2391, 172, 64, 64],~
- Inside source: true
*** True Line Result
[2391, 172, 64, 64],
** Processing line: ~ [2332, 379, 64, 64],~
- Inside source: true
*** True Line Result
[2332, 379, 64, 64],
** Processing line: ~ [2315, 379, 64, 64],~
- Inside source: true
*** True Line Result
[2315, 379, 64, 64],
** Processing line: ~ [2334, 316, 64, 64],~
- Inside source: true
*** True Line Result
[2334, 316, 64, 64],
** Processing line: ~ [2315, 317, 64, 64],~
- Inside source: true
*** True Line Result
[2315, 317, 64, 64],
** Processing line: ~ [2332, 254, 64, 64],~
- Inside source: true
*** True Line Result
[2332, 254, 64, 64],
** Processing line: ~ [2314, 254, 64, 64],~
- Inside source: true
*** True Line Result
[2314, 254, 64, 64],
** Processing line: ~ [2335, 192, 64, 64],~
- Inside source: true
*** True Line Result
[2335, 192, 64, 64],
** Processing line: ~ [2311, 192, 64, 64],~
- Inside source: true
*** True Line Result
[2311, 192, 64, 64],
** Processing line: ~ [2846, 142, 64, 64],~
- Inside source: true
*** True Line Result
[2846, 142, 64, 64],
** Processing line: ~ [2784, 140, 64, 64],~
- Inside source: true
*** True Line Result
[2784, 140, 64, 64],
** Processing line: ~ [2846, 79, 64, 64],~
- Inside source: true
*** True Line Result
[2846, 79, 64, 64],
** Processing line: ~ [2847, 41, 64, 64],~
- Inside source: true
*** True Line Result
[2847, 41, 64, 64],
** Processing line: ~ [2783, 80, 64, 64],~
- Inside source: true
*** True Line Result
[2783, 80, 64, 64],
** Processing line: ~ [2790, 39, 64, 64],~
- Inside source: true
*** True Line Result
[2790, 39, 64, 64],
** Processing line: ~ [2727, 41, 64, 64],~
- Inside source: true
*** True Line Result
[2727, 41, 64, 64],
** Processing line: ~ [2665, 43, 64, 64],~
- Inside source: true
*** True Line Result
[2665, 43, 64, 64],
** Processing line: ~ [2605, 43, 64, 64],~
- Inside source: true
*** True Line Result
[2605, 43, 64, 64],
** Processing line: ~ [2543, 44, 64, 64],~
- Inside source: true
*** True Line Result
[2543, 44, 64, 64],
** Processing line: ~ [2480, 45, 64, 64],~
- Inside source: true
*** True Line Result
[2480, 45, 64, 64],
** Processing line: ~ [2419, 45, 64, 64],~
- Inside source: true
*** True Line Result
[2419, 45, 64, 64],
** Processing line: ~ [2357, 44, 64, 64],~
- Inside source: true
*** True Line Result
[2357, 44, 64, 64],
** Processing line: ~ [2313, 129, 64, 64],~
- Inside source: true
*** True Line Result
[2313, 129, 64, 64],
** Processing line: ~ [2313, 70, 64, 64],~
- Inside source: true
*** True Line Result
[2313, 70, 64, 64],
** Processing line: ~ [2314, 40, 64, 64],~
- Inside source: true
*** True Line Result
[2314, 40, 64, 64],
** Processing line: ~ [2517, 2385, 64, 64],~
- Inside source: true
*** True Line Result
[2517, 2385, 64, 64],
** Processing line: ~ [2452, 2385, 64, 64],~
- Inside source: true
*** True Line Result
[2452, 2385, 64, 64],
** Processing line: ~ [2390, 2386, 64, 64],~
- Inside source: true
*** True Line Result
[2390, 2386, 64, 64],
** Processing line: ~ [2328, 2386, 64, 64],~
- Inside source: true
*** True Line Result
[2328, 2386, 64, 64],
** Processing line: ~ [2264, 2386, 64, 64],~
- Inside source: true
*** True Line Result
[2264, 2386, 64, 64],
** Processing line: ~ [2200, 2386, 64, 64],~
- Inside source: true
*** True Line Result
[2200, 2386, 64, 64],
** Processing line: ~ [2137, 2387, 64, 64],~
- Inside source: true
*** True Line Result
[2137, 2387, 64, 64],
** Processing line: ~ [2071, 2385, 64, 64],~
- Inside source: true
*** True Line Result
[2071, 2385, 64, 64],
** Processing line: ~ [2016, 2389, 64, 64],~
- Inside source: true
*** True Line Result
[2016, 2389, 64, 64],
** Processing line: ~ [2517, 2341, 64, 64],~
- Inside source: true
*** True Line Result
[2517, 2341, 64, 64],
** Processing line: ~ [2518, 2316, 64, 64],~
- Inside source: true
*** True Line Result
[2518, 2316, 64, 64],
** Processing line: ~ [2456, 2316, 64, 64],~
- Inside source: true
*** True Line Result
[2456, 2316, 64, 64],
** Processing line: ~ [2393, 2316, 64, 64],~
- Inside source: true
*** True Line Result
[2393, 2316, 64, 64],
** Processing line: ~ [2328, 2317, 64, 64],~
- Inside source: true
*** True Line Result
[2328, 2317, 64, 64],
** Processing line: ~ [2264, 2316, 64, 64],~
- Inside source: true
*** True Line Result
[2264, 2316, 64, 64],
** Processing line: ~ [2207, 2318, 64, 64],~
- Inside source: true
*** True Line Result
[2207, 2318, 64, 64],
** Processing line: ~ [2144, 2317, 64, 64],~
- Inside source: true
*** True Line Result
[2144, 2317, 64, 64],
** Processing line: ~ [2081, 2316, 64, 64],~
- Inside source: true
*** True Line Result
[2081, 2316, 64, 64],
** Processing line: ~ [2015, 2342, 64, 64],~
- Inside source: true
*** True Line Result
[2015, 2342, 64, 64],
** Processing line: ~ [2016, 2315, 64, 64],~
- Inside source: true
*** True Line Result
[2016, 2315, 64, 64],
** Processing line: ~ [869, 3709, 64, 64],~
- Inside source: true
*** True Line Result
[869, 3709, 64, 64],
** Processing line: ~ [819, 3710, 64, 64],~
- Inside source: true
*** True Line Result
[819, 3710, 64, 64],
** Processing line: ~ [869, 3658, 64, 64],~
- Inside source: true
*** True Line Result
[869, 3658, 64, 64],
** Processing line: ~ [820, 3658, 64, 64],~
- Inside source: true
*** True Line Result
[820, 3658, 64, 64],
** Processing line: ~ [0, 0, 64, 64],~
- Inside source: true
*** True Line Result
[0, 0, 64, 64],
** Processing line: ~ [0, 1670, 64, 64],~
- Inside source: true
*** True Line Result
[0, 1670, 64, 64],
** Processing line: ~ [6691, 1653, 64, 64],~
- Inside source: true
*** True Line Result
[6691, 1653, 64, 64],
** Processing line: ~ [1521, 3792, 64, 64],~
- Inside source: true
*** True Line Result
[1521, 3792, 64, 64],
** Processing line: ~ [0, 5137, 64, 64],~
- Inside source: true
*** True Line Result
[0, 5137, 64, 64],
** Processing line: ~ [3898, 2400, 64, 64],~
- Inside source: true
*** True Line Result
[3898, 2400, 64, 64],
** Processing line: ~ [3835, 2400, 64, 64],~
- Inside source: true
*** True Line Result
[3835, 2400, 64, 64],
** Processing line: ~ [3771, 2400, 64, 64],~
- Inside source: true
*** True Line Result
[3771, 2400, 64, 64],
** Processing line: ~ [3708, 2401, 64, 64],~
- Inside source: true
*** True Line Result
[3708, 2401, 64, 64],
** Processing line: ~ [3646, 2401, 64, 64],~
- Inside source: true
*** True Line Result
[3646, 2401, 64, 64],
** Processing line: ~ [3587, 2401, 64, 64],~
- Inside source: true
*** True Line Result
[3587, 2401, 64, 64],
** Processing line: ~ [3530, 2401, 64, 64],~
- Inside source: true
*** True Line Result
[3530, 2401, 64, 64],
** Processing line: ~ [3897, 2340, 64, 64],~
- Inside source: true
*** True Line Result
[3897, 2340, 64, 64],
** Processing line: ~ [3897, 2295, 64, 64],~
- Inside source: true
*** True Line Result
[3897, 2295, 64, 64],
** Processing line: ~ [3834, 2296, 64, 64],~
- Inside source: true
*** True Line Result
[3834, 2296, 64, 64],
** Processing line: ~ [3773, 2295, 64, 64],~
- Inside source: true
*** True Line Result
[3773, 2295, 64, 64],
** Processing line: ~ [3710, 2296, 64, 64],~
- Inside source: true
*** True Line Result
[3710, 2296, 64, 64],
** Processing line: ~ [3656, 2295, 64, 64],~
- Inside source: true
*** True Line Result
[3656, 2295, 64, 64],
** Processing line: ~ [3593, 2294, 64, 64],~
- Inside source: true
*** True Line Result
[3593, 2294, 64, 64],
** Processing line: ~ [3527, 2339, 64, 64],~
- Inside source: true
*** True Line Result
[3527, 2339, 64, 64],
** Processing line: ~ [3531, 2293, 64, 64],~
- Inside source: true
*** True Line Result
[3531, 2293, 64, 64],
** Processing line: ~ [4152, 2903, 64, 64],~
- Inside source: true
*** True Line Result
[4152, 2903, 64, 64],
** Processing line: ~ [4155, 2858, 64, 64],~
- Inside source: true
*** True Line Result
[4155, 2858, 64, 64],
** Processing line: ~ [3942, 1306, 64, 64],~
- Inside source: true
*** True Line Result
[3942, 1306, 64, 64],
** Processing line: ~ [3942, 1279, 64, 64],~
- Inside source: true
*** True Line Result
[3942, 1279, 64, 64],
** Processing line: ~ [3879, 1306, 64, 64],~
- Inside source: true
*** True Line Result
[3879, 1306, 64, 64],
** Processing line: ~ [3881, 1278, 64, 64],~
- Inside source: true
*** True Line Result
[3881, 1278, 64, 64],
** Processing line: ~ [3819, 1305, 64, 64],~
- Inside source: true
*** True Line Result
[3819, 1305, 64, 64],
** Processing line: ~ [3819, 1277, 64, 64],~
- Inside source: true
*** True Line Result
[3819, 1277, 64, 64],
** Processing line: ~ [3756, 1306, 64, 64],~
- Inside source: true
*** True Line Result
[3756, 1306, 64, 64],
** Processing line: ~ [3756, 1277, 64, 64],~
- Inside source: true
*** True Line Result
[3756, 1277, 64, 64],
** Processing line: ~ [3694, 1306, 64, 64],~
- Inside source: true
*** True Line Result
[3694, 1306, 64, 64],
** Processing line: ~ [3695, 1277, 64, 64],~
- Inside source: true
*** True Line Result
[3695, 1277, 64, 64],
** Processing line: ~ [3631, 1306, 64, 64],~
- Inside source: true
*** True Line Result
[3631, 1306, 64, 64],
** Processing line: ~ [3632, 1278, 64, 64],~
- Inside source: true
*** True Line Result
[3632, 1278, 64, 64],
** Processing line: ~ [3565, 1306, 64, 64],~
- Inside source: true
*** True Line Result
[3565, 1306, 64, 64],
** Processing line: ~ [3567, 1279, 64, 64],~
- Inside source: true
*** True Line Result
[3567, 1279, 64, 64],
** Processing line: ~ [4432, 1165, 64, 64],~
- Inside source: true
*** True Line Result
[4432, 1165, 64, 64],
** Processing line: ~ [4408, 1163, 64, 64],~
- Inside source: true
*** True Line Result
[4408, 1163, 64, 64],
** Processing line: ~ [5123, 1003, 64, 64],~
- Inside source: true
*** True Line Result
[5123, 1003, 64, 64],
** Processing line: ~ [5065, 1002, 64, 64],~
- Inside source: true
*** True Line Result
[5065, 1002, 64, 64],
** Processing line: ~ [5042, 1002, 64, 64],~
- Inside source: true
*** True Line Result
[5042, 1002, 64, 64],
** Processing line: ~ [6020, 1780, 64, 64],~
- Inside source: true
*** True Line Result
[6020, 1780, 64, 64],
** Processing line: ~ [6020, 1756, 64, 64],~
- Inside source: true
*** True Line Result
[6020, 1756, 64, 64],
** Processing line: ~ [5959, 1780, 64, 64],~
- Inside source: true
*** True Line Result
[5959, 1780, 64, 64],
** Processing line: ~ [5959, 1752, 64, 64],~
- Inside source: true
*** True Line Result
[5959, 1752, 64, 64],
** Processing line: ~ [5897, 1779, 64, 64],~
- Inside source: true
*** True Line Result
[5897, 1779, 64, 64],
** Processing line: ~ [5899, 1752, 64, 64],~
- Inside source: true
*** True Line Result
[5899, 1752, 64, 64],
** Processing line: ~ [5836, 1779, 64, 64],~
- Inside source: true
*** True Line Result
[5836, 1779, 64, 64],
** Processing line: ~ [5836, 1751, 64, 64],~
- Inside source: true
*** True Line Result
[5836, 1751, 64, 64],
** Processing line: ~ [5776, 1780, 64, 64],~
- Inside source: true
*** True Line Result
[5776, 1780, 64, 64],
** Processing line: ~ [5776, 1754, 64, 64],~
- Inside source: true
*** True Line Result
[5776, 1754, 64, 64],
** Processing line: ~ [5717, 1780, 64, 64],~
- Inside source: true
*** True Line Result
[5717, 1780, 64, 64],
** Processing line: ~ [5716, 1752, 64, 64],~
- Inside source: true
*** True Line Result
[5716, 1752, 64, 64],
** Processing line: ~ [5658, 1781, 64, 64],~
- Inside source: true
*** True Line Result
[5658, 1781, 64, 64],
** Processing line: ~ [5658, 1755, 64, 64],~
- Inside source: true
*** True Line Result
[5658, 1755, 64, 64],
** Processing line: ~ [5640, 1781, 64, 64],~
- Inside source: true
*** True Line Result
[5640, 1781, 64, 64],
** Processing line: ~ [5640, 1754, 64, 64],~
- Inside source: true
*** True Line Result
[5640, 1754, 64, 64],
** Processing line: ~ [5832, 2095, 64, 64],~
- Inside source: true
*** True Line Result
[5832, 2095, 64, 64],
** Processing line: ~ [5782, 2093, 64, 64],~
- Inside source: true
*** True Line Result
[5782, 2093, 64, 64],
** Processing line: ~ [5832, 2044, 64, 64],~
- Inside source: true
*** True Line Result
[5832, 2044, 64, 64],
** Processing line: ~ [5777, 2043, 64, 64],~
- Inside source: true
*** True Line Result
[5777, 2043, 64, 64],
** Processing line: ~ [4847, 2577, 64, 64],~
- Inside source: true
*** True Line Result
[4847, 2577, 64, 64],
** Processing line: ~ [4795, 2577, 64, 64],~
- Inside source: true
*** True Line Result
[4795, 2577, 64, 64],
** Processing line: ~ [4846, 2526, 64, 64],~
- Inside source: true
*** True Line Result
[4846, 2526, 64, 64],
** Processing line: ~ [4794, 2526, 64, 64],~
- Inside source: true
*** True Line Result
[4794, 2526, 64, 64],
** Processing line: ~ [8390, 923, 64, 64],~
- Inside source: true
*** True Line Result
[8390, 923, 64, 64],
** Processing line: ~ [8363, 922, 64, 64],~
- Inside source: true
*** True Line Result
[8363, 922, 64, 64],
** Processing line: ~ [7585, 1084, 64, 64],~
- Inside source: true
*** True Line Result
[7585, 1084, 64, 64],
** Processing line: ~ [7582, 1058, 64, 64],~
- Inside source: true
*** True Line Result
[7582, 1058, 64, 64],
** Processing line: ~ [7525, 1084, 64, 64],~
- Inside source: true
*** True Line Result
[7525, 1084, 64, 64],
** Processing line: ~ [7524, 1056, 64, 64],~
- Inside source: true
*** True Line Result
[7524, 1056, 64, 64],
** Processing line: ~ [7478, 1085, 64, 64],~
- Inside source: true
*** True Line Result
[7478, 1085, 64, 64],
** Processing line: ~ [7476, 1055, 64, 64],~
- Inside source: true
*** True Line Result
[7476, 1055, 64, 64],
** Processing line: ~ [7421, 1086, 64, 64],~
- Inside source: true
*** True Line Result
[7421, 1086, 64, 64],
** Processing line: ~ [7421, 1052, 64, 64],~
- Inside source: true
*** True Line Result
[7421, 1052, 64, 64],
** Processing line: ~ [7362, 1085, 64, 64],~
- Inside source: true
*** True Line Result
[7362, 1085, 64, 64],
** Processing line: ~ [7361, 1053, 64, 64],~
- Inside source: true
*** True Line Result
[7361, 1053, 64, 64],
** Processing line: ~ [7307, 1087, 64, 64],~
- Inside source: true
*** True Line Result
[7307, 1087, 64, 64],
** Processing line: ~ [7307, 1054, 64, 64],~
- Inside source: true
*** True Line Result
[7307, 1054, 64, 64],
** Processing line: ~ [7258, 1086, 64, 64],~
- Inside source: true
*** True Line Result
[7258, 1086, 64, 64],
** Processing line: ~ [7255, 1058, 64, 64],~
- Inside source: true
*** True Line Result
[7255, 1058, 64, 64],
** Processing line: ~ [7203, 1083, 64, 64],~
- Inside source: true
*** True Line Result
[7203, 1083, 64, 64],
** Processing line: ~ [7203, 1055, 64, 64],~
- Inside source: true
*** True Line Result
[7203, 1055, 64, 64],
** Processing line: ~ [7161, 1085, 64, 64],~
- Inside source: true
*** True Line Result
[7161, 1085, 64, 64],
** Processing line: ~ [7158, 1057, 64, 64],~
- Inside source: true
*** True Line Result
[7158, 1057, 64, 64],
** Processing line: ~ [7100, 1083, 64, 64],~
- Inside source: true
*** True Line Result
[7100, 1083, 64, 64],
** Processing line: ~ [7099, 1058, 64, 64],~
- Inside source: true
*** True Line Result
[7099, 1058, 64, 64],
** Processing line: ~ [7038, 1082, 64, 64],~
- Inside source: true
*** True Line Result
[7038, 1082, 64, 64],
** Processing line: ~ [7038, 1058, 64, 64],~
- Inside source: true
*** True Line Result
[7038, 1058, 64, 64],
** Processing line: ~ [6982, 1083, 64, 64],~
- Inside source: true
*** True Line Result
[6982, 1083, 64, 64],
** Processing line: ~ [6984, 1057, 64, 64],~
- Inside source: true
*** True Line Result
[6984, 1057, 64, 64],
** Processing line: ~ [0, 0, 64, 64],~
- Inside source: true
*** True Line Result
[0, 0, 64, 64],
** Processing line: ~ [0, 1670, 64, 64],~
- Inside source: true
*** True Line Result
[0, 1670, 64, 64],
** Processing line: ~ [6691, 1653, 64, 64],~
- Inside source: true
*** True Line Result
[6691, 1653, 64, 64],
** Processing line: ~ [1521, 3792, 64, 64],~
- Inside source: true
*** True Line Result
[1521, 3792, 64, 64],
** Processing line: ~ [0, 5137, 64, 64],~
- Inside source: true
*** True Line Result
[0, 5137, 64, 64],
** Processing line: ~ [0, 0, 64, 64],~
- Inside source: true
*** True Line Result
[0, 0, 64, 64],
** Processing line: ~ [0, 1670, 64, 64],~
- Inside source: true
*** True Line Result
[0, 1670, 64, 64],
** Processing line: ~ [6691, 1653, 64, 64],~
- Inside source: true
*** True Line Result
[6691, 1653, 64, 64],
** Processing line: ~ [1521, 3792, 64, 64],~
- Inside source: true
*** True Line Result
[1521, 3792, 64, 64],
** Processing line: ~ [0, 5137, 64, 64],~
- Inside source: true
*** True Line Result
[0, 5137, 64, 64],
** Processing line: ~ [0, 0, 64, 64],~
- Inside source: true
*** True Line Result
[0, 0, 64, 64],
** Processing line: ~ [0, 1670, 64, 64],~
- Inside source: true
*** True Line Result
[0, 1670, 64, 64],
** Processing line: ~ [6691, 1653, 64, 64],~
- Inside source: true
*** True Line Result
[6691, 1653, 64, 64],
** Processing line: ~ [1521, 3792, 64, 64],~
- Inside source: true
*** True Line Result
[1521, 3792, 64, 64],
** Processing line: ~ [0, 5137, 64, 64],~
- Inside source: true
*** True Line Result
[0, 5137, 64, 64],
** Processing line: ~ [8346, 424, 64, 64],~
- Inside source: true
*** True Line Result
[8346, 424, 64, 64],
** Processing line: ~ [8407, 376, 64, 64],~
- Inside source: true
*** True Line Result
[8407, 376, 64, 64],
** Processing line: ~ [8375, 386, 64, 64],~
- Inside source: true
*** True Line Result
[8375, 386, 64, 64],
** Processing line: ~ [8407, 347, 64, 64],~
- Inside source: true
*** True Line Result
[8407, 347, 64, 64],
** Processing line: ~ [8388, 343, 64, 64],~
- Inside source: true
*** True Line Result
[8388, 343, 64, 64],
** Processing line: ~ [8320, 423, 64, 64],~
- Inside source: true
*** True Line Result
[8320, 423, 64, 64],
** Processing line: ~ [8319, 363, 64, 64],~
- Inside source: true
*** True Line Result
[8319, 363, 64, 64],
** Processing line: ~ [8368, 303, 64, 64],~
- Inside source: true
*** True Line Result
[8368, 303, 64, 64],
** Processing line: ~ [8359, 303, 64, 64],~
- Inside source: true
*** True Line Result
[8359, 303, 64, 64],
** Processing line: ~ [8318, 330, 64, 64],~
- Inside source: true
*** True Line Result
[8318, 330, 64, 64],
** Processing line: ~ [9369, 425, 64, 64],~
- Inside source: true
*** True Line Result
[9369, 425, 64, 64],
** Processing line: ~ [9340, 425, 64, 64],~
- Inside source: true
*** True Line Result
[9340, 425, 64, 64],
** Processing line: ~ [9431, 376, 64, 64],~
- Inside source: true
*** True Line Result
[9431, 376, 64, 64],
** Processing line: ~ [9414, 382, 64, 64],~
- Inside source: true
*** True Line Result
[9414, 382, 64, 64],
** Processing line: ~ [9387, 391, 64, 64],~
- Inside source: true
*** True Line Result
[9387, 391, 64, 64],
** Processing line: ~ [9431, 349, 64, 64],~
- Inside source: true
*** True Line Result
[9431, 349, 64, 64],
** Processing line: ~ [9412, 344, 64, 64],~
- Inside source: true
*** True Line Result
[9412, 344, 64, 64],
** Processing line: ~ [9392, 305, 64, 64],~
- Inside source: true
*** True Line Result
[9392, 305, 64, 64],
** Processing line: ~ [9339, 365, 64, 64],~
- Inside source: true
*** True Line Result
[9339, 365, 64, 64],
** Processing line: ~ [9341, 333, 64, 64],~
- Inside source: true
*** True Line Result
[9341, 333, 64, 64],
** Processing line: ~ [9384, 301, 64, 64],~
- Inside source: true
*** True Line Result
[9384, 301, 64, 64],
** Processing line: ~ [7673, 1896, 64, 64],~
- Inside source: true
*** True Line Result
[7673, 1896, 64, 64],
** Processing line: ~ [7642, 1834, 64, 64],~
- Inside source: true
*** True Line Result
[7642, 1834, 64, 64],
** Processing line: ~ [7646, 1901, 64, 64],~
- Inside source: true
*** True Line Result
[7646, 1901, 64, 64],
** Processing line: ~ [4500, 4054, 64, 64],~
- Inside source: true
*** True Line Result
[4500, 4054, 64, 64],
** Processing line: ~ [4476, 4055, 64, 64],~
- Inside source: true
*** True Line Result
[4476, 4055, 64, 64],
** Processing line: ~ [4459, 3997, 64, 64],~
- Inside source: true
*** True Line Result
[4459, 3997, 64, 64],
** Processing line: ~ [76, 5215, 64, 64],~
- Inside source: true
*** True Line Result
[76, 5215, 64, 64],
** Processing line: ~ [39, 5217, 64, 64],~
- Inside source: true
*** True Line Result
[39, 5217, 64, 64],
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $mugs = [~
- Inside source: true
*** True Line Result
$mugs = [
** Processing line: ~ [85, 87, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[85, 87, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [958, 1967, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[958, 1967, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [2537, 1734, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[2537, 1734, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [3755, 2464, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[3755, 2464, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [1548, 3273, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[1548, 3273, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [2050, 220, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[2050, 220, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [854, 297, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[854, 297, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [343, 526, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[343, 526, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [3454, 772, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[3454, 772, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [5041, 298, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[5041, 298, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [6089, 300, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[6089, 300, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [6518, 295, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[6518, 295, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [7661, 47, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[7661, 47, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [9392, 1125, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[9392, 1125, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [7298, 1152, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[7298, 1152, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [5816, 1843, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[5816, 1843, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [876, 3772, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[876, 3772, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [1029, 4667, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[1029, 4667, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [823, 5324, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[823, 5324, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [3251, 5220, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[3251, 5220, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [4747, 5282, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[4747, 5282, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [9325, 5178, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[9325, 5178, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [9635, 4298, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[9635, 4298, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [7837, 4127, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[7837, 4127, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [8651, 1971, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[8651, 1971, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [6892, 2031, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[6892, 2031, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [4626, 3882, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[4626, 3882, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [4024, 4554, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[4024, 4554, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [3925, 3337, 39, 43, "sprites/square-orange.png"],~
- Inside source: true
*** True Line Result
[3925, 3337, 39, 43, "sprites/square-orange.png"],
** Processing line: ~ [5064, 1064, 39, 43, "sprites/square-orange.png"]~
- Inside source: true
*** True Line Result
[5064, 1064, 39, 43, "sprites/square-orange.png"]
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** 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 - Gorillas Basic - credits.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Platformer - Gorillas Basic - credits.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_platformer/gorillas_basic/CREDITS.txt~
- Inside source: true
*** True Line Result
# ./samples/99_genre_platformer/gorillas_basic/CREDITS.txt
** Processing line: ~ code: Amir Rajan, https://twitter.com/amirrajan~
- Inside source: true
*** True Line Result
code: Amir Rajan, https://twitter.com/amirrajan
** Processing line: ~ graphics: Nick Culbertson, https://twitter.com/MobyPixel~
- Inside source: true
*** True Line Result
graphics: Nick Culbertson, https://twitter.com/MobyPixel
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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 - Gorillas Basic - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Platformer - Gorillas Basic - 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/gorillas_basic/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_platformer/gorillas_basic/app/main.rb
** Processing line: ~ class YouSoBasicGorillas~
- Inside source: true
*** True Line Result
class YouSoBasicGorillas
** Processing line: ~ attr_accessor :outputs, :grid, :state, :inputs~
- Inside source: true
*** True Line Result
attr_accessor :outputs, :grid, :state, :inputs
** 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: ~ calc~
- Inside source: true
*** True Line Result
calc
** Processing line: ~ process_inputs~
- Inside source: true
*** True Line Result
process_inputs
** 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: ~ outputs.background_color = [33, 32, 87]~
- Inside source: true
*** True Line Result
outputs.background_color = [33, 32, 87]
** Processing line: ~ state.building_spacing = 1~
- Inside source: true
*** True Line Result
state.building_spacing = 1
** Processing line: ~ state.building_room_spacing = 15~
- Inside source: true
*** True Line Result
state.building_room_spacing = 15
** Processing line: ~ state.building_room_width = 10~
- Inside source: true
*** True Line Result
state.building_room_width = 10
** Processing line: ~ state.building_room_height = 15~
- Inside source: true
*** True Line Result
state.building_room_height = 15
** Processing line: ~ state.building_heights = [4, 4, 6, 8, 15, 20, 18]~
- Inside source: true
*** True Line Result
state.building_heights = [4, 4, 6, 8, 15, 20, 18]
** Processing line: ~ state.building_room_sizes = [5, 4, 6, 7]~
- Inside source: true
*** True Line Result
state.building_room_sizes = [5, 4, 6, 7]
** Processing line: ~ state.gravity = 0.25~
- Inside source: true
*** True Line Result
state.gravity = 0.25
** Processing line: ~ state.first_strike ||= :player_1~
- Inside source: true
*** True Line Result
state.first_strike ||= :player_1
** Processing line: ~ state.buildings ||= []~
- Inside source: true
*** True Line Result
state.buildings ||= []
** Processing line: ~ state.holes ||= []~
- Inside source: true
*** True Line Result
state.holes ||= []
** Processing line: ~ state.player_1_score ||= 0~
- Inside source: true
*** True Line Result
state.player_1_score ||= 0
** Processing line: ~ state.player_2_score ||= 0~
- Inside source: true
*** True Line Result
state.player_2_score ||= 0
** Processing line: ~ state.wind ||= 0~
- Inside source: true
*** True Line Result
state.wind ||= 0
** 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: ~ render_stage~
- Inside source: true
*** True Line Result
render_stage
** Processing line: ~ render_value_insertion~
- Inside source: true
*** True Line Result
render_value_insertion
** Processing line: ~ render_gorillas~
- Inside source: true
*** True Line Result
render_gorillas
** Processing line: ~ render_holes~
- Inside source: true
*** True Line Result
render_holes
** Processing line: ~ render_banana~
- Inside source: true
*** True Line Result
render_banana
** Processing line: ~ render_game_over~
- Inside source: true
*** True Line Result
render_game_over
** Processing line: ~ render_score~
- Inside source: true
*** True Line Result
render_score
** Processing line: ~ render_wind~
- Inside source: true
*** True Line Result
render_wind
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_score~
- Inside source: true
*** True Line Result
def render_score
** Processing line: ~ outputs.primitives << [0, 0, 1280, 31, fancy_white].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [0, 0, 1280, 31, fancy_white].solid
** Processing line: ~ outputs.primitives << [1, 1, 1279, 29].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [1, 1, 1279, 29].solid
** Processing line: ~ outputs.labels << [ 10, 25, "Score: #{state.player_1_score}", 0, 0, fancy_white]~
- Inside source: true
*** True Line Result
outputs.labels << [ 10, 25, "Score: #{state.player_1_score}", 0, 0, fancy_white]
** Processing line: ~ outputs.labels << [1270, 25, "Score: #{state.player_2_score}", 0, 2, fancy_white]~
- Inside source: true
*** True Line Result
outputs.labels << [1270, 25, "Score: #{state.player_2_score}", 0, 2, fancy_white]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_wind~
- Inside source: true
*** True Line Result
def render_wind
** Processing line: ~ outputs.primitives << [640, 12, state.wind * 500 + state.wind * 10 * rand, 4, 35, 136, 162].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [640, 12, state.wind * 500 + state.wind * 10 * rand, 4, 35, 136, 162].solid
** Processing line: ~ outputs.lines << [640, 30, 640, 0, fancy_white]~
- Inside source: true
*** True Line Result
outputs.lines << [640, 30, 640, 0, fancy_white]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_game_over~
- Inside source: true
*** True Line Result
def render_game_over
** Processing line: ~ return unless state.over~
- Inside source: true
*** True Line Result
return unless state.over
** Processing line: ~ outputs.primitives << [grid.rect, 0, 0, 0, 200].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [grid.rect, 0, 0, 0, 200].solid
** Processing line: ~ outputs.primitives << [640, 370, "Game Over!!", 5, 1, fancy_white].label~
- Inside source: true
*** True Line Result
outputs.primitives << [640, 370, "Game Over!!", 5, 1, fancy_white].label
** Processing line: ~ if state.winner == :player_1~
- Inside source: true
*** True Line Result
if state.winner == :player_1
** Processing line: ~ outputs.primitives << [640, 340, "Player 1 Wins!!", 5, 1, fancy_white].label~
- Inside source: true
*** True Line Result
outputs.primitives << [640, 340, "Player 1 Wins!!", 5, 1, fancy_white].label
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ outputs.primitives << [640, 340, "Player 2 Wins!!", 5, 1, fancy_white].label~
- Inside source: true
*** True Line Result
outputs.primitives << [640, 340, "Player 2 Wins!!", 5, 1, fancy_white].label
** 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_stage~
- Inside source: true
*** True Line Result
def render_stage
** Processing line: ~ return unless state.stage_generated~
- Inside source: true
*** True Line Result
return unless state.stage_generated
** Processing line: ~ return if state.stage_rendered~
- Inside source: true
*** True Line Result
return if state.stage_rendered
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.static_solids << [grid.rect, 33, 32, 87]~
- Inside source: true
*** True Line Result
outputs.static_solids << [grid.rect, 33, 32, 87]
** Processing line: ~ outputs.static_solids << state.buildings.map(&:solids)~
- Inside source: true
*** True Line Result
outputs.static_solids << state.buildings.map(&:solids)
** Processing line: ~ state.stage_rendered = true~
- Inside source: true
*** True Line Result
state.stage_rendered = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_gorilla gorilla, id~
- Inside source: true
*** True Line Result
def render_gorilla gorilla, id
** Processing line: ~ return unless gorilla~
- Inside source: true
*** True Line Result
return unless gorilla
** Processing line: ~ if state.banana && state.banana.owner == gorilla~
- Inside source: true
*** True Line Result
if state.banana && state.banana.owner == gorilla
** Processing line: ~ animation_index = state.banana.created_at.frame_index(3, 5, false)~
- Inside source: true
*** True Line Result
animation_index = state.banana.created_at.frame_index(3, 5, false)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ if !animation_index~
- Inside source: true
*** True Line Result
if !animation_index
** Processing line: ~ outputs.sprites << [gorilla.solid, "sprites/#{id}-idle.png"]~
- Inside source: true
*** True Line Result
outputs.sprites << [gorilla.solid, "sprites/#{id}-idle.png"]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ outputs.sprites << [gorilla.solid, "sprites/#{id}-#{animation_index}.png"]~
- Inside source: true
*** True Line Result
outputs.sprites << [gorilla.solid, "sprites/#{id}-#{animation_index}.png"]
** 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_gorillas~
- Inside source: true
*** True Line Result
def render_gorillas
** Processing line: ~ render_gorilla state.player_1, :left~
- Inside source: true
*** True Line Result
render_gorilla state.player_1, :left
** Processing line: ~ render_gorilla state.player_2, :right~
- Inside source: true
*** True Line Result
render_gorilla state.player_2, :right
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_value_insertion~
- Inside source: true
*** True Line Result
def render_value_insertion
** Processing line: ~ return if state.banana~
- Inside source: true
*** True Line Result
return if state.banana
** Processing line: ~ return if state.over~
- Inside source: true
*** True Line Result
return if state.over
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.current_turn == :player_1_angle~
- Inside source: true
*** True Line Result
if state.current_turn == :player_1_angle
** Processing line: ~ outputs.labels << [ 10, 710, "Angle: #{state.player_1_angle}_", fancy_white]~
- Inside source: true
*** True Line Result
outputs.labels << [ 10, 710, "Angle: #{state.player_1_angle}_", fancy_white]
** Processing line: ~ elsif state.current_turn == :player_1_velocity~
- Inside source: true
*** True Line Result
elsif state.current_turn == :player_1_velocity
** Processing line: ~ outputs.labels << [ 10, 710, "Angle: #{state.player_1_angle}", fancy_white]~
- Inside source: true
*** True Line Result
outputs.labels << [ 10, 710, "Angle: #{state.player_1_angle}", fancy_white]
** Processing line: ~ outputs.labels << [ 10, 690, "Velocity: #{state.player_1_velocity}_", fancy_white]~
- Inside source: true
*** True Line Result
outputs.labels << [ 10, 690, "Velocity: #{state.player_1_velocity}_", fancy_white]
** Processing line: ~ elsif state.current_turn == :player_2_angle~
- Inside source: true
*** True Line Result
elsif state.current_turn == :player_2_angle
** Processing line: ~ outputs.labels << [1120, 710, "Angle: #{state.player_2_angle}_", fancy_white]~
- Inside source: true
*** True Line Result
outputs.labels << [1120, 710, "Angle: #{state.player_2_angle}_", fancy_white]
** Processing line: ~ elsif state.current_turn == :player_2_velocity~
- Inside source: true
*** True Line Result
elsif state.current_turn == :player_2_velocity
** Processing line: ~ outputs.labels << [1120, 710, "Angle: #{state.player_2_angle}", fancy_white]~
- Inside source: true
*** True Line Result
outputs.labels << [1120, 710, "Angle: #{state.player_2_angle}", fancy_white]
** Processing line: ~ outputs.labels << [1120, 690, "Velocity: #{state.player_2_velocity}_", fancy_white]~
- Inside source: true
*** True Line Result
outputs.labels << [1120, 690, "Velocity: #{state.player_2_velocity}_", fancy_white]
** 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_banana~
- Inside source: true
*** True Line Result
def render_banana
** Processing line: ~ return unless state.banana~
- Inside source: true
*** True Line Result
return unless state.banana
** Processing line: ~ rotation = state.tick_count.%(360) * 20~
- Inside source: true
*** True Line Result
rotation = state.tick_count.%(360) * 20
** Processing line: ~ rotation *= -1 if state.banana.dx > 0~
- Inside source: true
*** True Line Result
rotation *= -1 if state.banana.dx > 0
** Processing line: ~ outputs.sprites << [state.banana.x, state.banana.y, 15, 15, 'sprites/banana.png', rotation]~
- Inside source: true
*** True Line Result
outputs.sprites << [state.banana.x, state.banana.y, 15, 15, 'sprites/banana.png', rotation]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_holes~
- Inside source: true
*** True Line Result
def render_holes
** Processing line: ~ outputs.sprites << state.holes.map do |s|~
- Inside source: true
*** True Line Result
outputs.sprites << state.holes.map do |s|
** Processing line: ~ animation_index = s.created_at.frame_index(7, 3, false)~
- Inside source: true
*** True Line Result
animation_index = s.created_at.frame_index(7, 3, false)
** Processing line: ~ if animation_index~
- Inside source: true
*** True Line Result
if animation_index
** Processing line: ~ [s.sprite, [s.sprite.rect, "sprites/explosion#{animation_index}.png" ]]~
- Inside source: true
*** True Line Result
[s.sprite, [s.sprite.rect, "sprites/explosion#{animation_index}.png" ]]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ s.sprite~
- Inside source: true
*** True Line Result
s.sprite
** 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~
- Inside source: true
*** True Line Result
def calc
** Processing line: ~ calc_generate_stage~
- Inside source: true
*** True Line Result
calc_generate_stage
** Processing line: ~ calc_current_turn~
- Inside source: true
*** True Line Result
calc_current_turn
** Processing line: ~ calc_banana~
- Inside source: true
*** True Line Result
calc_banana
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_current_turn~
- Inside source: true
*** True Line Result
def calc_current_turn
** Processing line: ~ return if state.current_turn~
- Inside source: true
*** True Line Result
return if state.current_turn
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.current_turn = :player_1_angle~
- Inside source: true
*** True Line Result
state.current_turn = :player_1_angle
** Processing line: ~ state.current_turn = :player_2_angle if state.first_strike == :player_2~
- Inside source: true
*** True Line Result
state.current_turn = :player_2_angle if state.first_strike == :player_2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_generate_stage~
- Inside source: true
*** True Line Result
def calc_generate_stage
** Processing line: ~ return if state.stage_generated~
- Inside source: true
*** True Line Result
return if state.stage_generated
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.buildings << building_prefab(state.building_spacing + -20, *random_building_size)~
- Inside source: true
*** True Line Result
state.buildings << building_prefab(state.building_spacing + -20, *random_building_size)
** Processing line: ~ 8.numbers.inject(state.buildings) do |buildings, i|~
- Inside source: true
*** True Line Result
8.numbers.inject(state.buildings) do |buildings, i|
** Processing line: ~ buildings <<~
- Inside source: true
*** True Line Result
buildings <<
** Processing line: ~ building_prefab(state.building_spacing +~
- Inside source: true
*** True Line Result
building_prefab(state.building_spacing +
** Processing line: ~ state.buildings.last.right,~
- Inside source: true
*** True Line Result
state.buildings.last.right,
** Processing line: ~ *random_building_size)~
- Inside source: true
*** True Line Result
*random_building_size)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ building_two = state.buildings[1]~
- Inside source: true
*** True Line Result
building_two = state.buildings[1]
** Processing line: ~ state.player_1 = new_player(building_two.x + building_two.w.fdiv(2),~
- Inside source: true
*** True Line Result
state.player_1 = new_player(building_two.x + building_two.w.fdiv(2),
** Processing line: ~ building_two.h)~
- Inside source: true
*** True Line Result
building_two.h)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ building_nine = state.buildings[-3]~
- Inside source: true
*** True Line Result
building_nine = state.buildings[-3]
** Processing line: ~ state.player_2 = new_player(building_nine.x + building_nine.w.fdiv(2),~
- Inside source: true
*** True Line Result
state.player_2 = new_player(building_nine.x + building_nine.w.fdiv(2),
** Processing line: ~ building_nine.h)~
- Inside source: true
*** True Line Result
building_nine.h)
** Processing line: ~ state.stage_generated = true~
- Inside source: true
*** True Line Result
state.stage_generated = true
** Processing line: ~ state.wind = 1.randomize(:ratio, :sign)~
- Inside source: true
*** True Line Result
state.wind = 1.randomize(:ratio, :sign)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def new_player x, y~
- Inside source: true
*** True Line Result
def new_player x, y
** Processing line: ~ state.new_entity(:gorilla) do |p|~
- Inside source: true
*** True Line Result
state.new_entity(:gorilla) do |p|
** Processing line: ~ p.x = x - 25~
- Inside source: true
*** True Line Result
p.x = x - 25
** Processing line: ~ p.y = y~
- Inside source: true
*** True Line Result
p.y = y
** Processing line: ~ p.solid = [p.x, p.y, 50, 50]~
- Inside source: true
*** True Line Result
p.solid = [p.x, p.y, 50, 50]
** 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_banana~
- Inside source: true
*** True Line Result
def calc_banana
** Processing line: ~ return unless state.banana~
- Inside source: true
*** True Line Result
return unless state.banana
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.banana.x += state.banana.dx~
- Inside source: true
*** True Line Result
state.banana.x += state.banana.dx
** Processing line: ~ state.banana.dx += state.wind.fdiv(50)~
- Inside source: true
*** True Line Result
state.banana.dx += state.wind.fdiv(50)
** Processing line: ~ state.banana.y += state.banana.dy~
- Inside source: true
*** True Line Result
state.banana.y += state.banana.dy
** Processing line: ~ state.banana.dy -= state.gravity~
- Inside source: true
*** True Line Result
state.banana.dy -= state.gravity
** Processing line: ~ banana_collision = [state.banana.x, state.banana.y, 10, 10]~
- Inside source: true
*** True Line Result
banana_collision = [state.banana.x, state.banana.y, 10, 10]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.player_1 && banana_collision.intersect_rect?(state.player_1.solid)~
- Inside source: true
*** True Line Result
if state.player_1 && banana_collision.intersect_rect?(state.player_1.solid)
** Processing line: ~ state.over = true~
- Inside source: true
*** True Line Result
state.over = true
** Processing line: ~ if state.banana.owner == state.player_2~
- Inside source: true
*** True Line Result
if state.banana.owner == state.player_2
** Processing line: ~ state.winner = :player_2~
- Inside source: true
*** True Line Result
state.winner = :player_2
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.winner = :player_1~
- Inside source: true
*** True Line Result
state.winner = :player_1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.player_2_score += 1~
- Inside source: true
*** True Line Result
state.player_2_score += 1
** Processing line: ~ elsif state.player_2 && banana_collision.intersect_rect?(state.player_2.solid)~
- Inside source: true
*** True Line Result
elsif state.player_2 && banana_collision.intersect_rect?(state.player_2.solid)
** Processing line: ~ state.over = true~
- Inside source: true
*** True Line Result
state.over = true
** Processing line: ~ if state.banana.owner == state.player_2~
- Inside source: true
*** True Line Result
if state.banana.owner == state.player_2
** Processing line: ~ state.winner = :player_1~
- Inside source: true
*** True Line Result
state.winner = :player_1
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.winner = :player_2~
- Inside source: true
*** True Line Result
state.winner = :player_2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ state.player_1_score += 1~
- Inside source: true
*** True Line Result
state.player_1_score += 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.over~
- Inside source: true
*** True Line Result
if state.over
** Processing line: ~ place_hole~
- Inside source: true
*** True Line Result
place_hole
** 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: ~ return if state.holes.any? do |h|~
- Inside source: true
*** True Line Result
return if state.holes.any? do |h|
** Processing line: ~ h.sprite.scale_rect(0.8, 0.5, 0.5).intersect_rect? [state.banana.x, state.banana.y, 10, 10]~
- Inside source: true
*** True Line Result
h.sprite.scale_rect(0.8, 0.5, 0.5).intersect_rect? [state.banana.x, state.banana.y, 10, 10]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless state.banana.y < 0 || state.buildings.any? do |b|~
- Inside source: true
*** True Line Result
return unless state.banana.y < 0 || state.buildings.any? do |b|
** Processing line: ~ b.rect.intersect_rect? [state.banana.x, state.banana.y, 1, 1]~
- Inside source: true
*** True Line Result
b.rect.intersect_rect? [state.banana.x, state.banana.y, 1, 1]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ place_hole~
- Inside source: true
*** True Line Result
place_hole
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def place_hole~
- Inside source: true
*** True Line Result
def place_hole
** Processing line: ~ return unless state.banana~
- Inside source: true
*** True Line Result
return unless state.banana
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.holes << state.new_entity(:banana) do |b|~
- Inside source: true
*** True Line Result
state.holes << state.new_entity(:banana) do |b|
** Processing line: ~ b.sprite = [state.banana.x - 20, state.banana.y - 20, 40, 40, 'sprites/hole.png']~
- Inside source: true
*** True Line Result
b.sprite = [state.banana.x - 20, state.banana.y - 20, 40, 40, 'sprites/hole.png']
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.banana = nil~
- Inside source: true
*** True Line Result
state.banana = nil
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def process_inputs_main~
- Inside source: true
*** True Line Result
def process_inputs_main
** Processing line: ~ return if state.banana~
- Inside source: true
*** True Line Result
return if state.banana
** Processing line: ~ return if state.over~
- Inside source: true
*** True Line Result
return if state.over
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.keyboard.key_down.enter~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.enter
** Processing line: ~ input_execute_turn~
- Inside source: true
*** True Line Result
input_execute_turn
** Processing line: ~ elsif inputs.keyboard.key_down.backspace~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_down.backspace
** Processing line: ~ state.as_hash[state.current_turn] ||= ""~
- Inside source: true
*** True Line Result
state.as_hash[state.current_turn] ||= ""
** Processing line: ~ state.as_hash[state.current_turn] = state.as_hash[state.current_turn][0..-2]~
- Inside source: true
*** True Line Result
state.as_hash[state.current_turn] = state.as_hash[state.current_turn][0..-2]
** Processing line: ~ elsif inputs.keyboard.key_down.char~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_down.char
** Processing line: ~ state.as_hash[state.current_turn] ||= ""~
- Inside source: true
*** True Line Result
state.as_hash[state.current_turn] ||= ""
** Processing line: ~ state.as_hash[state.current_turn] += inputs.keyboard.key_down.char~
- Inside source: true
*** True Line Result
state.as_hash[state.current_turn] += inputs.keyboard.key_down.char
** 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_inputs_game_over~
- Inside source: true
*** True Line Result
def process_inputs_game_over
** Processing line: ~ return unless state.over~
- Inside source: true
*** True Line Result
return unless state.over
** Processing line: ~ return unless inputs.keyboard.key_down.truthy_keys.any?~
- Inside source: true
*** True Line Result
return unless inputs.keyboard.key_down.truthy_keys.any?
** Processing line: ~ state.over = false~
- Inside source: true
*** True Line Result
state.over = false
** Processing line: ~ outputs.static_solids.clear~
- Inside source: true
*** True Line Result
outputs.static_solids.clear
** Processing line: ~ state.buildings.clear~
- Inside source: true
*** True Line Result
state.buildings.clear
** Processing line: ~ state.holes.clear~
- Inside source: true
*** True Line Result
state.holes.clear
** Processing line: ~ state.stage_generated = false~
- Inside source: true
*** True Line Result
state.stage_generated = false
** Processing line: ~ state.stage_rendered = false~
- Inside source: true
*** True Line Result
state.stage_rendered = false
** Processing line: ~ if state.first_strike == :player_1~
- Inside source: true
*** True Line Result
if state.first_strike == :player_1
** Processing line: ~ state.first_strike = :player_2~
- Inside source: true
*** True Line Result
state.first_strike = :player_2
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.first_strike = :player_1~
- Inside source: true
*** True Line Result
state.first_strike = :player_1
** 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_inputs~
- Inside source: true
*** True Line Result
def process_inputs
** Processing line: ~ process_inputs_main~
- Inside source: true
*** True Line Result
process_inputs_main
** Processing line: ~ process_inputs_game_over~
- Inside source: true
*** True Line Result
process_inputs_game_over
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def input_execute_turn~
- Inside source: true
*** True Line Result
def input_execute_turn
** Processing line: ~ return if state.banana~
- Inside source: true
*** True Line Result
return if state.banana
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.current_turn == :player_1_angle && parse_or_clear!(:player_1_angle)~
- Inside source: true
*** True Line Result
if state.current_turn == :player_1_angle && parse_or_clear!(:player_1_angle)
** Processing line: ~ state.current_turn = :player_1_velocity~
- Inside source: true
*** True Line Result
state.current_turn = :player_1_velocity
** Processing line: ~ elsif state.current_turn == :player_1_velocity && parse_or_clear!(:player_1_velocity)~
- Inside source: true
*** True Line Result
elsif state.current_turn == :player_1_velocity && parse_or_clear!(:player_1_velocity)
** Processing line: ~ state.current_turn = :player_2_angle~
- Inside source: true
*** True Line Result
state.current_turn = :player_2_angle
** Processing line: ~ state.banana =~
- Inside source: true
*** True Line Result
state.banana =
** Processing line: ~ new_banana(state.player_1,~
- Inside source: true
*** True Line Result
new_banana(state.player_1,
** Processing line: ~ state.player_1.x + 25,~
- Inside source: true
*** True Line Result
state.player_1.x + 25,
** Processing line: ~ state.player_1.y + 60,~
- Inside source: true
*** True Line Result
state.player_1.y + 60,
** Processing line: ~ state.player_1_angle,~
- Inside source: true
*** True Line Result
state.player_1_angle,
** Processing line: ~ state.player_1_velocity)~
- Inside source: true
*** True Line Result
state.player_1_velocity)
** Processing line: ~ elsif state.current_turn == :player_2_angle && parse_or_clear!(:player_2_angle)~
- Inside source: true
*** True Line Result
elsif state.current_turn == :player_2_angle && parse_or_clear!(:player_2_angle)
** Processing line: ~ state.current_turn = :player_2_velocity~
- Inside source: true
*** True Line Result
state.current_turn = :player_2_velocity
** Processing line: ~ elsif state.current_turn == :player_2_velocity && parse_or_clear!(:player_2_velocity)~
- Inside source: true
*** True Line Result
elsif state.current_turn == :player_2_velocity && parse_or_clear!(:player_2_velocity)
** Processing line: ~ state.current_turn = :player_1_angle~
- Inside source: true
*** True Line Result
state.current_turn = :player_1_angle
** Processing line: ~ state.banana =~
- Inside source: true
*** True Line Result
state.banana =
** Processing line: ~ new_banana(state.player_2,~
- Inside source: true
*** True Line Result
new_banana(state.player_2,
** Processing line: ~ state.player_2.x + 25,~
- Inside source: true
*** True Line Result
state.player_2.x + 25,
** Processing line: ~ state.player_2.y + 60,~
- Inside source: true
*** True Line Result
state.player_2.y + 60,
** Processing line: ~ 180 - state.player_2_angle,~
- Inside source: true
*** True Line Result
180 - state.player_2_angle,
** Processing line: ~ state.player_2_velocity)~
- Inside source: true
*** True Line Result
state.player_2_velocity)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.banana~
- Inside source: true
*** True Line Result
if state.banana
** Processing line: ~ state.player_1_angle = nil~
- Inside source: true
*** True Line Result
state.player_1_angle = nil
** Processing line: ~ state.player_1_velocity = nil~
- Inside source: true
*** True Line Result
state.player_1_velocity = nil
** Processing line: ~ state.player_2_angle = nil~
- Inside source: true
*** True Line Result
state.player_2_angle = nil
** Processing line: ~ state.player_2_velocity = nil~
- Inside source: true
*** True Line Result
state.player_2_velocity = nil
** 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 random_building_size~
- Inside source: true
*** True Line Result
def random_building_size
** Processing line: ~ [state.building_heights.sample, state.building_room_sizes.sample]~
- Inside source: true
*** True Line Result
[state.building_heights.sample, state.building_room_sizes.sample]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def int? v~
- Inside source: true
*** True Line Result
def int? v
** Processing line: ~ v.to_i.to_s == v.to_s~
- Inside source: true
*** True Line Result
v.to_i.to_s == v.to_s
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def random_building_color~
- Inside source: true
*** True Line Result
def random_building_color
** Processing line: ~ [[ 99, 0, 107],~
- Inside source: true
*** True Line Result
[[ 99, 0, 107],
** Processing line: ~ [ 35, 64, 124],~
- Inside source: true
*** True Line Result
[ 35, 64, 124],
** Processing line: ~ [ 35, 136, 162],~
- Inside source: true
*** True Line Result
[ 35, 136, 162],
** Processing line: ~ ].sample~
- Inside source: true
*** True Line Result
].sample
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def random_window_color~
- Inside source: true
*** True Line Result
def random_window_color
** Processing line: ~ [[ 88, 62, 104],~
- Inside source: true
*** True Line Result
[[ 88, 62, 104],
** Processing line: ~ [253, 224, 187]].sample~
- Inside source: true
*** True Line Result
[253, 224, 187]].sample
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def windows_for_building starting_x, floors, rooms~
- Inside source: true
*** True Line Result
def windows_for_building starting_x, floors, rooms
** Processing line: ~ floors.-(1).combinations(rooms - 1).map do |floor, room|~
- Inside source: true
*** True Line Result
floors.-(1).combinations(rooms - 1).map do |floor, room|
** Processing line: ~ [starting_x +~
- Inside source: true
*** True Line Result
[starting_x +
** Processing line: ~ state.building_room_width.*(room) +~
- Inside source: true
*** True Line Result
state.building_room_width.*(room) +
** Processing line: ~ state.building_room_spacing.*(room + 1),~
- Inside source: true
*** True Line Result
state.building_room_spacing.*(room + 1),
** Processing line: ~ state.building_room_height.*(floor) +~
- Inside source: true
*** True Line Result
state.building_room_height.*(floor) +
** Processing line: ~ state.building_room_spacing.*(floor + 1),~
- Inside source: true
*** True Line Result
state.building_room_spacing.*(floor + 1),
** Processing line: ~ state.building_room_width,~
- Inside source: true
*** True Line Result
state.building_room_width,
** Processing line: ~ state.building_room_height,~
- Inside source: true
*** True Line Result
state.building_room_height,
** Processing line: ~ random_window_color]~
- Inside source: true
*** True Line Result
random_window_color]
** 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 building_prefab starting_x, floors, rooms~
- Inside source: true
*** True Line Result
def building_prefab starting_x, floors, rooms
** Processing line: ~ state.new_entity(:building) do |b|~
- Inside source: true
*** True Line Result
state.new_entity(:building) do |b|
** Processing line: ~ b.x = starting_x~
- Inside source: true
*** True Line Result
b.x = starting_x
** Processing line: ~ b.y = 0~
- Inside source: true
*** True Line Result
b.y = 0
** Processing line: ~ b.w = state.building_room_width.*(rooms) +~
- Inside source: true
*** True Line Result
b.w = state.building_room_width.*(rooms) +
** Processing line: ~ state.building_room_spacing.*(rooms + 1)~
- Inside source: true
*** True Line Result
state.building_room_spacing.*(rooms + 1)
** Processing line: ~ b.h = state.building_room_height.*(floors) +~
- Inside source: true
*** True Line Result
b.h = state.building_room_height.*(floors) +
** Processing line: ~ state.building_room_spacing.*(floors + 1)~
- Inside source: true
*** True Line Result
state.building_room_spacing.*(floors + 1)
** Processing line: ~ b.right = b.x + b.w~
- Inside source: true
*** True Line Result
b.right = b.x + b.w
** Processing line: ~ b.rect = [b.x, b.y, b.w, b.h]~
- Inside source: true
*** True Line Result
b.rect = [b.x, b.y, b.w, b.h]
** Processing line: ~ b.solids = [[b.x - 1, b.y, b.w + 2, b.h + 1, fancy_white],~
- Inside source: true
*** True Line Result
b.solids = [[b.x - 1, b.y, b.w + 2, b.h + 1, fancy_white],
** Processing line: ~ [b.x, b.y, b.w, b.h, random_building_color],~
- Inside source: true
*** True Line Result
[b.x, b.y, b.w, b.h, random_building_color],
** Processing line: ~ windows_for_building(b.x, floors, rooms)]~
- Inside source: true
*** True Line Result
windows_for_building(b.x, floors, rooms)]
** 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 parse_or_clear! game_prop~
- Inside source: true
*** True Line Result
def parse_or_clear! game_prop
** Processing line: ~ if int? state.as_hash[game_prop]~
- Inside source: true
*** True Line Result
if int? state.as_hash[game_prop]
** Processing line: ~ state.as_hash[game_prop] = state.as_hash[game_prop].to_i~
- Inside source: true
*** True Line Result
state.as_hash[game_prop] = state.as_hash[game_prop].to_i
** Processing line: ~ return true~
- Inside source: true
*** True Line Result
return true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.as_hash[game_prop] = nil~
- Inside source: true
*** True Line Result
state.as_hash[game_prop] = nil
** Processing line: ~ return false~
- Inside source: true
*** True Line Result
return false
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def new_banana owner, x, y, angle, velocity~
- Inside source: true
*** True Line Result
def new_banana owner, x, y, angle, velocity
** Processing line: ~ state.new_entity(:banana) do |b|~
- Inside source: true
*** True Line Result
state.new_entity(:banana) do |b|
** Processing line: ~ b.owner = owner~
- Inside source: true
*** True Line Result
b.owner = owner
** Processing line: ~ b.x = x~
- Inside source: true
*** True Line Result
b.x = x
** Processing line: ~ b.y = y~
- Inside source: true
*** True Line Result
b.y = y
** Processing line: ~ b.angle = angle % 360~
- Inside source: true
*** True Line Result
b.angle = angle % 360
** Processing line: ~ b.velocity = velocity / 5~
- Inside source: true
*** True Line Result
b.velocity = velocity / 5
** Processing line: ~ b.dx = b.angle.vector_x(b.velocity)~
- Inside source: true
*** True Line Result
b.dx = b.angle.vector_x(b.velocity)
** Processing line: ~ b.dy = b.angle.vector_y(b.velocity)~
- Inside source: true
*** True Line Result
b.dy = b.angle.vector_y(b.velocity)
** 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 fancy_white~
- Inside source: true
*** True Line Result
def fancy_white
** Processing line: ~ [253, 252, 253]~
- Inside source: true
*** True Line Result
[253, 252, 253]
** 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: ~ $you_so_basic_gorillas = YouSoBasicGorillas.new~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas = YouSoBasicGorillas.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: ~ $you_so_basic_gorillas.outputs = args.outputs~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas.outputs = args.outputs
** Processing line: ~ $you_so_basic_gorillas.grid = args.grid~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas.grid = args.grid
** Processing line: ~ $you_so_basic_gorillas.state = args.state~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas.state = args.state
** Processing line: ~ $you_so_basic_gorillas.inputs = args.inputs~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas.inputs = args.inputs
** Processing line: ~ $you_so_basic_gorillas.tick~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas.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: ~* Platformer - Gorillas Basic - repl.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Platformer - Gorillas Basic - 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_platformer/gorillas_basic/app/repl.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_platformer/gorillas_basic/app/repl.rb
** Processing line: ~ begin~
- Inside source: true
*** True Line Result
begin
** Processing line: ~ if $gtk.args.state.current_turn == :player_1_angle~
- Inside source: true
*** True Line Result
if $gtk.args.state.current_turn == :player_1_angle
** Processing line: ~ $gtk.args.state.player_1_angle = "#{60 + 10.randomize(:ratio).to_i}"~
- Inside source: true
*** True Line Result
$gtk.args.state.player_1_angle = "#{60 + 10.randomize(:ratio).to_i}"
** Processing line: ~ $you_so_basic_gorillas.input_execute_turn~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas.input_execute_turn
** Processing line: ~ $gtk.args.state.player_1_velocity = "#{30 + 20.randomize(:ratio).to_i}"~
- Inside source: true
*** True Line Result
$gtk.args.state.player_1_velocity = "#{30 + 20.randomize(:ratio).to_i}"
** Processing line: ~ $you_so_basic_gorillas.input_execute_turn~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas.input_execute_turn
** Processing line: ~ elsif $gtk.args.state.current_turn == :player_2_angle~
- Inside source: true
*** True Line Result
elsif $gtk.args.state.current_turn == :player_2_angle
** Processing line: ~ $gtk.args.state.player_2_angle = "#{60 + 10.randomize(:ratio).to_i}"~
- Inside source: true
*** True Line Result
$gtk.args.state.player_2_angle = "#{60 + 10.randomize(:ratio).to_i}"
** Processing line: ~ $you_so_basic_gorillas.input_execute_turn~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas.input_execute_turn
** Processing line: ~ $gtk.args.state.player_2_velocity = "#{30 + 20.randomize(:ratio).to_i}"~
- Inside source: true
*** True Line Result
$gtk.args.state.player_2_velocity = "#{30 + 20.randomize(:ratio).to_i}"
** Processing line: ~ $you_so_basic_gorillas.input_execute_turn~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas.input_execute_turn
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ $you_so_basic_gorillas.input_execute_turn~
- Inside source: true
*** True Line Result
$you_so_basic_gorillas.input_execute_turn
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ puts e~
- Inside source: true
*** True Line Result
puts e
** 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: ~* Platformer - Gorillas Basic - tests.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Platformer - Gorillas Basic - tests.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/gorillas_basic/app/tests.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_platformer/gorillas_basic/app/tests.rb
** Processing line: ~ $gtk.reset 100~
- Inside source: true
*** True Line Result
$gtk.reset 100
** Processing line: ~ $gtk.supress_framerate_warning = true~
- Inside source: true
*** True Line Result
$gtk.supress_framerate_warning = true
** Processing line: ~ $gtk.require 'app/tests/building_generation_tests.rb'~
- Inside source: true
*** True Line Result
$gtk.require 'app/tests/building_generation_tests.rb'
** Processing line: ~ $gtk.tests.start~
- Inside source: true
*** True Line Result
$gtk.tests.start
** 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 - Gorillas Basic - Tests - building_generation_tests.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Platformer - Gorillas Basic - Tests - building_generation_tests.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/gorillas_basic/app/tests/building_generation_tests.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_platformer/gorillas_basic/app/tests/building_generation_tests.rb
** Processing line: ~ def test_solids args, assert~
- Inside source: true
*** True Line Result
def test_solids args, assert
** Processing line: ~ game = YouSoBasicGorillas.new~
- Inside source: true
*** True Line Result
game = YouSoBasicGorillas.new
** Processing line: ~ game.outputs = args.outputs~
- Inside source: true
*** True Line Result
game.outputs = args.outputs
** Processing line: ~ game.grid = args.grid~
- Inside source: true
*** True Line Result
game.grid = args.grid
** Processing line: ~ game.state = args.state~
- Inside source: true
*** True Line Result
game.state = args.state
** Processing line: ~ game.inputs = args.inputs~
- Inside source: true
*** True Line Result
game.inputs = args.inputs
** Processing line: ~ game.tick~
- Inside source: true
*** True Line Result
game.tick
** Processing line: ~ assert.true! args.state.stage_generated, "stage wasn't generated but it should have been"~
- Inside source: true
*** True Line Result
assert.true! args.state.stage_generated, "stage wasn't generated but it should have been"
** Processing line: ~ game.tick~
- Inside source: true
*** True Line Result
game.tick
** Processing line: ~ assert.true! args.outputs.static_solids.length > 0, "stage wasn't rendered"~
- Inside source: true
*** True Line Result
assert.true! args.outputs.static_solids.length > 0, "stage wasn't rendered"
** Processing line: ~ number_of_building_components = (args.state.buildings.map { |b| 2 + b.solids[2].length }.inject do |sum, v| (sum || 0) + v end)~
- Inside source: true
*** True Line Result
number_of_building_components = (args.state.buildings.map { |b| 2 + b.solids[2].length }.inject do |sum, v| (sum || 0) + v end)
** Processing line: ~ the_only_background = 1~
- Inside source: true
*** True Line Result
the_only_background = 1
** Processing line: ~ static_solids = args.outputs.static_solids.length~
- Inside source: true
*** True Line Result
static_solids = args.outputs.static_solids.length
** Processing line: ~ assert.true! static_solids == the_only_background.+(number_of_building_components), "not all parts of the buildings and background were rendered"~
- Inside source: true
*** True Line Result
assert.true! static_solids == the_only_background.+(number_of_building_components), "not all parts of the buildings and background were rendered"
** 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: ~* Platformer - The Little Probe - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Platformer - The Little Probe - 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/the_little_probe/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_platformer/the_little_probe/app/main.rb
** Processing line: ~ class FallingCircle~
- Inside source: true
*** True Line Result
class FallingCircle
** 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: ~ fiddle~
- Inside source: true
*** True Line Result
fiddle
** 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: ~ 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: ~ def fiddle~
- Inside source: true
*** True Line Result
def fiddle
** Processing line: ~ state.gravity = -0.02~
- Inside source: true
*** True Line Result
state.gravity = -0.02
** Processing line: ~ circle.radius = 15~
- Inside source: true
*** True Line Result
circle.radius = 15
** Processing line: ~ circle.elasticity = 0.4~
- Inside source: true
*** True Line Result
circle.elasticity = 0.4
** Processing line: ~ camera.follow_speed = 0.4 * 0.4~
- Inside source: true
*** True Line Result
camera.follow_speed = 0.4 * 0.4
** 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: ~ render_stage_editor~
- Inside source: true
*** True Line Result
render_stage_editor
** Processing line: ~ render_debug~
- Inside source: true
*** True Line Result
render_debug
** Processing line: ~ render_game~
- Inside source: true
*** True Line Result
render_game
** 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: ~ if state.tick_count == 0~
- Inside source: true
*** True Line Result
if state.tick_count == 0
** Processing line: ~ outputs.sounds << "sounds/bg.ogg"~
- Inside source: true
*** True Line Result
outputs.sounds << "sounds/bg.ogg"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.storyline ||= [~
- Inside source: true
*** True Line Result
state.storyline ||= [
** Processing line: ~ { text: "<- -> to aim, hold space to charge", distance_gate: 0 },~
- Inside source: true
*** True Line Result
{ text: "<- -> to aim, hold space to charge", distance_gate: 0 },
** Processing line: ~ { text: "the little probe - by @amirrajan, made with DragonRuby Game Toolkit", distance_gate: 0 },~
- Inside source: true
*** True Line Result
{ text: "the little probe - by @amirrajan, made with DragonRuby Game Toolkit", distance_gate: 0 },
** Processing line: ~ { text: "mission control, this is sasha. landing on europa successful.", distance_gate: 0 },~
- Inside source: true
*** True Line Result
{ text: "mission control, this is sasha. landing on europa successful.", distance_gate: 0 },
** Processing line: ~ { text: "operation \"find earth 2.0\", initiated at 8-29-2036 14:00.", distance_gate: 0 },~
- Inside source: true
*** True Line Result
{ text: "operation \"find earth 2.0\", initiated at 8-29-2036 14:00.", distance_gate: 0 },
** Processing line: ~ { text: "jupiter's sure is beautiful...", distance_gate: 4000 },~
- Inside source: true
*** True Line Result
{ text: "jupiter's sure is beautiful...", distance_gate: 4000 },
** Processing line: ~ { text: "hmm, it seems there's some kind of anomoly in the sky", distance_gate: 7000 },~
- Inside source: true
*** True Line Result
{ text: "hmm, it seems there's some kind of anomoly in the sky", distance_gate: 7000 },
** Processing line: ~ { text: "dancing lights, i'll call them whisps.", distance_gate: 8000 },~
- Inside source: true
*** True Line Result
{ text: "dancing lights, i'll call them whisps.", distance_gate: 8000 },
** Processing line: ~ { text: "#todo... look i ran out of time -_-", distance_gate: 9000 },~
- Inside source: true
*** True Line Result
{ text: "#todo... look i ran out of time -_-", distance_gate: 9000 },
** Processing line: ~ { text: "there's never enough time", distance_gate: 9000 },~
- Inside source: true
*** True Line Result
{ text: "there's never enough time", distance_gate: 9000 },
** Processing line: ~ { text: "the game jam was fun though ^_^", distance_gate: 10000 },~
- Inside source: true
*** True Line Result
{ text: "the game jam was fun though ^_^", distance_gate: 10000 },
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ load_level force: args.state.tick_count == 0~
- Inside source: true
*** True Line Result
load_level force: args.state.tick_count == 0
** Processing line: ~ state.line_mode ||= :terrain~
- Inside source: true
*** True Line Result
state.line_mode ||= :terrain
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.sound_index ||= 1~
- Inside source: true
*** True Line Result
state.sound_index ||= 1
** Processing line: ~ circle.potential_lift ||= 0~
- Inside source: true
*** True Line Result
circle.potential_lift ||= 0
** Processing line: ~ circle.angle ||= 90~
- Inside source: true
*** True Line Result
circle.angle ||= 90
** Processing line: ~ circle.check_point_at ||= -1000~
- Inside source: true
*** True Line Result
circle.check_point_at ||= -1000
** Processing line: ~ circle.game_over_at ||= -1000~
- Inside source: true
*** True Line Result
circle.game_over_at ||= -1000
** Processing line: ~ circle.x ||= -485~
- Inside source: true
*** True Line Result
circle.x ||= -485
** Processing line: ~ circle.y ||= 12226~
- Inside source: true
*** True Line Result
circle.y ||= 12226
** Processing line: ~ circle.check_point_x ||= circle.x~
- Inside source: true
*** True Line Result
circle.check_point_x ||= circle.x
** Processing line: ~ circle.check_point_y ||= circle.y~
- Inside source: true
*** True Line Result
circle.check_point_y ||= circle.y
** Processing line: ~ circle.dy ||= 0~
- Inside source: true
*** True Line Result
circle.dy ||= 0
** Processing line: ~ circle.dx ||= 0~
- Inside source: true
*** True Line Result
circle.dx ||= 0
** Processing line: ~ circle.previous_dy ||= 0~
- Inside source: true
*** True Line Result
circle.previous_dy ||= 0
** Processing line: ~ circle.previous_dx ||= 0~
- Inside source: true
*** True Line Result
circle.previous_dx ||= 0
** Processing line: ~ circle.angle ||= 0~
- Inside source: true
*** True Line Result
circle.angle ||= 0
** Processing line: ~ circle.after_images ||= []~
- Inside source: true
*** True Line Result
circle.after_images ||= []
** Processing line: ~ circle.terrains_to_monitor ||= {}~
- Inside source: true
*** True Line Result
circle.terrains_to_monitor ||= {}
** Processing line: ~ circle.impact_history ||= []~
- Inside source: true
*** True Line Result
circle.impact_history ||= []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ camera.x ||= 0~
- Inside source: true
*** True Line Result
camera.x ||= 0
** Processing line: ~ camera.y ||= 0~
- Inside source: true
*** True Line Result
camera.y ||= 0
** Processing line: ~ camera.target_x ||= 0~
- Inside source: true
*** True Line Result
camera.target_x ||= 0
** Processing line: ~ camera.target_y ||= 0~
- Inside source: true
*** True Line Result
camera.target_y ||= 0
** Processing line: ~ state.snaps ||= { }~
- Inside source: true
*** True Line Result
state.snaps ||= { }
** Processing line: ~ state.snap_number = 10~
- Inside source: true
*** True Line Result
state.snap_number = 10
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.storyline_x ||= -1000~
- Inside source: true
*** True Line Result
args.state.storyline_x ||= -1000
** Processing line: ~ args.state.storyline_y ||= -1000~
- Inside source: true
*** True Line Result
args.state.storyline_y ||= -1000
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_game~
- Inside source: true
*** True Line Result
def render_game
** Processing line: ~ outputs.background_color = [0, 0, 0]~
- Inside source: true
*** True Line Result
outputs.background_color = [0, 0, 0]
** Processing line: ~ outputs.sprites << [-circle.x + 1100,~
- Inside source: true
*** True Line Result
outputs.sprites << [-circle.x + 1100,
** Processing line: ~ -circle.y - 100,~
- Inside source: true
*** True Line Result
-circle.y - 100,
** Processing line: ~ 2416 * 4,~
- Inside source: true
*** True Line Result
2416 * 4,
** Processing line: ~ 3574 * 4,~
- Inside source: true
*** True Line Result
3574 * 4,
** Processing line: ~ 'sprites/jupiter.png']~
- Inside source: true
*** True Line Result
'sprites/jupiter.png']
** Processing line: ~ outputs.sprites << [-circle.x,~
- Inside source: true
*** True Line Result
outputs.sprites << [-circle.x,
** Processing line: ~ -circle.y,~
- Inside source: true
*** True Line Result
-circle.y,
** Processing line: ~ 2416 * 4,~
- Inside source: true
*** True Line Result
2416 * 4,
** Processing line: ~ 3574 * 4,~
- Inside source: true
*** True Line Result
3574 * 4,
** Processing line: ~ 'sprites/level.png']~
- Inside source: true
*** True Line Result
'sprites/level.png']
** Processing line: ~ outputs.sprites << state.whisp_queue~
- Inside source: true
*** True Line Result
outputs.sprites << state.whisp_queue
** Processing line: ~ render_aiming_retical~
- Inside source: true
*** True Line Result
render_aiming_retical
** Processing line: ~ render_circle~
- Inside source: true
*** True Line Result
render_circle
** Processing line: ~ render_notification~
- Inside source: true
*** True Line Result
render_notification
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_notification~
- Inside source: true
*** True Line Result
def render_notification
** Processing line: ~ toast_length = 500~
- Inside source: true
*** True Line Result
toast_length = 500
** Processing line: ~ if circle.game_over_at.elapsed_time < toast_length~
- Inside source: true
*** True Line Result
if circle.game_over_at.elapsed_time < toast_length
** Processing line: ~ label_text = "..."~
- Inside source: true
*** True Line Result
label_text = "..."
** Processing line: ~ elsif circle.check_point_at.elapsed_time > toast_length~
- Inside source: true
*** True Line Result
elsif circle.check_point_at.elapsed_time > toast_length
** Processing line: ~ args.state.current_storyline = nil~
- Inside source: true
*** True Line Result
args.state.current_storyline = nil
** Processing line: ~ return~
- Inside source: true
*** True Line Result
return
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ if circle.check_point_at &&~
- Inside source: true
*** True Line Result
if circle.check_point_at &&
** Processing line: ~ circle.check_point_at.elapsed_time == 1 &&~
- Inside source: true
*** True Line Result
circle.check_point_at.elapsed_time == 1 &&
** Processing line: ~ !args.state.current_storyline~
- Inside source: true
*** True Line Result
!args.state.current_storyline
** Processing line: ~ if args.state.storyline.length > 0 && args.state.distance_traveled > args.state.storyline[0][:distance_gate]~
- Inside source: true
*** True Line Result
if args.state.storyline.length > 0 && args.state.distance_traveled > args.state.storyline[0][:distance_gate]
** Processing line: ~ args.state.current_storyline = args.state.storyline.shift[:text]~
- Inside source: true
*** True Line Result
args.state.current_storyline = args.state.storyline.shift[:text]
** Processing line: ~ args.state.distance_traveled ||= 0~
- Inside source: true
*** True Line Result
args.state.distance_traveled ||= 0
** Processing line: ~ args.state.storyline_x = circle.x~
- Inside source: true
*** True Line Result
args.state.storyline_x = circle.x
** Processing line: ~ args.state.storyline_y = circle.y~
- Inside source: true
*** True Line Result
args.state.storyline_y = circle.y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ return unless args.state.current_storyline~
- Inside source: true
*** True Line Result
return unless args.state.current_storyline
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ label_text = args.state.current_storyline~
- Inside source: true
*** True Line Result
label_text = args.state.current_storyline
** Processing line: ~ return unless label_text~
- Inside source: true
*** True Line Result
return unless label_text
** Processing line: ~ x = circle.x + camera.x~
- Inside source: true
*** True Line Result
x = circle.x + camera.x
** Processing line: ~ y = circle.y + camera.y - 40~
- Inside source: true
*** True Line Result
y = circle.y + camera.y - 40
** Processing line: ~ w = 900~
- Inside source: true
*** True Line Result
w = 900
** Processing line: ~ h = 30~
- Inside source: true
*** True Line Result
h = 30
** Processing line: ~ outputs.primitives << [x - w.idiv(2), y - h, w, h, 255, 255, 255, 255].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [x - w.idiv(2), y - h, w, h, 255, 255, 255, 255].solid
** Processing line: ~ outputs.primitives << [x - w.idiv(2), y - h, w, h, 0, 0, 0, 255].border~
- Inside source: true
*** True Line Result
outputs.primitives << [x - w.idiv(2), y - h, w, h, 0, 0, 0, 255].border
** Processing line: ~ outputs.labels << [x, y - 4, label_text, 1, 1, 0, 0, 0, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [x, y - 4, label_text, 1, 1, 0, 0, 0, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_aiming_retical~
- Inside source: true
*** True Line Result
def render_aiming_retical
** Processing line: ~ outputs.sprites << [state.camera.x + circle.x + circle.angle.vector_x(circle.potential_lift * 10) - 5,~
- Inside source: true
*** True Line Result
outputs.sprites << [state.camera.x + circle.x + circle.angle.vector_x(circle.potential_lift * 10) - 5,
** Processing line: ~ state.camera.y + circle.y + circle.angle.vector_y(circle.potential_lift * 10) - 5,~
- Inside source: true
*** True Line Result
state.camera.y + circle.y + circle.angle.vector_y(circle.potential_lift * 10) - 5,
** Processing line: ~ 10, 10, 'sprites/circle-orange.png']~
- Inside source: true
*** True Line Result
10, 10, 'sprites/circle-orange.png']
** Processing line: ~ outputs.sprites << [state.camera.x + circle.x + circle.angle.vector_x(circle.radius * 3) - 5,~
- Inside source: true
*** True Line Result
outputs.sprites << [state.camera.x + circle.x + circle.angle.vector_x(circle.radius * 3) - 5,
** Processing line: ~ state.camera.y + circle.y + circle.angle.vector_y(circle.radius * 3) - 5,~
- Inside source: true
*** True Line Result
state.camera.y + circle.y + circle.angle.vector_y(circle.radius * 3) - 5,
** Processing line: ~ 10, 10, 'sprites/circle-orange.png', 0, 128]~
- Inside source: true
*** True Line Result
10, 10, 'sprites/circle-orange.png', 0, 128]
** Processing line: ~ if rand > 0.9~
- Inside source: true
*** True Line Result
if rand > 0.9
** Processing line: ~ outputs.sprites << [state.camera.x + circle.x + circle.angle.vector_x(circle.radius * 3) - 5,~
- Inside source: true
*** True Line Result
outputs.sprites << [state.camera.x + circle.x + circle.angle.vector_x(circle.radius * 3) - 5,
** Processing line: ~ state.camera.y + circle.y + circle.angle.vector_y(circle.radius * 3) - 5,~
- Inside source: true
*** True Line Result
state.camera.y + circle.y + circle.angle.vector_y(circle.radius * 3) - 5,
** Processing line: ~ 10, 10, 'sprites/circle-white.png', 0, 128]~
- Inside source: true
*** True Line Result
10, 10, 'sprites/circle-white.png', 0, 128]
** 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_circle~
- Inside source: true
*** True Line Result
def render_circle
** Processing line: ~ outputs.sprites << circle.after_images.map do |ai|~
- Inside source: true
*** True Line Result
outputs.sprites << circle.after_images.map do |ai|
** Processing line: ~ ai.merge(x: ai.x + state.camera.x - circle.radius,~
- Inside source: true
*** True Line Result
ai.merge(x: ai.x + state.camera.x - circle.radius,
** Processing line: ~ y: ai.y + state.camera.y - circle.radius,~
- Inside source: true
*** True Line Result
y: ai.y + state.camera.y - circle.radius,
** Processing line: ~ w: circle.radius * 2,~
- Inside source: true
*** True Line Result
w: circle.radius * 2,
** Processing line: ~ h: circle.radius * 2,~
- Inside source: true
*** True Line Result
h: circle.radius * 2,
** Processing line: ~ path: 'sprites/circle-white.png')~
- Inside source: true
*** True Line Result
path: 'sprites/circle-white.png')
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.sprites << [(circle.x - circle.radius) + state.camera.x,~
- Inside source: true
*** True Line Result
outputs.sprites << [(circle.x - circle.radius) + state.camera.x,
** Processing line: ~ (circle.y - circle.radius) + state.camera.y,~
- Inside source: true
*** True Line Result
(circle.y - circle.radius) + state.camera.y,
** Processing line: ~ circle.radius * 2,~
- Inside source: true
*** True Line Result
circle.radius * 2,
** Processing line: ~ circle.radius * 2,~
- Inside source: true
*** True Line Result
circle.radius * 2,
** Processing line: ~ 'sprites/probe.png']~
- Inside source: true
*** True Line Result
'sprites/probe.png']
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_debug~
- Inside source: true
*** True Line Result
def render_debug
** Processing line: ~ return unless state.debug_mode~
- Inside source: true
*** True Line Result
return unless state.debug_mode
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << [10, 30, state.line_mode, 0, 0, 0, 0, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [10, 30, state.line_mode, 0, 0, 0, 0, 0]
** Processing line: ~ outputs.labels << [12, 32, state.line_mode, 0, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [12, 32, state.line_mode, 0, 0, 255, 255, 255]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.lines << trajectory(circle).line.to_hash.tap do |h|~
- Inside source: true
*** True Line Result
args.outputs.lines << trajectory(circle).line.to_hash.tap do |h|
** Processing line: ~ h[:x] += state.camera.x~
- Inside source: true
*** True Line Result
h[:x] += state.camera.x
** Processing line: ~ h[:y] += state.camera.y~
- Inside source: true
*** True Line Result
h[:y] += state.camera.y
** Processing line: ~ h[:x2] += state.camera.x~
- Inside source: true
*** True Line Result
h[:x2] += state.camera.x
** Processing line: ~ h[:y2] += state.camera.y~
- Inside source: true
*** True Line Result
h[:y2] += state.camera.y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.primitives << state.terrain.find_all do |t|~
- Inside source: true
*** True Line Result
outputs.primitives << state.terrain.find_all do |t|
** Processing line: ~ circle.x.between?(t.x - 640, t.x2 + 640) || circle.y.between?(t.y - 360, t.y2 + 360)~
- Inside source: true
*** True Line Result
circle.x.between?(t.x - 640, t.x2 + 640) || circle.y.between?(t.y - 360, t.y2 + 360)
** Processing line: ~ end.map do |t|~
- Inside source: true
*** True Line Result
end.map do |t|
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ t.line.associate(r: 0, g: 255, b: 0) do |h|~
- Inside source: true
*** True Line Result
t.line.associate(r: 0, g: 255, b: 0) do |h|
** Processing line: ~ h.x += state.camera.x~
- Inside source: true
*** True Line Result
h.x += state.camera.x
** Processing line: ~ h.y += state.camera.y~
- Inside source: true
*** True Line Result
h.y += state.camera.y
** Processing line: ~ h.x2 += state.camera.x~
- Inside source: true
*** True Line Result
h.x2 += state.camera.x
** Processing line: ~ h.y2 += state.camera.y~
- Inside source: true
*** True Line Result
h.y2 += state.camera.y
** Processing line: ~ if circle.rect.intersect_rect? t[:rect]~
- Inside source: true
*** True Line Result
if circle.rect.intersect_rect? t[:rect]
** Processing line: ~ h[:r] = 255~
- Inside source: true
*** True Line Result
h[:r] = 255
** Processing line: ~ h[:g] = 0~
- Inside source: true
*** True Line Result
h[:g] = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ h~
- Inside source: true
*** True Line Result
h
** Processing line: ~ end,~
- Inside source: true
*** True Line Result
end,
** Processing line: ~ t[:rect].border.associate(r: 255, g: 0, b: 0) do |h|~
- Inside source: true
*** True Line Result
t[:rect].border.associate(r: 255, g: 0, b: 0) do |h|
** Processing line: ~ h.x += state.camera.x~
- Inside source: true
*** True Line Result
h.x += state.camera.x
** Processing line: ~ h.y += state.camera.y~
- Inside source: true
*** True Line Result
h.y += state.camera.y
** Processing line: ~ h.b = 255 if line_near_rect? circle.rect, t~
- Inside source: true
*** True Line Result
h.b = 255 if line_near_rect? circle.rect, t
** Processing line: ~ h~
- Inside source: true
*** True Line Result
h
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.primitives << state.lava.find_all do |t|~
- Inside source: true
*** True Line Result
outputs.primitives << state.lava.find_all do |t|
** Processing line: ~ circle.x.between?(t.x - 640, t.x2 + 640) || circle.y.between?(t.y - 360, t.y2 + 360)~
- Inside source: true
*** True Line Result
circle.x.between?(t.x - 640, t.x2 + 640) || circle.y.between?(t.y - 360, t.y2 + 360)
** Processing line: ~ end.map do |t|~
- Inside source: true
*** True Line Result
end.map do |t|
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ t.line.associate(r: 0, g: 0, b: 255) do |h|~
- Inside source: true
*** True Line Result
t.line.associate(r: 0, g: 0, b: 255) do |h|
** Processing line: ~ h.x += state.camera.x~
- Inside source: true
*** True Line Result
h.x += state.camera.x
** Processing line: ~ h.y += state.camera.y~
- Inside source: true
*** True Line Result
h.y += state.camera.y
** Processing line: ~ h.x2 += state.camera.x~
- Inside source: true
*** True Line Result
h.x2 += state.camera.x
** Processing line: ~ h.y2 += state.camera.y~
- Inside source: true
*** True Line Result
h.y2 += state.camera.y
** Processing line: ~ if circle.rect.intersect_rect? t[:rect]~
- Inside source: true
*** True Line Result
if circle.rect.intersect_rect? t[:rect]
** Processing line: ~ h[:r] = 255~
- Inside source: true
*** True Line Result
h[:r] = 255
** Processing line: ~ h[:b] = 0~
- Inside source: true
*** True Line Result
h[:b] = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ h~
- Inside source: true
*** True Line Result
h
** Processing line: ~ end,~
- Inside source: true
*** True Line Result
end,
** Processing line: ~ t[:rect].border.associate(r: 255, g: 0, b: 0) do |h|~
- Inside source: true
*** True Line Result
t[:rect].border.associate(r: 255, g: 0, b: 0) do |h|
** Processing line: ~ h.x += state.camera.x~
- Inside source: true
*** True Line Result
h.x += state.camera.x
** Processing line: ~ h.y += state.camera.y~
- Inside source: true
*** True Line Result
h.y += state.camera.y
** Processing line: ~ h.b = 255 if line_near_rect? circle.rect, t~
- Inside source: true
*** True Line Result
h.b = 255 if line_near_rect? circle.rect, t
** Processing line: ~ h~
- Inside source: true
*** True Line Result
h
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.god_mode~
- Inside source: true
*** True Line Result
if state.god_mode
** Processing line: ~ border = circle.rect.merge(x: circle.rect.x + state.camera.x,~
- Inside source: true
*** True Line Result
border = circle.rect.merge(x: circle.rect.x + state.camera.x,
** Processing line: ~ y: circle.rect.y + state.camera.y,~
- Inside source: true
*** True Line Result
y: circle.rect.y + state.camera.y,
** Processing line: ~ g: 255)~
- Inside source: true
*** True Line Result
g: 255)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ border = circle.rect.merge(x: circle.rect.x + state.camera.x,~
- Inside source: true
*** True Line Result
border = circle.rect.merge(x: circle.rect.x + state.camera.x,
** Processing line: ~ y: circle.rect.y + state.camera.y,~
- Inside source: true
*** True Line Result
y: circle.rect.y + state.camera.y,
** Processing line: ~ b: 255)~
- Inside source: true
*** True Line Result
b: 255)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.borders << border~
- Inside source: true
*** True Line Result
outputs.borders << border
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ overlapping ||= {}~
- Inside source: true
*** True Line Result
overlapping ||= {}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ circle.impact_history.each do |h|~
- Inside source: true
*** True Line Result
circle.impact_history.each do |h|
** Processing line: ~ label_mod = 300~
- Inside source: true
*** True Line Result
label_mod = 300
** Processing line: ~ x = (h[:body][:x].-(150).idiv(label_mod)) * label_mod + camera.x~
- Inside source: true
*** True Line Result
x = (h[:body][:x].-(150).idiv(label_mod)) * label_mod + camera.x
** Processing line: ~ y = (h[:body][:y].+(150).idiv(label_mod)) * label_mod + camera.y~
- Inside source: true
*** True Line Result
y = (h[:body][:y].+(150).idiv(label_mod)) * label_mod + camera.y
** Processing line: ~ 10.times do~
- Inside source: true
*** True Line Result
10.times do
** Processing line: ~ if overlapping[x] && overlapping[x][y]~
- Inside source: true
*** True Line Result
if overlapping[x] && overlapping[x][y]
** Processing line: ~ y -= 52~
- Inside source: true
*** True Line Result
y -= 52
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ break~
- Inside source: true
*** True Line Result
break
** 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: ~ overlapping[x] ||= {}~
- Inside source: true
*** True Line Result
overlapping[x] ||= {}
** Processing line: ~ overlapping[x][y] ||= true~
- Inside source: true
*** True Line Result
overlapping[x][y] ||= true
** Processing line: ~ outputs.primitives << [x, y - 25, 300, 50, 0, 0, 0, 128].solid~
- Inside source: true
*** True Line Result
outputs.primitives << [x, y - 25, 300, 50, 0, 0, 0, 128].solid
** Processing line: ~ outputs.labels << [x + 10, y + 24, "dy: %.2f" % h[:body][:new_dy], -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [x + 10, y + 24, "dy: %.2f" % h[:body][:new_dy], -2, 0, 255, 255, 255]
** Processing line: ~ outputs.labels << [x + 10, y + 9, "dx: %.2f" % h[:body][:new_dx], -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [x + 10, y + 9, "dx: %.2f" % h[:body][:new_dx], -2, 0, 255, 255, 255]
** Processing line: ~ outputs.labels << [x + 10, y - 5, " ?: #{h[:body][:new_reason]}", -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [x + 10, y - 5, " ?: #{h[:body][:new_reason]}", -2, 0, 255, 255, 255]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << [x + 100, y + 24, "angle: %.2f" % h[:impact][:angle], -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [x + 100, y + 24, "angle: %.2f" % h[:impact][:angle], -2, 0, 255, 255, 255]
** Processing line: ~ outputs.labels << [x + 100, y + 9, "m(l): %.2f" % h[:terrain][:slope], -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [x + 100, y + 9, "m(l): %.2f" % h[:terrain][:slope], -2, 0, 255, 255, 255]
** Processing line: ~ outputs.labels << [x + 100, y - 5, "m(c): %.2f" % h[:body][:slope], -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [x + 100, y - 5, "m(c): %.2f" % h[:body][:slope], -2, 0, 255, 255, 255]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ outputs.labels << [x + 200, y + 24, "ray: #{h[:impact][:ray]}", -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [x + 200, y + 24, "ray: #{h[:impact][:ray]}", -2, 0, 255, 255, 255]
** Processing line: ~ outputs.labels << [x + 200, y + 9, "nxt: #{h[:impact][:ray_next]}", -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [x + 200, y + 9, "nxt: #{h[:impact][:ray_next]}", -2, 0, 255, 255, 255]
** Processing line: ~ outputs.labels << [x + 200, y - 5, "typ: #{h[:impact][:type]}", -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [x + 200, y - 5, "typ: #{h[:impact][:type]}", -2, 0, 255, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if circle.floor~
- Inside source: true
*** True Line Result
if circle.floor
** Processing line: ~ outputs.labels << [circle.x + camera.x + 30, circle.y + camera.y + 100, "point: #{circle.floor_point.slice(:x, :y).values}", -2, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [circle.x + camera.x + 30, circle.y + camera.y + 100, "point: #{circle.floor_point.slice(:x, :y).values}", -2, 0]
** Processing line: ~ outputs.labels << [circle.x + camera.x + 31, circle.y + camera.y + 101, "point: #{circle.floor_point.slice(:x, :y).values}", -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [circle.x + camera.x + 31, circle.y + camera.y + 101, "point: #{circle.floor_point.slice(:x, :y).values}", -2, 0, 255, 255, 255]
** Processing line: ~ outputs.labels << [circle.x + camera.x + 30, circle.y + camera.y + 85, "circle: #{circle.as_hash.slice(:x, :y).values}", -2, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [circle.x + camera.x + 30, circle.y + camera.y + 85, "circle: #{circle.as_hash.slice(:x, :y).values}", -2, 0]
** Processing line: ~ outputs.labels << [circle.x + camera.x + 31, circle.y + camera.y + 86, "circle: #{circle.as_hash.slice(:x, :y).values}", -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [circle.x + camera.x + 31, circle.y + camera.y + 86, "circle: #{circle.as_hash.slice(:x, :y).values}", -2, 0, 255, 255, 255]
** Processing line: ~ outputs.labels << [circle.x + camera.x + 30, circle.y + camera.y + 70, "rel: #{circle.floor_relative_x} #{circle.floor_relative_y}", -2, 0]~
- Inside source: true
*** True Line Result
outputs.labels << [circle.x + camera.x + 30, circle.y + camera.y + 70, "rel: #{circle.floor_relative_x} #{circle.floor_relative_y}", -2, 0]
** Processing line: ~ outputs.labels << [circle.x + camera.x + 31, circle.y + camera.y + 71, "rel: #{circle.floor_relative_x} #{circle.floor_relative_y}", -2, 0, 255, 255, 255]~
- Inside source: true
*** True Line Result
outputs.labels << [circle.x + camera.x + 31, circle.y + camera.y + 71, "rel: #{circle.floor_relative_x} #{circle.floor_relative_y}", -2, 0, 255, 255, 255]
** 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_stage_editor~
- Inside source: true
*** True Line Result
def render_stage_editor
** Processing line: ~ return unless state.god_mode~
- Inside source: true
*** True Line Result
return unless state.god_mode
** Processing line: ~ return unless state.point_one~
- Inside source: true
*** True Line Result
return unless state.point_one
** Processing line: ~ args.lines << [state.point_one, inputs.mouse.point, 0, 255, 255]~
- Inside source: true
*** True Line Result
args.lines << [state.point_one, inputs.mouse.point, 0, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def trajectory body~
- Inside source: true
*** True Line Result
def trajectory body
** Processing line: ~ [body.x + body.dx,~
- Inside source: true
*** True Line Result
[body.x + body.dx,
** Processing line: ~ body.y + body.dy,~
- Inside source: true
*** True Line Result
body.y + body.dy,
** Processing line: ~ body.x + body.dx * 1000,~
- Inside source: true
*** True Line Result
body.x + body.dx * 1000,
** Processing line: ~ body.y + body.dy * 1000,~
- Inside source: true
*** True Line Result
body.y + body.dy * 1000,
** Processing line: ~ 0, 255, 255]~
- Inside source: true
*** True Line Result
0, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def lengthen_line line, num~
- Inside source: true
*** True Line Result
def lengthen_line line, num
** Processing line: ~ line = normalize_line(line)~
- Inside source: true
*** True Line Result
line = normalize_line(line)
** Processing line: ~ slope = geometry.line_slope(line, replace_infinity: 10).abs~
- Inside source: true
*** True Line Result
slope = geometry.line_slope(line, replace_infinity: 10).abs
** Processing line: ~ if slope < 2~
- Inside source: true
*** True Line Result
if slope < 2
** Processing line: ~ [line.x - num, line.y, line.x2 + num, line.y2].line.to_hash~
- Inside source: true
*** True Line Result
[line.x - num, line.y, line.x2 + num, line.y2].line.to_hash
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ [line.x, line.y, line.x2, line.y2].line.to_hash~
- Inside source: true
*** True Line Result
[line.x, line.y, line.x2, line.y2].line.to_hash
** 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 normalize_line line~
- Inside source: true
*** True Line Result
def normalize_line line
** Processing line: ~ if line.x > line.x2~
- Inside source: true
*** True Line Result
if line.x > line.x2
** Processing line: ~ x = line.x2~
- Inside source: true
*** True Line Result
x = line.x2
** Processing line: ~ y = line.y2~
- Inside source: true
*** True Line Result
y = line.y2
** Processing line: ~ x2 = line.x~
- Inside source: true
*** True Line Result
x2 = line.x
** Processing line: ~ y2 = line.y~
- Inside source: true
*** True Line Result
y2 = line.y
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ x = line.x~
- Inside source: true
*** True Line Result
x = line.x
** Processing line: ~ y = line.y~
- Inside source: true
*** True Line Result
y = line.y
** Processing line: ~ x2 = line.x2~
- Inside source: true
*** True Line Result
x2 = line.x2
** Processing line: ~ y2 = line.y2~
- Inside source: true
*** True Line Result
y2 = line.y2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ [x, y, x2, y2]~
- Inside source: true
*** True Line Result
[x, y, x2, y2]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def rect_for_line line~
- Inside source: true
*** True Line Result
def rect_for_line line
** Processing line: ~ if line.x > line.x2~
- Inside source: true
*** True Line Result
if line.x > line.x2
** Processing line: ~ x = line.x2~
- Inside source: true
*** True Line Result
x = line.x2
** Processing line: ~ y = line.y2~
- Inside source: true
*** True Line Result
y = line.y2
** Processing line: ~ x2 = line.x~
- Inside source: true
*** True Line Result
x2 = line.x
** Processing line: ~ y2 = line.y~
- Inside source: true
*** True Line Result
y2 = line.y
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ x = line.x~
- Inside source: true
*** True Line Result
x = line.x
** Processing line: ~ y = line.y~
- Inside source: true
*** True Line Result
y = line.y
** Processing line: ~ x2 = line.x2~
- Inside source: true
*** True Line Result
x2 = line.x2
** Processing line: ~ y2 = line.y2~
- Inside source: true
*** True Line Result
y2 = line.y2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ w = x2 - x~
- Inside source: true
*** True Line Result
w = x2 - x
** Processing line: ~ h = y2 - y~
- Inside source: true
*** True Line Result
h = y2 - y
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if h < 0~
- Inside source: true
*** True Line Result
if h < 0
** Processing line: ~ y += h~
- Inside source: true
*** True Line Result
y += h
** Processing line: ~ h = h.abs~
- Inside source: true
*** True Line Result
h = h.abs
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if w < circle.radius~
- Inside source: true
*** True Line Result
if w < circle.radius
** Processing line: ~ x -= circle.radius~
- Inside source: true
*** True Line Result
x -= circle.radius
** Processing line: ~ w = circle.radius * 2~
- Inside source: true
*** True Line Result
w = circle.radius * 2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if h < circle.radius~
- Inside source: true
*** True Line Result
if h < circle.radius
** Processing line: ~ y -= circle.radius~
- Inside source: true
*** True Line Result
y -= circle.radius
** Processing line: ~ h = circle.radius * 2~
- Inside source: true
*** True Line Result
h = circle.radius * 2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ { x: x, y: y, w: w, h: h }~
- Inside source: true
*** True Line Result
{ x: x, y: y, w: w, h: h }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def snap_to_grid x, y, snaps~
- Inside source: true
*** True Line Result
def snap_to_grid x, y, snaps
** Processing line: ~ snap_number = 10~
- Inside source: true
*** True Line Result
snap_number = 10
** Processing line: ~ x = x.to_i~
- Inside source: true
*** True Line Result
x = x.to_i
** Processing line: ~ y = y.to_i~
- Inside source: true
*** True Line Result
y = y.to_i
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ x_floor = x.idiv(snap_number) * snap_number~
- Inside source: true
*** True Line Result
x_floor = x.idiv(snap_number) * snap_number
** Processing line: ~ x_mod = x % snap_number~
- Inside source: true
*** True Line Result
x_mod = x % snap_number
** Processing line: ~ x_ceil = (x.idiv(snap_number) + 1) * snap_number~
- Inside source: true
*** True Line Result
x_ceil = (x.idiv(snap_number) + 1) * snap_number
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ y_floor = y.idiv(snap_number) * snap_number~
- Inside source: true
*** True Line Result
y_floor = y.idiv(snap_number) * snap_number
** Processing line: ~ y_mod = y % snap_number~
- Inside source: true
*** True Line Result
y_mod = y % snap_number
** Processing line: ~ y_ceil = (y.idiv(snap_number) + 1) * snap_number~
- Inside source: true
*** True Line Result
y_ceil = (y.idiv(snap_number) + 1) * snap_number
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if snaps[x_floor]~
- Inside source: true
*** True Line Result
if snaps[x_floor]
** Processing line: ~ x_result = x_floor~
- Inside source: true
*** True Line Result
x_result = x_floor
** Processing line: ~ elsif snaps[x_ceil]~
- Inside source: true
*** True Line Result
elsif snaps[x_ceil]
** Processing line: ~ x_result = x_ceil~
- Inside source: true
*** True Line Result
x_result = x_ceil
** Processing line: ~ elsif x_mod < snap_number.idiv(2)~
- Inside source: true
*** True Line Result
elsif x_mod < snap_number.idiv(2)
** Processing line: ~ x_result = x_floor~
- Inside source: true
*** True Line Result
x_result = x_floor
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ x_result = x_ceil~
- Inside source: true
*** True Line Result
x_result = x_ceil
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ snaps[x_result] ||= {}~
- Inside source: true
*** True Line Result
snaps[x_result] ||= {}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if snaps[x_result][y_floor]~
- Inside source: true
*** True Line Result
if snaps[x_result][y_floor]
** Processing line: ~ y_result = y_floor~
- Inside source: true
*** True Line Result
y_result = y_floor
** Processing line: ~ elsif snaps[x_result][y_ceil]~
- Inside source: true
*** True Line Result
elsif snaps[x_result][y_ceil]
** Processing line: ~ y_result = y_ceil~
- Inside source: true
*** True Line Result
y_result = y_ceil
** Processing line: ~ elsif y_mod < snap_number.idiv(2)~
- Inside source: true
*** True Line Result
elsif y_mod < snap_number.idiv(2)
** Processing line: ~ y_result = y_floor~
- Inside source: true
*** True Line Result
y_result = y_floor
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ y_result = y_ceil~
- Inside source: true
*** True Line Result
y_result = y_ceil
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ snaps[x_result][y_result] = true~
- Inside source: true
*** True Line Result
snaps[x_result][y_result] = true
** Processing line: ~ return [x_result, y_result]~
- Inside source: true
*** True Line Result
return [x_result, y_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 snap_line line~
- Inside source: true
*** True Line Result
def snap_line line
** Processing line: ~ x, y, x2, y2 = line~
- Inside source: true
*** True Line Result
x, y, x2, y2 = line
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def string_to_line s~
- Inside source: true
*** True Line Result
def string_to_line s
** Processing line: ~ x, y, x2, y2 = s.split(',').map(&:to_f)~
- Inside source: true
*** True Line Result
x, y, x2, y2 = s.split(',').map(&:to_f)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if x > x2~
- Inside source: true
*** True Line Result
if x > x2
** Processing line: ~ x2, x = x, x2~
- Inside source: true
*** True Line Result
x2, x = x, x2
** Processing line: ~ y2, y = y, y2~
- Inside source: true
*** True Line Result
y2, y = y, y2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ x, y = snap_to_grid x, y, state.snaps~
- Inside source: true
*** True Line Result
x, y = snap_to_grid x, y, state.snaps
** Processing line: ~ x2, y2 = snap_to_grid x2, y2, state.snaps~
- Inside source: true
*** True Line Result
x2, y2 = snap_to_grid x2, y2, state.snaps
** Processing line: ~ [x, y, x2, y2].line.to_hash~
- Inside source: true
*** True Line Result
[x, y, x2, y2].line.to_hash
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def load_lines file~
- Inside source: true
*** True Line Result
def load_lines file
** Processing line: ~ data = gtk.read_file(file) || ""~
- Inside source: true
*** True Line Result
data = gtk.read_file(file) || ""
** Processing line: ~ data.each_line~
- Inside source: true
*** True Line Result
data.each_line
** Processing line: ~ .reject { |l| l.strip.length == 0 }~
- Inside source: true
*** True Line Result
.reject { |l| l.strip.length == 0 }
** Processing line: ~ .map { |l| string_to_line l }~
- Inside source: true
*** True Line Result
.map { |l| string_to_line l }
** Processing line: ~ .map { |h| h.merge(rect: rect_for_line(h)) }~
- Inside source: true
*** True Line Result
.map { |h| h.merge(rect: rect_for_line(h)) }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def load_terrain~
- Inside source: true
*** True Line Result
def load_terrain
** Processing line: ~ load_lines 'data/level.txt'~
- Inside source: true
*** True Line Result
load_lines 'data/level.txt'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def load_lava~
- Inside source: true
*** True Line Result
def load_lava
** Processing line: ~ load_lines 'data/level_lava.txt'~
- Inside source: true
*** True Line Result
load_lines 'data/level_lava.txt'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def load_level force: false~
- Inside source: true
*** True Line Result
def load_level force: false
** Processing line: ~ if force~
- Inside source: true
*** True Line Result
if force
** Processing line: ~ state.snaps = {}~
- Inside source: true
*** True Line Result
state.snaps = {}
** Processing line: ~ state.terrain = load_terrain~
- Inside source: true
*** True Line Result
state.terrain = load_terrain
** Processing line: ~ state.lava = load_lava~
- Inside source: true
*** True Line Result
state.lava = load_lava
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.terrain ||= load_terrain~
- Inside source: true
*** True Line Result
state.terrain ||= load_terrain
** Processing line: ~ state.lava ||= load_lava~
- Inside source: true
*** True Line Result
state.lava ||= load_lava
** 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 save_lines lines, file~
- Inside source: true
*** True Line Result
def save_lines lines, file
** Processing line: ~ s = lines.map do |l|~
- Inside source: true
*** True Line Result
s = lines.map do |l|
** Processing line: ~ "#{l.x1},#{l.y1},#{l.x2},#{l.y2}"~
- Inside source: true
*** True Line Result
"#{l.x1},#{l.y1},#{l.x2},#{l.y2}"
** Processing line: ~ end.join("\n")~
- Inside source: true
*** True Line Result
end.join("\n")
** Processing line: ~ gtk.write_file(file, s)~
- Inside source: true
*** True Line Result
gtk.write_file(file, s)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def save_level~
- Inside source: true
*** True Line Result
def save_level
** Processing line: ~ save_lines(state.terrain, 'level.txt')~
- Inside source: true
*** True Line Result
save_lines(state.terrain, 'level.txt')
** Processing line: ~ save_lines(state.lava, 'level_lava.txt')~
- Inside source: true
*** True Line Result
save_lines(state.lava, 'level_lava.txt')
** Processing line: ~ load_level force: true~
- Inside source: true
*** True Line Result
load_level force: true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def line_near_rect? rect, terrain~
- Inside source: true
*** True Line Result
def line_near_rect? rect, terrain
** Processing line: ~ geometry.intersect_rect?(rect, terrain[:rect])~
- Inside source: true
*** True Line Result
geometry.intersect_rect?(rect, terrain[:rect])
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def point_within_line? point, line~
- Inside source: true
*** True Line Result
def point_within_line? point, line
** Processing line: ~ return false if !point~
- Inside source: true
*** True Line Result
return false if !point
** Processing line: ~ return false if !line~
- Inside source: true
*** True Line Result
return false if !line
** Processing line: ~ return true~
- Inside source: true
*** True Line Result
return true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_impacts x, dx, y, dy, radius~
- Inside source: true
*** True Line Result
def calc_impacts x, dx, y, dy, radius
** Processing line: ~ results = { }~
- Inside source: true
*** True Line Result
results = { }
** Processing line: ~ results[:x] = x~
- Inside source: true
*** True Line Result
results[:x] = x
** Processing line: ~ results[:y] = y~
- Inside source: true
*** True Line Result
results[:y] = y
** Processing line: ~ results[:dx] = x~
- Inside source: true
*** True Line Result
results[:dx] = x
** Processing line: ~ results[:dy] = y~
- Inside source: true
*** True Line Result
results[:dy] = y
** Processing line: ~ results[:point] = { x: x, y: y }~
- Inside source: true
*** True Line Result
results[:point] = { x: x, y: y }
** Processing line: ~ results[:rect] = { x: x - radius, y: y - radius, w: radius * 2, h: radius * 2 }~
- Inside source: true
*** True Line Result
results[:rect] = { x: x - radius, y: y - radius, w: radius * 2, h: radius * 2 }
** Processing line: ~ results[:trajectory] = trajectory(results)~
- 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|~
- Inside source: true
*** True Line Result
results[:impacts] = terrain.find_all { |t| line_near_rect? results[:rect], t }.map do |t|
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ terrain: t,~
- Inside source: true
*** True Line Result
terrain: t,
** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t),~
- Inside source: true
*** True Line Result
point: geometry.line_intersect(results[:trajectory], t),
** Processing line: ~ type: :terrain~
- Inside source: true
*** True Line Result
type: :terrain
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~ end.reject { |t| !point_within_line? t[:point], t[:terrain] }~
- Inside source: true
*** True Line Result
end.reject { |t| !point_within_line? t[:point], t[:terrain] }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ results[:impacts] += lava.find_all { |t| line_near_rect? results[:rect], t }.map do |t|~
- Inside source: true
*** True Line Result
results[:impacts] += lava.find_all { |t| line_near_rect? results[:rect], t }.map do |t|
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ terrain: t,~
- Inside source: true
*** True Line Result
terrain: t,
** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t),~
- Inside source: true
*** True Line Result
point: geometry.line_intersect(results[:trajectory], t),
** Processing line: ~ type: :lava~
- Inside source: true
*** True Line Result
type: :lava
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~ end.reject { |t| !point_within_line? t[:point], t[:terrain] }~
- Inside source: true
*** True Line Result
end.reject { |t| !point_within_line? t[:point], t[:terrain] }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ results~
- Inside source: true
*** True Line Result
results
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_potential_impacts~
- Inside source: true
*** True Line Result
def calc_potential_impacts
** Processing line: ~ impact_results = calc_impacts circle.x, circle.dx, circle.y, circle.dy, circle.radius~
- Inside source: true
*** True Line Result
impact_results = calc_impacts circle.x, circle.dx, circle.y, circle.dy, circle.radius
** Processing line: ~ circle.rect = impact_results[:rect]~
- Inside source: true
*** True Line Result
circle.rect = impact_results[:rect]
** Processing line: ~ circle.trajectory = impact_results[:trajectory]~
- Inside source: true
*** True Line Result
circle.trajectory = impact_results[:trajectory]
** Processing line: ~ circle.impacts = impact_results[:impacts]~
- Inside source: true
*** True Line Result
circle.impacts = impact_results[:impacts]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_terrains_to_monitor~
- Inside source: true
*** True Line Result
def calc_terrains_to_monitor
** Processing line: ~ circle.impact = nil~
- Inside source: true
*** True Line Result
circle.impact = nil
** Processing line: ~ circle.impacts.each do |i|~
- Inside source: true
*** True Line Result
circle.impacts.each do |i|
** Processing line: ~ circle.terrains_to_monitor[i[:terrain]] ||= {~
- Inside source: true
*** True Line Result
circle.terrains_to_monitor[i[:terrain]] ||= {
** Processing line: ~ ray_start: geometry.ray_test(circle, i[:terrain]),~
- Inside source: true
*** True Line Result
ray_start: geometry.ray_test(circle, i[:terrain]),
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ circle.terrains_to_monitor[i[:terrain]][:ray_current] = geometry.ray_test(circle, i[:terrain])~
- Inside source: true
*** True Line Result
circle.terrains_to_monitor[i[:terrain]][:ray_current] = geometry.ray_test(circle, i[:terrain])
** Processing line: ~ if circle.terrains_to_monitor[i[:terrain]][:ray_start] != circle.terrains_to_monitor[i[:terrain]][:ray_current]~
- Inside source: true
*** True Line Result
if circle.terrains_to_monitor[i[:terrain]][:ray_start] != circle.terrains_to_monitor[i[:terrain]][:ray_current]
** Processing line: ~ if circle.x.between?(i[:terrain].x, i[:terrain].x2) || circle.y.between?(i[:terrain].y, i[:terrain].y2)~
- Inside source: true
*** True Line Result
if circle.x.between?(i[:terrain].x, i[:terrain].x2) || circle.y.between?(i[:terrain].y, i[:terrain].y2)
** Processing line: ~ circle.impact = i~
- Inside source: true
*** True Line Result
circle.impact = i
** Processing line: ~ circle.ray_current = circle.terrains_to_monitor[i[:terrain]][:ray_current]~
- Inside source: true
*** True Line Result
circle.ray_current = circle.terrains_to_monitor[i[:terrain]][:ray_current]
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def impact_result body, impact~
- Inside source: true
*** True Line Result
def impact_result body, impact
** Processing line: ~ infinity_alias = 1000~
- Inside source: true
*** True Line Result
infinity_alias = 1000
** Processing line: ~ r = {~
- Inside source: true
*** True Line Result
r = {
** Processing line: ~ body: {},~
- Inside source: true
*** True Line Result
body: {},
** Processing line: ~ terrain: {},~
- Inside source: true
*** True Line Result
terrain: {},
** Processing line: ~ impact: {}~
- Inside source: true
*** True Line Result
impact: {}
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ r[:body][:line] = body.trajectory.dup~
- Inside source: true
*** True Line Result
r[:body][:line] = body.trajectory.dup
** Processing line: ~ r[:body][:slope] = geometry.line_slope(body.trajectory, replace_infinity: infinity_alias)~
- Inside source: true
*** True Line Result
r[:body][:slope] = geometry.line_slope(body.trajectory, replace_infinity: infinity_alias)
** Processing line: ~ r[:body][:slope_sign] = r[:body][:slope].sign~
- Inside source: true
*** True Line Result
r[:body][:slope_sign] = r[:body][:slope].sign
** Processing line: ~ r[:body][:x] = body.x~
- Inside source: true
*** True Line Result
r[:body][:x] = body.x
** Processing line: ~ r[:body][:y] = body.y~
- Inside source: true
*** True Line Result
r[:body][:y] = body.y
** Processing line: ~ r[:body][:dy] = body.dy~
- Inside source: true
*** True Line Result
r[:body][:dy] = body.dy
** Processing line: ~ r[:body][:dx] = body.dx~
- Inside source: true
*** True Line Result
r[:body][:dx] = body.dx
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ r[:terrain][:line] = impact[:terrain].dup~
- Inside source: true
*** True Line Result
r[:terrain][:line] = impact[:terrain].dup
** Processing line: ~ r[:terrain][:slope] = geometry.line_slope(impact[:terrain], replace_infinity: infinity_alias)~
- Inside source: true
*** True Line Result
r[:terrain][:slope] = geometry.line_slope(impact[:terrain], replace_infinity: infinity_alias)
** Processing line: ~ r[:terrain][:slope_sign] = r[:terrain][:slope].sign~
- Inside source: true
*** True Line Result
r[:terrain][:slope_sign] = r[:terrain][:slope].sign
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ r[:impact][:angle] = geometry.angle_between_lines(body.trajectory, impact[:terrain], replace_infinity: infinity_alias)~
- Inside source: true
*** True Line Result
r[:impact][:angle] = geometry.angle_between_lines(body.trajectory, impact[:terrain], replace_infinity: infinity_alias)
** Processing line: ~ r[:impact][:point] = { x: impact[:point].x, y: impact[:point].y }~
- Inside source: true
*** True Line Result
r[:impact][:point] = { x: impact[:point].x, y: impact[:point].y }
** Processing line: ~ r[:impact][:same_slope_sign] = r[:body][:slope_sign] == r[:terrain][:slope_sign]~
- Inside source: true
*** True Line Result
r[:impact][:same_slope_sign] = r[:body][:slope_sign] == r[:terrain][:slope_sign]
** Processing line: ~ r[:impact][:ray] = body.ray_current~
- Inside source: true
*** True Line Result
r[:impact][:ray] = body.ray_current
** Processing line: ~ r[:body][:new_on_floor] = body.on_floor~
- Inside source: true
*** True Line Result
r[:body][:new_on_floor] = body.on_floor
** Processing line: ~ r[:body][:new_floor] = r[:terrain][:line]~
- Inside source: true
*** True Line Result
r[:body][:new_floor] = r[:terrain][:line]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if r[:impact][:angle].abs < 90 && r[:terrain][:slope].abs < 3~
- Inside source: true
*** True Line Result
if r[:impact][:angle].abs < 90 && r[:terrain][:slope].abs < 3
** Processing line: ~ play_sound~
- Inside source: true
*** True Line Result
play_sound
** Processing line: ~ r[:body][:new_dy] = r[:body][:dy] * circle.elasticity * -1~
- Inside source: true
*** True Line Result
r[:body][:new_dy] = r[:body][:dy] * circle.elasticity * -1
** Processing line: ~ r[:body][:new_dx] = r[:body][:dx] * circle.elasticity~
- Inside source: true
*** True Line Result
r[:body][:new_dx] = r[:body][:dx] * circle.elasticity
** Processing line: ~ r[:impact][:type] = :horizontal~
- Inside source: true
*** True Line Result
r[:impact][:type] = :horizontal
** Processing line: ~ r[:body][:new_reason] = "-"~
- Inside source: true
*** True Line Result
r[:body][:new_reason] = "-"
** Processing line: ~ elsif r[:impact][:angle].abs < 90 && r[:terrain][:slope].abs > 3~
- Inside source: true
*** True Line Result
elsif r[:impact][:angle].abs < 90 && r[:terrain][:slope].abs > 3
** Processing line: ~ play_sound~
- Inside source: true
*** True Line Result
play_sound
** Processing line: ~ r[:body][:new_dy] = r[:body][:dy] * 1.1~
- Inside source: true
*** True Line Result
r[:body][:new_dy] = r[:body][:dy] * 1.1
** Processing line: ~ r[:body][:new_dx] = r[:body][:dx] * -circle.elasticity~
- Inside source: true
*** True Line Result
r[:body][:new_dx] = r[:body][:dx] * -circle.elasticity
** Processing line: ~ r[:impact][:type] = :vertical~
- Inside source: true
*** True Line Result
r[:impact][:type] = :vertical
** Processing line: ~ r[:body][:new_reason] = "|"~
- Inside source: true
*** True Line Result
r[:body][:new_reason] = "|"
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ play_sound~
- Inside source: true
*** True Line Result
play_sound
** Processing line: ~ r[:body][:new_dx] = r[:body][:dx] * -circle.elasticity~
- Inside source: true
*** True Line Result
r[:body][:new_dx] = r[:body][:dx] * -circle.elasticity
** Processing line: ~ r[:body][:new_dy] = r[:body][:dy] * -circle.elasticity~
- Inside source: true
*** True Line Result
r[:body][:new_dy] = r[:body][:dy] * -circle.elasticity
** Processing line: ~ r[:impact][:type] = :slanted~
- Inside source: true
*** True Line Result
r[:impact][:type] = :slanted
** Processing line: ~ r[:body][:new_reason] = "/"~
- Inside source: true
*** True Line Result
r[:body][:new_reason] = "/"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ r[:impact][:energy] = r[:body][:new_dx].abs + r[:body][:new_dy].abs~
- Inside source: true
*** True Line Result
r[:impact][:energy] = r[:body][:new_dx].abs + r[:body][:new_dy].abs
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if r[:impact][:energy] <= 0.3 && r[:terrain][:slope].abs < 4~
- Inside source: true
*** True Line Result
if r[:impact][:energy] <= 0.3 && r[:terrain][:slope].abs < 4
** Processing line: ~ r[:body][:new_dx] = 0~
- Inside source: true
*** True Line Result
r[:body][:new_dx] = 0
** Processing line: ~ r[:body][:new_dy] = 0~
- Inside source: true
*** True Line Result
r[:body][:new_dy] = 0
** Processing line: ~ r[:impact][:energy] = 0~
- Inside source: true
*** True Line Result
r[:impact][:energy] = 0
** Processing line: ~ r[:body][:new_on_floor] = true~
- Inside source: true
*** True Line Result
r[:body][:new_on_floor] = true
** Processing line: ~ r[:body][:new_floor] = r[:terrain][:line]~
- Inside source: true
*** True Line Result
r[:body][:new_floor] = r[:terrain][:line]
** Processing line: ~ r[:body][:new_reason] = "0"~
- Inside source: true
*** True Line Result
r[:body][:new_reason] = "0"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ r[:impact][:ray_next] = geometry.ray_test({ x: r[:body][:x] - (r[:body][:dx] * 1.1) + r[:body][:new_dx],~
- Inside source: true
*** True Line Result
r[:impact][:ray_next] = geometry.ray_test({ x: r[:body][:x] - (r[:body][:dx] * 1.1) + r[:body][:new_dx],
** Processing line: ~ y: r[:body][:y] - (r[:body][:dy] * 1.1) + r[:body][:new_dy] + state.gravity },~
- Inside source: true
*** True Line Result
y: r[:body][:y] - (r[:body][:dy] * 1.1) + r[:body][:new_dy] + state.gravity },
** Processing line: ~ r[:terrain][:line])~
- Inside source: true
*** True Line Result
r[:terrain][:line])
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if r[:impact][:ray_next] == r[:impact][:ray]~
- Inside source: true
*** True Line Result
if r[:impact][:ray_next] == r[:impact][:ray]
** Processing line: ~ r[:body][:new_dx] *= -1~
- Inside source: true
*** True Line Result
r[:body][:new_dx] *= -1
** Processing line: ~ r[:body][:new_dy] *= -1~
- Inside source: true
*** True Line Result
r[:body][:new_dy] *= -1
** Processing line: ~ r[:body][:new_reason] = "clip"~
- Inside source: true
*** True Line Result
r[:body][:new_reason] = "clip"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ r~
- Inside source: true
*** True Line Result
r
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def game_over!~
- Inside source: true
*** True Line Result
def game_over!
** Processing line: ~ circle.x = circle.check_point_x~
- Inside source: true
*** True Line Result
circle.x = circle.check_point_x
** Processing line: ~ circle.y = circle.check_point_y~
- Inside source: true
*** True Line Result
circle.y = circle.check_point_y
** Processing line: ~ circle.dx = 0~
- Inside source: true
*** True Line Result
circle.dx = 0
** Processing line: ~ circle.dy = 0~
- Inside source: true
*** True Line Result
circle.dy = 0
** Processing line: ~ circle.game_over_at = state.tick_count~
- Inside source: true
*** True Line Result
circle.game_over_at = state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def not_game_over!~
- Inside source: true
*** True Line Result
def not_game_over!
** Processing line: ~ impact_history_entry = impact_result circle, circle.impact~
- Inside source: true
*** True Line Result
impact_history_entry = impact_result circle, circle.impact
** Processing line: ~ circle.impact_history << impact_history_entry~
- Inside source: true
*** True Line Result
circle.impact_history << impact_history_entry
** Processing line: ~ circle.x -= circle.dx * 1.1~
- Inside source: true
*** True Line Result
circle.x -= circle.dx * 1.1
** Processing line: ~ circle.y -= circle.dy * 1.1~
- Inside source: true
*** True Line Result
circle.y -= circle.dy * 1.1
** Processing line: ~ circle.dx = impact_history_entry[:body][:new_dx]~
- Inside source: true
*** True Line Result
circle.dx = impact_history_entry[:body][:new_dx]
** Processing line: ~ circle.dy = impact_history_entry[:body][:new_dy]~
- Inside source: true
*** True Line Result
circle.dy = impact_history_entry[:body][:new_dy]
** Processing line: ~ circle.on_floor = impact_history_entry[:body][:new_on_floor]~
- Inside source: true
*** True Line Result
circle.on_floor = impact_history_entry[:body][:new_on_floor]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if circle.on_floor~
- Inside source: true
*** True Line Result
if circle.on_floor
** Processing line: ~ circle.check_point_at = state.tick_count~
- Inside source: true
*** True Line Result
circle.check_point_at = state.tick_count
** Processing line: ~ circle.check_point_x = circle.x~
- Inside source: true
*** True Line Result
circle.check_point_x = circle.x
** Processing line: ~ circle.check_point_y = circle.y~
- Inside source: true
*** True Line Result
circle.check_point_y = circle.y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ circle.previous_floor = circle.floor || {}~
- Inside source: true
*** True Line Result
circle.previous_floor = circle.floor || {}
** Processing line: ~ circle.floor = impact_history_entry[:body][:new_floor] || {}~
- Inside source: true
*** True Line Result
circle.floor = impact_history_entry[:body][:new_floor] || {}
** Processing line: ~ circle.floor_point = impact_history_entry[:impact][:point]~
- Inside source: true
*** True Line Result
circle.floor_point = impact_history_entry[:impact][:point]
** Processing line: ~ if circle.floor.slice(:x, :y, :x2, :y2) != circle.previous_floor.slice(:x, :y, :x2, :y2)~
- Inside source: true
*** True Line Result
if circle.floor.slice(:x, :y, :x2, :y2) != circle.previous_floor.slice(:x, :y, :x2, :y2)
** Processing line: ~ new_relative_x = if circle.dx > 0~
- Inside source: true
*** True Line Result
new_relative_x = if circle.dx > 0
** Processing line: ~ :right~
- Inside source: true
*** True Line Result
:right
** Processing line: ~ elsif circle.dx < 0~
- Inside source: true
*** True Line Result
elsif circle.dx < 0
** Processing line: ~ :left~
- Inside source: true
*** True Line Result
:left
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ new_relative_y = if circle.dy > 0~
- Inside source: true
*** True Line Result
new_relative_y = if circle.dy > 0
** Processing line: ~ :above~
- Inside source: true
*** True Line Result
:above
** Processing line: ~ elsif circle.dy < 0~
- Inside source: true
*** True Line Result
elsif circle.dy < 0
** Processing line: ~ :below~
- Inside source: true
*** True Line Result
:below
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ circle.floor_relative_x = new_relative_x~
- Inside source: true
*** True Line Result
circle.floor_relative_x = new_relative_x
** Processing line: ~ circle.floor_relative_y = new_relative_y~
- Inside source: true
*** True Line Result
circle.floor_relative_y = new_relative_y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ circle.impact = nil~
- Inside source: true
*** True Line Result
circle.impact = nil
** Processing line: ~ circle.terrains_to_monitor.clear~
- Inside source: true
*** True Line Result
circle.terrains_to_monitor.clear
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_physics~
- Inside source: true
*** True Line Result
def calc_physics
** Processing line: ~ if args.state.god_mode~
- Inside source: true
*** True Line Result
if args.state.god_mode
** Processing line: ~ calc_potential_impacts~
- Inside source: true
*** True Line Result
calc_potential_impacts
** Processing line: ~ calc_terrains_to_monitor~
- Inside source: true
*** True Line Result
calc_terrains_to_monitor
** 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 circle.y < -700~
- Inside source: true
*** True Line Result
if circle.y < -700
** Processing line: ~ game_over~
- Inside source: true
*** True Line Result
game_over
** 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: ~ return if state.game_over~
- Inside source: true
*** True Line Result
return if state.game_over
** Processing line: ~ return if circle.on_floor~
- Inside source: true
*** True Line Result
return if circle.on_floor
** Processing line: ~ circle.previous_dy = circle.dy~
- Inside source: true
*** True Line Result
circle.previous_dy = circle.dy
** Processing line: ~ circle.previous_dx = circle.dx~
- Inside source: true
*** True Line Result
circle.previous_dx = circle.dx
** Processing line: ~ circle.x += circle.dx~
- Inside source: true
*** True Line Result
circle.x += circle.dx
** Processing line: ~ circle.y += circle.dy~
- Inside source: true
*** True Line Result
circle.y += circle.dy
** Processing line: ~ args.state.distance_traveled ||= 0~
- Inside source: true
*** True Line Result
args.state.distance_traveled ||= 0
** Processing line: ~ args.state.distance_traveled += circle.dx.abs + circle.dy.abs~
- Inside source: true
*** True Line Result
args.state.distance_traveled += circle.dx.abs + circle.dy.abs
** Processing line: ~ circle.dy += state.gravity~
- Inside source: true
*** True Line Result
circle.dy += state.gravity
** Processing line: ~ calc_potential_impacts~
- Inside source: true
*** True Line Result
calc_potential_impacts
** Processing line: ~ calc_terrains_to_monitor~
- Inside source: true
*** True Line Result
calc_terrains_to_monitor
** Processing line: ~ return unless circle.impact~
- Inside source: true
*** True Line Result
return unless circle.impact
** Processing line: ~ if circle.impact && circle.impact[:type] == :lava~
- Inside source: true
*** True Line Result
if circle.impact && circle.impact[:type] == :lava
** Processing line: ~ game_over!~
- Inside source: true
*** True Line Result
game_over!
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ not_game_over!~
- Inside source: true
*** True Line Result
not_game_over!
** 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 input_god_mode~
- Inside source: true
*** True Line Result
def input_god_mode
** Processing line: ~ state.debug_mode = !state.debug_mode if inputs.keyboard.key_down.forward_slash~
- Inside source: true
*** True Line Result
state.debug_mode = !state.debug_mode if inputs.keyboard.key_down.forward_slash
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # toggle god mode~
- Inside source: true
*** True Line Result
# toggle god mode
** Processing line: ~ if inputs.keyboard.key_down.g~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.g
** Processing line: ~ state.god_mode = !state.god_mode~
- Inside source: true
*** True Line Result
state.god_mode = !state.god_mode
** Processing line: ~ state.potential_lift = 0~
- Inside source: true
*** True Line Result
state.potential_lift = 0
** Processing line: ~ circle.floor = nil~
- Inside source: true
*** True Line Result
circle.floor = nil
** Processing line: ~ circle.floor_point = nil~
- Inside source: true
*** True Line Result
circle.floor_point = nil
** Processing line: ~ circle.floor_relative_x = nil~
- Inside source: true
*** True Line Result
circle.floor_relative_x = nil
** Processing line: ~ circle.floor_relative_y = nil~
- Inside source: true
*** True Line Result
circle.floor_relative_y = nil
** Processing line: ~ circle.impact = nil~
- Inside source: true
*** True Line Result
circle.impact = nil
** Processing line: ~ circle.terrains_to_monitor.clear~
- Inside source: true
*** True Line Result
circle.terrains_to_monitor.clear
** 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: ~ return unless state.god_mode~
- Inside source: true
*** True Line Result
return unless state.god_mode
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ circle.x = circle.x.to_i~
- Inside source: true
*** True Line Result
circle.x = circle.x.to_i
** Processing line: ~ circle.y = circle.y.to_i~
- Inside source: true
*** True Line Result
circle.y = circle.y.to_i
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # move god circle~
- Inside source: true
*** True Line Result
# move god circle
** Processing line: ~ if inputs.keyboard.left || inputs.keyboard.a~
- Inside source: true
*** True Line Result
if inputs.keyboard.left || inputs.keyboard.a
** Processing line: ~ circle.x -= 20~
- Inside source: true
*** True Line Result
circle.x -= 20
** Processing line: ~ elsif inputs.keyboard.right || inputs.keyboard.d || inputs.keyboard.f~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.right || inputs.keyboard.d || inputs.keyboard.f
** Processing line: ~ circle.x += 20~
- Inside source: true
*** True Line Result
circle.x += 20
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if inputs.keyboard.up || inputs.keyboard.w~
- Inside source: true
*** True Line Result
if inputs.keyboard.up || inputs.keyboard.w
** Processing line: ~ circle.y += 20~
- Inside source: true
*** True Line Result
circle.y += 20
** Processing line: ~ elsif inputs.keyboard.down || inputs.keyboard.s~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.down || inputs.keyboard.s
** Processing line: ~ circle.y -= 20~
- Inside source: true
*** True Line Result
circle.y -= 20
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # delete terrain~
- Inside source: true
*** True Line Result
# delete terrain
** Processing line: ~ if inputs.keyboard.key_down.x~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.x
** Processing line: ~ calc_terrains_to_monitor~
- Inside source: true
*** True Line Result
calc_terrains_to_monitor
** Processing line: ~ state.terrain = state.terrain.reject do |t|~
- Inside source: true
*** True Line Result
state.terrain = state.terrain.reject do |t|
** Processing line: ~ t[:rect].intersect_rect? circle.rect~
- Inside source: true
*** True Line Result
t[:rect].intersect_rect? circle.rect
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.lava = state.lava.reject do |t|~
- Inside source: true
*** True Line Result
state.lava = state.lava.reject do |t|
** Processing line: ~ t[:rect].intersect_rect? circle.rect~
- Inside source: true
*** True Line Result
t[:rect].intersect_rect? circle.rect
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ calc_potential_impacts~
- Inside source: true
*** True Line Result
calc_potential_impacts
** Processing line: ~ save_level~
- Inside source: true
*** True Line Result
save_level
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # change terrain type~
- Inside source: true
*** True Line Result
# change terrain type
** Processing line: ~ if inputs.keyboard.key_down.l~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.l
** Processing line: ~ if state.line_mode == :terrain~
- Inside source: true
*** True Line Result
if state.line_mode == :terrain
** Processing line: ~ state.line_mode = :lava~
- Inside source: true
*** True Line Result
state.line_mode = :lava
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.line_mode = :terrain~
- Inside source: true
*** True Line Result
state.line_mode = :terrain
** 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 inputs.mouse.click && !state.point_one~
- Inside source: true
*** True Line Result
if inputs.mouse.click && !state.point_one
** Processing line: ~ state.point_one = inputs.mouse.click.point~
- Inside source: true
*** True Line Result
state.point_one = inputs.mouse.click.point
** Processing line: ~ elsif inputs.mouse.click && state.point_one~
- Inside source: true
*** True Line Result
elsif inputs.mouse.click && state.point_one
** Processing line: ~ l = [*state.point_one, *inputs.mouse.click.point]~
- Inside source: true
*** True Line Result
l = [*state.point_one, *inputs.mouse.click.point]
** Processing line: ~ l = [l.x - state.camera.x,~
- Inside source: true
*** True Line Result
l = [l.x - state.camera.x,
** Processing line: ~ l.y - state.camera.y,~
- Inside source: true
*** True Line Result
l.y - state.camera.y,
** Processing line: ~ l.x2 - state.camera.x,~
- Inside source: true
*** True Line Result
l.x2 - state.camera.x,
** Processing line: ~ l.y2 - state.camera.y].line.to_hash~
- Inside source: true
*** True Line Result
l.y2 - state.camera.y].line.to_hash
** Processing line: ~ l[:rect] = rect_for_line l~
- Inside source: true
*** True Line Result
l[:rect] = rect_for_line l
** Processing line: ~ if state.line_mode == :terrain~
- Inside source: true
*** True Line Result
if state.line_mode == :terrain
** Processing line: ~ state.terrain << l~
- Inside source: true
*** True Line Result
state.terrain << l
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ state.lava << l~
- Inside source: true
*** True Line Result
state.lava << l
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ save_level~
- Inside source: true
*** True Line Result
save_level
** Processing line: ~ next_x = inputs.mouse.click.point.x - 640~
- Inside source: true
*** True Line Result
next_x = inputs.mouse.click.point.x - 640
** Processing line: ~ next_y = inputs.mouse.click.point.y - 360~
- Inside source: true
*** True Line Result
next_y = inputs.mouse.click.point.y - 360
** Processing line: ~ circle.x += next_x~
- Inside source: true
*** True Line Result
circle.x += next_x
** Processing line: ~ circle.y += next_y~
- Inside source: true
*** True Line Result
circle.y += next_y
** Processing line: ~ state.point_one = nil~
- Inside source: true
*** True Line Result
state.point_one = nil
** Processing line: ~ elsif inputs.keyboard.one~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.one
** Processing line: ~ state.point_one = [circle.x + camera.x, circle.y+ camera.y]~
- Inside source: true
*** True Line Result
state.point_one = [circle.x + camera.x, circle.y+ camera.y]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # cancel chain lines~
- Inside source: true
*** True Line Result
# cancel chain lines
** Processing line: ~ if inputs.keyboard.key_down.nine || inputs.keyboard.key_down.escape || inputs.keyboard.key_up.six || inputs.keyboard.key_up.one~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.nine || inputs.keyboard.key_down.escape || inputs.keyboard.key_up.six || inputs.keyboard.key_up.one
** Processing line: ~ state.point_one = nil~
- Inside source: true
*** True Line Result
state.point_one = nil
** 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 play_sound~
- Inside source: true
*** True Line Result
def play_sound
** Processing line: ~ return if state.sound_debounce > 0~
- Inside source: true
*** True Line Result
return if state.sound_debounce > 0
** Processing line: ~ state.sound_debounce = 5~
- Inside source: true
*** True Line Result
state.sound_debounce = 5
** Processing line: ~ outputs.sounds << "sounds/03#{"%02d" % state.sound_index}.wav"~
- Inside source: true
*** True Line Result
outputs.sounds << "sounds/03#{"%02d" % state.sound_index}.wav"
** Processing line: ~ state.sound_index += 1~
- Inside source: true
*** True Line Result
state.sound_index += 1
** Processing line: ~ if state.sound_index > 21~
- Inside source: true
*** True Line Result
if state.sound_index > 21
** Processing line: ~ state.sound_index = 1~
- Inside source: true
*** True Line Result
state.sound_index = 1
** 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 input_game~
- Inside source: true
*** True Line Result
def input_game
** Processing line: ~ if inputs.keyboard.down || inputs.keyboard.space~
- Inside source: true
*** True Line Result
if inputs.keyboard.down || inputs.keyboard.space
** Processing line: ~ circle.potential_lift += 0.03~
- Inside source: true
*** True Line Result
circle.potential_lift += 0.03
** Processing line: ~ circle.potential_lift = circle.potential_lift.lesser(10)~
- Inside source: true
*** True Line Result
circle.potential_lift = circle.potential_lift.lesser(10)
** Processing line: ~ elsif inputs.keyboard.key_up.down || inputs.keyboard.key_up.space~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_up.down || inputs.keyboard.key_up.space
** Processing line: ~ play_sound~
- Inside source: true
*** True Line Result
play_sound
** Processing line: ~ circle.dy += circle.angle.vector_y circle.potential_lift~
- Inside source: true
*** True Line Result
circle.dy += circle.angle.vector_y circle.potential_lift
** Processing line: ~ circle.dx += circle.angle.vector_x circle.potential_lift~
- Inside source: true
*** True Line Result
circle.dx += circle.angle.vector_x circle.potential_lift
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if circle.on_floor~
- Inside source: true
*** True Line Result
if circle.on_floor
** Processing line: ~ if circle.floor_relative_y == :above~
- Inside source: true
*** True Line Result
if circle.floor_relative_y == :above
** Processing line: ~ circle.y += circle.potential_lift.abs * 2~
- Inside source: true
*** True Line Result
circle.y += circle.potential_lift.abs * 2
** Processing line: ~ elsif circle.floor_relative_y == :below~
- Inside source: true
*** True Line Result
elsif circle.floor_relative_y == :below
** Processing line: ~ circle.y -= circle.potential_lift.abs * 2~
- Inside source: true
*** True Line Result
circle.y -= circle.potential_lift.abs * 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: ~ circle.on_floor = false~
- Inside source: true
*** True Line Result
circle.on_floor = false
** Processing line: ~ circle.potential_lift = 0~
- Inside source: true
*** True Line Result
circle.potential_lift = 0
** Processing line: ~ circle.terrains_to_monitor.clear~
- Inside source: true
*** True Line Result
circle.terrains_to_monitor.clear
** Processing line: ~ circle.impact_history.clear~
- Inside source: true
*** True Line Result
circle.impact_history.clear
** Processing line: ~ circle.impact = nil~
- Inside source: true
*** True Line Result
circle.impact = nil
** Processing line: ~ calc_physics~
- Inside source: true
*** True Line Result
calc_physics
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # aim probe~
- Inside source: true
*** True Line Result
# aim probe
** Processing line: ~ if inputs.keyboard.right || inputs.keyboard.a~
- Inside source: true
*** True Line Result
if inputs.keyboard.right || inputs.keyboard.a
** Processing line: ~ circle.angle -= 2~
- Inside source: true
*** True Line Result
circle.angle -= 2
** Processing line: ~ elsif inputs.keyboard.left || inputs.keyboard.d~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.left || inputs.keyboard.d
** Processing line: ~ circle.angle += 2~
- Inside source: true
*** True Line Result
circle.angle += 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: ~ def input~
- Inside source: true
*** True Line Result
def input
** Processing line: ~ input_god_mode~
- Inside source: true
*** True Line Result
input_god_mode
** Processing line: ~ input_game~
- Inside source: true
*** True Line Result
input_game
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_camera~
- Inside source: true
*** True Line Result
def calc_camera
** Processing line: ~ state.camera.target_x = 640 - circle.x~
- Inside source: true
*** True Line Result
state.camera.target_x = 640 - circle.x
** Processing line: ~ state.camera.target_y = 360 - circle.y~
- Inside source: true
*** True Line Result
state.camera.target_y = 360 - circle.y
** Processing line: ~ xdiff = state.camera.target_x - state.camera.x~
- Inside source: true
*** True Line Result
xdiff = state.camera.target_x - state.camera.x
** Processing line: ~ ydiff = state.camera.target_y - state.camera.y~
- Inside source: true
*** True Line Result
ydiff = state.camera.target_y - state.camera.y
** Processing line: ~ state.camera.x += xdiff * camera.follow_speed~
- Inside source: true
*** True Line Result
state.camera.x += xdiff * camera.follow_speed
** Processing line: ~ state.camera.y += ydiff * camera.follow_speed~
- Inside source: true
*** True Line Result
state.camera.y += ydiff * camera.follow_speed
** 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: ~ state.sound_debounce ||= 0~
- Inside source: true
*** True Line Result
state.sound_debounce ||= 0
** Processing line: ~ state.sound_debounce -= 1~
- Inside source: true
*** True Line Result
state.sound_debounce -= 1
** Processing line: ~ state.sound_debounce = 0 if state.sound_debounce < 0~
- Inside source: true
*** True Line Result
state.sound_debounce = 0 if state.sound_debounce < 0
** Processing line: ~ if state.god_mode~
- Inside source: true
*** True Line Result
if state.god_mode
** Processing line: ~ circle.dy *= 0.1~
- Inside source: true
*** True Line Result
circle.dy *= 0.1
** Processing line: ~ circle.dx *= 0.1~
- Inside source: true
*** True Line Result
circle.dx *= 0.1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ calc_camera~
- Inside source: true
*** True Line Result
calc_camera
** Processing line: ~ state.whisp_queue ||= []~
- Inside source: true
*** True Line Result
state.whisp_queue ||= []
** Processing line: ~ if state.tick_count.mod_zero?(4)~
- Inside source: true
*** True Line Result
if state.tick_count.mod_zero?(4)
** Processing line: ~ state.whisp_queue << {~
- Inside source: true
*** True Line Result
state.whisp_queue << {
** Processing line: ~ x: -300,~
- Inside source: true
*** True Line Result
x: -300,
** Processing line: ~ y: 1400 * rand,~
- Inside source: true
*** True Line Result
y: 1400 * rand,
** Processing line: ~ speed: 2.randomize(:ratio) + 3,~
- Inside source: true
*** True Line Result
speed: 2.randomize(:ratio) + 3,
** Processing line: ~ w: 20,~
- Inside source: true
*** True Line Result
w: 20,
** Processing line: ~ h: 20, path: 'sprites/whisp.png',~
- Inside source: true
*** True Line Result
h: 20, path: 'sprites/whisp.png',
** Processing line: ~ a: 0,~
- Inside source: true
*** True Line Result
a: 0,
** Processing line: ~ created_at: state.tick_count,~
- Inside source: true
*** True Line Result
created_at: state.tick_count,
** Processing line: ~ angle: 0,~
- Inside source: true
*** True Line Result
angle: 0,
** Processing line: ~ r: 100,~
- Inside source: true
*** True Line Result
r: 100,
** Processing line: ~ g: 128 + 128 * rand,~
- Inside source: true
*** True Line Result
g: 128 + 128 * rand,
** Processing line: ~ b: 128 + 128 * rand~
- Inside source: true
*** True Line Result
b: 128 + 128 * rand
** 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: ~ state.whisp_queue.each do |w|~
- Inside source: true
*** True Line Result
state.whisp_queue.each do |w|
** Processing line: ~ w.x += w[:speed] * 2~
- Inside source: true
*** True Line Result
w.x += w[:speed] * 2
** Processing line: ~ w.x -= circle.dx * 0.3~
- Inside source: true
*** True Line Result
w.x -= circle.dx * 0.3
** Processing line: ~ w.y -= w[:speed]~
- Inside source: true
*** True Line Result
w.y -= w[:speed]
** Processing line: ~ w.y -= circle.dy * 0.3~
- Inside source: true
*** True Line Result
w.y -= circle.dy * 0.3
** Processing line: ~ w.angle += w[:speed]~
- Inside source: true
*** True Line Result
w.angle += w[:speed]
** Processing line: ~ w.a = w[:created_at].ease(30) * 255~
- Inside source: true
*** True Line Result
w.a = w[:created_at].ease(30) * 255
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.whisp_queue = state.whisp_queue.reject { |w| w[:x] > 1280 }~
- Inside source: true
*** True Line Result
state.whisp_queue = state.whisp_queue.reject { |w| w[:x] > 1280 }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if state.tick_count.mod_zero?(2) && (circle.dx != 0 || circle.dy != 0)~
- Inside source: true
*** True Line Result
if state.tick_count.mod_zero?(2) && (circle.dx != 0 || circle.dy != 0)
** Processing line: ~ circle.after_images << {~
- Inside source: true
*** True Line Result
circle.after_images << {
** Processing line: ~ x: circle.x,~
- Inside source: true
*** True Line Result
x: circle.x,
** Processing line: ~ y: circle.y,~
- Inside source: true
*** True Line Result
y: circle.y,
** Processing line: ~ w: circle.radius,~
- Inside source: true
*** True Line Result
w: circle.radius,
** Processing line: ~ h: circle.radius,~
- Inside source: true
*** True Line Result
h: circle.radius,
** Processing line: ~ a: 255,~
- Inside source: true
*** True Line Result
a: 255,
** Processing line: ~ created_at: state.tick_count~
- Inside source: true
*** True Line Result
created_at: state.tick_count
** 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: ~ circle.after_images.each do |ai|~
- Inside source: true
*** True Line Result
circle.after_images.each do |ai|
** Processing line: ~ ai.a = ai[:created_at].ease(10, :flip) * 255~
- Inside source: true
*** True Line Result
ai.a = ai[:created_at].ease(10, :flip) * 255
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ circle.after_images = circle.after_images.reject { |ai| ai[:created_at].elapsed_time > 10 }~
- Inside source: true
*** True Line Result
circle.after_images = circle.after_images.reject { |ai| ai[:created_at].elapsed_time > 10 }
** Processing line: ~ calc_physics~
- Inside source: true
*** True Line Result
calc_physics
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def circle~
- Inside source: true
*** True Line Result
def circle
** Processing line: ~ state.circle~
- Inside source: true
*** True Line Result
state.circle
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def camera~
- Inside source: true
*** True Line Result
def camera
** Processing line: ~ state.camera~
- Inside source: true
*** True Line Result
state.camera
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def terrain~
- Inside source: true
*** True Line Result
def terrain
** Processing line: ~ state.terrain~
- Inside source: true
*** True Line Result
state.terrain
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def lava~
- Inside source: true
*** True Line Result
def lava
** Processing line: ~ state.lava~
- Inside source: true
*** True Line Result
state.lava
** 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: ~ # $gtk.reset~
- Inside source: true
*** True Line Result
# $gtk.reset
** 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.outputs.background_color = [0, 0, 0]~
- Inside source: true
*** True Line Result
args.outputs.background_color = [0, 0, 0]
** Processing line: ~ if args.inputs.keyboard.r~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.r
** Processing line: ~ args.gtk.reset~
- Inside source: true
*** True Line Result
args.gtk.reset
** Processing line: ~ return~
- Inside source: true
*** True Line Result
return
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ # uncomment the line below to slow down the game so you~
- Inside source: true
*** True Line Result
# uncomment the line below to slow down the game so you
** Processing line: ~ # can see each tick as it passes~
- Inside source: true
*** True Line Result
# can see each tick as it passes
** Processing line: ~ # args.gtk.slowmo! 30~
- Inside source: true
*** True Line Result
# args.gtk.slowmo! 30
** Processing line: ~ $game ||= FallingCircle.new~
- Inside source: true
*** True Line Result
$game ||= FallingCircle.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: ~ def reset~
- Inside source: true
*** True Line Result
def reset
** Processing line: ~ $game = nil~
- Inside source: true
*** True Line Result
$game = nil
** 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: ~* Platformer - The Little Probe - Data - level.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Platformer - The Little Probe - Data - level.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_platformer/the_little_probe/data/level.txt~
- Inside source: true
*** True Line Result
# ./samples/99_genre_platformer/the_little_probe/data/level.txt
** Processing line: ~ 640,8840,1180,8840~
- Inside source: true
*** True Line Result
640,8840,1180,8840
** Processing line: ~ -60,10220,0,9960~
- Inside source: true
*** True Line Result
-60,10220,0,9960
** Processing line: ~ -60,10220,0,10500~
- Inside source: true
*** True Line Result
-60,10220,0,10500
** Processing line: ~ 0,10500,0,10780~
- Inside source: true
*** True Line Result
0,10500,0,10780
** Processing line: ~ 0,10780,40,10900~
- Inside source: true
*** True Line Result
0,10780,40,10900
** Processing line: ~ 500,10920,760,10960~
- Inside source: true
*** True Line Result
500,10920,760,10960
** Processing line: ~ 300,10560,820,10600~
- Inside source: true
*** True Line Result
300,10560,820,10600
** Processing line: ~ 420,10320,700,10300~
- Inside source: true
*** True Line Result
420,10320,700,10300
** Processing line: ~ 820,10600,1500,10600~
- Inside source: true
*** True Line Result
820,10600,1500,10600
** Processing line: ~ 1500,10600,1940,10600~
- Inside source: true
*** True Line Result
1500,10600,1940,10600
** Processing line: ~ 1940,10600,2380,10580~
- Inside source: true
*** True Line Result
1940,10600,2380,10580
** Processing line: ~ 2380,10580,2800,10620~
- Inside source: true
*** True Line Result
2380,10580,2800,10620
** Processing line: ~ 2240,11080,2480,11020~
- Inside source: true
*** True Line Result
2240,11080,2480,11020
** Processing line: ~ 2000,11120,2240,11080~
- Inside source: true
*** True Line Result
2000,11120,2240,11080
** Processing line: ~ 1760,11180,2000,11120~
- Inside source: true
*** True Line Result
1760,11180,2000,11120
** Processing line: ~ 1620,11180,1760,11180~
- Inside source: true
*** True Line Result
1620,11180,1760,11180
** Processing line: ~ 1500,11220,1620,11180~
- Inside source: true
*** True Line Result
1500,11220,1620,11180
** Processing line: ~ 1180,11280,1340,11220~
- Inside source: true
*** True Line Result
1180,11280,1340,11220
** Processing line: ~ 1040,11240,1180,11280~
- Inside source: true
*** True Line Result
1040,11240,1180,11280
** Processing line: ~ 840,11280,1040,11240~
- Inside source: true
*** True Line Result
840,11280,1040,11240
** Processing line: ~ 640,11280,840,11280~
- Inside source: true
*** True Line Result
640,11280,840,11280
** Processing line: ~ 500,11220,640,11280~
- Inside source: true
*** True Line Result
500,11220,640,11280
** Processing line: ~ 420,11140,500,11220~
- Inside source: true
*** True Line Result
420,11140,500,11220
** Processing line: ~ 240,11100,420,11140~
- Inside source: true
*** True Line Result
240,11100,420,11140
** Processing line: ~ 100,11120,240,11100~
- Inside source: true
*** True Line Result
100,11120,240,11100
** Processing line: ~ 0,11180,100,11120~
- Inside source: true
*** True Line Result
0,11180,100,11120
** Processing line: ~ -160,11220,0,11180~
- Inside source: true
*** True Line Result
-160,11220,0,11180
** Processing line: ~ -260,11240,-160,11220~
- Inside source: true
*** True Line Result
-260,11240,-160,11220
** Processing line: ~ 1340,11220,1500,11220~
- Inside source: true
*** True Line Result
1340,11220,1500,11220
** Processing line: ~ 960,13300,1280,13060~
- Inside source: true
*** True Line Result
960,13300,1280,13060
** Processing line: ~ 1280,13060,1540,12860~
- Inside source: true
*** True Line Result
1280,13060,1540,12860
** Processing line: ~ 1540,12860,1820,12700~
- Inside source: true
*** True Line Result
1540,12860,1820,12700
** Processing line: ~ 1820,12700,2080,12520~
- Inside source: true
*** True Line Result
1820,12700,2080,12520
** Processing line: ~ 2080,12520,2240,12400~
- Inside source: true
*** True Line Result
2080,12520,2240,12400
** Processing line: ~ 2240,12400,2240,12240~
- Inside source: true
*** True Line Result
2240,12400,2240,12240
** Processing line: ~ 2240,12240,2400,12080~
- Inside source: true
*** True Line Result
2240,12240,2400,12080
** Processing line: ~ 2400,12080,2560,11920~
- Inside source: true
*** True Line Result
2400,12080,2560,11920
** Processing line: ~ 2560,11920,2640,11740~
- Inside source: true
*** True Line Result
2560,11920,2640,11740
** Processing line: ~ 2640,11740,2740,11580~
- Inside source: true
*** True Line Result
2640,11740,2740,11580
** Processing line: ~ 2740,11580,2800,11400~
- Inside source: true
*** True Line Result
2740,11580,2800,11400
** Processing line: ~ 2800,11400,2800,11240~
- Inside source: true
*** True Line Result
2800,11400,2800,11240
** Processing line: ~ 2740,11140,2800,11240~
- Inside source: true
*** True Line Result
2740,11140,2800,11240
** Processing line: ~ 2700,11040,2740,11140~
- Inside source: true
*** True Line Result
2700,11040,2740,11140
** Processing line: ~ 2700,11040,2740,10960~
- Inside source: true
*** True Line Result
2700,11040,2740,10960
** Processing line: ~ 2740,10960,2740,10920~
- Inside source: true
*** True Line Result
2740,10960,2740,10920
** Processing line: ~ 2700,10900,2740,10920~
- Inside source: true
*** True Line Result
2700,10900,2740,10920
** Processing line: ~ 2380,10900,2700,10900~
- Inside source: true
*** True Line Result
2380,10900,2700,10900
** Processing line: ~ 2040,10920,2380,10900~
- Inside source: true
*** True Line Result
2040,10920,2380,10900
** Processing line: ~ 1720,10940,2040,10920~
- Inside source: true
*** True Line Result
1720,10940,2040,10920
** Processing line: ~ 1380,11000,1720,10940~
- Inside source: true
*** True Line Result
1380,11000,1720,10940
** Processing line: ~ 1180,10980,1380,11000~
- Inside source: true
*** True Line Result
1180,10980,1380,11000
** Processing line: ~ 900,10980,1180,10980~
- Inside source: true
*** True Line Result
900,10980,1180,10980
** Processing line: ~ 760,10960,900,10980~
- Inside source: true
*** True Line Result
760,10960,900,10980
** Processing line: ~ 240,10960,500,10920~
- Inside source: true
*** True Line Result
240,10960,500,10920
** Processing line: ~ 40,10900,240,10960~
- Inside source: true
*** True Line Result
40,10900,240,10960
** Processing line: ~ 0,9700,0,9960~
- Inside source: true
*** True Line Result
0,9700,0,9960
** Processing line: ~ -60,9500,0,9700~
- Inside source: true
*** True Line Result
-60,9500,0,9700
** Processing line: ~ -60,9420,-60,9500~
- Inside source: true
*** True Line Result
-60,9420,-60,9500
** Processing line: ~ -60,9420,-60,9340~
- Inside source: true
*** True Line Result
-60,9420,-60,9340
** Processing line: ~ -60,9340,-60,9280~
- Inside source: true
*** True Line Result
-60,9340,-60,9280
** Processing line: ~ -60,9120,-60,9280~
- Inside source: true
*** True Line Result
-60,9120,-60,9280
** Processing line: ~ -60,8940,-60,9120~
- Inside source: true
*** True Line Result
-60,8940,-60,9120
** Processing line: ~ -60,8940,-60,8780~
- Inside source: true
*** True Line Result
-60,8940,-60,8780
** Processing line: ~ -60,8780,0,8700~
- Inside source: true
*** True Line Result
-60,8780,0,8700
** Processing line: ~ 0,8700,40,8680~
- Inside source: true
*** True Line Result
0,8700,40,8680
** Processing line: ~ 40,8680,240,8700~
- Inside source: true
*** True Line Result
40,8680,240,8700
** Processing line: ~ 240,8700,360,8780~
- Inside source: true
*** True Line Result
240,8700,360,8780
** Processing line: ~ 360,8780,640,8840~
- Inside source: true
*** True Line Result
360,8780,640,8840
** Processing line: ~ 1420,8400,1540,8480~
- Inside source: true
*** True Line Result
1420,8400,1540,8480
** Processing line: ~ 1540,8480,1680,8500~
- Inside source: true
*** True Line Result
1540,8480,1680,8500
** Processing line: ~ 1680,8500,1940,8460~
- Inside source: true
*** True Line Result
1680,8500,1940,8460
** Processing line: ~ 1180,8840,1280,8880~
- Inside source: true
*** True Line Result
1180,8840,1280,8880
** Processing line: ~ 1280,8880,1340,8860~
- Inside source: true
*** True Line Result
1280,8880,1340,8860
** Processing line: ~ 1340,8860,1720,8860~
- Inside source: true
*** True Line Result
1340,8860,1720,8860
** Processing line: ~ 1720,8860,1820,8920~
- Inside source: true
*** True Line Result
1720,8860,1820,8920
** Processing line: ~ 1820,8920,1820,9140~
- Inside source: true
*** True Line Result
1820,8920,1820,9140
** Processing line: ~ 1820,9140,1820,9280~
- Inside source: true
*** True Line Result
1820,9140,1820,9280
** Processing line: ~ 1820,9460,1820,9280~
- Inside source: true
*** True Line Result
1820,9460,1820,9280
** Processing line: ~ 1760,9480,1820,9460~
- Inside source: true
*** True Line Result
1760,9480,1820,9460
** Processing line: ~ 1640,9480,1760,9480~
- Inside source: true
*** True Line Result
1640,9480,1760,9480
** Processing line: ~ 1540,9500,1640,9480~
- Inside source: true
*** True Line Result
1540,9500,1640,9480
** Processing line: ~ 1340,9500,1540,9500~
- Inside source: true
*** True Line Result
1340,9500,1540,9500
** Processing line: ~ 1100,9500,1340,9500~
- Inside source: true
*** True Line Result
1100,9500,1340,9500
** Processing line: ~ 1040,9540,1100,9500~
- Inside source: true
*** True Line Result
1040,9540,1100,9500
** Processing line: ~ 960,9540,1040,9540~
- Inside source: true
*** True Line Result
960,9540,1040,9540
** Processing line: ~ 300,9420,360,9460~
- Inside source: true
*** True Line Result
300,9420,360,9460
** Processing line: ~ 240,9440,300,9420~
- Inside source: true
*** True Line Result
240,9440,300,9420
** Processing line: ~ 180,9600,240,9440~
- Inside source: true
*** True Line Result
180,9600,240,9440
** Processing line: ~ 120,9660,180,9600~
- Inside source: true
*** True Line Result
120,9660,180,9600
** Processing line: ~ 100,9820,120,9660~
- Inside source: true
*** True Line Result
100,9820,120,9660
** Processing line: ~ 100,9820,120,9860~
- Inside source: true
*** True Line Result
100,9820,120,9860
** Processing line: ~ 120,9860,140,9900~
- Inside source: true
*** True Line Result
120,9860,140,9900
** Processing line: ~ 140,9900,140,10000~
- Inside source: true
*** True Line Result
140,9900,140,10000
** Processing line: ~ 140,10440,180,10540~
- Inside source: true
*** True Line Result
140,10440,180,10540
** Processing line: ~ 100,10080,140,10000~
- Inside source: true
*** True Line Result
100,10080,140,10000
** Processing line: ~ 100,10080,140,10100~
- Inside source: true
*** True Line Result
100,10080,140,10100
** Processing line: ~ 140,10100,140,10440~
- Inside source: true
*** True Line Result
140,10100,140,10440
** Processing line: ~ 180,10540,300,10560~
- Inside source: true
*** True Line Result
180,10540,300,10560
** Processing line: ~ 2140,9560,2140,9640~
- Inside source: true
*** True Line Result
2140,9560,2140,9640
** Processing line: ~ 2140,9720,2140,9640~
- Inside source: true
*** True Line Result
2140,9720,2140,9640
** Processing line: ~ 1880,9780,2140,9720~
- Inside source: true
*** True Line Result
1880,9780,2140,9720
** Processing line: ~ 1720,9780,1880,9780~
- Inside source: true
*** True Line Result
1720,9780,1880,9780
** Processing line: ~ 1620,9740,1720,9780~
- Inside source: true
*** True Line Result
1620,9740,1720,9780
** Processing line: ~ 1500,9780,1620,9740~
- Inside source: true
*** True Line Result
1500,9780,1620,9740
** Processing line: ~ 1380,9780,1500,9780~
- Inside source: true
*** True Line Result
1380,9780,1500,9780
** Processing line: ~ 1340,9820,1380,9780~
- Inside source: true
*** True Line Result
1340,9820,1380,9780
** Processing line: ~ 1200,9820,1340,9820~
- Inside source: true
*** True Line Result
1200,9820,1340,9820
** Processing line: ~ 1100,9780,1200,9820~
- Inside source: true
*** True Line Result
1100,9780,1200,9820
** Processing line: ~ 900,9780,1100,9780~
- Inside source: true
*** True Line Result
900,9780,1100,9780
** Processing line: ~ 820,9720,900,9780~
- Inside source: true
*** True Line Result
820,9720,900,9780
** Processing line: ~ 540,9720,820,9720~
- Inside source: true
*** True Line Result
540,9720,820,9720
** Processing line: ~ 360,9840,540,9720~
- Inside source: true
*** True Line Result
360,9840,540,9720
** Processing line: ~ 360,9840,360,9960~
- Inside source: true
*** True Line Result
360,9840,360,9960
** Processing line: ~ 360,9960,360,10080~
- Inside source: true
*** True Line Result
360,9960,360,10080
** Processing line: ~ 360,10140,360,10080~
- Inside source: true
*** True Line Result
360,10140,360,10080
** Processing line: ~ 360,10140,360,10240~
- Inside source: true
*** True Line Result
360,10140,360,10240
** Processing line: ~ 360,10240,420,10320~
- Inside source: true
*** True Line Result
360,10240,420,10320
** Processing line: ~ 700,10300,820,10280~
- Inside source: true
*** True Line Result
700,10300,820,10280
** Processing line: ~ 820,10280,820,10280~
- Inside source: true
*** True Line Result
820,10280,820,10280
** Processing line: ~ 820,10280,900,10320~
- Inside source: true
*** True Line Result
820,10280,900,10320
** Processing line: ~ 900,10320,1040,10300~
- Inside source: true
*** True Line Result
900,10320,1040,10300
** Processing line: ~ 1040,10300,1200,10320~
- Inside source: true
*** True Line Result
1040,10300,1200,10320
** Processing line: ~ 1200,10320,1380,10280~
- Inside source: true
*** True Line Result
1200,10320,1380,10280
** Processing line: ~ 1380,10280,1500,10300~
- Inside source: true
*** True Line Result
1380,10280,1500,10300
** Processing line: ~ 1500,10300,1760,10300~
- Inside source: true
*** True Line Result
1500,10300,1760,10300
** Processing line: ~ 2800,10620,2840,10600~
- Inside source: true
*** True Line Result
2800,10620,2840,10600
** Processing line: ~ 2840,10600,2900,10600~
- Inside source: true
*** True Line Result
2840,10600,2900,10600
** Processing line: ~ 2900,10600,3000,10620~
- Inside source: true
*** True Line Result
2900,10600,3000,10620
** Processing line: ~ 3000,10620,3080,10620~
- Inside source: true
*** True Line Result
3000,10620,3080,10620
** Processing line: ~ 3080,10620,3140,10600~
- Inside source: true
*** True Line Result
3080,10620,3140,10600
** Processing line: ~ 3140,10540,3140,10600~
- Inside source: true
*** True Line Result
3140,10540,3140,10600
** Processing line: ~ 3140,10540,3140,10460~
- Inside source: true
*** True Line Result
3140,10540,3140,10460
** Processing line: ~ 3140,10460,3140,10360~
- Inside source: true
*** True Line Result
3140,10460,3140,10360
** Processing line: ~ 3140,10360,3140,10260~
- Inside source: true
*** True Line Result
3140,10360,3140,10260
** Processing line: ~ 3140,10260,3140,10140~
- Inside source: true
*** True Line Result
3140,10260,3140,10140
** Processing line: ~ 3140,10140,3140,10000~
- Inside source: true
*** True Line Result
3140,10140,3140,10000
** Processing line: ~ 3140,10000,3140,9860~
- Inside source: true
*** True Line Result
3140,10000,3140,9860
** Processing line: ~ 3140,9860,3160,9720~
- Inside source: true
*** True Line Result
3140,9860,3160,9720
** Processing line: ~ 3160,9720,3160,9580~
- Inside source: true
*** True Line Result
3160,9720,3160,9580
** Processing line: ~ 3160,9580,3160,9440~
- Inside source: true
*** True Line Result
3160,9580,3160,9440
** Processing line: ~ 3160,9300,3160,9440~
- Inside source: true
*** True Line Result
3160,9300,3160,9440
** Processing line: ~ 3160,9300,3160,9140~
- Inside source: true
*** True Line Result
3160,9300,3160,9140
** Processing line: ~ 3160,9140,3160,8980~
- Inside source: true
*** True Line Result
3160,9140,3160,8980
** Processing line: ~ 3160,8980,3160,8820~
- Inside source: true
*** True Line Result
3160,8980,3160,8820
** Processing line: ~ 3160,8820,3160,8680~
- Inside source: true
*** True Line Result
3160,8820,3160,8680
** Processing line: ~ 3160,8680,3160,8520~
- Inside source: true
*** True Line Result
3160,8680,3160,8520
** Processing line: ~ 1760,10300,1880,10300~
- Inside source: true
*** True Line Result
1760,10300,1880,10300
** Processing line: ~ 660,9500,960,9540~
- Inside source: true
*** True Line Result
660,9500,960,9540
** Processing line: ~ 640,9460,660,9500~
- Inside source: true
*** True Line Result
640,9460,660,9500
** Processing line: ~ 360,9460,640,9460~
- Inside source: true
*** True Line Result
360,9460,640,9460
** Processing line: ~ -480,10760,-440,10880~
- Inside source: true
*** True Line Result
-480,10760,-440,10880
** Processing line: ~ -480,11020,-440,10880~
- Inside source: true
*** True Line Result
-480,11020,-440,10880
** Processing line: ~ -480,11160,-260,11240~
- Inside source: true
*** True Line Result
-480,11160,-260,11240
** Processing line: ~ -480,11020,-480,11160~
- Inside source: true
*** True Line Result
-480,11020,-480,11160
** Processing line: ~ -600,11420,-380,11320~
- Inside source: true
*** True Line Result
-600,11420,-380,11320
** Processing line: ~ -380,11320,-200,11340~
- Inside source: true
*** True Line Result
-380,11320,-200,11340
** Processing line: ~ -200,11340,0,11340~
- Inside source: true
*** True Line Result
-200,11340,0,11340
** Processing line: ~ 0,11340,180,11340~
- Inside source: true
*** True Line Result
0,11340,180,11340
** Processing line: ~ 960,13420,960,13300~
- Inside source: true
*** True Line Result
960,13420,960,13300
** Processing line: ~ 960,13420,960,13520~
- Inside source: true
*** True Line Result
960,13420,960,13520
** Processing line: ~ 960,13520,1000,13560~
- Inside source: true
*** True Line Result
960,13520,1000,13560
** Processing line: ~ 1000,13560,1040,13540~
- Inside source: true
*** True Line Result
1000,13560,1040,13540
** Processing line: ~ 1040,13540,1200,13440~
- Inside source: true
*** True Line Result
1040,13540,1200,13440
** Processing line: ~ 1200,13440,1380,13380~
- Inside source: true
*** True Line Result
1200,13440,1380,13380
** Processing line: ~ 1380,13380,1620,13300~
- Inside source: true
*** True Line Result
1380,13380,1620,13300
** Processing line: ~ 1620,13300,1820,13220~
- Inside source: true
*** True Line Result
1620,13300,1820,13220
** Processing line: ~ 1820,13220,2000,13200~
- Inside source: true
*** True Line Result
1820,13220,2000,13200
** Processing line: ~ 2000,13200,2240,13200~
- Inside source: true
*** True Line Result
2000,13200,2240,13200
** Processing line: ~ 2240,13200,2440,13160~
- Inside source: true
*** True Line Result
2240,13200,2440,13160
** Processing line: ~ 2440,13160,2640,13040~
- Inside source: true
*** True Line Result
2440,13160,2640,13040
** Processing line: ~ -480,10760,-440,10620~
- Inside source: true
*** True Line Result
-480,10760,-440,10620
** Processing line: ~ -440,10620,-360,10560~
- Inside source: true
*** True Line Result
-440,10620,-360,10560
** Processing line: ~ -380,10460,-360,10560~
- Inside source: true
*** True Line Result
-380,10460,-360,10560
** Processing line: ~ -380,10460,-360,10300~
- Inside source: true
*** True Line Result
-380,10460,-360,10300
** Processing line: ~ -380,10140,-360,10300~
- Inside source: true
*** True Line Result
-380,10140,-360,10300
** Processing line: ~ -380,10140,-380,10040~
- Inside source: true
*** True Line Result
-380,10140,-380,10040
** Processing line: ~ -380,9880,-380,10040~
- Inside source: true
*** True Line Result
-380,9880,-380,10040
** Processing line: ~ -380,9720,-380,9880~
- Inside source: true
*** True Line Result
-380,9720,-380,9880
** Processing line: ~ -380,9720,-380,9540~
- Inside source: true
*** True Line Result
-380,9720,-380,9540
** Processing line: ~ -380,9360,-380,9540~
- Inside source: true
*** True Line Result
-380,9360,-380,9540
** Processing line: ~ -380,9180,-380,9360~
- Inside source: true
*** True Line Result
-380,9180,-380,9360
** Processing line: ~ -380,9180,-380,9000~
- Inside source: true
*** True Line Result
-380,9180,-380,9000
** Processing line: ~ -380,8840,-380,9000~
- Inside source: true
*** True Line Result
-380,8840,-380,9000
** Processing line: ~ -380,8840,-380,8760~
- Inside source: true
*** True Line Result
-380,8840,-380,8760
** Processing line: ~ -380,8760,-380,8620~
- Inside source: true
*** True Line Result
-380,8760,-380,8620
** Processing line: ~ -380,8620,-380,8520~
- Inside source: true
*** True Line Result
-380,8620,-380,8520
** Processing line: ~ -380,8520,-360,8400~
- Inside source: true
*** True Line Result
-380,8520,-360,8400
** Processing line: ~ -360,8400,-100,8400~
- Inside source: true
*** True Line Result
-360,8400,-100,8400
** Processing line: ~ -100,8400,-60,8420~
- Inside source: true
*** True Line Result
-100,8400,-60,8420
** Processing line: ~ -60,8420,240,8440~
- Inside source: true
*** True Line Result
-60,8420,240,8440
** Processing line: ~ 240,8440,240,8380~
- Inside source: true
*** True Line Result
240,8440,240,8380
** Processing line: ~ 240,8380,500,8440~
- Inside source: true
*** True Line Result
240,8380,500,8440
** Processing line: ~ 500,8440,760,8460~
- Inside source: true
*** True Line Result
500,8440,760,8460
** Processing line: ~ 760,8460,1000,8400~
- Inside source: true
*** True Line Result
760,8460,1000,8400
** Processing line: ~ 1000,8400,1180,8420~
- Inside source: true
*** True Line Result
1000,8400,1180,8420
** Processing line: ~ 1180,8420,1420,8400~
- Inside source: true
*** True Line Result
1180,8420,1420,8400
** Processing line: ~ 1940,8460,2140,8420~
- Inside source: true
*** True Line Result
1940,8460,2140,8420
** Processing line: ~ 2140,8420,2200,8520~
- Inside source: true
*** True Line Result
2140,8420,2200,8520
** Processing line: ~ 2200,8680,2200,8520~
- Inside source: true
*** True Line Result
2200,8680,2200,8520
** Processing line: ~ 2140,8840,2200,8680~
- Inside source: true
*** True Line Result
2140,8840,2200,8680
** Processing line: ~ 2140,8840,2140,9020~
- Inside source: true
*** True Line Result
2140,8840,2140,9020
** Processing line: ~ 2140,9100,2140,9020~
- Inside source: true
*** True Line Result
2140,9100,2140,9020
** Processing line: ~ 2140,9200,2140,9100~
- Inside source: true
*** True Line Result
2140,9200,2140,9100
** Processing line: ~ 2140,9200,2200,9320~
- Inside source: true
*** True Line Result
2140,9200,2200,9320
** Processing line: ~ 2200,9320,2200,9440~
- Inside source: true
*** True Line Result
2200,9320,2200,9440
** Processing line: ~ 2140,9560,2200,9440~
- Inside source: true
*** True Line Result
2140,9560,2200,9440
** Processing line: ~ 1880,10300,2200,10280~
- Inside source: true
*** True Line Result
1880,10300,2200,10280
** Processing line: ~ 2200,10280,2480,10260~
- Inside source: true
*** True Line Result
2200,10280,2480,10260
** Processing line: ~ 2480,10260,2700,10240~
- Inside source: true
*** True Line Result
2480,10260,2700,10240
** Processing line: ~ 2700,10240,2840,10180~
- Inside source: true
*** True Line Result
2700,10240,2840,10180
** Processing line: ~ 2840,10180,2900,10060~
- Inside source: true
*** True Line Result
2840,10180,2900,10060
** Processing line: ~ 2900,9860,2900,10060~
- Inside source: true
*** True Line Result
2900,9860,2900,10060
** Processing line: ~ 2900,9640,2900,9860~
- Inside source: true
*** True Line Result
2900,9640,2900,9860
** Processing line: ~ 2900,9640,2900,9500~
- Inside source: true
*** True Line Result
2900,9640,2900,9500
** Processing line: ~ 2900,9460,2900,9500~
- Inside source: true
*** True Line Result
2900,9460,2900,9500
** Processing line: ~ 2740,9460,2900,9460~
- Inside source: true
*** True Line Result
2740,9460,2900,9460
** Processing line: ~ 2700,9460,2740,9460~
- Inside source: true
*** True Line Result
2700,9460,2740,9460
** Processing line: ~ 2700,9360,2700,9460~
- Inside source: true
*** True Line Result
2700,9360,2700,9460
** Processing line: ~ 2700,9320,2700,9360~
- Inside source: true
*** True Line Result
2700,9320,2700,9360
** Processing line: ~ 2600,9320,2700,9320~
- Inside source: true
*** True Line Result
2600,9320,2700,9320
** Processing line: ~ 2600,9260,2600,9320~
- Inside source: true
*** True Line Result
2600,9260,2600,9320
** Processing line: ~ 2600,9200,2600,9260~
- Inside source: true
*** True Line Result
2600,9200,2600,9260
** Processing line: ~ 2480,9120,2600,9200~
- Inside source: true
*** True Line Result
2480,9120,2600,9200
** Processing line: ~ 2440,9080,2480,9120~
- Inside source: true
*** True Line Result
2440,9080,2480,9120
** Processing line: ~ 2380,9080,2440,9080~
- Inside source: true
*** True Line Result
2380,9080,2440,9080
** Processing line: ~ 2320,9060,2380,9080~
- Inside source: true
*** True Line Result
2320,9060,2380,9080
** Processing line: ~ 2320,8860,2320,9060~
- Inside source: true
*** True Line Result
2320,8860,2320,9060
** Processing line: ~ 2320,8860,2380,8840~
- Inside source: true
*** True Line Result
2320,8860,2380,8840
** Processing line: ~ 2380,8840,2480,8860~
- Inside source: true
*** True Line Result
2380,8840,2480,8860
** Processing line: ~ 2480,8860,2600,8840~
- Inside source: true
*** True Line Result
2480,8860,2600,8840
** Processing line: ~ 2600,8840,2740,8840~
- Inside source: true
*** True Line Result
2600,8840,2740,8840
** Processing line: ~ 2740,8840,2840,8800~
- Inside source: true
*** True Line Result
2740,8840,2840,8800
** Processing line: ~ 2840,8800,2900,8700~
- Inside source: true
*** True Line Result
2840,8800,2900,8700
** Processing line: ~ 2900,8600,2900,8700~
- Inside source: true
*** True Line Result
2900,8600,2900,8700
** Processing line: ~ 2900,8480,2900,8600~
- Inside source: true
*** True Line Result
2900,8480,2900,8600
** Processing line: ~ 2900,8380,2900,8480~
- Inside source: true
*** True Line Result
2900,8380,2900,8480
** Processing line: ~ 2900,8380,2900,8260~
- Inside source: true
*** True Line Result
2900,8380,2900,8260
** Processing line: ~ 2900,8260,2900,8140~
- Inside source: true
*** True Line Result
2900,8260,2900,8140
** Processing line: ~ 2900,8140,2900,8020~
- Inside source: true
*** True Line Result
2900,8140,2900,8020
** Processing line: ~ 2900,8020,2900,7900~
- Inside source: true
*** True Line Result
2900,8020,2900,7900
** Processing line: ~ 2900,7820,2900,7900~
- Inside source: true
*** True Line Result
2900,7820,2900,7900
** Processing line: ~ 2900,7820,2900,7740~
- Inside source: true
*** True Line Result
2900,7820,2900,7740
** Processing line: ~ 2900,7660,2900,7740~
- Inside source: true
*** True Line Result
2900,7660,2900,7740
** Processing line: ~ 2900,7560,2900,7660~
- Inside source: true
*** True Line Result
2900,7560,2900,7660
** Processing line: ~ 2900,7460,2900,7560~
- Inside source: true
*** True Line Result
2900,7460,2900,7560
** Processing line: ~ 2900,7460,2900,7360~
- Inside source: true
*** True Line Result
2900,7460,2900,7360
** Processing line: ~ 2900,7260,2900,7360~
- Inside source: true
*** True Line Result
2900,7260,2900,7360
** Processing line: ~ 2840,7160,2900,7260~
- Inside source: true
*** True Line Result
2840,7160,2900,7260
** Processing line: ~ 2800,7080,2840,7160~
- Inside source: true
*** True Line Result
2800,7080,2840,7160
** Processing line: ~ 2700,7100,2800,7080~
- Inside source: true
*** True Line Result
2700,7100,2800,7080
** Processing line: ~ 2560,7120,2700,7100~
- Inside source: true
*** True Line Result
2560,7120,2700,7100
** Processing line: ~ 2400,7100,2560,7120~
- Inside source: true
*** True Line Result
2400,7100,2560,7120
** Processing line: ~ 2320,7100,2400,7100~
- Inside source: true
*** True Line Result
2320,7100,2400,7100
** Processing line: ~ 2140,7100,2320,7100~
- Inside source: true
*** True Line Result
2140,7100,2320,7100
** Processing line: ~ 2040,7080,2140,7100~
- Inside source: true
*** True Line Result
2040,7080,2140,7100
** Processing line: ~ 1940,7080,2040,7080~
- Inside source: true
*** True Line Result
1940,7080,2040,7080
** Processing line: ~ 1820,7140,1940,7080~
- Inside source: true
*** True Line Result
1820,7140,1940,7080
** Processing line: ~ 1680,7140,1820,7140~
- Inside source: true
*** True Line Result
1680,7140,1820,7140
** Processing line: ~ 1540,7140,1680,7140~
- Inside source: true
*** True Line Result
1540,7140,1680,7140
** Processing line: ~ 1420,7220,1540,7140~
- Inside source: true
*** True Line Result
1420,7220,1540,7140
** Processing line: ~ 1280,7220,1380,7220~
- Inside source: true
*** True Line Result
1280,7220,1380,7220
** Processing line: ~ 1140,7200,1280,7220~
- Inside source: true
*** True Line Result
1140,7200,1280,7220
** Processing line: ~ 1000,7220,1140,7200~
- Inside source: true
*** True Line Result
1000,7220,1140,7200
** Processing line: ~ 760,7280,900,7320~
- Inside source: true
*** True Line Result
760,7280,900,7320
** Processing line: ~ 540,7220,760,7280~
- Inside source: true
*** True Line Result
540,7220,760,7280
** Processing line: ~ 300,7180,540,7220~
- Inside source: true
*** True Line Result
300,7180,540,7220
** Processing line: ~ 180,7120,180,7160~
- Inside source: true
*** True Line Result
180,7120,180,7160
** Processing line: ~ 40,7140,180,7120~
- Inside source: true
*** True Line Result
40,7140,180,7120
** Processing line: ~ -60,7160,40,7140~
- Inside source: true
*** True Line Result
-60,7160,40,7140
** Processing line: ~ -200,7120,-60,7160~
- Inside source: true
*** True Line Result
-200,7120,-60,7160
** Processing line: ~ 180,7160,300,7180~
- Inside source: true
*** True Line Result
180,7160,300,7180
** Processing line: ~ -260,7060,-200,7120~
- Inside source: true
*** True Line Result
-260,7060,-200,7120
** Processing line: ~ -260,6980,-260,7060~
- Inside source: true
*** True Line Result
-260,6980,-260,7060
** Processing line: ~ -260,6880,-260,6980~
- Inside source: true
*** True Line Result
-260,6880,-260,6980
** Processing line: ~ -260,6880,-260,6820~
- Inside source: true
*** True Line Result
-260,6880,-260,6820
** Processing line: ~ -260,6820,-200,6760~
- Inside source: true
*** True Line Result
-260,6820,-200,6760
** Processing line: ~ -200,6760,-100,6740~
- Inside source: true
*** True Line Result
-200,6760,-100,6740
** Processing line: ~ -100,6740,-60,6740~
- Inside source: true
*** True Line Result
-100,6740,-60,6740
** Processing line: ~ -60,6740,40,6740~
- Inside source: true
*** True Line Result
-60,6740,40,6740
** Processing line: ~ 40,6740,300,6800~
- Inside source: true
*** True Line Result
40,6740,300,6800
** Processing line: ~ 300,6800,420,6760~
- Inside source: true
*** True Line Result
300,6800,420,6760
** Processing line: ~ 420,6760,500,6740~
- Inside source: true
*** True Line Result
420,6760,500,6740
** Processing line: ~ 500,6740,540,6760~
- Inside source: true
*** True Line Result
500,6740,540,6760
** Processing line: ~ 540,6760,540,6760~
- Inside source: true
*** True Line Result
540,6760,540,6760
** Processing line: ~ 540,6760,640,6780~
- Inside source: true
*** True Line Result
540,6760,640,6780
** Processing line: ~ 640,6660,640,6780~
- Inside source: true
*** True Line Result
640,6660,640,6780
** Processing line: ~ 580,6580,640,6660~
- Inside source: true
*** True Line Result
580,6580,640,6660
** Processing line: ~ 580,6440,580,6580~
- Inside source: true
*** True Line Result
580,6440,580,6580
** Processing line: ~ 580,6440,640,6320~
- Inside source: true
*** True Line Result
580,6440,640,6320
** Processing line: ~ 640,6320,640,6180~
- Inside source: true
*** True Line Result
640,6320,640,6180
** Processing line: ~ 580,6080,640,6180~
- Inside source: true
*** True Line Result
580,6080,640,6180
** Processing line: ~ 580,6080,640,5960~
- Inside source: true
*** True Line Result
580,6080,640,5960
** Processing line: ~ 640,5960,640,5840~
- Inside source: true
*** True Line Result
640,5960,640,5840
** Processing line: ~ 640,5840,640,5700~
- Inside source: true
*** True Line Result
640,5840,640,5700
** Processing line: ~ 640,5700,660,5560~
- Inside source: true
*** True Line Result
640,5700,660,5560
** Processing line: ~ 660,5560,660,5440~
- Inside source: true
*** True Line Result
660,5560,660,5440
** Processing line: ~ 660,5440,660,5300~
- Inside source: true
*** True Line Result
660,5440,660,5300
** Processing line: ~ 660,5140,660,5300~
- Inside source: true
*** True Line Result
660,5140,660,5300
** Processing line: ~ 660,5140,660,5000~
- Inside source: true
*** True Line Result
660,5140,660,5000
** Processing line: ~ 660,5000,660,4880~
- Inside source: true
*** True Line Result
660,5000,660,4880
** Processing line: ~ 660,4880,820,4860~
- Inside source: true
*** True Line Result
660,4880,820,4860
** Processing line: ~ 820,4860,1000,4840~
- Inside source: true
*** True Line Result
820,4860,1000,4840
** Processing line: ~ 1000,4840,1100,4860~
- Inside source: true
*** True Line Result
1000,4840,1100,4860
** Processing line: ~ 1100,4860,1280,4860~
- Inside source: true
*** True Line Result
1100,4860,1280,4860
** Processing line: ~ 1280,4860,1420,4840~
- Inside source: true
*** True Line Result
1280,4860,1420,4840
** Processing line: ~ 1420,4840,1580,4860~
- Inside source: true
*** True Line Result
1420,4840,1580,4860
** Processing line: ~ 1580,4860,1720,4820~
- Inside source: true
*** True Line Result
1580,4860,1720,4820
** Processing line: ~ 1720,4820,1880,4860~
- Inside source: true
*** True Line Result
1720,4820,1880,4860
** Processing line: ~ 1880,4860,2000,4840~
- Inside source: true
*** True Line Result
1880,4860,2000,4840
** Processing line: ~ 2000,4840,2140,4840~
- Inside source: true
*** True Line Result
2000,4840,2140,4840
** Processing line: ~ 2140,4840,2320,4860~
- Inside source: true
*** True Line Result
2140,4840,2320,4860
** Processing line: ~ 2320,4860,2440,4880~
- Inside source: true
*** True Line Result
2320,4860,2440,4880
** Processing line: ~ 2440,4880,2600,4880~
- Inside source: true
*** True Line Result
2440,4880,2600,4880
** Processing line: ~ 2600,4880,2800,4880~
- Inside source: true
*** True Line Result
2600,4880,2800,4880
** Processing line: ~ 2800,4880,2900,4880~
- Inside source: true
*** True Line Result
2800,4880,2900,4880
** Processing line: ~ 2900,4880,2900,4820~
- Inside source: true
*** True Line Result
2900,4880,2900,4820
** Processing line: ~ 2900,4740,2900,4820~
- Inside source: true
*** True Line Result
2900,4740,2900,4820
** Processing line: ~ 2800,4700,2900,4740~
- Inside source: true
*** True Line Result
2800,4700,2900,4740
** Processing line: ~ 2520,4680,2800,4700~
- Inside source: true
*** True Line Result
2520,4680,2800,4700
** Processing line: ~ 2240,4660,2520,4680~
- Inside source: true
*** True Line Result
2240,4660,2520,4680
** Processing line: ~ 1940,4620,2240,4660~
- Inside source: true
*** True Line Result
1940,4620,2240,4660
** Processing line: ~ 1820,4580,1940,4620~
- Inside source: true
*** True Line Result
1820,4580,1940,4620
** Processing line: ~ 1820,4500,1820,4580~
- Inside source: true
*** True Line Result
1820,4500,1820,4580
** Processing line: ~ 1820,4500,1880,4420~
- Inside source: true
*** True Line Result
1820,4500,1880,4420
** Processing line: ~ 1880,4420,2000,4420~
- Inside source: true
*** True Line Result
1880,4420,2000,4420
** Processing line: ~ 2000,4420,2200,4420~
- Inside source: true
*** True Line Result
2000,4420,2200,4420
** Processing line: ~ 2200,4420,2400,4440~
- Inside source: true
*** True Line Result
2200,4420,2400,4440
** Processing line: ~ 2400,4440,2600,4440~
- Inside source: true
*** True Line Result
2400,4440,2600,4440
** Processing line: ~ 2600,4440,2840,4440~
- Inside source: true
*** True Line Result
2600,4440,2840,4440
** Processing line: ~ 2840,4440,2900,4400~
- Inside source: true
*** True Line Result
2840,4440,2900,4400
** Processing line: ~ 2740,4260,2900,4280~
- Inside source: true
*** True Line Result
2740,4260,2900,4280
** Processing line: ~ 2600,4240,2740,4260~
- Inside source: true
*** True Line Result
2600,4240,2740,4260
** Processing line: ~ 2480,4280,2600,4240~
- Inside source: true
*** True Line Result
2480,4280,2600,4240
** Processing line: ~ 2320,4240,2480,4280~
- Inside source: true
*** True Line Result
2320,4240,2480,4280
** Processing line: ~ 2140,4220,2320,4240~
- Inside source: true
*** True Line Result
2140,4220,2320,4240
** Processing line: ~ 1940,4220,2140,4220~
- Inside source: true
*** True Line Result
1940,4220,2140,4220
** Processing line: ~ 1880,4160,1940,4220~
- Inside source: true
*** True Line Result
1880,4160,1940,4220
** Processing line: ~ 1880,4160,1880,4080~
- Inside source: true
*** True Line Result
1880,4160,1880,4080
** Processing line: ~ 1880,4080,2040,4040~
- Inside source: true
*** True Line Result
1880,4080,2040,4040
** Processing line: ~ 2040,4040,2240,4060~
- Inside source: true
*** True Line Result
2040,4040,2240,4060
** Processing line: ~ 2240,4060,2400,4040~
- Inside source: true
*** True Line Result
2240,4060,2400,4040
** Processing line: ~ 2400,4040,2600,4060~
- Inside source: true
*** True Line Result
2400,4040,2600,4060
** Processing line: ~ 2600,4060,2740,4020~
- Inside source: true
*** True Line Result
2600,4060,2740,4020
** Processing line: ~ 2740,4020,2840,3940~
- Inside source: true
*** True Line Result
2740,4020,2840,3940
** Processing line: ~ 2840,3780,2840,3940~
- Inside source: true
*** True Line Result
2840,3780,2840,3940
** Processing line: ~ 2740,3660,2840,3780~
- Inside source: true
*** True Line Result
2740,3660,2840,3780
** Processing line: ~ 2700,3680,2740,3660~
- Inside source: true
*** True Line Result
2700,3680,2740,3660
** Processing line: ~ 2520,3700,2700,3680~
- Inside source: true
*** True Line Result
2520,3700,2700,3680
** Processing line: ~ 2380,3700,2520,3700~
- Inside source: true
*** True Line Result
2380,3700,2520,3700
** Processing line: ~ 2200,3720,2380,3700~
- Inside source: true
*** True Line Result
2200,3720,2380,3700
** Processing line: ~ 2040,3720,2200,3720~
- Inside source: true
*** True Line Result
2040,3720,2200,3720
** Processing line: ~ 1880,3700,2040,3720~
- Inside source: true
*** True Line Result
1880,3700,2040,3720
** Processing line: ~ 1820,3680,1880,3700~
- Inside source: true
*** True Line Result
1820,3680,1880,3700
** Processing line: ~ 1760,3600,1820,3680~
- Inside source: true
*** True Line Result
1760,3600,1820,3680
** Processing line: ~ 1760,3600,1820,3480~
- Inside source: true
*** True Line Result
1760,3600,1820,3480
** Processing line: ~ 1820,3480,1880,3440~
- Inside source: true
*** True Line Result
1820,3480,1880,3440
** Processing line: ~ 1880,3440,1960,3460~
- Inside source: true
*** True Line Result
1880,3440,1960,3460
** Processing line: ~ 1960,3460,2140,3460~
- Inside source: true
*** True Line Result
1960,3460,2140,3460
** Processing line: ~ 2140,3460,2380,3460~
- Inside source: true
*** True Line Result
2140,3460,2380,3460
** Processing line: ~ 2380,3460,2640,3440~
- Inside source: true
*** True Line Result
2380,3460,2640,3440
** Processing line: ~ 2640,3440,2900,3380~
- Inside source: true
*** True Line Result
2640,3440,2900,3380
** Processing line: ~ 2840,3280,2900,3380~
- Inside source: true
*** True Line Result
2840,3280,2900,3380
** Processing line: ~ 2840,3280,2900,3200~
- Inside source: true
*** True Line Result
2840,3280,2900,3200
** Processing line: ~ 2900,3200,2900,3140~
- Inside source: true
*** True Line Result
2900,3200,2900,3140
** Processing line: ~ 2840,3020,2900,3140~
- Inside source: true
*** True Line Result
2840,3020,2900,3140
** Processing line: ~ 2800,2960,2840,3020~
- Inside source: true
*** True Line Result
2800,2960,2840,3020
** Processing line: ~ 2700,3000,2800,2960~
- Inside source: true
*** True Line Result
2700,3000,2800,2960
** Processing line: ~ 2600,2980,2700,3000~
- Inside source: true
*** True Line Result
2600,2980,2700,3000
** Processing line: ~ 2380,3000,2600,2980~
- Inside source: true
*** True Line Result
2380,3000,2600,2980
** Processing line: ~ 2140,3000,2380,3000~
- Inside source: true
*** True Line Result
2140,3000,2380,3000
** Processing line: ~ 1880,3000,2140,3000~
- Inside source: true
*** True Line Result
1880,3000,2140,3000
** Processing line: ~ 1720,3040,1880,3000~
- Inside source: true
*** True Line Result
1720,3040,1880,3000
** Processing line: ~ 1640,2960,1720,3040~
- Inside source: true
*** True Line Result
1640,2960,1720,3040
** Processing line: ~ 1500,2940,1640,2960~
- Inside source: true
*** True Line Result
1500,2940,1640,2960
** Processing line: ~ 1340,3000,1500,2940~
- Inside source: true
*** True Line Result
1340,3000,1500,2940
** Processing line: ~ 1240,3000,1340,3000~
- Inside source: true
*** True Line Result
1240,3000,1340,3000
** Processing line: ~ 1140,3020,1240,3000~
- Inside source: true
*** True Line Result
1140,3020,1240,3000
** Processing line: ~ 1040,3000,1140,3020~
- Inside source: true
*** True Line Result
1040,3000,1140,3020
** Processing line: ~ 960,2960,1040,3000~
- Inside source: true
*** True Line Result
960,2960,1040,3000
** Processing line: ~ 900,2960,960,2960~
- Inside source: true
*** True Line Result
900,2960,960,2960
** Processing line: ~ 840,2840,900,2960~
- Inside source: true
*** True Line Result
840,2840,900,2960
** Processing line: ~ 700,2820,840,2840~
- Inside source: true
*** True Line Result
700,2820,840,2840
** Processing line: ~ 540,2820,700,2820~
- Inside source: true
*** True Line Result
540,2820,700,2820
** Processing line: ~ 420,2820,540,2820~
- Inside source: true
*** True Line Result
420,2820,540,2820
** Processing line: ~ 180,2800,420,2820~
- Inside source: true
*** True Line Result
180,2800,420,2820
** Processing line: ~ 60,2780,180,2800~
- Inside source: true
*** True Line Result
60,2780,180,2800
** Processing line: ~ -60,2800,60,2780~
- Inside source: true
*** True Line Result
-60,2800,60,2780
** Processing line: ~ -160,2760,-60,2800~
- Inside source: true
*** True Line Result
-160,2760,-60,2800
** Processing line: ~ -260,2740,-160,2760~
- Inside source: true
*** True Line Result
-260,2740,-160,2760
** Processing line: ~ -300,2640,-260,2740~
- Inside source: true
*** True Line Result
-300,2640,-260,2740
** Processing line: ~ -360,2560,-300,2640~
- Inside source: true
*** True Line Result
-360,2560,-300,2640
** Processing line: ~ -380,2460,-360,2560~
- Inside source: true
*** True Line Result
-380,2460,-360,2560
** Processing line: ~ -380,2460,-300,2380~
- Inside source: true
*** True Line Result
-380,2460,-300,2380
** Processing line: ~ -300,2300,-300,2380~
- Inside source: true
*** True Line Result
-300,2300,-300,2380
** Processing line: ~ -300,2300,-300,2220~
- Inside source: true
*** True Line Result
-300,2300,-300,2220
** Processing line: ~ -300,2100,-300,2220~
- Inside source: true
*** True Line Result
-300,2100,-300,2220
** Processing line: ~ -300,2100,-300,2040~
- Inside source: true
*** True Line Result
-300,2100,-300,2040
** Processing line: ~ -300,2040,-160,2040~
- Inside source: true
*** True Line Result
-300,2040,-160,2040
** Processing line: ~ -160,2040,-60,2040~
- Inside source: true
*** True Line Result
-160,2040,-60,2040
** Processing line: ~ -60,2040,60,2040~
- Inside source: true
*** True Line Result
-60,2040,60,2040
** Processing line: ~ 60,2040,180,2040~
- Inside source: true
*** True Line Result
60,2040,180,2040
** Processing line: ~ 180,2040,360,2040~
- Inside source: true
*** True Line Result
180,2040,360,2040
** Processing line: ~ 360,2040,540,2040~
- Inside source: true
*** True Line Result
360,2040,540,2040
** Processing line: ~ 540,2040,700,2080~
- Inside source: true
*** True Line Result
540,2040,700,2080
** Processing line: ~ 660,2160,700,2080~
- Inside source: true
*** True Line Result
660,2160,700,2080
** Processing line: ~ 660,2160,700,2260~
- Inside source: true
*** True Line Result
660,2160,700,2260
** Processing line: ~ 660,2380,700,2260~
- Inside source: true
*** True Line Result
660,2380,700,2260
** Processing line: ~ 500,2340,660,2380~
- Inside source: true
*** True Line Result
500,2340,660,2380
** Processing line: ~ 360,2340,500,2340~
- Inside source: true
*** True Line Result
360,2340,500,2340
** Processing line: ~ 240,2340,360,2340~
- Inside source: true
*** True Line Result
240,2340,360,2340
** Processing line: ~ 40,2320,240,2340~
- Inside source: true
*** True Line Result
40,2320,240,2340
** Processing line: ~ -60,2320,40,2320~
- Inside source: true
*** True Line Result
-60,2320,40,2320
** Processing line: ~ -100,2380,-60,2320~
- Inside source: true
*** True Line Result
-100,2380,-60,2320
** Processing line: ~ -100,2380,-100,2460~
- Inside source: true
*** True Line Result
-100,2380,-100,2460
** Processing line: ~ -100,2460,-100,2540~
- Inside source: true
*** True Line Result
-100,2460,-100,2540
** Processing line: ~ -100,2540,0,2560~
- Inside source: true
*** True Line Result
-100,2540,0,2560
** Processing line: ~ 0,2560,140,2600~
- Inside source: true
*** True Line Result
0,2560,140,2600
** Processing line: ~ 140,2600,300,2600~
- Inside source: true
*** True Line Result
140,2600,300,2600
** Processing line: ~ 300,2600,460,2600~
- Inside source: true
*** True Line Result
300,2600,460,2600
** Processing line: ~ 460,2600,640,2600~
- Inside source: true
*** True Line Result
460,2600,640,2600
** Processing line: ~ 640,2600,760,2580~
- Inside source: true
*** True Line Result
640,2600,760,2580
** Processing line: ~ 760,2580,820,2560~
- Inside source: true
*** True Line Result
760,2580,820,2560
** Processing line: ~ 820,2560,820,2500~
- Inside source: true
*** True Line Result
820,2560,820,2500
** Processing line: ~ 820,2500,820,2400~
- Inside source: true
*** True Line Result
820,2500,820,2400
** Processing line: ~ 820,2400,840,2320~
- Inside source: true
*** True Line Result
820,2400,840,2320
** Processing line: ~ 840,2320,840,2240~
- Inside source: true
*** True Line Result
840,2320,840,2240
** Processing line: ~ 820,2120,840,2240~
- Inside source: true
*** True Line Result
820,2120,840,2240
** Processing line: ~ 820,2020,820,2120~
- Inside source: true
*** True Line Result
820,2020,820,2120
** Processing line: ~ 820,1900,820,2020~
- Inside source: true
*** True Line Result
820,1900,820,2020
** Processing line: ~ 760,1840,820,1900~
- Inside source: true
*** True Line Result
760,1840,820,1900
** Processing line: ~ 640,1840,760,1840~
- Inside source: true
*** True Line Result
640,1840,760,1840
** Processing line: ~ 500,1840,640,1840~
- Inside source: true
*** True Line Result
500,1840,640,1840
** Processing line: ~ 300,1860,420,1880~
- Inside source: true
*** True Line Result
300,1860,420,1880
** Processing line: ~ 180,1840,300,1860~
- Inside source: true
*** True Line Result
180,1840,300,1860
** Processing line: ~ 420,1880,500,1840~
- Inside source: true
*** True Line Result
420,1880,500,1840
** Processing line: ~ 0,1840,180,1840~
- Inside source: true
*** True Line Result
0,1840,180,1840
** Processing line: ~ -60,1860,0,1840~
- Inside source: true
*** True Line Result
-60,1860,0,1840
** Processing line: ~ -160,1840,-60,1860~
- Inside source: true
*** True Line Result
-160,1840,-60,1860
** Processing line: ~ -200,1800,-160,1840~
- Inside source: true
*** True Line Result
-200,1800,-160,1840
** Processing line: ~ -260,1760,-200,1800~
- Inside source: true
*** True Line Result
-260,1760,-200,1800
** Processing line: ~ -260,1680,-260,1760~
- Inside source: true
*** True Line Result
-260,1680,-260,1760
** Processing line: ~ -260,1620,-260,1680~
- Inside source: true
*** True Line Result
-260,1620,-260,1680
** Processing line: ~ -260,1540,-260,1620~
- Inside source: true
*** True Line Result
-260,1540,-260,1620
** Processing line: ~ -260,1540,-260,1460~
- Inside source: true
*** True Line Result
-260,1540,-260,1460
** Processing line: ~ -300,1420,-260,1460~
- Inside source: true
*** True Line Result
-300,1420,-260,1460
** Processing line: ~ -300,1420,-300,1340~
- Inside source: true
*** True Line Result
-300,1420,-300,1340
** Processing line: ~ -300,1340,-260,1260~
- Inside source: true
*** True Line Result
-300,1340,-260,1260
** Processing line: ~ -260,1260,-260,1160~
- Inside source: true
*** True Line Result
-260,1260,-260,1160
** Processing line: ~ -260,1060,-260,1160~
- Inside source: true
*** True Line Result
-260,1060,-260,1160
** Processing line: ~ -260,1060,-260,960~
- Inside source: true
*** True Line Result
-260,1060,-260,960
** Processing line: ~ -260,880,-260,960~
- Inside source: true
*** True Line Result
-260,880,-260,960
** Processing line: ~ -260,880,-260,780~
- Inside source: true
*** True Line Result
-260,880,-260,780
** Processing line: ~ -260,780,-260,680~
- Inside source: true
*** True Line Result
-260,780,-260,680
** Processing line: ~ -300,580,-260,680~
- Inside source: true
*** True Line Result
-300,580,-260,680
** Processing line: ~ -300,580,-300,480~
- Inside source: true
*** True Line Result
-300,580,-300,480
** Processing line: ~ -300,480,-260,400~
- Inside source: true
*** True Line Result
-300,480,-260,400
** Processing line: ~ -300,320,-260,400~
- Inside source: true
*** True Line Result
-300,320,-260,400
** Processing line: ~ -300,320,-300,240~
- Inside source: true
*** True Line Result
-300,320,-300,240
** Processing line: ~ -300,240,-200,220~
- Inside source: true
*** True Line Result
-300,240,-200,220
** Processing line: ~ -200,220,-200,160~
- Inside source: true
*** True Line Result
-200,220,-200,160
** Processing line: ~ -200,160,-100,140~
- Inside source: true
*** True Line Result
-200,160,-100,140
** Processing line: ~ -100,140,0,120~
- Inside source: true
*** True Line Result
-100,140,0,120
** Processing line: ~ 0,120,60,120~
- Inside source: true
*** True Line Result
0,120,60,120
** Processing line: ~ 60,120,180,120~
- Inside source: true
*** True Line Result
60,120,180,120
** Processing line: ~ 180,120,300,120~
- Inside source: true
*** True Line Result
180,120,300,120
** Processing line: ~ 300,120,420,140~
- Inside source: true
*** True Line Result
300,120,420,140
** Processing line: ~ 420,140,580,180~
- Inside source: true
*** True Line Result
420,140,580,180
** Processing line: ~ 580,180,760,180~
- Inside source: true
*** True Line Result
580,180,760,180
** Processing line: ~ 760,180,900,180~
- Inside source: true
*** True Line Result
760,180,900,180
** Processing line: ~ 960,180,1100,180~
- Inside source: true
*** True Line Result
960,180,1100,180
** Processing line: ~ 1100,180,1340,200~
- Inside source: true
*** True Line Result
1100,180,1340,200
** Processing line: ~ 1340,200,1580,200~
- Inside source: true
*** True Line Result
1340,200,1580,200
** Processing line: ~ 1580,200,1720,180~
- Inside source: true
*** True Line Result
1580,200,1720,180
** Processing line: ~ 1720,180,2000,140~
- Inside source: true
*** True Line Result
1720,180,2000,140
** Processing line: ~ 2000,140,2240,140~
- Inside source: true
*** True Line Result
2000,140,2240,140
** Processing line: ~ 2240,140,2480,140~
- Inside source: true
*** True Line Result
2240,140,2480,140
** Processing line: ~ 2520,140,2800,160~
- Inside source: true
*** True Line Result
2520,140,2800,160
** Processing line: ~ 2800,160,3000,160~
- Inside source: true
*** True Line Result
2800,160,3000,160
** Processing line: ~ 3000,160,3140,160~
- Inside source: true
*** True Line Result
3000,160,3140,160
** Processing line: ~ 3140,260,3140,160~
- Inside source: true
*** True Line Result
3140,260,3140,160
** Processing line: ~ 3140,260,3140,380~
- Inside source: true
*** True Line Result
3140,260,3140,380
** Processing line: ~ 3080,500,3140,380~
- Inside source: true
*** True Line Result
3080,500,3140,380
** Processing line: ~ 3080,620,3080,500~
- Inside source: true
*** True Line Result
3080,620,3080,500
** Processing line: ~ 3080,620,3080,740~
- Inside source: true
*** True Line Result
3080,620,3080,740
** Processing line: ~ 3080,740,3080,840~
- Inside source: true
*** True Line Result
3080,740,3080,840
** Processing line: ~ 3080,960,3080,840~
- Inside source: true
*** True Line Result
3080,960,3080,840
** Processing line: ~ 3080,1080,3080,960~
- Inside source: true
*** True Line Result
3080,1080,3080,960
** Processing line: ~ 3080,1080,3080,1200~
- Inside source: true
*** True Line Result
3080,1080,3080,1200
** Processing line: ~ 3080,1200,3080,1340~
- Inside source: true
*** True Line Result
3080,1200,3080,1340
** Processing line: ~ 3080,1340,3080,1460~
- Inside source: true
*** True Line Result
3080,1340,3080,1460
** Processing line: ~ 3080,1580,3080,1460~
- Inside source: true
*** True Line Result
3080,1580,3080,1460
** Processing line: ~ 3080,1700,3080,1580~
- Inside source: true
*** True Line Result
3080,1700,3080,1580
** Processing line: ~ 3080,1700,3080,1760~
- Inside source: true
*** True Line Result
3080,1700,3080,1760
** Processing line: ~ 3080,1760,3200,1760~
- Inside source: true
*** True Line Result
3080,1760,3200,1760
** Processing line: ~ 3200,1760,3320,1760~
- Inside source: true
*** True Line Result
3200,1760,3320,1760
** Processing line: ~ 3320,1760,3520,1760~
- Inside source: true
*** True Line Result
3320,1760,3520,1760
** Processing line: ~ 3520,1760,3680,1740~
- Inside source: true
*** True Line Result
3520,1760,3680,1740
** Processing line: ~ 3680,1740,3780,1700~
- Inside source: true
*** True Line Result
3680,1740,3780,1700
** Processing line: ~ 3780,1700,3840,1620~
- Inside source: true
*** True Line Result
3780,1700,3840,1620
** Processing line: ~ 3840,1620,3840,1520~
- Inside source: true
*** True Line Result
3840,1620,3840,1520
** Processing line: ~ 3840,1520,3840,1420~
- Inside source: true
*** True Line Result
3840,1520,3840,1420
** Processing line: ~ 3840,1320,3840,1420~
- Inside source: true
*** True Line Result
3840,1320,3840,1420
** Processing line: ~ 3840,1120,3840,1320~
- Inside source: true
*** True Line Result
3840,1120,3840,1320
** Processing line: ~ 3840,1120,3840,940~
- Inside source: true
*** True Line Result
3840,1120,3840,940
** Processing line: ~ 3840,940,3840,760~
- Inside source: true
*** True Line Result
3840,940,3840,760
** Processing line: ~ 3780,600,3840,760~
- Inside source: true
*** True Line Result
3780,600,3840,760
** Processing line: ~ 3780,600,3780,440~
- Inside source: true
*** True Line Result
3780,600,3780,440
** Processing line: ~ 3780,320,3780,440~
- Inside source: true
*** True Line Result
3780,320,3780,440
** Processing line: ~ 3780,320,3780,160~
- Inside source: true
*** True Line Result
3780,320,3780,160
** Processing line: ~ 3780,60,3780,160~
- Inside source: true
*** True Line Result
3780,60,3780,160
** Processing line: ~ 3780,60,4020,60~
- Inside source: true
*** True Line Result
3780,60,4020,60
** Processing line: ~ 4020,60,4260,40~
- Inside source: true
*** True Line Result
4020,60,4260,40
** Processing line: ~ 4260,40,4500,40~
- Inside source: true
*** True Line Result
4260,40,4500,40
** Processing line: ~ 4500,40,4740,40~
- Inside source: true
*** True Line Result
4500,40,4740,40
** Processing line: ~ 4740,40,4840,20~
- Inside source: true
*** True Line Result
4740,40,4840,20
** Processing line: ~ 4840,20,4880,80~
- Inside source: true
*** True Line Result
4840,20,4880,80
** Processing line: ~ 4880,80,5080,40~
- Inside source: true
*** True Line Result
4880,80,5080,40
** Processing line: ~ 5080,40,5280,20~
- Inside source: true
*** True Line Result
5080,40,5280,20
** Processing line: ~ 5280,20,5500,0~
- Inside source: true
*** True Line Result
5280,20,5500,0
** Processing line: ~ 5500,0,5720,0~
- Inside source: true
*** True Line Result
5500,0,5720,0
** Processing line: ~ 5720,0,5940,60~
- Inside source: true
*** True Line Result
5720,0,5940,60
** Processing line: ~ 5940,60,6240,60~
- Inside source: true
*** True Line Result
5940,60,6240,60
** Processing line: ~ 6240,60,6540,20~
- Inside source: true
*** True Line Result
6240,60,6540,20
** Processing line: ~ 6540,20,6840,20~
- Inside source: true
*** True Line Result
6540,20,6840,20
** Processing line: ~ 6840,20,7040,0~
- Inside source: true
*** True Line Result
6840,20,7040,0
** Processing line: ~ 7040,0,7140,0~
- Inside source: true
*** True Line Result
7040,0,7140,0
** Processing line: ~ 7140,0,7400,20~
- Inside source: true
*** True Line Result
7140,0,7400,20
** Processing line: ~ 7400,20,7680,0~
- Inside source: true
*** True Line Result
7400,20,7680,0
** Processing line: ~ 7680,0,7940,0~
- Inside source: true
*** True Line Result
7680,0,7940,0
** Processing line: ~ 7940,0,8200,-20~
- Inside source: true
*** True Line Result
7940,0,8200,-20
** Processing line: ~ 8200,-20,8360,20~
- Inside source: true
*** True Line Result
8200,-20,8360,20
** Processing line: ~ 8360,20,8560,-40~
- Inside source: true
*** True Line Result
8360,20,8560,-40
** Processing line: ~ 8560,-40,8760,0~
- Inside source: true
*** True Line Result
8560,-40,8760,0
** Processing line: ~ 8760,0,8880,40~
- Inside source: true
*** True Line Result
8760,0,8880,40
** Processing line: ~ 8880,120,8880,40~
- Inside source: true
*** True Line Result
8880,120,8880,40
** Processing line: ~ 8840,220,8840,120~
- Inside source: true
*** True Line Result
8840,220,8840,120
** Processing line: ~ 8620,240,8840,220~
- Inside source: true
*** True Line Result
8620,240,8840,220
** Processing line: ~ 8420,260,8620,240~
- Inside source: true
*** True Line Result
8420,260,8620,240
** Processing line: ~ 8200,280,8420,260~
- Inside source: true
*** True Line Result
8200,280,8420,260
** Processing line: ~ 7940,280,8200,280~
- Inside source: true
*** True Line Result
7940,280,8200,280
** Processing line: ~ 7760,240,7940,280~
- Inside source: true
*** True Line Result
7760,240,7940,280
** Processing line: ~ 7560,220,7760,240~
- Inside source: true
*** True Line Result
7560,220,7760,240
** Processing line: ~ 7360,280,7560,220~
- Inside source: true
*** True Line Result
7360,280,7560,220
** Processing line: ~ 7140,260,7360,280~
- Inside source: true
*** True Line Result
7140,260,7360,280
** Processing line: ~ 6940,240,7140,260~
- Inside source: true
*** True Line Result
6940,240,7140,260
** Processing line: ~ 6720,220,6940,240~
- Inside source: true
*** True Line Result
6720,220,6940,240
** Processing line: ~ 6480,220,6720,220~
- Inside source: true
*** True Line Result
6480,220,6720,220
** Processing line: ~ 6360,300,6480,220~
- Inside source: true
*** True Line Result
6360,300,6480,220
** Processing line: ~ 6240,300,6360,300~
- Inside source: true
*** True Line Result
6240,300,6360,300
** Processing line: ~ 6200,500,6240,300~
- Inside source: true
*** True Line Result
6200,500,6240,300
** Processing line: ~ 6200,500,6360,540~
- Inside source: true
*** True Line Result
6200,500,6360,540
** Processing line: ~ 6360,540,6540,520~
- Inside source: true
*** True Line Result
6360,540,6540,520
** Processing line: ~ 6540,520,6720,480~
- Inside source: true
*** True Line Result
6540,520,6720,480
** Processing line: ~ 6720,480,6880,460~
- Inside source: true
*** True Line Result
6720,480,6880,460
** Processing line: ~ 6880,460,7080,500~
- Inside source: true
*** True Line Result
6880,460,7080,500
** Processing line: ~ 7080,500,7320,500~
- Inside source: true
*** True Line Result
7080,500,7320,500
** Processing line: ~ 7320,500,7680,500~
- Inside source: true
*** True Line Result
7320,500,7680,500
** Processing line: ~ 7680,620,7680,500~
- Inside source: true
*** True Line Result
7680,620,7680,500
** Processing line: ~ 7520,640,7680,620~
- Inside source: true
*** True Line Result
7520,640,7680,620
** Processing line: ~ 7360,640,7520,640~
- Inside source: true
*** True Line Result
7360,640,7520,640
** Processing line: ~ 7200,640,7360,640~
- Inside source: true
*** True Line Result
7200,640,7360,640
** Processing line: ~ 7040,660,7200,640~
- Inside source: true
*** True Line Result
7040,660,7200,640
** Processing line: ~ 6880,720,7040,660~
- Inside source: true
*** True Line Result
6880,720,7040,660
** Processing line: ~ 6720,700,6880,720~
- Inside source: true
*** True Line Result
6720,700,6880,720
** Processing line: ~ 6540,700,6720,700~
- Inside source: true
*** True Line Result
6540,700,6720,700
** Processing line: ~ 6420,760,6540,700~
- Inside source: true
*** True Line Result
6420,760,6540,700
** Processing line: ~ 6280,740,6420,760~
- Inside source: true
*** True Line Result
6280,740,6420,760
** Processing line: ~ 6240,760,6280,740~
- Inside source: true
*** True Line Result
6240,760,6280,740
** Processing line: ~ 6200,920,6240,760~
- Inside source: true
*** True Line Result
6200,920,6240,760
** Processing line: ~ 6200,920,6360,960~
- Inside source: true
*** True Line Result
6200,920,6360,960
** Processing line: ~ 6360,960,6540,960~
- Inside source: true
*** True Line Result
6360,960,6540,960
** Processing line: ~ 6540,960,6720,960~
- Inside source: true
*** True Line Result
6540,960,6720,960
** Processing line: ~ 6720,960,6760,980~
- Inside source: true
*** True Line Result
6720,960,6760,980
** Processing line: ~ 6760,980,6880,940~
- Inside source: true
*** True Line Result
6760,980,6880,940
** Processing line: ~ 6880,940,7080,940~
- Inside source: true
*** True Line Result
6880,940,7080,940
** Processing line: ~ 7080,940,7280,940~
- Inside source: true
*** True Line Result
7080,940,7280,940
** Processing line: ~ 7280,940,7520,920~
- Inside source: true
*** True Line Result
7280,940,7520,920
** Processing line: ~ 7520,920,7760,900~
- Inside source: true
*** True Line Result
7520,920,7760,900
** Processing line: ~ 7760,900,7980,860~
- Inside source: true
*** True Line Result
7760,900,7980,860
** Processing line: ~ 7980,860,8100,880~
- Inside source: true
*** True Line Result
7980,860,8100,880
** Processing line: ~ 8100,880,8280,900~
- Inside source: true
*** True Line Result
8100,880,8280,900
** Processing line: ~ 8280,900,8500,820~
- Inside source: true
*** True Line Result
8280,900,8500,820
** Processing line: ~ 8500,820,8700,820~
- Inside source: true
*** True Line Result
8500,820,8700,820
** Processing line: ~ 8700,820,8760,840~
- Inside source: true
*** True Line Result
8700,820,8760,840
** Processing line: ~ 8760,960,8760,840~
- Inside source: true
*** True Line Result
8760,960,8760,840
** Processing line: ~ 8700,1040,8760,960~
- Inside source: true
*** True Line Result
8700,1040,8760,960
** Processing line: ~ 8560,1060,8700,1040~
- Inside source: true
*** True Line Result
8560,1060,8700,1040
** Processing line: ~ 8460,1080,8560,1060~
- Inside source: true
*** True Line Result
8460,1080,8560,1060
** Processing line: ~ 8360,1040,8460,1080~
- Inside source: true
*** True Line Result
8360,1040,8460,1080
** Processing line: ~ 8280,1080,8360,1040~
- Inside source: true
*** True Line Result
8280,1080,8360,1040
** Processing line: ~ 8160,1120,8280,1080~
- Inside source: true
*** True Line Result
8160,1120,8280,1080
** Processing line: ~ 8040,1120,8160,1120~
- Inside source: true
*** True Line Result
8040,1120,8160,1120
** Processing line: ~ 7940,1100,8040,1120~
- Inside source: true
*** True Line Result
7940,1100,8040,1120
** Processing line: ~ 7800,1120,7940,1100~
- Inside source: true
*** True Line Result
7800,1120,7940,1100
** Processing line: ~ 7680,1120,7800,1120~
- Inside source: true
*** True Line Result
7680,1120,7800,1120
** Processing line: ~ 7520,1100,7680,1120~
- Inside source: true
*** True Line Result
7520,1100,7680,1120
** Processing line: ~ 7360,1100,7520,1100~
- Inside source: true
*** True Line Result
7360,1100,7520,1100
** Processing line: ~ 7200,1120,7360,1100~
- Inside source: true
*** True Line Result
7200,1120,7360,1100
** Processing line: ~ 7040,1180,7200,1120~
- Inside source: true
*** True Line Result
7040,1180,7200,1120
** Processing line: ~ 6880,1160,7040,1180~
- Inside source: true
*** True Line Result
6880,1160,7040,1180
** Processing line: ~ 6720,1160,6880,1160~
- Inside source: true
*** True Line Result
6720,1160,6880,1160
** Processing line: ~ 6540,1160,6720,1160~
- Inside source: true
*** True Line Result
6540,1160,6720,1160
** Processing line: ~ 6360,1160,6540,1160~
- Inside source: true
*** True Line Result
6360,1160,6540,1160
** Processing line: ~ 6200,1160,6360,1160~
- Inside source: true
*** True Line Result
6200,1160,6360,1160
** Processing line: ~ 6040,1220,6200,1160~
- Inside source: true
*** True Line Result
6040,1220,6200,1160
** Processing line: ~ 6040,1220,6040,1400~
- Inside source: true
*** True Line Result
6040,1220,6040,1400
** Processing line: ~ 6040,1400,6200,1440~
- Inside source: true
*** True Line Result
6040,1400,6200,1440
** Processing line: ~ 6200,1440,6320,1440~
- Inside source: true
*** True Line Result
6200,1440,6320,1440
** Processing line: ~ 6320,1440,6440,1440~
- Inside source: true
*** True Line Result
6320,1440,6440,1440
** Processing line: ~ 6600,1440,6760,1440~
- Inside source: true
*** True Line Result
6600,1440,6760,1440
** Processing line: ~ 6760,1440,6940,1420~
- Inside source: true
*** True Line Result
6760,1440,6940,1420
** Processing line: ~ 6440,1440,6600,1440~
- Inside source: true
*** True Line Result
6440,1440,6600,1440
** Processing line: ~ 6940,1420,7280,1400~
- Inside source: true
*** True Line Result
6940,1420,7280,1400
** Processing line: ~ 7280,1400,7560,1400~
- Inside source: true
*** True Line Result
7280,1400,7560,1400
** Processing line: ~ 7560,1400,7760,1400~
- Inside source: true
*** True Line Result
7560,1400,7760,1400
** Processing line: ~ 7760,1400,7940,1360~
- Inside source: true
*** True Line Result
7760,1400,7940,1360
** Processing line: ~ 7940,1360,8100,1380~
- Inside source: true
*** True Line Result
7940,1360,8100,1380
** Processing line: ~ 8100,1380,8280,1340~
- Inside source: true
*** True Line Result
8100,1380,8280,1340
** Processing line: ~ 8280,1340,8460,1320~
- Inside source: true
*** True Line Result
8280,1340,8460,1320
** Processing line: ~ 8660,1300,8760,1360~
- Inside source: true
*** True Line Result
8660,1300,8760,1360
** Processing line: ~ 8460,1320,8660,1300~
- Inside source: true
*** True Line Result
8460,1320,8660,1300
** Processing line: ~ 8760,1360,8800,1500~
- Inside source: true
*** True Line Result
8760,1360,8800,1500
** Processing line: ~ 8800,1660,8800,1500~
- Inside source: true
*** True Line Result
8800,1660,8800,1500
** Processing line: ~ 8800,1660,8800,1820~
- Inside source: true
*** True Line Result
8800,1660,8800,1820
** Processing line: ~ 8700,1840,8800,1820~
- Inside source: true
*** True Line Result
8700,1840,8800,1820
** Processing line: ~ 8620,1860,8700,1840~
- Inside source: true
*** True Line Result
8620,1860,8700,1840
** Processing line: ~ 8560,1800,8620,1860~
- Inside source: true
*** True Line Result
8560,1800,8620,1860
** Processing line: ~ 8560,1800,8620,1680~
- Inside source: true
*** True Line Result
8560,1800,8620,1680
** Processing line: ~ 8500,1640,8620,1680~
- Inside source: true
*** True Line Result
8500,1640,8620,1680
** Processing line: ~ 8420,1680,8500,1640~
- Inside source: true
*** True Line Result
8420,1680,8500,1640
** Processing line: ~ 8280,1680,8420,1680~
- Inside source: true
*** True Line Result
8280,1680,8420,1680
** Processing line: ~ 8160,1680,8280,1680~
- Inside source: true
*** True Line Result
8160,1680,8280,1680
** Processing line: ~ 7900,1680,8160,1680~
- Inside source: true
*** True Line Result
7900,1680,8160,1680
** Processing line: ~ 7680,1680,7900,1680~
- Inside source: true
*** True Line Result
7680,1680,7900,1680
** Processing line: ~ 7400,1660,7680,1680~
- Inside source: true
*** True Line Result
7400,1660,7680,1680
** Processing line: ~ 7140,1680,7400,1660~
- Inside source: true
*** True Line Result
7140,1680,7400,1660
** Processing line: ~ 6880,1640,7140,1680~
- Inside source: true
*** True Line Result
6880,1640,7140,1680
** Processing line: ~ 6040,1820,6320,1780~
- Inside source: true
*** True Line Result
6040,1820,6320,1780
** Processing line: ~ 5900,1840,6040,1820~
- Inside source: true
*** True Line Result
5900,1840,6040,1820
** Processing line: ~ 6640,1700,6880,1640~
- Inside source: true
*** True Line Result
6640,1700,6880,1640
** Processing line: ~ 6320,1780,6640,1700~
- Inside source: true
*** True Line Result
6320,1780,6640,1700
** Processing line: ~ 5840,2040,5900,1840~
- Inside source: true
*** True Line Result
5840,2040,5900,1840
** Processing line: ~ 5840,2040,5840,2220~
- Inside source: true
*** True Line Result
5840,2040,5840,2220
** Processing line: ~ 5840,2220,5840,2320~
- Inside source: true
*** True Line Result
5840,2220,5840,2320
** Processing line: ~ 5840,2460,5840,2320~
- Inside source: true
*** True Line Result
5840,2460,5840,2320
** Processing line: ~ 5840,2560,5840,2460~
- Inside source: true
*** True Line Result
5840,2560,5840,2460
** Processing line: ~ 5840,2560,5960,2620~
- Inside source: true
*** True Line Result
5840,2560,5960,2620
** Processing line: ~ 5960,2620,6200,2620~
- Inside source: true
*** True Line Result
5960,2620,6200,2620
** Processing line: ~ 6200,2620,6380,2600~
- Inside source: true
*** True Line Result
6200,2620,6380,2600
** Processing line: ~ 6380,2600,6600,2580~
- Inside source: true
*** True Line Result
6380,2600,6600,2580
** Processing line: ~ 6600,2580,6800,2600~
- Inside source: true
*** True Line Result
6600,2580,6800,2600
** Processing line: ~ 6800,2600,7040,2580~
- Inside source: true
*** True Line Result
6800,2600,7040,2580
** Processing line: ~ 7040,2580,7280,2580~
- Inside source: true
*** True Line Result
7040,2580,7280,2580
** Processing line: ~ 7280,2580,7480,2560~
- Inside source: true
*** True Line Result
7280,2580,7480,2560
** Processing line: ~ 7760,2540,7980,2520~
- Inside source: true
*** True Line Result
7760,2540,7980,2520
** Processing line: ~ 7980,2520,8160,2500~
- Inside source: true
*** True Line Result
7980,2520,8160,2500
** Processing line: ~ 7480,2560,7760,2540~
- Inside source: true
*** True Line Result
7480,2560,7760,2540
** Processing line: ~ 8160,2500,8160,2420~
- Inside source: true
*** True Line Result
8160,2500,8160,2420
** Processing line: ~ 8160,2420,8160,2320~
- Inside source: true
*** True Line Result
8160,2420,8160,2320
** Processing line: ~ 8160,2180,8160,2320~
- Inside source: true
*** True Line Result
8160,2180,8160,2320
** Processing line: ~ 7980,2160,8160,2180~
- Inside source: true
*** True Line Result
7980,2160,8160,2180
** Processing line: ~ 7800,2180,7980,2160~
- Inside source: true
*** True Line Result
7800,2180,7980,2160
** Processing line: ~ 7600,2200,7800,2180~
- Inside source: true
*** True Line Result
7600,2200,7800,2180
** Processing line: ~ 7400,2200,7600,2200~
- Inside source: true
*** True Line Result
7400,2200,7600,2200
** Processing line: ~ 6960,2200,7200,2200~
- Inside source: true
*** True Line Result
6960,2200,7200,2200
** Processing line: ~ 7200,2200,7400,2200~
- Inside source: true
*** True Line Result
7200,2200,7400,2200
** Processing line: ~ 6720,2200,6960,2200~
- Inside source: true
*** True Line Result
6720,2200,6960,2200
** Processing line: ~ 6540,2180,6720,2200~
- Inside source: true
*** True Line Result
6540,2180,6720,2200
** Processing line: ~ 6320,2200,6540,2180~
- Inside source: true
*** True Line Result
6320,2200,6540,2180
** Processing line: ~ 6240,2160,6320,2200~
- Inside source: true
*** True Line Result
6240,2160,6320,2200
** Processing line: ~ 6240,2160,6240,2040~
- Inside source: true
*** True Line Result
6240,2160,6240,2040
** Processing line: ~ 6240,2040,6240,1940~
- Inside source: true
*** True Line Result
6240,2040,6240,1940
** Processing line: ~ 6240,1940,6440,1940~
- Inside source: true
*** True Line Result
6240,1940,6440,1940
** Processing line: ~ 6440,1940,6720,1940~
- Inside source: true
*** True Line Result
6440,1940,6720,1940
** Processing line: ~ 6720,1940,6940,1920~
- Inside source: true
*** True Line Result
6720,1940,6940,1920
** Processing line: ~ 7520,1920,7760,1920~
- Inside source: true
*** True Line Result
7520,1920,7760,1920
** Processing line: ~ 6940,1920,7280,1920~
- Inside source: true
*** True Line Result
6940,1920,7280,1920
** Processing line: ~ 7280,1920,7520,1920~
- Inside source: true
*** True Line Result
7280,1920,7520,1920
** Processing line: ~ 7760,1920,8100,1900~
- Inside source: true
*** True Line Result
7760,1920,8100,1900
** Processing line: ~ 8100,1900,8420,1900~
- Inside source: true
*** True Line Result
8100,1900,8420,1900
** Processing line: ~ 8420,1900,8460,1940~
- Inside source: true
*** True Line Result
8420,1900,8460,1940
** Processing line: ~ 8460,2120,8460,1940~
- Inside source: true
*** True Line Result
8460,2120,8460,1940
** Processing line: ~ 8460,2280,8460,2120~
- Inside source: true
*** True Line Result
8460,2280,8460,2120
** Processing line: ~ 8460,2280,8560,2420~
- Inside source: true
*** True Line Result
8460,2280,8560,2420
** Processing line: ~ 8560,2420,8660,2380~
- Inside source: true
*** True Line Result
8560,2420,8660,2380
** Processing line: ~ 8660,2380,8800,2340~
- Inside source: true
*** True Line Result
8660,2380,8800,2340
** Processing line: ~ 8800,2340,8840,2400~
- Inside source: true
*** True Line Result
8800,2340,8840,2400
** Processing line: ~ 8840,2520,8840,2400~
- Inside source: true
*** True Line Result
8840,2520,8840,2400
** Processing line: ~ 8800,2620,8840,2520~
- Inside source: true
*** True Line Result
8800,2620,8840,2520
** Processing line: ~ 8800,2740,8800,2620~
- Inside source: true
*** True Line Result
8800,2740,8800,2620
** Processing line: ~ 8800,2860,8800,2740~
- Inside source: true
*** True Line Result
8800,2860,8800,2740
** Processing line: ~ 8800,2940,8800,2860~
- Inside source: true
*** True Line Result
8800,2940,8800,2860
** Processing line: ~ 8760,2980,8800,2940~
- Inside source: true
*** True Line Result
8760,2980,8800,2940
** Processing line: ~ 8660,2980,8760,2980~
- Inside source: true
*** True Line Result
8660,2980,8760,2980
** Processing line: ~ 8620,2960,8660,2980~
- Inside source: true
*** True Line Result
8620,2960,8660,2980
** Processing line: ~ 8560,2880,8620,2960~
- Inside source: true
*** True Line Result
8560,2880,8620,2960
** Processing line: ~ 8560,2880,8560,2780~
- Inside source: true
*** True Line Result
8560,2880,8560,2780
** Processing line: ~ 8500,2740,8560,2780~
- Inside source: true
*** True Line Result
8500,2740,8560,2780
** Processing line: ~ 8420,2760,8500,2740~
- Inside source: true
*** True Line Result
8420,2760,8500,2740
** Processing line: ~ 8420,2840,8420,2760~
- Inside source: true
*** True Line Result
8420,2840,8420,2760
** Processing line: ~ 8420,2840,8420,2940~
- Inside source: true
*** True Line Result
8420,2840,8420,2940
** Processing line: ~ 8420,3040,8420,2940~
- Inside source: true
*** True Line Result
8420,3040,8420,2940
** Processing line: ~ 8420,3160,8420,3040~
- Inside source: true
*** True Line Result
8420,3160,8420,3040
** Processing line: ~ 8420,3280,8420,3380~
- Inside source: true
*** True Line Result
8420,3280,8420,3380
** Processing line: ~ 8420,3280,8420,3160~
- Inside source: true
*** True Line Result
8420,3280,8420,3160
** Processing line: ~ 8420,3380,8620,3460~
- Inside source: true
*** True Line Result
8420,3380,8620,3460
** Processing line: ~ 8620,3460,8760,3460~
- Inside source: true
*** True Line Result
8620,3460,8760,3460
** Processing line: ~ 8760,3460,8840,3400~
- Inside source: true
*** True Line Result
8760,3460,8840,3400
** Processing line: ~ 8840,3400,8960,3400~
- Inside source: true
*** True Line Result
8840,3400,8960,3400
** Processing line: ~ 8960,3400,9000,3500~
- Inside source: true
*** True Line Result
8960,3400,9000,3500
** Processing line: ~ 9000,3700,9000,3500~
- Inside source: true
*** True Line Result
9000,3700,9000,3500
** Processing line: ~ 9000,3900,9000,3700~
- Inside source: true
*** True Line Result
9000,3900,9000,3700
** Processing line: ~ 9000,4080,9000,3900~
- Inside source: true
*** True Line Result
9000,4080,9000,3900
** Processing line: ~ 9000,4280,9000,4080~
- Inside source: true
*** True Line Result
9000,4280,9000,4080
** Processing line: ~ 9000,4500,9000,4280~
- Inside source: true
*** True Line Result
9000,4500,9000,4280
** Processing line: ~ 9000,4620,9000,4500~
- Inside source: true
*** True Line Result
9000,4620,9000,4500
** Processing line: ~ 9000,4780,9000,4620~
- Inside source: true
*** True Line Result
9000,4780,9000,4620
** Processing line: ~ 9000,4780,9000,4960~
- Inside source: true
*** True Line Result
9000,4780,9000,4960
** Processing line: ~ 9000,5120,9000,4960~
- Inside source: true
*** True Line Result
9000,5120,9000,4960
** Processing line: ~ 9000,5120,9000,5300~
- Inside source: true
*** True Line Result
9000,5120,9000,5300
** Processing line: ~ 8960,5460,9000,5300~
- Inside source: true
*** True Line Result
8960,5460,9000,5300
** Processing line: ~ 8920,5620,8960,5460~
- Inside source: true
*** True Line Result
8920,5620,8960,5460
** Processing line: ~ 8920,5620,8920,5800~
- Inside source: true
*** True Line Result
8920,5620,8920,5800
** Processing line: ~ 8920,5800,8920,5960~
- Inside source: true
*** True Line Result
8920,5800,8920,5960
** Processing line: ~ 8920,5960,8920,6120~
- Inside source: true
*** True Line Result
8920,5960,8920,6120
** Processing line: ~ 8920,6120,8960,6300~
- Inside source: true
*** True Line Result
8920,6120,8960,6300
** Processing line: ~ 8960,6300,8960,6480~
- Inside source: true
*** True Line Result
8960,6300,8960,6480
** Processing line: ~ 8960,6660,8960,6480~
- Inside source: true
*** True Line Result
8960,6660,8960,6480
** Processing line: ~ 8960,6860,8960,6660~
- Inside source: true
*** True Line Result
8960,6860,8960,6660
** Processing line: ~ 8960,7040,8960,6860~
- Inside source: true
*** True Line Result
8960,7040,8960,6860
** Processing line: ~ 8920,7420,8920,7220~
- Inside source: true
*** True Line Result
8920,7420,8920,7220
** Processing line: ~ 8920,7420,8960,7620~
- Inside source: true
*** True Line Result
8920,7420,8960,7620
** Processing line: ~ 8960,7620,8960,7800~
- Inside source: true
*** True Line Result
8960,7620,8960,7800
** Processing line: ~ 8960,7800,8960,8000~
- Inside source: true
*** True Line Result
8960,7800,8960,8000
** Processing line: ~ 8960,8000,8960,8180~
- Inside source: true
*** True Line Result
8960,8000,8960,8180
** Processing line: ~ 8960,8180,8960,8380~
- Inside source: true
*** True Line Result
8960,8180,8960,8380
** Processing line: ~ 8960,8580,8960,8380~
- Inside source: true
*** True Line Result
8960,8580,8960,8380
** Processing line: ~ 8920,8800,8960,8580~
- Inside source: true
*** True Line Result
8920,8800,8960,8580
** Processing line: ~ 8880,9000,8920,8800~
- Inside source: true
*** True Line Result
8880,9000,8920,8800
** Processing line: ~ 8840,9180,8880,9000~
- Inside source: true
*** True Line Result
8840,9180,8880,9000
** Processing line: ~ 8800,9220,8840,9180~
- Inside source: true
*** True Line Result
8800,9220,8840,9180
** Processing line: ~ 8800,9220,8840,9340~
- Inside source: true
*** True Line Result
8800,9220,8840,9340
** Processing line: ~ 8760,9380,8840,9340~
- Inside source: true
*** True Line Result
8760,9380,8840,9340
** Processing line: ~ 8560,9340,8760,9380~
- Inside source: true
*** True Line Result
8560,9340,8760,9380
** Processing line: ~ 8360,9360,8560,9340~
- Inside source: true
*** True Line Result
8360,9360,8560,9340
** Processing line: ~ 8160,9360,8360,9360~
- Inside source: true
*** True Line Result
8160,9360,8360,9360
** Processing line: ~ 8040,9340,8160,9360~
- Inside source: true
*** True Line Result
8040,9340,8160,9360
** Processing line: ~ 7860,9360,8040,9340~
- Inside source: true
*** True Line Result
7860,9360,8040,9340
** Processing line: ~ 7680,9360,7860,9360~
- Inside source: true
*** True Line Result
7680,9360,7860,9360
** Processing line: ~ 7520,9360,7680,9360~
- Inside source: true
*** True Line Result
7520,9360,7680,9360
** Processing line: ~ 7420,9260,7520,9360~
- Inside source: true
*** True Line Result
7420,9260,7520,9360
** Processing line: ~ 7400,9080,7420,9260~
- Inside source: true
*** True Line Result
7400,9080,7420,9260
** Processing line: ~ 7400,9080,7420,8860~
- Inside source: true
*** True Line Result
7400,9080,7420,8860
** Processing line: ~ 7420,8860,7440,8720~
- Inside source: true
*** True Line Result
7420,8860,7440,8720
** Processing line: ~ 7440,8720,7480,8660~
- Inside source: true
*** True Line Result
7440,8720,7480,8660
** Processing line: ~ 7480,8660,7520,8540~
- Inside source: true
*** True Line Result
7480,8660,7520,8540
** Processing line: ~ 7520,8540,7600,8460~
- Inside source: true
*** True Line Result
7520,8540,7600,8460
** Processing line: ~ 7600,8460,7800,8480~
- Inside source: true
*** True Line Result
7600,8460,7800,8480
** Processing line: ~ 7800,8480,8040,8480~
- Inside source: true
*** True Line Result
7800,8480,8040,8480
** Processing line: ~ 8040,8480,8280,8480~
- Inside source: true
*** True Line Result
8040,8480,8280,8480
** Processing line: ~ 8280,8480,8500,8460~
- Inside source: true
*** True Line Result
8280,8480,8500,8460
** Processing line: ~ 8500,8460,8620,8440~
- Inside source: true
*** True Line Result
8500,8460,8620,8440
** Processing line: ~ 8620,8440,8660,8340~
- Inside source: true
*** True Line Result
8620,8440,8660,8340
** Processing line: ~ 8660,8340,8660,8220~
- Inside source: true
*** True Line Result
8660,8340,8660,8220
** Processing line: ~ 8660,8220,8700,8080~
- Inside source: true
*** True Line Result
8660,8220,8700,8080
** Processing line: ~ 8700,8080,8700,7920~
- Inside source: true
*** True Line Result
8700,8080,8700,7920
** Processing line: ~ 8700,7920,8700,7760~
- Inside source: true
*** True Line Result
8700,7920,8700,7760
** Processing line: ~ 8700,7760,8700,7620~
- Inside source: true
*** True Line Result
8700,7760,8700,7620
** Processing line: ~ 8700,7480,8700,7620~
- Inside source: true
*** True Line Result
8700,7480,8700,7620
** Processing line: ~ 8700,7480,8700,7320~
- Inside source: true
*** True Line Result
8700,7480,8700,7320
** Processing line: ~ 8700,7160,8700,7320~
- Inside source: true
*** True Line Result
8700,7160,8700,7320
** Processing line: ~ 8920,7220,8960,7040~
- Inside source: true
*** True Line Result
8920,7220,8960,7040
** Processing line: ~ 8660,7040,8700,7160~
- Inside source: true
*** True Line Result
8660,7040,8700,7160
** Processing line: ~ 8660,7040,8700,6880~
- Inside source: true
*** True Line Result
8660,7040,8700,6880
** Processing line: ~ 8660,6700,8700,6880~
- Inside source: true
*** True Line Result
8660,6700,8700,6880
** Processing line: ~ 8660,6700,8700,6580~
- Inside source: true
*** True Line Result
8660,6700,8700,6580
** Processing line: ~ 8700,6460,8700,6580~
- Inside source: true
*** True Line Result
8700,6460,8700,6580
** Processing line: ~ 8700,6460,8700,6320~
- Inside source: true
*** True Line Result
8700,6460,8700,6320
** Processing line: ~ 8700,6160,8700,6320~
- Inside source: true
*** True Line Result
8700,6160,8700,6320
** Processing line: ~ 8700,6160,8760,6020~
- Inside source: true
*** True Line Result
8700,6160,8760,6020
** Processing line: ~ 8760,6020,8760,5860~
- Inside source: true
*** True Line Result
8760,6020,8760,5860
** Processing line: ~ 8760,5860,8760,5700~
- Inside source: true
*** True Line Result
8760,5860,8760,5700
** Processing line: ~ 8760,5700,8760,5540~
- Inside source: true
*** True Line Result
8760,5700,8760,5540
** Processing line: ~ 8760,5540,8760,5360~
- Inside source: true
*** True Line Result
8760,5540,8760,5360
** Processing line: ~ 8760,5360,8760,5180~
- Inside source: true
*** True Line Result
8760,5360,8760,5180
** Processing line: ~ 8760,5000,8760,5180~
- Inside source: true
*** True Line Result
8760,5000,8760,5180
** Processing line: ~ 8700,4820,8760,5000~
- Inside source: true
*** True Line Result
8700,4820,8760,5000
** Processing line: ~ 8560,4740,8700,4820~
- Inside source: true
*** True Line Result
8560,4740,8700,4820
** Processing line: ~ 8420,4700,8560,4740~
- Inside source: true
*** True Line Result
8420,4700,8560,4740
** Processing line: ~ 8280,4700,8420,4700~
- Inside source: true
*** True Line Result
8280,4700,8420,4700
** Processing line: ~ 8100,4700,8280,4700~
- Inside source: true
*** True Line Result
8100,4700,8280,4700
** Processing line: ~ 7980,4700,8100,4700~
- Inside source: true
*** True Line Result
7980,4700,8100,4700
** Processing line: ~ 7820,4740,7980,4700~
- Inside source: true
*** True Line Result
7820,4740,7980,4700
** Processing line: ~ 7800,4920,7820,4740~
- Inside source: true
*** True Line Result
7800,4920,7820,4740
** Processing line: ~ 7800,4920,7900,4960~
- Inside source: true
*** True Line Result
7800,4920,7900,4960
** Processing line: ~ 7900,4960,8060,4980~
- Inside source: true
*** True Line Result
7900,4960,8060,4980
** Processing line: ~ 8060,4980,8220,5000~
- Inside source: true
*** True Line Result
8060,4980,8220,5000
** Processing line: ~ 8220,5000,8420,5040~
- Inside source: true
*** True Line Result
8220,5000,8420,5040
** Processing line: ~ 8420,5040,8460,5120~
- Inside source: true
*** True Line Result
8420,5040,8460,5120
** Processing line: ~ 8460,5180,8460,5120~
- Inside source: true
*** True Line Result
8460,5180,8460,5120
** Processing line: ~ 8360,5200,8460,5180~
- Inside source: true
*** True Line Result
8360,5200,8460,5180
** Processing line: ~ 8360,5280,8360,5200~
- Inside source: true
*** True Line Result
8360,5280,8360,5200
** Processing line: ~ 8160,5300,8360,5280~
- Inside source: true
*** True Line Result
8160,5300,8360,5280
** Processing line: ~ 8040,5260,8160,5300~
- Inside source: true
*** True Line Result
8040,5260,8160,5300
** Processing line: ~ 7860,5220,8040,5260~
- Inside source: true
*** True Line Result
7860,5220,8040,5260
** Processing line: ~ 7720,5160,7860,5220~
- Inside source: true
*** True Line Result
7720,5160,7860,5220
** Processing line: ~ 7640,5120,7720,5160~
- Inside source: true
*** True Line Result
7640,5120,7720,5160
** Processing line: ~ 7480,5120,7640,5120~
- Inside source: true
*** True Line Result
7480,5120,7640,5120
** Processing line: ~ 7240,5120,7480,5120~
- Inside source: true
*** True Line Result
7240,5120,7480,5120
** Processing line: ~ 7000,5120,7240,5120~
- Inside source: true
*** True Line Result
7000,5120,7240,5120
** Processing line: ~ 6800,5160,7000,5120~
- Inside source: true
*** True Line Result
6800,5160,7000,5120
** Processing line: ~ 6640,5220,6800,5160~
- Inside source: true
*** True Line Result
6640,5220,6800,5160
** Processing line: ~ 6600,5360,6640,5220~
- Inside source: true
*** True Line Result
6600,5360,6640,5220
** Processing line: ~ 6600,5460,6600,5360~
- Inside source: true
*** True Line Result
6600,5460,6600,5360
** Processing line: ~ 6480,5520,6600,5460~
- Inside source: true
*** True Line Result
6480,5520,6600,5460
** Processing line: ~ 6240,5540,6480,5520~
- Inside source: true
*** True Line Result
6240,5540,6480,5520
** Processing line: ~ 5980,5540,6240,5540~
- Inside source: true
*** True Line Result
5980,5540,6240,5540
** Processing line: ~ 5740,5540,5980,5540~
- Inside source: true
*** True Line Result
5740,5540,5980,5540
** Processing line: ~ 5500,5520,5740,5540~
- Inside source: true
*** True Line Result
5500,5520,5740,5540
** Processing line: ~ 5400,5520,5500,5520~
- Inside source: true
*** True Line Result
5400,5520,5500,5520
** Processing line: ~ 5280,5540,5400,5520~
- Inside source: true
*** True Line Result
5280,5540,5400,5520
** Processing line: ~ 5080,5540,5280,5540~
- Inside source: true
*** True Line Result
5080,5540,5280,5540
** Processing line: ~ 4940,5540,5080,5540~
- Inside source: true
*** True Line Result
4940,5540,5080,5540
** Processing line: ~ 4760,5540,4940,5540~
- Inside source: true
*** True Line Result
4760,5540,4940,5540
** Processing line: ~ 4600,5540,4760,5540~
- Inside source: true
*** True Line Result
4600,5540,4760,5540
** Processing line: ~ 4440,5560,4600,5540~
- Inside source: true
*** True Line Result
4440,5560,4600,5540
** Processing line: ~ 4040,5580,4120,5520~
- Inside source: true
*** True Line Result
4040,5580,4120,5520
** Processing line: ~ 4260,5540,4440,5560~
- Inside source: true
*** True Line Result
4260,5540,4440,5560
** Processing line: ~ 4120,5520,4260,5540~
- Inside source: true
*** True Line Result
4120,5520,4260,5540
** Processing line: ~ 4020,5720,4040,5580~
- Inside source: true
*** True Line Result
4020,5720,4040,5580
** Processing line: ~ 4020,5840,4020,5720~
- Inside source: true
*** True Line Result
4020,5840,4020,5720
** Processing line: ~ 4020,5840,4080,5940~
- Inside source: true
*** True Line Result
4020,5840,4080,5940
** Processing line: ~ 4080,5940,4120,6040~
- Inside source: true
*** True Line Result
4080,5940,4120,6040
** Processing line: ~ 4120,6040,4200,6080~
- Inside source: true
*** True Line Result
4120,6040,4200,6080
** Processing line: ~ 4200,6080,4340,6080~
- Inside source: true
*** True Line Result
4200,6080,4340,6080
** Processing line: ~ 4340,6080,4500,6060~
- Inside source: true
*** True Line Result
4340,6080,4500,6060
** Processing line: ~ 4500,6060,4700,6060~
- Inside source: true
*** True Line Result
4500,6060,4700,6060
** Processing line: ~ 4700,6060,4880,6060~
- Inside source: true
*** True Line Result
4700,6060,4880,6060
** Processing line: ~ 4880,6060,5080,6060~
- Inside source: true
*** True Line Result
4880,6060,5080,6060
** Processing line: ~ 5080,6060,5280,6080~
- Inside source: true
*** True Line Result
5080,6060,5280,6080
** Processing line: ~ 5280,6080,5440,6100~
- Inside source: true
*** True Line Result
5280,6080,5440,6100
** Processing line: ~ 5440,6100,5660,6100~
- Inside source: true
*** True Line Result
5440,6100,5660,6100
** Processing line: ~ 5660,6100,5900,6080~
- Inside source: true
*** True Line Result
5660,6100,5900,6080
** Processing line: ~ 5900,6080,6120,6080~
- Inside source: true
*** True Line Result
5900,6080,6120,6080
** Processing line: ~ 6120,6080,6360,6080~
- Inside source: true
*** True Line Result
6120,6080,6360,6080
** Processing line: ~ 6360,6080,6480,6100~
- Inside source: true
*** True Line Result
6360,6080,6480,6100
** Processing line: ~ 6480,6100,6540,6060~
- Inside source: true
*** True Line Result
6480,6100,6540,6060
** Processing line: ~ 6540,6060,6720,6060~
- Inside source: true
*** True Line Result
6540,6060,6720,6060
** Processing line: ~ 6720,6060,6940,6060~
- Inside source: true
*** True Line Result
6720,6060,6940,6060
** Processing line: ~ 6940,6060,7140,6060~
- Inside source: true
*** True Line Result
6940,6060,7140,6060
** Processing line: ~ 7400,6060,7600,6060~
- Inside source: true
*** True Line Result
7400,6060,7600,6060
** Processing line: ~ 7140,6060,7400,6060~
- Inside source: true
*** True Line Result
7140,6060,7400,6060
** Processing line: ~ 7600,6060,7800,6060~
- Inside source: true
*** True Line Result
7600,6060,7800,6060
** Processing line: ~ 7800,6060,7860,6080~
- Inside source: true
*** True Line Result
7800,6060,7860,6080
** Processing line: ~ 7860,6080,8060,6080~
- Inside source: true
*** True Line Result
7860,6080,8060,6080
** Processing line: ~ 8060,6080,8220,6080~
- Inside source: true
*** True Line Result
8060,6080,8220,6080
** Processing line: ~ 8220,6080,8320,6140~
- Inside source: true
*** True Line Result
8220,6080,8320,6140
** Processing line: ~ 8320,6140,8360,6300~
- Inside source: true
*** True Line Result
8320,6140,8360,6300
** Processing line: ~ 8320,6460,8360,6300~
- Inside source: true
*** True Line Result
8320,6460,8360,6300
** Processing line: ~ 8320,6620,8320,6460~
- Inside source: true
*** True Line Result
8320,6620,8320,6460
** Processing line: ~ 8320,6800,8320,6620~
- Inside source: true
*** True Line Result
8320,6800,8320,6620
** Processing line: ~ 8320,6960,8320,6800~
- Inside source: true
*** True Line Result
8320,6960,8320,6800
** Processing line: ~ 8320,6960,8360,7120~
- Inside source: true
*** True Line Result
8320,6960,8360,7120
** Processing line: ~ 8320,7280,8360,7120~
- Inside source: true
*** True Line Result
8320,7280,8360,7120
** Processing line: ~ 8320,7440,8320,7280~
- Inside source: true
*** True Line Result
8320,7440,8320,7280
** Processing line: ~ 8320,7600,8320,7440~
- Inside source: true
*** True Line Result
8320,7600,8320,7440
** Processing line: ~ 8100,7580,8220,7600~
- Inside source: true
*** True Line Result
8100,7580,8220,7600
** Processing line: ~ 8220,7600,8320,7600~
- Inside source: true
*** True Line Result
8220,7600,8320,7600
** Processing line: ~ 7900,7560,8100,7580~
- Inside source: true
*** True Line Result
7900,7560,8100,7580
** Processing line: ~ 7680,7560,7900,7560~
- Inside source: true
*** True Line Result
7680,7560,7900,7560
** Processing line: ~ 7480,7580,7680,7560~
- Inside source: true
*** True Line Result
7480,7580,7680,7560
** Processing line: ~ 7280,7580,7480,7580~
- Inside source: true
*** True Line Result
7280,7580,7480,7580
** Processing line: ~ 7080,7580,7280,7580~
- Inside source: true
*** True Line Result
7080,7580,7280,7580
** Processing line: ~ 7000,7600,7080,7580~
- Inside source: true
*** True Line Result
7000,7600,7080,7580
** Processing line: ~ 6880,7600,7000,7600~
- Inside source: true
*** True Line Result
6880,7600,7000,7600
** Processing line: ~ 6800,7580,6880,7600~
- Inside source: true
*** True Line Result
6800,7580,6880,7600
** Processing line: ~ 6640,7580,6800,7580~
- Inside source: true
*** True Line Result
6640,7580,6800,7580
** Processing line: ~ 6540,7580,6640,7580~
- Inside source: true
*** True Line Result
6540,7580,6640,7580
** Processing line: ~ 6380,7600,6540,7580~
- Inside source: true
*** True Line Result
6380,7600,6540,7580
** Processing line: ~ 6280,7620,6380,7600~
- Inside source: true
*** True Line Result
6280,7620,6380,7600
** Processing line: ~ 6240,7700,6280,7620~
- Inside source: true
*** True Line Result
6240,7700,6280,7620
** Processing line: ~ 6240,7700,6240,7800~
- Inside source: true
*** True Line Result
6240,7700,6240,7800
** Processing line: ~ 6240,7840,6240,7800~
- Inside source: true
*** True Line Result
6240,7840,6240,7800
** Processing line: ~ 6080,7840,6240,7840~
- Inside source: true
*** True Line Result
6080,7840,6240,7840
** Processing line: ~ 5960,7820,6080,7840~
- Inside source: true
*** True Line Result
5960,7820,6080,7840
** Processing line: ~ 5660,7840,5800,7840~
- Inside source: true
*** True Line Result
5660,7840,5800,7840
** Processing line: ~ 5500,7800,5660,7840~
- Inside source: true
*** True Line Result
5500,7800,5660,7840
** Processing line: ~ 5440,7700,5500,7800~
- Inside source: true
*** True Line Result
5440,7700,5500,7800
** Processing line: ~ 5800,7840,5960,7820~
- Inside source: true
*** True Line Result
5800,7840,5960,7820
** Processing line: ~ 5440,7540,5440,7700~
- Inside source: true
*** True Line Result
5440,7540,5440,7700
** Processing line: ~ 5440,7440,5440,7540~
- Inside source: true
*** True Line Result
5440,7440,5440,7540
** Processing line: ~ 5440,7320,5440,7440~
- Inside source: true
*** True Line Result
5440,7320,5440,7440
** Processing line: ~ 5400,7320,5440,7320~
- Inside source: true
*** True Line Result
5400,7320,5440,7320
** Processing line: ~ 5340,7400,5400,7320~
- Inside source: true
*** True Line Result
5340,7400,5400,7320
** Processing line: ~ 5340,7400,5340,7500~
- Inside source: true
*** True Line Result
5340,7400,5340,7500
** Processing line: ~ 5340,7600,5340,7500~
- Inside source: true
*** True Line Result
5340,7600,5340,7500
** Processing line: ~ 5340,7600,5340,7720~
- Inside source: true
*** True Line Result
5340,7600,5340,7720
** Processing line: ~ 5340,7720,5340,7860~
- Inside source: true
*** True Line Result
5340,7720,5340,7860
** Processing line: ~ 5340,7860,5340,7960~
- Inside source: true
*** True Line Result
5340,7860,5340,7960
** Processing line: ~ 5340,7960,5440,8020~
- Inside source: true
*** True Line Result
5340,7960,5440,8020
** Processing line: ~ 5440,8020,5560,8020~
- Inside source: true
*** True Line Result
5440,8020,5560,8020
** Processing line: ~ 5560,8020,5720,8040~
- Inside source: true
*** True Line Result
5560,8020,5720,8040
** Processing line: ~ 5720,8040,5900,8060~
- Inside source: true
*** True Line Result
5720,8040,5900,8060
** Processing line: ~ 5900,8060,6080,8060~
- Inside source: true
*** True Line Result
5900,8060,6080,8060
** Processing line: ~ 6080,8060,6240,8060~
- Inside source: true
*** True Line Result
6080,8060,6240,8060
** Processing line: ~ 6720,8040,6840,8060~
- Inside source: true
*** True Line Result
6720,8040,6840,8060
** Processing line: ~ 6240,8060,6480,8040~
- Inside source: true
*** True Line Result
6240,8060,6480,8040
** Processing line: ~ 6480,8040,6720,8040~
- Inside source: true
*** True Line Result
6480,8040,6720,8040
** Processing line: ~ 6840,8060,6940,8060~
- Inside source: true
*** True Line Result
6840,8060,6940,8060
** Processing line: ~ 6940,8060,7080,8120~
- Inside source: true
*** True Line Result
6940,8060,7080,8120
** Processing line: ~ 7080,8120,7140,8180~
- Inside source: true
*** True Line Result
7080,8120,7140,8180
** Processing line: ~ 7140,8460,7140,8320~
- Inside source: true
*** True Line Result
7140,8460,7140,8320
** Processing line: ~ 7140,8620,7140,8460~
- Inside source: true
*** True Line Result
7140,8620,7140,8460
** Processing line: ~ 7140,8620,7140,8740~
- Inside source: true
*** True Line Result
7140,8620,7140,8740
** Processing line: ~ 7140,8860,7140,8740~
- Inside source: true
*** True Line Result
7140,8860,7140,8740
** Processing line: ~ 7140,8960,7140,8860~
- Inside source: true
*** True Line Result
7140,8960,7140,8860
** Processing line: ~ 7140,8960,7200,9080~
- Inside source: true
*** True Line Result
7140,8960,7200,9080
** Processing line: ~ 7140,9200,7200,9080~
- Inside source: true
*** True Line Result
7140,9200,7200,9080
** Processing line: ~ 7140,9200,7200,9320~
- Inside source: true
*** True Line Result
7140,9200,7200,9320
** Processing line: ~ 7200,9320,7200,9460~
- Inside source: true
*** True Line Result
7200,9320,7200,9460
** Processing line: ~ 7200,9760,7200,9900~
- Inside source: true
*** True Line Result
7200,9760,7200,9900
** Processing line: ~ 7200,9620,7200,9460~
- Inside source: true
*** True Line Result
7200,9620,7200,9460
** Processing line: ~ 7200,9620,7200,9760~
- Inside source: true
*** True Line Result
7200,9620,7200,9760
** Processing line: ~ 7200,9900,7200,10060~
- Inside source: true
*** True Line Result
7200,9900,7200,10060
** Processing line: ~ 7200,10220,7200,10060~
- Inside source: true
*** True Line Result
7200,10220,7200,10060
** Processing line: ~ 7200,10360,7200,10220~
- Inside source: true
*** True Line Result
7200,10360,7200,10220
** Processing line: ~ 7140,10400,7200,10360~
- Inside source: true
*** True Line Result
7140,10400,7200,10360
** Processing line: ~ 6880,10400,7140,10400~
- Inside source: true
*** True Line Result
6880,10400,7140,10400
** Processing line: ~ 6640,10360,6880,10400~
- Inside source: true
*** True Line Result
6640,10360,6880,10400
** Processing line: ~ 6420,10360,6640,10360~
- Inside source: true
*** True Line Result
6420,10360,6640,10360
** Processing line: ~ 6160,10380,6420,10360~
- Inside source: true
*** True Line Result
6160,10380,6420,10360
** Processing line: ~ 5940,10340,6160,10380~
- Inside source: true
*** True Line Result
5940,10340,6160,10380
** Processing line: ~ 5720,10320,5940,10340~
- Inside source: true
*** True Line Result
5720,10320,5940,10340
** Processing line: ~ 5500,10340,5720,10320~
- Inside source: true
*** True Line Result
5500,10340,5720,10320
** Processing line: ~ 5280,10300,5500,10340~
- Inside source: true
*** True Line Result
5280,10300,5500,10340
** Processing line: ~ 5080,10300,5280,10300~
- Inside source: true
*** True Line Result
5080,10300,5280,10300
** Processing line: ~ 4840,10280,5080,10300~
- Inside source: true
*** True Line Result
4840,10280,5080,10300
** Processing line: ~ 4700,10280,4840,10280~
- Inside source: true
*** True Line Result
4700,10280,4840,10280
** Processing line: ~ 4540,10280,4700,10280~
- Inside source: true
*** True Line Result
4540,10280,4700,10280
** Processing line: ~ 4360,10280,4540,10280~
- Inside source: true
*** True Line Result
4360,10280,4540,10280
** Processing line: ~ 4200,10300,4360,10280~
- Inside source: true
*** True Line Result
4200,10300,4360,10280
** Processing line: ~ 4040,10380,4200,10300~
- Inside source: true
*** True Line Result
4040,10380,4200,10300
** Processing line: ~ 4020,10500,4040,10380~
- Inside source: true
*** True Line Result
4020,10500,4040,10380
** Processing line: ~ 3980,10640,4020,10500~
- Inside source: true
*** True Line Result
3980,10640,4020,10500
** Processing line: ~ 3980,10640,3980,10760~
- Inside source: true
*** True Line Result
3980,10640,3980,10760
** Processing line: ~ 3980,10760,4020,10920~
- Inside source: true
*** True Line Result
3980,10760,4020,10920
** Processing line: ~ 4020,10920,4080,11000~
- Inside source: true
*** True Line Result
4020,10920,4080,11000
** Processing line: ~ 4080,11000,4340,11020~
- Inside source: true
*** True Line Result
4080,11000,4340,11020
** Processing line: ~ 4340,11020,4600,11060~
- Inside source: true
*** True Line Result
4340,11020,4600,11060
** Processing line: ~ 4600,11060,4840,11040~
- Inside source: true
*** True Line Result
4600,11060,4840,11040
** Processing line: ~ 4840,11040,4880,10960~
- Inside source: true
*** True Line Result
4840,11040,4880,10960
** Processing line: ~ 4880,10740,4880,10960~
- Inside source: true
*** True Line Result
4880,10740,4880,10960
** Processing line: ~ 4880,10740,4880,10600~
- Inside source: true
*** True Line Result
4880,10740,4880,10600
** Processing line: ~ 4880,10600,5080,10560~
- Inside source: true
*** True Line Result
4880,10600,5080,10560
** Processing line: ~ 5080,10560,5340,10620~
- Inside source: true
*** True Line Result
5080,10560,5340,10620
** Processing line: ~ 5340,10620,5660,10620~
- Inside source: true
*** True Line Result
5340,10620,5660,10620
** Processing line: ~ 5660,10620,6040,10600~
- Inside source: true
*** True Line Result
5660,10620,6040,10600
** Processing line: ~ 6040,10600,6120,10620~
- Inside source: true
*** True Line Result
6040,10600,6120,10620
** Processing line: ~ 6120,10620,6240,10720~
- Inside source: true
*** True Line Result
6120,10620,6240,10720
** Processing line: ~ 6240,10720,6420,10740~
- Inside source: true
*** True Line Result
6240,10720,6420,10740
** Processing line: ~ 6420,10740,6640,10760~
- Inside source: true
*** True Line Result
6420,10740,6640,10760
** Processing line: ~ 6640,10760,6880,10780~
- Inside source: true
*** True Line Result
6640,10760,6880,10780
** Processing line: ~ 7140,10780,7400,10780~
- Inside source: true
*** True Line Result
7140,10780,7400,10780
** Processing line: ~ 6880,10780,7140,10780~
- Inside source: true
*** True Line Result
6880,10780,7140,10780
** Processing line: ~ 7400,10780,7680,10780~
- Inside source: true
*** True Line Result
7400,10780,7680,10780
** Processing line: ~ 7680,10780,8100,10760~
- Inside source: true
*** True Line Result
7680,10780,8100,10760
** Processing line: ~ 8100,10760,8460,10740~
- Inside source: true
*** True Line Result
8100,10760,8460,10740
** Processing line: ~ 8460,10740,8700,10760~
- Inside source: true
*** True Line Result
8460,10740,8700,10760
** Processing line: ~ 8800,10840,8800,10980~
- Inside source: true
*** True Line Result
8800,10840,8800,10980
** Processing line: ~ 8700,10760,8800,10840~
- Inside source: true
*** True Line Result
8700,10760,8800,10840
** Processing line: ~ 8760,11200,8800,10980~
- Inside source: true
*** True Line Result
8760,11200,8800,10980
** Processing line: ~ 8760,11200,8760,11380~
- Inside source: true
*** True Line Result
8760,11200,8760,11380
** Processing line: ~ 8760,11380,8800,11560~
- Inside source: true
*** True Line Result
8760,11380,8800,11560
** Processing line: ~ 8760,11680,8800,11560~
- Inside source: true
*** True Line Result
8760,11680,8800,11560
** Processing line: ~ 8760,11760,8760,11680~
- Inside source: true
*** True Line Result
8760,11760,8760,11680
** Processing line: ~ 8760,11760,8760,11920~
- Inside source: true
*** True Line Result
8760,11760,8760,11920
** Processing line: ~ 8760,11920,8800,12080~
- Inside source: true
*** True Line Result
8760,11920,8800,12080
** Processing line: ~ 8800,12200,8800,12080~
- Inside source: true
*** True Line Result
8800,12200,8800,12080
** Processing line: ~ 8700,12240,8800,12200~
- Inside source: true
*** True Line Result
8700,12240,8800,12200
** Processing line: ~ 8560,12220,8700,12240~
- Inside source: true
*** True Line Result
8560,12220,8700,12240
** Processing line: ~ 8360,12220,8560,12220~
- Inside source: true
*** True Line Result
8360,12220,8560,12220
** Processing line: ~ 8160,12240,8360,12220~
- Inside source: true
*** True Line Result
8160,12240,8360,12220
** Processing line: ~ 7720,12220,7980,12220~
- Inside source: true
*** True Line Result
7720,12220,7980,12220
** Processing line: ~ 7980,12220,8160,12240~
- Inside source: true
*** True Line Result
7980,12220,8160,12240
** Processing line: ~ 7400,12200,7720,12220~
- Inside source: true
*** True Line Result
7400,12200,7720,12220
** Processing line: ~ 7200,12180,7400,12200~
- Inside source: true
*** True Line Result
7200,12180,7400,12200
** Processing line: ~ 7000,12160,7200,12180~
- Inside source: true
*** True Line Result
7000,12160,7200,12180
** Processing line: ~ 6800,12160,7000,12160~
- Inside source: true
*** True Line Result
6800,12160,7000,12160
** Processing line: ~ 6280,12140,6380,12180~
- Inside source: true
*** True Line Result
6280,12140,6380,12180
** Processing line: ~ 6120,12180,6280,12140~
- Inside source: true
*** True Line Result
6120,12180,6280,12140
** Processing line: ~ 6540,12180,6800,12160~
- Inside source: true
*** True Line Result
6540,12180,6800,12160
** Processing line: ~ 6380,12180,6540,12180~
- Inside source: true
*** True Line Result
6380,12180,6540,12180
** Processing line: ~ 5900,12200,6120,12180~
- Inside source: true
*** True Line Result
5900,12200,6120,12180
** Processing line: ~ 5620,12180,5900,12200~
- Inside source: true
*** True Line Result
5620,12180,5900,12200
** Processing line: ~ 5340,12120,5620,12180~
- Inside source: true
*** True Line Result
5340,12120,5620,12180
** Processing line: ~ 5140,12100,5340,12120~
- Inside source: true
*** True Line Result
5140,12100,5340,12120
** Processing line: ~ 4980,12120,5140,12100~
- Inside source: true
*** True Line Result
4980,12120,5140,12100
** Processing line: ~ 4840,12120,4980,12120~
- Inside source: true
*** True Line Result
4840,12120,4980,12120
** Processing line: ~ 4700,12200,4840,12120~
- Inside source: true
*** True Line Result
4700,12200,4840,12120
** Processing line: ~ 4700,12380,4700,12200~
- Inside source: true
*** True Line Result
4700,12380,4700,12200
** Processing line: ~ 4740,12480,4940,12520~
- Inside source: true
*** True Line Result
4740,12480,4940,12520
** Processing line: ~ 4700,12380,4740,12480~
- Inside source: true
*** True Line Result
4700,12380,4740,12480
** Processing line: ~ 4940,12520,5160,12560~
- Inside source: true
*** True Line Result
4940,12520,5160,12560
** Processing line: ~ 5160,12560,5340,12600~
- Inside source: true
*** True Line Result
5160,12560,5340,12600
** Processing line: ~ 5340,12600,5400,12600~
- Inside source: true
*** True Line Result
5340,12600,5400,12600
** Processing line: ~ 5400,12600,5500,12600~
- Inside source: true
*** True Line Result
5400,12600,5500,12600
** Processing line: ~ 5500,12600,5620,12600~
- Inside source: true
*** True Line Result
5500,12600,5620,12600
** Processing line: ~ 5620,12600,5720,12560~
- Inside source: true
*** True Line Result
5620,12600,5720,12560
** Processing line: ~ 5720,12560,5800,12440~
- Inside source: true
*** True Line Result
5720,12560,5800,12440
** Processing line: ~ 5800,12440,5900,12380~
- Inside source: true
*** True Line Result
5800,12440,5900,12380
** Processing line: ~ 5900,12380,6120,12420~
- Inside source: true
*** True Line Result
5900,12380,6120,12420
** Processing line: ~ 6120,12420,6380,12440~
- Inside source: true
*** True Line Result
6120,12420,6380,12440
** Processing line: ~ 6380,12440,6600,12460~
- Inside source: true
*** True Line Result
6380,12440,6600,12460
** Processing line: ~ 6720,12460,6840,12520~
- Inside source: true
*** True Line Result
6720,12460,6840,12520
** Processing line: ~ 6840,12520,6960,12520~
- Inside source: true
*** True Line Result
6840,12520,6960,12520
** Processing line: ~ 6600,12460,6720,12460~
- Inside source: true
*** True Line Result
6600,12460,6720,12460
** Processing line: ~ 6960,12520,7040,12500~
- Inside source: true
*** True Line Result
6960,12520,7040,12500
** Processing line: ~ 7040,12500,7140,12440~
- Inside source: true
*** True Line Result
7040,12500,7140,12440
** Processing line: ~ 7200,12440,7360,12500~
- Inside source: true
*** True Line Result
7200,12440,7360,12500
** Processing line: ~ 7360,12500,7600,12560~
- Inside source: true
*** True Line Result
7360,12500,7600,12560
** Processing line: ~ 7600,12560,7860,12600~
- Inside source: true
*** True Line Result
7600,12560,7860,12600
** Processing line: ~ 7860,12600,8060,12500~
- Inside source: true
*** True Line Result
7860,12600,8060,12500
** Processing line: ~ 8100,12500,8200,12340~
- Inside source: true
*** True Line Result
8100,12500,8200,12340
** Processing line: ~ 8200,12340,8360,12360~
- Inside source: true
*** True Line Result
8200,12340,8360,12360
** Processing line: ~ 8360,12360,8560,12400~
- Inside source: true
*** True Line Result
8360,12360,8560,12400
** Processing line: ~ 8560,12400,8660,12420~
- Inside source: true
*** True Line Result
8560,12400,8660,12420
** Processing line: ~ 8660,12420,8840,12400~
- Inside source: true
*** True Line Result
8660,12420,8840,12400
** Processing line: ~ 8840,12400,9000,12360~
- Inside source: true
*** True Line Result
8840,12400,9000,12360
** Processing line: ~ 9000,12360,9000,12360~
- Inside source: true
*** True Line Result
9000,12360,9000,12360
** Processing line: ~ 2900,4400,2900,4280~
- Inside source: true
*** True Line Result
2900,4400,2900,4280
** Processing line: ~ 900,7320,1000,7220~
- Inside source: true
*** True Line Result
900,7320,1000,7220
** Processing line: ~ 2640,13040,2900,12920~
- Inside source: true
*** True Line Result
2640,13040,2900,12920
** Processing line: ~ 2900,12920,3160,12840~
- Inside source: true
*** True Line Result
2900,12920,3160,12840
** Processing line: ~ 3480,12760,3780,12620~
- Inside source: true
*** True Line Result
3480,12760,3780,12620
** Processing line: ~ 3780,12620,4020,12460~
- Inside source: true
*** True Line Result
3780,12620,4020,12460
** Processing line: ~ 4300,12360,4440,12260~
- Inside source: true
*** True Line Result
4300,12360,4440,12260
** Processing line: ~ 4020,12460,4300,12360~
- Inside source: true
*** True Line Result
4020,12460,4300,12360
** Processing line: ~ 3160,12840,3480,12760~
- Inside source: true
*** True Line Result
3160,12840,3480,12760
** Processing line: ~ 4440,12080,4440,12260~
- Inside source: true
*** True Line Result
4440,12080,4440,12260
** Processing line: ~ 4440,12080,4440,11880~
- Inside source: true
*** True Line Result
4440,12080,4440,11880
** Processing line: ~ 4440,11880,4440,11720~
- Inside source: true
*** True Line Result
4440,11880,4440,11720
** Processing line: ~ 4440,11720,4600,11720~
- Inside source: true
*** True Line Result
4440,11720,4600,11720
** Processing line: ~ 4600,11720,4760,11740~
- Inside source: true
*** True Line Result
4600,11720,4760,11740
** Processing line: ~ 4760,11740,4980,11760~
- Inside source: true
*** True Line Result
4760,11740,4980,11760
** Processing line: ~ 4980,11760,5160,11760~
- Inside source: true
*** True Line Result
4980,11760,5160,11760
** Processing line: ~ 5160,11760,5340,11780~
- Inside source: true
*** True Line Result
5160,11760,5340,11780
** Processing line: ~ 6000,11860,6120,11820~
- Inside source: true
*** True Line Result
6000,11860,6120,11820
** Processing line: ~ 5340,11780,5620,11820~
- Inside source: true
*** True Line Result
5340,11780,5620,11820
** Processing line: ~ 5620,11820,6000,11860~
- Inside source: true
*** True Line Result
5620,11820,6000,11860
** Processing line: ~ 6120,11820,6360,11820~
- Inside source: true
*** True Line Result
6120,11820,6360,11820
** Processing line: ~ 6360,11820,6640,11860~
- Inside source: true
*** True Line Result
6360,11820,6640,11860
** Processing line: ~ 6940,11920,7240,11940~
- Inside source: true
*** True Line Result
6940,11920,7240,11940
** Processing line: ~ 7240,11940,7520,11960~
- Inside source: true
*** True Line Result
7240,11940,7520,11960
** Processing line: ~ 7520,11960,7860,11960~
- Inside source: true
*** True Line Result
7520,11960,7860,11960
** Processing line: ~ 7860,11960,8100,11920~
- Inside source: true
*** True Line Result
7860,11960,8100,11920
** Processing line: ~ 8100,11920,8420,11940~
- Inside source: true
*** True Line Result
8100,11920,8420,11940
** Processing line: ~ 8420,11940,8460,11960~
- Inside source: true
*** True Line Result
8420,11940,8460,11960
** Processing line: ~ 8460,11960,8500,11860~
- Inside source: true
*** True Line Result
8460,11960,8500,11860
** Processing line: ~ 8460,11760,8500,11860~
- Inside source: true
*** True Line Result
8460,11760,8500,11860
** Processing line: ~ 8320,11720,8460,11760~
- Inside source: true
*** True Line Result
8320,11720,8460,11760
** Processing line: ~ 8160,11720,8320,11720~
- Inside source: true
*** True Line Result
8160,11720,8320,11720
** Processing line: ~ 7940,11720,8160,11720~
- Inside source: true
*** True Line Result
7940,11720,8160,11720
** Processing line: ~ 7720,11700,7940,11720~
- Inside source: true
*** True Line Result
7720,11700,7940,11720
** Processing line: ~ 7520,11680,7720,11700~
- Inside source: true
*** True Line Result
7520,11680,7720,11700
** Processing line: ~ 7320,11680,7520,11680~
- Inside source: true
*** True Line Result
7320,11680,7520,11680
** Processing line: ~ 7200,11620,7320,11680~
- Inside source: true
*** True Line Result
7200,11620,7320,11680
** Processing line: ~ 7200,11620,7200,11500~
- Inside source: true
*** True Line Result
7200,11620,7200,11500
** Processing line: ~ 7200,11500,7280,11440~
- Inside source: true
*** True Line Result
7200,11500,7280,11440
** Processing line: ~ 7280,11440,7420,11440~
- Inside source: true
*** True Line Result
7280,11440,7420,11440
** Processing line: ~ 7420,11440,7600,11440~
- Inside source: true
*** True Line Result
7420,11440,7600,11440
** Processing line: ~ 7600,11440,7980,11460~
- Inside source: true
*** True Line Result
7600,11440,7980,11460
** Processing line: ~ 7980,11460,8160,11460~
- Inside source: true
*** True Line Result
7980,11460,8160,11460
** Processing line: ~ 8160,11460,8360,11460~
- Inside source: true
*** True Line Result
8160,11460,8360,11460
** Processing line: ~ 8360,11460,8460,11400~
- Inside source: true
*** True Line Result
8360,11460,8460,11400
** Processing line: ~ 8420,11060,8500,11200~
- Inside source: true
*** True Line Result
8420,11060,8500,11200
** Processing line: ~ 8280,11040,8420,11060~
- Inside source: true
*** True Line Result
8280,11040,8420,11060
** Processing line: ~ 8100,11060,8280,11040~
- Inside source: true
*** True Line Result
8100,11060,8280,11040
** Processing line: ~ 8460,11400,8500,11200~
- Inside source: true
*** True Line Result
8460,11400,8500,11200
** Processing line: ~ 7800,11060,8100,11060~
- Inside source: true
*** True Line Result
7800,11060,8100,11060
** Processing line: ~ 7520,11060,7800,11060~
- Inside source: true
*** True Line Result
7520,11060,7800,11060
** Processing line: ~ 7240,11060,7520,11060~
- Inside source: true
*** True Line Result
7240,11060,7520,11060
** Processing line: ~ 6940,11040,7240,11060~
- Inside source: true
*** True Line Result
6940,11040,7240,11060
** Processing line: ~ 6640,11000,6940,11040~
- Inside source: true
*** True Line Result
6640,11000,6940,11040
** Processing line: ~ 6420,10980,6640,11000~
- Inside source: true
*** True Line Result
6420,10980,6640,11000
** Processing line: ~ 6360,11060,6420,10980~
- Inside source: true
*** True Line Result
6360,11060,6420,10980
** Processing line: ~ 6360,11180,6360,11060~
- Inside source: true
*** True Line Result
6360,11180,6360,11060
** Processing line: ~ 6200,11280,6360,11180~
- Inside source: true
*** True Line Result
6200,11280,6360,11180
** Processing line: ~ 5960,11300,6200,11280~
- Inside source: true
*** True Line Result
5960,11300,6200,11280
** Processing line: ~ 5720,11280,5960,11300~
- Inside source: true
*** True Line Result
5720,11280,5960,11300
** Processing line: ~ 5500,11280,5720,11280~
- Inside source: true
*** True Line Result
5500,11280,5720,11280
** Processing line: ~ 4940,11300,5200,11280~
- Inside source: true
*** True Line Result
4940,11300,5200,11280
** Processing line: ~ 4660,11260,4940,11300~
- Inside source: true
*** True Line Result
4660,11260,4940,11300
** Processing line: ~ 4440,11280,4660,11260~
- Inside source: true
*** True Line Result
4440,11280,4660,11260
** Processing line: ~ 4260,11280,4440,11280~
- Inside source: true
*** True Line Result
4260,11280,4440,11280
** Processing line: ~ 4220,11220,4260,11280~
- Inside source: true
*** True Line Result
4220,11220,4260,11280
** Processing line: ~ 4080,11280,4220,11220~
- Inside source: true
*** True Line Result
4080,11280,4220,11220
** Processing line: ~ 3980,11420,4080,11280~
- Inside source: true
*** True Line Result
3980,11420,4080,11280
** Processing line: ~ 3980,11420,4040,11620~
- Inside source: true
*** True Line Result
3980,11420,4040,11620
** Processing line: ~ 4040,11620,4040,11820~
- Inside source: true
*** True Line Result
4040,11620,4040,11820
** Processing line: ~ 3980,11960,4040,11820~
- Inside source: true
*** True Line Result
3980,11960,4040,11820
** Processing line: ~ 3840,12000,3980,11960~
- Inside source: true
*** True Line Result
3840,12000,3980,11960
** Processing line: ~ 3720,11940,3840,12000~
- Inside source: true
*** True Line Result
3720,11940,3840,12000
** Processing line: ~ 3680,11800,3720,11940~
- Inside source: true
*** True Line Result
3680,11800,3720,11940
** Processing line: ~ 3680,11580,3680,11800~
- Inside source: true
*** True Line Result
3680,11580,3680,11800
** Processing line: ~ 3680,11360,3680,11580~
- Inside source: true
*** True Line Result
3680,11360,3680,11580
** Processing line: ~ 3680,11360,3680,11260~
- Inside source: true
*** True Line Result
3680,11360,3680,11260
** Processing line: ~ 3680,11080,3680,11260~
- Inside source: true
*** True Line Result
3680,11080,3680,11260
** Processing line: ~ 3680,11080,3680,10880~
- Inside source: true
*** True Line Result
3680,11080,3680,10880
** Processing line: ~ 3680,10700,3680,10880~
- Inside source: true
*** True Line Result
3680,10700,3680,10880
** Processing line: ~ 3680,10700,3680,10620~
- Inside source: true
*** True Line Result
3680,10700,3680,10620
** Processing line: ~ 3680,10480,3680,10620~
- Inside source: true
*** True Line Result
3680,10480,3680,10620
** Processing line: ~ 3680,10480,3680,10300~
- Inside source: true
*** True Line Result
3680,10480,3680,10300
** Processing line: ~ 3680,10300,3680,10100~
- Inside source: true
*** True Line Result
3680,10300,3680,10100
** Processing line: ~ 3680,10100,3680,9940~
- Inside source: true
*** True Line Result
3680,10100,3680,9940
** Processing line: ~ 3680,9940,3720,9860~
- Inside source: true
*** True Line Result
3680,9940,3720,9860
** Processing line: ~ 3720,9860,3920,9900~
- Inside source: true
*** True Line Result
3720,9860,3920,9900
** Processing line: ~ 3920,9900,4220,9880~
- Inside source: true
*** True Line Result
3920,9900,4220,9880
** Processing line: ~ 4980,9940,5340,9960~
- Inside source: true
*** True Line Result
4980,9940,5340,9960
** Processing line: ~ 4220,9880,4540,9900~
- Inside source: true
*** True Line Result
4220,9880,4540,9900
** Processing line: ~ 4540,9900,4980,9940~
- Inside source: true
*** True Line Result
4540,9900,4980,9940
** Processing line: ~ 5340,9960,5620,9960~
- Inside source: true
*** True Line Result
5340,9960,5620,9960
** Processing line: ~ 5620,9960,5900,9960~
- Inside source: true
*** True Line Result
5620,9960,5900,9960
** Processing line: ~ 5900,9960,6160,10000~
- Inside source: true
*** True Line Result
5900,9960,6160,10000
** Processing line: ~ 6160,10000,6480,10000~
- Inside source: true
*** True Line Result
6160,10000,6480,10000
** Processing line: ~ 6480,10000,6720,10000~
- Inside source: true
*** True Line Result
6480,10000,6720,10000
** Processing line: ~ 6720,10000,6880,9860~
- Inside source: true
*** True Line Result
6720,10000,6880,9860
** Processing line: ~ 6880,9860,6880,9520~
- Inside source: true
*** True Line Result
6880,9860,6880,9520
** Processing line: ~ 6880,9520,6940,9340~
- Inside source: true
*** True Line Result
6880,9520,6940,9340
** Processing line: ~ 6940,9120,6940,9340~
- Inside source: true
*** True Line Result
6940,9120,6940,9340
** Processing line: ~ 6940,9120,6940,8920~
- Inside source: true
*** True Line Result
6940,9120,6940,8920
** Processing line: ~ 6940,8700,6940,8920~
- Inside source: true
*** True Line Result
6940,8700,6940,8920
** Processing line: ~ 6880,8500,6940,8700~
- Inside source: true
*** True Line Result
6880,8500,6940,8700
** Processing line: ~ 6880,8320,6880,8500~
- Inside source: true
*** True Line Result
6880,8320,6880,8500
** Processing line: ~ 7140,8320,7140,8180~
- Inside source: true
*** True Line Result
7140,8320,7140,8180
** Processing line: ~ 6760,8260,6880,8320~
- Inside source: true
*** True Line Result
6760,8260,6880,8320
** Processing line: ~ 6540,8240,6760,8260~
- Inside source: true
*** True Line Result
6540,8240,6760,8260
** Processing line: ~ 6420,8180,6540,8240~
- Inside source: true
*** True Line Result
6420,8180,6540,8240
** Processing line: ~ 6280,8240,6420,8180~
- Inside source: true
*** True Line Result
6280,8240,6420,8180
** Processing line: ~ 6160,8300,6280,8240~
- Inside source: true
*** True Line Result
6160,8300,6280,8240
** Processing line: ~ 6120,8400,6160,8300~
- Inside source: true
*** True Line Result
6120,8400,6160,8300
** Processing line: ~ 6080,8520,6120,8400~
- Inside source: true
*** True Line Result
6080,8520,6120,8400
** Processing line: ~ 5840,8480,6080,8520~
- Inside source: true
*** True Line Result
5840,8480,6080,8520
** Processing line: ~ 5620,8500,5840,8480~
- Inside source: true
*** True Line Result
5620,8500,5840,8480
** Processing line: ~ 5500,8500,5620,8500~
- Inside source: true
*** True Line Result
5500,8500,5620,8500
** Processing line: ~ 5340,8560,5500,8500~
- Inside source: true
*** True Line Result
5340,8560,5500,8500
** Processing line: ~ 5160,8540,5340,8560~
- Inside source: true
*** True Line Result
5160,8540,5340,8560
** Processing line: ~ 4620,8520,4880,8520~
- Inside source: true
*** True Line Result
4620,8520,4880,8520
** Processing line: ~ 4360,8480,4620,8520~
- Inside source: true
*** True Line Result
4360,8480,4620,8520
** Processing line: ~ 4880,8520,5160,8540~
- Inside source: true
*** True Line Result
4880,8520,5160,8540
** Processing line: ~ 4140,8440,4360,8480~
- Inside source: true
*** True Line Result
4140,8440,4360,8480
** Processing line: ~ 3920,8460,4140,8440~
- Inside source: true
*** True Line Result
3920,8460,4140,8440
** Processing line: ~ 3720,8380,3920,8460~
- Inside source: true
*** True Line Result
3720,8380,3920,8460
** Processing line: ~ 3680,8160,3720,8380~
- Inside source: true
*** True Line Result
3680,8160,3720,8380
** Processing line: ~ 3680,8160,3720,7940~
- Inside source: true
*** True Line Result
3680,8160,3720,7940
** Processing line: ~ 3720,7720,3720,7940~
- Inside source: true
*** True Line Result
3720,7720,3720,7940
** Processing line: ~ 3680,7580,3720,7720~
- Inside source: true
*** True Line Result
3680,7580,3720,7720
** Processing line: ~ 3680,7580,3720,7440~
- Inside source: true
*** True Line Result
3680,7580,3720,7440
** Processing line: ~ 3720,7440,3720,7300~
- Inside source: true
*** True Line Result
3720,7440,3720,7300
** Processing line: ~ 3720,7160,3720,7300~
- Inside source: true
*** True Line Result
3720,7160,3720,7300
** Processing line: ~ 3720,7160,3720,7020~
- Inside source: true
*** True Line Result
3720,7160,3720,7020
** Processing line: ~ 3720,7020,3780,6900~
- Inside source: true
*** True Line Result
3720,7020,3780,6900
** Processing line: ~ 3780,6900,4080,6940~
- Inside source: true
*** True Line Result
3780,6900,4080,6940
** Processing line: ~ 4080,6940,4340,6980~
- Inside source: true
*** True Line Result
4080,6940,4340,6980
** Processing line: ~ 4340,6980,4600,6980~
- Inside source: true
*** True Line Result
4340,6980,4600,6980
** Processing line: ~ 4600,6980,4880,6980~
- Inside source: true
*** True Line Result
4600,6980,4880,6980
** Processing line: ~ 4880,6980,5160,6980~
- Inside source: true
*** True Line Result
4880,6980,5160,6980
** Processing line: ~ 5160,6980,5400,7000~
- Inside source: true
*** True Line Result
5160,6980,5400,7000
** Processing line: ~ 5400,7000,5560,7020~
- Inside source: true
*** True Line Result
5400,7000,5560,7020
** Processing line: ~ 5560,7020,5660,7080~
- Inside source: true
*** True Line Result
5560,7020,5660,7080
** Processing line: ~ 5660,7080,5660,7280~
- Inside source: true
*** True Line Result
5660,7080,5660,7280
** Processing line: ~ 5660,7280,5660,7440~
- Inside source: true
*** True Line Result
5660,7280,5660,7440
** Processing line: ~ 5660,7440,5740,7520~
- Inside source: true
*** True Line Result
5660,7440,5740,7520
** Processing line: ~ 5740,7520,5740,7600~
- Inside source: true
*** True Line Result
5740,7520,5740,7600
** Processing line: ~ 5740,7600,5900,7600~
- Inside source: true
*** True Line Result
5740,7600,5900,7600
** Processing line: ~ 5900,7600,6040,7540~
- Inside source: true
*** True Line Result
5900,7600,6040,7540
** Processing line: ~ 6040,7540,6040,7320~
- Inside source: true
*** True Line Result
6040,7540,6040,7320
** Processing line: ~ 6040,7320,6120,7200~
- Inside source: true
*** True Line Result
6040,7320,6120,7200
** Processing line: ~ 6120,7200,6120,7040~
- Inside source: true
*** True Line Result
6120,7200,6120,7040
** Processing line: ~ 6120,7040,6240,7000~
- Inside source: true
*** True Line Result
6120,7040,6240,7000
** Processing line: ~ 6240,7000,6480,7060~
- Inside source: true
*** True Line Result
6240,7000,6480,7060
** Processing line: ~ 6480,7060,6800,7060~
- Inside source: true
*** True Line Result
6480,7060,6800,7060
** Processing line: ~ 6800,7060,7080,7080~
- Inside source: true
*** True Line Result
6800,7060,7080,7080
** Processing line: ~ 7080,7080,7320,7100~
- Inside source: true
*** True Line Result
7080,7080,7320,7100
** Processing line: ~ 7940,7100,7980,6920~
- Inside source: true
*** True Line Result
7940,7100,7980,6920
** Processing line: ~ 7860,6860,7980,6920~
- Inside source: true
*** True Line Result
7860,6860,7980,6920
** Processing line: ~ 7640,6860,7860,6860~
- Inside source: true
*** True Line Result
7640,6860,7860,6860
** Processing line: ~ 7400,6840,7640,6860~
- Inside source: true
*** True Line Result
7400,6840,7640,6860
** Processing line: ~ 7320,7100,7560,7120~
- Inside source: true
*** True Line Result
7320,7100,7560,7120
** Processing line: ~ 7560,7120,7760,7120~
- Inside source: true
*** True Line Result
7560,7120,7760,7120
** Processing line: ~ 7760,7120,7940,7100~
- Inside source: true
*** True Line Result
7760,7120,7940,7100
** Processing line: ~ 7200,6820,7400,6840~
- Inside source: true
*** True Line Result
7200,6820,7400,6840
** Processing line: ~ 7040,6820,7200,6820~
- Inside source: true
*** True Line Result
7040,6820,7200,6820
** Processing line: ~ 6600,6840,6840,6840~
- Inside source: true
*** True Line Result
6600,6840,6840,6840
** Processing line: ~ 6380,6800,6600,6840~
- Inside source: true
*** True Line Result
6380,6800,6600,6840
** Processing line: ~ 6120,6800,6380,6800~
- Inside source: true
*** True Line Result
6120,6800,6380,6800
** Processing line: ~ 5900,6840,6120,6800~
- Inside source: true
*** True Line Result
5900,6840,6120,6800
** Processing line: ~ 5620,6820,5900,6840~
- Inside source: true
*** True Line Result
5620,6820,5900,6840
** Processing line: ~ 5400,6800,5620,6820~
- Inside source: true
*** True Line Result
5400,6800,5620,6820
** Processing line: ~ 5140,6800,5400,6800~
- Inside source: true
*** True Line Result
5140,6800,5400,6800
** Processing line: ~ 4880,6780,5140,6800~
- Inside source: true
*** True Line Result
4880,6780,5140,6800
** Processing line: ~ 4600,6760,4880,6780~
- Inside source: true
*** True Line Result
4600,6760,4880,6780
** Processing line: ~ 4340,6760,4600,6760~
- Inside source: true
*** True Line Result
4340,6760,4600,6760
** Processing line: ~ 4080,6760,4340,6760~
- Inside source: true
*** True Line Result
4080,6760,4340,6760
** Processing line: ~ 3840,6740,4080,6760~
- Inside source: true
*** True Line Result
3840,6740,4080,6760
** Processing line: ~ 3680,6720,3840,6740~
- Inside source: true
*** True Line Result
3680,6720,3840,6740
** Processing line: ~ 3680,6720,3680,6560~
- Inside source: true
*** True Line Result
3680,6720,3680,6560
** Processing line: ~ 3680,6560,3720,6400~
- Inside source: true
*** True Line Result
3680,6560,3720,6400
** Processing line: ~ 3720,6400,3720,6200~
- Inside source: true
*** True Line Result
3720,6400,3720,6200
** Processing line: ~ 3720,6200,3780,6000~
- Inside source: true
*** True Line Result
3720,6200,3780,6000
** Processing line: ~ 3720,5780,3780,6000~
- Inside source: true
*** True Line Result
3720,5780,3780,6000
** Processing line: ~ 3720,5580,3720,5780~
- Inside source: true
*** True Line Result
3720,5580,3720,5780
** Processing line: ~ 3720,5360,3720,5580~
- Inside source: true
*** True Line Result
3720,5360,3720,5580
** Processing line: ~ 3720,5360,3840,5240~
- Inside source: true
*** True Line Result
3720,5360,3840,5240
** Processing line: ~ 3840,5240,4200,5260~
- Inside source: true
*** True Line Result
3840,5240,4200,5260
** Processing line: ~ 4200,5260,4600,5280~
- Inside source: true
*** True Line Result
4200,5260,4600,5280
** Processing line: ~ 4600,5280,4880,5280~
- Inside source: true
*** True Line Result
4600,5280,4880,5280
** Processing line: ~ 4880,5280,5140,5200~
- Inside source: true
*** True Line Result
4880,5280,5140,5200
** Processing line: ~ 5140,5200,5220,5100~
- Inside source: true
*** True Line Result
5140,5200,5220,5100
** Processing line: ~ 5220,5100,5280,4900~
- Inside source: true
*** True Line Result
5220,5100,5280,4900
** Processing line: ~ 5280,4900,5340,4840~
- Inside source: true
*** True Line Result
5280,4900,5340,4840
** Processing line: ~ 5340,4840,5720,4880~
- Inside source: true
*** True Line Result
5340,4840,5720,4880
** Processing line: ~ 6120,4880,6480,4860~
- Inside source: true
*** True Line Result
6120,4880,6480,4860
** Processing line: ~ 6880,4840,7200,4860~
- Inside source: true
*** True Line Result
6880,4840,7200,4860
** Processing line: ~ 6480,4860,6880,4840~
- Inside source: true
*** True Line Result
6480,4860,6880,4840
** Processing line: ~ 7200,4860,7320,4860~
- Inside source: true
*** True Line Result
7200,4860,7320,4860
** Processing line: ~ 7320,4860,7360,4740~
- Inside source: true
*** True Line Result
7320,4860,7360,4740
** Processing line: ~ 7360,4600,7440,4520~
- Inside source: true
*** True Line Result
7360,4600,7440,4520
** Processing line: ~ 7360,4600,7360,4740~
- Inside source: true
*** True Line Result
7360,4600,7360,4740
** Processing line: ~ 7440,4520,7640,4520~
- Inside source: true
*** True Line Result
7440,4520,7640,4520
** Processing line: ~ 7640,4520,7800,4480~
- Inside source: true
*** True Line Result
7640,4520,7800,4480
** Processing line: ~ 7800,4480,7800,4280~
- Inside source: true
*** True Line Result
7800,4480,7800,4280
** Processing line: ~ 7800,4280,7800,4040~
- Inside source: true
*** True Line Result
7800,4280,7800,4040
** Processing line: ~ 7800,4040,7800,3780~
- Inside source: true
*** True Line Result
7800,4040,7800,3780
** Processing line: ~ 7800,3560,7800,3780~
- Inside source: true
*** True Line Result
7800,3560,7800,3780
** Processing line: ~ 7800,3560,7860,3440~
- Inside source: true
*** True Line Result
7800,3560,7860,3440
** Processing line: ~ 7860,3440,8060,3460~
- Inside source: true
*** True Line Result
7860,3440,8060,3460
** Processing line: ~ 8060,3460,8160,3340~
- Inside source: true
*** True Line Result
8060,3460,8160,3340
** Processing line: ~ 8160,3340,8160,3140~
- Inside source: true
*** True Line Result
8160,3340,8160,3140
** Processing line: ~ 8160,3140,8160,2960~
- Inside source: true
*** True Line Result
8160,3140,8160,2960
** Processing line: ~ 8000,2900,8160,2960~
- Inside source: true
*** True Line Result
8000,2900,8160,2960
** Processing line: ~ 7860,2900,8000,2900~
- Inside source: true
*** True Line Result
7860,2900,8000,2900
** Processing line: ~ 7640,2940,7860,2900~
- Inside source: true
*** True Line Result
7640,2940,7860,2900
** Processing line: ~ 7400,2980,7640,2940~
- Inside source: true
*** True Line Result
7400,2980,7640,2940
** Processing line: ~ 7100,2980,7400,2980~
- Inside source: true
*** True Line Result
7100,2980,7400,2980
** Processing line: ~ 6840,3000,7100,2980~
- Inside source: true
*** True Line Result
6840,3000,7100,2980
** Processing line: ~ 5620,2980,5840,2980~
- Inside source: true
*** True Line Result
5620,2980,5840,2980
** Processing line: ~ 5840,2980,6500,3000~
- Inside source: true
*** True Line Result
5840,2980,6500,3000
** Processing line: ~ 6500,3000,6840,3000~
- Inside source: true
*** True Line Result
6500,3000,6840,3000
** Processing line: ~ 5560,2780,5620,2980~
- Inside source: true
*** True Line Result
5560,2780,5620,2980
** Processing line: ~ 5560,2780,5560,2580~
- Inside source: true
*** True Line Result
5560,2780,5560,2580
** Processing line: ~ 5560,2580,5560,2380~
- Inside source: true
*** True Line Result
5560,2580,5560,2380
** Processing line: ~ 5560,2140,5560,2380~
- Inside source: true
*** True Line Result
5560,2140,5560,2380
** Processing line: ~ 5560,2140,5560,1900~
- Inside source: true
*** True Line Result
5560,2140,5560,1900
** Processing line: ~ 5560,1900,5620,1660~
- Inside source: true
*** True Line Result
5560,1900,5620,1660
** Processing line: ~ 5620,1660,5660,1460~
- Inside source: true
*** True Line Result
5620,1660,5660,1460
** Processing line: ~ 5660,1460,5660,1300~
- Inside source: true
*** True Line Result
5660,1460,5660,1300
** Processing line: ~ 5500,1260,5660,1300~
- Inside source: true
*** True Line Result
5500,1260,5660,1300
** Processing line: ~ 5340,1260,5500,1260~
- Inside source: true
*** True Line Result
5340,1260,5500,1260
** Processing line: ~ 4600,1220,4840,1240~
- Inside source: true
*** True Line Result
4600,1220,4840,1240
** Processing line: ~ 4440,1220,4600,1220~
- Inside source: true
*** True Line Result
4440,1220,4600,1220
** Processing line: ~ 4440,1080,4440,1220~
- Inside source: true
*** True Line Result
4440,1080,4440,1220
** Processing line: ~ 4440,1080,4600,1020~
- Inside source: true
*** True Line Result
4440,1080,4600,1020
** Processing line: ~ 5080,1260,5340,1260~
- Inside source: true
*** True Line Result
5080,1260,5340,1260
** Processing line: ~ 4840,1240,5080,1260~
- Inside source: true
*** True Line Result
4840,1240,5080,1260
** Processing line: ~ 4600,1020,4940,1020~
- Inside source: true
*** True Line Result
4600,1020,4940,1020
** Processing line: ~ 4940,1020,5220,1020~
- Inside source: true
*** True Line Result
4940,1020,5220,1020
** Processing line: ~ 5220,1020,5560,960~
- Inside source: true
*** True Line Result
5220,1020,5560,960
** Processing line: ~ 5560,960,5660,860~
- Inside source: true
*** True Line Result
5560,960,5660,860
** Processing line: ~ 5660,740,5660,860~
- Inside source: true
*** True Line Result
5660,740,5660,860
** Processing line: ~ 5280,740,5660,740~
- Inside source: true
*** True Line Result
5280,740,5660,740
** Processing line: ~ 4940,780,5280,740~
- Inside source: true
*** True Line Result
4940,780,5280,740
** Processing line: ~ 4660,760,4940,780~
- Inside source: true
*** True Line Result
4660,760,4940,780
** Processing line: ~ 4500,700,4660,760~
- Inside source: true
*** True Line Result
4500,700,4660,760
** Processing line: ~ 4500,520,4500,700~
- Inside source: true
*** True Line Result
4500,520,4500,700
** Processing line: ~ 4500,520,4700,460~
- Inside source: true
*** True Line Result
4500,520,4700,460
** Processing line: ~ 4700,460,5080,440~
- Inside source: true
*** True Line Result
4700,460,5080,440
** Processing line: ~ 5440,420,5740,420~
- Inside source: true
*** True Line Result
5440,420,5740,420
** Processing line: ~ 5080,440,5440,420~
- Inside source: true
*** True Line Result
5080,440,5440,420
** Processing line: ~ 5740,420,5840,360~
- Inside source: true
*** True Line Result
5740,420,5840,360
** Processing line: ~ 5800,280,5840,360~
- Inside source: true
*** True Line Result
5800,280,5840,360
** Processing line: ~ 5560,280,5800,280~
- Inside source: true
*** True Line Result
5560,280,5800,280
** Processing line: ~ 4980,300,5280,320~
- Inside source: true
*** True Line Result
4980,300,5280,320
** Processing line: ~ 4360,320,4660,300~
- Inside source: true
*** True Line Result
4360,320,4660,300
** Processing line: ~ 4200,360,4360,320~
- Inside source: true
*** True Line Result
4200,360,4360,320
** Processing line: ~ 5280,320,5560,280~
- Inside source: true
*** True Line Result
5280,320,5560,280
** Processing line: ~ 4660,300,4980,300~
- Inside source: true
*** True Line Result
4660,300,4980,300
** Processing line: ~ 4140,480,4200,360~
- Inside source: true
*** True Line Result
4140,480,4200,360
** Processing line: ~ 4140,480,4140,640~
- Inside source: true
*** True Line Result
4140,480,4140,640
** Processing line: ~ 4140,640,4200,780~
- Inside source: true
*** True Line Result
4140,640,4200,780
** Processing line: ~ 4200,780,4200,980~
- Inside source: true
*** True Line Result
4200,780,4200,980
** Processing line: ~ 4200,980,4220,1180~
- Inside source: true
*** True Line Result
4200,980,4220,1180
** Processing line: ~ 4220,1400,4220,1180~
- Inside source: true
*** True Line Result
4220,1400,4220,1180
** Processing line: ~ 4220,1400,4260,1540~
- Inside source: true
*** True Line Result
4220,1400,4260,1540
** Processing line: ~ 4260,1540,4500,1540~
- Inside source: true
*** True Line Result
4260,1540,4500,1540
** Processing line: ~ 4500,1540,4700,1520~
- Inside source: true
*** True Line Result
4500,1540,4700,1520
** Processing line: ~ 4700,1520,4980,1540~
- Inside source: true
*** True Line Result
4700,1520,4980,1540
** Processing line: ~ 5280,1560,5400,1560~
- Inside source: true
*** True Line Result
5280,1560,5400,1560
** Processing line: ~ 4980,1540,5280,1560~
- Inside source: true
*** True Line Result
4980,1540,5280,1560
** Processing line: ~ 5400,1560,5400,1700~
- Inside source: true
*** True Line Result
5400,1560,5400,1700
** Processing line: ~ 5400,1780,5400,1700~
- Inside source: true
*** True Line Result
5400,1780,5400,1700
** Processing line: ~ 5340,1900,5400,1780~
- Inside source: true
*** True Line Result
5340,1900,5400,1780
** Processing line: ~ 5340,2020,5340,1900~
- Inside source: true
*** True Line Result
5340,2020,5340,1900
** Processing line: ~ 5340,2220,5340,2020~
- Inside source: true
*** True Line Result
5340,2220,5340,2020
** Processing line: ~ 5340,2220,5340,2420~
- Inside source: true
*** True Line Result
5340,2220,5340,2420
** Processing line: ~ 5340,2420,5340,2520~
- Inside source: true
*** True Line Result
5340,2420,5340,2520
** Processing line: ~ 5080,2600,5220,2580~
- Inside source: true
*** True Line Result
5080,2600,5220,2580
** Processing line: ~ 5220,2580,5340,2520~
- Inside source: true
*** True Line Result
5220,2580,5340,2520
** Processing line: ~ 4900,2580,5080,2600~
- Inside source: true
*** True Line Result
4900,2580,5080,2600
** Processing line: ~ 4700,2540,4900,2580~
- Inside source: true
*** True Line Result
4700,2540,4900,2580
** Processing line: ~ 4500,2540,4700,2540~
- Inside source: true
*** True Line Result
4500,2540,4700,2540
** Processing line: ~ 4220,2580,4340,2540~
- Inside source: true
*** True Line Result
4220,2580,4340,2540
** Processing line: ~ 4200,2700,4220,2580~
- Inside source: true
*** True Line Result
4200,2700,4220,2580
** Processing line: ~ 4340,2540,4500,2540~
- Inside source: true
*** True Line Result
4340,2540,4500,2540
** Processing line: ~ 3980,2740,4200,2700~
- Inside source: true
*** True Line Result
3980,2740,4200,2700
** Processing line: ~ 3840,2740,3980,2740~
- Inside source: true
*** True Line Result
3840,2740,3980,2740
** Processing line: ~ 3780,2640,3840,2740~
- Inside source: true
*** True Line Result
3780,2640,3840,2740
** Processing line: ~ 3780,2640,3780,2460~
- Inside source: true
*** True Line Result
3780,2640,3780,2460
** Processing line: ~ 3780,2280,3780,2460~
- Inside source: true
*** True Line Result
3780,2280,3780,2460
** Processing line: ~ 3620,2020,3780,2100~
- Inside source: true
*** True Line Result
3620,2020,3780,2100
** Processing line: ~ 3780,2280,3780,2100~
- Inside source: true
*** True Line Result
3780,2280,3780,2100
** Processing line: ~ 3360,2040,3620,2020~
- Inside source: true
*** True Line Result
3360,2040,3620,2020
** Processing line: ~ 3080,2040,3360,2040~
- Inside source: true
*** True Line Result
3080,2040,3360,2040
** Processing line: ~ 2840,2020,3080,2040~
- Inside source: true
*** True Line Result
2840,2020,3080,2040
** Processing line: ~ 2740,1940,2840,2020~
- Inside source: true
*** True Line Result
2740,1940,2840,2020
** Processing line: ~ 2740,1940,2800,1800~
- Inside source: true
*** True Line Result
2740,1940,2800,1800
** Processing line: ~ 2800,1640,2800,1800~
- Inside source: true
*** True Line Result
2800,1640,2800,1800
** Processing line: ~ 2800,1640,2800,1460~
- Inside source: true
*** True Line Result
2800,1640,2800,1460
** Processing line: ~ 2800,1300,2800,1460~
- Inside source: true
*** True Line Result
2800,1300,2800,1460
** Processing line: ~ 2700,1180,2800,1300~
- Inside source: true
*** True Line Result
2700,1180,2800,1300
** Processing line: ~ 2480,1140,2700,1180~
- Inside source: true
*** True Line Result
2480,1140,2700,1180
** Processing line: ~ 1580,1200,1720,1200~
- Inside source: true
*** True Line Result
1580,1200,1720,1200
** Processing line: ~ 2240,1180,2480,1140~
- Inside source: true
*** True Line Result
2240,1180,2480,1140
** Processing line: ~ 1960,1180,2240,1180~
- Inside source: true
*** True Line Result
1960,1180,2240,1180
** Processing line: ~ 1720,1200,1960,1180~
- Inside source: true
*** True Line Result
1720,1200,1960,1180
** Processing line: ~ 1500,1320,1580,1200~
- Inside source: true
*** True Line Result
1500,1320,1580,1200
** Processing line: ~ 1500,1440,1500,1320~
- Inside source: true
*** True Line Result
1500,1440,1500,1320
** Processing line: ~ 1500,1440,1760,1480~
- Inside source: true
*** True Line Result
1500,1440,1760,1480
** Processing line: ~ 1760,1480,1940,1480~
- Inside source: true
*** True Line Result
1760,1480,1940,1480
** Processing line: ~ 1940,1480,2140,1500~
- Inside source: true
*** True Line Result
1940,1480,2140,1500
** Processing line: ~ 2140,1500,2320,1520~
- Inside source: true
*** True Line Result
2140,1500,2320,1520
** Processing line: ~ 2400,1560,2400,1700~
- Inside source: true
*** True Line Result
2400,1560,2400,1700
** Processing line: ~ 2280,1820,2380,1780~
- Inside source: true
*** True Line Result
2280,1820,2380,1780
** Processing line: ~ 2320,1520,2400,1560~
- Inside source: true
*** True Line Result
2320,1520,2400,1560
** Processing line: ~ 2380,1780,2400,1700~
- Inside source: true
*** True Line Result
2380,1780,2400,1700
** Processing line: ~ 2080,1840,2280,1820~
- Inside source: true
*** True Line Result
2080,1840,2280,1820
** Processing line: ~ 1720,1820,2080,1840~
- Inside source: true
*** True Line Result
1720,1820,2080,1840
** Processing line: ~ 1420,1800,1720,1820~
- Inside source: true
*** True Line Result
1420,1800,1720,1820
** Processing line: ~ 1280,1800,1420,1800~
- Inside source: true
*** True Line Result
1280,1800,1420,1800
** Processing line: ~ 1240,1720,1280,1800~
- Inside source: true
*** True Line Result
1240,1720,1280,1800
** Processing line: ~ 1240,1720,1240,1600~
- Inside source: true
*** True Line Result
1240,1720,1240,1600
** Processing line: ~ 1240,1600,1280,1480~
- Inside source: true
*** True Line Result
1240,1600,1280,1480
** Processing line: ~ 1280,1340,1280,1480~
- Inside source: true
*** True Line Result
1280,1340,1280,1480
** Processing line: ~ 1180,1280,1280,1340~
- Inside source: true
*** True Line Result
1180,1280,1280,1340
** Processing line: ~ 1000,1280,1180,1280~
- Inside source: true
*** True Line Result
1000,1280,1180,1280
** Processing line: ~ 760,1280,1000,1280~
- Inside source: true
*** True Line Result
760,1280,1000,1280
** Processing line: ~ 360,1240,540,1260~
- Inside source: true
*** True Line Result
360,1240,540,1260
** Processing line: ~ 180,1220,360,1240~
- Inside source: true
*** True Line Result
180,1220,360,1240
** Processing line: ~ 540,1260,760,1280~
- Inside source: true
*** True Line Result
540,1260,760,1280
** Processing line: ~ 180,1080,180,1220~
- Inside source: true
*** True Line Result
180,1080,180,1220
** Processing line: ~ 180,1080,180,1000~
- Inside source: true
*** True Line Result
180,1080,180,1000
** Processing line: ~ 180,1000,360,940~
- Inside source: true
*** True Line Result
180,1000,360,940
** Processing line: ~ 360,940,540,960~
- Inside source: true
*** True Line Result
360,940,540,960
** Processing line: ~ 540,960,820,980~
- Inside source: true
*** True Line Result
540,960,820,980
** Processing line: ~ 1100,980,1200,920~
- Inside source: true
*** True Line Result
1100,980,1200,920
** Processing line: ~ 820,980,1100,980~
- Inside source: true
*** True Line Result
820,980,1100,980
** Processing line: ~ 6640,11860,6940,11920~
- Inside source: true
*** True Line Result
6640,11860,6940,11920
** Processing line: ~ 5200,11280,5500,11280~
- Inside source: true
*** True Line Result
5200,11280,5500,11280
** Processing line: ~ 4120,7330,4120,7230~
- Inside source: true
*** True Line Result
4120,7330,4120,7230
** Processing line: ~ 4120,7230,4660,7250~
- Inside source: true
*** True Line Result
4120,7230,4660,7250
** Processing line: ~ 4660,7250,4940,7250~
- Inside source: true
*** True Line Result
4660,7250,4940,7250
** Processing line: ~ 4940,7250,5050,7340~
- Inside source: true
*** True Line Result
4940,7250,5050,7340
** Processing line: ~ 5010,7400,5050,7340~
- Inside source: true
*** True Line Result
5010,7400,5050,7340
** Processing line: ~ 4680,7380,5010,7400~
- Inside source: true
*** True Line Result
4680,7380,5010,7400
** Processing line: ~ 4380,7370,4680,7380~
- Inside source: true
*** True Line Result
4380,7370,4680,7380
** Processing line: ~ 4120,7330,4360,7370~
- Inside source: true
*** True Line Result
4120,7330,4360,7370
** Processing line: ~ 4120,7670,4120,7760~
- Inside source: true
*** True Line Result
4120,7670,4120,7760
** Processing line: ~ 4120,7670,4280,7650~
- Inside source: true
*** True Line Result
4120,7670,4280,7650
** Processing line: ~ 4280,7650,4540,7660~
- Inside source: true
*** True Line Result
4280,7650,4540,7660
** Processing line: ~ 4550,7660,4820,7680~
- Inside source: true
*** True Line Result
4550,7660,4820,7680
** Processing line: ~ 4820,7680,4900,7730~
- Inside source: true
*** True Line Result
4820,7680,4900,7730
** Processing line: ~ 4880,7800,4900,7730~
- Inside source: true
*** True Line Result
4880,7800,4900,7730
** Processing line: ~ 4620,7820,4880,7800~
- Inside source: true
*** True Line Result
4620,7820,4880,7800
** Processing line: ~ 4360,7790,4620,7820~
- Inside source: true
*** True Line Result
4360,7790,4620,7820
** Processing line: ~ 4120,7760,4360,7790~
- Inside source: true
*** True Line Result
4120,7760,4360,7790
** Processing line: ~ 6840,6840,7040,6820~
- Inside source: true
*** True Line Result
6840,6840,7040,6820
** Processing line: ~ 5720,4880,6120,4880~
- Inside source: true
*** True Line Result
5720,4880,6120,4880
** Processing line: ~ 1200,920,1340,810~
- Inside source: true
*** True Line Result
1200,920,1340,810
** Processing line: ~ 1340,810,1520,790~
- Inside source: true
*** True Line Result
1340,810,1520,790
** Processing line: ~ 1520,790,1770,800~
- Inside source: true
*** True Line Result
1520,790,1770,800
** Processing line: ~ 2400,790,2600,750~
- Inside source: true
*** True Line Result
2400,790,2600,750
** Processing line: ~ 2600,750,2640,520~
- Inside source: true
*** True Line Result
2600,750,2640,520
** Processing line: ~ 2520,470,2640,520~
- Inside source: true
*** True Line Result
2520,470,2640,520
** Processing line: ~ 2140,470,2520,470~
- Inside source: true
*** True Line Result
2140,470,2520,470
** Processing line: ~ 1760,800,2090,800~
- Inside source: true
*** True Line Result
1760,800,2090,800
** Processing line: ~ 2080,800,2400,790~
- Inside source: true
*** True Line Result
2080,800,2400,790
** Processing line: ~ 1760,450,2140,470~
- Inside source: true
*** True Line Result
1760,450,2140,470
** Processing line: ~ 1420,450,1760,450~
- Inside source: true
*** True Line Result
1420,450,1760,450
** Processing line: ~ 1180,440,1420,450~
- Inside source: true
*** True Line Result
1180,440,1420,450
** Processing line: ~ 900,480,1180,440~
- Inside source: true
*** True Line Result
900,480,1180,440
** Processing line: ~ 640,450,900,480~
- Inside source: true
*** True Line Result
640,450,900,480
** Processing line: ~ 360,440,620,450~
- Inside source: true
*** True Line Result
360,440,620,450
** Processing line: ~ 120,430,360,440~
- Inside source: true
*** True Line Result
120,430,360,440
** Processing line: ~ 0,520,120,430~
- Inside source: true
*** True Line Result
0,520,120,430
** Processing line: ~ -20,780,0,520~
- Inside source: true
*** True Line Result
-20,780,0,520
** Processing line: ~ -20,780,-20,1020~
- Inside source: true
*** True Line Result
-20,780,-20,1020
** Processing line: ~ -20,1020,-20,1150~
- Inside source: true
*** True Line Result
-20,1020,-20,1150
** Processing line: ~ -20,1150,0,1300~
- Inside source: true
*** True Line Result
-20,1150,0,1300
** Processing line: ~ 0,1470,60,1530~
- Inside source: true
*** True Line Result
0,1470,60,1530
** Processing line: ~ 0,1300,0,1470~
- Inside source: true
*** True Line Result
0,1300,0,1470
** Processing line: ~ 60,1530,360,1530~
- Inside source: true
*** True Line Result
60,1530,360,1530
** Processing line: ~ 360,1530,660,1520~
- Inside source: true
*** True Line Result
360,1530,660,1520
** Processing line: ~ 660,1520,980,1520~
- Inside source: true
*** True Line Result
660,1520,980,1520
** Processing line: ~ 980,1520,1040,1520~
- Inside source: true
*** True Line Result
980,1520,1040,1520
** Processing line: ~ 1040,1520,1070,1560~
- Inside source: true
*** True Line Result
1040,1520,1070,1560
** Processing line: ~ 1070,1770,1070,1560~
- Inside source: true
*** True Line Result
1070,1770,1070,1560
** Processing line: ~ 1070,1770,1100,2010~
- Inside source: true
*** True Line Result
1070,1770,1100,2010
** Processing line: ~ 1070,2230,1100,2010~
- Inside source: true
*** True Line Result
1070,2230,1100,2010
** Processing line: ~ 1070,2240,1180,2340~
- Inside source: true
*** True Line Result
1070,2240,1180,2340
** Processing line: ~ 1180,2340,1580,2340~
- Inside source: true
*** True Line Result
1180,2340,1580,2340
** Processing line: ~ 1580,2340,1940,2350~
- Inside source: true
*** True Line Result
1580,2340,1940,2350
** Processing line: ~ 1940,2350,2440,2350~
- Inside source: true
*** True Line Result
1940,2350,2440,2350
** Processing line: ~ 2440,2350,2560,2380~
- Inside source: true
*** True Line Result
2440,2350,2560,2380
** Processing line: ~ 2560,2380,2600,2540~
- Inside source: true
*** True Line Result
2560,2380,2600,2540
** Processing line: ~ 2810,2640,3140,2680~
- Inside source: true
*** True Line Result
2810,2640,3140,2680
** Processing line: ~ 2600,2540,2810,2640~
- Inside source: true
*** True Line Result
2600,2540,2810,2640
** Processing line: ~ 3140,2680,3230,2780~
- Inside source: true
*** True Line Result
3140,2680,3230,2780
** Processing line: ~ 3230,2780,3260,2970~
- Inside source: true
*** True Line Result
3230,2780,3260,2970
** Processing line: ~ 3230,3220,3260,2970~
- Inside source: true
*** True Line Result
3230,3220,3260,2970
** Processing line: ~ 3200,3470,3230,3220~
- Inside source: true
*** True Line Result
3200,3470,3230,3220
** Processing line: ~ 3200,3480,3210,3760~
- Inside source: true
*** True Line Result
3200,3480,3210,3760
** Processing line: ~ 3210,3760,3210,4040~
- Inside source: true
*** True Line Result
3210,3760,3210,4040
** Processing line: ~ 3200,4040,3230,4310~
- Inside source: true
*** True Line Result
3200,4040,3230,4310
** Processing line: ~ 3210,4530,3230,4310~
- Inside source: true
*** True Line Result
3210,4530,3230,4310
** Processing line: ~ 3210,4530,3230,4730~
- Inside source: true
*** True Line Result
3210,4530,3230,4730
** Processing line: ~ 3230,4960,3230,4730~
- Inside source: true
*** True Line Result
3230,4960,3230,4730
** Processing line: ~ 3230,4960,3260,5190~
- Inside source: true
*** True Line Result
3230,4960,3260,5190
** Processing line: ~ 3170,5330,3260,5190~
- Inside source: true
*** True Line Result
3170,5330,3260,5190
** Processing line: ~ 2920,5330,3170,5330~
- Inside source: true
*** True Line Result
2920,5330,3170,5330
** Processing line: ~ 2660,5360,2920,5330~
- Inside source: true
*** True Line Result
2660,5360,2920,5330
** Processing line: ~ 2420,5330,2660,5360~
- Inside source: true
*** True Line Result
2420,5330,2660,5360
** Processing line: ~ 2200,5280,2400,5330~
- Inside source: true
*** True Line Result
2200,5280,2400,5330
** Processing line: ~ 2020,5280,2200,5280~
- Inside source: true
*** True Line Result
2020,5280,2200,5280
** Processing line: ~ 1840,5260,2020,5280~
- Inside source: true
*** True Line Result
1840,5260,2020,5280
** Processing line: ~ 1660,5280,1840,5260~
- Inside source: true
*** True Line Result
1660,5280,1840,5260
** Processing line: ~ 1500,5300,1660,5280~
- Inside source: true
*** True Line Result
1500,5300,1660,5280
** Processing line: ~ 1360,5270,1500,5300~
- Inside source: true
*** True Line Result
1360,5270,1500,5300
** Processing line: ~ 1200,5290,1340,5270~
- Inside source: true
*** True Line Result
1200,5290,1340,5270
** Processing line: ~ 1070,5400,1200,5290~
- Inside source: true
*** True Line Result
1070,5400,1200,5290
** Processing line: ~ 1040,5630,1070,5400~
- Inside source: true
*** True Line Result
1040,5630,1070,5400
** Processing line: ~ 1000,5900,1040,5630~
- Inside source: true
*** True Line Result
1000,5900,1040,5630
** Processing line: ~ 980,6170,1000,5900~
- Inside source: true
*** True Line Result
980,6170,1000,5900
** Processing line: ~ 980,6280,980,6170~
- Inside source: true
*** True Line Result
980,6280,980,6170
** Processing line: ~ 980,6540,980,6280~
- Inside source: true
*** True Line Result
980,6540,980,6280
** Processing line: ~ 980,6540,1040,6720~
- Inside source: true
*** True Line Result
980,6540,1040,6720
** Processing line: ~ 1040,6720,1360,6730~
- Inside source: true
*** True Line Result
1040,6720,1360,6730
** Processing line: ~ 1360,6730,1760,6710~
- Inside source: true
*** True Line Result
1360,6730,1760,6710
** Processing line: ~ 2110,6720,2420,6730~
- Inside source: true
*** True Line Result
2110,6720,2420,6730
** Processing line: ~ 1760,6710,2110,6720~
- Inside source: true
*** True Line Result
1760,6710,2110,6720
** Processing line: ~ 2420,6730,2640,6720~
- Inside source: true
*** True Line Result
2420,6730,2640,6720
** Processing line: ~ 2640,6720,2970,6720~
- Inside source: true
*** True Line Result
2640,6720,2970,6720
** Processing line: ~ 2970,6720,3160,6700~
- Inside source: true
*** True Line Result
2970,6720,3160,6700
** Processing line: ~ 3160,6700,3240,6710~
- Inside source: true
*** True Line Result
3160,6700,3240,6710
** Processing line: ~ 3240,6710,3260,6890~
- Inside source: true
*** True Line Result
3240,6710,3260,6890
** Processing line: ~ 3260,7020,3260,6890~
- Inside source: true
*** True Line Result
3260,7020,3260,6890
** Processing line: ~ 3230,7180,3260,7020~
- Inside source: true
*** True Line Result
3230,7180,3260,7020
** Processing line: ~ 3230,7350,3230,7180~
- Inside source: true
*** True Line Result
3230,7350,3230,7180
** Processing line: ~ 3210,7510,3230,7350~
- Inside source: true
*** True Line Result
3210,7510,3230,7350
** Processing line: ~ 3210,7510,3210,7690~
- Inside source: true
*** True Line Result
3210,7510,3210,7690
** Processing line: ~ 3210,7870,3210,7690~
- Inside source: true
*** True Line Result
3210,7870,3210,7690
** Processing line: ~ 3210,7870,3210,7980~
- Inside source: true
*** True Line Result
3210,7870,3210,7980
** Processing line: ~ 3200,8120,3210,7980~
- Inside source: true
*** True Line Result
3200,8120,3210,7980
** Processing line: ~ 3200,8330,3200,8120~
- Inside source: true
*** True Line Result
3200,8330,3200,8120
** Processing line: ~ 3160,8520,3200,8330~
- Inside source: true
*** True Line Result
3160,8520,3200,8330
** Processing line: ~ 2460,11100,2480,11020~
- Inside source: true
*** True Line Result
2460,11100,2480,11020
** Processing line: ~ 2200,11180,2460,11100~
- Inside source: true
*** True Line Result
2200,11180,2460,11100
** Processing line: ~ 1260,11350,1600,11320~
- Inside source: true
*** True Line Result
1260,11350,1600,11320
** Processing line: ~ 600,11430,930,11400~
- Inside source: true
*** True Line Result
600,11430,930,11400
** Processing line: ~ 180,11340,620,11430~
- Inside source: true
*** True Line Result
180,11340,620,11430
** Processing line: ~ 1600,11320,1910,11280~
- Inside source: true
*** True Line Result
1600,11320,1910,11280
** Processing line: ~ 1910,11280,2200,11180~
- Inside source: true
*** True Line Result
1910,11280,2200,11180
** Processing line: ~ 923.0029599285435,11398.99893503157,1264.002959928544,11351.99893503157~
- Inside source: true
*** True Line Result
923.0029599285435,11398.99893503157,1264.002959928544,11351.99893503157
** 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 - The Little Probe - Data - level_lava.txt~
- Header detected.
*** True Line Result
*** True Line Result
* Platformer - The Little Probe - Data - level_lava.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_platformer/the_little_probe/data/level_lava.txt~
- Inside source: true
*** True Line Result
# ./samples/99_genre_platformer/the_little_probe/data/level_lava.txt
** Processing line: ~ 100,10740,500,10780~
- Inside source: true
*** True Line Result
100,10740,500,10780
** Processing line: ~ 500,10780,960,10760~
- Inside source: true
*** True Line Result
500,10780,960,10760
** Processing line: ~ 960,10760,1340,10760~
- Inside source: true
*** True Line Result
960,10760,1340,10760
** Processing line: ~ 1380,10760,1820,10780~
- Inside source: true
*** True Line Result
1380,10760,1820,10780
** Processing line: ~ 1820,10780,2240,10780~
- Inside source: true
*** True Line Result
1820,10780,2240,10780
** Processing line: ~ 2280,10780,2740,10740~
- Inside source: true
*** True Line Result
2280,10780,2740,10740
** Processing line: ~ 2740,10740,3000,10780~
- Inside source: true
*** True Line Result
2740,10740,3000,10780
** Processing line: ~ 3000,10780,3140,11020~
- Inside source: true
*** True Line Result
3000,10780,3140,11020
** Processing line: ~ -520,8820,-480,9160~
- Inside source: true
*** True Line Result
-520,8820,-480,9160
** Processing line: ~ -520,8480,-520,8820~
- Inside source: true
*** True Line Result
-520,8480,-520,8820
** Processing line: ~ -520,8480,-480,8180~
- Inside source: true
*** True Line Result
-520,8480,-480,8180
** Processing line: ~ -480,8180,-200,8120~
- Inside source: true
*** True Line Result
-480,8180,-200,8120
** Processing line: ~ -200,8120,100,8220~
- Inside source: true
*** True Line Result
-200,8120,100,8220
** Processing line: ~ 100,8220,420,8240~
- Inside source: true
*** True Line Result
100,8220,420,8240
** Processing line: ~ 420,8240,760,8260~
- Inside source: true
*** True Line Result
420,8240,760,8260
** Processing line: ~ 760,8260,1140,8280~
- Inside source: true
*** True Line Result
760,8260,1140,8280
** Processing line: ~ 1140,8280,1500,8200~
- Inside source: true
*** True Line Result
1140,8280,1500,8200
** Processing line: ~ 1500,8200,1880,8240~
- Inside source: true
*** True Line Result
1500,8200,1880,8240
** Processing line: ~ 1880,8240,2240,8260~
- Inside source: true
*** True Line Result
1880,8240,2240,8260
** Processing line: ~ 2240,8260,2320,8480~
- Inside source: true
*** True Line Result
2240,8260,2320,8480
** Processing line: ~ 2320,8480,2380,8680~
- Inside source: true
*** True Line Result
2320,8480,2380,8680
** Processing line: ~ 2240,8860,2380,8680~
- Inside source: true
*** True Line Result
2240,8860,2380,8680
** Processing line: ~ 2240,9080,2240,8860~
- Inside source: true
*** True Line Result
2240,9080,2240,8860
** Processing line: ~ 2240,9080,2320,9260~
- Inside source: true
*** True Line Result
2240,9080,2320,9260
** Processing line: ~ 2320,9260,2480,9440~
- Inside source: true
*** True Line Result
2320,9260,2480,9440
** Processing line: ~ 2480,9440,2600,9640~
- Inside source: true
*** True Line Result
2480,9440,2600,9640
** Processing line: ~ 2480,9840,2600,9640~
- Inside source: true
*** True Line Result
2480,9840,2600,9640
** Processing line: ~ 2400,10020,2480,9840~
- Inside source: true
*** True Line Result
2400,10020,2480,9840
** Processing line: ~ 2240,10080,2400,10020~
- Inside source: true
*** True Line Result
2240,10080,2400,10020
** Processing line: ~ 1960,10080,2240,10080~
- Inside source: true
*** True Line Result
1960,10080,2240,10080
** Processing line: ~ 1720,10080,1960,10080~
- Inside source: true
*** True Line Result
1720,10080,1960,10080
** Processing line: ~ 1460,10080,1720,10080~
- Inside source: true
*** True Line Result
1460,10080,1720,10080
** Processing line: ~ 1180,10080,1420,10080~
- Inside source: true
*** True Line Result
1180,10080,1420,10080
** Processing line: ~ 900,10080,1180,10080~
- Inside source: true
*** True Line Result
900,10080,1180,10080
** Processing line: ~ 640,10080,900,10080~
- Inside source: true
*** True Line Result
640,10080,900,10080
** Processing line: ~ 640,10080,640,9900~
- Inside source: true
*** True Line Result
640,10080,640,9900
** Processing line: ~ 60,10520,100,10740~
- Inside source: true
*** True Line Result
60,10520,100,10740
** Processing line: ~ 40,10240,60,10520~
- Inside source: true
*** True Line Result
40,10240,60,10520
** Processing line: ~ 40,10240,40,9960~
- Inside source: true
*** True Line Result
40,10240,40,9960
** Processing line: ~ 40,9960,40,9680~
- Inside source: true
*** True Line Result
40,9960,40,9680
** Processing line: ~ 40,9680,40,9360~
- Inside source: true
*** True Line Result
40,9680,40,9360
** Processing line: ~ 40,9360,60,9080~
- Inside source: true
*** True Line Result
40,9360,60,9080
** Processing line: ~ 60,9080,100,8860~
- Inside source: true
*** True Line Result
60,9080,100,8860
** Processing line: ~ 100,8860,460,9040~
- Inside source: true
*** True Line Result
100,8860,460,9040
** Processing line: ~ 460,9040,760,9220~
- Inside source: true
*** True Line Result
460,9040,760,9220
** Processing line: ~ 760,9220,1140,9220~
- Inside source: true
*** True Line Result
760,9220,1140,9220
** Processing line: ~ 1140,9220,1720,9200~
- Inside source: true
*** True Line Result
1140,9220,1720,9200
** Processing line: ~ -660,11580,-600,11420~
- Inside source: true
*** True Line Result
-660,11580,-600,11420
** Processing line: ~ -660,11800,-660,11580~
- Inside source: true
*** True Line Result
-660,11800,-660,11580
** Processing line: ~ -660,12000,-660,11800~
- Inside source: true
*** True Line Result
-660,12000,-660,11800
** Processing line: ~ -660,12000,-600,12220~
- Inside source: true
*** True Line Result
-660,12000,-600,12220
** Processing line: ~ -600,12220,-600,12440~
- Inside source: true
*** True Line Result
-600,12220,-600,12440
** Processing line: ~ -600,12440,-600,12640~
- Inside source: true
*** True Line Result
-600,12440,-600,12640
** Processing line: ~ -600,11240,-260,11280~
- Inside source: true
*** True Line Result
-600,11240,-260,11280
** Processing line: ~ -260,11280,100,11240~
- Inside source: true
*** True Line Result
-260,11280,100,11240
** Processing line: ~ 9000,12360,9020,12400~
- Inside source: true
*** True Line Result
9000,12360,9020,12400
** Processing line: ~ 9020,12620,9020,12400~
- Inside source: true
*** True Line Result
9020,12620,9020,12400
** Processing line: ~ 9020,12840,9020,12620~
- Inside source: true
*** True Line Result
9020,12840,9020,12620
** Processing line: ~ 9020,13060,9020,12840~
- Inside source: true
*** True Line Result
9020,13060,9020,12840
** Processing line: ~ 9020,13060,9020,13240~
- Inside source: true
*** True Line Result
9020,13060,9020,13240
** Processing line: ~ 9020,13240,9020,13420~
- Inside source: true
*** True Line Result
9020,13240,9020,13420
** Processing line: ~ 9020,13420,9020,13600~
- Inside source: true
*** True Line Result
9020,13420,9020,13600
** Processing line: ~ 9020,13600,9020,13780~
- Inside source: true
*** True Line Result
9020,13600,9020,13780
** Processing line: ~ 8880,13900,9020,13780~
- Inside source: true
*** True Line Result
8880,13900,9020,13780
** Processing line: ~ 8560,13800,8880,13900~
- Inside source: true
*** True Line Result
8560,13800,8880,13900
** Processing line: ~ 8220,13780,8560,13800~
- Inside source: true
*** True Line Result
8220,13780,8560,13800
** Processing line: ~ 7860,13760,8220,13780~
- Inside source: true
*** True Line Result
7860,13760,8220,13780
** Processing line: ~ 7640,13780,7860,13760~
- Inside source: true
*** True Line Result
7640,13780,7860,13760
** Processing line: ~ 7360,13800,7640,13780~
- Inside source: true
*** True Line Result
7360,13800,7640,13780
** Processing line: ~ 7100,13800,7360,13800~
- Inside source: true
*** True Line Result
7100,13800,7360,13800
** Processing line: ~ 6540,13760,6800,13780~
- Inside source: true
*** True Line Result
6540,13760,6800,13780
** Processing line: ~ 6800,13780,7100,13800~
- Inside source: true
*** True Line Result
6800,13780,7100,13800
** Processing line: ~ 6280,13760,6540,13760~
- Inside source: true
*** True Line Result
6280,13760,6540,13760
** Processing line: ~ 5760,13760,6280,13760~
- Inside source: true
*** True Line Result
5760,13760,6280,13760
** Processing line: ~ 5220,13780,5760,13760~
- Inside source: true
*** True Line Result
5220,13780,5760,13760
** Processing line: ~ 4700,13760,5220,13780~
- Inside source: true
*** True Line Result
4700,13760,5220,13780
** Processing line: ~ 4200,13740,4700,13760~
- Inside source: true
*** True Line Result
4200,13740,4700,13760
** Processing line: ~ 3680,13720,4200,13740~
- Inside source: true
*** True Line Result
3680,13720,4200,13740
** Processing line: ~ 3140,13700,3680,13720~
- Inside source: true
*** True Line Result
3140,13700,3680,13720
** Processing line: ~ 2600,13680,3140,13700~
- Inside source: true
*** True Line Result
2600,13680,3140,13700
** Processing line: ~ 2040,13940,2600,13680~
- Inside source: true
*** True Line Result
2040,13940,2600,13680
** Processing line: ~ 1640,13940,2040,13940~
- Inside source: true
*** True Line Result
1640,13940,2040,13940
** Processing line: ~ 1200,13960,1640,13940~
- Inside source: true
*** True Line Result
1200,13960,1640,13940
** Processing line: ~ 840,14000,1200,13960~
- Inside source: true
*** True Line Result
840,14000,1200,13960
** Processing line: ~ 300,13960,840,14000~
- Inside source: true
*** True Line Result
300,13960,840,14000
** Processing line: ~ -200,13900,300,13960~
- Inside source: true
*** True Line Result
-200,13900,300,13960
** Processing line: ~ -600,12840,-600,12640~
- Inside source: true
*** True Line Result
-600,12840,-600,12640
** Processing line: ~ -600,13140,-600,12840~
- Inside source: true
*** True Line Result
-600,13140,-600,12840
** Processing line: ~ -600,13140,-600,13420~
- Inside source: true
*** True Line Result
-600,13140,-600,13420
** Processing line: ~ -600,13700,-600,13420~
- Inside source: true
*** True Line Result
-600,13700,-600,13420
** Processing line: ~ -600,13700,-600,13820~
- Inside source: true
*** True Line Result
-600,13700,-600,13820
** Processing line: ~ -600,13820,-200,13900~
- Inside source: true
*** True Line Result
-600,13820,-200,13900
** Processing line: ~ -600,11240,-560,11000~
- Inside source: true
*** True Line Result
-600,11240,-560,11000
** Processing line: ~ -560,11000,-480,10840~
- Inside source: true
*** True Line Result
-560,11000,-480,10840
** Processing line: ~ -520,10660,-480,10840~
- Inside source: true
*** True Line Result
-520,10660,-480,10840
** Processing line: ~ -520,10660,-520,10480~
- Inside source: true
*** True Line Result
-520,10660,-520,10480
** Processing line: ~ -520,10480,-520,10300~
- Inside source: true
*** True Line Result
-520,10480,-520,10300
** Processing line: ~ -520,10260,-480,10080~
- Inside source: true
*** True Line Result
-520,10260,-480,10080
** Processing line: ~ -480,9880,-440,10060~
- Inside source: true
*** True Line Result
-480,9880,-440,10060
** Processing line: ~ -520,9680,-480,9880~
- Inside source: true
*** True Line Result
-520,9680,-480,9880
** Processing line: ~ -520,9680,-480,9400~
- Inside source: true
*** True Line Result
-520,9680,-480,9400
** Processing line: ~ -480,9400,-480,9160~
- Inside source: true
*** True Line Result
-480,9400,-480,9160
** Processing line: ~ 1820,9880,2140,9800~
- Inside source: true
*** True Line Result
1820,9880,2140,9800
** Processing line: ~ 1540,9880,1820,9880~
- Inside source: true
*** True Line Result
1540,9880,1820,9880
** Processing line: ~ 1200,9920,1500,9880~
- Inside source: true
*** True Line Result
1200,9920,1500,9880
** Processing line: ~ 900,9880,1200,9920~
- Inside source: true
*** True Line Result
900,9880,1200,9920
** Processing line: ~ 640,9900,840,9880~
- Inside source: true
*** True Line Result
640,9900,840,9880
** Processing line: ~ 2380,8760,2800,8760~
- Inside source: true
*** True Line Result
2380,8760,2800,8760
** Processing line: ~ 2800,8760,2840,8660~
- Inside source: true
*** True Line Result
2800,8760,2840,8660
** Processing line: ~ 2840,8660,2840,8420~
- Inside source: true
*** True Line Result
2840,8660,2840,8420
** Processing line: ~ 2840,8160,2840,8420~
- Inside source: true
*** True Line Result
2840,8160,2840,8420
** Processing line: ~ 2800,7900,2840,8160~
- Inside source: true
*** True Line Result
2800,7900,2840,8160
** Processing line: ~ 2800,7900,2800,7720~
- Inside source: true
*** True Line Result
2800,7900,2800,7720
** Processing line: ~ 2800,7540,2800,7720~
- Inside source: true
*** True Line Result
2800,7540,2800,7720
** Processing line: ~ 2800,7540,2800,7360~
- Inside source: true
*** True Line Result
2800,7540,2800,7360
** Processing line: ~ 2700,7220,2800,7360~
- Inside source: true
*** True Line Result
2700,7220,2800,7360
** Processing line: ~ 2400,7220,2700,7220~
- Inside source: true
*** True Line Result
2400,7220,2700,7220
** Processing line: ~ 2080,7240,2400,7220~
- Inside source: true
*** True Line Result
2080,7240,2400,7220
** Processing line: ~ 1760,7320,2080,7240~
- Inside source: true
*** True Line Result
1760,7320,2080,7240
** Processing line: ~ 1380,7360,1720,7320~
- Inside source: true
*** True Line Result
1380,7360,1720,7320
** Processing line: ~ 1040,7400,1340,7360~
- Inside source: true
*** True Line Result
1040,7400,1340,7360
** Processing line: ~ 640,7400,1000,7420~
- Inside source: true
*** True Line Result
640,7400,1000,7420
** Processing line: ~ 300,7380,640,7400~
- Inside source: true
*** True Line Result
300,7380,640,7400
** Processing line: ~ 0,7300,240,7380~
- Inside source: true
*** True Line Result
0,7300,240,7380
** Processing line: ~ -300,7180,-60,7300~
- Inside source: true
*** True Line Result
-300,7180,-60,7300
** Processing line: ~ -380,6860,-360,7180~
- Inside source: true
*** True Line Result
-380,6860,-360,7180
** Processing line: ~ -380,6880,-360,6700~
- Inside source: true
*** True Line Result
-380,6880,-360,6700
** Processing line: ~ -360,6700,-260,6540~
- Inside source: true
*** True Line Result
-360,6700,-260,6540
** Processing line: ~ -260,6540,0,6520~
- Inside source: true
*** True Line Result
-260,6540,0,6520
** Processing line: ~ 0,6520,240,6640~
- Inside source: true
*** True Line Result
0,6520,240,6640
** Processing line: ~ 240,6640,460,6640~
- Inside source: true
*** True Line Result
240,6640,460,6640
** Processing line: ~ 460,6640,500,6480~
- Inside source: true
*** True Line Result
460,6640,500,6480
** Processing line: ~ 500,6260,500,6480~
- Inside source: true
*** True Line Result
500,6260,500,6480
** Processing line: ~ 460,6060,500,6260~
- Inside source: true
*** True Line Result
460,6060,500,6260
** Processing line: ~ 460,5860,460,6060~
- Inside source: true
*** True Line Result
460,5860,460,6060
** Processing line: ~ 460,5860,500,5640~
- Inside source: true
*** True Line Result
460,5860,500,5640
** Processing line: ~ 500,5640,540,5440~
- Inside source: true
*** True Line Result
500,5640,540,5440
** Processing line: ~ 540,5440,580,5220~
- Inside source: true
*** True Line Result
540,5440,580,5220
** Processing line: ~ 580,5220,580,5000~
- Inside source: true
*** True Line Result
580,5220,580,5000
** Processing line: ~ 580,4960,580,4740~
- Inside source: true
*** True Line Result
580,4960,580,4740
** Processing line: ~ 580,4740,960,4700~
- Inside source: true
*** True Line Result
580,4740,960,4700
** Processing line: ~ 960,4700,1140,4760~
- Inside source: true
*** True Line Result
960,4700,1140,4760
** Processing line: ~ 1140,4760,1420,4740~
- Inside source: true
*** True Line Result
1140,4760,1420,4740
** Processing line: ~ 1420,4740,1720,4700~
- Inside source: true
*** True Line Result
1420,4740,1720,4700
** Processing line: ~ 1720,4700,2000,4740~
- Inside source: true
*** True Line Result
1720,4700,2000,4740
** Processing line: ~ 2000,4740,2380,4760~
- Inside source: true
*** True Line Result
2000,4740,2380,4760
** Processing line: ~ 2380,4760,2700,4800~
- Inside source: true
*** True Line Result
2380,4760,2700,4800
** Processing line: ~ 1720,4600,1760,4300~
- Inside source: true
*** True Line Result
1720,4600,1760,4300
** Processing line: ~ 1760,4300,2200,4340~
- Inside source: true
*** True Line Result
1760,4300,2200,4340
** Processing line: ~ 2200,4340,2560,4340~
- Inside source: true
*** True Line Result
2200,4340,2560,4340
** Processing line: ~ 2560,4340,2740,4340~
- Inside source: true
*** True Line Result
2560,4340,2740,4340
** Processing line: ~ 2160,12580,2440,12400~
- Inside source: true
*** True Line Result
2160,12580,2440,12400
** Processing line: ~ 1820,12840,2160,12580~
- Inside source: true
*** True Line Result
1820,12840,2160,12580
** Processing line: ~ 1500,13080,1820,12840~
- Inside source: true
*** True Line Result
1500,13080,1820,12840
** Processing line: ~ 1140,13340,1500,13080~
- Inside source: true
*** True Line Result
1140,13340,1500,13080
** Processing line: ~ 1140,13340,1580,13220~
- Inside source: true
*** True Line Result
1140,13340,1580,13220
** Processing line: ~ 2110,13080,2520,13000~
- Inside source: true
*** True Line Result
2110,13080,2520,13000
** Processing line: ~ 2520,13000,2900,12800~
- Inside source: true
*** True Line Result
2520,13000,2900,12800
** Processing line: ~ 1580,13220,2110,13080~
- Inside source: true
*** True Line Result
1580,13220,2110,13080
** Processing line: ~ 2900,12800,3200,12680~
- Inside source: true
*** True Line Result
2900,12800,3200,12680
** Processing line: ~ 3200,12680,3440,12640~
- Inside source: true
*** True Line Result
3200,12680,3440,12640
** Processing line: ~ 3440,12640,3720,12460~
- Inside source: true
*** True Line Result
3440,12640,3720,12460
** Processing line: ~ 3720,12460,4040,12320~
- Inside source: true
*** True Line Result
3720,12460,4040,12320
** Processing line: ~ 4040,12320,4360,12200~
- Inside source: true
*** True Line Result
4040,12320,4360,12200
** Processing line: ~ 4360,11940,4380,12180~
- Inside source: true
*** True Line Result
4360,11940,4380,12180
** Processing line: ~ 4360,11700,4360,11940~
- Inside source: true
*** True Line Result
4360,11700,4360,11940
** Processing line: ~ 4360,11700,4540,11500~
- Inside source: true
*** True Line Result
4360,11700,4540,11500
** Processing line: ~ 4540,11500,4880,11540~
- Inside source: true
*** True Line Result
4540,11500,4880,11540
** Processing line: ~ 6000,11660,6280,11640~
- Inside source: true
*** True Line Result
6000,11660,6280,11640
** Processing line: ~ 5440,11600,5720,11610~
- Inside source: true
*** True Line Result
5440,11600,5720,11610
** Processing line: ~ 5720,11610,6000,11660~
- Inside source: true
*** True Line Result
5720,11610,6000,11660
** Processing line: ~ 6280,11640,6760,11720~
- Inside source: true
*** True Line Result
6280,11640,6760,11720
** Processing line: ~ 6760,11720,7060,11780~
- Inside source: true
*** True Line Result
6760,11720,7060,11780
** Processing line: ~ 7060,11780,7360,11810~
- Inside source: true
*** True Line Result
7060,11780,7360,11810
** Processing line: ~ 7360,11810,7640,11840~
- Inside source: true
*** True Line Result
7360,11810,7640,11840
** Processing line: ~ 7640,11840,8000,11830~
- Inside source: true
*** True Line Result
7640,11840,8000,11830
** Processing line: ~ 8000,11830,8320,11850~
- Inside source: true
*** True Line Result
8000,11830,8320,11850
** Processing line: ~ 8320,11850,8390,11800~
- Inside source: true
*** True Line Result
8320,11850,8390,11800
** Processing line: ~ 8330,11760,8390,11800~
- Inside source: true
*** True Line Result
8330,11760,8390,11800
** Processing line: ~ 8160,11760,8330,11760~
- Inside source: true
*** True Line Result
8160,11760,8330,11760
** Processing line: ~ 7910,11750,8160,11760~
- Inside source: true
*** True Line Result
7910,11750,8160,11760
** Processing line: ~ 7660,11740,7900,11750~
- Inside source: true
*** True Line Result
7660,11740,7900,11750
** Processing line: ~ 7400,11730,7660,11740~
- Inside source: true
*** True Line Result
7400,11730,7660,11740
** Processing line: ~ 7160,11680,7400,11730~
- Inside source: true
*** True Line Result
7160,11680,7400,11730
** Processing line: ~ 7080,11570,7160,11680~
- Inside source: true
*** True Line Result
7080,11570,7160,11680
** Processing line: ~ 7080,11570,7100,11350~
- Inside source: true
*** True Line Result
7080,11570,7100,11350
** Processing line: ~ 7100,11350,7440,11280~
- Inside source: true
*** True Line Result
7100,11350,7440,11280
** Processing line: ~ 7440,11280,7940,11280~
- Inside source: true
*** True Line Result
7440,11280,7940,11280
** Processing line: ~ 7960,11280,8360,11280~
- Inside source: true
*** True Line Result
7960,11280,8360,11280
** Processing line: ~ 5840,11540,6650,11170~
- Inside source: true
*** True Line Result
5840,11540,6650,11170
** Processing line: ~ 4880,11540,5440,11600~
- Inside source: true
*** True Line Result
4880,11540,5440,11600
** Processing line: ~ 3410,11830,3420,11300~
- Inside source: true
*** True Line Result
3410,11830,3420,11300
** Processing line: ~ 3410,11260,3520,10920~
- Inside source: true
*** True Line Result
3410,11260,3520,10920
** Processing line: ~ 3520,10590,3520,10920~
- Inside source: true
*** True Line Result
3520,10590,3520,10920
** Processing line: ~ 3520,10590,3540,10260~
- Inside source: true
*** True Line Result
3520,10590,3540,10260
** Processing line: ~ 3520,9900,3540,10240~
- Inside source: true
*** True Line Result
3520,9900,3540,10240
** Processing line: ~ 3520,9900,3640,9590~
- Inside source: true
*** True Line Result
3520,9900,3640,9590
** Processing line: ~ 3640,9570,4120,9590~
- Inside source: true
*** True Line Result
3640,9570,4120,9590
** Processing line: ~ 4140,9590,4600,9680~
- Inside source: true
*** True Line Result
4140,9590,4600,9680
** Processing line: ~ 4620,9680,5030,9730~
- Inside source: true
*** True Line Result
4620,9680,5030,9730
** Processing line: ~ 5120,9750,5520,9800~
- Inside source: true
*** True Line Result
5120,9750,5520,9800
** Processing line: ~ 5620,9820,6080,9800~
- Inside source: true
*** True Line Result
5620,9820,6080,9800
** Processing line: ~ 6130,9810,6580,9820~
- Inside source: true
*** True Line Result
6130,9810,6580,9820
** Processing line: ~ 6640,9820,6800,9700~
- Inside source: true
*** True Line Result
6640,9820,6800,9700
** Processing line: ~ 6780,9400,6800,9700~
- Inside source: true
*** True Line Result
6780,9400,6800,9700
** Processing line: ~ 6780,9400,6840,9140~
- Inside source: true
*** True Line Result
6780,9400,6840,9140
** Processing line: ~ 6820,8860,6840,9120~
- Inside source: true
*** True Line Result
6820,8860,6840,9120
** Processing line: ~ 6780,8600,6820,8830~
- Inside source: true
*** True Line Result
6780,8600,6820,8830
** Processing line: ~ 6720,8350,6780,8570~
- Inside source: true
*** True Line Result
6720,8350,6780,8570
** Processing line: ~ 6480,8340,6720,8320~
- Inside source: true
*** True Line Result
6480,8340,6720,8320
** Processing line: ~ 6260,8400,6480,8340~
- Inside source: true
*** True Line Result
6260,8400,6480,8340
** Processing line: ~ 6050,8580,6240,8400~
- Inside source: true
*** True Line Result
6050,8580,6240,8400
** Processing line: ~ 5760,8630,6040,8590~
- Inside source: true
*** True Line Result
5760,8630,6040,8590
** Processing line: ~ 5520,8690,5740,8630~
- Inside source: true
*** True Line Result
5520,8690,5740,8630
** Processing line: ~ 5120,8690,5450,8700~
- Inside source: true
*** True Line Result
5120,8690,5450,8700
** Processing line: ~ 4570,8670,5080,8690~
- Inside source: true
*** True Line Result
4570,8670,5080,8690
** Processing line: ~ 4020,8610,4540,8670~
- Inside source: true
*** True Line Result
4020,8610,4540,8670
** Processing line: ~ 3540,8480,4020,8610~
- Inside source: true
*** True Line Result
3540,8480,4020,8610
** Processing line: ~ 3520,8230,3520,8480~
- Inside source: true
*** True Line Result
3520,8230,3520,8480
** Processing line: ~ 3520,7930,3520,8230~
- Inside source: true
*** True Line Result
3520,7930,3520,8230
** Processing line: ~ 3520,7930,3540,7630~
- Inside source: true
*** True Line Result
3520,7930,3540,7630
** Processing line: ~ 3480,7320,3540,7610~
- Inside source: true
*** True Line Result
3480,7320,3540,7610
** Processing line: ~ 3480,7280,3500,7010~
- Inside source: true
*** True Line Result
3480,7280,3500,7010
** Processing line: ~ 3500,6980,3680,6850~
- Inside source: true
*** True Line Result
3500,6980,3680,6850
** Processing line: ~ 3680,6850,4220,6840~
- Inside source: true
*** True Line Result
3680,6850,4220,6840
** Processing line: ~ 4230,6840,4760,6850~
- Inside source: true
*** True Line Result
4230,6840,4760,6850
** Processing line: ~ 4780,6850,5310,6860~
- Inside source: true
*** True Line Result
4780,6850,5310,6860
** Processing line: ~ 5310,6860,5720,6940~
- Inside source: true
*** True Line Result
5310,6860,5720,6940
** Processing line: ~ 5720,6940,5880,7250~
- Inside source: true
*** True Line Result
5720,6940,5880,7250
** Processing line: ~ 5880,7250,5900,7520~
- Inside source: true
*** True Line Result
5880,7250,5900,7520
** Processing line: ~ 100,11240,440,11300~
- Inside source: true
*** True Line Result
100,11240,440,11300
** Processing line: ~ 440,11300,760,11330~
- Inside source: true
*** True Line Result
440,11300,760,11330
** Processing line: ~ 1480,11280,1840,11230~
- Inside source: true
*** True Line Result
1480,11280,1840,11230
** Processing line: ~ 2200,11130,2360,11090~
- Inside source: true
*** True Line Result
2200,11130,2360,11090
** Processing line: ~ 1840,11230,2200,11130~
- Inside source: true
*** True Line Result
1840,11230,2200,11130
** 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 Narrative - Choose Your Own Adventure - decision.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Choose Your Own Adventure - decision.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_narrative/choose_your_own_adventure/app/decision.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/choose_your_own_adventure/app/decision.rb
** Processing line: ~ # Hey there! Welcome to Four Decisions. Here is how you~
- Inside source: true
*** True Line Result
# Hey there! Welcome to Four Decisions. Here is how you
** Processing line: ~ # create your decision tree. Remove =being and =end from the text to~
- Inside source: true
*** True Line Result
# create your decision tree. Remove =being and =end from the text to
** Processing line: ~ # enable the game (just save the file). Change stuff and see what happens!~
- Inside source: true
*** True Line Result
# enable the game (just save the file). Change stuff and see what happens!
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def game~
- Inside source: true
*** True Line Result
def game
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ starting_decision: :stormy_night,~
- Inside source: true
*** True Line Result
starting_decision: :stormy_night,
** Processing line: ~ decisions: {~
- Inside source: true
*** True Line Result
decisions: {
** Processing line: ~ stormy_night: {~
- Inside source: true
*** True Line Result
stormy_night: {
** Processing line: ~ description: 'It was a dark and stormy night. (storyline located in decision.rb)',~
- Inside source: true
*** True Line Result
description: 'It was a dark and stormy night. (storyline located in decision.rb)',
** Processing line: ~ option_one: {~
- Inside source: true
*** True Line Result
option_one: {
** Processing line: ~ description: 'Go to sleep.',~
- Inside source: true
*** True Line Result
description: 'Go to sleep.',
** Processing line: ~ decision: :nap~
- Inside source: true
*** True Line Result
decision: :nap
** Processing line: ~ },~
- Inside source: true
*** True Line Result
},
** Processing line: ~ option_two: {~
- Inside source: true
*** True Line Result
option_two: {
** Processing line: ~ description: 'Watch a movie.',~
- Inside source: true
*** True Line Result
description: 'Watch a movie.',
** Processing line: ~ decision: :movie~
- Inside source: true
*** True Line Result
decision: :movie
** Processing line: ~ },~
- Inside source: true
*** True Line Result
},
** Processing line: ~ option_three: {~
- Inside source: true
*** True Line Result
option_three: {
** Processing line: ~ description: 'Go outside.',~
- Inside source: true
*** True Line Result
description: 'Go outside.',
** Processing line: ~ decision: :go_outside~
- Inside source: true
*** True Line Result
decision: :go_outside
** Processing line: ~ },~
- Inside source: true
*** True Line Result
},
** Processing line: ~ option_four: {~
- Inside source: true
*** True Line Result
option_four: {
** Processing line: ~ description: 'Get a snack.',~
- Inside source: true
*** True Line Result
description: 'Get a snack.',
** Processing line: ~ decision: :get_a_snack~
- Inside source: true
*** True Line Result
decision: :get_a_snack
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~ },~
- Inside source: true
*** True Line Result
},
** Processing line: ~ nap: {~
- Inside source: true
*** True Line Result
nap: {
** Processing line: ~ description: 'You took a nap. The end.',~
- Inside source: true
*** True Line Result
description: 'You took a nap. The end.',
** Processing line: ~ option_one: {~
- Inside source: true
*** True Line Result
option_one: {
** Processing line: ~ description: 'Start over.',~
- Inside source: true
*** True Line Result
description: 'Start over.',
** Processing line: ~ decision: :stormy_night~
- Inside source: true
*** True Line Result
decision: :stormy_night
** 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: ~ }~
- 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
#+end_src
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* Rpg Narrative - Choose Your Own Adventure - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Choose Your Own Adventure - 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_narrative/choose_your_own_adventure/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/choose_your_own_adventure/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The values can be found~
- Inside source: true
*** True Line Result
- Hashes: Collection of unique keys and their corresponding values. The values can be found
** Processing line: ~ using their keys.~
- Inside source: true
*** True Line Result
using their keys.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ In this sample app, the decisions needed for the game are stored in a hash. In fact, the~
- Inside source: true
*** True Line Result
In this sample app, the decisions needed for the game are stored in a hash. In fact, the
** Processing line: ~ decision.rb file contains hashes inside of other hashes!~
- Inside source: true
*** True Line Result
decision.rb file contains hashes inside of other hashes!
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Each option is a key in the first hash, but also contains a hash (description and~
- Inside source: true
*** True Line Result
Each option is a key in the first hash, but also contains a hash (description and
** Processing line: ~ decision being its keys) as its value.~
- Inside source: true
*** True Line Result
decision being its keys) as its value.
** Processing line: ~ Go into the decision.rb file and take a look before diving into the code below.~
- Inside source: true
*** True Line Result
Go into the decision.rb file and take a look before diving into the code below.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. The values generate a label.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.keyboard.key_down.KEY: Determines if a key is in the down state or pressed down.~
- Inside source: true
*** True Line Result
- args.keyboard.key_down.KEY: Determines if a key is in the down state or pressed down.
** Processing line: ~ For more information about the keyboard, go to mygame/documentation/06-keyboard.md.~
- Inside source: true
*** True Line Result
For more information about the keyboard, go to mygame/documentation/06-keyboard.md.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - String interpolation: uses #{} syntax; everything between the #{ and the } is evaluated~
- Inside source: true
*** True Line Result
- String interpolation: uses #{} syntax; everything between the #{ and the } is evaluated
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
- Inside source: true
*** True Line Result
as Ruby code, and the placeholder is replaced with its corresponding value or 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: ~ # This sample app provides users with a story and multiple decisions that they can choose to make.~
- Inside source: true
*** True Line Result
# This sample app provides users with a story and multiple decisions that they can choose to make.
** Processing line: ~ # Users can make a decision using their keyboard, and the story will move forward based on user choices.~
- Inside source: true
*** True Line Result
# Users can make a decision using their keyboard, and the story will move forward based on user choices.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The decisions available to users are stored in the decision.rb file.~
- Inside source: true
*** True Line Result
# The decisions available to users are stored in the decision.rb file.
** Processing line: ~ # We must have access to it for the game to function properly.~
- Inside source: true
*** True Line Result
# We must have access to it for the game to function properly.
** Processing line: ~ GAME_FILE = 'app/decision.rb' # found in app folder~
- Inside source: true
*** True Line Result
GAME_FILE = 'app/decision.rb' # found in app folder
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ require GAME_FILE # require used to load another file, import class/method definitions~
- Inside source: true
*** True Line Result
require GAME_FILE # require used to load another file, import class/method definitions
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Instructions are given using labels to users if they have not yet set up their story in the decision.rb file.~
- Inside source: true
*** True Line Result
# Instructions are given using labels to users if they have not yet set up their story in the decision.rb file.
** Processing line: ~ # Otherwise, the game is run.~
- Inside source: true
*** True Line Result
# Otherwise, the game is run.
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ if !args.state.loaded && !respond_to?(:game) # if game is not loaded and not responding to game symbol's method~
- Inside source: true
*** True Line Result
if !args.state.loaded && !respond_to?(:game) # if game is not loaded and not responding to game symbol's method
** Processing line: ~ args.labels << [640, 370, 'Hey there! Welcome to Four Decisions.', 0, 1] # a welcome label is shown~
- Inside source: true
*** True Line Result
args.labels << [640, 370, 'Hey there! Welcome to Four Decisions.', 0, 1] # a welcome label is shown
** Processing line: ~ args.labels << [640, 340, 'Go to the file called decision.rb and tell me your story.', 0, 1]~
- Inside source: true
*** True Line Result
args.labels << [640, 340, 'Go to the file called decision.rb and tell me your story.', 0, 1]
** Processing line: ~ elsif respond_to?(:game) # otherwise, if responds to game~
- Inside source: true
*** True Line Result
elsif respond_to?(:game) # otherwise, if responds to game
** Processing line: ~ args.state.loaded = true~
- Inside source: true
*** True Line Result
args.state.loaded = true
** Processing line: ~ tick_game args # calls tick_game method, runs game~
- Inside source: true
*** True Line Result
tick_game args # calls tick_game method, runs game
** 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.mod_zero? 60 # update every 60 frames~
- Inside source: true
*** True Line Result
if args.state.tick_count.mod_zero? 60 # update every 60 frames
** Processing line: ~ t = args.gtk.ffi_file.mtime GAME_FILE # mtime returns modification time for named file~
- Inside source: true
*** True Line Result
t = args.gtk.ffi_file.mtime GAME_FILE # mtime returns modification time for named file
** Processing line: ~ if t != args.state.mtime~
- Inside source: true
*** True Line Result
if t != args.state.mtime
** Processing line: ~ args.state.mtime = t~
- Inside source: true
*** True Line Result
args.state.mtime = t
** Processing line: ~ require GAME_FILE # require used to load file~
- Inside source: true
*** True Line Result
require GAME_FILE # require used to load file
** Processing line: ~ args.state.game_definition = nil # game definition and decision are empty~
- Inside source: true
*** True Line Result
args.state.game_definition = nil # game definition and decision are empty
** Processing line: ~ args.state.decision_id = nil~
- Inside source: true
*** True Line Result
args.state.decision_id = nil
** 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: ~ # Runs methods needed for game to function properly~
- Inside source: true
*** True Line Result
# Runs methods needed for game to function properly
** Processing line: ~ # Creates a rectangular border around the screen~
- Inside source: true
*** True Line Result
# Creates a rectangular border around the screen
** Processing line: ~ def tick_game args~
- Inside source: true
*** True Line Result
def tick_game args
** Processing line: ~ defaults args~
- Inside source: true
*** True Line Result
defaults args
** Processing line: ~ args.borders << args.grid.rect~
- Inside source: true
*** True Line Result
args.borders << args.grid.rect
** Processing line: ~ render_decision args~
- Inside source: true
*** True Line Result
render_decision args
** Processing line: ~ process_inputs args~
- Inside source: true
*** True Line Result
process_inputs args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets default values and uses decision.rb file to define game and decision_id~
- Inside source: true
*** True Line Result
# Sets default values and uses decision.rb file to define game and decision_id
** Processing line: ~ # variable using the starting decision~
- Inside source: true
*** True Line Result
# variable using the starting decision
** Processing line: ~ def defaults args~
- Inside source: true
*** True Line Result
def defaults args
** Processing line: ~ args.state.game_definition ||= game~
- Inside source: true
*** True Line Result
args.state.game_definition ||= game
** Processing line: ~ args.state.decision_id ||= args.state.game_definition[:starting_decision]~
- Inside source: true
*** True Line Result
args.state.decision_id ||= args.state.game_definition[:starting_decision]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs the possible decision descriptions the user can choose onto the screen~
- Inside source: true
*** True Line Result
# Outputs the possible decision descriptions the user can choose onto the screen
** Processing line: ~ # as well as what key to press on their keyboard to make their decision~
- Inside source: true
*** True Line Result
# as well as what key to press on their keyboard to make their decision
** Processing line: ~ def render_decision args~
- Inside source: true
*** True Line Result
def render_decision args
** Processing line: ~ decision = current_decision args~
- Inside source: true
*** True Line Result
decision = current_decision args
** Processing line: ~ # text is either the value of decision's description key or warning that no description exists~
- Inside source: true
*** True Line Result
# text is either the value of decision's description key or warning that no description exists
** Processing line: ~ args.labels << [640, 360, decision[:description] || "No definition found for #{args.state.decision_id}. Please update decision.rb.", 0, 1] # uses string interpolation~
- Inside source: true
*** True Line Result
args.labels << [640, 360, decision[:description] || "No definition found for #{args.state.decision_id}. Please update decision.rb.", 0, 1] # uses string interpolation
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # All decisions are stored in a hash~
- Inside source: true
*** True Line Result
# All decisions are stored in a hash
** Processing line: ~ # The descriptions output onto the screen are the values for the description keys of the hash.~
- Inside source: true
*** True Line Result
# The descriptions output onto the screen are the values for the description keys of the hash.
** Processing line: ~ if decision[:option_one]~
- Inside source: true
*** True Line Result
if decision[:option_one]
** Processing line: ~ args.labels << [10, 360, decision[:option_one][:description], 0, 0] # option one's description label~
- Inside source: true
*** True Line Result
args.labels << [10, 360, decision[:option_one][:description], 0, 0] # option one's description label
** Processing line: ~ args.labels << [10, 335, "(Press 'left' on the keyboard to select this decision)", -5, 0] # label of what key to press to select the decision~
- Inside source: true
*** True Line Result
args.labels << [10, 335, "(Press 'left' on the keyboard to select this decision)", -5, 0] # label of what key to press to select the decision
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if decision[:option_two]~
- Inside source: true
*** True Line Result
if decision[:option_two]
** Processing line: ~ args.labels << [1270, 360, decision[:option_two][:description], 0, 2] # option two's description~
- Inside source: true
*** True Line Result
args.labels << [1270, 360, decision[:option_two][:description], 0, 2] # option two's description
** Processing line: ~ args.labels << [1270, 335, "(Press 'right' on the keyboard to select this decision)", -5, 2]~
- Inside source: true
*** True Line Result
args.labels << [1270, 335, "(Press 'right' on the keyboard to select this decision)", -5, 2]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if decision[:option_three]~
- Inside source: true
*** True Line Result
if decision[:option_three]
** Processing line: ~ args.labels << [640, 45, decision[:option_three][:description], 0, 1] # option three's description~
- Inside source: true
*** True Line Result
args.labels << [640, 45, decision[:option_three][:description], 0, 1] # option three's description
** Processing line: ~ args.labels << [640, 20, "(Press 'down' on the keyboard to select this decision)", -5, 1]~
- Inside source: true
*** True Line Result
args.labels << [640, 20, "(Press 'down' on the keyboard to select this decision)", -5, 1]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if decision[:option_four]~
- Inside source: true
*** True Line Result
if decision[:option_four]
** Processing line: ~ args.labels << [640, 700, decision[:option_four][:description], 0, 1] # option four's description~
- Inside source: true
*** True Line Result
args.labels << [640, 700, decision[:option_four][:description], 0, 1] # option four's description
** Processing line: ~ args.labels << [640, 675, "(Press 'up' on the keyboard to select this decision)", -5, 1]~
- Inside source: true
*** True Line Result
args.labels << [640, 675, "(Press 'up' on the keyboard to select this decision)", -5, 1]
** 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 keyboard input from the user to make a decision~
- Inside source: true
*** True Line Result
# Uses keyboard input from the user to make a decision
** Processing line: ~ # Assigns the decision as the value of the decision_id variable~
- Inside source: true
*** True Line Result
# Assigns the decision as the value of the decision_id variable
** Processing line: ~ def process_inputs args~
- Inside source: true
*** True Line Result
def process_inputs args
** Processing line: ~ decision = current_decision args # calls current_decision method~
- Inside source: true
*** True Line Result
decision = current_decision args # calls current_decision method
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.keyboard.key_down.left! && decision[:option_one] # if left key pressed and option one exists~
- Inside source: true
*** True Line Result
if args.keyboard.key_down.left! && decision[:option_one] # if left key pressed and option one exists
** Processing line: ~ args.state.decision_id = decision[:option_one][:decision] # value of option one's decision hash key is set to decision_id~
- Inside source: true
*** True Line Result
args.state.decision_id = decision[:option_one][:decision] # value of option one's decision hash key is set to decision_id
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.keyboard.key_down.right! && decision[:option_two] # if right key pressed and option two exists~
- Inside source: true
*** True Line Result
if args.keyboard.key_down.right! && decision[:option_two] # if right key pressed and option two exists
** Processing line: ~ args.state.decision_id = decision[:option_two][:decision] # value of option two's decision hash key is set to decision_id~
- Inside source: true
*** True Line Result
args.state.decision_id = decision[:option_two][:decision] # value of option two's decision hash key is set to decision_id
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.keyboard.key_down.down! && decision[:option_three] # if down key pressed and option three exists~
- Inside source: true
*** True Line Result
if args.keyboard.key_down.down! && decision[:option_three] # if down key pressed and option three exists
** Processing line: ~ args.state.decision_id = decision[:option_three][:decision] # value of option three's decision hash key is set to decision_id~
- Inside source: true
*** True Line Result
args.state.decision_id = decision[:option_three][:decision] # value of option three's decision hash key is set to decision_id
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.keyboard.key_down.up! && decision[:option_four] # if up key pressed and option four exists~
- Inside source: true
*** True Line Result
if args.keyboard.key_down.up! && decision[:option_four] # if up key pressed and option four exists
** Processing line: ~ args.state.decision_id = decision[:option_four][:decision] # value of option four's decision hash key is set to decision_id~
- Inside source: true
*** True Line Result
args.state.decision_id = decision[:option_four][:decision] # value of option four's decision hash key is set to decision_id
** 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 decision_id's value to keep track of current decision being made~
- Inside source: true
*** True Line Result
# Uses decision_id's value to keep track of current decision being made
** Processing line: ~ def current_decision args~
- Inside source: true
*** True Line Result
def current_decision args
** Processing line: ~ args.state.game_definition[:decisions][args.state.decision_id] || {} # either has value or is empty~
- Inside source: true
*** True Line Result
args.state.game_definition[:decisions][args.state.decision_id] || {} # either has value or is empty
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Resets the game.~
- Inside source: true
*** True Line Result
# Resets the game.
** 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: ~* Rpg Narrative - Return Of Serenity - lowrez_simulator.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - lowrez_simulator.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_narrative/return_of_serenity/app/lowrez_simulator.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/lowrez_simulator.rb
** Processing line: ~ ###################################################################################~
- Inside source: true
*** True Line Result
###################################################################################
** Processing line: ~ # YOU CAN PLAY AROUND WITH THE CODE BELOW, BUT USE CAUTION AS THIS IS WHAT EMULATES~
- Inside source: true
*** True Line Result
# YOU CAN PLAY AROUND WITH THE CODE BELOW, BUT USE CAUTION AS THIS IS WHAT EMULATES
** Processing line: ~ # THE 64x64 CANVAS.~
- Inside source: true
*** True Line Result
# THE 64x64 CANVAS.
** Processing line: ~ ###################################################################################~
- Inside source: true
*** True Line Result
###################################################################################
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ TINY_RESOLUTION = 64~
- Inside source: true
*** True Line Result
TINY_RESOLUTION = 64
** Processing line: ~ TINY_SCALE = 720.fdiv(TINY_RESOLUTION + 5)~
- Inside source: true
*** True Line Result
TINY_SCALE = 720.fdiv(TINY_RESOLUTION + 5)
** Processing line: ~ CENTER_OFFSET = 10~
- Inside source: true
*** True Line Result
CENTER_OFFSET = 10
** Processing line: ~ EMULATED_FONT_SIZE = 20~
- Inside source: true
*** True Line Result
EMULATED_FONT_SIZE = 20
** Processing line: ~ EMULATED_FONT_X_ZERO = 0~
- Inside source: true
*** True Line Result
EMULATED_FONT_X_ZERO = 0
** Processing line: ~ EMULATED_FONT_Y_ZERO = 46~
- Inside source: true
*** True Line Result
EMULATED_FONT_Y_ZERO = 46
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ sprites = []~
- Inside source: true
*** True Line Result
sprites = []
** Processing line: ~ labels = []~
- Inside source: true
*** True Line Result
labels = []
** Processing line: ~ borders = []~
- Inside source: true
*** True Line Result
borders = []
** Processing line: ~ solids = []~
- Inside source: true
*** True Line Result
solids = []
** Processing line: ~ mouse = emulate_lowrez_mouse args~
- Inside source: true
*** True Line Result
mouse = emulate_lowrez_mouse args
** Processing line: ~ args.state.show_gridlines = false~
- Inside source: true
*** True Line Result
args.state.show_gridlines = false
** Processing line: ~ lowrez_tick args, sprites, labels, borders, solids, mouse~
- Inside source: true
*** True Line Result
lowrez_tick args, sprites, labels, borders, solids, mouse
** Processing line: ~ render_gridlines_if_needed args~
- Inside source: true
*** True Line Result
render_gridlines_if_needed args
** Processing line: ~ render_mouse_crosshairs args, mouse~
- Inside source: true
*** True Line Result
render_mouse_crosshairs args, mouse
** Processing line: ~ emulate_lowrez_scene args, sprites, labels, borders, solids, mouse~
- Inside source: true
*** True Line Result
emulate_lowrez_scene args, sprites, labels, borders, solids, mouse
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def emulate_lowrez_mouse args~
- Inside source: true
*** True Line Result
def emulate_lowrez_mouse args
** Processing line: ~ args.state.new_entity_strict(:lowrez_mouse) do |m|~
- Inside source: true
*** True Line Result
args.state.new_entity_strict(:lowrez_mouse) do |m|
** Processing line: ~ m.x = args.mouse.x.idiv(TINY_SCALE) - CENTER_OFFSET.idiv(TINY_SCALE) - 1~
- Inside source: true
*** True Line Result
m.x = args.mouse.x.idiv(TINY_SCALE) - CENTER_OFFSET.idiv(TINY_SCALE) - 1
** Processing line: ~ m.y = args.mouse.y.idiv(TINY_SCALE)~
- Inside source: true
*** True Line Result
m.y = args.mouse.y.idiv(TINY_SCALE)
** Processing line: ~ if args.mouse.click~
- Inside source: true
*** True Line Result
if args.mouse.click
** Processing line: ~ m.click = [~
- Inside source: true
*** True Line Result
m.click = [
** Processing line: ~ args.mouse.click.point.x.idiv(TINY_SCALE) - CENTER_OFFSET.idiv(TINY_SCALE) - 1,~
- Inside source: true
*** True Line Result
args.mouse.click.point.x.idiv(TINY_SCALE) - CENTER_OFFSET.idiv(TINY_SCALE) - 1,
** Processing line: ~ args.mouse.click.point.y.idiv(TINY_SCALE)~
- Inside source: true
*** True Line Result
args.mouse.click.point.y.idiv(TINY_SCALE)
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ m.down = m.click~
- Inside source: true
*** True Line Result
m.down = m.click
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ m.click = nil~
- Inside source: true
*** True Line Result
m.click = nil
** Processing line: ~ m.down = nil~
- Inside source: true
*** True Line Result
m.down = nil
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.mouse.up~
- Inside source: true
*** True Line Result
if args.mouse.up
** Processing line: ~ m.up = [~
- Inside source: true
*** True Line Result
m.up = [
** Processing line: ~ args.mouse.up.point.x.idiv(TINY_SCALE) - CENTER_OFFSET.idiv(TINY_SCALE) - 1,~
- Inside source: true
*** True Line Result
args.mouse.up.point.x.idiv(TINY_SCALE) - CENTER_OFFSET.idiv(TINY_SCALE) - 1,
** Processing line: ~ args.mouse.up.point.y.idiv(TINY_SCALE)~
- Inside source: true
*** True Line Result
args.mouse.up.point.y.idiv(TINY_SCALE)
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ m.up = nil~
- Inside source: true
*** True Line Result
m.up = nil
** 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 render_mouse_crosshairs args, mouse~
- Inside source: true
*** True Line Result
def render_mouse_crosshairs args, mouse
** Processing line: ~ return unless args.state.show_gridlines~
- Inside source: true
*** True Line Result
return unless args.state.show_gridlines
** Processing line: ~ args.labels << [10, 25, "mouse: #{mouse.x} #{mouse.y}", 255, 255, 255]~
- Inside source: true
*** True Line Result
args.labels << [10, 25, "mouse: #{mouse.x} #{mouse.y}", 255, 255, 255]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def emulate_lowrez_scene args, sprites, labels, borders, solids, mouse~
- Inside source: true
*** True Line Result
def emulate_lowrez_scene args, sprites, labels, borders, solids, mouse
** Processing line: ~ args.render_target(:lowrez).solids << [0, 0, 1280, 720]~
- Inside source: true
*** True Line Result
args.render_target(:lowrez).solids << [0, 0, 1280, 720]
** Processing line: ~ args.render_target(:lowrez).sprites << sprites~
- Inside source: true
*** True Line Result
args.render_target(:lowrez).sprites << sprites
** Processing line: ~ args.render_target(:lowrez).borders << borders~
- Inside source: true
*** True Line Result
args.render_target(:lowrez).borders << borders
** Processing line: ~ args.render_target(:lowrez).solids << solids~
- Inside source: true
*** True Line Result
args.render_target(:lowrez).solids << solids
** Processing line: ~ args.outputs.primitives << labels.map do |l|~
- Inside source: true
*** True Line Result
args.outputs.primitives << labels.map do |l|
** Processing line: ~ as_label = l.label~
- Inside source: true
*** True Line Result
as_label = l.label
** Processing line: ~ l.text.each_char.each_with_index.map do |char, i|~
- Inside source: true
*** True Line Result
l.text.each_char.each_with_index.map do |char, i|
** Processing line: ~ [CENTER_OFFSET + EMULATED_FONT_X_ZERO + (as_label.x * TINY_SCALE) + i * 5 * TINY_SCALE,~
- Inside source: true
*** True Line Result
[CENTER_OFFSET + EMULATED_FONT_X_ZERO + (as_label.x * TINY_SCALE) + i * 5 * TINY_SCALE,
** Processing line: ~ EMULATED_FONT_Y_ZERO + (as_label.y * TINY_SCALE), char,~
- Inside source: true
*** True Line Result
EMULATED_FONT_Y_ZERO + (as_label.y * TINY_SCALE), char,
** Processing line: ~ EMULATED_FONT_SIZE, 0, as_label.r, as_label.g, as_label.b, as_label.a, 'fonts/dragonruby-gtk-4x4.ttf'].label~
- Inside source: true
*** True Line Result
EMULATED_FONT_SIZE, 0, as_label.r, as_label.g, as_label.b, as_label.a, 'fonts/dragonruby-gtk-4x4.ttf'].label
** 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: ~ args.sprites << [CENTER_OFFSET, 0, 1280 * TINY_SCALE, 720 * TINY_SCALE, :lowrez]~
- Inside source: true
*** True Line Result
args.sprites << [CENTER_OFFSET, 0, 1280 * TINY_SCALE, 720 * TINY_SCALE, :lowrez]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_gridlines_if_needed args~
- Inside source: true
*** True Line Result
def render_gridlines_if_needed args
** Processing line: ~ if args.state.show_gridlines && args.static_lines.length == 0~
- Inside source: true
*** True Line Result
if args.state.show_gridlines && args.static_lines.length == 0
** Processing line: ~ args.static_lines << 65.times.map do |i|~
- Inside source: true
*** True Line Result
args.static_lines << 65.times.map do |i|
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [CENTER_OFFSET + i * TINY_SCALE + 1, 0,~
- Inside source: true
*** True Line Result
[CENTER_OFFSET + i * TINY_SCALE + 1, 0,
** Processing line: ~ CENTER_OFFSET + i * TINY_SCALE + 1, 720, 128, 128, 128],~
- Inside source: true
*** True Line Result
CENTER_OFFSET + i * TINY_SCALE + 1, 720, 128, 128, 128],
** Processing line: ~ [CENTER_OFFSET + i * TINY_SCALE, 0,~
- Inside source: true
*** True Line Result
[CENTER_OFFSET + i * TINY_SCALE, 0,
** Processing line: ~ CENTER_OFFSET + i * TINY_SCALE, 720, 128, 128, 128],~
- Inside source: true
*** True Line Result
CENTER_OFFSET + i * TINY_SCALE, 720, 128, 128, 128],
** Processing line: ~ [CENTER_OFFSET, 0 + i * TINY_SCALE,~
- Inside source: true
*** True Line Result
[CENTER_OFFSET, 0 + i * TINY_SCALE,
** Processing line: ~ CENTER_OFFSET + 720, 0 + i * TINY_SCALE, 128, 128, 128],~
- Inside source: true
*** True Line Result
CENTER_OFFSET + 720, 0 + i * TINY_SCALE, 128, 128, 128],
** Processing line: ~ [CENTER_OFFSET, 1 + i * TINY_SCALE,~
- Inside source: true
*** True Line Result
[CENTER_OFFSET, 1 + i * TINY_SCALE,
** Processing line: ~ CENTER_OFFSET + 720, 1 + i * TINY_SCALE, 128, 128, 128]~
- Inside source: true
*** True Line Result
CENTER_OFFSET + 720, 1 + i * TINY_SCALE, 128, 128, 128]
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ elsif !args.state.show_gridlines~
- Inside source: true
*** True Line Result
elsif !args.state.show_gridlines
** Processing line: ~ args.static_lines.clear~
- Inside source: true
*** True Line Result
args.static_lines.clear
** 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: ~* Rpg Narrative - Return Of Serenity - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - 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_narrative/return_of_serenity/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/main.rb
** Processing line: ~ require 'app/require.rb'~
- Inside source: true
*** True Line Result
require 'app/require.rb'
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def defaults args~
- Inside source: true
*** True Line Result
def defaults args
** 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.state.last_story_line_text ||= ""~
- Inside source: true
*** True Line Result
args.state.last_story_line_text ||= ""
** Processing line: ~ args.state.scene_history ||= []~
- Inside source: true
*** True Line Result
args.state.scene_history ||= []
** Processing line: ~ args.state.storyline_history ||= []~
- Inside source: true
*** True Line Result
args.state.storyline_history ||= []
** Processing line: ~ args.state.word_delay ||= 8~
- Inside source: true
*** True Line Result
args.state.word_delay ||= 8
** Processing line: ~ if args.state.tick_count == 0~
- Inside source: true
*** True Line Result
if args.state.tick_count == 0
** Processing line: ~ args.gtk.stop_music~
- Inside source: true
*** True Line Result
args.gtk.stop_music
** Processing line: ~ args.outputs.sounds << 'sounds/static-loop.ogg'~
- Inside source: true
*** True Line Result
args.outputs.sounds << 'sounds/static-loop.ogg'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.last_story_line_text~
- Inside source: true
*** True Line Result
if args.state.last_story_line_text
** Processing line: ~ lines = args.state~
- Inside source: true
*** True Line Result
lines = args.state
** Processing line: ~ .last_story_line_text~
- Inside source: true
*** True Line Result
.last_story_line_text
** Processing line: ~ .gsub("-", "")~
- Inside source: true
*** True Line Result
.gsub("-", "")
** Processing line: ~ .gsub("~", "")~
- Inside source: true
*** True Line Result
.gsub("~", "")
** Processing line: ~ .wrapped_lines(50)~
- Inside source: true
*** True Line Result
.wrapped_lines(50)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << lines.map_with_index { |l, i| [690, 200 - (i * 25), l, 1, 0, 255, 255, 255] }~
- Inside source: true
*** True Line Result
args.outputs.labels << lines.map_with_index { |l, i| [690, 200 - (i * 25), l, 1, 0, 255, 255, 255] }
** Processing line: ~ elsif args.state.storyline_history[-1]~
- Inside source: true
*** True Line Result
elsif args.state.storyline_history[-1]
** Processing line: ~ lines = args.state~
- Inside source: true
*** True Line Result
lines = args.state
** Processing line: ~ .storyline_history[-1]~
- Inside source: true
*** True Line Result
.storyline_history[-1]
** Processing line: ~ .gsub("-", "")~
- Inside source: true
*** True Line Result
.gsub("-", "")
** Processing line: ~ .gsub("~", "")~
- Inside source: true
*** True Line Result
.gsub("~", "")
** Processing line: ~ .wrapped_lines(50)~
- Inside source: true
*** True Line Result
.wrapped_lines(50)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.labels << lines.map_with_index { |l, i| [690, 200 - (i * 25), l, 1, 0, 255, 255, 255] }~
- Inside source: true
*** True Line Result
args.outputs.labels << lines.map_with_index { |l, i| [690, 200 - (i * 25), l, 1, 0, 255, 255, 255] }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return if args.state.current_scene~
- Inside source: true
*** True Line Result
return if args.state.current_scene
** Processing line: ~ set_scene(args, day_one_beginning(args))~
- Inside source: true
*** True Line Result
set_scene(args, day_one_beginning(args))
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inputs_move_player args~
- Inside source: true
*** True Line Result
def inputs_move_player args
** Processing line: ~ if args.state.scene_changed_at.elapsed_time > 5~
- Inside source: true
*** True Line Result
if args.state.scene_changed_at.elapsed_time > 5
** Processing line: ~ if args.keyboard.down || args.keyboard.s || args.keyboard.j~
- Inside source: true
*** True Line Result
if args.keyboard.down || args.keyboard.s || args.keyboard.j
** Processing line: ~ args.state.player.y -= 0.25~
- Inside source: true
*** True Line Result
args.state.player.y -= 0.25
** Processing line: ~ elsif args.keyboard.up || args.keyboard.w || args.keyboard.k~
- Inside source: true
*** True Line Result
elsif args.keyboard.up || args.keyboard.w || args.keyboard.k
** Processing line: ~ args.state.player.y += 0.25~
- Inside source: true
*** True Line Result
args.state.player.y += 0.25
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.keyboard.left || args.keyboard.a || args.keyboard.h~
- Inside source: true
*** True Line Result
if args.keyboard.left || args.keyboard.a || args.keyboard.h
** Processing line: ~ args.state.player.x -= 0.25~
- Inside source: true
*** True Line Result
args.state.player.x -= 0.25
** Processing line: ~ elsif args.keyboard.right || args.keyboard.d || args.keyboard.l~
- Inside source: true
*** True Line Result
elsif args.keyboard.right || args.keyboard.d || args.keyboard.l
** Processing line: ~ args.state.player.x += 0.25~
- Inside source: true
*** True Line Result
args.state.player.x += 0.25
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.player.y = 60 if args.state.player.y > 63~
- Inside source: true
*** True Line Result
args.state.player.y = 60 if args.state.player.y > 63
** Processing line: ~ args.state.player.y = 0 if args.state.player.y < -3~
- Inside source: true
*** True Line Result
args.state.player.y = 0 if args.state.player.y < -3
** Processing line: ~ args.state.player.x = 60 if args.state.player.x > 63~
- Inside source: true
*** True Line Result
args.state.player.x = 60 if args.state.player.x > 63
** Processing line: ~ args.state.player.x = 0 if args.state.player.x < -3~
- Inside source: true
*** True Line Result
args.state.player.x = 0 if args.state.player.x < -3
** 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 null_or_empty? ary~
- Inside source: true
*** True Line Result
def null_or_empty? ary
** Processing line: ~ return true unless ary~
- Inside source: true
*** True Line Result
return true unless ary
** Processing line: ~ return true if ary.length == 0~
- Inside source: true
*** True Line Result
return true if ary.length == 0
** Processing line: ~ return false~
- Inside source: true
*** True Line Result
return false
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_storyline_hotspot args~
- Inside source: true
*** True Line Result
def calc_storyline_hotspot args
** Processing line: ~ hotspots = args.state.storylines.find_all do |hs|~
- Inside source: true
*** True Line Result
hotspots = args.state.storylines.find_all do |hs|
** Processing line: ~ args.state.player.inside_rect?(hs.shift_rect(-2, 0))~
- Inside source: true
*** True Line Result
args.state.player.inside_rect?(hs.shift_rect(-2, 0))
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if !null_or_empty?(hotspots) && !args.state.inside_storyline_hotspot~
- Inside source: true
*** True Line Result
if !null_or_empty?(hotspots) && !args.state.inside_storyline_hotspot
** Processing line: ~ _, _, _, _, storyline = hotspots.first~
- Inside source: true
*** True Line Result
_, _, _, _, storyline = hotspots.first
** Processing line: ~ queue_storyline_text(args, storyline)~
- Inside source: true
*** True Line Result
queue_storyline_text(args, storyline)
** Processing line: ~ args.state.inside_storyline_hotspot = true~
- Inside source: true
*** True Line Result
args.state.inside_storyline_hotspot = true
** Processing line: ~ elsif null_or_empty?(hotspots)~
- Inside source: true
*** True Line Result
elsif null_or_empty?(hotspots)
** Processing line: ~ args.state.inside_storyline_hotspot = false~
- Inside source: true
*** True Line Result
args.state.inside_storyline_hotspot = false
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.storyline_queue_empty_at ||= args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.storyline_queue_empty_at ||= args.state.tick_count
** Processing line: ~ args.state.is_storyline_dialog_active = false~
- Inside source: true
*** True Line Result
args.state.is_storyline_dialog_active = false
** Processing line: ~ args.state.scene_storyline_queue.clear~
- Inside source: true
*** True Line Result
args.state.scene_storyline_queue.clear
** 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_scenes args~
- Inside source: true
*** True Line Result
def calc_scenes args
** Processing line: ~ hotspots = args.state.scenes.find_all do |hs|~
- Inside source: true
*** True Line Result
hotspots = args.state.scenes.find_all do |hs|
** Processing line: ~ args.state.player.inside_rect?(hs.shift_rect(-2, 0))~
- Inside source: true
*** True Line Result
args.state.player.inside_rect?(hs.shift_rect(-2, 0))
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if !null_or_empty?(hotspots) && !args.state.inside_scene_hotspot~
- Inside source: true
*** True Line Result
if !null_or_empty?(hotspots) && !args.state.inside_scene_hotspot
** Processing line: ~ _, _, _, _, scene_method_or_hash = hotspots.first~
- Inside source: true
*** True Line Result
_, _, _, _, scene_method_or_hash = hotspots.first
** Processing line: ~ if scene_method_or_hash.is_a? Symbol~
- Inside source: true
*** True Line Result
if scene_method_or_hash.is_a? Symbol
** Processing line: ~ set_scene(args, send(scene_method_or_hash, args))~
- Inside source: true
*** True Line Result
set_scene(args, send(scene_method_or_hash, args))
** Processing line: ~ args.state.last_hotspot_scene = scene_method_or_hash~
- Inside source: true
*** True Line Result
args.state.last_hotspot_scene = scene_method_or_hash
** Processing line: ~ args.state.scene_history << scene_method_or_hash~
- Inside source: true
*** True Line Result
args.state.scene_history << scene_method_or_hash
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ set_scene(args, scene_method_or_hash)~
- Inside source: true
*** True Line Result
set_scene(args, scene_method_or_hash)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ args.state.inside_scene_hotspot = true~
- Inside source: true
*** True Line Result
args.state.inside_scene_hotspot = true
** Processing line: ~ elsif null_or_empty?(hotspots)~
- Inside source: true
*** True Line Result
elsif null_or_empty?(hotspots)
** Processing line: ~ args.state.inside_scene_hotspot = false~
- Inside source: true
*** True Line Result
args.state.inside_scene_hotspot = false
** 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 null_or_whitespace? word~
- Inside source: true
*** True Line Result
def null_or_whitespace? word
** Processing line: ~ return true if !word~
- Inside source: true
*** True Line Result
return true if !word
** Processing line: ~ return true if word.strip.length == 0~
- Inside source: true
*** True Line Result
return true if word.strip.length == 0
** Processing line: ~ return false~
- Inside source: true
*** True Line Result
return false
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_storyline_presentation args~
- Inside source: true
*** True Line Result
def calc_storyline_presentation args
** Processing line: ~ return unless args.state.tick_count > args.state.next_storyline~
- Inside source: true
*** True Line Result
return unless args.state.tick_count > args.state.next_storyline
** Processing line: ~ return unless args.state.scene_storyline_queue~
- Inside source: true
*** True Line Result
return unless args.state.scene_storyline_queue
** Processing line: ~ next_storyline = args.state.scene_storyline_queue.shift~
- Inside source: true
*** True Line Result
next_storyline = args.state.scene_storyline_queue.shift
** Processing line: ~ if null_or_whitespace? next_storyline~
- Inside source: true
*** True Line Result
if null_or_whitespace? next_storyline
** Processing line: ~ args.state.storyline_queue_empty_at ||= args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.storyline_queue_empty_at ||= args.state.tick_count
** Processing line: ~ args.state.is_storyline_dialog_active = false~
- Inside source: true
*** True Line Result
args.state.is_storyline_dialog_active = false
** Processing line: ~ return~
- Inside source: true
*** True Line Result
return
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ args.state.storyline_to_show = next_storyline~
- Inside source: true
*** True Line Result
args.state.storyline_to_show = next_storyline
** Processing line: ~ args.state.is_storyline_dialog_active = true~
- Inside source: true
*** True Line Result
args.state.is_storyline_dialog_active = true
** Processing line: ~ args.state.storyline_queue_empty_at = nil~
- Inside source: true
*** True Line Result
args.state.storyline_queue_empty_at = nil
** Processing line: ~ if next_storyline.end_with?(".") || next_storyline.end_with?("!") || next_storyline.end_with?("?") || next_storyline.end_with?("\"")~
- Inside source: true
*** True Line Result
if next_storyline.end_with?(".") || next_storyline.end_with?("!") || next_storyline.end_with?("?") || next_storyline.end_with?("\"")
** Processing line: ~ args.state.next_storyline += 60~
- Inside source: true
*** True Line Result
args.state.next_storyline += 60
** Processing line: ~ elsif next_storyline.end_with?(",")~
- Inside source: true
*** True Line Result
elsif next_storyline.end_with?(",")
** Processing line: ~ args.state.next_storyline += 50~
- Inside source: true
*** True Line Result
args.state.next_storyline += 50
** Processing line: ~ elsif next_storyline.end_with?(":")~
- Inside source: true
*** True Line Result
elsif next_storyline.end_with?(":")
** Processing line: ~ args.state.next_storyline += 60~
- Inside source: true
*** True Line Result
args.state.next_storyline += 60
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ default_word_delay = 13 + args.state.word_delay - 8~
- Inside source: true
*** True Line Result
default_word_delay = 13 + args.state.word_delay - 8
** Processing line: ~ if next_storyline.gsub("-", "").gsub("~", "").length <= 4~
- Inside source: true
*** True Line Result
if next_storyline.gsub("-", "").gsub("~", "").length <= 4
** Processing line: ~ default_word_delay = 11 + args.state.word_delay - 8~
- Inside source: true
*** True Line Result
default_word_delay = 11 + args.state.word_delay - 8
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ number_of_syllabals = next_storyline.length - next_storyline.gsub("-", "").length~
- Inside source: true
*** True Line Result
number_of_syllabals = next_storyline.length - next_storyline.gsub("-", "").length
** Processing line: ~ args.state.next_storyline += default_word_delay + number_of_syllabals * (args.state.word_delay + 1)~
- Inside source: true
*** True Line Result
args.state.next_storyline += default_word_delay + number_of_syllabals * (args.state.word_delay + 1)
** 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 inputs_reload_current_scene args~
- Inside source: true
*** True Line Result
def inputs_reload_current_scene args
** Processing line: ~ return~
- Inside source: true
*** True Line Result
return
** Processing line: ~ if args.inputs.keyboard.key_down.r!~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.r!
** Processing line: ~ reload_current_scene~
- Inside source: true
*** True Line Result
reload_current_scene
** 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 inputs_dismiss_current_storyline args~
- Inside source: true
*** True Line Result
def inputs_dismiss_current_storyline args
** Processing line: ~ if args.inputs.keyboard.key_down.x!~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.x!
** Processing line: ~ args.state.scene_storyline_queue.clear~
- Inside source: true
*** True Line Result
args.state.scene_storyline_queue.clear
** 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 inputs_restart_game args~
- Inside source: true
*** True Line Result
def inputs_restart_game args
** Processing line: ~ if args.inputs.keyboard.exclamation_point~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.exclamation_point
** Processing line: ~ args.gtk.reset_state~
- Inside source: true
*** True Line Result
args.gtk.reset_state
** 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 inputs_change_word_delay args~
- Inside source: true
*** True Line Result
def inputs_change_word_delay args
** Processing line: ~ if args.inputs.keyboard.key_down.plus || args.inputs.keyboard.key_down.equal_sign~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.plus || args.inputs.keyboard.key_down.equal_sign
** Processing line: ~ args.state.word_delay -= 2~
- Inside source: true
*** True Line Result
args.state.word_delay -= 2
** Processing line: ~ if args.state.word_delay < 0~
- Inside source: true
*** True Line Result
if args.state.word_delay < 0
** Processing line: ~ args.state.word_delay = 0~
- Inside source: true
*** True Line Result
args.state.word_delay = 0
** Processing line: ~ # queue_storyline_text args, "Text speed at MAXIMUM. Geez, how fast do you read?"~
- Inside source: true
*** True Line Result
# queue_storyline_text args, "Text speed at MAXIMUM. Geez, how fast do you read?"
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ # queue_storyline_text args, "Text speed INCREASED."~
- Inside source: true
*** True Line Result
# queue_storyline_text args, "Text speed INCREASED."
** 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 args.inputs.keyboard.key_down.hyphen || args.inputs.keyboard.key_down.underscore~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.hyphen || args.inputs.keyboard.key_down.underscore
** Processing line: ~ args.state.word_delay += 2~
- Inside source: true
*** True Line Result
args.state.word_delay += 2
** Processing line: ~ # queue_storyline_text args, "Text speed DECREASED."~
- Inside source: true
*** True Line Result
# queue_storyline_text args, "Text speed DECREASED."
** 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 multiple_lines args, x, y, texts, size = 0, minimum_alpha = nil~
- Inside source: true
*** True Line Result
def multiple_lines args, x, y, texts, size = 0, minimum_alpha = nil
** Processing line: ~ texts.each_with_index.map do |t, i|~
- Inside source: true
*** True Line Result
texts.each_with_index.map do |t, i|
** Processing line: ~ [x, y - i * (25 + size * 2), t, size, 0, 255, 255, 255, adornments_alpha(args, 255, minimum_alpha)]~
- Inside source: true
*** True Line Result
[x, y - i * (25 + size * 2), t, size, 0, 255, 255, 255, adornments_alpha(args, 255, minimum_alpha)]
** 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 lowrez_tick args, lowrez_sprites, lowrez_labels, lowrez_borders, lowrez_solids, lowrez_mouse~
- Inside source: true
*** True Line Result
def lowrez_tick args, lowrez_sprites, lowrez_labels, lowrez_borders, lowrez_solids, lowrez_mouse
** Processing line: ~ # args.state.show_gridlines = true~
- Inside source: true
*** True Line Result
# args.state.show_gridlines = true
** Processing line: ~ defaults args~
- Inside source: true
*** True Line Result
defaults args
** Processing line: ~ render_current_scene args, lowrez_sprites, lowrez_labels, lowrez_solids~
- Inside source: true
*** True Line Result
render_current_scene args, lowrez_sprites, lowrez_labels, lowrez_solids
** Processing line: ~ render_controller args, lowrez_borders~
- Inside source: true
*** True Line Result
render_controller args, lowrez_borders
** Processing line: ~ lowrez_solids << [0, 0, 64, 64, 0, 0, 0]~
- Inside source: true
*** True Line Result
lowrez_solids << [0, 0, 64, 64, 0, 0, 0]
** Processing line: ~ calc_storyline_presentation args~
- Inside source: true
*** True Line Result
calc_storyline_presentation args
** Processing line: ~ calc_scenes args~
- Inside source: true
*** True Line Result
calc_scenes args
** Processing line: ~ calc_storyline_hotspot args~
- Inside source: true
*** True Line Result
calc_storyline_hotspot args
** Processing line: ~ inputs_move_player args~
- Inside source: true
*** True Line Result
inputs_move_player args
** Processing line: ~ inputs_print_mouse_rect args, lowrez_mouse~
- Inside source: true
*** True Line Result
inputs_print_mouse_rect args, lowrez_mouse
** Processing line: ~ inputs_reload_current_scene args~
- Inside source: true
*** True Line Result
inputs_reload_current_scene args
** Processing line: ~ inputs_dismiss_current_storyline args~
- Inside source: true
*** True Line Result
inputs_dismiss_current_storyline args
** Processing line: ~ inputs_change_word_delay args~
- Inside source: true
*** True Line Result
inputs_change_word_delay args
** Processing line: ~ inputs_restart_game args~
- Inside source: true
*** True Line Result
inputs_restart_game args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_controller args, lowrez_borders~
- Inside source: true
*** True Line Result
def render_controller args, lowrez_borders
** Processing line: ~ args.state.up_button = [85, 40, 15, 15, 255, 255, 255]~
- Inside source: true
*** True Line Result
args.state.up_button = [85, 40, 15, 15, 255, 255, 255]
** Processing line: ~ args.state.down_button = [85, 20, 15, 15, 255, 255, 255]~
- Inside source: true
*** True Line Result
args.state.down_button = [85, 20, 15, 15, 255, 255, 255]
** Processing line: ~ args.state.left_button = [65, 20, 15, 15, 255, 255, 255]~
- Inside source: true
*** True Line Result
args.state.left_button = [65, 20, 15, 15, 255, 255, 255]
** Processing line: ~ args.state.right_button = [105, 20, 15, 15, 255, 255, 255]~
- Inside source: true
*** True Line Result
args.state.right_button = [105, 20, 15, 15, 255, 255, 255]
** Processing line: ~ lowrez_borders << args.state.up_button~
- Inside source: true
*** True Line Result
lowrez_borders << args.state.up_button
** Processing line: ~ lowrez_borders << args.state.down_button~
- Inside source: true
*** True Line Result
lowrez_borders << args.state.down_button
** Processing line: ~ lowrez_borders << args.state.left_button~
- Inside source: true
*** True Line Result
lowrez_borders << args.state.left_button
** Processing line: ~ lowrez_borders << args.state.right_button~
- Inside source: true
*** True Line Result
lowrez_borders << args.state.right_button
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inputs_print_mouse_rect args, lowrez_mouse~
- Inside source: true
*** True Line Result
def inputs_print_mouse_rect args, lowrez_mouse
** Processing line: ~ if lowrez_mouse.up~
- Inside source: true
*** True Line Result
if lowrez_mouse.up
** Processing line: ~ args.state.mouse_held = false~
- Inside source: true
*** True Line Result
args.state.mouse_held = false
** Processing line: ~ elsif lowrez_mouse.click~
- Inside source: true
*** True Line Result
elsif lowrez_mouse.click
** Processing line: ~ mouse_rect = [lowrez_mouse.x, lowrez_mouse.y, 1, 1]~
- Inside source: true
*** True Line Result
mouse_rect = [lowrez_mouse.x, lowrez_mouse.y, 1, 1]
** Processing line: ~ if args.state.up_button.intersect_rect? mouse_rect~
- Inside source: true
*** True Line Result
if args.state.up_button.intersect_rect? mouse_rect
** Processing line: ~ args.state.player.y += 1~
- Inside source: true
*** True Line Result
args.state.player.y += 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.down_button.intersect_rect? mouse_rect~
- Inside source: true
*** True Line Result
if args.state.down_button.intersect_rect? mouse_rect
** Processing line: ~ args.state.player.y -= 1~
- Inside source: true
*** True Line Result
args.state.player.y -= 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.left_button.intersect_rect? mouse_rect~
- Inside source: true
*** True Line Result
if args.state.left_button.intersect_rect? mouse_rect
** Processing line: ~ args.state.player.x -= 1~
- Inside source: true
*** True Line Result
args.state.player.x -= 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.right_button.intersect_rect? mouse_rect~
- Inside source: true
*** True Line Result
if args.state.right_button.intersect_rect? mouse_rect
** Processing line: ~ args.state.player.x += 1~
- Inside source: true
*** True Line Result
args.state.player.x += 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ args.state.mouse_held = true~
- Inside source: true
*** True Line Result
args.state.mouse_held = true
** Processing line: ~ elsif args.state.mouse_held~
- Inside source: true
*** True Line Result
elsif args.state.mouse_held
** Processing line: ~ mouse_rect = [lowrez_mouse.x, lowrez_mouse.y, 1, 1]~
- Inside source: true
*** True Line Result
mouse_rect = [lowrez_mouse.x, lowrez_mouse.y, 1, 1]
** Processing line: ~ if args.state.up_button.intersect_rect? mouse_rect~
- Inside source: true
*** True Line Result
if args.state.up_button.intersect_rect? mouse_rect
** Processing line: ~ args.state.player.y += 0.25~
- Inside source: true
*** True Line Result
args.state.player.y += 0.25
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.down_button.intersect_rect? mouse_rect~
- Inside source: true
*** True Line Result
if args.state.down_button.intersect_rect? mouse_rect
** Processing line: ~ args.state.player.y -= 0.25~
- Inside source: true
*** True Line Result
args.state.player.y -= 0.25
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.left_button.intersect_rect? mouse_rect~
- Inside source: true
*** True Line Result
if args.state.left_button.intersect_rect? mouse_rect
** Processing line: ~ args.state.player.x -= 0.25~
- Inside source: true
*** True Line Result
args.state.player.x -= 0.25
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.right_button.intersect_rect? mouse_rect~
- Inside source: true
*** True Line Result
if args.state.right_button.intersect_rect? mouse_rect
** Processing line: ~ args.state.player.x += 0.25~
- Inside source: true
*** True Line Result
args.state.player.x += 0.25
** 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 lowrez_mouse.click~
- Inside source: true
*** True Line Result
if lowrez_mouse.click
** Processing line: ~ dx = lowrez_mouse.click.x - args.state.previous_mouse_click.x~
- Inside source: true
*** True Line Result
dx = lowrez_mouse.click.x - args.state.previous_mouse_click.x
** Processing line: ~ dy = lowrez_mouse.click.y - args.state.previous_mouse_click.y~
- Inside source: true
*** True Line Result
dy = lowrez_mouse.click.y - args.state.previous_mouse_click.y
** Processing line: ~ x, y, w, h = args.state.previous_mouse_click.x, args.state.previous_mouse_click.y, dx, dy~
- Inside source: true
*** True Line Result
x, y, w, h = args.state.previous_mouse_click.x, args.state.previous_mouse_click.y, dx, dy
** Processing line: ~ puts "x #{lowrez_mouse.click.x}, y: #{lowrez_mouse.click.y}"~
- Inside source: true
*** True Line Result
puts "x #{lowrez_mouse.click.x}, y: #{lowrez_mouse.click.y}"
** Processing line: ~ if args.state.previous_mouse_click~
- Inside source: true
*** True Line Result
if args.state.previous_mouse_click
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if dx < 0 && dx < 0~
- Inside source: true
*** True Line Result
if dx < 0 && dx < 0
** Processing line: ~ x = x + w~
- Inside source: true
*** True Line Result
x = x + w
** Processing line: ~ w = w.abs~
- Inside source: true
*** True Line Result
w = w.abs
** Processing line: ~ y = y + h~
- Inside source: true
*** True Line Result
y = y + h
** Processing line: ~ h = h.abs~
- Inside source: true
*** True Line Result
h = h.abs
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ w += 1~
- Inside source: true
*** True Line Result
w += 1
** Processing line: ~ h += 1~
- Inside source: true
*** True Line Result
h += 1
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.previous_mouse_click = nil~
- Inside source: true
*** True Line Result
args.state.previous_mouse_click = nil
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.state.previous_mouse_click = lowrez_mouse.click~
- Inside source: true
*** True Line Result
args.state.previous_mouse_click = lowrez_mouse.click
** Processing line: ~ square_x, square_y = lowrez_mouse.click~
- Inside source: true
*** True Line Result
square_x, square_y = lowrez_mouse.click
** 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 try_centering! word~
- Inside source: true
*** True Line Result
def try_centering! word
** Processing line: ~ word ||= ""~
- Inside source: true
*** True Line Result
word ||= ""
** Processing line: ~ just_word = word.gsub("-", "").gsub(",", "").gsub(".", "").gsub("'", "").gsub('""', "\"-\"")~
- Inside source: true
*** True Line Result
just_word = word.gsub("-", "").gsub(",", "").gsub(".", "").gsub("'", "").gsub('""', "\"-\"")
** Processing line: ~ return word if just_word.strip.length == 0~
- Inside source: true
*** True Line Result
return word if just_word.strip.length == 0
** Processing line: ~ return word if just_word.include? "~"~
- Inside source: true
*** True Line Result
return word if just_word.include? "~"
** Processing line: ~ return "~#{word}" if just_word.length <= 2~
- Inside source: true
*** True Line Result
return "~#{word}" if just_word.length <= 2
** Processing line: ~ if just_word.length.mod_zero? 2~
- Inside source: true
*** True Line Result
if just_word.length.mod_zero? 2
** Processing line: ~ center_index = just_word.length.idiv(2) - 1~
- Inside source: true
*** True Line Result
center_index = just_word.length.idiv(2) - 1
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ center_index = (just_word.length - 1).idiv(2)~
- Inside source: true
*** True Line Result
center_index = (just_word.length - 1).idiv(2)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ return "#{word[0..center_index - 1]}~#{word[center_index]}#{word[center_index + 1..-1]}"~
- Inside source: true
*** True Line Result
return "#{word[0..center_index - 1]}~#{word[center_index]}#{word[center_index + 1..-1]}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def queue_storyline args, scene~
- Inside source: true
*** True Line Result
def queue_storyline args, scene
** Processing line: ~ queue_storyline_text args, scene[:storyline]~
- Inside source: true
*** True Line Result
queue_storyline_text args, scene[:storyline]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def queue_storyline_text args, text~
- Inside source: true
*** True Line Result
def queue_storyline_text args, text
** Processing line: ~ args.state.last_story_line_text = text~
- Inside source: true
*** True Line Result
args.state.last_story_line_text = text
** Processing line: ~ args.state.storyline_history << text if text~
- Inside source: true
*** True Line Result
args.state.storyline_history << text if text
** Processing line: ~ words = (text || "").split(" ")~
- Inside source: true
*** True Line Result
words = (text || "").split(" ")
** Processing line: ~ words = words.map { |w| try_centering! w }~
- Inside source: true
*** True Line Result
words = words.map { |w| try_centering! w }
** Processing line: ~ args.state.scene_storyline_queue = words~
- Inside source: true
*** True Line Result
args.state.scene_storyline_queue = words
** Processing line: ~ if args.state.scene_storyline_queue.length != 0~
- Inside source: true
*** True Line Result
if args.state.scene_storyline_queue.length != 0
** Processing line: ~ args.state.scene_storyline_queue.unshift "~$--"~
- Inside source: true
*** True Line Result
args.state.scene_storyline_queue.unshift "~$--"
** Processing line: ~ args.state.storyline_to_show = "~."~
- Inside source: true
*** True Line Result
args.state.storyline_to_show = "~."
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.state.storyline_to_show = ""~
- Inside source: true
*** True Line Result
args.state.storyline_to_show = ""
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ args.state.scene_storyline_queue << ""~
- Inside source: true
*** True Line Result
args.state.scene_storyline_queue << ""
** Processing line: ~ args.state.next_storyline = args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.next_storyline = args.state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def set_scene args, scene~
- Inside source: true
*** True Line Result
def set_scene args, scene
** Processing line: ~ args.state.current_scene = scene~
- Inside source: true
*** True Line Result
args.state.current_scene = scene
** Processing line: ~ args.state.background = scene[:background] || 'sprites/todo.png'~
- Inside source: true
*** True Line Result
args.state.background = scene[:background] || 'sprites/todo.png'
** Processing line: ~ args.state.scene_fade = scene[:fade] || 0~
- Inside source: true
*** True Line Result
args.state.scene_fade = scene[:fade] || 0
** Processing line: ~ args.state.scenes = (scene[:scenes] || []).reject { |s| !s }~
- Inside source: true
*** True Line Result
args.state.scenes = (scene[:scenes] || []).reject { |s| !s }
** Processing line: ~ args.state.scene_render_override = scene[:render_override]~
- Inside source: true
*** True Line Result
args.state.scene_render_override = scene[:render_override]
** Processing line: ~ args.state.storylines = (scene[:storylines] || []).reject { |s| !s }~
- Inside source: true
*** True Line Result
args.state.storylines = (scene[:storylines] || []).reject { |s| !s }
** Processing line: ~ args.state.scene_changed_at = args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.scene_changed_at = args.state.tick_count
** Processing line: ~ if scene[:player]~
- Inside source: true
*** True Line Result
if scene[:player]
** Processing line: ~ args.state.player = scene[:player]~
- Inside source: true
*** True Line Result
args.state.player = scene[:player]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ args.state.inside_scene_hotspot = false~
- Inside source: true
*** True Line Result
args.state.inside_scene_hotspot = false
** Processing line: ~ args.state.inside_storyline_hotspot = false~
- Inside source: true
*** True Line Result
args.state.inside_storyline_hotspot = false
** Processing line: ~ queue_storyline args, scene~
- Inside source: true
*** True Line Result
queue_storyline args, scene
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def replay_storyline_rect~
- Inside source: true
*** True Line Result
def replay_storyline_rect
** Processing line: ~ [26, -1, 7, 4]~
- Inside source: true
*** True Line Result
[26, -1, 7, 4]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def labels_for_word word~
- Inside source: true
*** True Line Result
def labels_for_word word
** Processing line: ~ left_side_of_word = ""~
- Inside source: true
*** True Line Result
left_side_of_word = ""
** Processing line: ~ center_letter = ""~
- Inside source: true
*** True Line Result
center_letter = ""
** Processing line: ~ right_side_of_word = ""~
- Inside source: true
*** True Line Result
right_side_of_word = ""
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if word[0] == "~"~
- Inside source: true
*** True Line Result
if word[0] == "~"
** Processing line: ~ left_side_of_word = ""~
- Inside source: true
*** True Line Result
left_side_of_word = ""
** Processing line: ~ center_letter = word[1]~
- Inside source: true
*** True Line Result
center_letter = word[1]
** Processing line: ~ right_side_of_word = word[2..-1]~
- Inside source: true
*** True Line Result
right_side_of_word = word[2..-1]
** Processing line: ~ elsif word.length > 0~
- Inside source: true
*** True Line Result
elsif word.length > 0
** Processing line: ~ left_side_of_word, right_side_of_word = word.split("~")~
- Inside source: true
*** True Line Result
left_side_of_word, right_side_of_word = word.split("~")
** Processing line: ~ center_letter = right_side_of_word[0]~
- Inside source: true
*** True Line Result
center_letter = right_side_of_word[0]
** Processing line: ~ right_side_of_word = right_side_of_word[1..-1]~
- Inside source: true
*** True Line Result
right_side_of_word = right_side_of_word[1..-1]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ right_side_of_word = right_side_of_word.gsub("-", "")~
- Inside source: true
*** True Line Result
right_side_of_word = right_side_of_word.gsub("-", "")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ left: [29 - left_side_of_word.length * 4 - 1 * left_side_of_word.length, 2, left_side_of_word],~
- Inside source: true
*** True Line Result
left: [29 - left_side_of_word.length * 4 - 1 * left_side_of_word.length, 2, left_side_of_word],
** Processing line: ~ center: [29, 2, center_letter, 255, 0, 0],~
- Inside source: true
*** True Line Result
center: [29, 2, center_letter, 255, 0, 0],
** Processing line: ~ right: [34, 2, right_side_of_word]~
- Inside source: true
*** True Line Result
right: [34, 2, right_side_of_word]
** 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_scenes args, lowrez_sprites~
- Inside source: true
*** True Line Result
def render_scenes args, lowrez_sprites
** Processing line: ~ lowrez_sprites << args.state.scenes.flat_map do |hs|~
- Inside source: true
*** True Line Result
lowrez_sprites << args.state.scenes.flat_map do |hs|
** Processing line: ~ hotspot_square args, hs.x, hs.y, hs.w, hs.h~
- Inside source: true
*** True Line Result
hotspot_square args, hs.x, hs.y, hs.w, hs.h
** 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_storylines args, lowrez_sprites~
- Inside source: true
*** True Line Result
def render_storylines args, lowrez_sprites
** Processing line: ~ lowrez_sprites << args.state.storylines.flat_map do |hs|~
- Inside source: true
*** True Line Result
lowrez_sprites << args.state.storylines.flat_map do |hs|
** Processing line: ~ hotspot_square args, hs.x, hs.y, hs.w, hs.h~
- Inside source: true
*** True Line Result
hotspot_square args, hs.x, hs.y, hs.w, hs.h
** 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 adornments_alpha args, target_alpha = nil, minimum_alpha = nil~
- Inside source: true
*** True Line Result
def adornments_alpha args, target_alpha = nil, minimum_alpha = nil
** Processing line: ~ return (minimum_alpha || 80) unless args.state.storyline_queue_empty_at~
- Inside source: true
*** True Line Result
return (minimum_alpha || 80) unless args.state.storyline_queue_empty_at
** Processing line: ~ target_alpha ||= 255~
- Inside source: true
*** True Line Result
target_alpha ||= 255
** Processing line: ~ target_alpha * args.state.storyline_queue_empty_at.ease(60)~
- Inside source: true
*** True Line Result
target_alpha * args.state.storyline_queue_empty_at.ease(60)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def hotspot_square args, x, y, w, h~
- Inside source: true
*** True Line Result
def hotspot_square args, x, y, w, h
** Processing line: ~ if w >= 3 && h >= 3~
- Inside source: true
*** True Line Result
if w >= 3 && h >= 3
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [x + w.idiv(2) + 1, y, w.idiv(2), h, 'sprites/label-background.png', 0, adornments_alpha(args, 50), 23, 23, 23],~
- Inside source: true
*** True Line Result
[x + w.idiv(2) + 1, y, w.idiv(2), h, 'sprites/label-background.png', 0, adornments_alpha(args, 50), 23, 23, 23],
** Processing line: ~ [x, y, w.idiv(2), h, 'sprites/label-background.png', 0, adornments_alpha(args, 100), 223, 223, 223],~
- Inside source: true
*** True Line Result
[x, y, w.idiv(2), h, 'sprites/label-background.png', 0, adornments_alpha(args, 100), 223, 223, 223],
** Processing line: ~ [x + 1, y + 1, w - 2, h - 2, 'sprites/label-background.png', 0, adornments_alpha(args, 200), 40, 140, 40],~
- Inside source: true
*** True Line Result
[x + 1, y + 1, w - 2, h - 2, 'sprites/label-background.png', 0, adornments_alpha(args, 200), 40, 140, 40],
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [x, y, w, h, 'sprites/label-background.png', 0, adornments_alpha(args, 200), 0, 140, 0],~
- Inside source: true
*** True Line Result
[x, y, w, h, 'sprites/label-background.png', 0, adornments_alpha(args, 200), 0, 140, 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
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_storyline_dialog args, lowrez_labels, lowrez_sprites~
- Inside source: true
*** True Line Result
def render_storyline_dialog args, lowrez_labels, lowrez_sprites
** Processing line: ~ return unless args.state.is_storyline_dialog_active~
- Inside source: true
*** True Line Result
return unless args.state.is_storyline_dialog_active
** Processing line: ~ return unless args.state.storyline_to_show~
- Inside source: true
*** True Line Result
return unless args.state.storyline_to_show
** Processing line: ~ labels = labels_for_word args.state.storyline_to_show~
- Inside source: true
*** True Line Result
labels = labels_for_word args.state.storyline_to_show
** Processing line: ~ if true # high rez version~
- Inside source: true
*** True Line Result
if true # high rez version
** Processing line: ~ scale = 8.88~
- Inside source: true
*** True Line Result
scale = 8.88
** Processing line: ~ offset = 45~
- Inside source: true
*** True Line Result
offset = 45
** Processing line: ~ size = 25~
- Inside source: true
*** True Line Result
size = 25
** Processing line: ~ args.outputs.labels << [offset + labels[:left].x.-(1) * scale,~
- Inside source: true
*** True Line Result
args.outputs.labels << [offset + labels[:left].x.-(1) * scale,
** Processing line: ~ labels[:left].y * TINY_SCALE + 55,~
- Inside source: true
*** True Line Result
labels[:left].y * TINY_SCALE + 55,
** Processing line: ~ labels[:left].text, size, 0, 0, 0, 0, 255,~
- Inside source: true
*** True Line Result
labels[:left].text, size, 0, 0, 0, 0, 255,
** Processing line: ~ 'fonts/manaspc.ttf']~
- Inside source: true
*** True Line Result
'fonts/manaspc.ttf']
** Processing line: ~ center_text = labels[:center].text~
- Inside source: true
*** True Line Result
center_text = labels[:center].text
** Processing line: ~ center_text = "|" if center_text == "$"~
- Inside source: true
*** True Line Result
center_text = "|" if center_text == "$"
** Processing line: ~ args.outputs.labels << [offset + labels[:center].x * scale,~
- Inside source: true
*** True Line Result
args.outputs.labels << [offset + labels[:center].x * scale,
** Processing line: ~ labels[:center].y * TINY_SCALE + 55,~
- Inside source: true
*** True Line Result
labels[:center].y * TINY_SCALE + 55,
** Processing line: ~ center_text, size, 0, 255, 0, 0, 255,~
- Inside source: true
*** True Line Result
center_text, size, 0, 255, 0, 0, 255,
** Processing line: ~ 'fonts/manaspc.ttf']~
- Inside source: true
*** True Line Result
'fonts/manaspc.ttf']
** Processing line: ~ args.outputs.labels << [offset + labels[:right].x * scale,~
- Inside source: true
*** True Line Result
args.outputs.labels << [offset + labels[:right].x * scale,
** Processing line: ~ labels[:right].y * TINY_SCALE + 55,~
- Inside source: true
*** True Line Result
labels[:right].y * TINY_SCALE + 55,
** Processing line: ~ labels[:right].text, size, 0, 0, 0, 0, 255,~
- Inside source: true
*** True Line Result
labels[:right].text, size, 0, 0, 0, 0, 255,
** Processing line: ~ 'fonts/manaspc.ttf']~
- Inside source: true
*** True Line Result
'fonts/manaspc.ttf']
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ lowrez_labels << labels[:left]~
- Inside source: true
*** True Line Result
lowrez_labels << labels[:left]
** Processing line: ~ lowrez_labels << labels[:center]~
- Inside source: true
*** True Line Result
lowrez_labels << labels[:center]
** Processing line: ~ lowrez_labels << labels[:right]~
- Inside source: true
*** True Line Result
lowrez_labels << labels[:right]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ args.state.is_storyline_dialog_active = true~
- Inside source: true
*** True Line Result
args.state.is_storyline_dialog_active = true
** Processing line: ~ render_player args, lowrez_sprites~
- Inside source: true
*** True Line Result
render_player args, lowrez_sprites
** Processing line: ~ lowrez_sprites << [0, 0, 64, 8, 'sprites/label-background.png']~
- Inside source: true
*** True Line Result
lowrez_sprites << [0, 0, 64, 8, 'sprites/label-background.png']
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_player args, lowrez_sprites~
- Inside source: true
*** True Line Result
def render_player args, lowrez_sprites
** Processing line: ~ lowrez_sprites << player_md_down(args, *args.state.player)~
- Inside source: true
*** True Line Result
lowrez_sprites << player_md_down(args, *args.state.player)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_adornments args, lowrez_sprites~
- Inside source: true
*** True Line Result
def render_adornments args, lowrez_sprites
** Processing line: ~ render_scenes args, lowrez_sprites~
- Inside source: true
*** True Line Result
render_scenes args, lowrez_sprites
** Processing line: ~ render_storylines args, lowrez_sprites~
- Inside source: true
*** True Line Result
render_storylines args, lowrez_sprites
** Processing line: ~ return if args.state.is_storyline_dialog_active~
- Inside source: true
*** True Line Result
return if args.state.is_storyline_dialog_active
** Processing line: ~ lowrez_sprites << player_md_down(args, *args.state.player)~
- Inside source: true
*** True Line Result
lowrez_sprites << player_md_down(args, *args.state.player)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def global_alpha_percentage args, max_alpha = 255~
- Inside source: true
*** True Line Result
def global_alpha_percentage args, max_alpha = 255
** Processing line: ~ return 255 unless args.state.scene_changed_at~
- Inside source: true
*** True Line Result
return 255 unless args.state.scene_changed_at
** Processing line: ~ return 255 unless args.state.scene_fade~
- Inside source: true
*** True Line Result
return 255 unless args.state.scene_fade
** Processing line: ~ return 255 unless args.state.scene_fade > 0~
- Inside source: true
*** True Line Result
return 255 unless args.state.scene_fade > 0
** Processing line: ~ return max_alpha * args.state.scene_changed_at.ease(args.state.scene_fade)~
- Inside source: true
*** True Line Result
return max_alpha * args.state.scene_changed_at.ease(args.state.scene_fade)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_current_scene args, lowrez_sprites, lowrez_labels, lowrez_solids~
- Inside source: true
*** True Line Result
def render_current_scene args, lowrez_sprites, lowrez_labels, lowrez_solids
** Processing line: ~ lowrez_sprites << [0, 0, 64, 64, args.state.background, 0, (global_alpha_percentage args)]~
- Inside source: true
*** True Line Result
lowrez_sprites << [0, 0, 64, 64, args.state.background, 0, (global_alpha_percentage args)]
** Processing line: ~ if args.state.scene_render_override~
- Inside source: true
*** True Line Result
if args.state.scene_render_override
** Processing line: ~ send args.state.scene_render_override, args, lowrez_sprites, lowrez_labels, lowrez_solids~
- Inside source: true
*** True Line Result
send args.state.scene_render_override, args, lowrez_sprites, lowrez_labels, lowrez_solids
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ storyline_to_show = args.state.storyline_to_show || ""~
- Inside source: true
*** True Line Result
storyline_to_show = args.state.storyline_to_show || ""
** Processing line: ~ render_adornments args, lowrez_sprites~
- Inside source: true
*** True Line Result
render_adornments args, lowrez_sprites
** Processing line: ~ render_storyline_dialog args, lowrez_labels, lowrez_sprites~
- Inside source: true
*** True Line Result
render_storyline_dialog args, lowrez_labels, lowrez_sprites
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.state.background == 'sprites/tribute-game-over.png'~
- Inside source: true
*** True Line Result
if args.state.background == 'sprites/tribute-game-over.png'
** Processing line: ~ lowrez_sprites << [0, 0, 64, 11, 'sprites/label-background.png', 0, adornments_alpha(args, 200), 0, 0, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [0, 0, 64, 11, 'sprites/label-background.png', 0, adornments_alpha(args, 200), 0, 0, 0]
** Processing line: ~ lowrez_labels << [9, 6, 'Return of', 255, 255, 255]~
- Inside source: true
*** True Line Result
lowrez_labels << [9, 6, 'Return of', 255, 255, 255]
** Processing line: ~ lowrez_labels << [9, 1, ' Serenity', 255, 255, 255]~
- Inside source: true
*** True Line Result
lowrez_labels << [9, 1, ' Serenity', 255, 255, 255]
** Processing line: ~ if !args.state.ended~
- Inside source: true
*** True Line Result
if !args.state.ended
** Processing line: ~ args.gtk.stop_music~
- Inside source: true
*** True Line Result
args.gtk.stop_music
** Processing line: ~ args.outputs.sounds << 'sounds/music-loop.ogg'~
- Inside source: true
*** True Line Result
args.outputs.sounds << 'sounds/music-loop.ogg'
** Processing line: ~ args.state.ended = true~
- Inside source: true
*** True Line Result
args.state.ended = 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: ~ def player_md_right args, x, y~
- Inside source: true
*** True Line Result
def player_md_right args, x, y
** Processing line: ~ [x, y, 4, 11, 'sprites/player-right.png', 0, (global_alpha_percentage args)]~
- Inside source: true
*** True Line Result
[x, y, 4, 11, 'sprites/player-right.png', 0, (global_alpha_percentage args)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def player_md_left args, x, y~
- Inside source: true
*** True Line Result
def player_md_left args, x, y
** Processing line: ~ [x, y, 4, 11, 'sprites/player-left.png', 0, (global_alpha_percentage args)]~
- Inside source: true
*** True Line Result
[x, y, 4, 11, 'sprites/player-left.png', 0, (global_alpha_percentage args)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def player_md_up args, x, y~
- Inside source: true
*** True Line Result
def player_md_up args, x, y
** Processing line: ~ [x, y, 4, 11, 'sprites/player-up.png', 0, (global_alpha_percentage args)]~
- Inside source: true
*** True Line Result
[x, y, 4, 11, 'sprites/player-up.png', 0, (global_alpha_percentage args)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def player_md_down args, x, y~
- Inside source: true
*** True Line Result
def player_md_down args, x, y
** Processing line: ~ [x, y, 4, 11, 'sprites/player-down.png', 0, (global_alpha_percentage args)]~
- Inside source: true
*** True Line Result
[x, y, 4, 11, 'sprites/player-down.png', 0, (global_alpha_percentage args)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def player_sm args, x, y~
- Inside source: true
*** True Line Result
def player_sm args, x, y
** Processing line: ~ [x, y, 3, 7, 'sprites/player-zoomed-out.png', 0, (global_alpha_percentage args)]~
- Inside source: true
*** True Line Result
[x, y, 3, 7, 'sprites/player-zoomed-out.png', 0, (global_alpha_percentage args)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def player_xs args, x, y~
- Inside source: true
*** True Line Result
def player_xs args, x, y
** Processing line: ~ [x, y, 1, 4, 'sprites/player-zoomed-out.png', 0, (global_alpha_percentage args)]~
- Inside source: true
*** True Line Result
[x, y, 1, 4, 'sprites/player-zoomed-out.png', 0, (global_alpha_percentage args)]
** 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 Narrative - Return Of Serenity - repl.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - 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_rpg_narrative/return_of_serenity/app/repl.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/repl.rb
** Processing line: ~ puts $gtk.args.state.current_scene~
- Inside source: true
*** True Line Result
puts $gtk.args.state.current_scene
** 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 Narrative - Return Of Serenity - require.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - require.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_narrative/return_of_serenity/app/require.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/require.rb
** Processing line: ~ require 'app/lowrez_simulator.rb'~
- Inside source: true
*** True Line Result
require 'app/lowrez_simulator.rb'
** Processing line: ~ require 'app/storyline_day_one.rb'~
- Inside source: true
*** True Line Result
require 'app/storyline_day_one.rb'
** Processing line: ~ require 'app/storyline_blinking_light.rb'~
- Inside source: true
*** True Line Result
require 'app/storyline_blinking_light.rb'
** Processing line: ~ require 'app/storyline_serenity_introduction.rb'~
- Inside source: true
*** True Line Result
require 'app/storyline_serenity_introduction.rb'
** Processing line: ~ require 'app/storyline_speed_of_light.rb'~
- Inside source: true
*** True Line Result
require 'app/storyline_speed_of_light.rb'
** Processing line: ~ require 'app/storyline_serenity_alive.rb'~
- Inside source: true
*** True Line Result
require 'app/storyline_serenity_alive.rb'
** Processing line: ~ require 'app/storyline_serenity_bio.rb'~
- Inside source: true
*** True Line Result
require 'app/storyline_serenity_bio.rb'
** Processing line: ~ require 'app/storyline_anka.rb'~
- Inside source: true
*** True Line Result
require 'app/storyline_anka.rb'
** Processing line: ~ require 'app/storyline_final_message.rb'~
- Inside source: true
*** True Line Result
require 'app/storyline_final_message.rb'
** Processing line: ~ require 'app/storyline_final_decision.rb'~
- Inside source: true
*** True Line Result
require 'app/storyline_final_decision.rb'
** Processing line: ~ require 'app/storyline.rb'~
- Inside source: true
*** True Line Result
require 'app/storyline.rb'
** 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 Narrative - Return Of Serenity - storyline.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - storyline.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_narrative/return_of_serenity/app/storyline.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/storyline.rb
** Processing line: ~ def hotspot_top~
- Inside source: true
*** True Line Result
def hotspot_top
** Processing line: ~ [4, 61, 56, 3]~
- Inside source: true
*** True Line Result
[4, 61, 56, 3]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def hotspot_bottom~
- Inside source: true
*** True Line Result
def hotspot_bottom
** Processing line: ~ [4, 0, 56, 3]~
- Inside source: true
*** True Line Result
[4, 0, 56, 3]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def hotspot_top_right~
- Inside source: true
*** True Line Result
def hotspot_top_right
** Processing line: ~ [62, 35, 3, 25]~
- Inside source: true
*** True Line Result
[62, 35, 3, 25]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def hotspot_bottom_right~
- Inside source: true
*** True Line Result
def hotspot_bottom_right
** Processing line: ~ [62, 0, 3, 25]~
- Inside source: true
*** True Line Result
[62, 0, 3, 25]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def storyline_history_include? args, text~
- Inside source: true
*** True Line Result
def storyline_history_include? args, text
** Processing line: ~ args.state.storyline_history.any? { |s| s.gsub("-", "").gsub(" ", "").include? text.gsub("-", "").gsub(" ", "") }~
- Inside source: true
*** True Line Result
args.state.storyline_history.any? { |s| s.gsub("-", "").gsub(" ", "").include? text.gsub("-", "").gsub(" ", "") }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def blinking_light_side_of_home_render args, lowrez_sprites, lowrez_labels, lowrez_solids~
- Inside source: true
*** True Line Result
def blinking_light_side_of_home_render args, lowrez_sprites, lowrez_labels, lowrez_solids
** Processing line: ~ lowrez_sprites << [48, 44, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [48, 44, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ lowrez_sprites << [49, 45, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [49, 45, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ lowrez_sprites << [50, 46, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [50, 46, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def blinking_light_mountain_pass_render args, lowrez_sprites, lowrez_labels, lowrez_solids~
- Inside source: true
*** True Line Result
def blinking_light_mountain_pass_render args, lowrez_sprites, lowrez_labels, lowrez_solids
** Processing line: ~ lowrez_sprites << [18, 47, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [18, 47, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ lowrez_sprites << [19, 48, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [19, 48, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ lowrez_sprites << [20, 49, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [20, 49, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def blinking_light_path_to_observatory_render args, lowrez_sprites, lowrez_labels, lowrez_solids~
- Inside source: true
*** True Line Result
def blinking_light_path_to_observatory_render args, lowrez_sprites, lowrez_labels, lowrez_solids
** Processing line: ~ lowrez_sprites << [0, 26, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [0, 26, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ lowrez_sprites << [1, 27, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [1, 27, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ lowrez_sprites << [2, 28, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [2, 28, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def blinking_light_observatory_render args, lowrez_sprites, lowrez_labels, lowrez_solids~
- Inside source: true
*** True Line Result
def blinking_light_observatory_render args, lowrez_sprites, lowrez_labels, lowrez_solids
** Processing line: ~ lowrez_sprites << [23, 59, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [23, 59, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ lowrez_sprites << [24, 60, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [24, 60, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ lowrez_sprites << [25, 61, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [25, 61, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def blinking_light_inside_observatory_render args, lowrez_sprites, lowrez_labels, lowrez_solids~
- Inside source: true
*** True Line Result
def blinking_light_inside_observatory_render args, lowrez_sprites, lowrez_labels, lowrez_solids
** Processing line: ~ lowrez_sprites << [30, 30, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [30, 30, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ lowrez_sprites << [31, 31, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [31, 31, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ lowrez_sprites << [32, 32, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
- Inside source: true
*** True Line Result
lowrez_sprites << [32, 32, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def decision_graph context_message, context_action, context_result_one, context_result_two, context_result_three = [], context_result_four = []~
- Inside source: true
*** True Line Result
def decision_graph context_message, context_action, context_result_one, context_result_two, context_result_three = [], context_result_four = []
** Processing line: ~ result_one_scene, result_one_label, result_one_text = context_result_one~
- Inside source: true
*** True Line Result
result_one_scene, result_one_label, result_one_text = context_result_one
** Processing line: ~ result_two_scene, result_two_label, result_two_text = context_result_two~
- Inside source: true
*** True Line Result
result_two_scene, result_two_label, result_two_text = context_result_two
** Processing line: ~ result_three_scene, result_three_label, result_three_text = context_result_three~
- Inside source: true
*** True Line Result
result_three_scene, result_three_label, result_three_text = context_result_three
** Processing line: ~ result_four_scene, result_four_label, result_four_text = context_result_four~
- Inside source: true
*** True Line Result
result_four_scene, result_four_label, result_four_text = context_result_four
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ top_level_hash = {~
- Inside source: true
*** True Line Result
top_level_hash = {
** Processing line: ~ background: 'sprites/decision.png',~
- Inside source: true
*** True Line Result
background: 'sprites/decision.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [20, 36],~
- Inside source: true
*** True Line Result
player: [20, 36],
** Processing line: ~ storylines: [ ],~
- Inside source: true
*** True Line Result
storylines: [ ],
** Processing line: ~ scenes: [ ]~
- Inside source: true
*** True Line Result
scenes: [ ]
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ confirmation_result_one_hash = {~
- Inside source: true
*** True Line Result
confirmation_result_one_hash = {
** Processing line: ~ background: 'sprites/decision.png',~
- Inside source: true
*** True Line Result
background: 'sprites/decision.png',
** Processing line: ~ scenes: [ ],~
- Inside source: true
*** True Line Result
scenes: [ ],
** Processing line: ~ storylines: [ ]~
- Inside source: true
*** True Line Result
storylines: [ ]
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ confirmation_result_two_hash = {~
- Inside source: true
*** True Line Result
confirmation_result_two_hash = {
** Processing line: ~ background: 'sprites/decision.png',~
- Inside source: true
*** True Line Result
background: 'sprites/decision.png',
** Processing line: ~ scenes: [ ],~
- Inside source: true
*** True Line Result
scenes: [ ],
** Processing line: ~ storylines: [ ]~
- Inside source: true
*** True Line Result
storylines: [ ]
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ confirmation_result_three_hash = {~
- Inside source: true
*** True Line Result
confirmation_result_three_hash = {
** Processing line: ~ background: 'sprites/decision.png',~
- Inside source: true
*** True Line Result
background: 'sprites/decision.png',
** Processing line: ~ scenes: [ ],~
- Inside source: true
*** True Line Result
scenes: [ ],
** Processing line: ~ storylines: [ ]~
- Inside source: true
*** True Line Result
storylines: [ ]
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ confirmation_result_four_hash = {~
- Inside source: true
*** True Line Result
confirmation_result_four_hash = {
** Processing line: ~ background: 'sprites/decision.png',~
- Inside source: true
*** True Line Result
background: 'sprites/decision.png',
** Processing line: ~ scenes: [ ],~
- Inside source: true
*** True Line Result
scenes: [ ],
** Processing line: ~ storylines: [ ]~
- Inside source: true
*** True Line Result
storylines: [ ]
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ top_level_hash[:storylines] << [ 5, 35, 4, 4, context_message]~
- Inside source: true
*** True Line Result
top_level_hash[:storylines] << [ 5, 35, 4, 4, context_message]
** Processing line: ~ top_level_hash[:storylines] << [20, 35, 4, 4, context_action]~
- Inside source: true
*** True Line Result
top_level_hash[:storylines] << [20, 35, 4, 4, context_action]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ confirmation_result_one_hash[:scenes] << [20, 35, 4, 4, top_level_hash]~
- Inside source: true
*** True Line Result
confirmation_result_one_hash[:scenes] << [20, 35, 4, 4, top_level_hash]
** Processing line: ~ confirmation_result_one_hash[:scenes] << [60, 50, 4, 4, result_one_scene]~
- Inside source: true
*** True Line Result
confirmation_result_one_hash[:scenes] << [60, 50, 4, 4, result_one_scene]
** Processing line: ~ confirmation_result_one_hash[:storylines] << [40, 50, 4, 4, "#{result_one_label}: \"#{result_one_text}\""]~
- Inside source: true
*** True Line Result
confirmation_result_one_hash[:storylines] << [40, 50, 4, 4, "#{result_one_label}: \"#{result_one_text}\""]
** Processing line: ~ confirmation_result_one_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash] if result_four_scene~
- Inside source: true
*** True Line Result
confirmation_result_one_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash] if result_four_scene
** Processing line: ~ confirmation_result_one_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash] if result_three_scene~
- Inside source: true
*** True Line Result
confirmation_result_one_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash] if result_three_scene
** Processing line: ~ confirmation_result_one_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]~
- Inside source: true
*** True Line Result
confirmation_result_one_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ confirmation_result_two_hash[:scenes] << [20, 35, 4, 4, top_level_hash]~
- Inside source: true
*** True Line Result
confirmation_result_two_hash[:scenes] << [20, 35, 4, 4, top_level_hash]
** Processing line: ~ confirmation_result_two_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]~
- Inside source: true
*** True Line Result
confirmation_result_two_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]
** Processing line: ~ confirmation_result_two_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash] if result_four_scene~
- Inside source: true
*** True Line Result
confirmation_result_two_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash] if result_four_scene
** Processing line: ~ confirmation_result_two_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash] if result_three_scene~
- Inside source: true
*** True Line Result
confirmation_result_two_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash] if result_three_scene
** Processing line: ~ confirmation_result_two_hash[:scenes] << [60, 20, 4, 4, result_two_scene]~
- Inside source: true
*** True Line Result
confirmation_result_two_hash[:scenes] << [60, 20, 4, 4, result_two_scene]
** Processing line: ~ confirmation_result_two_hash[:storylines] << [40, 20, 4, 4, "#{result_two_label}: \"#{result_two_text}\""]~
- Inside source: true
*** True Line Result
confirmation_result_two_hash[:storylines] << [40, 20, 4, 4, "#{result_two_label}: \"#{result_two_text}\""]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ confirmation_result_three_hash[:scenes] << [20, 35, 4, 4, top_level_hash]~
- Inside source: true
*** True Line Result
confirmation_result_three_hash[:scenes] << [20, 35, 4, 4, top_level_hash]
** Processing line: ~ confirmation_result_three_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]~
- Inside source: true
*** True Line Result
confirmation_result_three_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]
** Processing line: ~ confirmation_result_three_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash]~
- Inside source: true
*** True Line Result
confirmation_result_three_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash]
** Processing line: ~ confirmation_result_three_hash[:scenes] << [60, 30, 4, 4, result_three_scene]~
- Inside source: true
*** True Line Result
confirmation_result_three_hash[:scenes] << [60, 30, 4, 4, result_three_scene]
** Processing line: ~ confirmation_result_three_hash[:storylines] << [40, 30, 4, 4, "#{result_three_label}: \"#{result_three_text}\""]~
- Inside source: true
*** True Line Result
confirmation_result_three_hash[:storylines] << [40, 30, 4, 4, "#{result_three_label}: \"#{result_three_text}\""]
** Processing line: ~ confirmation_result_three_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]~
- Inside source: true
*** True Line Result
confirmation_result_three_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ confirmation_result_four_hash[:scenes] << [20, 35, 4, 4, top_level_hash]~
- Inside source: true
*** True Line Result
confirmation_result_four_hash[:scenes] << [20, 35, 4, 4, top_level_hash]
** Processing line: ~ confirmation_result_four_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]~
- Inside source: true
*** True Line Result
confirmation_result_four_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]
** Processing line: ~ confirmation_result_four_hash[:scenes] << [60, 40, 4, 4, result_four_scene]~
- Inside source: true
*** True Line Result
confirmation_result_four_hash[:scenes] << [60, 40, 4, 4, result_four_scene]
** Processing line: ~ confirmation_result_four_hash[:storylines] << [40, 40, 4, 4, "#{result_four_label}: \"#{result_four_text}\""]~
- Inside source: true
*** True Line Result
confirmation_result_four_hash[:storylines] << [40, 40, 4, 4, "#{result_four_label}: \"#{result_four_text}\""]
** Processing line: ~ confirmation_result_four_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash]~
- Inside source: true
*** True Line Result
confirmation_result_four_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash]
** Processing line: ~ confirmation_result_four_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]~
- Inside source: true
*** True Line Result
confirmation_result_four_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ top_level_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]~
- Inside source: true
*** True Line Result
top_level_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]
** Processing line: ~ top_level_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash] if result_four_scene~
- Inside source: true
*** True Line Result
top_level_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash] if result_four_scene
** Processing line: ~ top_level_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash] if result_three_scene~
- Inside source: true
*** True Line Result
top_level_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash] if result_three_scene
** Processing line: ~ top_level_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]~
- Inside source: true
*** True Line Result
top_level_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ top_level_hash~
- Inside source: true
*** True Line Result
top_level_hash
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def ship_control_hotspot offset_x, offset_y, a, b, c, d~
- Inside source: true
*** True Line Result
def ship_control_hotspot offset_x, offset_y, a, b, c, d
** Processing line: ~ results = []~
- Inside source: true
*** True Line Result
results = []
** Processing line: ~ results << [ 6 + offset_x, 0 + offset_y, 4, 4, a] if a~
- Inside source: true
*** True Line Result
results << [ 6 + offset_x, 0 + offset_y, 4, 4, a] if a
** Processing line: ~ results << [ 1 + offset_x, 5 + offset_y, 4, 4, b] if b~
- Inside source: true
*** True Line Result
results << [ 1 + offset_x, 5 + offset_y, 4, 4, b] if b
** Processing line: ~ results << [ 6 + offset_x, 5 + offset_y, 4, 4, c] if c~
- Inside source: true
*** True Line Result
results << [ 6 + offset_x, 5 + offset_y, 4, 4, c] if c
** Processing line: ~ results << [ 11 + offset_x, 5 + offset_y, 4, 4, d] if d~
- Inside source: true
*** True Line Result
results << [ 11 + offset_x, 5 + offset_y, 4, 4, d] if d
** Processing line: ~ results~
- Inside source: true
*** True Line Result
results
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def reload_current_scene~
- Inside source: true
*** True Line Result
def reload_current_scene
** Processing line: ~ if $gtk.args.state.last_hotspot_scene~
- Inside source: true
*** True Line Result
if $gtk.args.state.last_hotspot_scene
** Processing line: ~ set_scene $gtk.args, send($gtk.args.state.last_hotspot_scene, $gtk.args)~
- Inside source: true
*** True Line Result
set_scene $gtk.args, send($gtk.args.state.last_hotspot_scene, $gtk.args)
** Processing line: ~ tick $gtk.args~
- Inside source: true
*** True Line Result
tick $gtk.args
** Processing line: ~ elsif respond_to? :set_scene~
- Inside source: true
*** True Line Result
elsif respond_to? :set_scene
** Processing line: ~ set_scene $gtk.args, (replied_to_serenity_alive_firmly $gtk.args)~
- Inside source: true
*** True Line Result
set_scene $gtk.args, (replied_to_serenity_alive_firmly $gtk.args)
** Processing line: ~ tick $gtk.args~
- Inside source: true
*** True Line Result
tick $gtk.args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ $gtk.console.close~
- Inside source: true
*** True Line Result
$gtk.console.close
** 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 Narrative - Return Of Serenity - storyline_anka.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - storyline_anka.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_narrative/return_of_serenity/app/storyline_anka.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/storyline_anka.rb
** Processing line: ~ def anka_inside_room args~
- Inside source: true
*** True Line Result
def anka_inside_room args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [34, 35],~
- Inside source: true
*** True Line Result
player: [34, 35],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [34, 34, 4, 4, "Ahhhh!!! Oh god, it was just- a nightmare."],~
- Inside source: true
*** True Line Result
[34, 34, 4, 4, "Ahhhh!!! Oh god, it was just- a nightmare."],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [32, -1, 8, 3, :anka_observatory]~
- Inside source: true
*** True Line Result
[32, -1, 8, 3, :anka_observatory]
** 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 anka_observatory args~
- Inside source: true
*** True Line Result
def anka_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [51, 12],~
- Inside source: true
*** True Line Result
player: [51, 12],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [50, 10, 4, 4, "Breathe, Hiro. Just see what's there... everything--- will- be okay."]~
- Inside source: true
*** True Line Result
[50, 10, 4, 4, "Breathe, Hiro. Just see what's there... everything--- will- be okay."]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 18, 5, 12, :anka_inside_mainframe]~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, :anka_inside_mainframe]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_inside_observatory_render
** 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 anka_inside_mainframe args~
- Inside source: true
*** True Line Result
def anka_inside_mainframe args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ player: [32, 4],~
- Inside source: true
*** True Line Result
player: [32, 4],
** Processing line: ~ background: 'sprites/mainframe.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mainframe.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [22, 45, 17, 4, (anka_last_reply args)],~
- Inside source: true
*** True Line Result
[22, 45, 17, 4, (anka_last_reply args)],
** Processing line: ~ [45, 45, 4, 4, (anka_current_reply args)],~
- Inside source: true
*** True Line Result
[45, 45, 4, 4, (anka_current_reply args)],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_top_right, :reply_to_anka]~
- Inside source: true
*** True Line Result
[*hotspot_top_right, :reply_to_anka]
** 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 reply_to_anka args~
- Inside source: true
*** True Line Result
def reply_to_anka args
** Processing line: ~ decision_graph anka_current_reply(args),~
- Inside source: true
*** True Line Result
decision_graph anka_current_reply(args),
** Processing line: ~ "Matthew's-- wife is doing-- well. What's-- even-- better-- is that he's-- a dad, and he didn't-- even-- know it. Should- I- leave- out the part about-- the crew- being-- in hibernation-- for 20-- years? They- should- enter-- statis-- on a high- note... Right?",~
- Inside source: true
*** True Line Result
"Matthew's-- wife is doing-- well. What's-- even-- better-- is that he's-- a dad, and he didn't-- even-- know it. Should- I- leave- out the part about-- the crew- being-- in hibernation-- for 20-- years? They- should- enter-- statis-- on a high- note... Right?",
** Processing line: ~ [:replied_with_whole_truth, "Whole-- Truth--", anka_reply_whole_truth],~
- Inside source: true
*** True Line Result
[:replied_with_whole_truth, "Whole-- Truth--", anka_reply_whole_truth],
** Processing line: ~ [:replied_with_half_truth, "Half-- Truth--", anka_reply_half_truth]~
- Inside source: true
*** True Line Result
[:replied_with_half_truth, "Half-- Truth--", anka_reply_half_truth]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def anka_last_reply args~
- Inside source: true
*** True Line Result
def anka_last_reply args
** Processing line: ~ if args.state.scene_history.include? :replied_to_serenity_alive_firmly~
- Inside source: true
*** True Line Result
if args.state.scene_history.include? :replied_to_serenity_alive_firmly
** Processing line: ~ return "Buffer--: #{serenity_alive_firm_reply.quote}"~
- Inside source: true
*** True Line Result
return "Buffer--: #{serenity_alive_firm_reply.quote}"
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return "Buffer--: #{serenity_alive_sugarcoated_reply.quote}"~
- Inside source: true
*** True Line Result
return "Buffer--: #{serenity_alive_sugarcoated_reply.quote}"
** 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 anka_reply_whole_truth~
- Inside source: true
*** True Line Result
def anka_reply_whole_truth
** Processing line: ~ "Matthew's wife is doing-- very-- well. In fact, she was pregnant. Matthew-- is a dad. He has a son. But, I need- all-- of-- you-- to brace-- yourselves. You've-- been in statis-- for 20 years. A lot has changed. Most of Earth's-- population--- didn't-- survive. Tell- Matthew-- that I'm-- sorry he didn't-- get to see- his- son grow- up."~
- Inside source: true
*** True Line Result
"Matthew's wife is doing-- very-- well. In fact, she was pregnant. Matthew-- is a dad. He has a son. But, I need- all-- of-- you-- to brace-- yourselves. You've-- been in statis-- for 20 years. A lot has changed. Most of Earth's-- population--- didn't-- survive. Tell- Matthew-- that I'm-- sorry he didn't-- get to see- his- son grow- up."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def anka_reply_half_truth~
- Inside source: true
*** True Line Result
def anka_reply_half_truth
** Processing line: ~ "Matthew's--- wife- is doing-- very-- well. In fact, she was pregnant. Matthew is a dad! It's a boy! Tell- Matthew-- congrats-- for me. Hope-- to see- all of you- soon."~
- Inside source: true
*** True Line Result
"Matthew's--- wife- is doing-- very-- well. In fact, she was pregnant. Matthew is a dad! It's a boy! Tell- Matthew-- congrats-- for me. Hope-- to see- all of you- soon."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def replied_with_whole_truth args~
- Inside source: true
*** True Line Result
def replied_with_whole_truth args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [32, 21],~
- Inside source: true
*** True Line Result
player: [32, 21],
** Processing line: ~ scenes: [[60, 0, 4, 32, :replied_to_anka_back_home]],~
- Inside source: true
*** True Line Result
scenes: [[60, 0, 4, 32, :replied_to_anka_back_home]],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: #{anka_reply_whole_truth.quote}"],~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, "Buffer-- has been set to: #{anka_reply_whole_truth.quote}"],
** Processing line: ~ [30, 10, 5, 4, "I- hope- I- did the right- thing- by laying-- it all- out- there."],~
- Inside source: true
*** True Line Result
[30, 10, 5, 4, "I- hope- I- did the right- thing- by laying-- it all- out- there."],
** 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 replied_with_half_truth args~
- Inside source: true
*** True Line Result
def replied_with_half_truth args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [32, 21],~
- Inside source: true
*** True Line Result
player: [32, 21],
** Processing line: ~ scenes: [[60, 0, 4, 32, :replied_to_anka_back_home]],~
- Inside source: true
*** True Line Result
scenes: [[60, 0, 4, 32, :replied_to_anka_back_home]],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: #{anka_reply_half_truth.quote}"],~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, "Buffer-- has been set to: #{anka_reply_half_truth.quote}"],
** Processing line: ~ [30, 10, 5, 4, "I- hope- I- did the right- thing- by not giving-- them- the whole- truth."],~
- Inside source: true
*** True Line Result
[30, 10, 5, 4, "I- hope- I- did the right- thing- by not giving-- them- the whole- truth."],
** 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 anka_current_reply args~
- Inside source: true
*** True Line Result
def anka_current_reply args
** Processing line: ~ if args.state.scene_history.include? :replied_to_serenity_alive_firmly~
- Inside source: true
*** True Line Result
if args.state.scene_history.include? :replied_to_serenity_alive_firmly
** Processing line: ~ return "Hello. This is, Aanka. Sasha-- is still- trying-- to gather-- her wits about-- her, given- the gravity--- of your- last- reply. Thank- you- for being-- honest, and thank- you- for the help- with the ship- diagnostics. I was able-- to retrieve-- all of the navigation--- information---- after-- the battery--- swap. We- are ready-- to head back to Earth. Before-- we go- back- into-- statis, Matthew--- wanted-- to know- how his- wife- is doing. Please- reply-- as soon- as you can. He's-- not going-- to get- into-- the statis-- chamber-- until-- he knows- his wife is okay."~
- Inside source: true
*** True Line Result
return "Hello. This is, Aanka. Sasha-- is still- trying-- to gather-- her wits about-- her, given- the gravity--- of your- last- reply. Thank- you- for being-- honest, and thank- you- for the help- with the ship- diagnostics. I was able-- to retrieve-- all of the navigation--- information---- after-- the battery--- swap. We- are ready-- to head back to Earth. Before-- we go- back- into-- statis, Matthew--- wanted-- to know- how his- wife- is doing. Please- reply-- as soon- as you can. He's-- not going-- to get- into-- the statis-- chamber-- until-- he knows- his wife is okay."
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return "Hello. This is, Aanka. Thank- you for the help- with the ship's-- diagnostics. I was able-- to retrieve-- all of the navigation--- information--- after-- the battery-- swap. I- know-- that- you didn't-- tell- the whole truth- about-- how far we are from- Earth. Don't-- worry. I understand-- why you did it. We- are ready-- to head back to Earth. Before-- we go- back- into-- statis, Matthew--- wanted-- to know- how his- wife- is doing. Please- reply-- as soon- as you can. He's-- not going-- to get- into-- the statis-- chamber-- until-- he knows- his wife is okay."~
- Inside source: true
*** True Line Result
return "Hello. This is, Aanka. Thank- you for the help- with the ship's-- diagnostics. I was able-- to retrieve-- all of the navigation--- information--- after-- the battery-- swap. I- know-- that- you didn't-- tell- the whole truth- about-- how far we are from- Earth. Don't-- worry. I understand-- why you did it. We- are ready-- to head back to Earth. Before-- we go- back- into-- statis, Matthew--- wanted-- to know- how his- wife- is doing. Please- reply-- as soon- as you can. He's-- not going-- to get- into-- the statis-- chamber-- until-- he knows- his wife is okay."
** 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 replied_to_anka_back_home args~
- Inside source: true
*** True Line Result
def replied_to_anka_back_home args
** Processing line: ~ if args.state.scene_history.include? :replied_with_whole_truth~
- Inside source: true
*** True Line Result
if args.state.scene_history.include? :replied_with_whole_truth
** Processing line: ~ return {~
- Inside source: true
*** True Line Result
return {
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [34, 4],~
- Inside source: true
*** True Line Result
player: [34, 4],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [34, 4, 4, 4, "I- hope-- this pit in my stomach-- is gone-- by tomorrow---."],~
- Inside source: true
*** True Line Result
[34, 4, 4, 4, "I- hope-- this pit in my stomach-- is gone-- by tomorrow---."],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 38, 12, 13, :final_message_sad],~
- Inside source: true
*** True Line Result
[30, 38, 12, 13, :final_message_sad],
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return {~
- Inside source: true
*** True Line Result
return {
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [34, 4],~
- Inside source: true
*** True Line Result
player: [34, 4],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [34, 4, 4, 4, "I- get the feeling-- I'm going-- to sleep real well tonight--."],~
- Inside source: true
*** True Line Result
[34, 4, 4, 4, "I- get the feeling-- I'm going-- to sleep real well tonight--."],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 38, 12, 13, :final_message_happy],~
- Inside source: true
*** True Line Result
[30, 38, 12, 13, :final_message_happy],
** 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: ~ 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 Narrative - Return Of Serenity - storyline_blinking_light.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - storyline_blinking_light.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_narrative/return_of_serenity/app/storyline_blinking_light.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/storyline_blinking_light.rb
** Processing line: ~ def the_blinking_light args~
- Inside source: true
*** True Line Result
def the_blinking_light args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/side-of-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/side-of-home.png',
** Processing line: ~ player: [16, 13],~
- Inside source: true
*** True Line Result
player: [16, 13],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [52, 24, 11, 5, :blinking_light_mountain_pass],~
- Inside source: true
*** True Line Result
[52, 24, 11, 5, :blinking_light_mountain_pass],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_side_of_home_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_side_of_home_render
** 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 blinking_light_mountain_pass args~
- Inside source: true
*** True Line Result
def blinking_light_mountain_pass args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/mountain-pass-zoomed-out.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mountain-pass-zoomed-out.png',
** Processing line: ~ player: [4, 4],~
- Inside source: true
*** True Line Result
player: [4, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [18, 47, 5, 5, :blinking_light_path_to_observatory]~
- Inside source: true
*** True Line Result
[18, 47, 5, 5, :blinking_light_path_to_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_mountain_pass_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_mountain_pass_render
** 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 blinking_light_path_to_observatory args~
- Inside source: true
*** True Line Result
def blinking_light_path_to_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/path-to-observatory.png',
** Processing line: ~ player: [60, 4],~
- Inside source: true
*** True Line Result
player: [60, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [0, 26, 5, 5, :blinking_light_observatory]~
- Inside source: true
*** True Line Result
[0, 26, 5, 5, :blinking_light_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_path_to_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_path_to_observatory_render
** 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 blinking_light_observatory args~
- Inside source: true
*** True Line Result
def blinking_light_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/observatory.png',
** Processing line: ~ player: [60, 2],~
- Inside source: true
*** True Line Result
player: [60, 2],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [28, 39, 4, 10, :blinking_light_inside_observatory]~
- Inside source: true
*** True Line Result
[28, 39, 4, 10, :blinking_light_inside_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_observatory_render
** 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 blinking_light_inside_observatory args~
- Inside source: true
*** True Line Result
def blinking_light_inside_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ player: [60, 2],~
- Inside source: true
*** True Line Result
player: [60, 2],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [50, 2, 4, 8, "That's weird. I thought- this- mainframe-- was broken--."]~
- Inside source: true
*** True Line Result
[50, 2, 4, 8, "That's weird. I thought- this- mainframe-- was broken--."]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 18, 5, 12, :blinking_light_inside_mainframe]~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, :blinking_light_inside_mainframe]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_inside_observatory_render
** 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 blinking_light_inside_mainframe args~
- Inside source: true
*** True Line Result
def blinking_light_inside_mainframe args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/mainframe.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mainframe.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [30, 4],~
- Inside source: true
*** True Line Result
player: [30, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [62, 32, 4, 32, :reply_to_introduction]~
- Inside source: true
*** True Line Result
[62, 32, 4, 32, :reply_to_introduction]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [43, 43, 8, 8, "\"Mission-- control--, your- main- comm-- channels-- seem-- to be down. My apologies-- for- using-- this low- level-- exploit--. What's-- going-- on down there? We are ready-- for reentry--.\" Message--- Timestamp---: 4- hours-- 23--- minutes-- ago--."],~
- Inside source: true
*** True Line Result
[43, 43, 8, 8, "\"Mission-- control--, your- main- comm-- channels-- seem-- to be down. My apologies-- for- using-- this low- level-- exploit--. What's-- going-- on down there? We are ready-- for reentry--.\" Message--- Timestamp---: 4- hours-- 23--- minutes-- ago--."],
** Processing line: ~ [30, 30, 4, 4, "There's-- a low- level-- message-- here... NANI.T.F?"],~
- Inside source: true
*** True Line Result
[30, 30, 4, 4, "There's-- a low- level-- message-- here... NANI.T.F?"],
** Processing line: ~ [14, 10, 24, 4, "Oh interesting---. This transistor--- needed-- to be activated--- for the- mainframe-- to work."],~
- Inside source: true
*** True Line Result
[14, 10, 24, 4, "Oh interesting---. This transistor--- needed-- to be activated--- for the- mainframe-- to work."],
** Processing line: ~ [14, 20, 24, 4, "What the heck activated--- this thing- though?"]~
- Inside source: true
*** True Line Result
[14, 20, 24, 4, "What the heck activated--- this thing- though?"]
** 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: ~#+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 Narrative - Return Of Serenity - storyline_day_one.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - storyline_day_one.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_narrative/return_of_serenity/app/storyline_day_one.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/storyline_day_one.rb
** Processing line: ~ def day_one_beginning args~
- Inside source: true
*** True Line Result
def day_one_beginning args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/side-of-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/side-of-home.png',
** Processing line: ~ player: [16, 13],~
- Inside source: true
*** True Line Result
player: [16, 13],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [0, 0, 64, 2, :day_one_infront_of_home],~
- Inside source: true
*** True Line Result
[0, 0, 64, 2, :day_one_infront_of_home],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [35, 10, 6, 6, "Man. Hard to believe- that today- is the 20th--- anniversary-- of The Impact."]~
- Inside source: true
*** True Line Result
[35, 10, 6, 6, "Man. Hard to believe- that today- is the 20th--- anniversary-- of The Impact."]
** 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 day_one_infront_of_home args~
- Inside source: true
*** True Line Result
def day_one_infront_of_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/front-of-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/front-of-home.png',
** Processing line: ~ player: [56, 23],~
- Inside source: true
*** True Line Result
player: [56, 23],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [43, 34, 10, 16, :day_one_home],~
- Inside source: true
*** True Line Result
[43, 34, 10, 16, :day_one_home],
** Processing line: ~ [62, 0, 3, 40, :day_one_beginning],~
- Inside source: true
*** True Line Result
[62, 0, 3, 40, :day_one_beginning],
** Processing line: ~ [0, 4, 3, 20, :day_one_ceremony]~
- Inside source: true
*** True Line Result
[0, 4, 3, 20, :day_one_ceremony]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [40, 20, 4, 4, "It looks like everyone- is already- at the rememberance-- ceremony."],~
- Inside source: true
*** True Line Result
[40, 20, 4, 4, "It looks like everyone- is already- at the rememberance-- ceremony."],
** 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 day_one_home args~
- Inside source: true
*** True Line Result
def day_one_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [34, 3],~
- Inside source: true
*** True Line Result
player: [34, 3],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [28, 0, 12, 2, :day_one_infront_of_home]~
- Inside source: true
*** True Line Result
[28, 0, 12, 2, :day_one_infront_of_home]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ 38, 4, 4, 4, "My mansion- in all its glory! Okay yea, it's just a shipping- container-. Apparently-, it's nothing- like the luxuries- of the 2040's. But it's- all we have- in- this day and age. And it'll suffice."~
- Inside source: true
*** True Line Result
38, 4, 4, 4, "My mansion- in all its glory! Okay yea, it's just a shipping- container-. Apparently-, it's nothing- like the luxuries- of the 2040's. But it's- all we have- in- this day and age. And it'll suffice."
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ 28, 7, 4, 7,~
- Inside source: true
*** True Line Result
28, 7, 4, 7,
** Processing line: ~ "Ahhh. My reading- couch. It's so comfortable--."~
- Inside source: true
*** True Line Result
"Ahhh. My reading- couch. It's so comfortable--."
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ 38, 21, 4, 4,~
- Inside source: true
*** True Line Result
38, 21, 4, 4,
** Processing line: ~ "I'm- lucky- to have a computer--. I'm- one of the few people- with- the skills to put this- thing to good use."~
- Inside source: true
*** True Line Result
"I'm- lucky- to have a computer--. I'm- one of the few people- with- the skills to put this- thing to good use."
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ 45, 37, 4, 8,~
- Inside source: true
*** True Line Result
45, 37, 4, 8,
** Processing line: ~ "This corner- of my home- is always- warmer-. It's cause of the ref~lected-- light- from the solar-- panels--, just on the other- side- of this wall. It's hard- to believe- there was o~nce-- an unlimited- amount- of electricity--."~
- Inside source: true
*** True Line Result
"This corner- of my home- is always- warmer-. It's cause of the ref~lected-- light- from the solar-- panels--, just on the other- side- of this wall. It's hard- to believe- there was o~nce-- an unlimited- amount- of electricity--."
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ 32, 40, 8, 10,~
- Inside source: true
*** True Line Result
32, 40, 8, 10,
** Processing line: ~ "This isn't- a good time- to sleep. I- should probably- head to the ceremony-."~
- Inside source: true
*** True Line Result
"This isn't- a good time- to sleep. I- should probably- head to the ceremony-."
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ 25, 21, 5, 12,~
- Inside source: true
*** True Line Result
25, 21, 5, 12,
** Processing line: ~ "Fifteen-- years- of computer-- science-- notes, neatly-- organized. Compiler--- Theory--, Linear--- Algebra---, Game-- Development---... Every-- subject-- imaginable--."~
- Inside source: true
*** True Line Result
"Fifteen-- years- of computer-- science-- notes, neatly-- organized. Compiler--- Theory--, Linear--- Algebra---, Game-- Development---... Every-- subject-- imaginable--."
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def day_one_ceremony args~
- Inside source: true
*** True Line Result
def day_one_ceremony args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/tribute.png',~
- Inside source: true
*** True Line Result
background: 'sprites/tribute.png',
** Processing line: ~ player: [57, 21],~
- Inside source: true
*** True Line Result
player: [57, 21],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [62, 0, 2, 40, :day_one_infront_of_home],~
- Inside source: true
*** True Line Result
[62, 0, 2, 40, :day_one_infront_of_home],
** Processing line: ~ [0, 24, 2, 40, :day_one_infront_of_library]~
- Inside source: true
*** True Line Result
[0, 24, 2, 40, :day_one_infront_of_library]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [53, 12, 3, 8, "It's- been twenty- years since The Impact. Twenty- years, since Halley's-- Comet-- set Earth's- blue- sky on fire."],~
- Inside source: true
*** True Line Result
[53, 12, 3, 8, "It's- been twenty- years since The Impact. Twenty- years, since Halley's-- Comet-- set Earth's- blue- sky on fire."],
** Processing line: ~ [45, 12, 3, 8, "The space mission- sent to prevent- Earth's- total- destruction--, was a success. Only- 99.9%------ of the world's- population-- died-- that day. Hey, it's- better-- than 100%---- of humanity-- dying."],~
- Inside source: true
*** True Line Result
[45, 12, 3, 8, "The space mission- sent to prevent- Earth's- total- destruction--, was a success. Only- 99.9%------ of the world's- population-- died-- that day. Hey, it's- better-- than 100%---- of humanity-- dying."],
** Processing line: ~ [20, 12, 23, 4, "The monument--- reads:---- Here- stands- the tribute-- to Space- Mission-- Serenity--- and- its- crew. You- have- given-- humanity--- a second-- chance."],~
- Inside source: true
*** True Line Result
[20, 12, 23, 4, "The monument--- reads:---- Here- stands- the tribute-- to Space- Mission-- Serenity--- and- its- crew. You- have- given-- humanity--- a second-- chance."],
** Processing line: ~ [15, 12, 3, 8, "Rest- in- peace--- Matthew----, Sasha----, Aanka----"],~
- Inside source: true
*** True Line Result
[15, 12, 3, 8, "Rest- in- peace--- Matthew----, Sasha----, Aanka----"],
** 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 day_one_infront_of_library args~
- Inside source: true
*** True Line Result
def day_one_infront_of_library args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/outside-library.png',~
- Inside source: true
*** True Line Result
background: 'sprites/outside-library.png',
** Processing line: ~ player: [57, 21],~
- Inside source: true
*** True Line Result
player: [57, 21],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [62, 0, 2, 40, :day_one_ceremony],~
- Inside source: true
*** True Line Result
[62, 0, 2, 40, :day_one_ceremony],
** Processing line: ~ [49, 39, 6, 9, :day_one_library]~
- Inside source: true
*** True Line Result
[49, 39, 6, 9, :day_one_library]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [50, 20, 4, 8, "Shipping- containers-- as far- as the eye- can see. It's- rather- beautiful-- if you ask me. Even- though-- this- view- represents-- all- that's-- left- of humanity-."]~
- Inside source: true
*** True Line Result
[50, 20, 4, 8, "Shipping- containers-- as far- as the eye- can see. It's- rather- beautiful-- if you ask me. Even- though-- this- view- represents-- all- that's-- left- of humanity-."]
** 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 day_one_library args~
- Inside source: true
*** True Line Result
def day_one_library args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/library.png',~
- Inside source: true
*** True Line Result
background: 'sprites/library.png',
** Processing line: ~ player: [27, 4],~
- Inside source: true
*** True Line Result
player: [27, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [0, 0, 64, 2, :end_day_one_infront_of_library]~
- Inside source: true
*** True Line Result
[0, 0, 64, 2, :end_day_one_infront_of_library]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [28, 22, 8, 4, "I grew- up- in this library. I've- read every- book- here. My favorites-- were- of course-- anything- computer-- related."],~
- Inside source: true
*** True Line Result
[28, 22, 8, 4, "I grew- up- in this library. I've- read every- book- here. My favorites-- were- of course-- anything- computer-- related."],
** Processing line: ~ [6, 32, 10, 6, "My favorite-- area--- of the library. The Science-- Section."]~
- Inside source: true
*** True Line Result
[6, 32, 10, 6, "My favorite-- area--- of the library. The Science-- Section."]
** 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 end_day_one_infront_of_library args~
- Inside source: true
*** True Line Result
def end_day_one_infront_of_library args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/outside-library.png',~
- Inside source: true
*** True Line Result
background: 'sprites/outside-library.png',
** Processing line: ~ player: [51, 33],~
- Inside source: true
*** True Line Result
player: [51, 33],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [49, 39, 6, 9, :day_one_library],~
- Inside source: true
*** True Line Result
[49, 39, 6, 9, :day_one_library],
** Processing line: ~ [62, 0, 2, 40, :end_day_one_monument],~
- Inside source: true
*** True Line Result
[62, 0, 2, 40, :end_day_one_monument],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [50, 27, 4, 4, "It's getting late. Better get some sleep."]~
- Inside source: true
*** True Line Result
[50, 27, 4, 4, "It's getting late. Better get some sleep."]
** 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 end_day_one_monument args~
- Inside source: true
*** True Line Result
def end_day_one_monument args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/tribute.png',~
- Inside source: true
*** True Line Result
background: 'sprites/tribute.png',
** Processing line: ~ player: [2, 36],~
- Inside source: true
*** True Line Result
player: [2, 36],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [62, 0, 2, 40, :end_day_one_infront_of_home],~
- Inside source: true
*** True Line Result
[62, 0, 2, 40, :end_day_one_infront_of_home],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [50, 27, 4, 4, "It's getting late. Better get some sleep."],~
- Inside source: true
*** True Line Result
[50, 27, 4, 4, "It's getting late. Better get some sleep."],
** 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 end_day_one_infront_of_home args~
- Inside source: true
*** True Line Result
def end_day_one_infront_of_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/front-of-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/front-of-home.png',
** Processing line: ~ player: [1, 17],~
- Inside source: true
*** True Line Result
player: [1, 17],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [43, 34, 10, 16, :end_day_one_home],~
- Inside source: true
*** True Line Result
[43, 34, 10, 16, :end_day_one_home],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [20, 10, 4, 4, "It's getting late. Better get some sleep."],~
- Inside source: true
*** True Line Result
[20, 10, 4, 4, "It's getting late. Better get some sleep."],
** 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 end_day_one_home args~
- Inside source: true
*** True Line Result
def end_day_one_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [34, 3],~
- Inside source: true
*** True Line Result
player: [34, 3],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [32, 40, 8, 10, :end_day_one_dream],~
- Inside source: true
*** True Line Result
[32, 40, 8, 10, :end_day_one_dream],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [38, 4, 4, 4, "It's getting late. Better get some sleep."],~
- Inside source: true
*** True Line Result
[38, 4, 4, 4, "It's getting late. Better get some sleep."],
** 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 end_day_one_dream args~
- Inside source: true
*** True Line Result
def end_day_one_dream args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/dream.png',~
- Inside source: true
*** True Line Result
background: 'sprites/dream.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [4, 4],~
- Inside source: true
*** True Line Result
player: [4, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [62, 0, 2, 64, :explaining_the_special_power]~
- Inside source: true
*** True Line Result
[62, 0, 2, 64, :explaining_the_special_power]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [10, 10, 4, 4, "Why- does this- moment-- always- haunt- my dreams?"],~
- Inside source: true
*** True Line Result
[10, 10, 4, 4, "Why- does this- moment-- always- haunt- my dreams?"],
** Processing line: ~ [20, 10, 4, 4, "This kid- reads these computer--- science--- books- nonstop-. What's- wrong with him?"],~
- Inside source: true
*** True Line Result
[20, 10, 4, 4, "This kid- reads these computer--- science--- books- nonstop-. What's- wrong with him?"],
** Processing line: ~ [30, 10, 4, 4, "There- is nothing-- wrong- with him. This behavior-- should be encouraged---! In fact-, I think- he's- special---. Have- you seen- him use- a computer---? It's-- almost-- as if he can- speak-- to it."]~
- Inside source: true
*** True Line Result
[30, 10, 4, 4, "There- is nothing-- wrong- with him. This behavior-- should be encouraged---! In fact-, I think- he's- special---. Have- you seen- him use- a computer---? It's-- almost-- as if he can- speak-- to it."]
** 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 explaining_the_special_power args~
- Inside source: true
*** True Line Result
def explaining_the_special_power args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [32, 30],~
- Inside source: true
*** True Line Result
player: [32, 30],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ 38, 21, 4, 4, :explaining_the_special_power_inside_computer~
- Inside source: true
*** True Line Result
38, 21, 4, 4, :explaining_the_special_power_inside_computer
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def explaining_the_special_power_inside_computer args~
- Inside source: true
*** True Line Result
def explaining_the_special_power_inside_computer args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/pc.png',~
- Inside source: true
*** True Line Result
background: 'sprites/pc.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [34, 4],~
- Inside source: true
*** True Line Result
player: [34, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [0, 62, 64, 3, :the_blinking_light]~
- Inside source: true
*** True Line Result
[0, 62, 64, 3, :the_blinking_light]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [14, 20, 24, 4, "So... I have a special-- power--. I don't-- need a mouse-, keyboard--, or even-- a monitor--- to control-- a computer--."],~
- Inside source: true
*** True Line Result
[14, 20, 24, 4, "So... I have a special-- power--. I don't-- need a mouse-, keyboard--, or even-- a monitor--- to control-- a computer--."],
** Processing line: ~ [14, 25, 24, 4, "I only-- pretend-- to use peripherals---, so as not- to freak- anyone--- out."],~
- Inside source: true
*** True Line Result
[14, 25, 24, 4, "I only-- pretend-- to use peripherals---, so as not- to freak- anyone--- out."],
** Processing line: ~ [14, 30, 24, 4, "Inside-- this silicon--- Universe---, is the only-- place I- feel- at peace."],~
- Inside source: true
*** True Line Result
[14, 30, 24, 4, "Inside-- this silicon--- Universe---, is the only-- place I- feel- at peace."],
** Processing line: ~ [14, 35, 24, 4, "It's-- the only-- place where I don't-- feel alone."]~
- Inside source: true
*** True Line Result
[14, 35, 24, 4, "It's-- the only-- place where I don't-- feel alone."]
** 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: ~#+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 Narrative - Return Of Serenity - storyline_final_decision.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - storyline_final_decision.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_narrative/return_of_serenity/app/storyline_final_decision.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/storyline_final_decision.rb
** Processing line: ~ def final_decision_side_of_home args~
- Inside source: true
*** True Line Result
def final_decision_side_of_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 120,~
- Inside source: true
*** True Line Result
fade: 120,
** Processing line: ~ background: 'sprites/side-of-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/side-of-home.png',
** Processing line: ~ player: [16, 13],~
- Inside source: true
*** True Line Result
player: [16, 13],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [52, 24, 11, 5, :final_decision_mountain_pass],~
- Inside source: true
*** True Line Result
[52, 24, 11, 5, :final_decision_mountain_pass],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_side_of_home_render,~
- Inside source: true
*** True Line Result
render_override: :blinking_light_side_of_home_render,
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [28, 13, 8, 4, "Man. Hard to believe- that today- is the 21st--- anniversary-- of The Impact. Serenity--- will- be- home- soon."]~
- Inside source: true
*** True Line Result
[28, 13, 8, 4, "Man. Hard to believe- that today- is the 21st--- anniversary-- of The Impact. Serenity--- will- be- home- soon."]
** 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 final_decision_mountain_pass args~
- Inside source: true
*** True Line Result
def final_decision_mountain_pass args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/mountain-pass-zoomed-out.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mountain-pass-zoomed-out.png',
** Processing line: ~ player: [4, 4],~
- Inside source: true
*** True Line Result
player: [4, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [18, 47, 5, 5, :final_decision_path_to_observatory]~
- Inside source: true
*** True Line Result
[18, 47, 5, 5, :final_decision_path_to_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_mountain_pass_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_mountain_pass_render
** 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 final_decision_path_to_observatory args~
- Inside source: true
*** True Line Result
def final_decision_path_to_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/path-to-observatory.png',
** Processing line: ~ player: [60, 4],~
- Inside source: true
*** True Line Result
player: [60, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [0, 26, 5, 5, :final_decision_observatory]~
- Inside source: true
*** True Line Result
[0, 26, 5, 5, :final_decision_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_path_to_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_path_to_observatory_render
** 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 final_decision_observatory args~
- Inside source: true
*** True Line Result
def final_decision_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/observatory.png',
** Processing line: ~ player: [60, 2],~
- Inside source: true
*** True Line Result
player: [60, 2],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [28, 39, 4, 10, :final_decision_inside_observatory]~
- Inside source: true
*** True Line Result
[28, 39, 4, 10, :final_decision_inside_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_observatory_render
** 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 final_decision_inside_observatory args~
- Inside source: true
*** True Line Result
def final_decision_inside_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ player: [60, 2],~
- Inside source: true
*** True Line Result
player: [60, 2],
** Processing line: ~ storylines: [],~
- Inside source: true
*** True Line Result
storylines: [],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 18, 5, 12, :final_decision_inside_mainframe]~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, :final_decision_inside_mainframe]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_inside_observatory_render
** 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 final_decision_inside_mainframe args~
- Inside source: true
*** True Line Result
def final_decision_inside_mainframe args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ player: [32, 4],~
- Inside source: true
*** True Line Result
player: [32, 4],
** Processing line: ~ background: 'sprites/mainframe.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mainframe.png',
** Processing line: ~ storylines: [],~
- Inside source: true
*** True Line Result
storylines: [],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_top, :final_decision_ship_status],~
- Inside source: true
*** True Line Result
[*hotspot_top, :final_decision_ship_status],
** 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 final_decision_ship_status args~
- Inside source: true
*** True Line Result
def final_decision_ship_status args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/serenity.png',~
- Inside source: true
*** True Line Result
background: 'sprites/serenity.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [30, 10],~
- Inside source: true
*** True Line Result
player: [30, 10],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_top_right, :final_decision]~
- Inside source: true
*** True Line Result
[*hotspot_top_right, :final_decision]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 8, 4, 4, "????"],~
- Inside source: true
*** True Line Result
[30, 8, 4, 4, "????"],
** Processing line: ~ *final_decision_ship_status_shared(args)~
- Inside source: true
*** True Line Result
*final_decision_ship_status_shared(args)
** 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 final_decision args~
- Inside source: true
*** True Line Result
def final_decision args
** Processing line: ~ decision_graph "Stasis-- Chambers--: UNDERPOWERED, Life- forms-- will be terminated---- unless-- equilibrium----- is reached.",~
- Inside source: true
*** True Line Result
decision_graph "Stasis-- Chambers--: UNDERPOWERED, Life- forms-- will be terminated---- unless-- equilibrium----- is reached.",
** Processing line: ~ "I CAN'T DO THIS... But... If-- I-- don't--- bring-- the- chambers--- to- equilibrium-----, they all die...",~
- Inside source: true
*** True Line Result
"I CAN'T DO THIS... But... If-- I-- don't--- bring-- the- chambers--- to- equilibrium-----, they all die...",
** Processing line: ~ [:final_decision_game_over_noone, "Kill--- Everyone---", "DO--- NOTHING?"],~
- Inside source: true
*** True Line Result
[:final_decision_game_over_noone, "Kill--- Everyone---", "DO--- NOTHING?"],
** Processing line: ~ [:final_decision_game_over_matthew, "Kill--- Sasha---", "KILL--- SASHA?"],~
- Inside source: true
*** True Line Result
[:final_decision_game_over_matthew, "Kill--- Sasha---", "KILL--- SASHA?"],
** Processing line: ~ [:final_decision_game_over_anka, "Kill--- Aanka---", "KILL--- AANKA?"],~
- Inside source: true
*** True Line Result
[:final_decision_game_over_anka, "Kill--- Aanka---", "KILL--- AANKA?"],
** Processing line: ~ [:final_decision_game_over_sasha, "Kill--- Matthew---", "KILL--- MATTHEW?"]~
- Inside source: true
*** True Line Result
[:final_decision_game_over_sasha, "Kill--- Matthew---", "KILL--- MATTHEW?"]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def final_decision_game_over_noone args~
- Inside source: true
*** True Line Result
def final_decision_game_over_noone args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/tribute-game-over.png',~
- Inside source: true
*** True Line Result
background: 'sprites/tribute-game-over.png',
** Processing line: ~ player: [53, 14],~
- Inside source: true
*** True Line Result
player: [53, 14],
** Processing line: ~ fade: 600~
- Inside source: true
*** True Line Result
fade: 600
** 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 final_decision_game_over_matthew args~
- Inside source: true
*** True Line Result
def final_decision_game_over_matthew args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/tribute-game-over.png',~
- Inside source: true
*** True Line Result
background: 'sprites/tribute-game-over.png',
** Processing line: ~ player: [53, 14],~
- Inside source: true
*** True Line Result
player: [53, 14],
** Processing line: ~ fade: 600~
- Inside source: true
*** True Line Result
fade: 600
** 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 final_decision_game_over_anka args~
- Inside source: true
*** True Line Result
def final_decision_game_over_anka args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/tribute-game-over.png',~
- Inside source: true
*** True Line Result
background: 'sprites/tribute-game-over.png',
** Processing line: ~ player: [53, 14],~
- Inside source: true
*** True Line Result
player: [53, 14],
** Processing line: ~ fade: 600~
- Inside source: true
*** True Line Result
fade: 600
** 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 final_decision_game_over_sasha args~
- Inside source: true
*** True Line Result
def final_decision_game_over_sasha args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/tribute-game-over.png',~
- Inside source: true
*** True Line Result
background: 'sprites/tribute-game-over.png',
** Processing line: ~ player: [53, 14],~
- Inside source: true
*** True Line Result
player: [53, 14],
** Processing line: ~ fade: 600~
- Inside source: true
*** True Line Result
fade: 600
** 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 final_decision_ship_status_shared args~
- Inside source: true
*** True Line Result
def final_decision_ship_status_shared args
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ *ship_control_hotspot(24, 22,~
- Inside source: true
*** True Line Result
*ship_control_hotspot(24, 22,
** Processing line: ~ "Stasis-- Chambers--: UNDERPOWERED, Life- forms-- will be terminated---- unless-- equilibrium----- is reached. WHAT?! NO!",~
- Inside source: true
*** True Line Result
"Stasis-- Chambers--: UNDERPOWERED, Life- forms-- will be terminated---- unless-- equilibrium----- is reached. WHAT?! NO!",
** Processing line: ~ "Matthew's--- Chamber--: UNDER-- THREAT-- OF-- TERMINATION. WHAT?! NO!",~
- Inside source: true
*** True Line Result
"Matthew's--- Chamber--: UNDER-- THREAT-- OF-- TERMINATION. WHAT?! NO!",
** Processing line: ~ "Aanka's--- Chamber--: UNDER-- THREAT-- OF-- TERMINATION. WHAT?! NO!",~
- Inside source: true
*** True Line Result
"Aanka's--- Chamber--: UNDER-- THREAT-- OF-- TERMINATION. WHAT?! NO!",
** Processing line: ~ "Sasha's--- Chamber--: UNDER-- THREAT-- OF-- TERMINATION. WHAT?! NO!"),~
- Inside source: true
*** True Line Result
"Sasha's--- Chamber--: UNDER-- THREAT-- OF-- TERMINATION. WHAT?! NO!"),
** 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
#+end_src
** Processing line: ~~
- End of paragraph detected.
*** True Line Result
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline_final_message.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - storyline_final_message.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_narrative/return_of_serenity/app/storyline_final_message.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/storyline_final_message.rb
** Processing line: ~ def final_message_sad args~
- Inside source: true
*** True Line Result
def final_message_sad args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [34, 35],~
- Inside source: true
*** True Line Result
player: [34, 35],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [34, 34, 4, 4, "Another-- sleepless-- night..."],~
- Inside source: true
*** True Line Result
[34, 34, 4, 4, "Another-- sleepless-- night..."],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [32, -1, 8, 3, :final_message_observatory]~
- Inside source: true
*** True Line Result
[32, -1, 8, 3, :final_message_observatory]
** 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 final_message_happy args~
- Inside source: true
*** True Line Result
def final_message_happy args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [34, 35],~
- Inside source: true
*** True Line Result
player: [34, 35],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [34, 34, 4, 4, "Oh man, I slept like rock!"],~
- Inside source: true
*** True Line Result
[34, 34, 4, 4, "Oh man, I slept like rock!"],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [32, -1, 8, 3, :final_message_observatory]~
- Inside source: true
*** True Line Result
[32, -1, 8, 3, :final_message_observatory]
** 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 final_message_side_of_home args~
- Inside source: true
*** True Line Result
def final_message_side_of_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/side-of-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/side-of-home.png',
** Processing line: ~ player: [16, 13],~
- Inside source: true
*** True Line Result
player: [16, 13],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [52, 24, 11, 5, :final_message_mountain_pass],~
- Inside source: true
*** True Line Result
[52, 24, 11, 5, :final_message_mountain_pass],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_side_of_home_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_side_of_home_render
** 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 final_message_mountain_pass args~
- Inside source: true
*** True Line Result
def final_message_mountain_pass args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/mountain-pass-zoomed-out.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mountain-pass-zoomed-out.png',
** Processing line: ~ player: [4, 4],~
- Inside source: true
*** True Line Result
player: [4, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [18, 47, 5, 5, :final_message_path_to_observatory],~
- Inside source: true
*** True Line Result
[18, 47, 5, 5, :final_message_path_to_observatory],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [18, 13, 5, 5, "Hnnnnnnnggg. My legs-- are still sore- from yesterday."]~
- Inside source: true
*** True Line Result
[18, 13, 5, 5, "Hnnnnnnnggg. My legs-- are still sore- from yesterday."]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_mountain_pass_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_mountain_pass_render
** 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 final_message_path_to_observatory args~
- Inside source: true
*** True Line Result
def final_message_path_to_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/path-to-observatory.png',
** Processing line: ~ player: [60, 4],~
- Inside source: true
*** True Line Result
player: [60, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [0, 26, 5, 5, :final_message_observatory]~
- Inside source: true
*** True Line Result
[0, 26, 5, 5, :final_message_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [22, 20, 10, 10, "This spot--, on the mountain, right here, it's-- perfect. This- is where- I'll-- yeet-- the person-- who is playing-- this- prank- on me."]~
- Inside source: true
*** True Line Result
[22, 20, 10, 10, "This spot--, on the mountain, right here, it's-- perfect. This- is where- I'll-- yeet-- the person-- who is playing-- this- prank- on me."]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_path_to_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_path_to_observatory_render
** 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 final_message_observatory args~
- Inside source: true
*** True Line Result
def final_message_observatory args
** Processing line: ~ if args.state.scene_history.include? :replied_with_whole_truth~
- Inside source: true
*** True Line Result
if args.state.scene_history.include? :replied_with_whole_truth
** Processing line: ~ return {~
- Inside source: true
*** True Line Result
return {
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [51, 12],~
- Inside source: true
*** True Line Result
player: [51, 12],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [50, 10, 4, 4, "Here-- we- go..."]~
- Inside source: true
*** True Line Result
[50, 10, 4, 4, "Here-- we- go..."]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 18, 5, 12, :final_message_inside_mainframe]~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, :final_message_inside_mainframe]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_inside_observatory_render
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return {~
- Inside source: true
*** True Line Result
return {
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [51, 12],~
- Inside source: true
*** True Line Result
player: [51, 12],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [50, 10, 4, 4, "I feel like I'm-- walking-- on sunshine!"]~
- Inside source: true
*** True Line Result
[50, 10, 4, 4, "I feel like I'm-- walking-- on sunshine!"]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 18, 5, 12, :final_message_inside_mainframe]~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, :final_message_inside_mainframe]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_inside_observatory_render
** 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 final_message_inside_mainframe args~
- Inside source: true
*** True Line Result
def final_message_inside_mainframe args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ player: [32, 4],~
- Inside source: true
*** True Line Result
player: [32, 4],
** Processing line: ~ background: 'sprites/mainframe.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mainframe.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ scenes: [[45, 45, 4, 4, :final_message_check_ship_status]]~
- Inside source: true
*** True Line Result
scenes: [[45, 45, 4, 4, :final_message_check_ship_status]]
** 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 final_message_check_ship_status args~
- Inside source: true
*** True Line Result
def final_message_check_ship_status args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/mainframe.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mainframe.png',
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [45, 45, 4, 4, (final_message_current args)],~
- Inside source: true
*** True Line Result
[45, 45, 4, 4, (final_message_current args)],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_top, :final_message_ship_status],~
- Inside source: true
*** True Line Result
[*hotspot_top, :final_message_ship_status],
** 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 final_message_ship_status args~
- Inside source: true
*** True Line Result
def final_message_ship_status args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/serenity.png',~
- Inside source: true
*** True Line Result
background: 'sprites/serenity.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [30, 10],~
- Inside source: true
*** True Line Result
player: [30, 10],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 50, 4, 4, :final_message_ship_status_reviewed]~
- Inside source: true
*** True Line Result
[30, 50, 4, 4, :final_message_ship_status_reviewed]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 8, 4, 4, "Let me make- sure- everything--- looks good. It'll-- give me peace- of mind."],~
- Inside source: true
*** True Line Result
[30, 8, 4, 4, "Let me make- sure- everything--- looks good. It'll-- give me peace- of mind."],
** Processing line: ~ *final_message_ship_status_shared(args)~
- Inside source: true
*** True Line Result
*final_message_ship_status_shared(args)
** 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 final_message_ship_status_reviewed args~
- Inside source: true
*** True Line Result
def final_message_ship_status_reviewed args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/serenity.png',~
- Inside source: true
*** True Line Result
background: 'sprites/serenity.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_bottom, :final_message_summary]~
- Inside source: true
*** True Line Result
[*hotspot_bottom, :final_message_summary]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [0, 62, 62, 3, "Whew. Everyone-- is in their- chambers. The engines-- are roaring-- and Serenity-- is coming-- home."],~
- Inside source: true
*** True Line Result
[0, 62, 62, 3, "Whew. Everyone-- is in their- chambers. The engines-- are roaring-- and Serenity-- is coming-- home."],
** 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 final_message_ship_status_shared args~
- Inside source: true
*** True Line Result
def final_message_ship_status_shared args
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ *ship_control_hotspot( 0, 50,~
- Inside source: true
*** True Line Result
*ship_control_hotspot( 0, 50,
** Processing line: ~ "Stasis-- Chambers--: Online, All chambers-- are powered. Battery--- Allocation---: 3--- of-- 3--.",~
- Inside source: true
*** True Line Result
"Stasis-- Chambers--: Online, All chambers-- are powered. Battery--- Allocation---: 3--- of-- 3--.",
** Processing line: ~ "Matthew's--- Chamber--: OCCUPIED----",~
- Inside source: true
*** True Line Result
"Matthew's--- Chamber--: OCCUPIED----",
** Processing line: ~ "Aanka's--- Chamber--: OCCUPIED----",~
- Inside source: true
*** True Line Result
"Aanka's--- Chamber--: OCCUPIED----",
** Processing line: ~ "Sasha's--- Chamber--: OCCUPIED----"),~
- Inside source: true
*** True Line Result
"Sasha's--- Chamber--: OCCUPIED----"),
** Processing line: ~ *ship_control_hotspot(12, 35,~
- Inside source: true
*** True Line Result
*ship_control_hotspot(12, 35,
** Processing line: ~ "Life- Support--: Not-- Needed---",~
- Inside source: true
*** True Line Result
"Life- Support--: Not-- Needed---",
** Processing line: ~ "O2--- Production---: OFF---",~
- Inside source: true
*** True Line Result
"O2--- Production---: OFF---",
** Processing line: ~ "CO2--- Scrubbers---: OFF---",~
- Inside source: true
*** True Line Result
"CO2--- Scrubbers---: OFF---",
** Processing line: ~ "H2O--- Production---: OFF---"),~
- Inside source: true
*** True Line Result
"H2O--- Production---: OFF---"),
** Processing line: ~ *ship_control_hotspot(24, 20,~
- Inside source: true
*** True Line Result
*ship_control_hotspot(24, 20,
** Processing line: ~ "Navigation: Offline---",~
- Inside source: true
*** True Line Result
"Navigation: Offline---",
** Processing line: ~ "Sensor: OFF---",~
- Inside source: true
*** True Line Result
"Sensor: OFF---",
** Processing line: ~ "Heads- Up- Display: DAMAGED---",~
- Inside source: true
*** True Line Result
"Heads- Up- Display: DAMAGED---",
** Processing line: ~ "Arithmetic--- Unit: DAMAGED----"),~
- Inside source: true
*** True Line Result
"Arithmetic--- Unit: DAMAGED----"),
** Processing line: ~ *ship_control_hotspot(36, 35,~
- Inside source: true
*** True Line Result
*ship_control_hotspot(36, 35,
** Processing line: ~ "COMM: Underpowered----",~
- Inside source: true
*** True Line Result
"COMM: Underpowered----",
** Processing line: ~ "Text: ON---",~
- Inside source: true
*** True Line Result
"Text: ON---",
** Processing line: ~ "Audio: SEGFAULT---",~
- Inside source: true
*** True Line Result
"Audio: SEGFAULT---",
** Processing line: ~ "Video: DAMAGED---"),~
- Inside source: true
*** True Line Result
"Video: DAMAGED---"),
** Processing line: ~ *ship_control_hotspot(48, 50,~
- Inside source: true
*** True Line Result
*ship_control_hotspot(48, 50,
** Processing line: ~ "Engine: Online, Coordinates--- Set- for Earth. Battery--- Allocation---: 3--- of-- 3---",~
- Inside source: true
*** True Line Result
"Engine: Online, Coordinates--- Set- for Earth. Battery--- Allocation---: 3--- of-- 3---",
** Processing line: ~ "Engine I: ON---",~
- Inside source: true
*** True Line Result
"Engine I: ON---",
** Processing line: ~ "Engine II: ON---",~
- Inside source: true
*** True Line Result
"Engine II: ON---",
** Processing line: ~ "Engine III: ON---")~
- Inside source: true
*** True Line Result
"Engine III: ON---")
** 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 final_message_last_reply args~
- Inside source: true
*** True Line Result
def final_message_last_reply args
** Processing line: ~ if args.state.scene_history.include? :replied_with_whole_truth~
- Inside source: true
*** True Line Result
if args.state.scene_history.include? :replied_with_whole_truth
** Processing line: ~ return "Buffer--: #{anka_reply_whole_truth.quote}"~
- Inside source: true
*** True Line Result
return "Buffer--: #{anka_reply_whole_truth.quote}"
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return "Buffer--: #{anka_reply_half_truth.quote}"~
- Inside source: true
*** True Line Result
return "Buffer--: #{anka_reply_half_truth.quote}"
** 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 final_message_current args~
- Inside source: true
*** True Line Result
def final_message_current args
** Processing line: ~ if args.state.scene_history.include? :replied_with_whole_truth~
- Inside source: true
*** True Line Result
if args.state.scene_history.include? :replied_with_whole_truth
** Processing line: ~ return "Hey... It's-- me Sasha. Aanka-- is trying-- her best to comfort-- Matthew. This- is the first- time- I've-- ever-- seen-- Matthew-- cry. We'll-- probably-- be in stasis-- by the time you get this message--. Thank- you- again-- for all your help. I look forward-- to meeting-- you in person."~
- Inside source: true
*** True Line Result
return "Hey... It's-- me Sasha. Aanka-- is trying-- her best to comfort-- Matthew. This- is the first- time- I've-- ever-- seen-- Matthew-- cry. We'll-- probably-- be in stasis-- by the time you get this message--. Thank- you- again-- for all your help. I look forward-- to meeting-- you in person."
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return "Hey! It's-- me Sasha! LOL! Aanka-- and Matthew-- are dancing-- around-- like- goofballs--! They- are both- so adorable! Only-- this- tiny-- little-- genius-- can make-- a battle-- hardened-- general--- put- on a tiara-- and dance- around-- like a fairy-- princess-- XD------ Anyways, we are heading-- back into-- the chambers--. I hope our welcome-- home- parade-- has fireworks!"~
- Inside source: true
*** True Line Result
return "Hey! It's-- me Sasha! LOL! Aanka-- and Matthew-- are dancing-- around-- like- goofballs--! They- are both- so adorable! Only-- this- tiny-- little-- genius-- can make-- a battle-- hardened-- general--- put- on a tiara-- and dance- around-- like a fairy-- princess-- XD------ Anyways, we are heading-- back into-- the chambers--. I hope our welcome-- home- parade-- has fireworks!"
** 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 final_message_summary args~
- Inside source: true
*** True Line Result
def final_message_summary args
** Processing line: ~ if args.state.scene_history.include? :replied_with_whole_truth~
- Inside source: true
*** True Line Result
if args.state.scene_history.include? :replied_with_whole_truth
** Processing line: ~ return {~
- Inside source: true
*** True Line Result
return {
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [31, 11],~
- Inside source: true
*** True Line Result
player: [31, 11],
** Processing line: ~ scenes: [[60, 0, 4, 32, :final_decision_side_of_home]],~
- Inside source: true
*** True Line Result
scenes: [[60, 0, 4, 32, :final_decision_side_of_home]],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 10, 5, 4, "I can't-- imagine-- what they are feeling-- right now. But at least- they- know everything---, and we can- concentrate-- on rebuilding--- this world-- right- off the bat. I can't-- wait to see the future-- they'll-- help- build."],~
- Inside source: true
*** True Line Result
[30, 10, 5, 4, "I can't-- imagine-- what they are feeling-- right now. But at least- they- know everything---, and we can- concentrate-- on rebuilding--- this world-- right- off the bat. I can't-- wait to see the future-- they'll-- help- build."],
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return {~
- Inside source: true
*** True Line Result
return {
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [31, 11],~
- Inside source: true
*** True Line Result
player: [31, 11],
** Processing line: ~ scenes: [[60, 0, 4, 32, :final_decision_side_of_home]],~
- Inside source: true
*** True Line Result
scenes: [[60, 0, 4, 32, :final_decision_side_of_home]],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 10, 5, 4, "They all sounded-- so happy. I know- they'll-- be in for a tough- dose- of reality--- when they- arrive. But- at least- they'll-- be around-- all- of us. We'll-- help them- cope."],~
- Inside source: true
*** True Line Result
[30, 10, 5, 4, "They all sounded-- so happy. I know- they'll-- be in for a tough- dose- of reality--- when they- arrive. But- at least- they'll-- be around-- all- of us. We'll-- help them- cope."],
** 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: ~ 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 Narrative - Return Of Serenity - storyline_serenity_alive.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - storyline_serenity_alive.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_narrative/return_of_serenity/app/storyline_serenity_alive.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/storyline_serenity_alive.rb
** Processing line: ~ def serenity_alive_side_of_home args~
- Inside source: true
*** True Line Result
def serenity_alive_side_of_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/side-of-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/side-of-home.png',
** Processing line: ~ player: [16, 13],~
- Inside source: true
*** True Line Result
player: [16, 13],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [52, 24, 11, 5, :serenity_alive_mountain_pass],~
- Inside source: true
*** True Line Result
[52, 24, 11, 5, :serenity_alive_mountain_pass],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_side_of_home_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_side_of_home_render
** 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 serenity_alive_mountain_pass args~
- Inside source: true
*** True Line Result
def serenity_alive_mountain_pass args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/mountain-pass-zoomed-out.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mountain-pass-zoomed-out.png',
** Processing line: ~ player: [4, 4],~
- Inside source: true
*** True Line Result
player: [4, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [18, 47, 5, 5, :serenity_alive_path_to_observatory],~
- Inside source: true
*** True Line Result
[18, 47, 5, 5, :serenity_alive_path_to_observatory],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [18, 13, 5, 5, "Hnnnnnnnggg. My legs-- are still sore- from yesterday."]~
- Inside source: true
*** True Line Result
[18, 13, 5, 5, "Hnnnnnnnggg. My legs-- are still sore- from yesterday."]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_mountain_pass_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_mountain_pass_render
** 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 serenity_alive_path_to_observatory args~
- Inside source: true
*** True Line Result
def serenity_alive_path_to_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/path-to-observatory.png',
** Processing line: ~ player: [60, 4],~
- Inside source: true
*** True Line Result
player: [60, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [0, 26, 5, 5, :serenity_alive_observatory]~
- Inside source: true
*** True Line Result
[0, 26, 5, 5, :serenity_alive_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [22, 20, 10, 10, "This spot--, on the mountain, right here, it's-- perfect. This- is where- I'll-- yeet-- the person-- who is playing-- this- prank- on me."]~
- Inside source: true
*** True Line Result
[22, 20, 10, 10, "This spot--, on the mountain, right here, it's-- perfect. This- is where- I'll-- yeet-- the person-- who is playing-- this- prank- on me."]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_path_to_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_path_to_observatory_render
** 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 serenity_alive_observatory args~
- Inside source: true
*** True Line Result
def serenity_alive_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/observatory.png',
** Processing line: ~ player: [60, 2],~
- Inside source: true
*** True Line Result
player: [60, 2],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [28, 39, 4, 10, :serenity_alive_inside_observatory]~
- Inside source: true
*** True Line Result
[28, 39, 4, 10, :serenity_alive_inside_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_observatory_render
** 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 serenity_alive_inside_observatory args~
- Inside source: true
*** True Line Result
def serenity_alive_inside_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ player: [60, 2],~
- Inside source: true
*** True Line Result
player: [60, 2],
** Processing line: ~ storylines: [],~
- Inside source: true
*** True Line Result
storylines: [],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 18, 5, 12, :serenity_alive_inside_mainframe]~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, :serenity_alive_inside_mainframe]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_inside_observatory_render
** 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 serenity_alive_inside_mainframe args~
- Inside source: true
*** True Line Result
def serenity_alive_inside_mainframe args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/mainframe.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mainframe.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [30, 4],~
- Inside source: true
*** True Line Result
player: [30, 4],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_top, :serenity_alive_ship_status],~
- Inside source: true
*** True Line Result
[*hotspot_top, :serenity_alive_ship_status],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [22, 45, 17, 4, (serenity_alive_last_reply args)],~
- Inside source: true
*** True Line Result
[22, 45, 17, 4, (serenity_alive_last_reply args)],
** Processing line: ~ [45, 45, 4, 4, (serenity_alive_current_message args)],~
- Inside source: true
*** True Line Result
[45, 45, 4, 4, (serenity_alive_current_message args)],
** 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 serenity_alive_ship_status args~
- Inside source: true
*** True Line Result
def serenity_alive_ship_status args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/serenity.png',~
- Inside source: true
*** True Line Result
background: 'sprites/serenity.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [30, 10],~
- Inside source: true
*** True Line Result
player: [30, 10],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 50, 4, 4, :serenity_alive_ship_status_reviewed]~
- Inside source: true
*** True Line Result
[30, 50, 4, 4, :serenity_alive_ship_status_reviewed]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 8, 4, 4, "Serenity? THE--- Mission-- Serenity?! How is that possible? They- are supposed-- to be dead."],~
- Inside source: true
*** True Line Result
[30, 8, 4, 4, "Serenity? THE--- Mission-- Serenity?! How is that possible? They- are supposed-- to be dead."],
** Processing line: ~ [30, 10, 4, 4, "I... can't-- believe-- it. I- can access-- Serenity's-- computer? I- guess my \"superpower----\" isn't limited-- by proximity-- to- a machine--."],~
- Inside source: true
*** True Line Result
[30, 10, 4, 4, "I... can't-- believe-- it. I- can access-- Serenity's-- computer? I- guess my \"superpower----\" isn't limited-- by proximity-- to- a machine--."],
** Processing line: ~ *serenity_alive_shared_ship_status(args)~
- Inside source: true
*** True Line Result
*serenity_alive_shared_ship_status(args)
** 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 serenity_alive_ship_status_reviewed args~
- Inside source: true
*** True Line Result
def serenity_alive_ship_status_reviewed args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/serenity.png',~
- Inside source: true
*** True Line Result
background: 'sprites/serenity.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_bottom, :serenity_alive_time_to_reply]~
- Inside source: true
*** True Line Result
[*hotspot_bottom, :serenity_alive_time_to_reply]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [0, 62, 62, 3, "Okay. Reviewing-- everything--, it looks- like- I- can- take- the batteries--- from the Stasis--- Chambers--- and- Engine--- to keep- the crew-- alive-- and-- their-- location--- pinpointed---."],~
- Inside source: true
*** True Line Result
[0, 62, 62, 3, "Okay. Reviewing-- everything--, it looks- like- I- can- take- the batteries--- from the Stasis--- Chambers--- and- Engine--- to keep- the crew-- alive-- and-- their-- location--- pinpointed---."],
** 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 serenity_alive_time_to_reply args~
- Inside source: true
*** True Line Result
def serenity_alive_time_to_reply args
** Processing line: ~ decision_graph serenity_alive_current_message(args),~
- Inside source: true
*** True Line Result
decision_graph serenity_alive_current_message(args),
** Processing line: ~ "Okay... time to deliver the bad news...",~
- Inside source: true
*** True Line Result
"Okay... time to deliver the bad news...",
** Processing line: ~ [:replied_to_serenity_alive_firmly, "Firm-- Reply", serenity_alive_firm_reply],~
- Inside source: true
*** True Line Result
[:replied_to_serenity_alive_firmly, "Firm-- Reply", serenity_alive_firm_reply],
** Processing line: ~ [:replied_to_serenity_alive_kindly, "Sugar-- Coated---- Reply", serenity_alive_sugarcoated_reply]~
- Inside source: true
*** True Line Result
[:replied_to_serenity_alive_kindly, "Sugar-- Coated---- Reply", serenity_alive_sugarcoated_reply]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def serenity_alive_shared_ship_status args~
- Inside source: true
*** True Line Result
def serenity_alive_shared_ship_status args
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ *ship_control_hotspot( 0, 50,~
- Inside source: true
*** True Line Result
*ship_control_hotspot( 0, 50,
** Processing line: ~ "Stasis-- Chambers--: Online, All chambers-- are powered. Battery--- Allocation---: 3--- of-- 3--, Hmmm. They don't-- need this to be powered-- right- now. Everyone-- is awake.",~
- Inside source: true
*** True Line Result
"Stasis-- Chambers--: Online, All chambers-- are powered. Battery--- Allocation---: 3--- of-- 3--, Hmmm. They don't-- need this to be powered-- right- now. Everyone-- is awake.",
** Processing line: ~ nil,~
- Inside source: true
*** True Line Result
nil,
** Processing line: ~ nil,~
- Inside source: true
*** True Line Result
nil,
** Processing line: ~ nil),~
- Inside source: true
*** True Line Result
nil),
** Processing line: ~ *ship_control_hotspot(12, 35,~
- Inside source: true
*** True Line Result
*ship_control_hotspot(12, 35,
** Processing line: ~ "Life- Support--: Offline, Unable--- to- Sustain-- Life. Battery--- Allocation---: 0--- of-- 3---, Okay. That is definitely---- not a good thing.",~
- Inside source: true
*** True Line Result
"Life- Support--: Offline, Unable--- to- Sustain-- Life. Battery--- Allocation---: 0--- of-- 3---, Okay. That is definitely---- not a good thing.",
** Processing line: ~ nil,~
- Inside source: true
*** True Line Result
nil,
** Processing line: ~ nil,~
- Inside source: true
*** True Line Result
nil,
** Processing line: ~ nil),~
- Inside source: true
*** True Line Result
nil),
** Processing line: ~ *ship_control_hotspot(24, 20,~
- Inside source: true
*** True Line Result
*ship_control_hotspot(24, 20,
** Processing line: ~ "Navigation: Offline, Unable--- to- Calculate--- Location. Battery--- Allocation---: 0--- of-- 3---, Whelp. No wonder-- Sasha-- can't-- get- any-- readings. Their- Navigation--- is completely--- offline.",~
- Inside source: true
*** True Line Result
"Navigation: Offline, Unable--- to- Calculate--- Location. Battery--- Allocation---: 0--- of-- 3---, Whelp. No wonder-- Sasha-- can't-- get- any-- readings. Their- Navigation--- is completely--- offline.",
** Processing line: ~ nil,~
- Inside source: true
*** True Line Result
nil,
** Processing line: ~ nil,~
- Inside source: true
*** True Line Result
nil,
** Processing line: ~ nil),~
- Inside source: true
*** True Line Result
nil),
** Processing line: ~ *ship_control_hotspot(36, 35,~
- Inside source: true
*** True Line Result
*ship_control_hotspot(36, 35,
** Processing line: ~ "COMM: Underpowered----, Limited--- to- Text-- Based-- COMM. Battery--- Allocation---: 1--- of-- 3---, It's-- lucky- that- their- COMM---- system was able to survive-- twenty-- years--. Just- barely-- it seems.",~
- Inside source: true
*** True Line Result
"COMM: Underpowered----, Limited--- to- Text-- Based-- COMM. Battery--- Allocation---: 1--- of-- 3---, It's-- lucky- that- their- COMM---- system was able to survive-- twenty-- years--. Just- barely-- it seems.",
** Processing line: ~ nil,~
- Inside source: true
*** True Line Result
nil,
** Processing line: ~ nil,~
- Inside source: true
*** True Line Result
nil,
** Processing line: ~ nil),~
- Inside source: true
*** True Line Result
nil),
** Processing line: ~ *ship_control_hotspot(48, 50,~
- Inside source: true
*** True Line Result
*ship_control_hotspot(48, 50,
** Processing line: ~ "Engine: Online, Full- Control-- Available. Battery--- Allocation---: 3--- of-- 3---, Hmmm. No point of having an engine-- online--, if you don't- know- where you're-- going.",~
- Inside source: true
*** True Line Result
"Engine: Online, Full- Control-- Available. Battery--- Allocation---: 3--- of-- 3---, Hmmm. No point of having an engine-- online--, if you don't- know- where you're-- going.",
** Processing line: ~ nil,~
- Inside source: true
*** True Line Result
nil,
** Processing line: ~ nil,~
- Inside source: true
*** True Line Result
nil,
** Processing line: ~ nil)~
- Inside source: true
*** True Line Result
nil)
** 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 serenity_alive_firm_reply~
- Inside source: true
*** True Line Result
def serenity_alive_firm_reply
** Processing line: ~ "Serenity, you are at a distance-- farther-- than- Neptune. All- of the ship's-- systems-- are failing. Please- move the batteries---- from- the Stasis-- Chambers-- over- to- Life-- Support--. I also-- need- you to move-- the batteries---- from- the Engines--- to your Navigation---- System."~
- Inside source: true
*** True Line Result
"Serenity, you are at a distance-- farther-- than- Neptune. All- of the ship's-- systems-- are failing. Please- move the batteries---- from- the Stasis-- Chambers-- over- to- Life-- Support--. I also-- need- you to move-- the batteries---- from- the Engines--- to your Navigation---- System."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def serenity_alive_sugarcoated_reply~
- Inside source: true
*** True Line Result
def serenity_alive_sugarcoated_reply
** Processing line: ~ "So... you- are- a teeny--- tiny--- bit--- farther-- from Earth- than you think. And you have a teeny--- tiny--- problem-- with your ship. Please-- move the batteries--- from the Stasis--- Chambers--- over to Life--- Support---. I also need you to move the batteries--- from the Engines--- to your- Navigation--- System. Don't-- worry-- Sasha. I'll-- get y'all-- home."~
- Inside source: true
*** True Line Result
"So... you- are- a teeny--- tiny--- bit--- farther-- from Earth- than you think. And you have a teeny--- tiny--- problem-- with your ship. Please-- move the batteries--- from the Stasis--- Chambers--- over to Life--- Support---. I also need you to move the batteries--- from the Engines--- to your- Navigation--- System. Don't-- worry-- Sasha. I'll-- get y'all-- home."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def replied_to_serenity_alive_firmly args~
- Inside source: true
*** True Line Result
def replied_to_serenity_alive_firmly args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [32, 21],~
- Inside source: true
*** True Line Result
player: [32, 21],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_bottom_right, :serenity_alive_path_from_observatory]~
- Inside source: true
*** True Line Result
[*hotspot_bottom_right, :serenity_alive_path_from_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: #{serenity_alive_firm_reply.quote}"],~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, "Buffer-- has been set to: #{serenity_alive_firm_reply.quote}"],
** Processing line: ~ *serenity_alive_reply_completed_shared_hotspots(args),~
- Inside source: true
*** True Line Result
*serenity_alive_reply_completed_shared_hotspots(args),
** 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 replied_to_serenity_alive_kindly args~
- Inside source: true
*** True Line Result
def replied_to_serenity_alive_kindly args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [32, 21],~
- Inside source: true
*** True Line Result
player: [32, 21],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_bottom_right, :serenity_alive_path_from_observatory]~
- Inside source: true
*** True Line Result
[*hotspot_bottom_right, :serenity_alive_path_from_observatory]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: #{serenity_alive_sugarcoated_reply.quote}"],~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, "Buffer-- has been set to: #{serenity_alive_sugarcoated_reply.quote}"],
** Processing line: ~ *serenity_alive_reply_completed_shared_hotspots(args),~
- Inside source: true
*** True Line Result
*serenity_alive_reply_completed_shared_hotspots(args),
** 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 serenity_alive_path_from_observatory args~
- Inside source: true
*** True Line Result
def serenity_alive_path_from_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/path-to-observatory.png',
** Processing line: ~ player: [4, 21],~
- Inside source: true
*** True Line Result
player: [4, 21],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_bottom_right, :serenity_bio_infront_of_home]~
- Inside source: true
*** True Line Result
[*hotspot_bottom_right, :serenity_bio_infront_of_home]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [22, 20, 10, 10, "I'm not sure what's-- worse. Waiting-- for Sasha's-- reply. Or jumping-- off- from- right- here."]~
- Inside source: true
*** True Line Result
[22, 20, 10, 10, "I'm not sure what's-- worse. Waiting-- for Sasha's-- reply. Or jumping-- off- from- right- here."]
** 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 serenity_alive_reply_completed_shared_hotspots args~
- Inside source: true
*** True Line Result
def serenity_alive_reply_completed_shared_hotspots args
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [30, 10, 5, 4, "I guess it wasn't-- a joke- after-- all."],~
- Inside source: true
*** True Line Result
[30, 10, 5, 4, "I guess it wasn't-- a joke- after-- all."],
** Processing line: ~ [40, 10, 5, 4, "I barely-- remember--- the- history----- of the crew."],~
- Inside source: true
*** True Line Result
[40, 10, 5, 4, "I barely-- remember--- the- history----- of the crew."],
** Processing line: ~ [50, 10, 5, 4, "It probably--- wouldn't-- hurt- to- refresh-- my memory--."]~
- Inside source: true
*** True Line Result
[50, 10, 5, 4, "It probably--- wouldn't-- hurt- to- refresh-- my memory--."]
** 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 serenity_alive_last_reply args~
- Inside source: true
*** True Line Result
def serenity_alive_last_reply args
** Processing line: ~ if args.state.scene_history.include? :replied_to_introduction_seriously~
- Inside source: true
*** True Line Result
if args.state.scene_history.include? :replied_to_introduction_seriously
** Processing line: ~ return "Buffer--: \"Hello, Who- is sending-- this message--?\""~
- Inside source: true
*** True Line Result
return "Buffer--: \"Hello, Who- is sending-- this message--?\""
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return "Buffer--: \"New- phone. Who dis?\""~
- Inside source: true
*** True Line Result
return "Buffer--: \"New- phone. Who dis?\""
** 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 serenity_alive_current_message args~
- Inside source: true
*** True Line Result
def serenity_alive_current_message args
** Processing line: ~ if args.state.scene_history.include? :replied_to_introduction_seriously~
- Inside source: true
*** True Line Result
if args.state.scene_history.include? :replied_to_introduction_seriously
** Processing line: ~ "This- is Sasha. The Serenity--- crew-- is out of hibernation---- and ready-- for Earth reentry--. But, it seems like we are having-- trouble-- with our Navigation---- systems. Please advise.".quote~
- Inside source: true
*** True Line Result
"This- is Sasha. The Serenity--- crew-- is out of hibernation---- and ready-- for Earth reentry--. But, it seems like we are having-- trouble-- with our Navigation---- systems. Please advise.".quote
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ "LOL! Thanks for the laugh. I needed that. This- is Sasha. The Serenity--- crew-- is out of hibernation---- and ready-- for Earth reentry--. But, it seems like we are having-- trouble-- with our Navigation---- systems. Can you help me out- babe?".quote~
- Inside source: true
*** True Line Result
"LOL! Thanks for the laugh. I needed that. This- is Sasha. The Serenity--- crew-- is out of hibernation---- and ready-- for Earth reentry--. But, it seems like we are having-- trouble-- with our Navigation---- systems. Can you help me out- babe?".quote
** 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: ~* Rpg Narrative - Return Of Serenity - storyline_serenity_bio.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - storyline_serenity_bio.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_narrative/return_of_serenity/app/storyline_serenity_bio.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/storyline_serenity_bio.rb
** Processing line: ~ def serenity_bio_infront_of_home args~
- Inside source: true
*** True Line Result
def serenity_bio_infront_of_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/front-of-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/front-of-home.png',
** Processing line: ~ player: [54, 23],~
- Inside source: true
*** True Line Result
player: [54, 23],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [44, 34, 8, 14, :serenity_bio_inside_home],~
- Inside source: true
*** True Line Result
[44, 34, 8, 14, :serenity_bio_inside_home],
** Processing line: ~ [0, 3, 3, 22, :serenity_bio_library]~
- Inside source: true
*** True Line Result
[0, 3, 3, 22, :serenity_bio_library]
** 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 serenity_bio_inside_home args~
- Inside source: true
*** True Line Result
def serenity_bio_inside_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [34, 4],~
- Inside source: true
*** True Line Result
player: [34, 4],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [34, 4, 4, 4, "I'm--- completely--- exhausted."],~
- Inside source: true
*** True Line Result
[34, 4, 4, 4, "I'm--- completely--- exhausted."],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 38, 12, 13, :serenity_bio_restless_sleep],~
- Inside source: true
*** True Line Result
[30, 38, 12, 13, :serenity_bio_restless_sleep],
** Processing line: ~ [32, 0, 8, 3, :serenity_bio_infront_of_home],~
- Inside source: true
*** True Line Result
[32, 0, 8, 3, :serenity_bio_infront_of_home],
** 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 serenity_bio_restless_sleep args~
- Inside source: true
*** True Line Result
def serenity_bio_restless_sleep args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [32, 38, 10, 13, "I can't-- seem to sleep. I know nothing-- about the- crew-. Maybe- I- should- go read- up- on- them."],~
- Inside source: true
*** True Line Result
[32, 38, 10, 13, "I can't-- seem to sleep. I know nothing-- about the- crew-. Maybe- I- should- go read- up- on- them."],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [32, 0, 8, 3, :serenity_bio_infront_of_home],~
- Inside source: true
*** True Line Result
[32, 0, 8, 3, :serenity_bio_infront_of_home],
** 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 serenity_bio_library args~
- Inside source: true
*** True Line Result
def serenity_bio_library args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/library.png',~
- Inside source: true
*** True Line Result
background: 'sprites/library.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [30, 7],~
- Inside source: true
*** True Line Result
player: [30, 7],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [21, 35, 3, 18, :serenity_bio_book]~
- Inside source: true
*** True Line Result
[21, 35, 3, 18, :serenity_bio_book]
** 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 serenity_bio_book args~
- Inside source: true
*** True Line Result
def serenity_bio_book args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/book.png',~
- Inside source: true
*** True Line Result
background: 'sprites/book.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [6, 52],~
- Inside source: true
*** True Line Result
player: [6, 52],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [ 4, 50, 56, 4, "The Title-- Reads: Never-- Forget-- Mission-- Serenity---"],~
- Inside source: true
*** True Line Result
[ 4, 50, 56, 4, "The Title-- Reads: Never-- Forget-- Mission-- Serenity---"],
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [ 4, 38, 8, 8, "Name: Matthew--- R. Sex: Male--- Age-- at-- Departure: 36-----"],~
- Inside source: true
*** True Line Result
[ 4, 38, 8, 8, "Name: Matthew--- R. Sex: Male--- Age-- at-- Departure: 36-----"],
** Processing line: ~ [14, 38, 46, 8, "Tribute-- Text: Matthew graduated-- Magna-- Cum-- Laude-- from MIT--- with-- a- PHD---- in Aero-- Nautical--- Engineering. He was immensely--- competitive, and had an insatiable---- thirst- for aerial-- battle. From the age of twenty, he remained-- undefeated--- in the Israeli-- Air- Force- \"Blue Flag\" combat-- exercises. By the age of 29--- he had already-- risen through- the ranks, and became-- the Lieutenant--- General--- of Lufwaffe. Matthew-- volenteered-- to- pilot-- Mission-- Serenity. To- this day, his wife- and son- are pillars-- of strength- for us. Rest- in Peace- Matthew, we are sorry-- that- news of the pregancy-- never-- reached- you. Please forgive us."],~
- Inside source: true
*** True Line Result
[14, 38, 46, 8, "Tribute-- Text: Matthew graduated-- Magna-- Cum-- Laude-- from MIT--- with-- a- PHD---- in Aero-- Nautical--- Engineering. He was immensely--- competitive, and had an insatiable---- thirst- for aerial-- battle. From the age of twenty, he remained-- undefeated--- in the Israeli-- Air- Force- \"Blue Flag\" combat-- exercises. By the age of 29--- he had already-- risen through- the ranks, and became-- the Lieutenant--- General--- of Lufwaffe. Matthew-- volenteered-- to- pilot-- Mission-- Serenity. To- this day, his wife- and son- are pillars-- of strength- for us. Rest- in Peace- Matthew, we are sorry-- that- news of the pregancy-- never-- reached- you. Please forgive us."],
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [4, 26, 8, 8, "Name: Aanka--- P. Sex: Female--- Age-- at-- Departure: 9-----"],~
- Inside source: true
*** True Line Result
[4, 26, 8, 8, "Name: Aanka--- P. Sex: Female--- Age-- at-- Departure: 9-----"],
** Processing line: ~ [14, 26, 46, 8, "Tribute-- Text: Aanka--- gratuated--- Magna-- Cum- Laude-- from MIT, at- the- age- of eight, with a- PHD---- in Astro-- Physics. Her-- IQ--- was over 390, the highest-- ever- recorded--- IQ-- in- human-- history. She changed- the landscape-- of Physics-- with her efforts- in- unravelling--- the mysteries--- of- Dark- Matter--. Anka discovered-- the threat- of Halley's-- Comet-- collision--- with Earth. She spear headed-- the global-- effort-- for Misson-- Serenity. Her- multilingual--- address-- to- the world-- brought- us all hope."],~
- Inside source: true
*** True Line Result
[14, 26, 46, 8, "Tribute-- Text: Aanka--- gratuated--- Magna-- Cum- Laude-- from MIT, at- the- age- of eight, with a- PHD---- in Astro-- Physics. Her-- IQ--- was over 390, the highest-- ever- recorded--- IQ-- in- human-- history. She changed- the landscape-- of Physics-- with her efforts- in- unravelling--- the mysteries--- of- Dark- Matter--. Anka discovered-- the threat- of Halley's-- Comet-- collision--- with Earth. She spear headed-- the global-- effort-- for Misson-- Serenity. Her- multilingual--- address-- to- the world-- brought- us all hope."],
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [4, 14, 8, 8, "Name: Sasha--- N. Sex: Female--- Age-- at-- Departure: 29-----"],~
- Inside source: true
*** True Line Result
[4, 14, 8, 8, "Name: Sasha--- N. Sex: Female--- Age-- at-- Departure: 29-----"],
** Processing line: ~ [14, 14, 46, 8, "Tribute-- Text: Sasha gratuated-- Magna-- Cum- Laude-- from MIT--- with-- a- PHD---- in Computer---- Science----. She-- was-- brilliant--, strong- willed--, and-- a-- stunningly--- beautiful--- woman---. Sasha---- is- the- creator--- of the world's--- first- Ruby--- Quantum-- Machine---. After-- much- critical--- acclaim--, the Quantum-- Computer-- was placed in MIT's---- Museam-- next- to- Richard--- G. and Thomas--- K.'s---- Lisp-- Machine---. Her- engineering--- skills-- were-- paramount--- for Mission--- Serenity's--- success. Humanity-- misses-- you-- dearly,-- Sasha--. Life-- shines-- a dimmer-- light-- now- that- your- angelic- voice-- can never- be heard- again."],~
- Inside source: true
*** True Line Result
[14, 14, 46, 8, "Tribute-- Text: Sasha gratuated-- Magna-- Cum- Laude-- from MIT--- with-- a- PHD---- in Computer---- Science----. She-- was-- brilliant--, strong- willed--, and-- a-- stunningly--- beautiful--- woman---. Sasha---- is- the- creator--- of the world's--- first- Ruby--- Quantum-- Machine---. After-- much- critical--- acclaim--, the Quantum-- Computer-- was placed in MIT's---- Museam-- next- to- Richard--- G. and Thomas--- K.'s---- Lisp-- Machine---. Her- engineering--- skills-- were-- paramount--- for Mission--- Serenity's--- success. Humanity-- misses-- you-- dearly,-- Sasha--. Life-- shines-- a dimmer-- light-- now- that- your- angelic- voice-- can never- be heard- again."],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_bottom, :serenity_bio_finally_to_bed]~
- Inside source: true
*** True Line Result
[*hotspot_bottom, :serenity_bio_finally_to_bed]
** 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 serenity_bio_finally_to_bed args~
- Inside source: true
*** True Line Result
def serenity_bio_finally_to_bed args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [35, 3],~
- Inside source: true
*** True Line Result
player: [35, 3],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [34, 4, 4, 4, "Maybe-- I'll-- be able-- to sleep- now..."],~
- Inside source: true
*** True Line Result
[34, 4, 4, 4, "Maybe-- I'll-- be able-- to sleep- now..."],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [32, 38, 10, 13, :bad_dream],~
- Inside source: true
*** True Line Result
[32, 38, 10, 13, :bad_dream],
** 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 bad_dream args~
- Inside source: true
*** True Line Result
def bad_dream args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 120,~
- Inside source: true
*** True Line Result
fade: 120,
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [34, 35],~
- Inside source: true
*** True Line Result
player: [34, 35],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [34, 34, 4, 4, "Man. I did not- sleep- well- at all..."],~
- Inside source: true
*** True Line Result
[34, 34, 4, 4, "Man. I did not- sleep- well- at all..."],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [32, -1, 8, 3, :bad_dream_observatory]~
- Inside source: true
*** True Line Result
[32, -1, 8, 3, :bad_dream_observatory]
** 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 bad_dream_observatory args~
- Inside source: true
*** True Line Result
def bad_dream_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 120,~
- Inside source: true
*** True Line Result
fade: 120,
** Processing line: ~ player: [51, 12],~
- Inside source: true
*** True Line Result
player: [51, 12],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [50, 10, 4, 4, "Breathe, Hiro. Just see what's there... everything--- will- be okay."]~
- Inside source: true
*** True Line Result
[50, 10, 4, 4, "Breathe, Hiro. Just see what's there... everything--- will- be okay."]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [30, 18, 5, 12, :bad_dream_inside_mainframe]~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, :bad_dream_inside_mainframe]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
- Inside source: true
*** True Line Result
render_override: :blinking_light_inside_observatory_render
** 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 bad_dream_inside_mainframe args~
- Inside source: true
*** True Line Result
def bad_dream_inside_mainframe args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ player: [32, 4],~
- Inside source: true
*** True Line Result
player: [32, 4],
** Processing line: ~ background: 'sprites/mainframe.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mainframe.png',
** Processing line: ~ fade: 120,~
- Inside source: true
*** True Line Result
fade: 120,
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [22, 45, 17, 4, (bad_dream_last_reply args)],~
- Inside source: true
*** True Line Result
[22, 45, 17, 4, (bad_dream_last_reply args)],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [45, 45, 4, 4, :bad_dream_everyone_dead],~
- Inside source: true
*** True Line Result
[45, 45, 4, 4, :bad_dream_everyone_dead],
** 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 bad_dream_everyone_dead args~
- Inside source: true
*** True Line Result
def bad_dream_everyone_dead args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/mainframe.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mainframe.png',
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [22, 45, 17, 4, (bad_dream_last_reply args)],~
- Inside source: true
*** True Line Result
[22, 45, 17, 4, (bad_dream_last_reply args)],
** Processing line: ~ [45, 45, 4, 4, "Hi-- Hiro. This is Sasha. By the time- you get this- message, chances-- are we will- already-- be- dead. The batteries--- got- damaged-- during-- removal. And- we don't-- have enough-- power-- for Life-- Support. The air-- is- already--- starting-- to taste- bad. It... would- have been- nice... to go- on a date--- with- you-- when-- I- got- back- to Earth. Anyways, good-- bye-- Hiro-- XOXOXO----"],~
- Inside source: true
*** True Line Result
[45, 45, 4, 4, "Hi-- Hiro. This is Sasha. By the time- you get this- message, chances-- are we will- already-- be- dead. The batteries--- got- damaged-- during-- removal. And- we don't-- have enough-- power-- for Life-- Support. The air-- is- already--- starting-- to taste- bad. It... would- have been- nice... to go- on a date--- with- you-- when-- I- got- back- to Earth. Anyways, good-- bye-- Hiro-- XOXOXO----"],
** Processing line: ~ [22, 5, 17, 4, "Meh. Whatever, I didn't-- want to save them anyways. What- a pain- in my ass."],~
- Inside source: true
*** True Line Result
[22, 5, 17, 4, "Meh. Whatever, I didn't-- want to save them anyways. What- a pain- in my ass."],
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [*hotspot_bottom, :anka_inside_room]~
- Inside source: true
*** True Line Result
[*hotspot_bottom, :anka_inside_room]
** 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 bad_dream_last_reply args~
- Inside source: true
*** True Line Result
def bad_dream_last_reply args
** Processing line: ~ if args.state.scene_history.include? :replied_to_serenity_alive_firmly~
- Inside source: true
*** True Line Result
if args.state.scene_history.include? :replied_to_serenity_alive_firmly
** Processing line: ~ return "Buffer--: #{serenity_alive_firm_reply.quote}"~
- Inside source: true
*** True Line Result
return "Buffer--: #{serenity_alive_firm_reply.quote}"
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return "Buffer--: #{serenity_alive_sugarcoated_reply.quote}"~
- Inside source: true
*** True Line Result
return "Buffer--: #{serenity_alive_sugarcoated_reply.quote}"
** 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: ~* Rpg Narrative - Return Of Serenity - storyline_serenity_introduction.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - storyline_serenity_introduction.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_narrative/return_of_serenity/app/storyline_serenity_introduction.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/storyline_serenity_introduction.rb
** Processing line: ~ # decision_graph "Message from Sasha",~
- Inside source: true
*** True Line Result
# decision_graph "Message from Sasha",
** Processing line: ~ # "I should reply.",~
- Inside source: true
*** True Line Result
# "I should reply.",
** Processing line: ~ # [:replied_to_introduction_seriously, "Reply Seriously", "Who is this?"],~
- Inside source: true
*** True Line Result
# [:replied_to_introduction_seriously, "Reply Seriously", "Who is this?"],
** Processing line: ~ # [:replied_to_introduction_humorously, "Reply Humorously", "New phone who dis?"]~
- Inside source: true
*** True Line Result
# [:replied_to_introduction_humorously, "Reply Humorously", "New phone who dis?"]
** Processing line: ~ def reply_to_introduction args~
- Inside source: true
*** True Line Result
def reply_to_introduction args
** Processing line: ~ decision_graph "\"Mission-- control--, your- main- comm-- channels-- seem-- to be down. My apologies-- for- using-- this low- level-- exploit--. What's-- going-- on down there? We are ready-- for reentry--.\" Message--- Timestamp---: 4- hours-- 23--- minutes-- ago--.",~
- Inside source: true
*** True Line Result
decision_graph "\"Mission-- control--, your- main- comm-- channels-- seem-- to be down. My apologies-- for- using-- this low- level-- exploit--. What's-- going-- on down there? We are ready-- for reentry--.\" Message--- Timestamp---: 4- hours-- 23--- minutes-- ago--.",
** Processing line: ~ "Whoever-- pulled- off this exploit-- knows their stuff. I should reply--.",~
- Inside source: true
*** True Line Result
"Whoever-- pulled- off this exploit-- knows their stuff. I should reply--.",
** Processing line: ~ [:replied_to_introduction_seriously, "Serious Reply", "Hello, Who- is sending-- this message--?"],~
- Inside source: true
*** True Line Result
[:replied_to_introduction_seriously, "Serious Reply", "Hello, Who- is sending-- this message--?"],
** Processing line: ~ [:replied_to_introduction_humorously, "Humorous Reply", "New phone, who dis?"]~
- Inside source: true
*** True Line Result
[:replied_to_introduction_humorously, "Humorous Reply", "New phone, who dis?"]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def replied_to_introduction_seriously args~
- Inside source: true
*** True Line Result
def replied_to_introduction_seriously args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [32, 21],~
- Inside source: true
*** True Line Result
player: [32, 21],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ *replied_to_introduction_shared_scenes(args)~
- Inside source: true
*** True Line Result
*replied_to_introduction_shared_scenes(args)
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: \"Hello, Who- is sending-- this message--?\""],~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, "Buffer-- has been set to: \"Hello, Who- is sending-- this message--?\""],
** Processing line: ~ *replied_to_introduction_shared_storylines(args)~
- Inside source: true
*** True Line Result
*replied_to_introduction_shared_storylines(args)
** 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 replied_to_introduction_humorously args~
- Inside source: true
*** True Line Result
def replied_to_introduction_humorously args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-observatory.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [32, 21],~
- Inside source: true
*** True Line Result
player: [32, 21],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ *replied_to_introduction_shared_scenes(args)~
- Inside source: true
*** True Line Result
*replied_to_introduction_shared_scenes(args)
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: \"New- phone. Who dis?\""],~
- Inside source: true
*** True Line Result
[30, 18, 5, 12, "Buffer-- has been set to: \"New- phone. Who dis?\""],
** Processing line: ~ *replied_to_introduction_shared_storylines(args)~
- Inside source: true
*** True Line Result
*replied_to_introduction_shared_storylines(args)
** 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 replied_to_introduction_shared_storylines args~
- Inside source: true
*** True Line Result
def replied_to_introduction_shared_storylines args
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ [30, 10, 5, 4, "It's-- going-- to take a while-- for this reply-- to make it's-- way back."],~
- Inside source: true
*** True Line Result
[30, 10, 5, 4, "It's-- going-- to take a while-- for this reply-- to make it's-- way back."],
** Processing line: ~ [40, 10, 5, 4, "4- hours-- to send a message-- at light speed?! How far away-- is the sender--?"],~
- Inside source: true
*** True Line Result
[40, 10, 5, 4, "4- hours-- to send a message-- at light speed?! How far away-- is the sender--?"],
** Processing line: ~ [50, 10, 5, 4, "I know- I've-- read about-- light- speed- travel-- before--. Maybe-- the library--- still has that- poster."]~
- Inside source: true
*** True Line Result
[50, 10, 5, 4, "I know- I've-- read about-- light- speed- travel-- before--. Maybe-- the library--- still has that- poster."]
** 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 replied_to_introduction_shared_scenes args~
- Inside source: true
*** True Line Result
def replied_to_introduction_shared_scenes args
** Processing line: ~ [[60, 0, 4, 32, :replied_to_introduction_observatory]]~
- Inside source: true
*** True Line Result
[[60, 0, 4, 32, :replied_to_introduction_observatory]]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def replied_to_introduction_observatory args~
- Inside source: true
*** True Line Result
def replied_to_introduction_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/observatory.png',
** Processing line: ~ player: [28, 39],~
- Inside source: true
*** True Line Result
player: [28, 39],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [60, 0, 4, 32, :replied_to_introduction_path_to_observatory]~
- Inside source: true
*** True Line Result
[60, 0, 4, 32, :replied_to_introduction_path_to_observatory]
** 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 replied_to_introduction_path_to_observatory args~
- Inside source: true
*** True Line Result
def replied_to_introduction_path_to_observatory args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
- Inside source: true
*** True Line Result
background: 'sprites/path-to-observatory.png',
** Processing line: ~ player: [0, 26],~
- Inside source: true
*** True Line Result
player: [0, 26],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [60, 0, 4, 20, :replied_to_introduction_mountain_pass]~
- Inside source: true
*** True Line Result
[60, 0, 4, 20, :replied_to_introduction_mountain_pass]
** 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 replied_to_introduction_mountain_pass args~
- Inside source: true
*** True Line Result
def replied_to_introduction_mountain_pass args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/mountain-pass-zoomed-out.png',~
- Inside source: true
*** True Line Result
background: 'sprites/mountain-pass-zoomed-out.png',
** Processing line: ~ player: [21, 48],~
- Inside source: true
*** True Line Result
player: [21, 48],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [0, 0, 15, 4, :replied_to_introduction_side_of_home]~
- Inside source: true
*** True Line Result
[0, 0, 15, 4, :replied_to_introduction_side_of_home]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [15, 28, 5, 3, "At least I'm-- getting-- my- exercise-- in- for- today--."]~
- Inside source: true
*** True Line Result
[15, 28, 5, 3, "At least I'm-- getting-- my- exercise-- in- for- today--."]
** 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 replied_to_introduction_side_of_home args~
- Inside source: true
*** True Line Result
def replied_to_introduction_side_of_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/side-of-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/side-of-home.png',
** Processing line: ~ player: [58, 29],~
- Inside source: true
*** True Line Result
player: [58, 29],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [2, 0, 61, 2, :speed_of_light_front_of_home]~
- Inside source: true
*** True Line Result
[2, 0, 61, 2, :speed_of_light_front_of_home]
** 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: ~#+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 Narrative - Return Of Serenity - storyline_speed_of_light.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Narrative - Return Of Serenity - storyline_speed_of_light.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_narrative/return_of_serenity/app/storyline_speed_of_light.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_narrative/return_of_serenity/app/storyline_speed_of_light.rb
** Processing line: ~ def speed_of_light_front_of_home args~
- Inside source: true
*** True Line Result
def speed_of_light_front_of_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/front-of-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/front-of-home.png',
** Processing line: ~ player: [54, 23],~
- Inside source: true
*** True Line Result
player: [54, 23],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [44, 34, 8, 14, :speed_of_light_inside_home],~
- Inside source: true
*** True Line Result
[44, 34, 8, 14, :speed_of_light_inside_home],
** Processing line: ~ [0, 3, 3, 22, :speed_of_light_outside_library]~
- Inside source: true
*** True Line Result
[0, 3, 3, 22, :speed_of_light_outside_library]
** 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 speed_of_light_inside_home args~
- Inside source: true
*** True Line Result
def speed_of_light_inside_home args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [35, 4],~
- Inside source: true
*** True Line Result
player: [35, 4],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 38, 12, 13, "Can't- sleep right now. I have to- find- out- why- it took- over-- 4- hours-- to receive-- that message."]~
- Inside source: true
*** True Line Result
[30, 38, 12, 13, "Can't- sleep right now. I have to- find- out- why- it took- over-- 4- hours-- to receive-- that message."]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [32, 0, 8, 3, :speed_of_light_front_of_home],~
- Inside source: true
*** True Line Result
[32, 0, 8, 3, :speed_of_light_front_of_home],
** 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 speed_of_light_outside_library args~
- Inside source: true
*** True Line Result
def speed_of_light_outside_library args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/outside-library.png',~
- Inside source: true
*** True Line Result
background: 'sprites/outside-library.png',
** Processing line: ~ player: [55, 19],~
- Inside source: true
*** True Line Result
player: [55, 19],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [49, 39, 6, 10, :speed_of_light_library],~
- Inside source: true
*** True Line Result
[49, 39, 6, 10, :speed_of_light_library],
** Processing line: ~ [61, 11, 3, 20, :speed_of_light_front_of_home]~
- Inside source: true
*** True Line Result
[61, 11, 3, 20, :speed_of_light_front_of_home]
** 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 speed_of_light_library args~
- Inside source: true
*** True Line Result
def speed_of_light_library args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/library.png',~
- Inside source: true
*** True Line Result
background: 'sprites/library.png',
** Processing line: ~ player: [30, 7],~
- Inside source: true
*** True Line Result
player: [30, 7],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [3, 50, 10, 3, :speed_of_light_celestial_bodies_diagram]~
- Inside source: true
*** True Line Result
[3, 50, 10, 3, :speed_of_light_celestial_bodies_diagram]
** 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 speed_of_light_celestial_bodies_diagram args~
- Inside source: true
*** True Line Result
def speed_of_light_celestial_bodies_diagram args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/planets.png',~
- Inside source: true
*** True Line Result
background: 'sprites/planets.png',
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ player: [30, 3],~
- Inside source: true
*** True Line Result
player: [30, 3],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [56 - 2, 10, 5, 5, :speed_of_light_distance_discovered]~
- Inside source: true
*** True Line Result
[56 - 2, 10, 5, 5, :speed_of_light_distance_discovered]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [30, 2, 4, 4, "Here- it is! This is a diagram--- of the solar-- system--. It was printed-- over-- fifty-- years- ago. Geez-- that's-- old."],~
- Inside source: true
*** True Line Result
[30, 2, 4, 4, "Here- it is! This is a diagram--- of the solar-- system--. It was printed-- over-- fifty-- years- ago. Geez-- that's-- old."],
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ [ 0 - 2, 10, 5, 5, "The label- reads: Sun. The length- of the Astronomical-------- Unit-- (AU), is the distance-- from the Sun- to the Earth. Which is about 150--- million--- kilometers----."],~
- Inside source: true
*** True Line Result
[ 0 - 2, 10, 5, 5, "The label- reads: Sun. The length- of the Astronomical-------- Unit-- (AU), is the distance-- from the Sun- to the Earth. Which is about 150--- million--- kilometers----."],
** Processing line: ~ [ 7 - 2, 10, 5, 5, "The label- reads: Mercury. Distance from Sun: 0.39AU------------ or- 3----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[ 7 - 2, 10, 5, 5, "The label- reads: Mercury. Distance from Sun: 0.39AU------------ or- 3----- light-- minutes--."],
** Processing line: ~ [14 - 2, 10, 5, 5, "The label- reads: Venus. Distance from Sun: 0.72AU------------ or- 6----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[14 - 2, 10, 5, 5, "The label- reads: Venus. Distance from Sun: 0.72AU------------ or- 6----- light-- minutes--."],
** Processing line: ~ [21 - 2, 10, 5, 5, "The label- reads: Earth. Distance from Sun: 1.00AU------------ or- 8----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[21 - 2, 10, 5, 5, "The label- reads: Earth. Distance from Sun: 1.00AU------------ or- 8----- light-- minutes--."],
** Processing line: ~ [28 - 2, 10, 5, 5, "The label- reads: Mars. Distance from Sun: 1.52AU------------ or- 12----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[28 - 2, 10, 5, 5, "The label- reads: Mars. Distance from Sun: 1.52AU------------ or- 12----- light-- minutes--."],
** Processing line: ~ [35 - 2, 10, 5, 5, "The label- reads: Jupiter. Distance from Sun: 5.20AU------------ or- 45----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[35 - 2, 10, 5, 5, "The label- reads: Jupiter. Distance from Sun: 5.20AU------------ or- 45----- light-- minutes--."],
** Processing line: ~ [42 - 2, 10, 5, 5, "The label- reads: Saturn. Distance from Sun: 9.53AU------------ or- 79----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[42 - 2, 10, 5, 5, "The label- reads: Saturn. Distance from Sun: 9.53AU------------ or- 79----- light-- minutes--."],
** Processing line: ~ [49 - 2, 10, 5, 5, "The label- reads: Uranus. Distance from Sun: 19.81AU------------ or- 159----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[49 - 2, 10, 5, 5, "The label- reads: Uranus. Distance from Sun: 19.81AU------------ or- 159----- light-- minutes--."],
** Processing line: ~ # [56 - 2, 15, 4, 4, "The label- reads: Neptune. Distance from Sun: 30.05AU------------ or- 4.1----- light-- hours--."],~
- Inside source: true
*** True Line Result
# [56 - 2, 15, 4, 4, "The label- reads: Neptune. Distance from Sun: 30.05AU------------ or- 4.1----- light-- hours--."],
** Processing line: ~ [63 - 2, 10, 5, 5, "The label- reads: Pluto. Wait. WTF? Pluto-- isn't-- a planet."],~
- Inside source: true
*** True Line Result
[63 - 2, 10, 5, 5, "The label- reads: Pluto. Wait. WTF? Pluto-- isn't-- a planet."],
** 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 speed_of_light_distance_discovered args~
- Inside source: true
*** True Line Result
def speed_of_light_distance_discovered args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ background: 'sprites/planets.png',~
- Inside source: true
*** True Line Result
background: 'sprites/planets.png',
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [13, 0, 44, 3, :speed_of_light_end_of_day]~
- Inside source: true
*** True Line Result
[13, 0, 44, 3, :speed_of_light_end_of_day]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [ 0 - 2, 10, 5, 5, "The label- reads: Sun. The length- of the Astronomical-------- Unit-- (AU), is the distance-- from the Sun- to the Earth. Which is about 150--- million--- kilometers----."],~
- Inside source: true
*** True Line Result
[ 0 - 2, 10, 5, 5, "The label- reads: Sun. The length- of the Astronomical-------- Unit-- (AU), is the distance-- from the Sun- to the Earth. Which is about 150--- million--- kilometers----."],
** Processing line: ~ [ 7 - 2, 10, 5, 5, "The label- reads: Mercury. Distance from Sun: 0.39AU------------ or- 3----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[ 7 - 2, 10, 5, 5, "The label- reads: Mercury. Distance from Sun: 0.39AU------------ or- 3----- light-- minutes--."],
** Processing line: ~ [14 - 2, 10, 5, 5, "The label- reads: Venus. Distance from Sun: 0.72AU------------ or- 6----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[14 - 2, 10, 5, 5, "The label- reads: Venus. Distance from Sun: 0.72AU------------ or- 6----- light-- minutes--."],
** Processing line: ~ [21 - 2, 10, 5, 5, "The label- reads: Earth. Distance from Sun: 1.00AU------------ or- 8----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[21 - 2, 10, 5, 5, "The label- reads: Earth. Distance from Sun: 1.00AU------------ or- 8----- light-- minutes--."],
** Processing line: ~ [28 - 2, 10, 5, 5, "The label- reads: Mars. Distance from Sun: 1.52AU------------ or- 12----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[28 - 2, 10, 5, 5, "The label- reads: Mars. Distance from Sun: 1.52AU------------ or- 12----- light-- minutes--."],
** Processing line: ~ [35 - 2, 10, 5, 5, "The label- reads: Jupiter. Distance from Sun: 5.20AU------------ or- 45----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[35 - 2, 10, 5, 5, "The label- reads: Jupiter. Distance from Sun: 5.20AU------------ or- 45----- light-- minutes--."],
** Processing line: ~ [42 - 2, 10, 5, 5, "The label- reads: Saturn. Distance from Sun: 9.53AU------------ or- 79----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[42 - 2, 10, 5, 5, "The label- reads: Saturn. Distance from Sun: 9.53AU------------ or- 79----- light-- minutes--."],
** Processing line: ~ [49 - 2, 10, 5, 5, "The label- reads: Uranus. Distance from Sun: 19.81AU------------ or- 159----- light-- minutes--."],~
- Inside source: true
*** True Line Result
[49 - 2, 10, 5, 5, "The label- reads: Uranus. Distance from Sun: 19.81AU------------ or- 159----- light-- minutes--."],
** Processing line: ~ [56 - 2, 10, 5, 5, "The label- reads: Neptune. Distance from Sun: 30.05AU------------ or- 4.1----- light-- hours--. What?! The message--- I received-- was from a source-- farther-- than-- Neptune?!"],~
- Inside source: true
*** True Line Result
[56 - 2, 10, 5, 5, "The label- reads: Neptune. Distance from Sun: 30.05AU------------ or- 4.1----- light-- hours--. What?! The message--- I received-- was from a source-- farther-- than-- Neptune?!"],
** Processing line: ~ [63 - 2, 10, 5, 5, "The label- reads: Pluto. Dista- Wait... Pluto-- isn't-- a planet. People-- thought- Pluto-- was a planet-- back- then?--"],~
- Inside source: true
*** True Line Result
[63 - 2, 10, 5, 5, "The label- reads: Pluto. Dista- Wait... Pluto-- isn't-- a planet. People-- thought- Pluto-- was a planet-- back- then?--"],
** 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 speed_of_light_end_of_day args~
- Inside source: true
*** True Line Result
def speed_of_light_end_of_day args
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ fade: 60,~
- Inside source: true
*** True Line Result
fade: 60,
** Processing line: ~ background: 'sprites/inside-home.png',~
- Inside source: true
*** True Line Result
background: 'sprites/inside-home.png',
** Processing line: ~ player: [35, 0],~
- Inside source: true
*** True Line Result
player: [35, 0],
** Processing line: ~ storylines: [~
- Inside source: true
*** True Line Result
storylines: [
** Processing line: ~ [35, 10, 4, 4, "Wonder-- what the reply-- will be. Who- the hell is contacting--- me from beyond-- Neptune? This- has to be some- kind- of- joke."]~
- Inside source: true
*** True Line Result
[35, 10, 4, 4, "Wonder-- what the reply-- will be. Who- the hell is contacting--- me from beyond-- Neptune? This- has to be some- kind- of- joke."]
** Processing line: ~ ],~
- Inside source: true
*** True Line Result
],
** Processing line: ~ scenes: [~
- Inside source: true
*** True Line Result
scenes: [
** Processing line: ~ [31, 38, 10, 12, :serenity_alive_side_of_home]~
- Inside source: true
*** True Line Result
[31, 38, 10, 12, :serenity_alive_side_of_home]
** 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: ~#+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 Roguelike - Roguelike Line Of Sight - constants.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Roguelike - Roguelike Line Of Sight - constants.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_roguelike/roguelike_line_of_sight/app/constants.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_roguelike/roguelike_line_of_sight/app/constants.rb
** Processing line: ~ SHOW_LEGEND = true~
- Inside source: true
*** True Line Result
SHOW_LEGEND = true
** Processing line: ~ SOURCE_TILE_SIZE = 16~
- Inside source: true
*** True Line Result
SOURCE_TILE_SIZE = 16
** Processing line: ~ DESTINATION_TILE_SIZE = 16~
- Inside source: true
*** True Line Result
DESTINATION_TILE_SIZE = 16
** Processing line: ~ TILE_SHEET_SIZE = 256~
- Inside source: true
*** True Line Result
TILE_SHEET_SIZE = 256
** Processing line: ~ TILE_R = 0~
- Inside source: true
*** True Line Result
TILE_R = 0
** Processing line: ~ TILE_G = 0~
- Inside source: true
*** True Line Result
TILE_G = 0
** Processing line: ~ TILE_B = 0~
- Inside source: true
*** True Line Result
TILE_B = 0
** Processing line: ~ TILE_A = 255~
- Inside source: true
*** True Line Result
TILE_A = 255
** 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 Roguelike - Roguelike Line Of Sight - legend.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Roguelike - Roguelike Line Of Sight - legend.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_roguelike/roguelike_line_of_sight/app/legend.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_roguelike/roguelike_line_of_sight/app/legend.rb
** Processing line: ~ def tick_legend args~
- Inside source: true
*** True Line Result
def tick_legend args
** Processing line: ~ return unless SHOW_LEGEND~
- Inside source: true
*** True Line Result
return unless SHOW_LEGEND
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ legend_padding = 16~
- Inside source: true
*** True Line Result
legend_padding = 16
** Processing line: ~ legend_x = 1280 - TILE_SHEET_SIZE - legend_padding~
- Inside source: true
*** True Line Result
legend_x = 1280 - TILE_SHEET_SIZE - legend_padding
** Processing line: ~ legend_y = 720 - TILE_SHEET_SIZE - legend_padding~
- Inside source: true
*** True Line Result
legend_y = 720 - TILE_SHEET_SIZE - legend_padding
** Processing line: ~ tile_sheet_sprite = [legend_x,~
- Inside source: true
*** True Line Result
tile_sheet_sprite = [legend_x,
** Processing line: ~ legend_y,~
- Inside source: true
*** True Line Result
legend_y,
** Processing line: ~ TILE_SHEET_SIZE,~
- Inside source: true
*** True Line Result
TILE_SHEET_SIZE,
** Processing line: ~ TILE_SHEET_SIZE,~
- Inside source: true
*** True Line Result
TILE_SHEET_SIZE,
** Processing line: ~ 'sprites/simple-mood-16x16.png', 0,~
- Inside source: true
*** True Line Result
'sprites/simple-mood-16x16.png', 0,
** Processing line: ~ TILE_A,~
- Inside source: true
*** True Line Result
TILE_A,
** Processing line: ~ TILE_R,~
- Inside source: true
*** True Line Result
TILE_R,
** Processing line: ~ TILE_G,~
- Inside source: true
*** True Line Result
TILE_G,
** Processing line: ~ TILE_B]~
- Inside source: true
*** True Line Result
TILE_B]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.mouse.point.inside_rect? tile_sheet_sprite~
- Inside source: true
*** True Line Result
if args.inputs.mouse.point.inside_rect? tile_sheet_sprite
** Processing line: ~ mouse_row = args.inputs.mouse.point.y.idiv(SOURCE_TILE_SIZE)~
- Inside source: true
*** True Line Result
mouse_row = args.inputs.mouse.point.y.idiv(SOURCE_TILE_SIZE)
** Processing line: ~ tile_row = 15 - (mouse_row - legend_y.idiv(SOURCE_TILE_SIZE))~
- Inside source: true
*** True Line Result
tile_row = 15 - (mouse_row - legend_y.idiv(SOURCE_TILE_SIZE))
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ mouse_col = args.inputs.mouse.point.x.idiv(SOURCE_TILE_SIZE)~
- Inside source: true
*** True Line Result
mouse_col = args.inputs.mouse.point.x.idiv(SOURCE_TILE_SIZE)
** Processing line: ~ tile_col = (mouse_col - legend_x.idiv(SOURCE_TILE_SIZE))~
- Inside source: true
*** True Line Result
tile_col = (mouse_col - legend_x.idiv(SOURCE_TILE_SIZE))
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.primitives << [legend_x - legend_padding * 2,~
- Inside source: true
*** True Line Result
args.outputs.primitives << [legend_x - legend_padding * 2,
** Processing line: ~ mouse_row * SOURCE_TILE_SIZE, 256 + legend_padding * 2, 16, 128, 128, 128, 64].solid~
- Inside source: true
*** True Line Result
mouse_row * SOURCE_TILE_SIZE, 256 + legend_padding * 2, 16, 128, 128, 128, 64].solid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.primitives << [mouse_col * SOURCE_TILE_SIZE,~
- Inside source: true
*** True Line Result
args.outputs.primitives << [mouse_col * SOURCE_TILE_SIZE,
** Processing line: ~ legend_y - legend_padding * 2, 16, 256 + legend_padding * 2, 128, 128, 128, 64].solid~
- Inside source: true
*** True Line Result
legend_y - legend_padding * 2, 16, 256 + legend_padding * 2, 128, 128, 128, 64].solid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ sprite_key = sprite_lookup.find { |k, v| v == [tile_row, tile_col] }~
- Inside source: true
*** True Line Result
sprite_key = sprite_lookup.find { |k, v| v == [tile_row, tile_col] }
** Processing line: ~ if sprite_key~
- Inside source: true
*** True Line Result
if sprite_key
** Processing line: ~ member_name, _ = sprite_key~
- Inside source: true
*** True Line Result
member_name, _ = sprite_key
** Processing line: ~ member_name = member_name_as_code member_name~
- Inside source: true
*** True Line Result
member_name = member_name_as_code member_name
** Processing line: ~ args.outputs.labels << [660, 70, "# CODE SAMPLE (place in the tick_game method located in main.rb)", -1, 0]~
- Inside source: true
*** True Line Result
args.outputs.labels << [660, 70, "# CODE SAMPLE (place in the tick_game method located in main.rb)", -1, 0]
** Processing line: ~ args.outputs.labels << [660, 50, "# GRID_X, GRID_Y, TILE_KEY", -1, 0]~
- Inside source: true
*** True Line Result
args.outputs.labels << [660, 50, "# GRID_X, GRID_Y, TILE_KEY", -1, 0]
** Processing line: ~ args.outputs.labels << [660, 30, "args.outputs.sprites << tile_in_game( 5, 6, #{member_name} )", -1, 0]~
- Inside source: true
*** True Line Result
args.outputs.labels << [660, 30, "args.outputs.sprites << tile_in_game( 5, 6, #{member_name} )", -1, 0]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.outputs.labels << [660, 50, "Tile [#{tile_row}, #{tile_col}] not found. Add a key and value to app/sprite_lookup.rb:", -1, 0]~
- Inside source: true
*** True Line Result
args.outputs.labels << [660, 50, "Tile [#{tile_row}, #{tile_col}] not found. Add a key and value to app/sprite_lookup.rb:", -1, 0]
** Processing line: ~ args.outputs.labels << [660, 30, "{ \"some_string\" => [#{tile_row}, #{tile_col}] } OR { some_symbol: [#{tile_row}, #{tile_col}] }.", -1, 0]~
- Inside source: true
*** True Line Result
args.outputs.labels << [660, 30, "{ \"some_string\" => [#{tile_row}, #{tile_col}] } OR { some_symbol: [#{tile_row}, #{tile_col}] }.", -1, 0]
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render the sprite in the top right with a padding to the top and right so it's~
- Inside source: true
*** True Line Result
# render the sprite in the top right with a padding to the top and right so it's
** Processing line: ~ # not flush against the edge~
- Inside source: true
*** True Line Result
# not flush against the edge
** Processing line: ~ args.outputs.sprites << tile_sheet_sprite~
- Inside source: true
*** True Line Result
args.outputs.sprites << tile_sheet_sprite
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # carefully place some ascii arrows to show the legend labels~
- Inside source: true
*** True Line Result
# carefully place some ascii arrows to show the legend labels
** Processing line: ~ args.outputs.labels << [895, 707, "ROW --->"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [895, 707, "ROW --->"]
** Processing line: ~ args.outputs.labels << [943, 412, " ^"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [943, 412, " ^"]
** Processing line: ~ args.outputs.labels << [943, 412, " |"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [943, 412, " |"]
** Processing line: ~ args.outputs.labels << [943, 394, "COL ---+"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [943, 394, "COL ---+"]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # use the tile sheet to print out row and column numbers~
- Inside source: true
*** True Line Result
# use the tile sheet to print out row and column numbers
** Processing line: ~ args.outputs.sprites << 16.map_with_index do |i|~
- Inside source: true
*** True Line Result
args.outputs.sprites << 16.map_with_index do |i|
** Processing line: ~ sprite_key = i % 10~
- Inside source: true
*** True Line Result
sprite_key = i % 10
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ tile(1280 - TILE_SHEET_SIZE - legend_padding * 2 - SOURCE_TILE_SIZE,~
- Inside source: true
*** True Line Result
tile(1280 - TILE_SHEET_SIZE - legend_padding * 2 - SOURCE_TILE_SIZE,
** Processing line: ~ 720 - legend_padding * 2 - (SOURCE_TILE_SIZE * i),~
- Inside source: true
*** True Line Result
720 - legend_padding * 2 - (SOURCE_TILE_SIZE * i),
** Processing line: ~ sprite(sprite_key)),~
- Inside source: true
*** True Line Result
sprite(sprite_key)),
** Processing line: ~ tile(1280 - TILE_SHEET_SIZE - SOURCE_TILE_SIZE + (SOURCE_TILE_SIZE * i),~
- Inside source: true
*** True Line Result
tile(1280 - TILE_SHEET_SIZE - SOURCE_TILE_SIZE + (SOURCE_TILE_SIZE * i),
** Processing line: ~ 720 - TILE_SHEET_SIZE - legend_padding * 3, sprite(sprite_key))~
- Inside source: true
*** True Line Result
720 - TILE_SHEET_SIZE - legend_padding * 3, sprite(sprite_key))
** 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: ~#+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 Roguelike - Roguelike Line Of Sight - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Roguelike - Roguelike Line Of Sight - 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_roguelike/roguelike_line_of_sight/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_roguelike/roguelike_line_of_sight/app/main.rb
** Processing line: ~ require 'app/constants.rb'~
- Inside source: true
*** True Line Result
require 'app/constants.rb'
** Processing line: ~ require 'app/sprite_lookup.rb'~
- Inside source: true
*** True Line Result
require 'app/sprite_lookup.rb'
** Processing line: ~ require 'app/legend.rb'~
- Inside source: true
*** True Line Result
require 'app/legend.rb'
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ tick_game args~
- Inside source: true
*** True Line Result
tick_game args
** Processing line: ~ tick_legend args~
- Inside source: true
*** True Line Result
tick_legend args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_game args~
- Inside source: true
*** True Line Result
def tick_game args
** Processing line: ~ # setup the grid~
- Inside source: true
*** True Line Result
# setup the grid
** Processing line: ~ args.state.grid.padding = 104~
- Inside source: true
*** True Line Result
args.state.grid.padding = 104
** Processing line: ~ args.state.grid.size = 512~
- Inside source: true
*** True Line Result
args.state.grid.size = 512
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # set up your game~
- Inside source: true
*** True Line Result
# set up your game
** Processing line: ~ # initialize the game/game defaults. ||= means that you only initialize it if~
- Inside source: true
*** True Line Result
# initialize the game/game defaults. ||= means that you only initialize it if
** Processing line: ~ # the value isn't alread initialized~
- Inside source: true
*** True Line Result
# the value isn't alread initialized
** Processing line: ~ args.state.player.x ||= 0~
- Inside source: true
*** True Line Result
args.state.player.x ||= 0
** Processing line: ~ args.state.player.y ||= 0~
- Inside source: true
*** True Line Result
args.state.player.y ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.enemies ||= [~
- Inside source: true
*** True Line Result
args.state.enemies ||= [
** Processing line: ~ { x: 10, y: 10, type: :goblin, tile_key: :G },~
- Inside source: true
*** True Line Result
{ x: 10, y: 10, type: :goblin, tile_key: :G },
** Processing line: ~ { x: 15, y: 30, type: :rat, tile_key: :R }~
- Inside source: true
*** True Line Result
{ x: 15, y: 30, type: :rat, tile_key: :R }
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.state.info_message ||= "Use arrow keys to move around."~
- Inside source: true
*** True Line Result
args.state.info_message ||= "Use arrow keys to move around."
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # handle keyboard input~
- Inside source: true
*** True Line Result
# handle keyboard input
** Processing line: ~ # keyboard input (arrow keys to move player)~
- Inside source: true
*** True Line Result
# keyboard input (arrow keys to move player)
** Processing line: ~ new_player_x = args.state.player.x~
- Inside source: true
*** True Line Result
new_player_x = args.state.player.x
** Processing line: ~ new_player_y = args.state.player.y~
- Inside source: true
*** True Line Result
new_player_y = args.state.player.y
** Processing line: ~ player_direction = ""~
- Inside source: true
*** True Line Result
player_direction = ""
** Processing line: ~ player_moved = false~
- Inside source: true
*** True Line Result
player_moved = false
** Processing line: ~ if args.inputs.keyboard.key_down.up~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.up
** Processing line: ~ new_player_y += 1~
- Inside source: true
*** True Line Result
new_player_y += 1
** Processing line: ~ player_direction = "north"~
- Inside source: true
*** True Line Result
player_direction = "north"
** Processing line: ~ player_moved = true~
- Inside source: true
*** True Line Result
player_moved = true
** Processing line: ~ elsif args.inputs.keyboard.key_down.down~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_down.down
** Processing line: ~ new_player_y -= 1~
- Inside source: true
*** True Line Result
new_player_y -= 1
** Processing line: ~ player_direction = "south"~
- Inside source: true
*** True Line Result
player_direction = "south"
** Processing line: ~ player_moved = true~
- Inside source: true
*** True Line Result
player_moved = true
** Processing line: ~ elsif args.inputs.keyboard.key_down.right~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_down.right
** Processing line: ~ new_player_x += 1~
- Inside source: true
*** True Line Result
new_player_x += 1
** Processing line: ~ player_direction = "east"~
- Inside source: true
*** True Line Result
player_direction = "east"
** Processing line: ~ player_moved = true~
- Inside source: true
*** True Line Result
player_moved = true
** Processing line: ~ elsif args.inputs.keyboard.key_down.left~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_down.left
** Processing line: ~ new_player_x -= 1~
- Inside source: true
*** True Line Result
new_player_x -= 1
** Processing line: ~ player_direction = "west"~
- Inside source: true
*** True Line Result
player_direction = "west"
** Processing line: ~ player_moved = true~
- Inside source: true
*** True Line Result
player_moved = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #handle game logic~
- Inside source: true
*** True Line Result
#handle game logic
** Processing line: ~ # determine if there is an enemy on that square,~
- Inside source: true
*** True Line Result
# determine if there is an enemy on that square,
** Processing line: ~ # if so, don't let the player move there~
- Inside source: true
*** True Line Result
# if so, don't let the player move there
** Processing line: ~ if player_moved~
- Inside source: true
*** True Line Result
if player_moved
** Processing line: ~ found_enemy = args.state.enemies.find do |e|~
- Inside source: true
*** True Line Result
found_enemy = args.state.enemies.find do |e|
** Processing line: ~ e[:x] == new_player_x && e[:y] == new_player_y~
- Inside source: true
*** True Line Result
e[:x] == new_player_x && e[:y] == new_player_y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if !found_enemy~
- Inside source: true
*** True Line Result
if !found_enemy
** Processing line: ~ args.state.player.x = new_player_x~
- Inside source: true
*** True Line Result
args.state.player.x = new_player_x
** Processing line: ~ args.state.player.y = new_player_y~
- Inside source: true
*** True Line Result
args.state.player.y = new_player_y
** Processing line: ~ args.state.info_message = "You moved #{player_direction}."~
- Inside source: true
*** True Line Result
args.state.info_message = "You moved #{player_direction}."
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ args.state.info_message = "You cannot move into a square an enemy occupies."~
- Inside source: true
*** True Line Result
args.state.info_message = "You cannot move into a square an enemy occupies."
** 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: ~ args.outputs.sprites << tile_in_game(args.state.player.x,~
- Inside source: true
*** True Line Result
args.outputs.sprites << tile_in_game(args.state.player.x,
** Processing line: ~ args.state.player.y, '@')~
- Inside source: true
*** True Line Result
args.state.player.y, '@')
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render game~
- Inside source: true
*** True Line Result
# render game
** Processing line: ~ # render enemies at locations~
- Inside source: true
*** True Line Result
# render enemies at locations
** Processing line: ~ args.outputs.sprites << args.state.enemies.map do |e|~
- Inside source: true
*** True Line Result
args.outputs.sprites << args.state.enemies.map do |e|
** Processing line: ~ tile_in_game(e[:x], e[:y], e[:tile_key])~
- Inside source: true
*** True Line Result
tile_in_game(e[:x], e[:y], e[:tile_key])
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render the border~
- Inside source: true
*** True Line Result
# render the border
** Processing line: ~ border_x = args.state.grid.padding - DESTINATION_TILE_SIZE~
- Inside source: true
*** True Line Result
border_x = args.state.grid.padding - DESTINATION_TILE_SIZE
** Processing line: ~ border_y = args.state.grid.padding - DESTINATION_TILE_SIZE~
- Inside source: true
*** True Line Result
border_y = args.state.grid.padding - DESTINATION_TILE_SIZE
** Processing line: ~ border_size = args.state.grid.size + DESTINATION_TILE_SIZE * 2~
- Inside source: true
*** True Line Result
border_size = args.state.grid.size + DESTINATION_TILE_SIZE * 2
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.outputs.borders << [border_x,~
- Inside source: true
*** True Line Result
args.outputs.borders << [border_x,
** Processing line: ~ border_y,~
- Inside source: true
*** True Line Result
border_y,
** Processing line: ~ border_size,~
- Inside source: true
*** True Line Result
border_size,
** Processing line: ~ border_size]~
- Inside source: true
*** True Line Result
border_size]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # render label stuff~
- Inside source: true
*** True Line Result
# render label stuff
** Processing line: ~ args.outputs.labels << [border_x, border_y - 10, "Current player location is: #{args.state.player.x}, #{args.state.player.y}"]~
- Inside source: true
*** True Line Result
args.outputs.labels << [border_x, border_y - 10, "Current player location is: #{args.state.player.x}, #{args.state.player.y}"]
** Processing line: ~ args.outputs.labels << [border_x, border_y + 25 + border_size, args.state.info_message]~
- Inside source: true
*** True Line Result
args.outputs.labels << [border_x, border_y + 25 + border_size, args.state.info_message]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tile_in_game x, y, tile_key~
- Inside source: true
*** True Line Result
def tile_in_game x, y, tile_key
** Processing line: ~ tile($gtk.args.state.grid.padding + x * DESTINATION_TILE_SIZE,~
- Inside source: true
*** True Line Result
tile($gtk.args.state.grid.padding + x * DESTINATION_TILE_SIZE,
** Processing line: ~ $gtk.args.state.grid.padding + y * DESTINATION_TILE_SIZE,~
- Inside source: true
*** True Line Result
$gtk.args.state.grid.padding + y * DESTINATION_TILE_SIZE,
** Processing line: ~ tile_key)~
- Inside source: true
*** True Line Result
tile_key)
** 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 Roguelike - Roguelike Line Of Sight - sprite_lookup.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Roguelike - Roguelike Line Of Sight - sprite_lookup.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_roguelike/roguelike_line_of_sight/app/sprite_lookup.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_roguelike/roguelike_line_of_sight/app/sprite_lookup.rb
** Processing line: ~ def sprite_lookup~
- Inside source: true
*** True Line Result
def sprite_lookup
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ 0 => [3, 0],~
- Inside source: true
*** True Line Result
0 => [3, 0],
** Processing line: ~ 1 => [3, 1],~
- Inside source: true
*** True Line Result
1 => [3, 1],
** Processing line: ~ 2 => [3, 2],~
- Inside source: true
*** True Line Result
2 => [3, 2],
** Processing line: ~ 3 => [3, 3],~
- Inside source: true
*** True Line Result
3 => [3, 3],
** Processing line: ~ 4 => [3, 4],~
- Inside source: true
*** True Line Result
4 => [3, 4],
** Processing line: ~ 5 => [3, 5],~
- Inside source: true
*** True Line Result
5 => [3, 5],
** Processing line: ~ 6 => [3, 6],~
- Inside source: true
*** True Line Result
6 => [3, 6],
** Processing line: ~ 7 => [3, 7],~
- Inside source: true
*** True Line Result
7 => [3, 7],
** Processing line: ~ 8 => [3, 8],~
- Inside source: true
*** True Line Result
8 => [3, 8],
** Processing line: ~ 9 => [3, 9],~
- Inside source: true
*** True Line Result
9 => [3, 9],
** Processing line: ~ '@' => [4, 0],~
- Inside source: true
*** True Line Result
'@' => [4, 0],
** Processing line: ~ A: [ 4, 1],~
- Inside source: true
*** True Line Result
A: [ 4, 1],
** Processing line: ~ B: [ 4, 2],~
- Inside source: true
*** True Line Result
B: [ 4, 2],
** Processing line: ~ C: [ 4, 3],~
- Inside source: true
*** True Line Result
C: [ 4, 3],
** Processing line: ~ D: [ 4, 4],~
- Inside source: true
*** True Line Result
D: [ 4, 4],
** Processing line: ~ E: [ 4, 5],~
- Inside source: true
*** True Line Result
E: [ 4, 5],
** Processing line: ~ F: [ 4, 6],~
- Inside source: true
*** True Line Result
F: [ 4, 6],
** Processing line: ~ G: [ 4, 7],~
- Inside source: true
*** True Line Result
G: [ 4, 7],
** Processing line: ~ H: [ 4, 8],~
- Inside source: true
*** True Line Result
H: [ 4, 8],
** Processing line: ~ I: [ 4, 9],~
- Inside source: true
*** True Line Result
I: [ 4, 9],
** Processing line: ~ J: [ 4, 10],~
- Inside source: true
*** True Line Result
J: [ 4, 10],
** Processing line: ~ K: [ 4, 11],~
- Inside source: true
*** True Line Result
K: [ 4, 11],
** Processing line: ~ L: [ 4, 12],~
- Inside source: true
*** True Line Result
L: [ 4, 12],
** Processing line: ~ M: [ 4, 13],~
- Inside source: true
*** True Line Result
M: [ 4, 13],
** Processing line: ~ N: [ 4, 14],~
- Inside source: true
*** True Line Result
N: [ 4, 14],
** Processing line: ~ O: [ 4, 15],~
- Inside source: true
*** True Line Result
O: [ 4, 15],
** Processing line: ~ P: [ 5, 0],~
- Inside source: true
*** True Line Result
P: [ 5, 0],
** Processing line: ~ Q: [ 5, 1],~
- Inside source: true
*** True Line Result
Q: [ 5, 1],
** Processing line: ~ R: [ 5, 2],~
- Inside source: true
*** True Line Result
R: [ 5, 2],
** Processing line: ~ S: [ 5, 3],~
- Inside source: true
*** True Line Result
S: [ 5, 3],
** Processing line: ~ T: [ 5, 4],~
- Inside source: true
*** True Line Result
T: [ 5, 4],
** Processing line: ~ U: [ 5, 5],~
- Inside source: true
*** True Line Result
U: [ 5, 5],
** Processing line: ~ V: [ 5, 6],~
- Inside source: true
*** True Line Result
V: [ 5, 6],
** Processing line: ~ W: [ 5, 7],~
- Inside source: true
*** True Line Result
W: [ 5, 7],
** Processing line: ~ X: [ 5, 8],~
- Inside source: true
*** True Line Result
X: [ 5, 8],
** Processing line: ~ Y: [ 5, 9],~
- Inside source: true
*** True Line Result
Y: [ 5, 9],
** Processing line: ~ Z: [ 5, 10],~
- Inside source: true
*** True Line Result
Z: [ 5, 10],
** Processing line: ~ a: [ 6, 1],~
- Inside source: true
*** True Line Result
a: [ 6, 1],
** Processing line: ~ b: [ 6, 2],~
- Inside source: true
*** True Line Result
b: [ 6, 2],
** Processing line: ~ c: [ 6, 3],~
- Inside source: true
*** True Line Result
c: [ 6, 3],
** Processing line: ~ d: [ 6, 4],~
- Inside source: true
*** True Line Result
d: [ 6, 4],
** Processing line: ~ e: [ 6, 5],~
- Inside source: true
*** True Line Result
e: [ 6, 5],
** Processing line: ~ f: [ 6, 6],~
- Inside source: true
*** True Line Result
f: [ 6, 6],
** Processing line: ~ g: [ 6, 7],~
- Inside source: true
*** True Line Result
g: [ 6, 7],
** Processing line: ~ h: [ 6, 8],~
- Inside source: true
*** True Line Result
h: [ 6, 8],
** Processing line: ~ i: [ 6, 9],~
- Inside source: true
*** True Line Result
i: [ 6, 9],
** Processing line: ~ j: [ 6, 10],~
- Inside source: true
*** True Line Result
j: [ 6, 10],
** Processing line: ~ k: [ 6, 11],~
- Inside source: true
*** True Line Result
k: [ 6, 11],
** Processing line: ~ l: [ 6, 12],~
- Inside source: true
*** True Line Result
l: [ 6, 12],
** Processing line: ~ m: [ 6, 13],~
- Inside source: true
*** True Line Result
m: [ 6, 13],
** Processing line: ~ n: [ 6, 14],~
- Inside source: true
*** True Line Result
n: [ 6, 14],
** Processing line: ~ o: [ 6, 15],~
- Inside source: true
*** True Line Result
o: [ 6, 15],
** Processing line: ~ p: [ 7, 0],~
- Inside source: true
*** True Line Result
p: [ 7, 0],
** Processing line: ~ q: [ 7, 1],~
- Inside source: true
*** True Line Result
q: [ 7, 1],
** Processing line: ~ r: [ 7, 2],~
- Inside source: true
*** True Line Result
r: [ 7, 2],
** Processing line: ~ s: [ 7, 3],~
- Inside source: true
*** True Line Result
s: [ 7, 3],
** Processing line: ~ t: [ 7, 4],~
- Inside source: true
*** True Line Result
t: [ 7, 4],
** Processing line: ~ u: [ 7, 5],~
- Inside source: true
*** True Line Result
u: [ 7, 5],
** Processing line: ~ v: [ 7, 6],~
- Inside source: true
*** True Line Result
v: [ 7, 6],
** Processing line: ~ w: [ 7, 7],~
- Inside source: true
*** True Line Result
w: [ 7, 7],
** Processing line: ~ x: [ 7, 8],~
- Inside source: true
*** True Line Result
x: [ 7, 8],
** Processing line: ~ y: [ 7, 9],~
- Inside source: true
*** True Line Result
y: [ 7, 9],
** Processing line: ~ z: [ 7, 10],~
- Inside source: true
*** True Line Result
z: [ 7, 10],
** Processing line: ~ '|' => [ 7, 12]~
- Inside source: true
*** True Line Result
'|' => [ 7, 12]
** 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 sprite key~
- Inside source: true
*** True Line Result
def sprite key
** Processing line: ~ $gtk.args.state.reserved.sprite_lookup[key]~
- Inside source: true
*** True Line Result
$gtk.args.state.reserved.sprite_lookup[key]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def member_name_as_code raw_member_name~
- Inside source: true
*** True Line Result
def member_name_as_code raw_member_name
** Processing line: ~ if raw_member_name.is_a? Symbol~
- Inside source: true
*** True Line Result
if raw_member_name.is_a? Symbol
** Processing line: ~ ":#{raw_member_name}"~
- Inside source: true
*** True Line Result
":#{raw_member_name}"
** Processing line: ~ elsif raw_member_name.is_a? String~
- Inside source: true
*** True Line Result
elsif raw_member_name.is_a? String
** Processing line: ~ "'#{raw_member_name}'"~
- Inside source: true
*** True Line Result
"'#{raw_member_name}'"
** Processing line: ~ elsif raw_member_name.is_a? Fixnum~
- Inside source: true
*** True Line Result
elsif raw_member_name.is_a? Fixnum
** Processing line: ~ "#{raw_member_name}"~
- Inside source: true
*** True Line Result
"#{raw_member_name}"
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ "UNKNOWN: #{raw_member_name}"~
- Inside source: true
*** True Line Result
"UNKNOWN: #{raw_member_name}"
** 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 tile x, y, tile_row_column_or_key~
- Inside source: true
*** True Line Result
def tile x, y, tile_row_column_or_key
** Processing line: ~ tile_extended x, y, DESTINATION_TILE_SIZE, DESTINATION_TILE_SIZE, TILE_R, TILE_G, TILE_B, TILE_A, tile_row_column_or_key~
- Inside source: true
*** True Line Result
tile_extended x, y, DESTINATION_TILE_SIZE, DESTINATION_TILE_SIZE, TILE_R, TILE_G, TILE_B, TILE_A, tile_row_column_or_key
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tile_extended x, y, w, h, r, g, b, a, tile_row_column_or_key~
- Inside source: true
*** True Line Result
def tile_extended x, y, w, h, r, g, b, a, tile_row_column_or_key
** Processing line: ~ row_or_key, column = tile_row_column_or_key~
- Inside source: true
*** True Line Result
row_or_key, column = tile_row_column_or_key
** Processing line: ~ if !column~
- Inside source: true
*** True Line Result
if !column
** Processing line: ~ row, column = sprite row_or_key~
- Inside source: true
*** True Line Result
row, column = sprite row_or_key
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ row, column = row_or_key, column~
- Inside source: true
*** True Line Result
row, column = row_or_key, column
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if !row~
- Inside source: true
*** True Line Result
if !row
** Processing line: ~ member_name = member_name_as_code tile_row_column_or_key~
- Inside source: true
*** True Line Result
member_name = member_name_as_code tile_row_column_or_key
** Processing line: ~ raise "Unabled to find a sprite for #{member_name}. Make sure the value exists in app/sprite_lookup.rb."~
- Inside source: true
*** True Line Result
raise "Unabled to find a sprite for #{member_name}. Make sure the value exists in app/sprite_lookup.rb."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sprite provided by Rogue Yun~
- Inside source: true
*** True Line Result
# Sprite provided by Rogue Yun
** Processing line: ~ # http://www.bay12forums.com/smf/index.php?topic=144897.0~
- Inside source: true
*** True Line Result
# http://www.bay12forums.com/smf/index.php?topic=144897.0
** Processing line: ~ # License: Public Domain~
- Inside source: true
*** True Line Result
# License: Public Domain
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: x,~
- Inside source: true
*** True Line Result
x: x,
** Processing line: ~ y: y,~
- Inside source: true
*** True Line Result
y: y,
** Processing line: ~ w: w,~
- Inside source: true
*** True Line Result
w: w,
** Processing line: ~ h: h,~
- Inside source: true
*** True Line Result
h: h,
** Processing line: ~ tile_x: column * 16,~
- Inside source: true
*** True Line Result
tile_x: column * 16,
** Processing line: ~ tile_y: (row * 16),~
- Inside source: true
*** True Line Result
tile_y: (row * 16),
** Processing line: ~ tile_w: 16,~
- Inside source: true
*** True Line Result
tile_w: 16,
** Processing line: ~ tile_h: 16,~
- Inside source: true
*** True Line Result
tile_h: 16,
** Processing line: ~ r: r,~
- Inside source: true
*** True Line Result
r: r,
** Processing line: ~ g: g,~
- Inside source: true
*** True Line Result
g: g,
** Processing line: ~ b: b,~
- Inside source: true
*** True Line Result
b: b,
** Processing line: ~ a: a,~
- Inside source: true
*** True Line Result
a: a,
** Processing line: ~ path: 'sprites/simple-mood-16x16.png'~
- Inside source: true
*** True Line Result
path: 'sprites/simple-mood-16x16.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: ~ $gtk.args.state.reserved.sprite_lookup = sprite_lookup~
- Inside source: true
*** True Line Result
$gtk.args.state.reserved.sprite_lookup = sprite_lookup
** 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 Roguelike - Roguelike Starting Point - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Roguelike - Roguelike 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_rpg_roguelike/roguelike_starting_point/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_roguelike/roguelike_starting_point/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - lambda: A way to define a block and its parameters with special syntax.~
- Inside source: true
*** True Line Result
- lambda: A way to define a block and its parameters with special syntax.
** Processing line: ~ For example, the syntax of lambda looks like this:~
- Inside source: true
*** True Line Result
For example, the syntax of lambda looks like this:
** Processing line: ~ my_lambda = -> { puts "This is my lambda" }~
- Inside source: true
*** True Line Result
my_lambda = -> { puts "This is my lambda" }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. The values generate a label.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#inside_rect?: Returns whether or not the point is inside a rect.~
- Inside source: true
*** True Line Result
- ARRAY#inside_rect?: Returns whether or not the point is inside a rect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - product: Returns an array of all combinations of elements from all arrays.~
- Inside source: true
*** True Line Result
- product: Returns an array of all combinations of elements from all arrays.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - find: Finds all elements of a collection that meet requirements.~
- Inside source: true
*** True Line Result
- find: Finds all elements of a collection that meet requirements.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - abs: Returns the absolute value.~
- Inside source: true
*** True Line Result
- abs: Returns the absolute value.
** 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: ~ # This sample app allows the player to move around in the dungeon, which becomes more or less visible~
- Inside source: true
*** True Line Result
# This sample app allows the player to move around in the dungeon, which becomes more or less visible
** Processing line: ~ # depending on the player's location, and also has enemies.~
- Inside source: true
*** True Line Result
# depending on the player's location, and also has enemies.
** 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, :state, :inputs, :outputs, :grid~
- Inside source: true
*** True Line Result
attr_accessor :args, :state, :inputs, :outputs, :grid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls all the methods needed for the game to run properly.~
- Inside source: true
*** True Line Result
# Calls all the methods needed for the game to run properly.
** 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_canvas~
- Inside source: true
*** True Line Result
render_canvas
** Processing line: ~ render_dungeon~
- Inside source: true
*** True Line Result
render_dungeon
** Processing line: ~ render_player~
- Inside source: true
*** True Line Result
render_player
** Processing line: ~ render_enemies~
- Inside source: true
*** True Line Result
render_enemies
** Processing line: ~ print_cell_coordinates~
- Inside source: true
*** True Line Result
print_cell_coordinates
** Processing line: ~ calc_canvas~
- Inside source: true
*** True Line Result
calc_canvas
** Processing line: ~ input_move~
- Inside source: true
*** True Line Result
input_move
** Processing line: ~ input_click_map~
- Inside source: true
*** True Line Result
input_click_map
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets default values and initializes variables~
- Inside source: true
*** True Line Result
# Sets default values and initializes variables
** Processing line: ~ def defaults~
- Inside source: true
*** True Line Result
def defaults
** Processing line: ~ outputs.background_color = [0, 0, 0] # black background~
- Inside source: true
*** True Line Result
outputs.background_color = [0, 0, 0] # black background
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Initializes empty canvas, dungeon, and enemies collections.~
- Inside source: true
*** True Line Result
# Initializes empty canvas, dungeon, and enemies collections.
** Processing line: ~ state.canvas ||= []~
- Inside source: true
*** True Line Result
state.canvas ||= []
** Processing line: ~ state.dungeon ||= []~
- Inside source: true
*** True Line Result
state.dungeon ||= []
** Processing line: ~ state.enemies ||= []~
- Inside source: true
*** True Line Result
state.enemies ||= []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If state.area doesn't have value, load_area_one and derive_dungeon_from_area methods are called~
- Inside source: true
*** True Line Result
# If state.area doesn't have value, load_area_one and derive_dungeon_from_area methods are called
** Processing line: ~ if !state.area~
- Inside source: true
*** True Line Result
if !state.area
** Processing line: ~ load_area_one~
- Inside source: true
*** True Line Result
load_area_one
** Processing line: ~ derive_dungeon_from_area~
- Inside source: true
*** True Line Result
derive_dungeon_from_area
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Changing these values will change the position of player~
- Inside source: true
*** True Line Result
# Changing these values will change the position of player
** Processing line: ~ state.x = 7~
- Inside source: true
*** True Line Result
state.x = 7
** Processing line: ~ state.y = 5~
- Inside source: true
*** True Line Result
state.y = 5
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates new enemies, sets their values, and adds them to the enemies collection.~
- Inside source: true
*** True Line Result
# Creates new enemies, sets their values, and adds them to the enemies collection.
** Processing line: ~ state.enemies << state.new_entity(:enemy) do |e| # declares each enemy as new entity~
- Inside source: true
*** True Line Result
state.enemies << state.new_entity(:enemy) do |e| # declares each enemy as new entity
** Processing line: ~ e.x = 13 # position~
- Inside source: true
*** True Line Result
e.x = 13 # position
** Processing line: ~ e.y = 5~
- Inside source: true
*** True Line Result
e.y = 5
** Processing line: ~ e.previous_hp = 3~
- Inside source: true
*** True Line Result
e.previous_hp = 3
** Processing line: ~ e.hp = 3~
- Inside source: true
*** True Line Result
e.hp = 3
** Processing line: ~ e.max_hp = 3~
- Inside source: true
*** True Line Result
e.max_hp = 3
** Processing line: ~ e.is_dead = false # the enemy is alive~
- Inside source: true
*** True Line Result
e.is_dead = false # the enemy is alive
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ update_line_of_sight # updates line of sight by adding newly visible cells~
- Inside source: true
*** True Line Result
update_line_of_sight # updates line of sight by adding newly visible cells
** 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: ~ # Adds elements into the state.area collection~
- Inside source: true
*** True Line Result
# Adds elements into the state.area collection
** Processing line: ~ # The dungeon is derived using the coordinates of this collection~
- Inside source: true
*** True Line Result
# The dungeon is derived using the coordinates of this collection
** Processing line: ~ def load_area_one~
- Inside source: true
*** True Line Result
def load_area_one
** Processing line: ~ state.area ||= []~
- Inside source: true
*** True Line Result
state.area ||= []
** Processing line: ~ state.area << [8, 6]~
- Inside source: true
*** True Line Result
state.area << [8, 6]
** Processing line: ~ state.area << [7, 6]~
- Inside source: true
*** True Line Result
state.area << [7, 6]
** Processing line: ~ state.area << [7, 7]~
- Inside source: true
*** True Line Result
state.area << [7, 7]
** Processing line: ~ state.area << [8, 9]~
- Inside source: true
*** True Line Result
state.area << [8, 9]
** Processing line: ~ state.area << [7, 8]~
- Inside source: true
*** True Line Result
state.area << [7, 8]
** Processing line: ~ state.area << [7, 9]~
- Inside source: true
*** True Line Result
state.area << [7, 9]
** Processing line: ~ state.area << [6, 4]~
- Inside source: true
*** True Line Result
state.area << [6, 4]
** Processing line: ~ state.area << [7, 3]~
- Inside source: true
*** True Line Result
state.area << [7, 3]
** Processing line: ~ state.area << [7, 4]~
- Inside source: true
*** True Line Result
state.area << [7, 4]
** Processing line: ~ state.area << [6, 5]~
- Inside source: true
*** True Line Result
state.area << [6, 5]
** Processing line: ~ state.area << [7, 5]~
- Inside source: true
*** True Line Result
state.area << [7, 5]
** Processing line: ~ state.area << [8, 5]~
- Inside source: true
*** True Line Result
state.area << [8, 5]
** Processing line: ~ state.area << [8, 4]~
- Inside source: true
*** True Line Result
state.area << [8, 4]
** Processing line: ~ state.area << [1, 1]~
- Inside source: true
*** True Line Result
state.area << [1, 1]
** Processing line: ~ state.area << [0, 1]~
- Inside source: true
*** True Line Result
state.area << [0, 1]
** Processing line: ~ state.area << [0, 2]~
- Inside source: true
*** True Line Result
state.area << [0, 2]
** Processing line: ~ state.area << [1, 2]~
- Inside source: true
*** True Line Result
state.area << [1, 2]
** Processing line: ~ state.area << [2, 2]~
- Inside source: true
*** True Line Result
state.area << [2, 2]
** Processing line: ~ state.area << [2, 1]~
- Inside source: true
*** True Line Result
state.area << [2, 1]
** Processing line: ~ state.area << [2, 3]~
- Inside source: true
*** True Line Result
state.area << [2, 3]
** Processing line: ~ state.area << [1, 3]~
- Inside source: true
*** True Line Result
state.area << [1, 3]
** Processing line: ~ state.area << [1, 4]~
- Inside source: true
*** True Line Result
state.area << [1, 4]
** Processing line: ~ state.area << [2, 4]~
- Inside source: true
*** True Line Result
state.area << [2, 4]
** Processing line: ~ state.area << [2, 5]~
- Inside source: true
*** True Line Result
state.area << [2, 5]
** Processing line: ~ state.area << [1, 5]~
- Inside source: true
*** True Line Result
state.area << [1, 5]
** Processing line: ~ state.area << [2, 6]~
- Inside source: true
*** True Line Result
state.area << [2, 6]
** Processing line: ~ state.area << [3, 6]~
- Inside source: true
*** True Line Result
state.area << [3, 6]
** Processing line: ~ state.area << [4, 6]~
- Inside source: true
*** True Line Result
state.area << [4, 6]
** Processing line: ~ state.area << [4, 7]~
- Inside source: true
*** True Line Result
state.area << [4, 7]
** Processing line: ~ state.area << [4, 8]~
- Inside source: true
*** True Line Result
state.area << [4, 8]
** Processing line: ~ state.area << [5, 8]~
- Inside source: true
*** True Line Result
state.area << [5, 8]
** Processing line: ~ state.area << [5, 9]~
- Inside source: true
*** True Line Result
state.area << [5, 9]
** Processing line: ~ state.area << [6, 9]~
- Inside source: true
*** True Line Result
state.area << [6, 9]
** Processing line: ~ state.area << [7, 10]~
- Inside source: true
*** True Line Result
state.area << [7, 10]
** Processing line: ~ state.area << [7, 11]~
- Inside source: true
*** True Line Result
state.area << [7, 11]
** Processing line: ~ state.area << [7, 12]~
- Inside source: true
*** True Line Result
state.area << [7, 12]
** Processing line: ~ state.area << [7, 12]~
- Inside source: true
*** True Line Result
state.area << [7, 12]
** Processing line: ~ state.area << [7, 13]~
- Inside source: true
*** True Line Result
state.area << [7, 13]
** Processing line: ~ state.area << [8, 13]~
- Inside source: true
*** True Line Result
state.area << [8, 13]
** Processing line: ~ state.area << [9, 13]~
- Inside source: true
*** True Line Result
state.area << [9, 13]
** Processing line: ~ state.area << [10, 13]~
- Inside source: true
*** True Line Result
state.area << [10, 13]
** Processing line: ~ state.area << [11, 13]~
- Inside source: true
*** True Line Result
state.area << [11, 13]
** Processing line: ~ state.area << [12, 13]~
- Inside source: true
*** True Line Result
state.area << [12, 13]
** Processing line: ~ state.area << [12, 12]~
- Inside source: true
*** True Line Result
state.area << [12, 12]
** Processing line: ~ state.area << [8, 12]~
- Inside source: true
*** True Line Result
state.area << [8, 12]
** Processing line: ~ state.area << [9, 12]~
- Inside source: true
*** True Line Result
state.area << [9, 12]
** Processing line: ~ state.area << [10, 12]~
- Inside source: true
*** True Line Result
state.area << [10, 12]
** Processing line: ~ state.area << [11, 12]~
- Inside source: true
*** True Line Result
state.area << [11, 12]
** Processing line: ~ state.area << [12, 11]~
- Inside source: true
*** True Line Result
state.area << [12, 11]
** Processing line: ~ state.area << [13, 11]~
- Inside source: true
*** True Line Result
state.area << [13, 11]
** Processing line: ~ state.area << [13, 10]~
- Inside source: true
*** True Line Result
state.area << [13, 10]
** Processing line: ~ state.area << [13, 9]~
- Inside source: true
*** True Line Result
state.area << [13, 9]
** Processing line: ~ state.area << [13, 8]~
- Inside source: true
*** True Line Result
state.area << [13, 8]
** Processing line: ~ state.area << [13, 7]~
- Inside source: true
*** True Line Result
state.area << [13, 7]
** Processing line: ~ state.area << [13, 6]~
- Inside source: true
*** True Line Result
state.area << [13, 6]
** Processing line: ~ state.area << [12, 6]~
- Inside source: true
*** True Line Result
state.area << [12, 6]
** Processing line: ~ state.area << [14, 6]~
- Inside source: true
*** True Line Result
state.area << [14, 6]
** Processing line: ~ state.area << [14, 5]~
- Inside source: true
*** True Line Result
state.area << [14, 5]
** Processing line: ~ state.area << [13, 5]~
- Inside source: true
*** True Line Result
state.area << [13, 5]
** Processing line: ~ state.area << [12, 5]~
- Inside source: true
*** True Line Result
state.area << [12, 5]
** Processing line: ~ state.area << [12, 4]~
- Inside source: true
*** True Line Result
state.area << [12, 4]
** Processing line: ~ state.area << [13, 4]~
- Inside source: true
*** True Line Result
state.area << [13, 4]
** Processing line: ~ state.area << [14, 4]~
- Inside source: true
*** True Line Result
state.area << [14, 4]
** Processing line: ~ state.area << [1, 6]~
- Inside source: true
*** True Line Result
state.area << [1, 6]
** Processing line: ~ state.area << [6, 6]~
- Inside source: true
*** True Line Result
state.area << [6, 6]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Starts with an empty dungeon collection, and adds dungeon cells into it.~
- Inside source: true
*** True Line Result
# Starts with an empty dungeon collection, and adds dungeon cells into it.
** Processing line: ~ def derive_dungeon_from_area~
- Inside source: true
*** True Line Result
def derive_dungeon_from_area
** Processing line: ~ state.dungeon = [] # starts as empty collection~
- Inside source: true
*** True Line Result
state.dungeon = [] # starts as empty collection
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.area.each do |a| # for each element of the area collection~
- Inside source: true
*** True Line Result
state.area.each do |a| # for each element of the area collection
** Processing line: ~ state.dungeon << state.new_entity(:dungeon_cell) do |d| # declares each dungeon cell as new entity~
- Inside source: true
*** True Line Result
state.dungeon << state.new_entity(:dungeon_cell) do |d| # declares each dungeon cell as new entity
** Processing line: ~ d.x = a.x # dungeon cell position using coordinates from area~
- Inside source: true
*** True Line Result
d.x = a.x # dungeon cell position using coordinates from area
** Processing line: ~ d.y = a.y~
- Inside source: true
*** True Line Result
d.y = a.y
** Processing line: ~ d.is_visible = false # cell is not visible~
- Inside source: true
*** True Line Result
d.is_visible = false # cell is not visible
** Processing line: ~ d.alpha = 0 # not transparent at all~
- Inside source: true
*** True Line Result
d.alpha = 0 # not transparent at all
** Processing line: ~ d.border = [left_margin + a.x * grid_size,~
- Inside source: true
*** True Line Result
d.border = [left_margin + a.x * grid_size,
** Processing line: ~ bottom_margin + a.y * grid_size,~
- Inside source: true
*** True Line Result
bottom_margin + a.y * grid_size,
** Processing line: ~ grid_size,~
- Inside source: true
*** True Line Result
grid_size,
** Processing line: ~ grid_size,~
- Inside source: true
*** True Line Result
grid_size,
** Processing line: ~ *blue,~
- Inside source: true
*** True Line Result
*blue,
** Processing line: ~ 255] # sets border definition for dungeon cell~
- Inside source: true
*** True Line Result
255] # sets border definition for dungeon cell
** Processing line: ~ d # returns dungeon cell~
- Inside source: true
*** True Line Result
d # returns dungeon cell
** 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 left_margin~
- Inside source: true
*** True Line Result
def left_margin
** Processing line: ~ 40 # sets left margin~
- Inside source: true
*** True Line Result
40 # sets left margin
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def bottom_margin~
- Inside source: true
*** True Line Result
def bottom_margin
** Processing line: ~ 60 # sets bottom margin~
- Inside source: true
*** True Line Result
60 # sets bottom margin
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def grid_size~
- Inside source: true
*** True Line Result
def grid_size
** Processing line: ~ 40 # sets size of grid square~
- Inside source: true
*** True Line Result
40 # sets size of grid square
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Updates the line of sight by calling the thick_line_of_sight method and~
- Inside source: true
*** True Line Result
# Updates the line of sight by calling the thick_line_of_sight method and
** Processing line: ~ # adding dungeon cells to the newly_visible collection~
- Inside source: true
*** True Line Result
# adding dungeon cells to the newly_visible collection
** Processing line: ~ def update_line_of_sight~
- Inside source: true
*** True Line Result
def update_line_of_sight
** Processing line: ~ variations = [-1, 0, 1]~
- Inside source: true
*** True Line Result
variations = [-1, 0, 1]
** Processing line: ~ # creates collection of newly visible dungeon cells~
- Inside source: true
*** True Line Result
# creates collection of newly visible dungeon cells
** Processing line: ~ newly_visible = variations.product(variations).flat_map do |rise, run| # combo of all elements~
- Inside source: true
*** True Line Result
newly_visible = variations.product(variations).flat_map do |rise, run| # combo of all elements
** Processing line: ~ thick_line_of_sight state.x, state.y, rise, run, 15, # calls thick_line_of_sight method~
- Inside source: true
*** True Line Result
thick_line_of_sight state.x, state.y, rise, run, 15, # calls thick_line_of_sight method
** Processing line: ~ lambda { |x, y| dungeon_cell_exists? x, y } # checks whether or not cell exists~
- Inside source: true
*** True Line Result
lambda { |x, y| dungeon_cell_exists? x, y } # checks whether or not cell exists
** Processing line: ~ end.uniq# removes duplicates~
- Inside source: true
*** True Line Result
end.uniq# removes duplicates
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.dungeon.each do |d| # perform action on each element of dungeons collection~
- Inside source: true
*** True Line Result
state.dungeon.each do |d| # perform action on each element of dungeons collection
** Processing line: ~ d.is_visible = newly_visible.find { |v| v.x == d.x && v.y == d.y } # finds match inside newly_visible collection~
- Inside source: true
*** True Line Result
d.is_visible = newly_visible.find { |v| v.x == d.x && v.y == d.y } # finds match inside newly_visible collection
** 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: ~ #Returns a boolean value~
- Inside source: true
*** True Line Result
#Returns a boolean value
** Processing line: ~ def dungeon_cell_exists? x, y~
- Inside source: true
*** True Line Result
def dungeon_cell_exists? x, y
** Processing line: ~ # Finds cell coordinates inside dungeon collection to determine if dungeon cell exists~
- Inside source: true
*** True Line Result
# Finds cell coordinates inside dungeon collection to determine if dungeon cell exists
** Processing line: ~ state.dungeon.find { |d| d.x == x && d.y == y }~
- Inside source: true
*** True Line Result
state.dungeon.find { |d| d.x == x && d.y == y }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Calls line_of_sight method to add elements to result collection~
- Inside source: true
*** True Line Result
# Calls line_of_sight method to add elements to result collection
** Processing line: ~ def thick_line_of_sight start_x, start_y, rise, run, distance, cell_exists_lambda~
- Inside source: true
*** True Line Result
def thick_line_of_sight start_x, start_y, rise, run, distance, cell_exists_lambda
** Processing line: ~ result = []~
- Inside source: true
*** True Line Result
result = []
** Processing line: ~ result += line_of_sight start_x, start_y, rise, run, distance, cell_exists_lambda~
- Inside source: true
*** True Line Result
result += line_of_sight start_x, start_y, rise, run, distance, cell_exists_lambda
** Processing line: ~ result += line_of_sight start_x - 1, start_y, rise, run, distance, cell_exists_lambda # one left~
- Inside source: true
*** True Line Result
result += line_of_sight start_x - 1, start_y, rise, run, distance, cell_exists_lambda # one left
** Processing line: ~ result += line_of_sight start_x + 1, start_y, rise, run, distance, cell_exists_lambda # one right~
- Inside source: true
*** True Line Result
result += line_of_sight start_x + 1, start_y, rise, run, distance, cell_exists_lambda # one right
** Processing line: ~ result~
- Inside source: true
*** True Line Result
result
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Adds points to the result collection to create the player's line of sight~
- Inside source: true
*** True Line Result
# Adds points to the result collection to create the player's line of sight
** Processing line: ~ def line_of_sight start_x, start_y, rise, run, distance, cell_exists_lambda~
- Inside source: true
*** True Line Result
def line_of_sight start_x, start_y, rise, run, distance, cell_exists_lambda
** Processing line: ~ result = [] # starts as empty collection~
- Inside source: true
*** True Line Result
result = [] # starts as empty collection
** Processing line: ~ points = points_on_line start_x, start_y, rise, run, distance # calls points_on_line method~
- Inside source: true
*** True Line Result
points = points_on_line start_x, start_y, rise, run, distance # calls points_on_line method
** Processing line: ~ points.each do |p| # for each point in collection~
- Inside source: true
*** True Line Result
points.each do |p| # for each point in collection
** Processing line: ~ if cell_exists_lambda.call(p.x, p.y) # if the cell exists~
- Inside source: true
*** True Line Result
if cell_exists_lambda.call(p.x, p.y) # if the cell exists
** Processing line: ~ result << p # add it to result collection~
- Inside source: true
*** True Line Result
result << p # add it to result collection
** Processing line: ~ else # if cell does not exist~
- Inside source: true
*** True Line Result
else # if cell does not exist
** Processing line: ~ return result # return result collection as it is~
- Inside source: true
*** True Line Result
return result # return result collection as it is
** 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: ~ result # return result collection~
- Inside source: true
*** True Line Result
result # return result collection
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Finds the coordinates of the points on the line by performing calculations~
- Inside source: true
*** True Line Result
# Finds the coordinates of the points on the line by performing calculations
** Processing line: ~ def points_on_line start_x, start_y, rise, run, distance~
- Inside source: true
*** True Line Result
def points_on_line start_x, start_y, rise, run, distance
** Processing line: ~ distance.times.map do |i| # perform an action~
- Inside source: true
*** True Line Result
distance.times.map do |i| # perform an action
** Processing line: ~ [start_x + run * i, start_y + rise * i] # definition of point~
- Inside source: true
*** True Line Result
[start_x + run * i, start_y + rise * i] # definition of 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 render_canvas~
- Inside source: true
*** True Line Result
def render_canvas
** Processing line: ~ return~
- Inside source: true
*** True Line Result
return
** Processing line: ~ outputs.borders << state.canvas.map do |c| # on each element of canvas collection~
- Inside source: true
*** True Line Result
outputs.borders << state.canvas.map do |c| # on each element of canvas collection
** Processing line: ~ c.border # outputs border~
- Inside source: true
*** True Line Result
c.border # outputs border
** 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: ~ # Outputs the dungeon cells.~
- Inside source: true
*** True Line Result
# Outputs the dungeon cells.
** Processing line: ~ def render_dungeon~
- Inside source: true
*** True Line Result
def render_dungeon
** Processing line: ~ outputs.solids << [0, 0, grid.w, grid.h] # outputs black background for grid~
- Inside source: true
*** True Line Result
outputs.solids << [0, 0, grid.w, grid.h] # outputs black background for grid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the alpha value (opacity) for each dungeon cell and calls the cell_border method.~
- Inside source: true
*** True Line Result
# Sets the alpha value (opacity) for each dungeon cell and calls the cell_border method.
** Processing line: ~ outputs.borders << state.dungeon.map do |d| # for each element in dungeon collection~
- Inside source: true
*** True Line Result
outputs.borders << state.dungeon.map do |d| # for each element in dungeon collection
** Processing line: ~ d.alpha += if d.is_visible # if cell is visible~
- Inside source: true
*** True Line Result
d.alpha += if d.is_visible # if cell is visible
** Processing line: ~ 255.fdiv(30) # increment opacity (transparency)~
- Inside source: true
*** True Line Result
255.fdiv(30) # increment opacity (transparency)
** Processing line: ~ else # if cell is not visible~
- Inside source: true
*** True Line Result
else # if cell is not visible
** Processing line: ~ 255.fdiv(600) * -1 # decrease opacity~
- Inside source: true
*** True Line Result
255.fdiv(600) * -1 # decrease opacity
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ d.alpha = d.alpha.cap_min_max(0, 255)~
- Inside source: true
*** True Line Result
d.alpha = d.alpha.cap_min_max(0, 255)
** Processing line: ~ cell_border d.x, d.y, [*blue, d.alpha] # sets blue border using alpha value~
- Inside source: true
*** True Line Result
cell_border d.x, d.y, [*blue, d.alpha] # sets blue border using alpha value
** Processing line: ~ end.reject_nil~
- Inside source: true
*** True Line Result
end.reject_nil
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets definition of a cell border using the parameters~
- Inside source: true
*** True Line Result
# Sets definition of a cell border using the parameters
** Processing line: ~ def cell_border x, y, color = nil~
- Inside source: true
*** True Line Result
def cell_border x, y, color = nil
** Processing line: ~ [left_margin + x * grid_size,~
- Inside source: true
*** True Line Result
[left_margin + x * grid_size,
** Processing line: ~ bottom_margin + y * grid_size,~
- Inside source: true
*** True Line Result
bottom_margin + y * grid_size,
** Processing line: ~ grid_size,~
- Inside source: true
*** True Line Result
grid_size,
** Processing line: ~ grid_size,~
- Inside source: true
*** True Line Result
grid_size,
** Processing line: ~ *color]~
- Inside source: true
*** True Line Result
*color]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the values for the player and outputs it as a label~
- Inside source: true
*** True Line Result
# Sets the values for the player and outputs it as a label
** Processing line: ~ def render_player~
- Inside source: true
*** True Line Result
def render_player
** Processing line: ~ outputs.labels << [grid_x(state.x) + 20, # positions "@" text in center of grid square~
- Inside source: true
*** True Line Result
outputs.labels << [grid_x(state.x) + 20, # positions "@" text in center of grid square
** Processing line: ~ grid_y(state.y) + 35,~
- Inside source: true
*** True Line Result
grid_y(state.y) + 35,
** Processing line: ~ "@", # player is represented by a white "@" character~
- Inside source: true
*** True Line Result
"@", # player is represented by a white "@" character
** Processing line: ~ 1, 1, *white]~
- Inside source: true
*** True Line Result
1, 1, *white]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def grid_x x~
- Inside source: true
*** True Line Result
def grid_x x
** Processing line: ~ left_margin + x * grid_size # positions horizontally on grid~
- Inside source: true
*** True Line Result
left_margin + x * grid_size # positions horizontally on grid
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def grid_y y~
- Inside source: true
*** True Line Result
def grid_y y
** Processing line: ~ bottom_margin + y * grid_size # positions vertically on grid~
- Inside source: true
*** True Line Result
bottom_margin + y * grid_size # positions vertically on grid
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs enemies onto the screen.~
- Inside source: true
*** True Line Result
# Outputs enemies onto the screen.
** Processing line: ~ def render_enemies~
- Inside source: true
*** True Line Result
def render_enemies
** Processing line: ~ state.enemies.map do |e| # for each enemy in the collection~
- Inside source: true
*** True Line Result
state.enemies.map do |e| # for each enemy in the collection
** Processing line: ~ alpha = 255 # set opacity (full transparency)~
- Inside source: true
*** True Line Result
alpha = 255 # set opacity (full transparency)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Outputs an enemy using a label.~
- Inside source: true
*** True Line Result
# Outputs an enemy using a label.
** Processing line: ~ outputs.labels << [~
- Inside source: true
*** True Line Result
outputs.labels << [
** Processing line: ~ left_margin + 20 + e.x * grid_size, # positions enemy's "r" text in center of grid square~
- Inside source: true
*** True Line Result
left_margin + 20 + e.x * grid_size, # positions enemy's "r" text in center of grid square
** Processing line: ~ bottom_margin + 35 + e.y * grid_size,~
- Inside source: true
*** True Line Result
bottom_margin + 35 + e.y * grid_size,
** Processing line: ~ "r", # enemy's text~
- Inside source: true
*** True Line Result
"r", # enemy's text
** Processing line: ~ 1, 1, *white, alpha]~
- Inside source: true
*** True Line Result
1, 1, *white, alpha]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates a red border around an enemy.~
- Inside source: true
*** True Line Result
# Creates a red border around an enemy.
** Processing line: ~ outputs.borders << [grid_x(e.x), grid_y(e.y), grid_size, grid_size, *red]~
- Inside source: true
*** True Line Result
outputs.borders << [grid_x(e.x), grid_y(e.y), grid_size, grid_size, *red]
** 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: ~ #White labels are output for the cell coordinates of each element in the dungeon collection.~
- Inside source: true
*** True Line Result
#White labels are output for the cell coordinates of each element in the dungeon collection.
** Processing line: ~ def print_cell_coordinates~
- Inside source: true
*** True Line Result
def print_cell_coordinates
** Processing line: ~ return unless state.debug~
- Inside source: true
*** True Line Result
return unless state.debug
** Processing line: ~ state.dungeon.each do |d|~
- Inside source: true
*** True Line Result
state.dungeon.each do |d|
** Processing line: ~ outputs.labels << [grid_x(d.x) + 2,~
- Inside source: true
*** True Line Result
outputs.labels << [grid_x(d.x) + 2,
** Processing line: ~ grid_y(d.y) - 2,~
- Inside source: true
*** True Line Result
grid_y(d.y) - 2,
** Processing line: ~ "#{d.x},#{d.y}",~
- Inside source: true
*** True Line Result
"#{d.x},#{d.y}",
** Processing line: ~ -2, 0, *white]~
- Inside source: true
*** True Line Result
-2, 0, *white]
** 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: ~ # Adds new elements into the canvas collection and sets their values.~
- Inside source: true
*** True Line Result
# Adds new elements into the canvas collection and sets their values.
** Processing line: ~ def calc_canvas~
- Inside source: true
*** True Line Result
def calc_canvas
** Processing line: ~ return if state.canvas.length > 0 # return if canvas collection has at least one element~
- Inside source: true
*** True Line Result
return if state.canvas.length > 0 # return if canvas collection has at least one element
** Processing line: ~ 15.times do |x| # 15 times perform an action~
- Inside source: true
*** True Line Result
15.times do |x| # 15 times perform an action
** Processing line: ~ 15.times do |y|~
- Inside source: true
*** True Line Result
15.times do |y|
** Processing line: ~ state.canvas << state.new_entity(:canvas) do |c| # declare canvas element as new entity~
- Inside source: true
*** True Line Result
state.canvas << state.new_entity(:canvas) do |c| # declare canvas element as new entity
** Processing line: ~ c.x = x # set position~
- Inside source: true
*** True Line Result
c.x = x # set position
** Processing line: ~ c.y = y~
- Inside source: true
*** True Line Result
c.y = y
** Processing line: ~ c.border = [left_margin + x * grid_size,~
- Inside source: true
*** True Line Result
c.border = [left_margin + x * grid_size,
** Processing line: ~ bottom_margin + y * grid_size,~
- Inside source: true
*** True Line Result
bottom_margin + y * grid_size,
** Processing line: ~ grid_size,~
- Inside source: true
*** True Line Result
grid_size,
** Processing line: ~ grid_size,~
- Inside source: true
*** True Line Result
grid_size,
** Processing line: ~ *white, 30] # sets border definition~
- Inside source: true
*** True Line Result
*white, 30] # sets border definition
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Updates x and y values of the player, and updates player's line of sight~
- Inside source: true
*** True Line Result
# Updates x and y values of the player, and updates player's line of sight
** Processing line: ~ def input_move~
- Inside source: true
*** True Line Result
def input_move
** Processing line: ~ x, y, x_diff, y_diff = input_target_cell~
- Inside source: true
*** True Line Result
x, y, x_diff, y_diff = input_target_cell
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless dungeon_cell_exists? x, y # player can't move there if a dungeon cell doesn't exist in that location~
- Inside source: true
*** True Line Result
return unless dungeon_cell_exists? x, y # player can't move there if a dungeon cell doesn't exist in that location
** Processing line: ~ return if enemy_at x, y # player can't move there if there is an enemy in that location~
- Inside source: true
*** True Line Result
return if enemy_at x, y # player can't move there if there is an enemy in that location
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ state.x += x_diff # increments x by x_diff (so player moves left or right)~
- Inside source: true
*** True Line Result
state.x += x_diff # increments x by x_diff (so player moves left or right)
** Processing line: ~ state.y += y_diff # same with y and y_diff ( so player moves up or down)~
- Inside source: true
*** True Line Result
state.y += y_diff # same with y and y_diff ( so player moves up or down)
** Processing line: ~ update_line_of_sight # updates visible cells~
- Inside source: true
*** True Line Result
update_line_of_sight # updates visible cells
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def enemy_at x, y~
- Inside source: true
*** True Line Result
def enemy_at x, y
** Processing line: ~ # Finds if coordinates exist in enemies collection and enemy is not dead~
- Inside source: true
*** True Line Result
# Finds if coordinates exist in enemies collection and enemy is not dead
** Processing line: ~ state.enemies.find { |e| e.x == x && e.y == y && !e.is_dead }~
- Inside source: true
*** True Line Result
state.enemies.find { |e| e.x == x && e.y == y && !e.is_dead }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #M oves the user based on their keyboard input and sets values for target cell~
- Inside source: true
*** True Line Result
#M oves the user based on their keyboard input and sets values for target cell
** Processing line: ~ def input_target_cell~
- Inside source: true
*** True Line Result
def input_target_cell
** Processing line: ~ if inputs.keyboard.key_down.up # if "up" key is in "down" state~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_down.up # if "up" key is in "down" state
** Processing line: ~ [state.x, state.y + 1, 0, 1] # user moves up~
- Inside source: true
*** True Line Result
[state.x, state.y + 1, 0, 1] # user moves up
** Processing line: ~ elsif inputs.keyboard.key_down.down # if "down" key is pressed~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_down.down # if "down" key is pressed
** Processing line: ~ [state.x, state.y - 1, 0, -1] # user moves down~
- Inside source: true
*** True Line Result
[state.x, state.y - 1, 0, -1] # user moves down
** Processing line: ~ elsif inputs.keyboard.key_down.left # if "left" key is pressed~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_down.left # if "left" key is pressed
** Processing line: ~ [state.x - 1, state.y, -1, 0] # user moves left~
- Inside source: true
*** True Line Result
[state.x - 1, state.y, -1, 0] # user moves left
** Processing line: ~ elsif inputs.keyboard.key_down.right # if "right" key is pressed~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_down.right # if "right" key is pressed
** Processing line: ~ [state.x + 1, state.y, 1, 0] # user moves right~
- Inside source: true
*** True Line Result
[state.x + 1, state.y, 1, 0] # user moves right
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ nil # otherwise, empty~
- Inside source: true
*** True Line Result
nil # otherwise, empty
** 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: ~ # Goes through the canvas collection to find if the mouse was clicked inside of the borders of an element.~
- Inside source: true
*** True Line Result
# Goes through the canvas collection to find if the mouse was clicked inside of the borders of an element.
** Processing line: ~ def input_click_map~
- Inside source: true
*** True Line Result
def input_click_map
** Processing line: ~ return unless inputs.mouse.click # return unless the mouse is clicked~
- Inside source: true
*** True Line Result
return unless inputs.mouse.click # return unless the mouse is clicked
** Processing line: ~ canvas_entry = state.canvas.find do |c| # find element from canvas collection that meets requirements~
- Inside source: true
*** True Line Result
canvas_entry = state.canvas.find do |c| # find element from canvas collection that meets requirements
** Processing line: ~ inputs.mouse.click.inside_rect? c.border # find border that mouse was clicked inside of~
- Inside source: true
*** True Line Result
inputs.mouse.click.inside_rect? c.border # find border that mouse was clicked inside of
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ puts canvas_entry # prints canvas_entry value~
- Inside source: true
*** True Line Result
puts canvas_entry # prints canvas_entry value
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the definition of a label using the parameters.~
- Inside source: true
*** True Line Result
# Sets the definition of a label using the parameters.
** Processing line: ~ def label text, x, y, color = nil~
- Inside source: true
*** True Line Result
def label text, x, y, color = nil
** Processing line: ~ color ||= white # color is initialized to white~
- Inside source: true
*** True Line Result
color ||= white # color is initialized to white
** Processing line: ~ [x, y, text, 1, 1, *color] # sets label definition~
- Inside source: true
*** True Line Result
[x, y, text, 1, 1, *color] # sets label definition
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def green~
- Inside source: true
*** True Line Result
def green
** Processing line: ~ [60, 200, 100] # sets color saturation to shade of green~
- Inside source: true
*** True Line Result
[60, 200, 100] # sets color saturation to shade of green
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def blue~
- Inside source: true
*** True Line Result
def blue
** Processing line: ~ [50, 50, 210] # sets color saturation to shade of blue~
- Inside source: true
*** True Line Result
[50, 50, 210] # sets color saturation to shade of blue
** 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] # sets color saturation to white~
- Inside source: true
*** True Line Result
[255, 255, 255] # sets color saturation to white
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def red~
- Inside source: true
*** True Line Result
def red
** Processing line: ~ [230, 80, 80] # sets color saturation to shade of red~
- Inside source: true
*** True Line Result
[230, 80, 80] # sets color saturation to shade of red
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def orange~
- Inside source: true
*** True Line Result
def orange
** Processing line: ~ [255, 80, 60] # sets color saturation to shade of orange~
- Inside source: true
*** True Line Result
[255, 80, 60] # sets color saturation to shade of orange
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def pink~
- Inside source: true
*** True Line Result
def pink
** Processing line: ~ [255, 0, 200] # sets color saturation to shade of pink~
- Inside source: true
*** True Line Result
[255, 0, 200] # sets color saturation to shade of pink
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def gray~
- Inside source: true
*** True Line Result
def gray
** Processing line: ~ [75, 75, 75] # sets color saturation to shade of gray~
- Inside source: true
*** True Line Result
[75, 75, 75] # sets color saturation to shade of gray
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Recolors the border using the parameters.~
- Inside source: true
*** True Line Result
# Recolors the border using the parameters.
** Processing line: ~ def recolor_border border, r, g, b~
- Inside source: true
*** True Line Result
def recolor_border border, r, g, b
** Processing line: ~ border[4] = r~
- Inside source: true
*** True Line Result
border[4] = r
** Processing line: ~ border[5] = g~
- Inside source: true
*** True Line Result
border[5] = g
** Processing line: ~ border[6] = b~
- Inside source: true
*** True Line Result
border[6] = b
** Processing line: ~ border~
- Inside source: true
*** True Line Result
border
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns a boolean value.~
- Inside source: true
*** True Line Result
# Returns a boolean value.
** Processing line: ~ def visible? cell~
- Inside source: true
*** True Line Result
def visible? cell
** Processing line: ~ # finds cell's coordinates inside visible_cells collections to determine if cell is visible~
- Inside source: true
*** True Line Result
# finds cell's coordinates inside visible_cells collections to determine if cell is visible
** Processing line: ~ state.visible_cells.find { |c| c.x == cell.x && c.y == cell.y}~
- Inside source: true
*** True Line Result
state.visible_cells.find { |c| c.x == cell.x && c.y == cell.y}
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Exports dungeon by printing dungeon cell coordinates~
- Inside source: true
*** True Line Result
# Exports dungeon by printing dungeon cell coordinates
** Processing line: ~ def export_dungeon~
- Inside source: true
*** True Line Result
def export_dungeon
** Processing line: ~ state.dungeon.each do |d| # on each element of dungeon collection~
- Inside source: true
*** True Line Result
state.dungeon.each do |d| # on each element of dungeon collection
** Processing line: ~ puts "state.dungeon << [#{d.x}, #{d.y}]" # prints cell coordinates~
- Inside source: true
*** True Line Result
puts "state.dungeon << [#{d.x}, #{d.y}]" # prints cell coordinates
** 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 distance_to_cell cell~
- Inside source: true
*** True Line Result
def distance_to_cell cell
** Processing line: ~ distance_to state.x, cell.x, state.y, cell.y # calls distance_to method~
- Inside source: true
*** True Line Result
distance_to state.x, cell.x, state.y, cell.y # calls distance_to method
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def distance_to from_x, x, from_y, y~
- Inside source: true
*** True Line Result
def distance_to from_x, x, from_y, y
** Processing line: ~ (from_x - x).abs + (from_y - y).abs # finds distance between two cells using coordinates~
- Inside source: true
*** True Line Result
(from_x - x).abs + (from_y - y).abs # finds distance between two cells using coordinates
** 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.state = args.state~
- Inside source: true
*** True Line Result
$game.state = args.state
** Processing line: ~ $game.inputs = args.inputs~
- Inside source: true
*** True Line Result
$game.inputs = args.inputs
** Processing line: ~ $game.outputs = args.outputs~
- Inside source: true
*** True Line Result
$game.outputs = args.outputs
** Processing line: ~ $game.grid = args.grid~
- Inside source: true
*** True Line Result
$game.grid = args.grid
** 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: ~#+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 Tactical - Hexagonal Grid - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Tactical - Hexagonal Grid - 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_tactical/hexagonal_grid/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_tactical/hexagonal_grid/app/main.rb
** Processing line: ~ class HexagonTileGame~
- Inside source: true
*** True Line Result
class HexagonTileGame
** Processing line: ~ attr_gtk~
- Inside source: true
*** True Line Result
attr_gtk
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def defaults~
- Inside source: true
*** True Line Result
def defaults
** Processing line: ~ state.tile_scale = 1.3~
- Inside source: true
*** True Line Result
state.tile_scale = 1.3
** Processing line: ~ state.tile_size = 80~
- Inside source: true
*** True Line Result
state.tile_size = 80
** Processing line: ~ state.tile_w = Math.sqrt(3) * state.tile_size.half~
- Inside source: true
*** True Line Result
state.tile_w = Math.sqrt(3) * state.tile_size.half
** Processing line: ~ state.tile_h = state.tile_size * 3/4~
- Inside source: true
*** True Line Result
state.tile_h = state.tile_size * 3/4
** Processing line: ~ state.tiles_x_count = 1280.idiv(state.tile_w) - 1~
- Inside source: true
*** True Line Result
state.tiles_x_count = 1280.idiv(state.tile_w) - 1
** Processing line: ~ state.tiles_y_count = 720.idiv(state.tile_h) - 1~
- Inside source: true
*** True Line Result
state.tiles_y_count = 720.idiv(state.tile_h) - 1
** Processing line: ~ state.world_width_px = state.tiles_x_count * state.tile_w~
- Inside source: true
*** True Line Result
state.world_width_px = state.tiles_x_count * state.tile_w
** Processing line: ~ state.world_height_px = state.tiles_y_count * state.tile_h~
- Inside source: true
*** True Line Result
state.world_height_px = state.tiles_y_count * state.tile_h
** Processing line: ~ state.world_x_offset = (1280 - state.world_width_px).half~
- Inside source: true
*** True Line Result
state.world_x_offset = (1280 - state.world_width_px).half
** Processing line: ~ state.world_y_offset = (720 - state.world_height_px).half~
- Inside source: true
*** True Line Result
state.world_y_offset = (720 - state.world_height_px).half
** Processing line: ~ state.tiles ||= state.tiles_x_count.map_with_ys(state.tiles_y_count) do |ordinal_x, ordinal_y|~
- Inside source: true
*** True Line Result
state.tiles ||= state.tiles_x_count.map_with_ys(state.tiles_y_count) do |ordinal_x, ordinal_y|
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** 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: ~ offset_x: (ordinal_y.even?) ?~
- Inside source: true
*** True Line Result
offset_x: (ordinal_y.even?) ?
** Processing line: ~ (state.world_x_offset + state.tile_w.half.half) :~
- Inside source: true
*** True Line Result
(state.world_x_offset + state.tile_w.half.half) :
** Processing line: ~ (state.world_x_offset - state.tile_w.half.half),~
- Inside source: true
*** True Line Result
(state.world_x_offset - state.tile_w.half.half),
** Processing line: ~ offset_y: state.world_y_offset,~
- Inside source: true
*** True Line Result
offset_y: state.world_y_offset,
** Processing line: ~ w: state.tile_w,~
- Inside source: true
*** True Line Result
w: state.tile_w,
** Processing line: ~ h: state.tile_h,~
- Inside source: true
*** True Line Result
h: state.tile_h,
** Processing line: ~ type: :blank,~
- Inside source: true
*** True Line Result
type: :blank,
** Processing line: ~ path: "sprites/hexagon-gray.png",~
- Inside source: true
*** True Line Result
path: "sprites/hexagon-gray.png",
** Processing line: ~ a: 20~
- Inside source: true
*** True Line Result
a: 20
** Processing line: ~ }.associate do |h|~
- Inside source: true
*** True Line Result
}.associate do |h|
** Processing line: ~ h.merge(x: h[:offset_x] + h[:ordinal_x] * h[:w],~
- Inside source: true
*** True Line Result
h.merge(x: h[:offset_x] + h[:ordinal_x] * h[:w],
** Processing line: ~ y: h[:offset_y] + h[:ordinal_y] * h[:h]).scale_rect(state.tile_scale)~
- Inside source: true
*** True Line Result
y: h[:offset_y] + h[:ordinal_y] * h[:h]).scale_rect(state.tile_scale)
** Processing line: ~ end.associate do |h|~
- Inside source: true
*** True Line Result
end.associate do |h|
** Processing line: ~ h.merge(center: {~
- Inside source: true
*** True Line Result
h.merge(center: {
** Processing line: ~ x: h[:x] + h[:w].half,~
- Inside source: true
*** True Line Result
x: h[:x] + h[:w].half,
** Processing line: ~ y: h[:y] + h[:h].half~
- Inside source: true
*** True Line Result
y: h[:y] + h[:h].half
** Processing line: ~ }, radius: [h[:w].half, h[:h].half].max)~
- Inside source: true
*** True Line Result
}, radius: [h[:w].half, h[:h].half].max)
** 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 input~
- Inside source: true
*** True Line Result
def input
** Processing line: ~ if inputs.click~
- Inside source: true
*** True Line Result
if inputs.click
** Processing line: ~ tile = state.tiles.find { |t| inputs.click.point_inside_circle? t[:center], t[:radius] }~
- Inside source: true
*** True Line Result
tile = state.tiles.find { |t| inputs.click.point_inside_circle? t[:center], t[:radius] }
** Processing line: ~ if tile~
- Inside source: true
*** True Line Result
if tile
** Processing line: ~ tile[:a] = 255~
- Inside source: true
*** True Line Result
tile[:a] = 255
** Processing line: ~ tile[:path] = "sprites/hexagon-black.png"~
- Inside source: true
*** True Line Result
tile[:path] = "sprites/hexagon-black.png"
** 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 tick~
- Inside source: true
*** True Line Result
def tick
** Processing line: ~ defaults~
- Inside source: true
*** True Line Result
defaults
** Processing line: ~ input~
- Inside source: true
*** True Line Result
input
** Processing line: ~ render~
- Inside source: true
*** True Line Result
render
** 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.sprites << state.tiles~
- Inside source: true
*** True Line Result
outputs.sprites << state.tiles
** 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 = HexagonTileGame.new~
- Inside source: true
*** True Line Result
$game = HexagonTileGame.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: ~ $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: ~* Rpg Tactical - Isometric Grid - main.rb~
- Header detected.
*** True Line Result
*** True Line Result
* Rpg Tactical - Isometric Grid - 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_tactical/isometric_grid/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_tactical/isometric_grid/app/main.rb
** Processing line: ~ class Isometric~
- Inside source: true
*** True Line Result
class Isometric
** Processing line: ~ attr_accessor :grid, :inputs, :state, :outputs~
- Inside source: true
*** True Line Result
attr_accessor :grid, :inputs, :state, :outputs
** 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: ~ calc~
- Inside source: true
*** True Line Result
calc
** Processing line: ~ process_inputs~
- Inside source: true
*** True Line Result
process_inputs
** 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.quantity ||= 6 #Size of grid~
- Inside source: true
*** True Line Result
state.quantity ||= 6 #Size of grid
** Processing line: ~ state.tileSize ||= [262 / 2, 194 / 2] #width and heigth of orange tiles~
- Inside source: true
*** True Line Result
state.tileSize ||= [262 / 2, 194 / 2] #width and heigth of orange tiles
** Processing line: ~ state.tileGrid ||= [] #Holds ordering of tiles~
- Inside source: true
*** True Line Result
state.tileGrid ||= [] #Holds ordering of tiles
** Processing line: ~ state.currentSpriteLocation ||= -1 #Current Sprite hovering location~
- Inside source: true
*** True Line Result
state.currentSpriteLocation ||= -1 #Current Sprite hovering location
** Processing line: ~ state.tileCords ||= [] #Physical, rendering cordinates~
- Inside source: true
*** True Line Result
state.tileCords ||= [] #Physical, rendering cordinates
** Processing line: ~ state.initCords ||= [640 - (state.quantity / 2 * state.tileSize[0]), 330] #Location of tile (0, 0)~
- Inside source: true
*** True Line Result
state.initCords ||= [640 - (state.quantity / 2 * state.tileSize[0]), 330] #Location of tile (0, 0)
** Processing line: ~ state.sideSize ||= [state.tileSize[0] / 2, 242 / 2] #Purple & green cube face size~
- Inside source: true
*** True Line Result
state.sideSize ||= [state.tileSize[0] / 2, 242 / 2] #Purple & green cube face size
** Processing line: ~ state.mode ||= :delete #Switches between :delete and :insert~
- Inside source: true
*** True Line Result
state.mode ||= :delete #Switches between :delete and :insert
** Processing line: ~ state.spriteSelection ||= [['river', 0, 0, 262 / 2, 194 / 2],~
- Inside source: true
*** True Line Result
state.spriteSelection ||= [['river', 0, 0, 262 / 2, 194 / 2],
** Processing line: ~ ['mountain', 0, 0, 262 / 2, 245 / 2],~
- Inside source: true
*** True Line Result
['mountain', 0, 0, 262 / 2, 245 / 2],
** Processing line: ~ ['ocean', 0, 0, 262 / 2, 194 / 2]] #Storage for sprite information~
- Inside source: true
*** True Line Result
['ocean', 0, 0, 262 / 2, 194 / 2]] #Storage for sprite information
** Processing line: ~ #['name', deltaX, deltaY, sizeW, sizeH]~
- Inside source: true
*** True Line Result
#['name', deltaX, deltaY, sizeW, sizeH]
** Processing line: ~ #^delta refers to distance from tile cords~
- Inside source: true
*** True Line Result
#^delta refers to distance from tile cords
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #Orders tiles based on tile placement and fancy math. Very left: 0,0. Very bottom: quantity-1, 0, etc~
- Inside source: true
*** True Line Result
#Orders tiles based on tile placement and fancy math. Very left: 0,0. Very bottom: quantity-1, 0, etc
** Processing line: ~ if state.tileGrid == []~
- Inside source: true
*** True Line Result
if state.tileGrid == []
** Processing line: ~ tempX = 0~
- Inside source: true
*** True Line Result
tempX = 0
** Processing line: ~ tempY = 0~
- Inside source: true
*** True Line Result
tempY = 0
** Processing line: ~ tempLeft = false~
- Inside source: true
*** True Line Result
tempLeft = false
** Processing line: ~ tempRight = false~
- Inside source: true
*** True Line Result
tempRight = false
** Processing line: ~ count = 0~
- Inside source: true
*** True Line Result
count = 0
** Processing line: ~ (state.quantity * state.quantity).times do~
- Inside source: true
*** True Line Result
(state.quantity * state.quantity).times do
** Processing line: ~ if tempY == 0~
- Inside source: true
*** True Line Result
if tempY == 0
** Processing line: ~ tempLeft = true~
- Inside source: true
*** True Line Result
tempLeft = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ if tempX == (state.quantity - 1)~
- Inside source: true
*** True Line Result
if tempX == (state.quantity - 1)
** Processing line: ~ tempRight = true~
- Inside source: true
*** True Line Result
tempRight = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ state.tileGrid.push([tempX, tempY, true, tempLeft, tempRight, count])~
- Inside source: true
*** True Line Result
state.tileGrid.push([tempX, tempY, true, tempLeft, tempRight, count])
** Processing line: ~ #orderX, orderY, exists?, leftSide, rightSide, order~
- Inside source: true
*** True Line Result
#orderX, orderY, exists?, leftSide, rightSide, order
** Processing line: ~ tempX += 1~
- Inside source: true
*** True Line Result
tempX += 1
** Processing line: ~ if tempX == state.quantity~
- Inside source: true
*** True Line Result
if tempX == state.quantity
** Processing line: ~ tempX = 0~
- Inside source: true
*** True Line Result
tempX = 0
** Processing line: ~ tempY += 1~
- Inside source: true
*** True Line Result
tempY += 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ tempLeft = false~
- Inside source: true
*** True Line Result
tempLeft = false
** Processing line: ~ tempRight = false~
- Inside source: true
*** True Line Result
tempRight = false
** Processing line: ~ count += 1~
- Inside source: true
*** True Line Result
count += 1
** 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: ~ #Calculates physical cordinates for tiles~
- Inside source: true
*** True Line Result
#Calculates physical cordinates for tiles
** Processing line: ~ if state.tileCords == []~
- Inside source: true
*** True Line Result
if state.tileCords == []
** Processing line: ~ state.tileCords = state.tileGrid.map do~
- Inside source: true
*** True Line Result
state.tileCords = state.tileGrid.map do
** Processing line: ~ |val|~
- Inside source: true
*** True Line Result
|val|
** Processing line: ~ x = (state.initCords[0]) + ((val[0] + val[1]) * state.tileSize[0] / 2)~
- Inside source: true
*** True Line Result
x = (state.initCords[0]) + ((val[0] + val[1]) * state.tileSize[0] / 2)
** Processing line: ~ y = (state.initCords[1]) + (-1 * val[0] * state.tileSize[1] / 2) + (val[1] * state.tileSize[1] / 2)~
- Inside source: true
*** True Line Result
y = (state.initCords[1]) + (-1 * val[0] * state.tileSize[1] / 2) + (val[1] * state.tileSize[1] / 2)
** Processing line: ~ [x, y, val[2], val[3], val[4], val[5], -1] #-1 represents sprite on top of tile. -1 for now~
- Inside source: true
*** True Line Result
[x, y, val[2], val[3], val[4], val[5], -1] #-1 represents sprite on top of tile. -1 for now
** 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~
- 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: ~ renderBackground~
- Inside source: true
*** True Line Result
renderBackground
** Processing line: ~ renderLeft~
- Inside source: true
*** True Line Result
renderLeft
** Processing line: ~ renderRight~
- Inside source: true
*** True Line Result
renderRight
** Processing line: ~ renderTiles~
- Inside source: true
*** True Line Result
renderTiles
** Processing line: ~ renderObjects~
- Inside source: true
*** True Line Result
renderObjects
** Processing line: ~ renderLabels~
- Inside source: true
*** True Line Result
renderLabels
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def renderBackground~
- Inside source: true
*** True Line Result
def renderBackground
** Processing line: ~ outputs.solids << [0, 0, 1280, 720, 0, 0, 0] #Background color~
- Inside source: true
*** True Line Result
outputs.solids << [0, 0, 1280, 720, 0, 0, 0] #Background color
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def renderLeft~
- Inside source: true
*** True Line Result
def renderLeft
** Processing line: ~ #Shows the pink left cube face~
- Inside source: true
*** True Line Result
#Shows the pink left cube face
** Processing line: ~ outputs.sprites << state.tileCords.map do~
- Inside source: true
*** True Line Result
outputs.sprites << state.tileCords.map do
** Processing line: ~ |val|~
- Inside source: true
*** True Line Result
|val|
** Processing line: ~ if val[2] == true && val[3] == true #Checks if the tile exists and right face needs to be rendered~
- Inside source: true
*** True Line Result
if val[2] == true && val[3] == true #Checks if the tile exists and right face needs to be rendered
** Processing line: ~ [val[0], val[1] + (state.tileSize[1] / 2) - state.sideSize[1], state.sideSize[0],~
- Inside source: true
*** True Line Result
[val[0], val[1] + (state.tileSize[1] / 2) - state.sideSize[1], state.sideSize[0],
** Processing line: ~ state.sideSize[1], 'sprites/leftSide.png']~
- Inside source: true
*** True Line Result
state.sideSize[1], 'sprites/leftSide.png']
** 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 renderRight~
- Inside source: true
*** True Line Result
def renderRight
** Processing line: ~ #Shows the green right cube face~
- Inside source: true
*** True Line Result
#Shows the green right cube face
** Processing line: ~ outputs.sprites << state.tileCords.map do~
- Inside source: true
*** True Line Result
outputs.sprites << state.tileCords.map do
** Processing line: ~ |val|~
- Inside source: true
*** True Line Result
|val|
** Processing line: ~ if val[2] == true && val[4] == true #Checks if it exists & checks if right face needs to be rendered~
- Inside source: true
*** True Line Result
if val[2] == true && val[4] == true #Checks if it exists & checks if right face needs to be rendered
** Processing line: ~ [val[0] + state.tileSize[0] / 2, val[1] + (state.tileSize[1] / 2) - state.sideSize[1], state.sideSize[0],~
- Inside source: true
*** True Line Result
[val[0] + state.tileSize[0] / 2, val[1] + (state.tileSize[1] / 2) - state.sideSize[1], state.sideSize[0],
** Processing line: ~ state.sideSize[1], 'sprites/rightSide.png']~
- Inside source: true
*** True Line Result
state.sideSize[1], 'sprites/rightSide.png']
** 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 renderTiles~
- Inside source: true
*** True Line Result
def renderTiles
** Processing line: ~ #Shows the tile itself. Important that it's rendered after the two above!~
- Inside source: true
*** True Line Result
#Shows the tile itself. Important that it's rendered after the two above!
** Processing line: ~ outputs.sprites << state.tileCords.map do~
- Inside source: true
*** True Line Result
outputs.sprites << state.tileCords.map do
** Processing line: ~ |val|~
- Inside source: true
*** True Line Result
|val|
** Processing line: ~ if val[2] == true #Chcekcs if tile needs to be rendered~
- Inside source: true
*** True Line Result
if val[2] == true #Chcekcs if tile needs to be rendered
** Processing line: ~ if val[5] == state.currentSpriteLocation~
- Inside source: true
*** True Line Result
if val[5] == state.currentSpriteLocation
** Processing line: ~ [val[0], val[1], state.tileSize[0], state.tileSize[1], 'sprites/selectedTile.png']~
- Inside source: true
*** True Line Result
[val[0], val[1], state.tileSize[0], state.tileSize[1], 'sprites/selectedTile.png']
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ [val[0], val[1], state.tileSize[0], state.tileSize[1], 'sprites/tile.png']~
- Inside source: true
*** True Line Result
[val[0], val[1], state.tileSize[0], state.tileSize[1], 'sprites/tile.png']
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def renderObjects~
- Inside source: true
*** True Line Result
def renderObjects
** Processing line: ~ #Renders the sprites on top of the tiles. Order of rendering: top corner to right corner and cascade down until left corner~
- Inside source: true
*** True Line Result
#Renders the sprites on top of the tiles. Order of rendering: top corner to right corner and cascade down until left corner
** Processing line: ~ #to bottom corner.~
- Inside source: true
*** True Line Result
#to bottom corner.
** Processing line: ~ a = (state.quantity * state.quantity) - state.quantity~
- Inside source: true
*** True Line Result
a = (state.quantity * state.quantity) - state.quantity
** Processing line: ~ iter = 0~
- Inside source: true
*** True Line Result
iter = 0
** Processing line: ~ loop do~
- Inside source: true
*** True Line Result
loop do
** Processing line: ~ if state.tileCords[a][2] == true && state.tileCords[a][6] != -1~
- Inside source: true
*** True Line Result
if state.tileCords[a][2] == true && state.tileCords[a][6] != -1
** Processing line: ~ outputs.sprites << [state.tileCords[a][0] + state.spriteSelection[state.tileCords[a][6]][1],~
- Inside source: true
*** True Line Result
outputs.sprites << [state.tileCords[a][0] + state.spriteSelection[state.tileCords[a][6]][1],
** Processing line: ~ state.tileCords[a][1] + state.spriteSelection[state.tileCords[a][6]][2],~
- Inside source: true
*** True Line Result
state.tileCords[a][1] + state.spriteSelection[state.tileCords[a][6]][2],
** Processing line: ~ state.spriteSelection[state.tileCords[a][6]][3], state.spriteSelection[state.tileCords[a][6]][4],~
- Inside source: true
*** True Line Result
state.spriteSelection[state.tileCords[a][6]][3], state.spriteSelection[state.tileCords[a][6]][4],
** Processing line: ~ 'sprites/' + state.spriteSelection[state.tileCords[a][6]][0] + '.png']~
- Inside source: true
*** True Line Result
'sprites/' + state.spriteSelection[state.tileCords[a][6]][0] + '.png']
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ iter += 1~
- Inside source: true
*** True Line Result
iter += 1
** Processing line: ~ a += 1~
- Inside source: true
*** True Line Result
a += 1
** Processing line: ~ a -= state.quantity * 2 if iter == state.quantity~
- Inside source: true
*** True Line Result
a -= state.quantity * 2 if iter == state.quantity
** Processing line: ~ iter = 0 if iter == state.quantity~
- Inside source: true
*** True Line Result
iter = 0 if iter == state.quantity
** Processing line: ~ break if a < 0~
- Inside source: true
*** True Line Result
break if a < 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 renderLabels~
- Inside source: true
*** True Line Result
def renderLabels
** Processing line: ~ #Labels~
- Inside source: true
*** True Line Result
#Labels
** Processing line: ~ outputs.labels << [50, 680, 'Click to delete!', 5, 0, 255, 255, 255, 255] if state.mode == :delete~
- Inside source: true
*** True Line Result
outputs.labels << [50, 680, 'Click to delete!', 5, 0, 255, 255, 255, 255] if state.mode == :delete
** Processing line: ~ outputs.labels << [50, 640, 'Press \'i\' for insert mode!', 5, 0, 255, 255, 255, 255] if state.mode == :delete~
- Inside source: true
*** True Line Result
outputs.labels << [50, 640, 'Press \'i\' for insert mode!', 5, 0, 255, 255, 255, 255] if state.mode == :delete
** Processing line: ~ outputs.labels << [50, 680, 'Click to insert!', 5, 0, 255, 255, 255, 255] if state.mode == :insert~
- Inside source: true
*** True Line Result
outputs.labels << [50, 680, 'Click to insert!', 5, 0, 255, 255, 255, 255] if state.mode == :insert
** Processing line: ~ outputs.labels << [50, 640, 'Press \'d\' for delete mode!', 5, 0, 255, 255, 255, 255] if state.mode == :insert~
- Inside source: true
*** True Line Result
outputs.labels << [50, 640, 'Press \'d\' for delete mode!', 5, 0, 255, 255, 255, 255] if state.mode == :insert
** 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: ~ calcCurrentHover~
- Inside source: true
*** True Line Result
calcCurrentHover
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calcCurrentHover~
- Inside source: true
*** True Line Result
def calcCurrentHover
** Processing line: ~ #This determines what tile the mouse is hovering (or last hovering) over~
- Inside source: true
*** True Line Result
#This determines what tile the mouse is hovering (or last hovering) over
** Processing line: ~ x = inputs.mouse.position.x~
- Inside source: true
*** True Line Result
x = inputs.mouse.position.x
** Processing line: ~ y = inputs.mouse.position.y~
- Inside source: true
*** True Line Result
y = inputs.mouse.position.y
** Processing line: ~ m = (state.tileSize[1] / state.tileSize[0]) #slope~
- Inside source: true
*** True Line Result
m = (state.tileSize[1] / state.tileSize[0]) #slope
** Processing line: ~ state.tileCords.map do~
- Inside source: true
*** True Line Result
state.tileCords.map do
** Processing line: ~ |val|~
- Inside source: true
*** True Line Result
|val|
** Processing line: ~ #Conditions that makes runtime faster. Checks if the mouse click was between tile dimensions (rectangle collision)~
- Inside source: true
*** True Line Result
#Conditions that makes runtime faster. Checks if the mouse click was between tile dimensions (rectangle collision)
** Processing line: ~ next unless val[0] < x && x < val[0] + state.tileSize[0]~
- Inside source: true
*** True Line Result
next unless val[0] < x && x < val[0] + state.tileSize[0]
** Processing line: ~ next unless val[1] < y && y < val[1] + state.tileSize[1]~
- Inside source: true
*** True Line Result
next unless val[1] < y && y < val[1] + state.tileSize[1]
** Processing line: ~ next unless val[2] == true~
- Inside source: true
*** True Line Result
next unless val[2] == true
** Processing line: ~ tempBool = false~
- Inside source: true
*** True Line Result
tempBool = false
** Processing line: ~ if x == val[0] + (state.tileSize[0] / 2)~
- Inside source: true
*** True Line Result
if x == val[0] + (state.tileSize[0] / 2)
** Processing line: ~ #The height of a diamond is the height of the diamond, so if x equals that exact point, it must be inside the diamond~
- Inside source: true
*** True Line Result
#The height of a diamond is the height of the diamond, so if x equals that exact point, it must be inside the diamond
** Processing line: ~ tempBool = true~
- Inside source: true
*** True Line Result
tempBool = true
** Processing line: ~ elsif x < state.tileSize[0] / 2 + val[0]~
- Inside source: true
*** True Line Result
elsif x < state.tileSize[0] / 2 + val[0]
** Processing line: ~ #Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the left half of diamond~
- Inside source: true
*** True Line Result
#Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the left half of diamond
** Processing line: ~ tempY1 = (m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)~
- Inside source: true
*** True Line Result
tempY1 = (m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)
** Processing line: ~ tempY2 = (-1 * m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)~
- Inside source: true
*** True Line Result
tempY2 = (-1 * m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)
** Processing line: ~ #Checks to see if the mouse click y value is between those temp y values~
- Inside source: true
*** True Line Result
#Checks to see if the mouse click y value is between those temp y values
** Processing line: ~ tempBool = true if y < tempY1 && y > tempY2~
- Inside source: true
*** True Line Result
tempBool = true if y < tempY1 && y > tempY2
** Processing line: ~ elsif x > state.tileSize[0] / 2 + val[0]~
- Inside source: true
*** True Line Result
elsif x > state.tileSize[0] / 2 + val[0]
** Processing line: ~ #Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the right half of diamond~
- Inside source: true
*** True Line Result
#Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the right half of diamond
** Processing line: ~ tempY1 = (m * (x - val[0] - (state.tileSize[0] / 2))) + val[1]~
- Inside source: true
*** True Line Result
tempY1 = (m * (x - val[0] - (state.tileSize[0] / 2))) + val[1]
** Processing line: ~ tempY2 = (-1 * m * (x - val[0] - (state.tileSize[0] / 2))) + val[1] + state.tileSize[1]~
- Inside source: true
*** True Line Result
tempY2 = (-1 * m * (x - val[0] - (state.tileSize[0] / 2))) + val[1] + state.tileSize[1]
** Processing line: ~ #Checks to see if the mouse click y value is between those temp y values~
- Inside source: true
*** True Line Result
#Checks to see if the mouse click y value is between those temp y values
** Processing line: ~ tempBool = true if y > tempY1 && y < tempY2~
- Inside source: true
*** True Line Result
tempBool = true if y > tempY1 && y < tempY2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if tempBool == true~
- Inside source: true
*** True Line Result
if tempBool == true
** Processing line: ~ state.currentSpriteLocation = val[5] #Current sprite location set to the order value~
- Inside source: true
*** True Line Result
state.currentSpriteLocation = val[5] #Current sprite location set to the order value
** 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 process_inputs~
- Inside source: true
*** True Line Result
def process_inputs
** Processing line: ~ #Makes development much faster and easier~
- Inside source: true
*** True Line Result
#Makes development much faster and easier
** Processing line: ~ if inputs.keyboard.key_up.r~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_up.r
** Processing line: ~ $dragon.reset~
- Inside source: true
*** True Line Result
$dragon.reset
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ checkTileSelected~
- Inside source: true
*** True Line Result
checkTileSelected
** Processing line: ~ switchModes~
- Inside source: true
*** True Line Result
switchModes
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def checkTileSelected~
- Inside source: true
*** True Line Result
def checkTileSelected
** Processing line: ~ if inputs.mouse.down~
- Inside source: true
*** True Line Result
if inputs.mouse.down
** Processing line: ~ x = inputs.mouse.down.point.x~
- Inside source: true
*** True Line Result
x = inputs.mouse.down.point.x
** Processing line: ~ y = inputs.mouse.down.point.y~
- Inside source: true
*** True Line Result
y = inputs.mouse.down.point.y
** Processing line: ~ m = (state.tileSize[1] / state.tileSize[0]) #slope~
- Inside source: true
*** True Line Result
m = (state.tileSize[1] / state.tileSize[0]) #slope
** Processing line: ~ state.tileCords.map do~
- Inside source: true
*** True Line Result
state.tileCords.map do
** Processing line: ~ |val|~
- Inside source: true
*** True Line Result
|val|
** Processing line: ~ #Conditions that makes runtime faster. Checks if the mouse click was between tile dimensions (rectangle collision)~
- Inside source: true
*** True Line Result
#Conditions that makes runtime faster. Checks if the mouse click was between tile dimensions (rectangle collision)
** Processing line: ~ next unless val[0] < x && x < val[0] + state.tileSize[0]~
- Inside source: true
*** True Line Result
next unless val[0] < x && x < val[0] + state.tileSize[0]
** Processing line: ~ next unless val[1] < y && y < val[1] + state.tileSize[1]~
- Inside source: true
*** True Line Result
next unless val[1] < y && y < val[1] + state.tileSize[1]
** Processing line: ~ next unless val[2] == true~
- Inside source: true
*** True Line Result
next unless val[2] == true
** Processing line: ~ tempBool = false~
- Inside source: true
*** True Line Result
tempBool = false
** Processing line: ~ if x == val[0] + (state.tileSize[0] / 2)~
- Inside source: true
*** True Line Result
if x == val[0] + (state.tileSize[0] / 2)
** Processing line: ~ #The height of a diamond is the height of the diamond, so if x equals that exact point, it must be inside the diamond~
- Inside source: true
*** True Line Result
#The height of a diamond is the height of the diamond, so if x equals that exact point, it must be inside the diamond
** Processing line: ~ tempBool = true~
- Inside source: true
*** True Line Result
tempBool = true
** Processing line: ~ elsif x < state.tileSize[0] / 2 + val[0]~
- Inside source: true
*** True Line Result
elsif x < state.tileSize[0] / 2 + val[0]
** Processing line: ~ #Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the left half of diamond~
- Inside source: true
*** True Line Result
#Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the left half of diamond
** Processing line: ~ tempY1 = (m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)~
- Inside source: true
*** True Line Result
tempY1 = (m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)
** Processing line: ~ tempY2 = (-1 * m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)~
- Inside source: true
*** True Line Result
tempY2 = (-1 * m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)
** Processing line: ~ #Checks to see if the mouse click y value is between those temp y values~
- Inside source: true
*** True Line Result
#Checks to see if the mouse click y value is between those temp y values
** Processing line: ~ tempBool = true if y < tempY1 && y > tempY2~
- Inside source: true
*** True Line Result
tempBool = true if y < tempY1 && y > tempY2
** Processing line: ~ elsif x > state.tileSize[0] / 2 + val[0]~
- Inside source: true
*** True Line Result
elsif x > state.tileSize[0] / 2 + val[0]
** Processing line: ~ #Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the right half of diamond~
- Inside source: true
*** True Line Result
#Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the right half of diamond
** Processing line: ~ tempY1 = (m * (x - val[0] - (state.tileSize[0] / 2))) + val[1]~
- Inside source: true
*** True Line Result
tempY1 = (m * (x - val[0] - (state.tileSize[0] / 2))) + val[1]
** Processing line: ~ tempY2 = (-1 * m * (x - val[0] - (state.tileSize[0] / 2))) + val[1] + state.tileSize[1]~
- Inside source: true
*** True Line Result
tempY2 = (-1 * m * (x - val[0] - (state.tileSize[0] / 2))) + val[1] + state.tileSize[1]
** Processing line: ~ #Checks to see if the mouse click y value is between those temp y values~
- Inside source: true
*** True Line Result
#Checks to see if the mouse click y value is between those temp y values
** Processing line: ~ tempBool = true if y > tempY1 && y < tempY2~
- Inside source: true
*** True Line Result
tempBool = true if y > tempY1 && y < tempY2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if tempBool == true~
- Inside source: true
*** True Line Result
if tempBool == true
** Processing line: ~ if state.mode == :delete~
- Inside source: true
*** True Line Result
if state.mode == :delete
** Processing line: ~ val[2] = false~
- Inside source: true
*** True Line Result
val[2] = false
** Processing line: ~ state.tileGrid[val[5]][2] = false #Unnecessary because never used again but eh, I like consistency~
- Inside source: true
*** True Line Result
state.tileGrid[val[5]][2] = false #Unnecessary because never used again but eh, I like consistency
** Processing line: ~ state.tileCords[val[5]][2] = false #Ensures that the tile isn't rendered~
- Inside source: true
*** True Line Result
state.tileCords[val[5]][2] = false #Ensures that the tile isn't rendered
** Processing line: ~ unless state.tileGrid[val[5]][0] == 0 #If tile is the left most tile in the row, right doesn't get rendered~
- Inside source: true
*** True Line Result
unless state.tileGrid[val[5]][0] == 0 #If tile is the left most tile in the row, right doesn't get rendered
** Processing line: ~ state.tileGrid[val[5] - 1][4] = true #Why the order value is amazing~
- Inside source: true
*** True Line Result
state.tileGrid[val[5] - 1][4] = true #Why the order value is amazing
** Processing line: ~ state.tileCords[val[5] - 1][4] = true~
- Inside source: true
*** True Line Result
state.tileCords[val[5] - 1][4] = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ unless state.tileGrid[val[5]][1] == state.quantity - 1 #Same but left side~
- Inside source: true
*** True Line Result
unless state.tileGrid[val[5]][1] == state.quantity - 1 #Same but left side
** Processing line: ~ state.tileGrid[val[5] + state.quantity][3] = true~
- Inside source: true
*** True Line Result
state.tileGrid[val[5] + state.quantity][3] = true
** Processing line: ~ state.tileCords[val[5] + state.quantity][3] = true~
- Inside source: true
*** True Line Result
state.tileCords[val[5] + state.quantity][3] = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ elsif state.mode == :insert~
- Inside source: true
*** True Line Result
elsif state.mode == :insert
** Processing line: ~ #adds the current sprite value selected to tileCords. (changes from the -1 earlier)~
- Inside source: true
*** True Line Result
#adds the current sprite value selected to tileCords. (changes from the -1 earlier)
** Processing line: ~ val[6] = rand(state.spriteSelection.length)~
- Inside source: true
*** True Line Result
val[6] = rand(state.spriteSelection.length)
** 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: ~ 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 switchModes~
- Inside source: true
*** True Line Result
def switchModes
** Processing line: ~ #Switches between insert and delete modes~
- Inside source: true
*** True Line Result
#Switches between insert and delete modes
** Processing line: ~ if inputs.keyboard.key_up.i && state.mode == :delete~
- Inside source: true
*** True Line Result
if inputs.keyboard.key_up.i && state.mode == :delete
** Processing line: ~ state.mode = :insert~
- Inside source: true
*** True Line Result
state.mode = :insert
** Processing line: ~ inputs.keyboard.clear~
- Inside source: true
*** True Line Result
inputs.keyboard.clear
** Processing line: ~ elsif inputs.keyboard.key_up.d && state.mode == :insert~
- Inside source: true
*** True Line Result
elsif inputs.keyboard.key_up.d && state.mode == :insert
** Processing line: ~ state.mode = :delete~
- Inside source: true
*** True Line Result
state.mode = :delete
** Processing line: ~ inputs.keyboard.clear~
- Inside source: true
*** True Line Result
inputs.keyboard.clear
** 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~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ $isometric = Isometric.new~
- Inside source: true
*** True Line Result
$isometric = Isometric.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: ~ $isometric.grid = args.grid~
- Inside source: true
*** True Line Result
$isometric.grid = args.grid
** Processing line: ~ $isometric.inputs = args.inputs~
- Inside source: true
*** True Line Result
$isometric.inputs = args.inputs
** Processing line: ~ $isometric.state = args.state~
- Inside source: true
*** True Line Result
$isometric.state = args.state
** Processing line: ~ $isometric.outputs = args.outputs~
- Inside source: true
*** True Line Result
$isometric.outputs = args.outputs
** Processing line: ~ $isometric.tick~
- Inside source: true
*** True Line Result
$isometric.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
*** True Line Result
* Rpg Topdown - Topdown 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_rpg_topdown/topdown_starting_point/app/main.rb~
- Inside source: true
*** True Line Result
# ./samples/99_genre_rpg_topdown/topdown_starting_point/app/main.rb
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
- Inside source: true
*** True Line Result
APIs listing that haven't been encountered in previous sample apps:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - reverse: Returns a new string with the characters from original string in reverse order.~
- Inside source: true
*** True Line Result
- reverse: Returns a new string with the characters from original string in reverse order.
** Processing line: ~ For example, the command~
- Inside source: true
*** True Line Result
For example, the command
** Processing line: ~ "dragonruby".reverse~
- Inside source: true
*** True Line Result
"dragonruby".reverse
** Processing line: ~ would return the string~
- Inside source: true
*** True Line Result
would return the string
** Processing line: ~ "yburnogard".~
- Inside source: true
*** True Line Result
"yburnogard".
** Processing line: ~ Reverse is not only limited to strings, but can be applied to arrays and other collections.~
- Inside source: true
*** True Line Result
Reverse is not only limited to strings, but can be applied to arrays and other collections.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Reminders:~
- Inside source: true
*** True Line Result
Reminders:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if two rectangles intersect.~
- Inside source: true
*** True Line Result
- ARRAY#intersect_rect?: Returns true or false depending on if two rectangles intersect.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
- Inside source: true
*** True Line Result
- args.outputs.labels: An array. The values generate a label.
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
- Inside source: true
*** True Line Result
The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
- Inside source: true
*** True Line Result
For more information about labels, go to mygame/documentation/02-labels.md.
** 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: ~ # This code shows a maze and uses input from the keyboard to move the user around the screen.~
- Inside source: true
*** True Line Result
# This code shows a maze and uses input from the keyboard to move the user around the screen.
** Processing line: ~ # The objective is to reach the goal.~
- Inside source: true
*** True Line Result
# The objective is to reach the goal.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets values of tile size and player's movement speed~
- Inside source: true
*** True Line Result
# Sets values of tile size and player's movement speed
** Processing line: ~ # Also creates tile or box for player and generates map~
- Inside source: true
*** True Line Result
# Also creates tile or box for player and generates map
** Processing line: ~ def tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ args.state.tile_size = 80~
- Inside source: true
*** True Line Result
args.state.tile_size = 80
** Processing line: ~ args.state.player_speed = 4~
- Inside source: true
*** True Line Result
args.state.player_speed = 4
** Processing line: ~ args.state.player ||= tile(args, 7, 3, 0, 128, 180)~
- Inside source: true
*** True Line Result
args.state.player ||= tile(args, 7, 3, 0, 128, 180)
** Processing line: ~ generate_map args~
- Inside source: true
*** True Line Result
generate_map args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Adds walls, goal, and player to args.outputs.solids so they appear on screen~
- Inside source: true
*** True Line Result
# Adds walls, goal, and player to args.outputs.solids so they appear on screen
** Processing line: ~ args.outputs.solids << args.state.walls~
- Inside source: true
*** True Line Result
args.outputs.solids << args.state.walls
** Processing line: ~ args.outputs.solids << args.state.goal~
- Inside source: true
*** True Line Result
args.outputs.solids << args.state.goal
** Processing line: ~ args.outputs.solids << args.state.player~
- Inside source: true
*** True Line Result
args.outputs.solids << args.state.player
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If player's box intersects with goal, a label is output onto the screen~
- Inside source: true
*** True Line Result
# If player's box intersects with goal, a label is output onto the screen
** Processing line: ~ if args.state.player.intersect_rect? args.state.goal~
- Inside source: true
*** True Line Result
if args.state.player.intersect_rect? args.state.goal
** Processing line: ~ args.outputs.labels << [30, 720 - 30, "You're a wizard Harry!!"] # 30 pixels lower than top of screen~
- Inside source: true
*** True Line Result
args.outputs.labels << [30, 720 - 30, "You're a wizard Harry!!"] # 30 pixels lower than top of screen
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ move_player args, -1, 0 if args.inputs.keyboard.left # x position decreases by 1 if left key is pressed~
- Inside source: true
*** True Line Result
move_player args, -1, 0 if args.inputs.keyboard.left # x position decreases by 1 if left key is pressed
** Processing line: ~ move_player args, 1, 0 if args.inputs.keyboard.right # x position increases by 1 if right key is pressed~
- Inside source: true
*** True Line Result
move_player args, 1, 0 if args.inputs.keyboard.right # x position increases by 1 if right key is pressed
** Processing line: ~ move_player args, 0, 1 if args.inputs.keyboard.up # y position increases by 1 if up is pressed~
- Inside source: true
*** True Line Result
move_player args, 0, 1 if args.inputs.keyboard.up # y position increases by 1 if up is pressed
** Processing line: ~ move_player args, 0, -1 if args.inputs.keyboard.down # y position decreases by 1 if down is pressed~
- Inside source: true
*** True Line Result
move_player args, 0, -1 if args.inputs.keyboard.down # y position decreases by 1 if down is pressed
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets position, size, and color of the tile~
- Inside source: true
*** True Line Result
# Sets position, size, and color of the tile
** Processing line: ~ def tile args, x, y, *color~
- Inside source: true
*** True Line Result
def tile args, x, y, *color
** Processing line: ~ [x * args.state.tile_size, # sets definition for array using method parameters~
- Inside source: true
*** True Line Result
[x * args.state.tile_size, # sets definition for array using method parameters
** Processing line: ~ y * args.state.tile_size, # multiplying by tile_size sets x and y to correct position using pixel values~
- Inside source: true
*** True Line Result
y * args.state.tile_size, # multiplying by tile_size sets x and y to correct position using pixel values
** Processing line: ~ args.state.tile_size,~
- Inside source: true
*** True Line Result
args.state.tile_size,
** Processing line: ~ args.state.tile_size,~
- Inside source: true
*** True Line Result
args.state.tile_size,
** Processing line: ~ *color]~
- Inside source: true
*** True Line Result
*color]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates map by adding tiles to the wall, as well as a goal (that the player needs to reach)~
- Inside source: true
*** True Line Result
# Creates map by adding tiles to the wall, as well as a goal (that the player needs to reach)
** Processing line: ~ def generate_map args~
- Inside source: true
*** True Line Result
def generate_map args
** Processing line: ~ return if args.state.area~
- Inside source: true
*** True Line Result
return if args.state.area
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Creates the area of the map. There are 9 rows running horizontally across the screen~
- Inside source: true
*** True Line Result
# Creates the area of the map. There are 9 rows running horizontally across the screen
** Processing line: ~ # and 16 columns running vertically on the screen. Any spot with a "1" is not~
- Inside source: true
*** True Line Result
# and 16 columns running vertically on the screen. Any spot with a "1" is not
** Processing line: ~ # open for the player to move into (and is green), and any spot with a "0" is available~
- Inside source: true
*** True Line Result
# open for the player to move into (and is green), and any spot with a "0" is available
** Processing line: ~ # for the player to move in.~
- Inside source: true
*** True Line Result
# for the player to move in.
** Processing line: ~ args.state.area = [~
- Inside source: true
*** True Line Result
args.state.area = [
** Processing line: ~ [1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,],~
- Inside source: true
*** True Line Result
[1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,],
** Processing line: ~ [1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,], # the "2" represents the goal~
- Inside source: true
*** True Line Result
[1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,], # the "2" represents the goal
** Processing line: ~ [1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,],~
- Inside source: true
*** True Line Result
[1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,],
** Processing line: ~ [1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,],~
- Inside source: true
*** True Line Result
[1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,],
** Processing line: ~ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,],~
- Inside source: true
*** True Line Result
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,],
** Processing line: ~ [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,],~
- Inside source: true
*** True Line Result
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,],
** Processing line: ~ [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,],~
- Inside source: true
*** True Line Result
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,],
** Processing line: ~ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,],~
- Inside source: true
*** True Line Result
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,],
** Processing line: ~ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ],~
- Inside source: true
*** True Line Result
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ],
** Processing line: ~ ].reverse # reverses the order of the area collection~
- Inside source: true
*** True Line Result
].reverse # reverses the order of the area collection
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # By reversing the order, the way that the area appears above is how it appears~
- Inside source: true
*** True Line Result
# By reversing the order, the way that the area appears above is how it appears
** Processing line: ~ # on the screen in the game. If we did not reverse, the map would appear inverted.~
- Inside source: true
*** True Line Result
# on the screen in the game. If we did not reverse, the map would appear inverted.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #The wall starts off with no tiles.~
- Inside source: true
*** True Line Result
#The wall starts off with no tiles.
** Processing line: ~ args.state.walls = []~
- Inside source: true
*** True Line Result
args.state.walls = []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If v is 1, a green tile is added to args.state.walls.~
- Inside source: true
*** True Line Result
# If v is 1, a green tile is added to args.state.walls.
** Processing line: ~ # If v is 2, a black tile is created as the goal.~
- Inside source: true
*** True Line Result
# If v is 2, a black tile is created as the goal.
** Processing line: ~ args.state.area.map_2d do |y, x, v|~
- Inside source: true
*** True Line Result
args.state.area.map_2d do |y, x, v|
** Processing line: ~ if v == 1~
- Inside source: true
*** True Line Result
if v == 1
** Processing line: ~ args.state.walls << tile(args, x, y, 0, 255, 0) # green tile~
- Inside source: true
*** True Line Result
args.state.walls << tile(args, x, y, 0, 255, 0) # green tile
** Processing line: ~ elsif v == 2 # notice there is only one "2" above because there is only one single goal~
- Inside source: true
*** True Line Result
elsif v == 2 # notice there is only one "2" above because there is only one single goal
** Processing line: ~ args.state.goal = tile(args, x, y, 0, 0, 0) # black tile~
- Inside source: true
*** True Line Result
args.state.goal = tile(args, x, y, 0, 0, 0) # black tile
** 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: ~ # Allows the player to move their box around the screen~
- Inside source: true
*** True Line Result
# Allows the player to move their box around the screen
** Processing line: ~ def move_player args, *vector~
- Inside source: true
*** True Line Result
def move_player args, *vector
** Processing line: ~ box = args.state.player.shift_rect(vector) # box is able to move at an angle~
- Inside source: true
*** True Line Result
box = args.state.player.shift_rect(vector) # box is able to move at an angle
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If the player's box hits a wall, it is not able to move further in that direction~
- Inside source: true
*** True Line Result
# If the player's box hits a wall, it is not able to move further in that direction
** Processing line: ~ return if args.state.walls~
- Inside source: true
*** True Line Result
return if args.state.walls
** Processing line: ~ .any_intersect_rect?(box)~
- Inside source: true
*** True Line Result
.any_intersect_rect?(box)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Player's box is able to move at angles (not just the four general directions) fast~
- Inside source: true
*** True Line Result
# Player's box is able to move at angles (not just the four general directions) fast
** Processing line: ~ args.state.player =~
- Inside source: true
*** True Line Result
args.state.player =
** Processing line: ~ args.state.player~
- Inside source: true
*** True Line Result
args.state.player
** Processing line: ~ .shift_rect(vector.x * args.state.player_speed, # if we don't multiply by speed, then~
- Inside source: true
*** True Line Result
.shift_rect(vector.x * args.state.player_speed, # if we don't multiply by speed, then
** Processing line: ~ vector.y * args.state.player_speed) # the box will move extremely slow~
- Inside source: true
*** True Line Result
vector.y * args.state.player_speed) # the box will move extremely slow
** 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.
*** True Line Result
*** True Line Result
#+begin_src ruby
** Processing line: ~ # ./dragon/args.rb~
- Inside source: true
*** True Line Result
# ./dragon/args.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: ~ # args.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# args.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: ~ # This class is the one you'll interact with the most. It's~
- Inside source: true
*** True Line Result
# This class is the one you'll interact with the most. It's
** Processing line: ~ # constructed by the DragonRuby Runtime and is provided to you on~
- Inside source: true
*** True Line Result
# constructed by the DragonRuby Runtime and is provided to you on
** Processing line: ~ # each tick.~
- Inside source: true
*** True Line Result
# each tick.
** Processing line: ~ class Args~
- Inside source: true
*** True Line Result
class Args
** Processing line: ~ include ArgsDeprecated~
- Inside source: true
*** True Line Result
include ArgsDeprecated
** Processing line: ~ include Serialize~
- Inside source: true
*** True Line Result
include Serialize
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Contains information related to input devices and input events.~
- Inside source: true
*** True Line Result
# Contains information related to input devices and input events.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Inputs]~
- Inside source: true
*** True Line Result
# @return [Inputs]
** Processing line: ~ attr_accessor :inputs~
- Inside source: true
*** True Line Result
attr_accessor :inputs
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Contains the means to interact with output devices such as the screen.~
- Inside source: true
*** True Line Result
# Contains the means to interact with output devices such as the screen.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Outputs]~
- Inside source: true
*** True Line Result
# @return [Outputs]
** Processing line: ~ attr_accessor :outputs~
- Inside source: true
*** True Line Result
attr_accessor :outputs
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Contains display size information to assist in positioning things on the screen.~
- Inside source: true
*** True Line Result
# Contains display size information to assist in positioning things on the screen.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Grid]~
- Inside source: true
*** True Line Result
# @return [Grid]
** Processing line: ~ attr_accessor :grid~
- Inside source: true
*** True Line Result
attr_accessor :grid
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Provides access to game play recording facilities within Game Toolkit.~
- Inside source: true
*** True Line Result
# Provides access to game play recording facilities within Game Toolkit.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Recording]~
- Inside source: true
*** True Line Result
# @return [Recording]
** Processing line: ~ attr_accessor :recording~
- Inside source: true
*** True Line Result
attr_accessor :recording
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Gives you access to geometry related functions.~
- Inside source: true
*** True Line Result
# Gives you access to geometry related functions.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Geometry]~
- Inside source: true
*** True Line Result
# @return [Geometry]
** Processing line: ~ attr_accessor :geometry~
- Inside source: true
*** True Line Result
attr_accessor :geometry
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This is where you'll put state associated with your video game.~
- Inside source: true
*** True Line Result
# This is where you'll put state associated with your video game.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [OpenEntity]~
- Inside source: true
*** True Line Result
# @return [OpenEntity]
** Processing line: ~ attr_accessor :state~
- Inside source: true
*** True Line Result
attr_accessor :state
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Gives you access to the top level DragonRuby runtime.~
- Inside source: true
*** True Line Result
# Gives you access to the top level DragonRuby runtime.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Runtime]~
- Inside source: true
*** True Line Result
# @return [Runtime]
** Processing line: ~ attr_accessor :runtime~
- Inside source: true
*** True Line Result
attr_accessor :runtime
** Processing line: ~ alias_method :gtk, :runtime~
- Inside source: true
*** True Line Result
alias_method :gtk, :runtime
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ attr_accessor :passes~
- Inside source: true
*** True Line Result
attr_accessor :passes
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ attr_accessor :wizards~
- Inside source: true
*** True Line Result
attr_accessor :wizards
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize runtime, recording~
- Inside source: true
*** True Line Result
def initialize runtime, recording
** Processing line: ~ @inputs = Inputs.new~
- Inside source: true
*** True Line Result
@inputs = Inputs.new
** Processing line: ~ @outputs = Outputs.new args: self~
- Inside source: true
*** True Line Result
@outputs = Outputs.new args: self
** Processing line: ~ @passes = []~
- Inside source: true
*** True Line Result
@passes = []
** Processing line: ~ @state = OpenEntity.new~
- Inside source: true
*** True Line Result
@state = OpenEntity.new
** Processing line: ~ @state.tick_count = -1~
- Inside source: true
*** True Line Result
@state.tick_count = -1
** Processing line: ~ @runtime = runtime~
- Inside source: true
*** True Line Result
@runtime = runtime
** Processing line: ~ @recording = recording~
- Inside source: true
*** True Line Result
@recording = recording
** Processing line: ~ @grid = Grid.new runtime~
- Inside source: true
*** True Line Result
@grid = Grid.new runtime
** Processing line: ~ @render_targets = {}~
- Inside source: true
*** True Line Result
@render_targets = {}
** Processing line: ~ @all_tests = []~
- Inside source: true
*** True Line Result
@all_tests = []
** Processing line: ~ @geometry = GTK::Geometry~
- Inside source: true
*** True Line Result
@geometry = GTK::Geometry
** Processing line: ~ @wizards = Wizards.new~
- Inside source: true
*** True Line Result
@wizards = Wizards.new
** 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: ~ # The number of ticks since the start of the game.~
- Inside source: true
*** True Line Result
# The number of ticks since the start of the game.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Integer]~
- Inside source: true
*** True Line Result
# @return [Integer]
** Processing line: ~ def tick_count~
- Inside source: true
*** True Line Result
def tick_count
** Processing line: ~ @state.tick_count~
- Inside source: true
*** True Line Result
@state.tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def tick_count= value~
- Inside source: true
*** True Line Result
def tick_count= value
** Processing line: ~ @state.tick_count = value~
- Inside source: true
*** True Line Result
@state.tick_count = value
** 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
def serialize
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ state: state.as_hash,~
- Inside source: true
*** True Line Result
state: state.as_hash,
** Processing line: ~ inputs: inputs.serialize,~
- Inside source: true
*** True Line Result
inputs: inputs.serialize,
** Processing line: ~ passes: passes.serialize,~
- Inside source: true
*** True Line Result
passes: passes.serialize,
** Processing line: ~ outputs: outputs.serialize,~
- Inside source: true
*** True Line Result
outputs: outputs.serialize,
** Processing line: ~ grid: grid.serialize~
- Inside source: true
*** True Line Result
grid: grid.serialize
** 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 destructure~
- Inside source: true
*** True Line Result
def destructure
** Processing line: ~ [grid, inputs, state, outputs, runtime, passes]~
- Inside source: true
*** True Line Result
[grid, inputs, state, outputs, runtime, passes]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def clear_render_targets~
- Inside source: true
*** True Line Result
def clear_render_targets
** Processing line: ~ render_targets_clear~
- Inside source: true
*** True Line Result
render_targets_clear
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_targets_clear~
- Inside source: true
*** True Line Result
def render_targets_clear
** Processing line: ~ @render_targets = {}~
- Inside source: true
*** True Line Result
@render_targets = {}
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_targets~
- Inside source: true
*** True Line Result
def render_targets
** Processing line: ~ @render_targets~
- Inside source: true
*** True Line Result
@render_targets
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_target name~
- Inside source: true
*** True Line Result
def render_target name
** Processing line: ~ name = name.to_s~
- Inside source: true
*** True Line Result
name = name.to_s
** Processing line: ~ if !@render_targets[name]~
- Inside source: true
*** True Line Result
if !@render_targets[name]
** Processing line: ~ @render_targets[name] = Outputs.new(args: self, target: name, background_color_override: [255, 255, 255, 0])~
- Inside source: true
*** True Line Result
@render_targets[name] = Outputs.new(args: self, target: name, background_color_override: [255, 255, 255, 0])
** Processing line: ~ @passes << @render_targets[name]~
- Inside source: true
*** True Line Result
@passes << @render_targets[name]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ @render_targets[name]~
- Inside source: true
*** True Line Result
@render_targets[name]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def solids~
- Inside source: true
*** True Line Result
def solids
** Processing line: ~ @outputs.solids~
- Inside source: true
*** True Line Result
@outputs.solids
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def static_solids~
- Inside source: true
*** True Line Result
def static_solids
** Processing line: ~ @outputs.static_solids~
- Inside source: true
*** True Line Result
@outputs.static_solids
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def sprites~
- Inside source: true
*** True Line Result
def sprites
** Processing line: ~ @outputs.sprites~
- Inside source: true
*** True Line Result
@outputs.sprites
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def static_sprites~
- Inside source: true
*** True Line Result
def static_sprites
** Processing line: ~ @outputs.static_sprites~
- Inside source: true
*** True Line Result
@outputs.static_sprites
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def labels~
- Inside source: true
*** True Line Result
def labels
** Processing line: ~ @outputs.labels~
- Inside source: true
*** True Line Result
@outputs.labels
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def static_labels~
- Inside source: true
*** True Line Result
def static_labels
** Processing line: ~ @outputs.static_labels~
- Inside source: true
*** True Line Result
@outputs.static_labels
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def lines~
- Inside source: true
*** True Line Result
def lines
** Processing line: ~ @outputs.lines~
- Inside source: true
*** True Line Result
@outputs.lines
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def static_lines~
- Inside source: true
*** True Line Result
def static_lines
** Processing line: ~ @outputs.static_lines~
- Inside source: true
*** True Line Result
@outputs.static_lines
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def borders~
- Inside source: true
*** True Line Result
def borders
** Processing line: ~ @outputs.borders~
- Inside source: true
*** True Line Result
@outputs.borders
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def static_borders~
- Inside source: true
*** True Line Result
def static_borders
** Processing line: ~ @outputs.static_borders~
- Inside source: true
*** True Line Result
@outputs.static_borders
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def primitives~
- Inside source: true
*** True Line Result
def primitives
** Processing line: ~ @outputs.primitives~
- Inside source: true
*** True Line Result
@outputs.primitives
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def static_primitives~
- Inside source: true
*** True Line Result
def static_primitives
** Processing line: ~ @outputs.static_primitives~
- Inside source: true
*** True Line Result
@outputs.static_primitives
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def keyboard~
- Inside source: true
*** True Line Result
def keyboard
** Processing line: ~ @inputs.keyboard~
- Inside source: true
*** True Line Result
@inputs.keyboard
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def click~
- Inside source: true
*** True Line Result
def click
** Processing line: ~ return nil unless @inputs.mouse.click~
- Inside source: true
*** True Line Result
return nil unless @inputs.mouse.click
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @inputs.mouse.click.point~
- Inside source: true
*** True Line Result
@inputs.mouse.click.point
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def click_at~
- Inside source: true
*** True Line Result
def click_at
** Processing line: ~ return nil unless @inputs.mouse.click~
- Inside source: true
*** True Line Result
return nil unless @inputs.mouse.click
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @inputs.mouse.click.created_at~
- Inside source: true
*** True Line Result
@inputs.mouse.click.created_at
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def mouse~
- Inside source: true
*** True Line Result
def mouse
** Processing line: ~ @inputs.mouse~
- Inside source: true
*** True Line Result
@inputs.mouse
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @see Inputs#controller_one~
- Inside source: true
*** True Line Result
# @see Inputs#controller_one
** Processing line: ~ # @return (see Inputs#controller_one)~
- Inside source: true
*** True Line Result
# @return (see Inputs#controller_one)
** Processing line: ~ def controller_one~
- Inside source: true
*** True Line Result
def controller_one
** Processing line: ~ @inputs.controller_one~
- Inside source: true
*** True Line Result
@inputs.controller_one
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @see Inputs#controller_two~
- Inside source: true
*** True Line Result
# @see Inputs#controller_two
** Processing line: ~ # @return (see Inputs#controller_two)~
- Inside source: true
*** True Line Result
# @return (see Inputs#controller_two)
** Processing line: ~ def controller_two~
- Inside source: true
*** True Line Result
def controller_two
** Processing line: ~ @inputs.controller_two~
- Inside source: true
*** True Line Result
@inputs.controller_two
** 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: ~* assert.rb~
- Header detected.
*** True Line Result
*** True Line Result
* assert.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/assert.rb~
- Inside source: true
*** True Line Result
# ./dragon/assert.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: ~ # assert.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# assert.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: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~ This is a tiny assertion api for the unit testing portion of Game Toolkit.~
- Inside source: true
*** True Line Result
This is a tiny assertion api for the unit testing portion of Game Toolkit.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @example~
- Inside source: true
*** True Line Result
@example
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ 1. Create a file called tests.rb under mygame.~
- Inside source: true
*** True Line Result
1. Create a file called tests.rb under mygame.
** Processing line: ~ 2. Any method that begins with the word test_ will be considered a test.~
- Inside source: true
*** True Line Result
2. Any method that begins with the word test_ will be considered a test.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_this_works args, assert~
- Inside source: true
*** True Line Result
def test_this_works args, assert
** Processing line: ~ assert.equal! 1, 1~
- Inside source: true
*** True Line Result
assert.equal! 1, 1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ 3. To run a test, save the file while the game is running.~
- Inside source: true
*** True Line Result
3. To run a test, save the file while the game is running.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @example~
- Inside source: true
*** True Line Result
@example
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ To add an assertion open up this class and write:~
- Inside source: true
*** True Line Result
To add an assertion open up this class and write:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class Assert~
- Inside source: true
*** True Line Result
class Assert
** Processing line: ~ def custom_assertion actual, expected, message = nil~
- Inside source: true
*** True Line Result
def custom_assertion actual, expected, message = nil
** Processing line: ~ # this tell Game Toolkit that an assertion was performed (so that the test isn't marked inconclusive).~
- Inside source: true
*** True Line Result
# this tell Game Toolkit that an assertion was performed (so that the test isn't marked inconclusive).
** Processing line: ~ @assertion_performed = true~
- Inside source: true
*** True Line Result
@assertion_performed = true
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # perform your custom logic here and rais an exception to denote a failure.~
- Inside source: true
*** True Line Result
# perform your custom logic here and rais an exception to denote a failure.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ raise "Some Error. #{message}."~
- Inside source: true
*** True Line Result
raise "Some Error. #{message}."
** 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: ~ class Assert~
- Inside source: true
*** True Line Result
class Assert
** Processing line: ~ attr :assertion_performed~
- Inside source: true
*** True Line Result
attr :assertion_performed
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~ Us this if you are throwing your own exceptions and you want to mark the tests as ran (so that it wont be marked as inconclusive).~
- Inside source: true
*** True Line Result
Us this if you are throwing your own exceptions and you want to mark the tests as ran (so that it wont be marked as inconclusive).
** Processing line: ~ =end~
- Inside source: true
*** True Line Result
=end
** Processing line: ~ def ok!~
- Inside source: true
*** True Line Result
def ok!
** Processing line: ~ @assertion_performed = true~
- Inside source: true
*** True Line Result
@assertion_performed = true
** 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: ~ Assert if a value is a thruthy value. All assert method take an optional final parameter that is the message to display to the user.~
- Inside source: true
*** True Line Result
Assert if a value is a thruthy value. All assert method take an optional final parameter that is the message to display to the user.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @example~
- Inside source: true
*** True Line Result
@example
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_does_this_work args, assert~
- Inside source: true
*** True Line Result
def test_does_this_work args, assert
** Processing line: ~ some_result = Person.new~
- Inside source: true
*** True Line Result
some_result = Person.new
** Processing line: ~ assert.true! some_result~
- Inside source: true
*** True Line Result
assert.true! some_result
** Processing line: ~ # OR~
- Inside source: true
*** True Line Result
# OR
** Processing line: ~ assert.true! some_result, "Person was not created."~
- Inside source: true
*** True Line Result
assert.true! some_result, "Person was not created."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ =end~
- Inside source: true
*** True Line Result
=end
** Processing line: ~ def true! value, message = nil~
- Inside source: true
*** True Line Result
def true! value, message = nil
** Processing line: ~ @assertion_performed = true~
- Inside source: true
*** True Line Result
@assertion_performed = true
** Processing line: ~ if !value~
- Inside source: true
*** True Line Result
if !value
** Processing line: ~ message = "#{value} was not truthy.\n#{message}"~
- Inside source: true
*** True Line Result
message = "#{value} was not truthy.\n#{message}"
** Processing line: ~ raise "#{message}"~
- Inside source: true
*** True Line Result
raise "#{message}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** 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: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~ Assert if a value is a falsey value.~
- Inside source: true
*** True Line Result
Assert if a value is a falsey value.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @example~
- Inside source: true
*** True Line Result
@example
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_does_this_work args, assert~
- Inside source: true
*** True Line Result
def test_does_this_work args, assert
** Processing line: ~ some_result = nil~
- Inside source: true
*** True Line Result
some_result = nil
** Processing line: ~ assert.false! some_result~
- Inside source: true
*** True Line Result
assert.false! some_result
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ =end~
- Inside source: true
*** True Line Result
=end
** Processing line: ~ def false! value, message = nil~
- Inside source: true
*** True Line Result
def false! value, message = nil
** Processing line: ~ @assertion_performed = true~
- Inside source: true
*** True Line Result
@assertion_performed = true
** Processing line: ~ if value~
- Inside source: true
*** True Line Result
if value
** Processing line: ~ message = "#{value} was not falsey.\n#{message}"~
- Inside source: true
*** True Line Result
message = "#{value} was not falsey.\n#{message}"
** Processing line: ~ raise message~
- Inside source: true
*** True Line Result
raise message
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** 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: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~ Assert if two values are equal.~
- Inside source: true
*** True Line Result
Assert if two values are equal.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @example~
- Inside source: true
*** True Line Result
@example
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_does_this_work args, assert~
- Inside source: true
*** True Line Result
def test_does_this_work args, assert
** Processing line: ~ a = 1~
- Inside source: true
*** True Line Result
a = 1
** Processing line: ~ b = 1~
- Inside source: true
*** True Line Result
b = 1
** Processing line: ~ assert.equal! a, b~
- Inside source: true
*** True Line Result
assert.equal! a, b
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ =end~
- Inside source: true
*** True Line Result
=end
** Processing line: ~ def equal! actual, expected, message = nil~
- Inside source: true
*** True Line Result
def equal! actual, expected, message = nil
** Processing line: ~ @assertion_performed = true~
- Inside source: true
*** True Line Result
@assertion_performed = true
** Processing line: ~ if actual != expected~
- Inside source: true
*** True Line Result
if actual != expected
** Processing line: ~ actual_string = "#{actual}#{actual.nil? ? " (nil) " : " " }".strip~
- Inside source: true
*** True Line Result
actual_string = "#{actual}#{actual.nil? ? " (nil) " : " " }".strip
** Processing line: ~ message = "actual:\n#{actual_string} did not equal\nexpected:\n#{expected}.\n#{message}"~
- Inside source: true
*** True Line Result
message = "actual:\n#{actual_string} did not equal\nexpected:\n#{expected}.\n#{message}"
** Processing line: ~ raise message~
- Inside source: true
*** True Line Result
raise message
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** 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: ~ =begin~
- Inside source: true
*** True Line Result
=begin
** Processing line: ~ Assert if a value is explicitly nil (not false).~
- Inside source: true
*** True Line Result
Assert if a value is explicitly nil (not false).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @example~
- Inside source: true
*** True Line Result
@example
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_does_this_work args, assert~
- Inside source: true
*** True Line Result
def test_does_this_work args, assert
** Processing line: ~ a = nil~
- Inside source: true
*** True Line Result
a = nil
** Processing line: ~ b = false~
- Inside source: true
*** True Line Result
b = false
** Processing line: ~ assert.nil! a # this will pass~
- Inside source: true
*** True Line Result
assert.nil! a # this will pass
** Processing line: ~ assert.nil! b # this will throw an exception.~
- Inside source: true
*** True Line Result
assert.nil! b # this will throw an exception.
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ =end~
- Inside source: true
*** True Line Result
=end
** Processing line: ~ def nil! value, message = nil~
- Inside source: true
*** True Line Result
def nil! value, message = nil
** Processing line: ~ @assertion_performed = true~
- Inside source: true
*** True Line Result
@assertion_performed = true
** Processing line: ~ if !value.nil?~
- Inside source: true
*** True Line Result
if !value.nil?
** Processing line: ~ message = "#{value} was supposed to be nil, but wasn't.\n#{message}"~
- Inside source: true
*** True Line Result
message = "#{value} was supposed to be nil, but wasn't.\n#{message}"
** Processing line: ~ raise message~
- Inside source: true
*** True Line Result
raise message
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ nil~
- Inside source: true
*** True Line Result
nil
** 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: ~* attr_gtk.rb~
- Header detected.
*** True Line Result
*** True Line Result
* attr_gtk.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/attr_gtk.rb~
- Inside source: true
*** True Line Result
# ./dragon/attr_gtk.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: ~ # attr_gtk.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# attr_gtk.rb has been released under MIT (*only this file*).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @private~
- Inside source: true
*** True Line Result
# @private
** Processing line: ~ module AttrGTK~
- Inside source: true
*** True Line Result
module AttrGTK
** 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 keyboard~
- Inside source: true
*** True Line Result
def keyboard
** Processing line: ~ args.inputs.keyboard~
- Inside source: true
*** True Line Result
args.inputs.keyboard
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def grid~
- Inside source: true
*** True Line Result
def grid
** Processing line: ~ args.grid~
- Inside source: true
*** True Line Result
args.grid
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def state~
- Inside source: true
*** True Line Result
def state
** Processing line: ~ args.state~
- Inside source: true
*** True Line Result
args.state
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inputs~
- Inside source: true
*** True Line Result
def inputs
** Processing line: ~ args.inputs~
- Inside source: true
*** True Line Result
args.inputs
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def outputs~
- Inside source: true
*** True Line Result
def outputs
** Processing line: ~ args.outputs~
- Inside source: true
*** True Line Result
args.outputs
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def gtk~
- Inside source: true
*** True Line Result
def gtk
** Processing line: ~ args.gtk~
- Inside source: true
*** True Line Result
args.gtk
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def passes~
- Inside source: true
*** True Line Result
def passes
** Processing line: ~ args.passes~
- Inside source: true
*** True Line Result
args.passes
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def geometry~
- Inside source: true
*** True Line Result
def geometry
** Processing line: ~ args.geometry~
- Inside source: true
*** True Line Result
args.geometry
** 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: ~* attr_sprite.rb~
- Header detected.
*** True Line Result
*** True Line Result
* attr_sprite.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/attr_sprite.rb~
- Inside source: true
*** True Line Result
# ./dragon/attr_sprite.rb
** 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: ~ # attr_sprite.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# attr_sprite.rb has been released under MIT (*only this file*).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @private~
- Inside source: true
*** True Line Result
# @private
** Processing line: ~ module AttrRect~
- Inside source: true
*** True Line Result
module AttrRect
** Processing line: ~ def left~
- Inside source: true
*** True Line Result
def left
** Processing line: ~ @x~
- Inside source: true
*** True Line Result
@x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def right~
- Inside source: true
*** True Line Result
def right
** Processing line: ~ @x + @w~
- Inside source: true
*** True Line Result
@x + @w
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def bottom~
- Inside source: true
*** True Line Result
def bottom
** Processing line: ~ @y~
- Inside source: true
*** True Line Result
@y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def top~
- Inside source: true
*** True Line Result
def top
** Processing line: ~ @y + @h~
- Inside source: true
*** True Line Result
@y + @h
** 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: ~ module AttrSprite~
- Inside source: true
*** True Line Result
module AttrSprite
** Processing line: ~ include AttrRect~
- Inside source: true
*** True Line Result
include AttrRect
** Processing line: ~ include GTK::Geometry~
- Inside source: true
*** True Line Result
include GTK::Geometry
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ attr_accessor :x, :y, :w, :h, :path, :angle, :a, :r, :g, :b, :tile_x,~
- Inside source: true
*** True Line Result
attr_accessor :x, :y, :w, :h, :path, :angle, :a, :r, :g, :b, :tile_x,
** Processing line: ~ :tile_y, :tile_w, :tile_h, :flip_horizontally,~
- Inside source: true
*** True Line Result
:tile_y, :tile_w, :tile_h, :flip_horizontally,
** Processing line: ~ :flip_vertically, :angle_anchor_x, :angle_anchor_y, :id,~
- Inside source: true
*** True Line Result
:flip_vertically, :angle_anchor_x, :angle_anchor_y, :id,
** Processing line: ~ :source_x, :source_y, :source_w, :source_h~
- Inside source: true
*** True Line Result
:source_x, :source_y, :source_w, :source_h
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def primitive_marker~
- Inside source: true
*** True Line Result
def primitive_marker
** Processing line: ~ :sprite~
- Inside source: true
*** True Line Result
:sprite
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def sprite~
- Inside source: true
*** True Line Result
def sprite
** Processing line: ~ self~
- Inside source: true
*** True Line Result
self
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def x1~
- Inside source: true
*** True Line Result
def x1
** Processing line: ~ @x~
- Inside source: true
*** True Line Result
@x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def x1= value~
- Inside source: true
*** True Line Result
def x1= value
** Processing line: ~ @x = value~
- Inside source: true
*** True Line Result
@x = value
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def y1~
- Inside source: true
*** True Line Result
def y1
** Processing line: ~ @y~
- Inside source: true
*** True Line Result
@y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def y1= value~
- Inside source: true
*** True Line Result
def y1= value
** Processing line: ~ @y = value~
- Inside source: true
*** True Line Result
@y = 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: ~#+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: ~* console.rb~
- Header detected.
*** True Line Result
*** True Line Result
* console.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/console.rb~
- Inside source: true
*** True Line Result
# ./dragon/console.rb
** 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: ~ # console.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# console.rb has been released under MIT (*only this file*).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Contributors outside of DragonRuby who also hold Copyright:~
- Inside source: true
*** True Line Result
# Contributors outside of DragonRuby who also hold Copyright:
** Processing line: ~ # - Kevin Fischer: https://github.com/kfischer-okarin~
- Inside source: true
*** True Line Result
# - Kevin Fischer: https://github.com/kfischer-okarin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ module GTK~
- Inside source: true
*** True Line Result
module GTK
** Processing line: ~ class Console~
- Inside source: true
*** True Line Result
class Console
** Processing line: ~ attr_accessor :show_reason, :log, :logo, :background_color,~
- Inside source: true
*** True Line Result
attr_accessor :show_reason, :log, :logo, :background_color,
** Processing line: ~ :text_color, :animation_duration,~
- Inside source: true
*** True Line Result
:text_color, :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,~
- 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,~
- Inside source: true
*** True Line Result
:header_color, :archived_log, :last_log_lines, :last_log_lines_count,
** Processing line: ~ :suppress_left_arrow_behavior, :command_set_at,~
- Inside source: true
*** True Line Result
:suppress_left_arrow_behavior, :command_set_at,
** Processing line: ~ :toast_ids, :bottom,~
- Inside source: true
*** True Line Result
:toast_ids, :bottom,
** Processing line: ~ :font_style, :menu~
- Inside source: true
*** True Line Result
:font_style, :menu
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize~
- Inside source: true
*** True Line Result
def initialize
** Processing line: ~ @font_style = FontStyle.new(font: 'font.ttf', size_enum: -1, line_height: 1.1)~
- Inside source: true
*** True Line Result
@font_style = FontStyle.new(font: 'font.ttf', size_enum: -1, line_height: 1.1)
** Processing line: ~ @menu = Menu.new self~
- Inside source: true
*** True Line Result
@menu = Menu.new self
** Processing line: ~ @disabled = false~
- Inside source: true
*** True Line Result
@disabled = false
** Processing line: ~ @log_offset = 0~
- Inside source: true
*** True Line Result
@log_offset = 0
** Processing line: ~ @visible = false~
- Inside source: true
*** True Line Result
@visible = false
** Processing line: ~ @toast_ids = []~
- Inside source: true
*** True Line Result
@toast_ids = []
** Processing line: ~ @archived_log = []~
- Inside source: true
*** True Line Result
@archived_log = []
** Processing line: ~ @log = [ 'Console ready.' ]~
- Inside source: true
*** True Line Result
@log = [ 'Console ready.' ]
** Processing line: ~ @max_log_lines = 1000 # I guess...?~
- Inside source: true
*** True Line Result
@max_log_lines = 1000 # I guess...?
** Processing line: ~ @max_history = 1000 # I guess...?~
- Inside source: true
*** True Line Result
@max_history = 1000 # I guess...?
** Processing line: ~ @log_invocation_count = 0~
- Inside source: true
*** True Line Result
@log_invocation_count = 0
** Processing line: ~ @command_history = []~
- Inside source: true
*** True Line Result
@command_history = []
** Processing line: ~ @command_history_index = -1~
- Inside source: true
*** True Line Result
@command_history_index = -1
** Processing line: ~ @nonhistory_input = ''~
- Inside source: true
*** True Line Result
@nonhistory_input = ''
** Processing line: ~ @logo = 'console-logo.png'~
- Inside source: true
*** True Line Result
@logo = 'console-logo.png'
** Processing line: ~ @history_fname = 'console_history.txt'~
- Inside source: true
*** True Line Result
@history_fname = '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
@header_color = Color.new [100, 200, 220]
** Processing line: ~ @animation_duration = 1.seconds~
- Inside source: true
*** True Line Result
@animation_duration = 1.seconds
** Processing line: ~ @shown_at = -1~
- Inside source: true
*** True Line Result
@shown_at = -1
** Processing line: ~ load_history~
- Inside source: true
*** True Line Result
load_history
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def console_text_width~
- Inside source: true
*** True Line Result
def console_text_width
** Processing line: ~ @console_text_width ||= ($gtk.logical_width - 20).idiv(font_style.letter_size.x)~
- Inside source: true
*** True Line Result
@console_text_width ||= ($gtk.logical_width - 20).idiv(font_style.letter_size.x)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def save_history~
- Inside source: true
*** True Line Result
def save_history
** Processing line: ~ $gtk.ffi_file.storefile(@history_fname, @command_history.reverse.join("\n"))~
- Inside source: true
*** True Line Result
$gtk.ffi_file.storefile(@history_fname, @command_history.reverse.join("\n"))
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def load_history~
- Inside source: true
*** True Line Result
def load_history
** Processing line: ~ @command_history.clear~
- Inside source: true
*** True Line Result
@command_history.clear
** Processing line: ~ str = $gtk.ffi_file.loadfile(@history_fname)~
- Inside source: true
*** True Line Result
str = $gtk.ffi_file.loadfile(@history_fname)
** Processing line: ~ return if str.nil? # no history to load.~
- Inside source: true
*** True Line Result
return if str.nil? # no history to load.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ str.chomp!("\n") # Don't let endlines at the end cause extra blank line.~
- Inside source: true
*** True Line Result
str.chomp!("\n") # Don't let endlines at the end cause extra blank line.
** Processing line: ~ str.chomp!("\r")~
- Inside source: true
*** True Line Result
str.chomp!("\r")
** Processing line: ~ str.each_line { |s|~
- Inside source: true
*** True Line Result
str.each_line { |s|
** Processing line: ~ s.chomp!("\n")~
- Inside source: true
*** True Line Result
s.chomp!("\n")
** Processing line: ~ s.chomp!("\r")~
- Inside source: true
*** True Line Result
s.chomp!("\r")
** Processing line: ~ if s.length > 0~
- Inside source: true
*** True Line Result
if s.length > 0
** Processing line: ~ @command_history.unshift s~
- Inside source: true
*** True Line Result
@command_history.unshift s
** Processing line: ~ break if @command_history.length >= @max_history~
- Inside source: true
*** True Line Result
break if @command_history.length >= @max_history
** 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: ~ @command_history.uniq!~
- Inside source: true
*** True Line Result
@command_history.uniq!
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def disable~
- Inside source: true
*** True Line Result
def disable
** Processing line: ~ @disabled = true~
- Inside source: true
*** True Line Result
@disabled = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def enable~
- Inside source: true
*** True Line Result
def enable
** Processing line: ~ @disabled = false~
- Inside source: true
*** True Line Result
@disabled = false
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def addsprite obj~
- Inside source: true
*** True Line Result
def addsprite obj
** Processing line: ~ @log_invocation_count += 1~
- Inside source: true
*** True Line Result
@log_invocation_count += 1
** Processing line: ~ obj[:id] ||= "id_#{obj[:path]}_#{Time.now.to_i}".to_sym~
- Inside source: true
*** True Line Result
obj[:id] ||= "id_#{obj[:path]}_#{Time.now.to_i}".to_sym
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if @last_line_log_index &&~
- Inside source: true
*** True Line Result
if @last_line_log_index &&
** Processing line: ~ @last_sprite_line.is_a?(Hash) &&~
- Inside source: true
*** True Line Result
@last_sprite_line.is_a?(Hash) &&
** Processing line: ~ @last_sprite_line[:id] == obj[:id]~
- Inside source: true
*** True Line Result
@last_sprite_line[:id] == obj[:id]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @log[@last_line_log_index] = obj~
- Inside source: true
*** True Line Result
@log[@last_line_log_index] = obj
** 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: ~ @log << obj~
- Inside source: true
*** True Line Result
@log << obj
** Processing line: ~ @last_line_log_index = @log.length - 1~
- Inside source: true
*** True Line Result
@last_line_log_index = @log.length - 1
** Processing line: ~ @last_sprite_line = obj~
- Inside source: true
*** True Line Result
@last_sprite_line = obj
** 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 add_primitive obj~
- Inside source: true
*** True Line Result
def add_primitive obj
** Processing line: ~ if obj.is_a? Hash~
- Inside source: true
*** True Line Result
if obj.is_a? Hash
** Processing line: ~ addsprite obj~
- Inside source: true
*** True Line Result
addsprite obj
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ addtext obj~
- Inside source: true
*** True Line Result
addtext obj
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** 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 addtext obj~
- Inside source: true
*** True Line Result
def addtext obj
** Processing line: ~ @last_log_lines_count ||= 1~
- Inside source: true
*** True Line Result
@last_log_lines_count ||= 1
** Processing line: ~ @log_invocation_count += 1~
- Inside source: true
*** True Line Result
@log_invocation_count += 1
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ str = obj.to_s~
- Inside source: true
*** True Line Result
str = obj.to_s
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ log_lines = []~
- Inside source: true
*** True Line Result
log_lines = []
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ str.each_line do |s|~
- Inside source: true
*** True Line Result
str.each_line do |s|
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if log_lines == @last_log_lines~
- Inside source: true
*** True Line Result
if log_lines == @last_log_lines
** Processing line: ~ @last_log_lines_count += 1~
- Inside source: true
*** True Line Result
@last_log_lines_count += 1
** Processing line: ~ new_log_line_with_count = @last_log_lines.last + " (#{@last_log_lines_count})"~
- Inside source: true
*** True Line Result
new_log_line_with_count = @last_log_lines.last + " (#{@last_log_lines_count})"
** Processing line: ~ if log_lines.length > 1~
- Inside source: true
*** True Line Result
if log_lines.length > 1
** Processing line: ~ @log = @log[0..-(@log.length - log_lines.length)] + log_lines[0..-2] + [new_log_line_with_count]~
- Inside source: true
*** True Line Result
@log = @log[0..-(@log.length - log_lines.length)] + log_lines[0..-2] + [new_log_line_with_count]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ @log = @log[0..-2] + [new_log_line_with_count]~
- Inside source: true
*** True Line Result
@log = @log[0..-2] + [new_log_line_with_count]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** 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: ~ log_lines.each do |l|~
- Inside source: true
*** True Line Result
log_lines.each do |l|
** Processing line: ~ @log.shift if @log.length > @max_log_lines~
- Inside source: true
*** True Line Result
@log.shift if @log.length > @max_log_lines
** Processing line: ~ @log << l~
- Inside source: true
*** True Line Result
@log << l
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @last_log_lines_count = 1~
- Inside source: true
*** True Line Result
@last_log_lines_count = 1
** Processing line: ~ @last_log_lines = log_lines~
- Inside source: true
*** True Line Result
@last_log_lines = log_lines
** 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 ready?~
- Inside source: true
*** True Line Result
def ready?
** Processing line: ~ visible? && @toggled_at.elapsed?(@animation_duration, Kernel.global_tick_count)~
- Inside source: true
*** True Line Result
visible? && @toggled_at.elapsed?(@animation_duration, Kernel.global_tick_count)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def hidden?~
- Inside source: true
*** True Line Result
def hidden?
** Processing line: ~ !@visible~
- Inside source: true
*** True Line Result
!@visible
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def visible?~
- Inside source: true
*** True Line Result
def visible?
** Processing line: ~ @visible~
- Inside source: true
*** True Line Result
@visible
** 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 show reason = nil~
- Inside source: true
*** True Line Result
def show reason = nil
** Processing line: ~ @shown_at = Kernel.global_tick_count~
- Inside source: true
*** True Line Result
@shown_at = Kernel.global_tick_count
** Processing line: ~ @show_reason = reason~
- Inside source: true
*** True Line Result
@show_reason = reason
** Processing line: ~ toggle if hidden?~
- Inside source: true
*** True Line Result
toggle if hidden?
** 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 hide~
- Inside source: true
*** True Line Result
def hide
** Processing line: ~ if visible?~
- Inside source: true
*** True Line Result
if visible?
** Processing line: ~ toggle~
- Inside source: true
*** True Line Result
toggle
** Processing line: ~ @archived_log += @log~
- Inside source: true
*** True Line Result
@archived_log += @log
** Processing line: ~ if @archived_log.length > @max_log_lines~
- Inside source: true
*** True Line Result
if @archived_log.length > @max_log_lines
** Processing line: ~ @archived_log = @archived_log.drop(@archived_log.length - @max_log_lines)~
- Inside source: true
*** True Line Result
@archived_log = @archived_log.drop(@archived_log.length - @max_log_lines)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ @log.clear~
- Inside source: true
*** True Line Result
@log.clear
** Processing line: ~ @show_reason = nil~
- Inside source: true
*** True Line Result
@show_reason = nil
** Processing line: ~ clear_toast~
- Inside source: true
*** True Line Result
clear_toast
** 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 close~
- Inside source: true
*** True Line Result
def close
** Processing line: ~ hide~
- Inside source: true
*** True Line Result
hide
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def clear_toast~
- Inside source: true
*** True Line Result
def clear_toast
** Processing line: ~ @toasted_at = nil~
- Inside source: true
*** True Line Result
@toasted_at = nil
** Processing line: ~ @toast_duration = 0~
- Inside source: true
*** True Line Result
@toast_duration = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def toggle~
- Inside source: true
*** True Line Result
def toggle
** Processing line: ~ @visible = !@visible~
- Inside source: true
*** True Line Result
@visible = !@visible
** Processing line: ~ @toggled_at = Kernel.global_tick_count~
- Inside source: true
*** True Line Result
@toggled_at = Kernel.global_tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def currently_toasting?~
- Inside source: true
*** True Line Result
def currently_toasting?
** Processing line: ~ return false if hidden?~
- Inside source: true
*** True Line Result
return false if hidden?
** Processing line: ~ return false unless @show_reason == :toast~
- Inside source: true
*** True Line Result
return false unless @show_reason == :toast
** Processing line: ~ return false unless @toasted_at~
- Inside source: true
*** True Line Result
return false unless @toasted_at
** Processing line: ~ return false if @toasted_at.elapsed?(5.seconds, Kernel.global_tick_count)~
- Inside source: true
*** True Line Result
return false if @toasted_at.elapsed?(5.seconds, Kernel.global_tick_count)
** Processing line: ~ return true~
- Inside source: true
*** True Line Result
return true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def toast_extended id = nil, duration = nil, *messages~
- Inside source: true
*** True Line Result
def toast_extended id = nil, duration = nil, *messages
** Processing line: ~ if !id.is_a?(Symbol)~
- Inside source: true
*** True Line Result
if !id.is_a?(Symbol)
** Processing line: ~ raise <<-S~
- Inside source: true
*** True Line Result
raise <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ args.gtk.console.toast has the following signature:~
- Inside source: true
*** True Line Result
args.gtk.console.toast has the following signature:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def toast id, *messages~
- Inside source: true
*** True Line Result
def toast id, *messages
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ The id property uniquely defines the message and must be~
- Inside source: true
*** True Line Result
The id property uniquely defines the message and must be
** Processing line: ~ a symbol.~
- Inside source: true
*** True Line Result
a symbol.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ After that, you can provide all the objects you want to~
- Inside source: true
*** True Line Result
After that, you can provide all the objects you want to
** Processing line: ~ look at.~
- Inside source: true
*** True Line Result
look at.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Example:~
- Inside source: true
*** True Line Result
Example:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.gtk.console.toast :say_hello,~
- Inside source: true
*** True Line Result
args.gtk.console.toast :say_hello,
** Processing line: ~ \"Hello world.\",~
- Inside source: true
*** True Line Result
\"Hello world.\",
** Processing line: ~ args.state.tick_count~
- Inside source: true
*** True Line Result
args.state.tick_count
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Toast messages autohide after 5 seconds.~
- Inside source: true
*** True Line Result
Toast messages autohide after 5 seconds.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ If you need to look at something for longer, use~
- Inside source: true
*** True Line Result
If you need to look at something for longer, use
** Processing line: ~ args.gtk.console.perma_toast instead (which you can manually dismiss).~
- Inside source: true
*** True Line Result
args.gtk.console.perma_toast instead (which you can manually dismiss).
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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: ~ return if currently_toasting?~
- Inside source: true
*** True Line Result
return if currently_toasting?
** Processing line: ~ return if @toast_ids.include? id~
- Inside source: true
*** True Line Result
return if @toast_ids.include? id
** Processing line: ~ @toasted_at = Kernel.global_tick_count~
- Inside source: true
*** True Line Result
@toasted_at = Kernel.global_tick_count
** Processing line: ~ log_once_info :perma_toast_tip, "Use console.perma_toast to show the toast for longer."~
- Inside source: true
*** True Line Result
log_once_info :perma_toast_tip, "Use console.perma_toast to show the toast for longer."
** Processing line: ~ dwim_duration = 5.seconds~
- Inside source: true
*** True Line Result
dwim_duration = 5.seconds
** Processing line: ~ addtext "* toast :#{id}"~
- Inside source: true
*** True Line Result
addtext "* toast :#{id}"
** Processing line: ~ puts "* TOAST: :#{id}"~
- Inside source: true
*** True Line Result
puts "* TOAST: :#{id}"
** Processing line: ~ messages.each do |message|~
- Inside source: true
*** True Line Result
messages.each do |message|
** Processing line: ~ lines = message.to_s.wrapped_lines(self.console_text_width)~
- Inside source: true
*** True Line Result
lines = message.to_s.wrapped_lines(self.console_text_width)
** Processing line: ~ dwim_duration += lines.length.seconds~
- Inside source: true
*** True Line Result
dwim_duration += lines.length.seconds
** Processing line: ~ addtext "** #{message}"~
- Inside source: true
*** True Line Result
addtext "** #{message}"
** Processing line: ~ puts "** #{message}"~
- Inside source: true
*** True Line Result
puts "** #{message}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ show :toast~
- Inside source: true
*** True Line Result
show :toast
** Processing line: ~ @toast_duration += duration || dwim_duration~
- Inside source: true
*** True Line Result
@toast_duration += duration || dwim_duration
** Processing line: ~ @toast_ids << id~
- Inside source: true
*** True Line Result
@toast_ids << id
** Processing line: ~ set_command "$gtk.console.hide"~
- Inside source: true
*** True Line Result
set_command "$gtk.console.hide"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def perma_toast id = nil, messages~
- Inside source: true
*** True Line Result
def perma_toast id = nil, messages
** Processing line: ~ toast_extended id, 600.seconds, *messages~
- Inside source: true
*** True Line Result
toast_extended id, 600.seconds, *messages
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def toast id = nil, *messages~
- Inside source: true
*** True Line Result
def toast id = nil, *messages
** Processing line: ~ toast_extended id, nil, *messages~
- Inside source: true
*** True Line Result
toast_extended id, nil, *messages
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def console_toggle_keys~
- Inside source: true
*** True Line Result
def console_toggle_keys
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ :backtick!,~
- Inside source: true
*** True Line Result
:backtick!,
** Processing line: ~ :tilde!,~
- Inside source: true
*** True Line Result
:tilde!,
** Processing line: ~ :superscript_two!,~
- Inside source: true
*** True Line Result
:superscript_two!,
** Processing line: ~ :section_sign!,~
- Inside source: true
*** True Line Result
:section_sign!,
** Processing line: ~ :ordinal_indicator!,~
- Inside source: true
*** True Line Result
:ordinal_indicator!,
** Processing line: ~ :circumflex!,~
- Inside source: true
*** True Line Result
:circumflex!,
** 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 console_toggle_key_down? args~
- Inside source: true
*** True Line Result
def console_toggle_key_down? args
** Processing line: ~ args.inputs.keyboard.key_down.any? console_toggle_keys~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.any? console_toggle_keys
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def eval_the_set_command~
- Inside source: true
*** True Line Result
def eval_the_set_command
** Processing line: ~ cmd = current_input_str.strip~
- Inside source: true
*** True Line Result
cmd = current_input_str.strip
** Processing line: ~ if cmd.length != 0~
- Inside source: true
*** True Line Result
if cmd.length != 0
** Processing line: ~ @log_offset = 0~
- Inside source: true
*** True Line Result
@log_offset = 0
** Processing line: ~ prompt.clear~
- Inside source: true
*** True Line Result
prompt.clear
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @command_history.pop while @command_history.length >= @max_history~
- Inside source: true
*** True Line Result
@command_history.pop while @command_history.length >= @max_history
** Processing line: ~ @command_history.unshift cmd~
- Inside source: true
*** True Line Result
@command_history.unshift cmd
** Processing line: ~ @command_history_index = -1~
- Inside source: true
*** True Line Result
@command_history_index = -1
** Processing line: ~ @nonhistory_input = ''~
- Inside source: true
*** True Line Result
@nonhistory_input = ''
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if cmd == 'quit' || cmd == ':wq' || cmd == ':q!' || cmd == ':q' || cmd == ':wqa'~
- Inside source: true
*** True Line Result
if cmd == 'quit' || cmd == ':wq' || cmd == ':q!' || cmd == ':q' || cmd == ':wqa'
** Processing line: ~ $gtk.request_quit~
- Inside source: true
*** True Line Result
$gtk.request_quit
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ puts "-> #{cmd}"~
- Inside source: true
*** True Line Result
puts "-> #{cmd}"
** Processing line: ~ begin~
- Inside source: true
*** True Line Result
begin
** Processing line: ~ @last_command = cmd~
- Inside source: true
*** True Line Result
@last_command = cmd
** Processing line: ~ Kernel.eval("$results = (#{cmd})")~
- Inside source: true
*** True Line Result
Kernel.eval("$results = (#{cmd})")
** Processing line: ~ if $results.nil?~
- Inside source: true
*** True Line Result
if $results.nil?
** Processing line: ~ puts "=> nil"~
- Inside source: true
*** True Line Result
puts "=> nil"
** Processing line: ~ elsif $results == :console_silent_eval~
- Inside source: true
*** True Line Result
elsif $results == :console_silent_eval
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ puts "=> #{$results}"~
- Inside source: true
*** True Line Result
puts "=> #{$results}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ @last_command_errored = false~
- Inside source: true
*** True Line Result
@last_command_errored = false
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ string_e = "#{e}"~
- Inside source: true
*** True Line Result
string_e = "#{e}"
** Processing line: ~ puts "* EXCEPTION: #{e}"~
- Inside source: true
*** True Line Result
puts "* EXCEPTION: #{e}"
** Processing line: ~ log "* EXCEPTION: #{e}"~
- Inside source: true
*** True Line Result
log "* EXCEPTION: #{e}"
** Processing line: ~ @last_command_errored = true~
- Inside source: true
*** True Line Result
@last_command_errored = true
** Processing line: ~ if (string_e.include? "wrong number of arguments")~
- Inside source: true
*** True Line Result
if (string_e.include? "wrong number of arguments")
** Processing line: ~ method_name = (string_e.split ":")[0].gsub "'", ""~
- Inside source: true
*** True Line Result
method_name = (string_e.split ":")[0].gsub "'", ""
** Processing line: ~ results = (Kernel.docs_search method_name).strip~
- Inside source: true
*** True Line Result
results = (Kernel.docs_search method_name).strip
** Processing line: ~ if !results.include? "* DOCS: No results found."~
- Inside source: true
*** True Line Result
if !results.include? "* DOCS: No results found."
** Processing line: ~ puts results~
- Inside source: true
*** True Line Result
puts results
** Processing line: ~ log results~
- Inside source: true
*** True Line Result
log results
** 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: ~ 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 inputs_scroll_up_full? args~
- Inside source: true
*** True Line Result
def inputs_scroll_up_full? args
** Processing line: ~ return false if @disabled~
- Inside source: true
*** True Line Result
return false if @disabled
** Processing line: ~ args.inputs.keyboard.key_down.pageup ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.pageup ||
** Processing line: ~ (args.inputs.keyboard.key_up.b && args.inputs.keyboard.key_up.control)~
- Inside source: true
*** True Line Result
(args.inputs.keyboard.key_up.b && args.inputs.keyboard.key_up.control)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def scroll_to_bottom~
- Inside source: true
*** True Line Result
def scroll_to_bottom
** Processing line: ~ @log_offset = 0~
- Inside source: true
*** True Line Result
@log_offset = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def scroll_up_full~
- Inside source: true
*** True Line Result
def scroll_up_full
** Processing line: ~ @log_offset += lines_on_one_page~
- Inside source: true
*** True Line Result
@log_offset += lines_on_one_page
** Processing line: ~ @log_offset = @log.size if @log_offset > @log.size~
- Inside source: true
*** True Line Result
@log_offset = @log.size if @log_offset > @log.size
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inputs_scroll_up_half? args~
- Inside source: true
*** True Line Result
def inputs_scroll_up_half? args
** Processing line: ~ return false if @disabled~
- Inside source: true
*** True Line Result
return false if @disabled
** Processing line: ~ args.inputs.keyboard.ctrl_u~
- Inside source: true
*** True Line Result
args.inputs.keyboard.ctrl_u
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def scroll_up_half~
- Inside source: true
*** True Line Result
def scroll_up_half
** Processing line: ~ @log_offset += lines_on_one_page.idiv(2)~
- Inside source: true
*** True Line Result
@log_offset += lines_on_one_page.idiv(2)
** Processing line: ~ @log_offset = @log.size if @log_offset > @log.size~
- Inside source: true
*** True Line Result
@log_offset = @log.size if @log_offset > @log.size
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inputs_scroll_down_full? args~
- Inside source: true
*** True Line Result
def inputs_scroll_down_full? args
** Processing line: ~ return false if @disabled~
- Inside source: true
*** True Line Result
return false if @disabled
** Processing line: ~ args.inputs.keyboard.key_down.pagedown ||~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.pagedown ||
** Processing line: ~ (args.inputs.keyboard.key_up.f && args.inputs.keyboard.key_up.control)~
- Inside source: true
*** True Line Result
(args.inputs.keyboard.key_up.f && args.inputs.keyboard.key_up.control)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def scroll_down_full~
- Inside source: true
*** True Line Result
def scroll_down_full
** Processing line: ~ @log_offset -= lines_on_one_page~
- Inside source: true
*** True Line Result
@log_offset -= lines_on_one_page
** Processing line: ~ @log_offset = 0 if @log_offset < 0~
- Inside source: true
*** True Line Result
@log_offset = 0 if @log_offset < 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inputs_scroll_down_half? args~
- Inside source: true
*** True Line Result
def inputs_scroll_down_half? args
** Processing line: ~ return false if @disabled~
- Inside source: true
*** True Line Result
return false if @disabled
** Processing line: ~ args.inputs.keyboard.ctrl_d~
- Inside source: true
*** True Line Result
args.inputs.keyboard.ctrl_d
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inputs_clear_command? args~
- Inside source: true
*** True Line Result
def inputs_clear_command? args
** Processing line: ~ return false if @disabled~
- Inside source: true
*** True Line Result
return false if @disabled
** Processing line: ~ args.inputs.keyboard.escape || args.inputs.keyboard.ctrl_g~
- Inside source: true
*** True Line Result
args.inputs.keyboard.escape || args.inputs.keyboard.ctrl_g
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def scroll_down_half~
- Inside source: true
*** True Line Result
def scroll_down_half
** Processing line: ~ @log_offset -= lines_on_one_page.idiv(2)~
- Inside source: true
*** True Line Result
@log_offset -= lines_on_one_page.idiv(2)
** Processing line: ~ @log_offset = 0 if @log_offset < 0~
- Inside source: true
*** True Line Result
@log_offset = 0 if @log_offset < 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def mouse_wheel_scroll args~
- Inside source: true
*** True Line Result
def mouse_wheel_scroll args
** Processing line: ~ @inertia ||= 0~
- Inside source: true
*** True Line Result
@inertia ||= 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.mouse.wheel && args.inputs.mouse.wheel.y > 0~
- Inside source: true
*** True Line Result
if args.inputs.mouse.wheel && args.inputs.mouse.wheel.y > 0
** Processing line: ~ @inertia = 1~
- Inside source: true
*** True Line Result
@inertia = 1
** Processing line: ~ elsif args.inputs.mouse.wheel && args.inputs.mouse.wheel.y < 0~
- Inside source: true
*** True Line Result
elsif args.inputs.mouse.wheel && args.inputs.mouse.wheel.y < 0
** Processing line: ~ @inertia = -1~
- Inside source: true
*** True Line Result
@inertia = -1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.mouse.click~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click
** Processing line: ~ @inertia = 0~
- Inside source: true
*** True Line Result
@inertia = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return if @inertia == 0~
- Inside source: true
*** True Line Result
return if @inertia == 0
** Processing line: ~~
- 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~
- Inside source: true
*** True Line Result
if @inertia > 0
** Processing line: ~ @log_offset -= 1~
- Inside source: true
*** True Line Result
@log_offset -= 1
** Processing line: ~ elsif @inertia < 0~
- Inside source: true
*** True Line Result
elsif @inertia < 0
** Processing line: ~ @log_offset += 1~
- Inside source: true
*** True Line Result
@log_offset += 1
** 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 @inertia.abs < 0.01~
- Inside source: true
*** True Line Result
if @inertia.abs < 0.01
** Processing line: ~ @inertia = 0~
- Inside source: true
*** True Line Result
@inertia = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if @log_offset > @log.size~
- Inside source: true
*** True Line Result
if @log_offset > @log.size
** Processing line: ~ @log_offset = @log.size~
- Inside source: true
*** True Line Result
@log_offset = @log.size
** Processing line: ~ elsif @log_offset < 0~
- Inside source: true
*** True Line Result
elsif @log_offset < 0
** Processing line: ~ @log_offset = 0~
- Inside source: true
*** True Line Result
@log_offset = 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 process_inputs args~
- Inside source: true
*** True Line Result
def process_inputs args
** Processing line: ~ if console_toggle_key_down? args~
- Inside source: true
*** True Line Result
if console_toggle_key_down? args
** Processing line: ~ args.inputs.text.clear~
- Inside source: true
*** True Line Result
args.inputs.text.clear
** Processing line: ~ toggle~
- Inside source: true
*** True Line Result
toggle
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return unless visible?~
- Inside source: true
*** True Line Result
return unless visible?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.inputs.text.each { |str| prompt << str }~
- Inside source: true
*** True Line Result
args.inputs.text.each { |str| prompt << str }
** Processing line: ~ args.inputs.text.clear~
- Inside source: true
*** True Line Result
args.inputs.text.clear
** Processing line: ~ mouse_wheel_scroll args~
- Inside source: true
*** True Line Result
mouse_wheel_scroll args
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @log_offset = 0 if @log_offset < 0~
- Inside source: true
*** True Line Result
@log_offset = 0 if @log_offset < 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.keyboard.key_down.enter~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.enter
** Processing line: ~ eval_the_set_command~
- Inside source: true
*** True Line Result
eval_the_set_command
** Processing line: ~ elsif args.inputs.keyboard.key_down.v~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_down.v
** Processing line: ~ if args.inputs.keyboard.key_down.control || args.inputs.keyboard.key_down.meta~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.control || args.inputs.keyboard.key_down.meta
** Processing line: ~ prompt << $gtk.ffi_misc.getclipboard~
- Inside source: true
*** True Line Result
prompt << $gtk.ffi_misc.getclipboard
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ elsif args.inputs.keyboard.key_down.up~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_down.up
** Processing line: ~ if @command_history_index == -1~
- Inside source: true
*** True Line Result
if @command_history_index == -1
** Processing line: ~ @nonhistory_input = current_input_str~
- Inside source: true
*** True Line Result
@nonhistory_input = current_input_str
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ if @command_history_index < (@command_history.length - 1)~
- Inside source: true
*** True Line Result
if @command_history_index < (@command_history.length - 1)
** Processing line: ~ @command_history_index += 1~
- Inside source: true
*** True Line Result
@command_history_index += 1
** Processing line: ~ self.current_input_str = @command_history[@command_history_index].dup~
- Inside source: true
*** True Line Result
self.current_input_str = @command_history[@command_history_index].dup
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ elsif args.inputs.keyboard.key_down.down~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_down.down
** Processing line: ~ if @command_history_index == 0~
- Inside source: true
*** True Line Result
if @command_history_index == 0
** Processing line: ~ @command_history_index = -1~
- Inside source: true
*** True Line Result
@command_history_index = -1
** Processing line: ~ self.current_input_str = @nonhistory_input~
- Inside source: true
*** True Line Result
self.current_input_str = @nonhistory_input
** Processing line: ~ @nonhistory_input = ''~
- Inside source: true
*** True Line Result
@nonhistory_input = ''
** Processing line: ~ elsif @command_history_index > 0~
- Inside source: true
*** True Line Result
elsif @command_history_index > 0
** Processing line: ~ @command_history_index -= 1~
- Inside source: true
*** True Line Result
@command_history_index -= 1
** Processing line: ~ self.current_input_str = @command_history[@command_history_index].dup~
- Inside source: true
*** True Line Result
self.current_input_str = @command_history[@command_history_index].dup
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ elsif inputs_scroll_up_full? args~
- Inside source: true
*** True Line Result
elsif inputs_scroll_up_full? args
** Processing line: ~ scroll_up_full~
- Inside source: true
*** True Line Result
scroll_up_full
** Processing line: ~ elsif inputs_scroll_down_full? args~
- Inside source: true
*** True Line Result
elsif inputs_scroll_down_full? args
** Processing line: ~ scroll_down_full~
- Inside source: true
*** True Line Result
scroll_down_full
** Processing line: ~ elsif inputs_scroll_up_half? args~
- Inside source: true
*** True Line Result
elsif inputs_scroll_up_half? args
** Processing line: ~ scroll_up_half~
- Inside source: true
*** True Line Result
scroll_up_half
** Processing line: ~ elsif inputs_scroll_down_half? args~
- Inside source: true
*** True Line Result
elsif inputs_scroll_down_half? args
** Processing line: ~ scroll_down_half~
- Inside source: true
*** True Line Result
scroll_down_half
** Processing line: ~ elsif inputs_clear_command? args~
- Inside source: true
*** True Line Result
elsif inputs_clear_command? args
** Processing line: ~ prompt.clear~
- Inside source: true
*** True Line Result
prompt.clear
** Processing line: ~ @command_history_index = -1~
- Inside source: true
*** True Line Result
@command_history_index = -1
** Processing line: ~ @nonhistory_input = ''~
- Inside source: true
*** True Line Result
@nonhistory_input = ''
** Processing line: ~ elsif args.inputs.keyboard.key_down.backspace || args.inputs.keyboard.key_down.delete~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_down.backspace || args.inputs.keyboard.key_down.delete
** Processing line: ~ prompt.backspace~
- Inside source: true
*** True Line Result
prompt.backspace
** Processing line: ~ elsif args.inputs.keyboard.key_down.tab~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_down.tab
** Processing line: ~ prompt.autocomplete~
- Inside source: true
*** True Line Result
prompt.autocomplete
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ args.inputs.keyboard.key_down.clear~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_down.clear
** Processing line: ~ args.inputs.keyboard.key_up.clear~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_up.clear
** Processing line: ~ args.inputs.keyboard.key_held.clear~
- Inside source: true
*** True Line Result
args.inputs.keyboard.key_held.clear
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def write_primitive_and_return_offset(args, left, y, str, archived: false)~
- Inside source: true
*** True Line Result
def write_primitive_and_return_offset(args, left, y, str, archived: false)
** Processing line: ~ if str.is_a?(Hash)~
- Inside source: true
*** True Line Result
if str.is_a?(Hash)
** Processing line: ~ padding = 10~
- Inside source: true
*** True Line Result
padding = 10
** Processing line: ~ args.outputs.reserved << [left + 10, y + 5, str[:w], str[:h], str[:path]].sprite~
- Inside source: true
*** True Line Result
args.outputs.reserved << [left + 10, y + 5, str[:w], str[:h], str[:path]].sprite
** Processing line: ~ return str[:h] + padding~
- Inside source: true
*** True Line Result
return str[:h] + padding
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ write_line args, left, y, str, archived: archived~
- Inside source: true
*** True Line Result
write_line args, left, y, str, archived: archived
** Processing line: ~ return line_height_px~
- Inside source: true
*** True Line Result
return line_height_px
** 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 write_line(args, left, y, str, archived: false)~
- Inside source: true
*** True Line Result
def write_line(args, left, y, str, archived: false)
** Processing line: ~ color = color_for_log_entry(str)~
- Inside source: true
*** True Line Result
color = color_for_log_entry(str)
** Processing line: ~ color = color.mult_alpha(0.5) if archived~
- Inside source: true
*** True Line Result
color = color.mult_alpha(0.5) if archived
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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
args.outputs.reserved << font_style.label(x: left.shift_right(10), y: y, text: str, color: color)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def should_tick?~
- Inside source: true
*** True Line Result
def should_tick?
** Processing line: ~ return false if !@toggled_at~
- Inside source: true
*** True Line Result
return false if !@toggled_at
** Processing line: ~ return false if slide_progress == 0~
- Inside source: true
*** True Line Result
return false if slide_progress == 0
** Processing line: ~ return false if @disabled~
- Inside source: true
*** True Line Result
return false if @disabled
** Processing line: ~ return visible?~
- Inside source: true
*** True Line Result
return visible?
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render args~
- Inside source: true
*** True Line Result
def render args
** Processing line: ~ return if !@toggled_at~
- Inside source: true
*** True Line Result
return if !@toggled_at
** Processing line: ~ return if slide_progress == 0~
- Inside source: true
*** True Line Result
return if slide_progress == 0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @bottom = top - (h * slide_progress)~
- Inside source: true
*** True Line Result
@bottom = top - (h * slide_progress)
** Processing line: ~ args.outputs.reserved << [left, @bottom, w, h, *@background_color.mult_alpha(slide_progress)].solid~
- Inside source: true
*** True Line Result
args.outputs.reserved << [left, @bottom, w, h, *@background_color.mult_alpha(slide_progress)].solid
** Processing line: ~ args.outputs.reserved << [right.shift_left(110), @bottom.shift_up(630), 100, 100, @logo, 0, (80.0 * slide_progress).to_i].sprite~
- Inside source: true
*** True Line Result
args.outputs.reserved << [right.shift_left(110), @bottom.shift_up(630), 100, 100, @logo, 0, (80.0 * slide_progress).to_i].sprite
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ y = @bottom + 2 # just give us a little padding at the bottom.~
- Inside source: true
*** True Line Result
y = @bottom + 2 # just give us a little padding at the bottom.
** Processing line: ~ prompt.render args, x: left.shift_right(10), y: y~
- Inside source: true
*** True Line Result
prompt.render args, x: left.shift_right(10), y: y
** Processing line: ~ y += line_height_px * 1.5~
- Inside source: true
*** True Line Result
y += line_height_px * 1.5
** Processing line: ~ args.outputs.reserved << line(y: y, color: @text_color.mult_alpha(slide_progress))~
- Inside source: true
*** True Line Result
args.outputs.reserved << line(y: y, color: @text_color.mult_alpha(slide_progress))
** Processing line: ~ y += line_height_px.to_f / 2.0~
- Inside source: true
*** True Line Result
y += line_height_px.to_f / 2.0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ ((@log.size - @log_offset) - 1).downto(0) do |idx|~
- Inside source: true
*** True Line Result
((@log.size - @log_offset) - 1).downto(0) do |idx|
** Processing line: ~ offset_after_write = write_primitive_and_return_offset args, left, y, @log[idx]~
- Inside source: true
*** True Line Result
offset_after_write = write_primitive_and_return_offset args, left, y, @log[idx]
** Processing line: ~ y += offset_after_write~
- Inside source: true
*** True Line Result
y += offset_after_write
** Processing line: ~ break if y > top~
- Inside source: true
*** True Line Result
break if y > top
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # past log separator~
- Inside source: true
*** True Line Result
# past log separator
** Processing line: ~ args.outputs.reserved << line(y: y + line_height_px.half, color: @text_color.mult_alpha(0.25 * slide_progress))~
- Inside source: true
*** True Line Result
args.outputs.reserved << line(y: y + line_height_px.half, color: @text_color.mult_alpha(0.25 * slide_progress))
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ y += line_height_px~
- Inside source: true
*** True Line Result
y += line_height_px
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ ((@archived_log.size - @log_offset) - 1).downto(0) do |idx|~
- Inside source: true
*** True Line Result
((@archived_log.size - @log_offset) - 1).downto(0) do |idx|
** Processing line: ~ offset_after_write = write_primitive_and_return_offset args, left, y, @archived_log[idx], archived: true~
- Inside source: true
*** True Line Result
offset_after_write = write_primitive_and_return_offset args, left, y, @archived_log[idx], archived: true
** Processing line: ~ y += offset_after_write~
- Inside source: true
*** True Line Result
y += offset_after_write
** Processing line: ~ break if y > top~
- Inside source: true
*** True Line Result
break if y > top
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ render_log_offset args~
- Inside source: true
*** True Line Result
render_log_offset args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_log_offset args~
- Inside source: true
*** True Line Result
def render_log_offset args
** Processing line: ~ return if @log_offset <= 0~
- Inside source: true
*** True Line Result
return if @log_offset <= 0
** Processing line: ~ args.outputs.reserved << font_style.label(~
- Inside source: true
*** True Line Result
args.outputs.reserved << font_style.label(
** Processing line: ~ x: right.shift_left(5),~
- Inside source: true
*** True Line Result
x: right.shift_left(5),
** Processing line: ~ y: top.shift_down(5 + line_height_px),~
- Inside source: true
*** True Line Result
y: top.shift_down(5 + line_height_px),
** Processing line: ~ text: "[#{@log_offset}/#{@log.size}]",~
- Inside source: true
*** True Line Result
text: "[#{@log_offset}/#{@log.size}]",
** Processing line: ~ color: @text_color,~
- Inside source: true
*** True Line Result
color: @text_color,
** Processing line: ~ alignment_enum: 2~
- Inside source: true
*** True Line Result
alignment_enum: 2
** 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 include_error_marker? text~
- Inside source: true
*** True Line Result
def include_error_marker? text
** Processing line: ~ include_any_words?(text.gsub('OutputsDeprecated', ''), error_markers)~
- Inside source: true
*** True Line Result
include_any_words?(text.gsub('OutputsDeprecated', ''), error_markers)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def error_markers~
- Inside source: true
*** True Line Result
def error_markers
** Processing line: ~ ["exception", "error", "undefined method", "failed", "syntax", "deprecated"]~
- Inside source: true
*** True Line Result
["exception", "error", "undefined method", "failed", "syntax", "deprecated"]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def include_subdued_markers? text~
- Inside source: true
*** True Line Result
def include_subdued_markers? text
** Processing line: ~ include_any_words? text, subdued_markers~
- Inside source: true
*** True Line Result
include_any_words? text, subdued_markers
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def include_any_words? text, words~
- Inside source: true
*** True Line Result
def include_any_words? text, words
** Processing line: ~ words.any? { |w| text.downcase.include?(w) && !text.downcase.include?(":#{w}") }~
- Inside source: true
*** True Line Result
words.any? { |w| text.downcase.include?(w) && !text.downcase.include?(":#{w}") }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def subdued_markers~
- Inside source: true
*** True Line Result
def subdued_markers
** Processing line: ~ ["reloaded", "exported the"]~
- Inside source: true
*** True Line Result
["reloaded", "exported the"]
** 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 visible? &&~
- Inside source: true
*** True Line Result
if visible? &&
** Processing line: ~ @show_reason == :toast &&~
- Inside source: true
*** True Line Result
@show_reason == :toast &&
** Processing line: ~ @toasted_at &&~
- Inside source: true
*** True Line Result
@toasted_at &&
** Processing line: ~ @toasted_at.elapsed?(@toast_duration, Kernel.global_tick_count)~
- Inside source: true
*** True Line Result
@toasted_at.elapsed?(@toast_duration, Kernel.global_tick_count)
** Processing line: ~ hide~
- Inside source: true
*** True Line Result
hide
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if !$gtk.paused? && visible? && (show_reason == :exception || show_reason == :exception_on_load)~
- Inside source: true
*** True Line Result
if !$gtk.paused? && visible? && (show_reason == :exception || show_reason == :exception_on_load)
** Processing line: ~ hide~
- Inside source: true
*** True Line Result
hide
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if $gtk.files_reloaded.length > 0~
- Inside source: true
*** True Line Result
if $gtk.files_reloaded.length > 0
** Processing line: ~ clear_toast~
- Inside source: true
*** True Line Result
clear_toast
** Processing line: ~ @toast_ids.clear~
- Inside source: true
*** True Line Result
@toast_ids.clear
** 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: ~ begin~
- Inside source: true
*** True Line Result
begin
** Processing line: ~ return if @disabled~
- Inside source: true
*** True Line Result
return if @disabled
** Processing line: ~ render args~
- Inside source: true
*** True Line Result
render args
** Processing line: ~ process_inputs args~
- Inside source: true
*** True Line Result
process_inputs args
** Processing line: ~ return unless should_tick?~
- Inside source: true
*** True Line Result
return unless should_tick?
** Processing line: ~ calc args~
- Inside source: true
*** True Line Result
calc args
** Processing line: ~ prompt.tick~
- Inside source: true
*** True Line Result
prompt.tick
** Processing line: ~ menu.tick args~
- Inside source: true
*** True Line Result
menu.tick args
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ begin~
- Inside source: true
*** True Line Result
begin
** Processing line: ~ puts "#{e}"~
- Inside source: true
*** True Line Result
puts "#{e}"
** Processing line: ~ puts "* FATAL: The GTK::Console console threw an unhandled exception and has been reset. You should report this exception (along with reproduction steps) to DragonRuby."~
- Inside source: true
*** True Line Result
puts "* FATAL: The GTK::Console console threw an unhandled exception and has been reset. You should report this exception (along with reproduction steps) to DragonRuby."
** Processing line: ~ rescue~
- Inside source: true
*** True Line Result
rescue
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ @disabled = true~
- Inside source: true
*** True Line Result
@disabled = true
** Processing line: ~ $stdout.puts e~
- Inside source: true
*** True Line Result
$stdout.puts e
** Processing line: ~ $stdout.puts "* FATAL: The GTK::Console console threw an unhandled exception and has been reset. You should report this exception (along with reproduction steps) to DragonRuby."~
- Inside source: true
*** True Line Result
$stdout.puts "* FATAL: The GTK::Console console threw an unhandled exception and has been reset. You should report this exception (along with reproduction steps) to DragonRuby."
** 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 set_command_with_history_silent command, histories, show_reason = nil~
- Inside source: true
*** True Line Result
def set_command_with_history_silent command, histories, show_reason = nil
** Processing line: ~ set_command_extended command: command, histories: histories, show_reason: show_reason~
- Inside source: true
*** True Line Result
set_command_extended command: command, histories: histories, show_reason: show_reason
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def defaults_set_command_extended~
- Inside source: true
*** True Line Result
def defaults_set_command_extended
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ command: "puts 'Hello World'",~
- Inside source: true
*** True Line Result
command: "puts 'Hello World'",
** Processing line: ~ histories: [],~
- Inside source: true
*** True Line Result
histories: [],
** Processing line: ~ show_reason: nil,~
- Inside source: true
*** True Line Result
show_reason: nil,
** Processing line: ~ force: false~
- Inside source: true
*** True Line Result
force: false
** 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 set_command_extended opts~
- Inside source: true
*** True Line Result
def set_command_extended opts
** Processing line: ~ opts = defaults_set_command_extended.merge opts~
- Inside source: true
*** True Line Result
opts = defaults_set_command_extended.merge opts
** Processing line: ~ @command_history.concat opts[:histories]~
- Inside source: true
*** True Line Result
@command_history.concat opts[:histories]
** Processing line: ~ @command_history << opts[:command] if @command_history[-1] != opts[:command]~
- Inside source: true
*** True Line Result
@command_history << opts[:command] if @command_history[-1] != opts[:command]
** Processing line: ~ self.current_input_str = opts[:command] if @command_set_at != Kernel.global_tick_count || opts[:force]~
- Inside source: true
*** True Line Result
self.current_input_str = opts[:command] if @command_set_at != Kernel.global_tick_count || opts[:force]
** Processing line: ~ @command_set_at = Kernel.global_tick_count~
- Inside source: true
*** True Line Result
@command_set_at = Kernel.global_tick_count
** Processing line: ~ @command_history_index = -1~
- Inside source: true
*** True Line Result
@command_history_index = -1
** Processing line: ~ save_history~
- Inside source: true
*** True Line Result
save_history
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def set_command_with_history command, histories, show_reason = nil~
- Inside source: true
*** True Line Result
def set_command_with_history command, histories, show_reason = nil
** Processing line: ~ set_command_with_history_silent command, histories, show_reason~
- Inside source: true
*** True Line Result
set_command_with_history_silent command, histories, show_reason
** Processing line: ~ show show_reason~
- Inside source: true
*** True Line Result
show show_reason
** 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 set_command command, show_reason = nil~
- Inside source: true
*** True Line Result
def set_command command, show_reason = nil
** Processing line: ~ set_command_silent command, show_reason~
- Inside source: true
*** True Line Result
set_command_silent command, show_reason
** Processing line: ~ show show_reason~
- Inside source: true
*** True Line Result
show show_reason
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def set_command_silent command, show_reason = nil~
- Inside source: true
*** True Line Result
def set_command_silent command, show_reason = nil
** Processing line: ~ set_command_with_history_silent command, [], show_reason~
- Inside source: true
*** True Line Result
set_command_with_history_silent command, [], show_reason
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def set_system_command command, show_reason = nil~
- Inside source: true
*** True Line Result
def set_system_command command, show_reason = nil
** Processing line: ~ if $gtk.platform == "Mac OS X"~
- Inside source: true
*** True Line Result
if $gtk.platform == "Mac OS X"
** Processing line: ~ set_command_silent "$gtk.system \"open #{command}\""~
- Inside source: true
*** True Line Result
set_command_silent "$gtk.system \"open #{command}\""
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ set_command_silent "$gtk.system \"start #{command}\""~
- Inside source: true
*** True Line Result
set_command_silent "$gtk.system \"start #{command}\""
** 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 system_command~
- Inside source: true
*** True Line Result
def system_command
** Processing line: ~ if $gtk.platform == "Mac OS X"~
- Inside source: true
*** True Line Result
if $gtk.platform == "Mac OS X"
** Processing line: ~ "open"~
- Inside source: true
*** True Line Result
"open"
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ "start"~
- Inside source: true
*** True Line Result
"start"
** 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: ~ private~
- Inside source: true
*** True Line Result
private
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def w~
- Inside source: true
*** True Line Result
def w
** Processing line: ~ $gtk.logical_width~
- Inside source: true
*** True Line Result
$gtk.logical_width
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def h~
- Inside source: true
*** True Line Result
def h
** Processing line: ~ $gtk.logical_height~
- Inside source: true
*** True Line Result
$gtk.logical_height
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # methods top; left; right~
- Inside source: true
*** True Line Result
# methods top; left; right
** Processing line: ~ # Forward to grid~
- Inside source: true
*** True Line Result
# Forward to grid
** Processing line: ~ %i[top left right].each do |method|~
- Inside source: true
*** True Line Result
%i[top left right].each do |method|
** Processing line: ~ define_method method do~
- Inside source: true
*** True Line Result
define_method method do
** Processing line: ~ $gtk.args.grid.send(method)~
- Inside source: true
*** True Line Result
$gtk.args.grid.send(method)
** 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 line_height_px~
- Inside source: true
*** True Line Result
def line_height_px
** Processing line: ~ font_style.line_height_px~
- Inside source: true
*** True Line Result
font_style.line_height_px
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def lines_on_one_page~
- Inside source: true
*** True Line Result
def lines_on_one_page
** Processing line: ~ (h - 4).idiv(line_height_px)~
- Inside source: true
*** True Line Result
(h - 4).idiv(line_height_px)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def line(y:, color:)~
- Inside source: true
*** True Line Result
def line(y:, color:)
** Processing line: ~ [left, y, right, y, *color].line~
- Inside source: true
*** True Line Result
[left, y, right, y, *color].line
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def include_row_marker? log_entry~
- Inside source: true
*** True Line Result
def include_row_marker? log_entry
** Processing line: ~ log_entry[0] == "|"~
- Inside source: true
*** True Line Result
log_entry[0] == "|"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def include_header_marker? log_entry~
- Inside source: true
*** True Line Result
def include_header_marker? log_entry
** Processing line: ~ return false if (log_entry.strip.include? ".rb")~
- Inside source: true
*** True Line Result
return false if (log_entry.strip.include? ".rb")
** Processing line: ~ (log_entry.start_with? "* ") ||~
- Inside source: true
*** True Line Result
(log_entry.start_with? "* ") ||
** Processing line: ~ (log_entry.start_with? "** ") ||~
- Inside source: true
*** True Line Result
(log_entry.start_with? "** ") ||
** Processing line: ~ (log_entry.start_with? "*** ") ||~
- Inside source: true
*** True Line Result
(log_entry.start_with? "*** ") ||
** Processing line: ~ (log_entry.start_with? "**** ")~
- Inside source: true
*** True Line Result
(log_entry.start_with? "**** ")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- 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 include_row_marker? log_entry~
- Inside source: true
*** True Line Result
if include_row_marker? log_entry
** Processing line: ~ @text_color~
- Inside source: true
*** True Line Result
@text_color
** Processing line: ~ elsif include_error_marker? log_entry~
- Inside source: true
*** True Line Result
elsif include_error_marker? log_entry
** Processing line: ~ @error_color~
- Inside source: true
*** True Line Result
@error_color
** Processing line: ~ elsif include_subdued_markers? log_entry~
- Inside source: true
*** True Line Result
elsif include_subdued_markers? log_entry
** Processing line: ~ @text_color.mult_alpha(0.5)~
- Inside source: true
*** True Line Result
@text_color.mult_alpha(0.5)
** Processing line: ~ elsif include_header_marker? log_entry~
- Inside source: true
*** True Line Result
elsif include_header_marker? log_entry
** Processing line: ~ @header_color~
- Inside source: true
*** True Line Result
@header_color
** Processing line: ~ elsif log_entry.start_with?("====")~
- Inside source: true
*** True Line Result
elsif log_entry.start_with?("====")
** Processing line: ~ @header_color~
- Inside source: true
*** True Line Result
@header_color
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ @text_color~
- Inside source: true
*** True Line Result
@text_color
** 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 prompt~
- Inside source: true
*** True Line Result
def prompt
** Processing line: ~ @prompt ||= Prompt.new(font_style: font_style, text_color: @text_color, console_text_width: console_text_width)~
- Inside source: true
*** True Line Result
@prompt ||= Prompt.new(font_style: font_style, text_color: @text_color, console_text_width: console_text_width)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def current_input_str~
- Inside source: true
*** True Line Result
def current_input_str
** Processing line: ~ prompt.current_input_str~
- Inside source: true
*** True Line Result
prompt.current_input_str
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def current_input_str=(str)~
- Inside source: true
*** True Line Result
def current_input_str=(str)
** Processing line: ~ prompt.current_input_str = str~
- Inside source: true
*** True Line Result
prompt.current_input_str = str
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def clear~
- Inside source: true
*** True Line Result
def clear
** Processing line: ~ @archived_log.clear~
- Inside source: true
*** True Line Result
@archived_log.clear
** Processing line: ~ @log.clear~
- Inside source: true
*** True Line Result
@log.clear
** Processing line: ~ @prompt.clear~
- Inside source: true
*** True Line Result
@prompt.clear
** Processing line: ~ :console_silent_eval~
- Inside source: true
*** True Line Result
:console_silent_eval
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def slide_progress~
- Inside source: true
*** True Line Result
def slide_progress
** Processing line: ~ return 0 if !@toggled_at~
- Inside source: true
*** True Line Result
return 0 if !@toggled_at
** Processing line: ~ if visible?~
- Inside source: true
*** True Line Result
if visible?
** Processing line: ~ @slide_progress = @toggled_at.global_ease(@animation_duration, :flip, :quint, :flip)~
- Inside source: true
*** True Line Result
@slide_progress = @toggled_at.global_ease(@animation_duration, :flip, :quint, :flip)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ @slide_progress = @toggled_at.global_ease(@animation_duration, :flip, :quint)~
- Inside source: true
*** True Line Result
@slide_progress = @toggled_at.global_ease(@animation_duration, :flip, :quint)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ @slide_progress~
- Inside source: true
*** True Line Result
@slide_progress
** 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: ~* console_color.rb~
- Header detected.
*** True Line Result
*** True Line Result
* console_color.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/console_color.rb~
- Inside source: true
*** True Line Result
# ./dragon/console_color.rb
** 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: ~ # console_color.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# console_color.rb has been released under MIT (*only this file*).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Contributors outside of DragonRuby who also hold Copyright:~
- Inside source: true
*** True Line Result
# Contributors outside of DragonRuby who also hold Copyright:
** Processing line: ~ # - Kevin Fischer: https://github.com/kfischer-okarin~
- Inside source: true
*** True Line Result
# - Kevin Fischer: https://github.com/kfischer-okarin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ module GTK~
- Inside source: true
*** True Line Result
module GTK
** Processing line: ~ class Console~
- Inside source: true
*** True Line Result
class Console
** Processing line: ~ class Color~
- Inside source: true
*** True Line Result
class Color
** Processing line: ~ def initialize(color)~
- Inside source: true
*** True Line Result
def initialize(color)
** Processing line: ~ @color = color~
- Inside source: true
*** True Line Result
@color = color
** Processing line: ~ @color << 255 if @color.size == 3~
- Inside source: true
*** True Line Result
@color << 255 if @color.size == 3
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def mult_alpha(alpha_modifier)~
- Inside source: true
*** True Line Result
def mult_alpha(alpha_modifier)
** Processing line: ~ Color.new [@color[0], @color[1], @color[2], (@color[3].to_f * alpha_modifier).to_i]~
- Inside source: true
*** True Line Result
Color.new [@color[0], @color[1], @color[2], (@color[3].to_f * alpha_modifier).to_i]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Support splat operator~
- Inside source: true
*** True Line Result
# Support splat operator
** Processing line: ~ def to_a~
- Inside source: true
*** True Line Result
def to_a
** Processing line: ~ @color~
- Inside source: true
*** True Line Result
@color
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def to_h~
- Inside source: true
*** True Line Result
def to_h
** Processing line: ~ { r: @color[0], g: @color[1], b: @color[2], a: @color[3] }~
- Inside source: true
*** True Line Result
{ r: @color[0], g: @color[1], b: @color[2], a: @color[3] }
** 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: ~ 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: ~* console_font_style.rb~
- Header detected.
*** True Line Result
*** True Line Result
* console_font_style.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/console_font_style.rb~
- Inside source: true
*** True Line Result
# ./dragon/console_font_style.rb
** 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: ~ # console_font_style.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# console_font_style.rb has been released under MIT (*only this file*).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Contributors outside of DragonRuby who also hold Copyright:~
- Inside source: true
*** True Line Result
# Contributors outside of DragonRuby who also hold Copyright:
** Processing line: ~ # - Kevin Fischer: https://github.com/kfischer-okarin~
- Inside source: true
*** True Line Result
# - Kevin Fischer: https://github.com/kfischer-okarin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ module GTK~
- Inside source: true
*** True Line Result
module GTK
** Processing line: ~ class Console~
- Inside source: true
*** True Line Result
class Console
** Processing line: ~ class FontStyle~
- Inside source: true
*** True Line Result
class FontStyle
** Processing line: ~ attr_reader :font, :size_enum, :line_height~
- Inside source: true
*** True Line Result
attr_reader :font, :size_enum, :line_height
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize(font:, size_enum:, line_height:)~
- Inside source: true
*** True Line Result
def initialize(font:, size_enum:, line_height:)
** Processing line: ~ @font = font~
- Inside source: true
*** True Line Result
@font = font
** Processing line: ~ @size_enum = size_enum~
- Inside source: true
*** True Line Result
@size_enum = size_enum
** Processing line: ~ @line_height = line_height~
- Inside source: true
*** True Line Result
@line_height = line_height
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def letter_size~
- Inside source: true
*** True Line Result
def letter_size
** Processing line: ~ @letter_size ||= $gtk.calcstringbox 'W', size_enum, font~
- Inside source: true
*** True Line Result
@letter_size ||= $gtk.calcstringbox 'W', size_enum, font
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def line_height_px~
- Inside source: true
*** True Line Result
def line_height_px
** Processing line: ~ @line_height_px ||= letter_size.y * line_height~
- Inside source: true
*** True Line Result
@line_height_px ||= letter_size.y * line_height
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def label(x:, y:, text:, color:, alignment_enum: 0)~
- Inside source: true
*** True Line Result
def label(x:, y:, text:, color:, alignment_enum: 0)
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: x,~
- Inside source: true
*** True Line Result
x: x,
** Processing line: ~ y: y.shift_up(line_height_px), # !!! FIXME: remove .shift_up(line_height_px) when we fix coordinate origin on labels.~
- Inside source: true
*** True Line Result
y: y.shift_up(line_height_px), # !!! FIXME: remove .shift_up(line_height_px) when we fix coordinate origin on labels.
** Processing line: ~ text: text,~
- Inside source: true
*** True Line Result
text: text,
** Processing line: ~ font: font,~
- Inside source: true
*** True Line Result
font: font,
** Processing line: ~ size_enum: size_enum,~
- Inside source: true
*** True Line Result
size_enum: size_enum,
** Processing line: ~ alignment_enum: alignment_enum,~
- Inside source: true
*** True Line Result
alignment_enum: alignment_enum,
** Processing line: ~ **color.to_h,~
- Inside source: true
*** True Line Result
**color.to_h,
** Processing line: ~ }.label~
- Inside source: true
*** True Line Result
}.label
** 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: ~ 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: ~* console_menu.rb~
- Header detected.
*** True Line Result
*** True Line Result
* console_menu.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/console_menu.rb~
- Inside source: true
*** True Line Result
# ./dragon/console_menu.rb
** 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: ~ # console_menu.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# console_menu.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 Console~
- Inside source: true
*** True Line Result
class Console
** Processing line: ~ class Menu~
- Inside source: true
*** True Line Result
class Menu
** Processing line: ~ attr_accessor :buttons~
- Inside source: true
*** True Line Result
attr_accessor :buttons
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize console~
- Inside source: true
*** True Line Result
def initialize console
** Processing line: ~ @console = console~
- Inside source: true
*** True Line Result
@console = console
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def record_clicked~
- Inside source: true
*** True Line Result
def record_clicked
** Processing line: ~ $recording.start 100~
- Inside source: true
*** True Line Result
$recording.start 100
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def replay_clicked~
- Inside source: true
*** True Line Result
def replay_clicked
** Processing line: ~ $replay.start 'replay.txt'~
- Inside source: true
*** True Line Result
$replay.start 'replay.txt'
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def reset_clicked~
- Inside source: true
*** True Line Result
def reset_clicked
** Processing line: ~ $gtk.reset~
- Inside source: true
*** True Line Result
$gtk.reset
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def scroll_up_clicked~
- Inside source: true
*** True Line Result
def scroll_up_clicked
** Processing line: ~ @console.scroll_up_half~
- Inside source: true
*** True Line Result
@console.scroll_up_half
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def scroll_down_clicked~
- Inside source: true
*** True Line Result
def scroll_down_clicked
** Processing line: ~ @console.scroll_down_half~
- Inside source: true
*** True Line Result
@console.scroll_down_half
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def show_menu_clicked~
- Inside source: true
*** True Line Result
def show_menu_clicked
** Processing line: ~ @menu_shown = :visible~
- Inside source: true
*** True Line Result
@menu_shown = :visible
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def close_clicked~
- Inside source: true
*** True Line Result
def close_clicked
** Processing line: ~ @menu_shown = :hidden~
- Inside source: true
*** True Line Result
@menu_shown = :hidden
** Processing line: ~ @console.hide~
- Inside source: true
*** True Line Result
@console.hide
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def hide_menu_clicked~
- Inside source: true
*** True Line Result
def hide_menu_clicked
** Processing line: ~ @menu_shown = :hidden~
- Inside source: true
*** True Line Result
@menu_shown = :hidden
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def framerate_diagnostics_clicked~
- Inside source: true
*** True Line Result
def framerate_diagnostics_clicked
** Processing line: ~ @console.scroll_to_bottom~
- Inside source: true
*** True Line Result
@console.scroll_to_bottom
** Processing line: ~ $gtk.framerate_diagnostics~
- Inside source: true
*** True Line Result
$gtk.framerate_diagnostics
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def itch_wizard_clicked~
- Inside source: true
*** True Line Result
def itch_wizard_clicked
** Processing line: ~ @console.scroll_to_bottom~
- Inside source: true
*** True Line Result
@console.scroll_to_bottom
** Processing line: ~ $wizards.itch.start~
- Inside source: true
*** True Line Result
$wizards.itch.start
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def docs_clicked~
- Inside source: true
*** True Line Result
def docs_clicked
** Processing line: ~ @console.scroll_to_bottom~
- Inside source: true
*** True Line Result
@console.scroll_to_bottom
** Processing line: ~ log Kernel.docs_classes~
- Inside source: true
*** True Line Result
log Kernel.docs_classes
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def scroll_end_clicked~
- Inside source: true
*** True Line Result
def scroll_end_clicked
** Processing line: ~ @console.scroll_to_bottom~
- Inside source: true
*** True Line Result
@console.scroll_to_bottom
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def custom_buttons~
- Inside source: true
*** True Line Result
def custom_buttons
** 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 tick args~
- Inside source: true
*** True Line Result
def tick args
** Processing line: ~ return unless @console.visible?~
- Inside source: true
*** True Line Result
return unless @console.visible?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @menu_shown ||= :hidden~
- Inside source: true
*** True Line Result
@menu_shown ||= :hidden
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if $gtk.production~
- Inside source: true
*** True Line Result
if $gtk.production
** Processing line: ~ @buttons = [~
- Inside source: true
*** True Line Result
@buttons = [
** Processing line: ~ (button id: :record, row: 0, col: 9, text: "record gameplay", method: :record_clicked),~
- Inside source: true
*** True Line Result
(button id: :record, row: 0, col: 9, text: "record gameplay", method: :record_clicked),
** Processing line: ~ (button id: :replay, row: 0, col: 10, text: "start replay", method: :replay_clicked),~
- Inside source: true
*** True Line Result
(button id: :replay, row: 0, col: 10, text: "start replay", method: :replay_clicked),
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ elsif @menu_shown == :hidden~
- Inside source: true
*** True Line Result
elsif @menu_shown == :hidden
** Processing line: ~ @buttons = [~
- Inside source: true
*** True Line Result
@buttons = [
** Processing line: ~ (button id: :show_menu, row: 0, col: 10, text: "show menu", method: :show_menu_clicked),~
- Inside source: true
*** True Line Result
(button id: :show_menu, row: 0, col: 10, text: "show menu", method: :show_menu_clicked),
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ @buttons = [~
- Inside source: true
*** True Line Result
@buttons = [
** Processing line: ~ (button id: :scroll_up, row: 0, col: 6, text: "scroll up", method: :scroll_up_clicked),~
- Inside source: true
*** True Line Result
(button id: :scroll_up, row: 0, col: 6, text: "scroll up", method: :scroll_up_clicked),
** Processing line: ~ (button id: :scroll_down, row: 0, col: 7, text: "scroll down", method: :scroll_down_clicked),~
- Inside source: true
*** True Line Result
(button id: :scroll_down, row: 0, col: 7, text: "scroll down", method: :scroll_down_clicked),
** Processing line: ~ (button id: :scroll_down, row: 0, col: 8, text: "scroll end", method: :scroll_end_clicked),~
- Inside source: true
*** True Line Result
(button id: :scroll_down, row: 0, col: 8, text: "scroll end", method: :scroll_end_clicked),
** Processing line: ~ (button id: :close, row: 0, col: 9, text: "close console", method: :close_clicked),~
- Inside source: true
*** True Line Result
(button id: :close, row: 0, col: 9, text: "close console", method: :close_clicked),
** Processing line: ~ (button id: :hide, row: 0, col: 10, text: "hide menu", method: :hide_menu_clicked),~
- Inside source: true
*** True Line Result
(button id: :hide, row: 0, col: 10, text: "hide menu", method: :hide_menu_clicked),
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ (button id: :record, row: 1, col: 7, text: "record gameplay", method: :record_clicked),~
- Inside source: true
*** True Line Result
(button id: :record, row: 1, col: 7, text: "record gameplay", method: :record_clicked),
** Processing line: ~ (button id: :replay, row: 1, col: 8, text: "start replay", method: :replay_clicked),~
- Inside source: true
*** True Line Result
(button id: :replay, row: 1, col: 8, text: "start replay", method: :replay_clicked),
** Processing line: ~ (button id: :record, row: 1, col: 9, text: "framerate diagnostics", method: :framerate_diagnostics_clicked),~
- Inside source: true
*** True Line Result
(button id: :record, row: 1, col: 9, text: "framerate diagnostics", method: :framerate_diagnostics_clicked),
** Processing line: ~ (button id: :reset, row: 1, col: 10, text: "reset game", method: :reset_clicked),~
- Inside source: true
*** True Line Result
(button id: :reset, row: 1, col: 10, text: "reset game", method: :reset_clicked),
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ (button id: :reset, row: 2, col: 10, text: "docs", method: :docs_clicked),~
- Inside source: true
*** True Line Result
(button id: :reset, row: 2, col: 10, text: "docs", method: :docs_clicked),
** Processing line: ~ (button id: :reset, row: 2, col: 9, text: "itch wizard", method: :itch_wizard_clicked),~
- Inside source: true
*** True Line Result
(button id: :reset, row: 2, col: 9, text: "itch wizard", method: :itch_wizard_clicked),
** Processing line: ~ *custom_buttons~
- Inside source: true
*** True Line Result
*custom_buttons
** 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: ~ # render~
- Inside source: true
*** True Line Result
# render
** Processing line: ~ args.outputs.reserved << @buttons.map { |b| b[:primitives] }~
- Inside source: true
*** True Line Result
args.outputs.reserved << @buttons.map { |b| b[:primitives] }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # inputs~
- Inside source: true
*** True Line Result
# inputs
** Processing line: ~ if args.inputs.mouse.click~
- Inside source: true
*** True Line Result
if args.inputs.mouse.click
** Processing line: ~ clicked = @buttons.find { |b| args.inputs.mouse.inside_rect? b[:rect] }~
- Inside source: true
*** True Line Result
clicked = @buttons.find { |b| args.inputs.mouse.inside_rect? b[:rect] }
** Processing line: ~ if clicked~
- Inside source: true
*** True Line Result
if clicked
** Processing line: ~ send clicked[:method]~
- Inside source: true
*** True Line Result
send clicked[:method]
** 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 rect_for_layout row, col~
- Inside source: true
*** True Line Result
def rect_for_layout row, col
** Processing line: ~ col_width = 100~
- Inside source: true
*** True Line Result
col_width = 100
** Processing line: ~ row_height = 50~
- Inside source: true
*** True Line Result
row_height = 50
** Processing line: ~ col_margin = 5~
- Inside source: true
*** True Line Result
col_margin = 5
** Processing line: ~ row_margin = 5~
- Inside source: true
*** True Line Result
row_margin = 5
** Processing line: ~ x = (col_margin + (col * col_width) + (col * col_margin))~
- Inside source: true
*** True Line Result
x = (col_margin + (col * col_width) + (col * col_margin))
** Processing line: ~ y = (row_margin + (row * row_height) + (row * row_margin) + row_height).from_top~
- Inside source: true
*** True Line Result
y = (row_margin + (row * row_height) + (row * row_margin) + row_height).from_top
** Processing line: ~ { x: x, y: y, w: col_width, h: row_height }~
- Inside source: true
*** True Line Result
{ x: x, y: y, w: col_width, h: row_height }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def button args~
- Inside source: true
*** True Line Result
def button args
** Processing line: ~ id, row, col, text, method = args[:id], args[:row], args[:col], args[:text], args[:method]~
- Inside source: true
*** True Line Result
id, row, col, text, method = args[:id], args[:row], args[:col], args[:text], args[:method]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ font_height = @console.font_style.line_height_px.half~
- Inside source: true
*** True Line Result
font_height = @console.font_style.line_height_px.half
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ id: id,~
- Inside source: true
*** True Line Result
id: id,
** Processing line: ~ rect: (rect_for_layout row, col),~
- Inside source: true
*** True Line Result
rect: (rect_for_layout row, col),
** Processing line: ~ text: text,~
- Inside source: true
*** True Line Result
text: text,
** Processing line: ~ method: method~
- Inside source: true
*** True Line Result
method: method
** Processing line: ~ }.let do |entity|~
- Inside source: true
*** True Line Result
}.let do |entity|
** Processing line: ~ primitives = []~
- Inside source: true
*** True Line Result
primitives = []
** Processing line: ~ primitives << entity[:rect].merge(a: 164).solid~
- Inside source: true
*** True Line Result
primitives << entity[:rect].merge(a: 164).solid
** Processing line: ~ primitives << entity[:rect].merge(r: 255, g: 255, b: 255).border~
- Inside source: true
*** True Line Result
primitives << entity[:rect].merge(r: 255, g: 255, b: 255).border
** Processing line: ~ primitives << text.wrapped_lines(5)~
- Inside source: true
*** True Line Result
primitives << text.wrapped_lines(5)
** Processing line: ~ .map_with_index do |l, i|~
- Inside source: true
*** True Line Result
.map_with_index do |l, i|
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ entity[:rect][:x] + entity[:rect][:w].half,~
- Inside source: true
*** True Line Result
entity[:rect][:x] + entity[:rect][:w].half,
** Processing line: ~ entity[:rect][:y] + entity[:rect][:h].half + font_height - (i * (font_height + 2)),~
- Inside source: true
*** True Line Result
entity[:rect][:y] + entity[:rect][:h].half + font_height - (i * (font_height + 2)),
** Processing line: ~ l, -3, 1, 255, 255, 255~
- Inside source: true
*** True Line Result
l, -3, 1, 255, 255, 255
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ end.labels~
- Inside source: true
*** True Line Result
end.labels
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ entity.merge(primitives: primitives)~
- Inside source: true
*** True Line Result
entity.merge(primitives: primitives)
** 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 serialize~
- Inside source: true
*** True Line Result
def serialize
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ not_supported: "#{self}"~
- Inside source: true
*** True Line Result
not_supported: "#{self}"
** 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~
- 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: ~* console_prompt.rb~
- Header detected.
*** True Line Result
*** True Line Result
* console_prompt.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/console_prompt.rb~
- Inside source: true
*** True Line Result
# ./dragon/console_prompt.rb
** 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: ~ # console_prompt.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# console_prompt.rb has been released under MIT (*only this file*).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Contributors outside of DragonRuby who also hold Copyright:~
- Inside source: true
*** True Line Result
# Contributors outside of DragonRuby who also hold Copyright:
** Processing line: ~ # - Kevin Fischer: https://github.com/kfischer-okarin~
- Inside source: true
*** True Line Result
# - Kevin Fischer: https://github.com/kfischer-okarin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ module GTK~
- Inside source: true
*** True Line Result
module GTK
** Processing line: ~ class Console~
- Inside source: true
*** True Line Result
class Console
** Processing line: ~ class Prompt~
- Inside source: true
*** True Line Result
class Prompt
** Processing line: ~ attr_accessor :current_input_str, :font_style, :console_text_width, :last_input_str, :last_input_str_changed~
- Inside source: true
*** True Line Result
attr_accessor :current_input_str, :font_style, :console_text_width, :last_input_str, :last_input_str_changed
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize(font_style:, text_color:, console_text_width:)~
- Inside source: true
*** True Line Result
def initialize(font_style:, text_color:, console_text_width:)
** Processing line: ~ @prompt = '-> '~
- Inside source: true
*** True Line Result
@prompt = '-> '
** Processing line: ~ @current_input_str = ''~
- Inside source: true
*** True Line Result
@current_input_str = ''
** Processing line: ~ @font_style = font_style~
- Inside source: true
*** True Line Result
@font_style = font_style
** Processing line: ~ @text_color = text_color~
- Inside source: true
*** True Line Result
@text_color = text_color
** Processing line: ~ @cursor_color = Color.new [187, 21, 6]~
- Inside source: true
*** True Line Result
@cursor_color = Color.new [187, 21, 6]
** Processing line: ~ @console_text_width = console_text_width~
- Inside source: true
*** True Line Result
@console_text_width = console_text_width
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @last_autocomplete_prefix = nil~
- Inside source: true
*** True Line Result
@last_autocomplete_prefix = nil
** Processing line: ~ @next_candidate_index = 0~
- Inside source: true
*** True Line Result
@next_candidate_index = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def <<(str)~
- Inside source: true
*** True Line Result
def <<(str)
** Processing line: ~ @current_input_str << str~
- Inside source: true
*** True Line Result
@current_input_str << str
** Processing line: ~ @current_input_changed_at = Kernel.global_tick_count~
- Inside source: true
*** True Line Result
@current_input_changed_at = Kernel.global_tick_count
** Processing line: ~ reset_autocomplete~
- Inside source: true
*** True Line Result
reset_autocomplete
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def backspace~
- Inside source: true
*** True Line Result
def backspace
** Processing line: ~ @current_input_str.chop!~
- Inside source: true
*** True Line Result
@current_input_str.chop!
** Processing line: ~ reset_autocomplete~
- Inside source: true
*** True Line Result
reset_autocomplete
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def clear~
- Inside source: true
*** True Line Result
def clear
** Processing line: ~ @current_input_str = ''~
- Inside source: true
*** True Line Result
@current_input_str = ''
** Processing line: ~ reset_autocomplete~
- Inside source: true
*** True Line Result
reset_autocomplete
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def autocomplete~
- Inside source: true
*** True Line Result
def autocomplete
** Processing line: ~ if !@last_autocomplete_prefix~
- Inside source: true
*** True Line Result
if !@last_autocomplete_prefix
** Processing line: ~ @last_autocomplete_prefix = calc_autocomplete_prefix~
- Inside source: true
*** True Line Result
@last_autocomplete_prefix = calc_autocomplete_prefix
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts "* AUTOCOMPLETE CANDIDATES: #{current_input_str}.."~
- Inside source: true
*** True Line Result
puts "* AUTOCOMPLETE CANDIDATES: #{current_input_str}.."
** Processing line: ~ pretty_print_strings_as_table method_candidates(@last_autocomplete_prefix)~
- Inside source: true
*** True Line Result
pretty_print_strings_as_table method_candidates(@last_autocomplete_prefix)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ candidates = method_candidates(@last_autocomplete_prefix)~
- Inside source: true
*** True Line Result
candidates = method_candidates(@last_autocomplete_prefix)
** Processing line: ~ return if candidates.empty?~
- Inside source: true
*** True Line Result
return if candidates.empty?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ candidate = candidates[@next_candidate_index]~
- Inside source: true
*** True Line Result
candidate = candidates[@next_candidate_index]
** Processing line: ~ candidate = candidate[0..-2] + " = " if candidate.end_with? '='~
- Inside source: true
*** True Line Result
candidate = candidate[0..-2] + " = " if candidate.end_with? '='
** Processing line: ~ @next_candidate_index += 1~
- Inside source: true
*** True Line Result
@next_candidate_index += 1
** Processing line: ~ @next_candidate_index = 0 if @next_candidate_index >= candidates.length~
- Inside source: true
*** True Line Result
@next_candidate_index = 0 if @next_candidate_index >= candidates.length
** Processing line: ~ self.current_input_str = display_autocomplete_candidate(candidate)~
- Inside source: true
*** True Line Result
self.current_input_str = display_autocomplete_candidate(candidate)
** 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 pretty_print_strings_as_table items~
- Inside source: true
*** True Line Result
def pretty_print_strings_as_table items
** Processing line: ~ if items.length == 0~
- Inside source: true
*** True Line Result
if items.length == 0
** Processing line: ~ puts <<-S.strip~
- Inside source: true
*** True Line Result
puts <<-S.strip
** Processing line: ~ +--------+~
- Inside source: true
*** True Line Result
+--------+
** Processing line: ~ | (none) |~
- Inside source: true
*** True Line Result
| (none) |
** Processing line: ~ +--------+~
- Inside source: true
*** True Line Result
+--------+
** Processing line: ~ S~
- Inside source: true
*** True Line Result
S
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ # figure out the largest string~
- Inside source: true
*** True Line Result
# figure out the largest string
** Processing line: ~ string_width = items.sort_by { |c| -c.to_s.length }.first~
- Inside source: true
*** True Line Result
string_width = items.sort_by { |c| -c.to_s.length }.first
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # add spacing to each side of the string which represents the cell width~
- Inside source: true
*** True Line Result
# add spacing to each side of the string which represents the cell width
** Processing line: ~ cell_width = string_width.length + 2~
- Inside source: true
*** True Line Result
cell_width = string_width.length + 2
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # add spacing to each side of the cell to represent the column width~
- Inside source: true
*** True Line Result
# add spacing to each side of the cell to represent the column width
** Processing line: ~ column_width = cell_width + 2~
- Inside source: true
*** True Line Result
column_width = cell_width + 2
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # determine the max number of columns that can fit on the screen~
- Inside source: true
*** True Line Result
# determine the max number of columns that can fit on the screen
** Processing line: ~ columns = @console_text_width.idiv column_width~
- Inside source: true
*** True Line Result
columns = @console_text_width.idiv column_width
** Processing line: ~ columns = items.length if items.length < columns~
- Inside source: true
*** True Line Result
columns = items.length if items.length < columns
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # partition the original list of items into a string to be printed~
- Inside source: true
*** True Line Result
# partition the original list of items into a string to be printed
** Processing line: ~ items.each_slice(columns).each_with_index do |cells, i|~
- 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~
- Inside source: true
*** True Line Result
pretty_print_row_seperator 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
pretty_print_row cells, string_width, cell_width, column_width, columns
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ pretty_print_row_seperator string_width, cell_width, column_width, columns~
- Inside source: true
*** True Line Result
pretty_print_row_seperator string_width, cell_width, column_width, columns
** 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 pretty_print_row cells, string_width, cell_width, column_width, columns~
- Inside source: true
*** True Line Result
def pretty_print_row cells, string_width, cell_width, column_width, columns
** Processing line: ~ # if the number of cells doesn't match the number of columns, then pad the array with empty values~
- Inside source: true
*** True Line Result
# if the number of cells doesn't match the number of columns, then pad the array with empty values
** Processing line: ~ cells += (columns - cells.length).map { "" }~
- Inside source: true
*** True Line Result
cells += (columns - cells.length).map { "" }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # right align each cell value~
- Inside source: true
*** True Line Result
# right align each cell value
** Processing line: ~ formated_row = "|" + cells.map do |c|~
- Inside source: true
*** True Line Result
formated_row = "|" + cells.map do |c|
** Processing line: ~ "#{" " * (string_width.length - c.length) } #{c} |"~
- Inside source: true
*** True Line Result
"#{" " * (string_width.length - c.length) } #{c} |"
** Processing line: ~ end.join~
- Inside source: true
*** True Line Result
end.join
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # remove seperators between empty values~
- Inside source: true
*** True Line Result
# remove seperators between empty values
** Processing line: ~ formated_row = formated_row.gsub(" | ", " ")~
- Inside source: true
*** True Line Result
formated_row = formated_row.gsub(" | ", " ")
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ puts formated_row~
- Inside source: true
*** True Line Result
puts formated_row
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def pretty_print_row_seperator string_width, cell_width, column_width, columns~
- Inside source: true
*** True Line Result
def pretty_print_row_seperator string_width, cell_width, column_width, columns
** Processing line: ~ # this is a joint: +--------~
- Inside source: true
*** True Line Result
# this is a joint: +--------
** Processing line: ~ column_joint = "+#{"-" * cell_width}"~
- Inside source: true
*** True Line Result
column_joint = "+#{"-" * cell_width}"
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # multiple joints create a row seperator: +----+----+~
- Inside source: true
*** True Line Result
# multiple joints create a row seperator: +----+----+
** Processing line: ~ puts (column_joint * columns) + "+"~
- Inside source: true
*** True Line Result
puts (column_joint * columns) + "+"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render(args, x:, y:)~
- Inside source: true
*** True Line Result
def render(args, x:, y:)
** Processing line: ~ args.outputs.reserved << font_style.label(x: x, y: y, text: "#{@prompt}#{current_input_str}", color: @text_color)~
- Inside source: true
*** True Line Result
args.outputs.reserved << font_style.label(x: x, y: y, text: "#{@prompt}#{current_input_str}", color: @text_color)
** Processing line: ~ args.outputs.reserved << font_style.label(x: x - 2, y: y + 3, text: (" " * (@prompt.length + current_input_str.length)) + "|", color: @cursor_color)~
- Inside source: true
*** True Line Result
args.outputs.reserved << font_style.label(x: x - 2, y: y + 3, text: (" " * (@prompt.length + current_input_str.length)) + "|", color: @cursor_color)
** 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: ~ if (@current_input_changed_at) &&~
- Inside source: true
*** True Line Result
if (@current_input_changed_at) &&
** Processing line: ~ (@current_input_changed_at < Kernel.global_tick_count) &&~
- Inside source: true
*** True Line Result
(@current_input_changed_at < Kernel.global_tick_count) &&
** Processing line: ~ (@last_input_str != @current_input_str)~
- Inside source: true
*** True Line Result
(@last_input_str != @current_input_str)
** Processing line: ~ @last_input_str_changed = true~
- Inside source: true
*** True Line Result
@last_input_str_changed = true
** Processing line: ~ @last_input_str = "#{@current_input_str}"~
- Inside source: true
*** True Line Result
@last_input_str = "#{@current_input_str}"
** Processing line: ~ @current_input_changed_at = nil~
- Inside source: true
*** True Line Result
@current_input_changed_at = nil
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ @last_input_str_changed = false~
- Inside source: true
*** True Line Result
@last_input_str_changed = false
** 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: ~ private~
- Inside source: true
*** True Line Result
private
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def last_period_index~
- Inside source: true
*** True Line Result
def last_period_index
** Processing line: ~ current_input_str.rindex('.')~
- Inside source: true
*** True Line Result
current_input_str.rindex('.')
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_autocomplete_prefix~
- Inside source: true
*** True Line Result
def calc_autocomplete_prefix
** Processing line: ~ if last_period_index~
- Inside source: true
*** True Line Result
if last_period_index
** Processing line: ~ current_input_str[(last_period_index + 1)..-1]~
- Inside source: true
*** True Line Result
current_input_str[(last_period_index + 1)..-1]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ current_input_str~
- Inside source: true
*** True Line Result
current_input_str
** 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 current_object~
- Inside source: true
*** True Line Result
def current_object
** Processing line: ~ return Kernel unless last_period_index~
- Inside source: true
*** True Line Result
return Kernel unless last_period_index
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Kernel.eval(current_input_str[0...last_period_index])~
- Inside source: true
*** True Line Result
Kernel.eval(current_input_str[0...last_period_index])
** Processing line: ~ rescue NameError~
- Inside source: true
*** True Line Result
rescue NameError
** 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 method_candidates(prefix)~
- Inside source: true
*** True Line Result
def method_candidates(prefix)
** Processing line: ~ current_object.autocomplete_methods.map(&:to_s).select { |m| m.start_with? prefix }~
- Inside source: true
*** True Line Result
current_object.autocomplete_methods.map(&:to_s).select { |m| m.start_with? prefix }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def display_autocomplete_candidate(candidate)~
- Inside source: true
*** True Line Result
def display_autocomplete_candidate(candidate)
** Processing line: ~ if last_period_index~
- Inside source: true
*** True Line Result
if last_period_index
** Processing line: ~ @current_input_str[0..last_period_index] + candidate.to_s~
- Inside source: true
*** True Line Result
@current_input_str[0..last_period_index] + candidate.to_s
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ candidate.to_s~
- Inside source: true
*** True Line Result
candidate.to_s
** 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 reset_autocomplete~
- Inside source: true
*** True Line Result
def reset_autocomplete
** Processing line: ~ @last_autocomplete_prefix = nil~
- Inside source: true
*** True Line Result
@last_autocomplete_prefix = nil
** Processing line: ~ @next_candidate_index = 0~
- Inside source: true
*** True Line Result
@next_candidate_index = 0
** 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: ~ 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: ~* controller.rb~
- Header detected.
*** True Line Result
*** True Line Result
* controller.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/controller.rb~
- Inside source: true
*** True Line Result
# ./dragon/controller.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: ~ # controller.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# controller.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: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ class Controller~
- Inside source: true
*** True Line Result
class Controller
** Processing line: ~ # Access to keys that have been pressed down.~
- Inside source: true
*** True Line Result
# Access to keys that have been pressed down.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Controller::Keys]~
- Inside source: true
*** True Line Result
# @return [Controller::Keys]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_reader :key_down~
- Inside source: true
*** True Line Result
attr_reader :key_down
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Access to keys that have been released up.~
- Inside source: true
*** True Line Result
# Access to keys that have been released up.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Controller::Keys]~
- Inside source: true
*** True Line Result
# @return [Controller::Keys]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_reader :key_up~
- Inside source: true
*** True Line Result
attr_reader :key_up
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Access to keys that have been held down.~
- Inside source: true
*** True Line Result
# Access to keys that have been held down.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Controller::Keys]~
- Inside source: true
*** True Line Result
# @return [Controller::Keys]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_reader :key_held~
- Inside source: true
*** True Line Result
attr_reader :key_held
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_accessor :left_analog_x_raw,~
- Inside source: true
*** True Line Result
attr_accessor :left_analog_x_raw,
** Processing line: ~ :left_analog_y_raw,~
- Inside source: true
*** True Line Result
:left_analog_y_raw,
** Processing line: ~ :left_analog_x_perc,~
- Inside source: true
*** True Line Result
:left_analog_x_perc,
** Processing line: ~ :left_analog_y_perc,~
- Inside source: true
*** True Line Result
:left_analog_y_perc,
** Processing line: ~ :right_analog_x_raw,~
- Inside source: true
*** True Line Result
:right_analog_x_raw,
** Processing line: ~ :right_analog_y_raw,~
- Inside source: true
*** True Line Result
:right_analog_y_raw,
** Processing line: ~ :right_analog_x_perc,~
- Inside source: true
*** True Line Result
:right_analog_x_perc,
** Processing line: ~ :right_analog_y_perc~
- Inside source: true
*** True Line Result
:right_analog_y_perc
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize~
- Inside source: true
*** True Line Result
def initialize
** Processing line: ~ @key_down = Controller::Keys.new~
- Inside source: true
*** True Line Result
@key_down = Controller::Keys.new
** Processing line: ~ @key_up = Controller::Keys.new~
- Inside source: true
*** True Line Result
@key_up = Controller::Keys.new
** Processing line: ~ @key_held = Controller::Keys.new~
- Inside source: true
*** True Line Result
@key_held = Controller::Keys.new
** Processing line: ~ @left_analog_x_raw = 0~
- Inside source: true
*** True Line Result
@left_analog_x_raw = 0
** Processing line: ~ @left_analog_y_raw = 0~
- Inside source: true
*** True Line Result
@left_analog_y_raw = 0
** Processing line: ~ @left_analog_x_perc = 0~
- Inside source: true
*** True Line Result
@left_analog_x_perc = 0
** Processing line: ~ @left_analog_y_perc = 0~
- Inside source: true
*** True Line Result
@left_analog_y_perc = 0
** Processing line: ~ @right_analog_x_raw = 0~
- Inside source: true
*** True Line Result
@right_analog_x_raw = 0
** Processing line: ~ @right_analog_y_raw = 0~
- Inside source: true
*** True Line Result
@right_analog_y_raw = 0
** Processing line: ~ @right_analog_x_perc = 0~
- Inside source: true
*** True Line Result
@right_analog_x_perc = 0
** Processing line: ~ @right_analog_y_perc = 0~
- Inside source: true
*** True Line Result
@right_analog_y_perc = 0
** 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
def serialize
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ key_down: @key_down.serialize,~
- Inside source: true
*** True Line Result
key_down: @key_down.serialize,
** Processing line: ~ key_held: @key_held.serialize,~
- Inside source: true
*** True Line Result
key_held: @key_held.serialize,
** Processing line: ~ key_up: @key_up.serialize~
- Inside source: true
*** True Line Result
key_up: @key_up.serialize
** 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: ~ # Clear all current key presses.~
- Inside source: true
*** True Line Result
# Clear all current key presses.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ def clear~
- Inside source: true
*** True Line Result
def clear
** Processing line: ~ @key_down.clear~
- Inside source: true
*** True Line Result
@key_down.clear
** Processing line: ~ @key_up.clear~
- Inside source: true
*** True Line Result
@key_up.clear
** Processing line: ~ @key_held.clear~
- Inside source: true
*** True Line Result
@key_held.clear
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def up~
- Inside source: true
*** True Line Result
def up
** Processing line: ~ @key_up.up || @key_held.up~
- Inside source: true
*** True Line Result
@key_up.up || @key_held.up
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def down~
- Inside source: true
*** True Line Result
def down
** Processing line: ~ @key_up.down || @key_held.down~
- Inside source: true
*** True Line Result
@key_up.down || @key_held.down
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def left~
- Inside source: true
*** True Line Result
def left
** Processing line: ~ @key_up.left || @key_held.left~
- Inside source: true
*** True Line Result
@key_up.left || @key_held.left
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def right~
- Inside source: true
*** True Line Result
def right
** Processing line: ~ @key_up.right || @key_held.right~
- Inside source: true
*** True Line Result
@key_up.right || @key_held.right
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Activates a key into the down position.~
- Inside source: true
*** True Line Result
# Activates a key into the down position.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @param key [Symbol] The key to press down.~
- Inside source: true
*** True Line Result
# @param key [Symbol] The key to press down.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ def activate_down(key)~
- Inside source: true
*** True Line Result
def activate_down(key)
** Processing line: ~ key_down.activate(key)~
- Inside source: true
*** True Line Result
key_down.activate(key)
** Processing line: ~ key_held.deactivate(key)~
- Inside source: true
*** True Line Result
key_held.deactivate(key)
** Processing line: ~ key_up.deactivate(key)~
- Inside source: true
*** True Line Result
key_up.deactivate(key)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Activates a key into the held down position.~
- Inside source: true
*** True Line Result
# Activates a key into the held down position.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @param key [Symbol] The key to hold down.~
- Inside source: true
*** True Line Result
# @param key [Symbol] The key to hold down.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ def activate_held(key)~
- Inside source: true
*** True Line Result
def activate_held(key)
** Processing line: ~ key_down.deactivate(key)~
- Inside source: true
*** True Line Result
key_down.deactivate(key)
** Processing line: ~ key_held.activate(key) unless key_held.send(key)~
- Inside source: true
*** True Line Result
key_held.activate(key) unless key_held.send(key)
** Processing line: ~ key_up.deactivate(key)~
- Inside source: true
*** True Line Result
key_up.deactivate(key)
** 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: ~ # Activates a key release into the up position.~
- Inside source: true
*** True Line Result
# Activates a key release into the up position.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @param key [Symbol] The key release up.~
- Inside source: true
*** True Line Result
# @param key [Symbol] The key release up.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ def activate_up(key)~
- Inside source: true
*** True Line Result
def activate_up(key)
** Processing line: ~ key_down.deactivate(key)~
- Inside source: true
*** True Line Result
key_down.deactivate(key)
** Processing line: ~ key_held.deactivate(key)~
- Inside source: true
*** True Line Result
key_held.deactivate(key)
** Processing line: ~ key_up.activate(key)~
- Inside source: true
*** True Line Result
key_up.activate(key)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ include DirectionalInputHelperMethods~
- Inside source: true
*** True Line Result
include DirectionalInputHelperMethods
** 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: ~#+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: ~* controller/config.rb~
- Header detected.
*** True Line Result
*** True Line Result
* controller/config.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/controller/config.rb~
- Inside source: true
*** True Line Result
# ./dragon/controller/config.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: ~ # controller/config.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# controller/config.rb has been released under MIT (*only this file*).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # !!! FIXME: add console command to forget custom binding(s)~
- Inside source: true
*** True Line Result
# !!! FIXME: add console command to forget custom binding(s)
** Processing line: ~ # !!! FIXME: add console command to forget replace existing binding(s)~
- Inside source: true
*** True Line Result
# !!! FIXME: add console command to forget replace existing binding(s)
** Processing line: ~ # !!! FIXME: add console command go into play_around mode to make sure controller isn't wonky.~
- Inside source: true
*** True Line Result
# !!! FIXME: add console command go into play_around mode to make sure controller isn't wonky.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ module GTK~
- Inside source: true
*** True Line Result
module GTK
** Processing line: ~ class Controller~
- Inside source: true
*** True Line Result
class Controller
** Processing line: ~ class Config~
- Inside source: true
*** True Line Result
class Config
** Processing line: ~ def initialize runtime~
- Inside source: true
*** True Line Result
def initialize runtime
** Processing line: ~ @runtime = runtime~
- Inside source: true
*** True Line Result
@runtime = runtime
** Processing line: ~ @raw_joysticks = {} # things that aren't game controllers to try to configure.~
- Inside source: true
*** True Line Result
@raw_joysticks = {} # things that aren't game controllers to try to configure.
** Processing line: ~ @target = nil~
- Inside source: true
*** True Line Result
@target = nil
** Processing line: ~ @animation_duration = (1.5).seconds~
- Inside source: true
*** True Line Result
@animation_duration = (1.5).seconds
** Processing line: ~ @toggled_at = 0~
- Inside source: true
*** True Line Result
@toggled_at = 0
** Processing line: ~ @fading = 0~
- Inside source: true
*** True Line Result
@fading = 0
** Processing line: ~ @current_part = 0~
- Inside source: true
*** True Line Result
@current_part = 0
** Processing line: ~ @part_alpha = 0~
- Inside source: true
*** True Line Result
@part_alpha = 0
** Processing line: ~ @part_alpha_increment = 10~
- Inside source: true
*** True Line Result
@part_alpha_increment = 10
** Processing line: ~ @joystick_state = {}~
- Inside source: true
*** True Line Result
@joystick_state = {}
** Processing line: ~ @playing_around = false~
- Inside source: true
*** True Line Result
@playing_around = false
** Processing line: ~ @used_bindings = {}~
- Inside source: true
*** True Line Result
@used_bindings = {}
** Processing line: ~ @bindings = []~
- Inside source: true
*** True Line Result
@bindings = []
** Processing line: ~ @parts = [~
- Inside source: true
*** True Line Result
@parts = [
** Processing line: ~ [ 919, 282, 'A button', 'a' ],~
- Inside source: true
*** True Line Result
[ 919, 282, 'A button', 'a' ],
** Processing line: ~ [ 960, 323, 'B button', 'b' ],~
- Inside source: true
*** True Line Result
[ 960, 323, 'B button', 'b' ],
** Processing line: ~ [ 878, 323, 'X button', 'x' ],~
- Inside source: true
*** True Line Result
[ 878, 323, 'X button', 'x' ],
** Processing line: ~ [ 919, 365, 'Y button', 'y' ],~
- Inside source: true
*** True Line Result
[ 919, 365, 'Y button', 'y' ],
** Processing line: ~ [ 433, 246, 'left stick left', '-leftx' ],~
- Inside source: true
*** True Line Result
[ 433, 246, 'left stick left', '-leftx' ],
** Processing line: ~ [ 497, 246, 'left stick right', '+leftx' ],~
- Inside source: true
*** True Line Result
[ 497, 246, 'left stick right', '+leftx' ],
** Processing line: ~ [ 466, 283, 'left stick up', '-lefty' ],~
- Inside source: true
*** True Line Result
[ 466, 283, 'left stick up', '-lefty' ],
** Processing line: ~ [ 466, 218, 'left stick down', '+lefty' ],~
- Inside source: true
*** True Line Result
[ 466, 218, 'left stick down', '+lefty' ],
** Processing line: ~ [ 466, 246, 'left stick button', 'leftstick' ],~
- Inside source: true
*** True Line Result
[ 466, 246, 'left stick button', 'leftstick' ],
** Processing line: ~ [ 741, 246, 'right stick left', '-rightx' ],~
- Inside source: true
*** True Line Result
[ 741, 246, 'right stick left', '-rightx' ],
** Processing line: ~ [ 802, 246, 'right stick right', '+rightx' ],~
- Inside source: true
*** True Line Result
[ 802, 246, 'right stick right', '+rightx' ],
** Processing line: ~ [ 773, 283, 'right stick up', '-righty' ],~
- Inside source: true
*** True Line Result
[ 773, 283, 'right stick up', '-righty' ],
** Processing line: ~ [ 773, 218, 'right stick down', '+righty' ],~
- Inside source: true
*** True Line Result
[ 773, 218, 'right stick down', '+righty' ],
** Processing line: ~ [ 772, 246, 'right stick button', 'rightstick' ],~
- Inside source: true
*** True Line Result
[ 772, 246, 'right stick button', 'rightstick' ],
** Processing line: ~ [ 263, 465, 'left shoulder button', 'leftshoulder' ],~
- Inside source: true
*** True Line Result
[ 263, 465, 'left shoulder button', 'leftshoulder' ],
** Processing line: ~ [ 263, 503, 'left trigger', 'lefttrigger' ],~
- Inside source: true
*** True Line Result
[ 263, 503, 'left trigger', 'lefttrigger' ],
** Processing line: ~ [ 977, 465, 'right shoulder button', 'rightshoulder' ],~
- Inside source: true
*** True Line Result
[ 977, 465, 'right shoulder button', 'rightshoulder' ],
** Processing line: ~ [ 977, 503, 'right trigger', 'righttrigger' ],~
- Inside source: true
*** True Line Result
[ 977, 503, 'right trigger', 'righttrigger' ],
** Processing line: ~ [ 318, 365, 'D-pad up', 'dpup' ],~
- Inside source: true
*** True Line Result
[ 318, 365, 'D-pad up', 'dpup' ],
** Processing line: ~ [ 360, 322, 'D-pad right', 'dpright' ],~
- Inside source: true
*** True Line Result
[ 360, 322, 'D-pad right', 'dpright' ],
** Processing line: ~ [ 318, 280, 'D-pad down', 'dpdown' ],~
- Inside source: true
*** True Line Result
[ 318, 280, 'D-pad down', 'dpdown' ],
** Processing line: ~ [ 275, 322, 'D-pad left', 'dpleft' ],~
- Inside source: true
*** True Line Result
[ 275, 322, 'D-pad left', 'dpleft' ],
** Processing line: ~ [ 570, 402, 'select/back button', 'back'],~
- Inside source: true
*** True Line Result
[ 570, 402, 'select/back button', 'back'],
** Processing line: ~ [ 619, 448, 'guide/home button', 'guide' ],~
- Inside source: true
*** True Line Result
[ 619, 448, 'guide/home button', 'guide' ],
** Processing line: ~ [ 669, 402, 'start button', 'start' ],~
- Inside source: true
*** True Line Result
[ 669, 402, 'start button', 'start' ],
** 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 rawjoystick_connected jid, joystickname, guid~
- Inside source: true
*** True Line Result
def rawjoystick_connected jid, joystickname, guid
** Processing line: ~ return if jid < 0~
- Inside source: true
*** True Line Result
return if jid < 0
** Processing line: ~ @raw_joysticks[jid] = { name: joystickname, guid: guid }~
- Inside source: true
*** True Line Result
@raw_joysticks[jid] = { name: joystickname, guid: guid }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def rawjoystick_disconnected jid~
- Inside source: true
*** True Line Result
def rawjoystick_disconnected jid
** Processing line: ~ return if jid < 0~
- Inside source: true
*** True Line Result
return if jid < 0
** Processing line: ~ if @raw_joysticks[jid] != nil~
- Inside source: true
*** True Line Result
if @raw_joysticks[jid] != nil
** Processing line: ~ @raw_joysticks.delete(jid)~
- Inside source: true
*** True Line Result
@raw_joysticks.delete(jid)
** Processing line: ~ @runtime.ffi_misc.close_raw_joystick(jid)~
- Inside source: true
*** True Line Result
@runtime.ffi_misc.close_raw_joystick(jid)
** Processing line: ~ # Fade out the config screen if we were literally configuring this controller right now.~
- Inside source: true
*** True Line Result
# Fade out the config screen if we were literally configuring this controller right now.
** Processing line: ~ if !@target.nil? && @target[0] == jid~
- Inside source: true
*** True Line Result
if !@target.nil? && @target[0] == jid
** Processing line: ~ @target[0] = nil~
- Inside source: true
*** True Line Result
@target[0] = nil
** Processing line: ~ @toggled_at = Kernel.global_tick_count~
- Inside source: true
*** True Line Result
@toggled_at = Kernel.global_tick_count
** Processing line: ~ @fading = -1~
- Inside source: true
*** True Line Result
@fading = -1
** 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 build_binding_string~
- Inside source: true
*** True Line Result
def build_binding_string
** Processing line: ~ bindingstr = ''~
- Inside source: true
*** True Line Result
bindingstr = ''
** Processing line: ~ skip = false~
- Inside source: true
*** True Line Result
skip = false
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ for i in 0..@parts.length-1~
- Inside source: true
*** True Line Result
for i in 0..@parts.length-1
** Processing line: ~ if skip ; skip = false ; next ; end~
- Inside source: true
*** True Line Result
if skip ; skip = false ; next ; end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ binding = @bindings[i]~
- Inside source: true
*** True Line Result
binding = @bindings[i]
** Processing line: ~ next if binding.nil?~
- Inside source: true
*** True Line Result
next if binding.nil?
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ part = @parts[i][3]~
- Inside source: true
*** True Line Result
part = @parts[i][3]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # clean up string:~
- Inside source: true
*** True Line Result
# clean up string:
** Processing line: ~ # if axis uses -a0 for negative and +a0 for positive, just make it "leftx:a0" instead of "-leftx:-a0,+leftx:+a0"~
- Inside source: true
*** True Line Result
# if axis uses -a0 for negative and +a0 for positive, just make it "leftx:a0" instead of "-leftx:-a0,+leftx:+a0"
** Processing line: ~ # if axis uses +a0 for negative and -a0 for positive, just make it "leftx:a0~" instead of "-leftx:+a0,+leftx:-a0"~
- Inside source: true
*** True Line Result
# if axis uses +a0 for negative and -a0 for positive, just make it "leftx:a0~" instead of "-leftx:+a0,+leftx:-a0"
** Processing line: ~ if part == '-leftx' || part == '-lefty' || part == '-rightx' || part == '-righty'~
- Inside source: true
*** True Line Result
if part == '-leftx' || part == '-lefty' || part == '-rightx' || part == '-righty'
** Processing line: ~ nextbinding = @bindings[i+1]~
- Inside source: true
*** True Line Result
nextbinding = @bindings[i+1]
** Processing line: ~ if binding.start_with?('-a') && nextbinding.start_with?('+a') && binding[2..-1] == nextbinding[2..-1]~
- Inside source: true
*** True Line Result
if binding.start_with?('-a') && nextbinding.start_with?('+a') && binding[2..-1] == nextbinding[2..-1]
** Processing line: ~ skip = true~
- Inside source: true
*** True Line Result
skip = true
** Processing line: ~ part = part[1..-1]~
- Inside source: true
*** True Line Result
part = part[1..-1]
** Processing line: ~ binding = binding[1..-1]~
- Inside source: true
*** True Line Result
binding = binding[1..-1]
** Processing line: ~ elsif binding.start_with?('+a') && nextbinding.start_with?('-a') && binding[2..-1] == nextbinding[2..-1]~
- Inside source: true
*** True Line Result
elsif binding.start_with?('+a') && nextbinding.start_with?('-a') && binding[2..-1] == nextbinding[2..-1]
** Processing line: ~ skip = true~
- Inside source: true
*** True Line Result
skip = true
** Processing line: ~ part = part[1..-1]~
- Inside source: true
*** True Line Result
part = part[1..-1]
** Processing line: ~ binding = "#{binding[1..-1]}~"~
- Inside source: true
*** True Line Result
binding = "#{binding[1..-1]}~"
** 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: ~ bindingstr += "#{!bindingstr.empty? ? ',' : ''}#{part}:#{binding}"~
- Inside source: true
*** True Line Result
bindingstr += "#{!bindingstr.empty? ? ',' : ''}#{part}:#{binding}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ details = @target[1]~
- Inside source: true
*** True Line Result
details = @target[1]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # !!! FIXME: no String.delete in mRuby?!?! Maybe so when upgrading.~
- Inside source: true
*** True Line Result
# !!! FIXME: no String.delete in mRuby?!?! Maybe so when upgrading.
** Processing line: ~ #name = details[:name].delete(',')~
- Inside source: true
*** True Line Result
#name = details[:name].delete(',')
** Processing line: ~ # !!! FIXME: ...no regexp either... :/~
- Inside source: true
*** True Line Result
# !!! FIXME: ...no regexp either... :/
** Processing line: ~ #name = details[:name].gsub(/,/, ' ') # !!! FIXME: will SDL let you escape these instead?~
- Inside source: true
*** True Line Result
#name = details[:name].gsub(/,/, ' ') # !!! FIXME: will SDL let you escape these instead?
** Processing line: ~ unescaped = details[:name]~
- Inside source: true
*** True Line Result
unescaped = details[:name]
** Processing line: ~ name = ''~
- Inside source: true
*** True Line Result
name = ''
** Processing line: ~ for i in 0..unescaped.length-1~
- Inside source: true
*** True Line Result
for i in 0..unescaped.length-1
** Processing line: ~ ch = unescaped[i]~
- Inside source: true
*** True Line Result
ch = unescaped[i]
** Processing line: ~ name += (ch == ',') ? ' ' : ch~
- Inside source: true
*** True Line Result
name += (ch == ',') ? ' ' : ch
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ return "#{details[:guid]},#{name},platform:#{@runtime.platform},#{bindingstr}"~
- Inside source: true
*** True Line Result
return "#{details[:guid]},#{name},platform:#{@runtime.platform},#{bindingstr}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def move_to_different_part part~
- Inside source: true
*** True Line Result
def move_to_different_part part
** Processing line: ~ if !@joystick_state[:axes].nil?~
- Inside source: true
*** True Line Result
if !@joystick_state[:axes].nil?
** Processing line: ~ @joystick_state[:axes].each { |i| i[:farthestval] = i[:startingval] if !i.nil? }~
- Inside source: true
*** True Line Result
@joystick_state[:axes].each { |i| i[:farthestval] = i[:startingval] if !i.nil? }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ @current_part = part~
- Inside source: true
*** True Line Result
@current_part = part
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def previous_part~
- Inside source: true
*** True Line Result
def previous_part
** Processing line: ~ if @current_part > 0~
- Inside source: true
*** True Line Result
if @current_part > 0
** Processing line: ~ # remove the binding that we previous had here so it can be reused.~
- Inside source: true
*** True Line Result
# remove the binding that we previous had here so it can be reused.
** Processing line: ~ bindstr = @bindings[@current_part - 1]~
- Inside source: true
*** True Line Result
bindstr = @bindings[@current_part - 1]
** Processing line: ~ @bindings[@current_part - 1] = nil~
- Inside source: true
*** True Line Result
@bindings[@current_part - 1] = nil
** Processing line: ~ @used_bindings[bindstr] = nil~
- Inside source: true
*** True Line Result
@used_bindings[bindstr] = nil
** Processing line: ~ move_to_different_part @current_part - 1~
- Inside source: true
*** True Line Result
move_to_different_part @current_part - 1
** 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 next_part~
- Inside source: true
*** True Line Result
def next_part
** Processing line: ~ if @current_part < (@parts.length - 1)~
- Inside source: true
*** True Line Result
if @current_part < (@parts.length - 1)
** Processing line: ~ move_to_different_part @current_part + 1~
- Inside source: true
*** True Line Result
move_to_different_part @current_part + 1
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ @playing_around = true~
- Inside source: true
*** True Line Result
@playing_around = true
** 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 set_binding bindstr~
- Inside source: true
*** True Line Result
def set_binding bindstr
** Processing line: ~ return false if !@used_bindings[bindstr].nil?~
- Inside source: true
*** True Line Result
return false if !@used_bindings[bindstr].nil?
** Processing line: ~ @used_bindings[bindstr] = @current_part~
- Inside source: true
*** True Line Result
@used_bindings[bindstr] = @current_part
** Processing line: ~ @bindings[@current_part] = bindstr~
- Inside source: true
*** True Line Result
@bindings[@current_part] = bindstr
** Processing line: ~ return true~
- Inside source: true
*** True Line Result
return true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Called when a lowlevel joystick moves an axis.~
- Inside source: true
*** True Line Result
# Called when a lowlevel joystick moves an axis.
** Processing line: ~ def rawjoystick_axis jid, axis, value~
- Inside source: true
*** True Line Result
def rawjoystick_axis jid, axis, value
** Processing line: ~ return if @target.nil? || jid != @target[0] || @fading != 0 # skip if not currently considering this joystick.~
- Inside source: true
*** True Line Result
return if @target.nil? || jid != @target[0] || @fading != 0 # skip if not currently considering this joystick.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @joystick_state[:axes] ||= []~
- Inside source: true
*** True Line Result
@joystick_state[:axes] ||= []
** Processing line: ~ @joystick_state[:axes][axis] ||= {~
- Inside source: true
*** True Line Result
@joystick_state[:axes][axis] ||= {
** Processing line: ~ moving: false,~
- Inside source: true
*** True Line Result
moving: false,
** Processing line: ~ startingval: 0,~
- Inside source: true
*** True Line Result
startingval: 0,
** Processing line: ~ currentval: 0,~
- Inside source: true
*** True Line Result
currentval: 0,
** Processing line: ~ farthestval: 0~
- Inside source: true
*** True Line Result
farthestval: 0
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # this is the logic from SDL's controllermap.c, more or less, since this is hard to get right from scratch.~
- Inside source: true
*** True Line Result
# this is the logic from SDL's controllermap.c, more or less, since this is hard to get right from scratch.
** Processing line: ~ state = @joystick_state[:axes][axis]~
- Inside source: true
*** True Line Result
state = @joystick_state[:axes][axis]
** Processing line: ~ state[:currentval] = value~
- Inside source: true
*** True Line Result
state[:currentval] = value
** Processing line: ~ if !state[:moving]~
- Inside source: true
*** True Line Result
if !state[:moving]
** Processing line: ~ state[:moving] = true~
- Inside source: true
*** True Line Result
state[:moving] = true
** Processing line: ~ state[:startingval] = value~
- Inside source: true
*** True Line Result
state[:startingval] = value
** Processing line: ~ state[:farthestval] = value~
- Inside source: true
*** True Line Result
state[:farthestval] = value
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ current_distance = (value - state[:startingval]).abs~
- Inside source: true
*** True Line Result
current_distance = (value - state[:startingval]).abs
** Processing line: ~ farthest_distance = (state[:farthestval] - state[:startingval]).abs~
- Inside source: true
*** True Line Result
farthest_distance = (state[:farthestval] - state[:startingval]).abs
** Processing line: ~ if current_distance > farthest_distance~
- Inside source: true
*** True Line Result
if current_distance > farthest_distance
** Processing line: ~ state[:farthestval] = value~
- Inside source: true
*** True Line Result
state[:farthestval] = value
** Processing line: ~ farthest_distance = (state[:farthestval] - state[:startingval]).abs~
- Inside source: true
*** True Line Result
farthest_distance = (state[:farthestval] - state[:startingval]).abs
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # If we've gone out far enough and started to come back, let's bind this axis~
- Inside source: true
*** True Line Result
# If we've gone out far enough and started to come back, let's bind this axis
** Processing line: ~ if (farthest_distance >= 16000) && (current_distance <= 10000)~
- Inside source: true
*** True Line Result
if (farthest_distance >= 16000) && (current_distance <= 10000)
** Processing line: ~ next_part if set_binding("#{(state[:farthestval] < 0) ? '-' : '+'}a#{axis}")~
- Inside source: true
*** True Line Result
next_part if set_binding("#{(state[:farthestval] < 0) ? '-' : '+'}a#{axis}")
** 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: ~ # Called when a lowlevel joystick moves a hat.~
- Inside source: true
*** True Line Result
# Called when a lowlevel joystick moves a hat.
** Processing line: ~ def rawjoystick_hat jid, hat, value~
- Inside source: true
*** True Line Result
def rawjoystick_hat jid, hat, value
** Processing line: ~ return if @target.nil? || jid != @target[0] || @fading != 0 # skip if not currently considering this joystick.~
- Inside source: true
*** True Line Result
return if @target.nil? || jid != @target[0] || @fading != 0 # skip if not currently considering this joystick.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @joystick_state[:hats] ||= []~
- Inside source: true
*** True Line Result
@joystick_state[:hats] ||= []
** Processing line: ~ @joystick_state[:hats][hat] = value~
- Inside source: true
*** True Line Result
@joystick_state[:hats][hat] = value
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return if value == 0 # 0 == centered, skip it~
- Inside source: true
*** True Line Result
return if value == 0 # 0 == centered, skip it
** Processing line: ~ next_part if set_binding("h#{hat}.#{value}")~
- Inside source: true
*** True Line Result
next_part if set_binding("h#{hat}.#{value}")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Called when a lowlevel joystick moves a button.~
- Inside source: true
*** True Line Result
# Called when a lowlevel joystick moves a button.
** Processing line: ~ def rawjoystick_button jid, button, pressed~
- Inside source: true
*** True Line Result
def rawjoystick_button jid, button, pressed
** Processing line: ~ return if @target.nil? || jid != @target[0] || @fading != 0 # skip if not currently considering this joystick.~
- Inside source: true
*** True Line Result
return if @target.nil? || jid != @target[0] || @fading != 0 # skip if not currently considering this joystick.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @joystick_state[:buttons] ||= []~
- Inside source: true
*** True Line Result
@joystick_state[:buttons] ||= []
** Processing line: ~ @joystick_state[:buttons][button] = pressed~
- Inside source: true
*** True Line Result
@joystick_state[:buttons][button] = pressed
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return if !pressed~
- Inside source: true
*** True Line Result
return if !pressed
** Processing line: ~ next_part if set_binding("b#{button}")~
- Inside source: true
*** True Line Result
next_part if set_binding("b#{button}")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def calc_fading~
- Inside source: true
*** True Line Result
def calc_fading
** Processing line: ~ if @fading == 0~
- Inside source: true
*** True Line Result
if @fading == 0
** Processing line: ~ return 255~
- Inside source: true
*** True Line Result
return 255
** Processing line: ~ elsif @fading > 0 # fading in~
- Inside source: true
*** True Line Result
elsif @fading > 0 # fading in
** Processing line: ~ percent = @toggled_at.global_ease(@animation_duration, :flip, :quint, :flip)~
- Inside source: true
*** True Line Result
percent = @toggled_at.global_ease(@animation_duration, :flip, :quint, :flip)
** Processing line: ~ if percent >= 1.0~
- Inside source: true
*** True Line Result
if percent >= 1.0
** Processing line: ~ percent = 1.0~
- Inside source: true
*** True Line Result
percent = 1.0
** Processing line: ~ @fading = 0~
- Inside source: true
*** True Line Result
@fading = 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else # fading out~
- Inside source: true
*** True Line Result
else # fading out
** Processing line: ~ percent = @toggled_at.global_ease(@animation_duration, :flip, :quint)~
- Inside source: true
*** True Line Result
percent = @toggled_at.global_ease(@animation_duration, :flip, :quint)
** Processing line: ~ if percent <= 0.0~
- Inside source: true
*** True Line Result
if percent <= 0.0
** Processing line: ~ percent = 0.0~
- Inside source: true
*** True Line Result
percent = 0.0
** Processing line: ~ @fading = 0~
- Inside source: true
*** True Line Result
@fading = 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: ~ return (percent * 255.0).to_i~
- Inside source: true
*** True Line Result
return (percent * 255.0).to_i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_basics args, msg, fade=255~
- Inside source: true
*** True Line Result
def render_basics args, msg, fade=255
** Processing line: ~ joystickname = @target[1][:name]~
- Inside source: true
*** True Line Result
joystickname = @target[1][:name]
** Processing line: ~ args.outputs.primitives << [0, 0, $gtk.logical_width, $gtk.logical_height, 255, 255, 255, fade].solid~
- Inside source: true
*** True Line Result
args.outputs.primitives << [0, 0, $gtk.logical_width, $gtk.logical_height, 255, 255, 255, fade].solid
** Processing line: ~ args.outputs.primitives << [0, 0, $gtk.logical_width, $gtk.logical_height, 'dragonruby-controller.png', 0, fade, 255, 255, 255].sprite~
- Inside source: true
*** True Line Result
args.outputs.primitives << [0, 0, $gtk.logical_width, $gtk.logical_height, 'dragonruby-controller.png', 0, fade, 255, 255, 255].sprite
** Processing line: ~ args.outputs.primitives << [$gtk.logical_width / 2, 700, joystickname, 2, 1, 0, 0, 0, fade].label~
- Inside source: true
*** True Line Result
args.outputs.primitives << [$gtk.logical_width / 2, 700, joystickname, 2, 1, 0, 0, 0, fade].label
** Processing line: ~ args.outputs.primitives << [$gtk.logical_height / 2, 650, msg, 0, 1, 0, 0, 0, 255].label if !msg.empty?~
- Inside source: true
*** True Line Result
args.outputs.primitives << [$gtk.logical_height / 2, 650, msg, 0, 1, 0, 0, 0, 255].label if !msg.empty?
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_part_highlight args, part, alpha=255~
- Inside source: true
*** True Line Result
def render_part_highlight args, part, alpha=255
** Processing line: ~ partsize = 41~
- Inside source: true
*** True Line Result
partsize = 41
** Processing line: ~ args.outputs.primitives << [part[0], part[1], partsize, partsize, 255, 0, 0, alpha].border~
- Inside source: true
*** True Line Result
args.outputs.primitives << [part[0], part[1], partsize, partsize, 255, 0, 0, alpha].border
** Processing line: ~ args.outputs.primitives << [part[0]-1, part[1]-1, partsize+2, partsize+2, 255, 0, 0, alpha].border~
- Inside source: true
*** True Line Result
args.outputs.primitives << [part[0]-1, part[1]-1, partsize+2, partsize+2, 255, 0, 0, alpha].border
** Processing line: ~ args.outputs.primitives << [part[0]-2, part[1]-2, partsize+4, partsize+4, 255, 0, 0, alpha].border~
- Inside source: true
*** True Line Result
args.outputs.primitives << [part[0]-2, part[1]-2, partsize+4, partsize+4, 255, 0, 0, alpha].border
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def choose_target~
- Inside source: true
*** True Line Result
def choose_target
** Processing line: ~ if @target.nil?~
- Inside source: true
*** True Line Result
if @target.nil?
** Processing line: ~ while !@raw_joysticks.empty?~
- Inside source: true
*** True Line Result
while !@raw_joysticks.empty?
** Processing line: ~ t = @raw_joysticks.shift # see if there's a joystick waiting on us.~
- Inside source: true
*** True Line Result
t = @raw_joysticks.shift # see if there's a joystick waiting on us.
** Processing line: ~ next if t[0] < 0 # just in case.~
- Inside source: true
*** True Line Result
next if t[0] < 0 # just in case.
** Processing line: ~ next if t[1][:guid].nil? # did we already handle this guid? Dump it.~
- Inside source: true
*** True Line Result
next if t[1][:guid].nil? # did we already handle this guid? Dump it.
** Processing line: ~ @target = t~
- Inside source: true
*** True Line Result
@target = t
** Processing line: ~ break~
- Inside source: true
*** True Line Result
break
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ return false if @target.nil? # nothing to configure at the moment.~
- Inside source: true
*** True Line Result
return false if @target.nil? # nothing to configure at the moment.
** Processing line: ~ @toggled_at = Kernel.global_tick_count~
- Inside source: true
*** True Line Result
@toggled_at = Kernel.global_tick_count
** Processing line: ~ @fading = 1~
- Inside source: true
*** True Line Result
@fading = 1
** Processing line: ~ @current_part = 0~
- Inside source: true
*** True Line Result
@current_part = 0
** Processing line: ~ @part_alpha = 0~
- Inside source: true
*** True Line Result
@part_alpha = 0
** Processing line: ~ @part_alpha_increment = 10~
- Inside source: true
*** True Line Result
@part_alpha_increment = 10
** Processing line: ~ @joystick_state = {}~
- Inside source: true
*** True Line Result
@joystick_state = {}
** Processing line: ~ @used_bindings = {}~
- Inside source: true
*** True Line Result
@used_bindings = {}
** Processing line: ~ @playing_around = false~
- Inside source: true
*** True Line Result
@playing_around = false
** Processing line: ~ @bindings = []~
- Inside source: true
*** True Line Result
@bindings = []
** 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: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def render_part_highlight_from_bindstr args, bindstr, alpha=255~
- Inside source: true
*** True Line Result
def render_part_highlight_from_bindstr args, bindstr, alpha=255
** Processing line: ~ partidx = @used_bindings[bindstr]~
- Inside source: true
*** True Line Result
partidx = @used_bindings[bindstr]
** Processing line: ~ return if partidx.nil?~
- Inside source: true
*** True Line Result
return if partidx.nil?
** Processing line: ~ render_part_highlight args, @parts[partidx], alpha~
- Inside source: true
*** True Line Result
render_part_highlight args, @parts[partidx], alpha
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def play_around args~
- Inside source: true
*** True Line Result
def play_around args
** Processing line: ~ return false if !@playing_around~
- Inside source: true
*** True Line Result
return false if !@playing_around
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.escape
** Processing line: ~ @current_part = 0~
- Inside source: true
*** True Line Result
@current_part = 0
** Processing line: ~ @part_alpha = 0~
- Inside source: true
*** True Line Result
@part_alpha = 0
** Processing line: ~ @part_alpha_increment = 10~
- Inside source: true
*** True Line Result
@part_alpha_increment = 10
** Processing line: ~ @used_bindings = {}~
- Inside source: true
*** True Line Result
@used_bindings = {}
** Processing line: ~ @playing_around = false~
- Inside source: true
*** True Line Result
@playing_around = false
** Processing line: ~ @bindings = []~
- Inside source: true
*** True Line Result
@bindings = []
** Processing line: ~ elsif args.inputs.keyboard.key_down.space~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_down.space
** Processing line: ~ jid = @target[0]~
- Inside source: true
*** True Line Result
jid = @target[0]
** Processing line: ~ bindingstr = build_binding_string~
- Inside source: true
*** True Line Result
bindingstr = build_binding_string
** Processing line: ~ #puts("new controller binding: '#{bindingstr}'")~
- Inside source: true
*** True Line Result
#puts("new controller binding: '#{bindingstr}'")
** Processing line: ~ @runtime.ffi_misc.add_controller_config bindingstr~
- Inside source: true
*** True Line Result
@runtime.ffi_misc.add_controller_config bindingstr
** Processing line: ~ @runtime.ffi_misc.convert_rawjoystick_to_controller jid~
- Inside source: true
*** True Line Result
@runtime.ffi_misc.convert_rawjoystick_to_controller jid
** Processing line: ~ @target[0] = -1 # Conversion closes the raw joystick.~
- Inside source: true
*** True Line Result
@target[0] = -1 # Conversion closes the raw joystick.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Handle any other pending joysticks that have the same GUID (so if you plug in four of the same model, we're already done!)~
- Inside source: true
*** True Line Result
# Handle any other pending joysticks that have the same GUID (so if you plug in four of the same model, we're already done!)
** Processing line: ~ guid = @target[1][:guid]~
- Inside source: true
*** True Line Result
guid = @target[1][:guid]
** Processing line: ~ @raw_joysticks.each { |jid, details|~
- Inside source: true
*** True Line Result
@raw_joysticks.each { |jid, details|
** Processing line: ~ if details[:guid] == guid~
- Inside source: true
*** True Line Result
if details[:guid] == guid
** Processing line: ~ @runtime.ffi_misc.convert_rawjoystick_to_controller jid~
- Inside source: true
*** True Line Result
@runtime.ffi_misc.convert_rawjoystick_to_controller jid
** Processing line: ~ details[:guid] = nil~
- Inside source: true
*** True Line Result
details[:guid] = nil
** 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: ~ # Done with this guy.~
- Inside source: true
*** True Line Result
# Done with this guy.
** Processing line: ~ @playing_around = false~
- Inside source: true
*** True Line Result
@playing_around = false
** Processing line: ~ @toggled_at = Kernel.global_tick_count~
- Inside source: true
*** True Line Result
@toggled_at = Kernel.global_tick_count
** Processing line: ~ @fading = -1~
- Inside source: true
*** True Line Result
@fading = -1
** Processing line: ~ return false~
- Inside source: true
*** True Line Result
return false
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ render_basics args, 'Now play around with the controller, and make sure it feels right!'~
- Inside source: true
*** True Line Result
render_basics args, 'Now play around with the controller, and make sure it feels right!'
** Processing line: ~ args.outputs.primitives << [$gtk.logical_width / 2, 90, '[ESCAPE]: Reconfigure, [SPACE]: Save this configuration', 0, 1, 0, 0, 0, 255].label~
- Inside source: true
*** True Line Result
args.outputs.primitives << [$gtk.logical_width / 2, 90, '[ESCAPE]: Reconfigure, [SPACE]: Save this configuration', 0, 1, 0, 0, 0, 255].label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ axes = @joystick_state[:axes]~
- Inside source: true
*** True Line Result
axes = @joystick_state[:axes]
** Processing line: ~ if !axes.nil?~
- Inside source: true
*** True Line Result
if !axes.nil?
** Processing line: ~ for i in 0..axes.length-1~
- Inside source: true
*** True Line Result
for i in 0..axes.length-1
** Processing line: ~ next if axes[i].nil?~
- Inside source: true
*** True Line Result
next if axes[i].nil?
** Processing line: ~ value = axes[i][:currentval]~
- Inside source: true
*** True Line Result
value = axes[i][:currentval]
** Processing line: ~ next if value.nil? || (value.abs < 16000)~
- Inside source: true
*** True Line Result
next if value.nil? || (value.abs < 16000)
** Processing line: ~ render_part_highlight_from_bindstr args, "#{value < 0 ? '-' : '+'}a#{i}"~
- Inside source: true
*** True Line Result
render_part_highlight_from_bindstr args, "#{value < 0 ? '-' : '+'}a#{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: ~ hats = @joystick_state[:hats]~
- Inside source: true
*** True Line Result
hats = @joystick_state[:hats]
** Processing line: ~ if !hats.nil?~
- Inside source: true
*** True Line Result
if !hats.nil?
** Processing line: ~ for i in 0..hats.length-1~
- Inside source: true
*** True Line Result
for i in 0..hats.length-1
** Processing line: ~ value = hats[i]~
- Inside source: true
*** True Line Result
value = hats[i]
** Processing line: ~ next if value.nil? || (value == 0)~
- Inside source: true
*** True Line Result
next if value.nil? || (value == 0)
** Processing line: ~ render_part_highlight_from_bindstr args, "h#{i}.#{value}"~
- Inside source: true
*** True Line Result
render_part_highlight_from_bindstr args, "h#{i}.#{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: ~ buttons = @joystick_state[:buttons]~
- Inside source: true
*** True Line Result
buttons = @joystick_state[:buttons]
** Processing line: ~ if !buttons.nil?~
- Inside source: true
*** True Line Result
if !buttons.nil?
** Processing line: ~ for i in 0..buttons.length-1~
- Inside source: true
*** True Line Result
for i in 0..buttons.length-1
** Processing line: ~ value = buttons[i]~
- Inside source: true
*** True Line Result
value = buttons[i]
** Processing line: ~ next if value.nil? || !value~
- Inside source: true
*** True Line Result
next if value.nil? || !value
** Processing line: ~ render_part_highlight_from_bindstr args, "b#{i}"~
- Inside source: true
*** True Line Result
render_part_highlight_from_bindstr args, "b#{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: ~ return true~
- Inside source: true
*** True Line Result
return true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def should_tick?~
- Inside source: true
*** True Line Result
def should_tick?
** Processing line: ~ return true if @play_around~
- Inside source: true
*** True Line Result
return true if @play_around
** Processing line: ~ return true if @target~
- Inside source: true
*** True Line Result
return true if @target
** Processing line: ~ return false~
- Inside source: true
*** True Line Result
return false
** 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: ~ return true if play_around args~
- Inside source: true
*** True Line Result
return true if play_around args
** Processing line: ~ return false if !choose_target~
- Inside source: true
*** True Line Result
return false if !choose_target
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ jid = @target[0]~
- Inside source: true
*** True Line Result
jid = @target[0]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if @fading == 0~
- Inside source: true
*** True Line Result
if @fading == 0
** Processing line: ~ # Cancel config?~
- Inside source: true
*** True Line Result
# Cancel config?
** Processing line: ~ if args.inputs.keyboard.key_down.escape~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.escape
** Processing line: ~ # !!! FIXME: prompt to ignore this joystick forever or just this run~
- Inside source: true
*** True Line Result
# !!! FIXME: prompt to ignore this joystick forever or just this run
** Processing line: ~ @toggled_at = Kernel.global_tick_count~
- Inside source: true
*** True Line Result
@toggled_at = Kernel.global_tick_count
** Processing line: ~ @fading = -1~
- Inside source: true
*** True Line Result
@fading = -1
** 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 @fading == 0~
- Inside source: true
*** True Line Result
if @fading == 0
** Processing line: ~ if args.inputs.keyboard.key_down.backspace~
- Inside source: true
*** True Line Result
if args.inputs.keyboard.key_down.backspace
** Processing line: ~ previous_part~
- Inside source: true
*** True Line Result
previous_part
** Processing line: ~ elsif args.inputs.keyboard.key_down.space~
- Inside source: true
*** True Line Result
elsif args.inputs.keyboard.key_down.space
** Processing line: ~ next_part~
- Inside source: true
*** True Line Result
next_part
** 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: ~ fade = calc_fading~
- Inside source: true
*** True Line Result
fade = calc_fading
** Processing line: ~ if (@fading < 0) && (fade == 0)~
- Inside source: true
*** True Line Result
if (@fading < 0) && (fade == 0)
** Processing line: ~ @runtime.ffi_misc.close_raw_joystick(jid) if jid >= 0~
- Inside source: true
*** True Line Result
@runtime.ffi_misc.close_raw_joystick(jid) if jid >= 0
** Processing line: ~ @target = nil # done with this controller~
- Inside source: true
*** True Line Result
@target = nil # done with this controller
** Processing line: ~ return false~
- Inside source: true
*** True Line Result
return false
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ render_basics args, (@fading >= 0) ? "We don't recognize this controller, so tell us about it!" : '', fade~
- Inside source: true
*** True Line Result
render_basics args, (@fading >= 0) ? "We don't recognize this controller, so tell us about it!" : '', fade
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return true if fade < 255 # all done for now~
- Inside source: true
*** True Line Result
return true if fade < 255 # all done for now
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ part = @parts[@current_part]~
- Inside source: true
*** True Line Result
part = @parts[@current_part]
** Processing line: ~ args.outputs.primitives << [$gtk.logical_width / 2, 575, "Please press the #{part[2]}.", 0, 1, 0, 0, 0, 255].label~
- Inside source: true
*** True Line Result
args.outputs.primitives << [$gtk.logical_width / 2, 575, "Please press the #{part[2]}.", 0, 1, 0, 0, 0, 255].label
** Processing line: ~ render_part_highlight args, part, @part_alpha~
- Inside source: true
*** True Line Result
render_part_highlight args, part, @part_alpha
** Processing line: ~ args.outputs.primitives << [$gtk.logical_width / 2, 90, '[ESCAPE]: Ignore controller, [BACKSPACE]: Go back one button, [SPACE]: Skip this button', 0, 1, 0, 0, 0, 255].label~
- Inside source: true
*** True Line Result
args.outputs.primitives << [$gtk.logical_width / 2, 90, '[ESCAPE]: Ignore controller, [BACKSPACE]: Go back one button, [SPACE]: Skip this button', 0, 1, 0, 0, 0, 255].label
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @part_alpha += @part_alpha_increment~
- Inside source: true
*** True Line Result
@part_alpha += @part_alpha_increment
** Processing line: ~ if (@part_alpha_increment > 0) && (@part_alpha >= 255)~
- Inside source: true
*** True Line Result
if (@part_alpha_increment > 0) && (@part_alpha >= 255)
** Processing line: ~ @part_alpha = 255~
- Inside source: true
*** True Line Result
@part_alpha = 255
** Processing line: ~ @part_alpha_increment = -10~
- Inside source: true
*** True Line Result
@part_alpha_increment = -10
** Processing line: ~ elsif (@part_alpha_increment < 0) && (@part_alpha <= 0)~
- Inside source: true
*** True Line Result
elsif (@part_alpha_increment < 0) && (@part_alpha <= 0)
** Processing line: ~ @part_alpha = 0~
- Inside source: true
*** True Line Result
@part_alpha = 0
** Processing line: ~ @part_alpha_increment = 10~
- Inside source: true
*** True Line Result
@part_alpha_increment = 10
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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: ~ 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: ~* controller/keys.rb~
- Header detected.
*** True Line Result
*** True Line Result
* controller/keys.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/controller/keys.rb~
- Inside source: true
*** True Line Result
# ./dragon/controller/keys.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: ~ # controller/keys.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# controller/keys.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 Controller~
- Inside source: true
*** True Line Result
class Controller
** Processing line: ~ class Keys~
- Inside source: true
*** True Line Result
class Keys
** Processing line: ~ include Serialize~
- Inside source: true
*** True Line Result
include Serialize
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ LABELS = [~
- Inside source: true
*** True Line Result
LABELS = [
** Processing line: ~ :up, :down, :left, :right,~
- Inside source: true
*** True Line Result
:up, :down, :left, :right,
** Processing line: ~ :a, :b, :x, :y,~
- Inside source: true
*** True Line Result
:a, :b, :x, :y,
** Processing line: ~ :l1, :r1,~
- Inside source: true
*** True Line Result
:l1, :r1,
** Processing line: ~ :l2, :r2,~
- Inside source: true
*** True Line Result
:l2, :r2,
** Processing line: ~ :l3, :r3,~
- Inside source: true
*** True Line Result
:l3, :r3,
** Processing line: ~ :start, :select,~
- Inside source: true
*** True Line Result
:start, :select,
** Processing line: ~ :directional_up, :directional_down, :directional_left, :directional_right~
- Inside source: true
*** True Line Result
:directional_up, :directional_down, :directional_left, :directional_right
** Processing line: ~ ].freeze~
- Inside source: true
*** True Line Result
].freeze
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ LABELS.each do |label|~
- Inside source: true
*** True Line Result
LABELS.each do |label|
** Processing line: ~ attr_reader label~
- Inside source: true
*** True Line Result
attr_reader label
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Activate a key.~
- Inside source: true
*** True Line Result
# Activate a key.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ def activate key~
- Inside source: true
*** True Line Result
def activate key
** Processing line: ~ instance_variable_set("@#{key}", Kernel.tick_count + 1)~
- Inside source: true
*** True Line Result
instance_variable_set("@#{key}", Kernel.tick_count + 1)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Deactivate a key.~
- Inside source: true
*** True Line Result
# Deactivate a key.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ def deactivate key~
- Inside source: true
*** True Line Result
def deactivate key
** Processing line: ~ instance_variable_set("@#{key}", nil)~
- Inside source: true
*** True Line Result
instance_variable_set("@#{key}", nil)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Clear all key inputs.~
- Inside source: true
*** True Line Result
# Clear all key inputs.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ def clear~
- Inside source: true
*** True Line Result
def clear
** Processing line: ~ LABELS.each { |label| deactivate(label) }~
- Inside source: true
*** True Line Result
LABELS.each { |label| deactivate(label) }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def truthy_keys~
- Inside source: true
*** True Line Result
def truthy_keys
** Processing line: ~ LABELS.select { |label| send(label) }~
- Inside source: true
*** True Line Result
LABELS.select { |label| send(label) }
** 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: ~ 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: ~* directional_input_helper_methods.rb~
- Header detected.
*** True Line Result
*** True Line Result
* directional_input_helper_methods.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/directional_input_helper_methods.rb~
- Inside source: true
*** True Line Result
# ./dragon/directional_input_helper_methods.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: ~ # directional_input_helper_methods.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# directional_input_helper_methods.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: ~ # This is a module that contains normalization of behavior related to `up`|`down`|`left`|`right` on keyboards and controllers.~
- Inside source: true
*** True Line Result
# This is a module that contains normalization of behavior related to `up`|`down`|`left`|`right` on keyboards and controllers.
** Processing line: ~ module DirectionalInputHelperMethods~
- Inside source: true
*** True Line Result
module DirectionalInputHelperMethods
** Processing line: ~ def self.included klass~
- Inside source: true
*** True Line Result
def self.included klass
** Processing line: ~ key_state_methods = [:key_held, :key_down]~
- Inside source: true
*** True Line Result
key_state_methods = [:key_held, :key_down]
** Processing line: ~ directional_methods = [:up, :down, :left, :right]~
- Inside source: true
*** True Line Result
directional_methods = [:up, :down, :left, :right]
** Processing line: ~ method_results = (directional_methods + key_state_methods).map {|m| [m, klass.instance_methods.include?(m)] }~
- Inside source: true
*** True Line Result
method_results = (directional_methods + key_state_methods).map {|m| [m, klass.instance_methods.include?(m)] }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ error_message = <<-S~
- Inside source: true
*** True Line Result
error_message = <<-S
** Processing line: ~ * ERROR~
- Inside source: true
*** True Line Result
* ERROR
** Processing line: ~ The GTK::DirectionalKeys module should only be included in objects that respond to the following api heirarchy:~
- Inside source: true
*** True Line Result
The GTK::DirectionalKeys module should only be included in objects that respond to the following api heirarchy:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ - (#{ directional_methods.join("|") })~
- Inside source: true
*** True Line Result
- (#{ directional_methods.join("|") })
** Processing line: ~ - key_held.(#{ directional_methods.join("|") })~
- Inside source: true
*** True Line Result
- key_held.(#{ directional_methods.join("|") })
** Processing line: ~ - key_down.(#{ directional_methods.join("|") })~
- Inside source: true
*** True Line Result
- key_down.(#{ directional_methods.join("|") })
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #{klass} does not respond to all of these methods (here is the diagnostics):~
- Inside source: true
*** True Line Result
#{klass} does not respond to all of these methods (here is the diagnostics):
** Processing line: ~ #{method_results.map {|m, r| "- #{m}: #{r}"}.join("\n")}~
- Inside source: true
*** True Line Result
#{method_results.map {|m, r| "- #{m}: #{r}"}.join("\n")}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Please implement the methods that returned false inthe list above.~
- Inside source: true
*** True Line Result
Please implement the methods that returned false inthe list above.
** Processing line: ~ S~
- Inside source: true
*** True Line Result
S
** Processing line: ~ unless method_results.map {|m, result| result}.all?~
- Inside source: true
*** True Line Result
unless method_results.map {|m, result| result}.all?
** Processing line: ~ raise error_message~
- Inside source: true
*** True Line Result
raise error_message
** 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: ~ # Returns a signal indicating left (`-1`), right (`1`), or neither ('0').~
- Inside source: true
*** True Line Result
# Returns a signal indicating left (`-1`), right (`1`), or neither ('0').
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Integer]~
- Inside source: true
*** True Line Result
# @return [Integer]
** Processing line: ~ def left_right~
- Inside source: true
*** True Line Result
def left_right
** Processing line: ~ return -1 if self.left~
- Inside source: true
*** True Line Result
return -1 if self.left
** Processing line: ~ return 1 if self.right~
- Inside source: true
*** True Line Result
return 1 if self.right
** Processing line: ~ return 0~
- Inside source: true
*** True Line Result
return 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns a signal indicating up (`1`), down (`-1`), or neither ('0').~
- Inside source: true
*** True Line Result
# Returns a signal indicating up (`1`), down (`-1`), or neither ('0').
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Integer]~
- Inside source: true
*** True Line Result
# @return [Integer]
** Processing line: ~ def up_down~
- Inside source: true
*** True Line Result
def up_down
** Processing line: ~ return 1 if self.up~
- Inside source: true
*** True Line Result
return 1 if self.up
** Processing line: ~ return -1 if self.down~
- Inside source: true
*** True Line Result
return -1 if self.down
** Processing line: ~ return 0~
- Inside source: true
*** True Line Result
return 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns a normal vector (in the form of an Array with two values). If no directionals are held/down, the function returns nil.~
- Inside source: true
*** True Line Result
# Returns a normal vector (in the form of an Array with two values). If no directionals are held/down, the function returns nil.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # The possible results are:~
- Inside source: true
*** True Line Result
# The possible results are:
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # - ~nil~ which denotes that no directional input exists.~
- Inside source: true
*** True Line Result
# - ~nil~ which denotes that no directional input exists.
** Processing line: ~ # - ~[ 0, 1]~ which denotes that only up is being held/pressed.~
- Inside source: true
*** True Line Result
# - ~[ 0, 1]~ which denotes that only up is being held/pressed.
** Processing line: ~ # - ~[ 0, -1]~ which denotes that only down is being held/pressed.~
- Inside source: true
*** True Line Result
# - ~[ 0, -1]~ which denotes that only down is being held/pressed.
** Processing line: ~ # - ~[ 0.5, 0.5]~ which denotes that right and up are being pressed/held.~
- Inside source: true
*** True Line Result
# - ~[ 0.5, 0.5]~ which denotes that right and up are being pressed/held.
** Processing line: ~ # - ~[-0.5, -0.5]~ which denotes that left and down are being pressed/held.~
- Inside source: true
*** True Line Result
# - ~[-0.5, -0.5]~ which denotes that left and down are being pressed/held.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def directional_vector~
- Inside source: true
*** True Line Result
def directional_vector
** Processing line: ~ lr, ud = [self.left_right, self.up_down]~
- Inside source: true
*** True Line Result
lr, ud = [self.left_right, self.up_down]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if lr == 0 && ud == 0~
- Inside source: true
*** True Line Result
if lr == 0 && ud == 0
** Processing line: ~ return nil~
- Inside source: true
*** True Line Result
return nil
** Processing line: ~ elsif lr.abs == ud.abs~
- Inside source: true
*** True Line Result
elsif lr.abs == ud.abs
** Processing line: ~ return [lr.half, ud.half]~
- Inside source: true
*** True Line Result
return [lr.half, ud.half]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return [lr, ud]~
- Inside source: true
*** True Line Result
return [lr, ud]
** 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 method_missing m, *args~
- Inside source: true
*** True Line Result
def method_missing m, *args
** Processing line: ~ # combine the key with ctrl_~
- Inside source: true
*** True Line Result
# combine the key with ctrl_
** Processing line: ~ if m.to_s.start_with?("ctrl_")~
- Inside source: true
*** True Line Result
if m.to_s.start_with?("ctrl_")
** Processing line: ~ other_key = m.to_s.split("_").last~
- Inside source: true
*** True Line Result
other_key = m.to_s.split("_").last
** Processing line: ~ define_singleton_method(m) do~
- Inside source: true
*** True Line Result
define_singleton_method(m) do
** Processing line: ~ return self.key_up.send(other_key.to_sym) && self.key_up.control~
- Inside source: true
*** True Line Result
return self.key_up.send(other_key.to_sym) && self.key_up.control
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return send(m)~
- Inside source: true
*** True Line Result
return send(m)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ # see if the key is either held or down~
- Inside source: true
*** True Line Result
# see if the key is either held or down
** Processing line: ~ define_singleton_method(m) do~
- Inside source: true
*** True Line Result
define_singleton_method(m) do
** Processing line: ~ self.key_down.send(m) || self.key_held.send(m)~
- Inside source: true
*** True Line Result
self.key_down.send(m) || self.key_held.send(m)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return send(m)~
- Inside source: true
*** True Line Result
return send(m)
** 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: ~ 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: ~* easing.rb~
- Header detected.
*** True Line Result
*** True Line Result
* easing.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/easing.rb~
- Inside source: true
*** True Line Result
# ./dragon/easing.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: ~ # easing.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# easing.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: ~ module Easing~
- Inside source: true
*** True Line Result
module Easing
** Processing line: ~ def self.ease_extended start_tick, current_tick, end_tick, default_before, default_after, *definitions~
- Inside source: true
*** True Line Result
def self.ease_extended start_tick, current_tick, end_tick, default_before, default_after, *definitions
** Processing line: ~ definitions.flatten!~
- Inside source: true
*** True Line Result
definitions.flatten!
** Processing line: ~ definitions = [:identity] if definitions.length == 0~
- Inside source: true
*** True Line Result
definitions = [:identity] if definitions.length == 0
** Processing line: ~ duration = end_tick - start_tick~
- Inside source: true
*** True Line Result
duration = end_tick - start_tick
** Processing line: ~ elapsed = current_tick - start_tick~
- Inside source: true
*** True Line Result
elapsed = current_tick - start_tick
** Processing line: ~ y = elapsed.percentage_of(duration).cap_min_max(0, 1)~
- Inside source: true
*** True Line Result
y = elapsed.percentage_of(duration).cap_min_max(0, 1)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ definitions.map do |definition|~
- Inside source: true
*** True Line Result
definitions.map do |definition|
** Processing line: ~ y = Easing.exec_definition(definition, start_tick, duration, y)~
- Inside source: true
*** True Line Result
y = Easing.exec_definition(definition, start_tick, duration, y)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ y~
- Inside source: true
*** True Line Result
y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.ease_spline_extended start_tick, current_tick, end_tick, spline~
- Inside source: true
*** True Line Result
def self.ease_spline_extended start_tick, current_tick, end_tick, spline
** Processing line: ~ duration = end_tick - start_tick~
- Inside source: true
*** True Line Result
duration = end_tick - start_tick
** Processing line: ~ t = (current_tick - start_tick).fdiv duration~
- Inside source: true
*** True Line Result
t = (current_tick - start_tick).fdiv duration
** Processing line: ~ time_allocation_per_curve = 1.fdiv(spline.length)~
- Inside source: true
*** True Line Result
time_allocation_per_curve = 1.fdiv(spline.length)
** Processing line: ~ curve_index, curve_t = t.fdiv(time_allocation_per_curve).let do |spline_t|~
- Inside source: true
*** True Line Result
curve_index, curve_t = t.fdiv(time_allocation_per_curve).let do |spline_t|
** Processing line: ~ [spline_t.to_i, spline_t - spline_t.to_i]~
- Inside source: true
*** True Line Result
[spline_t.to_i, spline_t - spline_t.to_i]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ Geometry.cubic_bezier curve_t, *spline[curve_index]~
- Inside source: true
*** True Line Result
Geometry.cubic_bezier curve_t, *spline[curve_index]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.initial_value *definitions~
- Inside source: true
*** True Line Result
def self.initial_value *definitions
** Processing line: ~ definitions.flatten!~
- Inside source: true
*** True Line Result
definitions.flatten!
** Processing line: ~ return Easing.exec_definition (definitions.value(-1) || :identity), 0, 10, 0~
- Inside source: true
*** True Line Result
return Easing.exec_definition (definitions.value(-1) || :identity), 0, 10, 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.final_value *definitions~
- Inside source: true
*** True Line Result
def self.final_value *definitions
** Processing line: ~ definitions.flatten!~
- Inside source: true
*** True Line Result
definitions.flatten!
** Processing line: ~ return Easing.exec_definition (definitions.value(-1) || :identity), 0, 10, 1.0~
- Inside source: true
*** True Line Result
return Easing.exec_definition (definitions.value(-1) || :identity), 0, 10, 1.0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.exec_definition definition, start_tick, duration, x~
- Inside source: true
*** True Line Result
def self.exec_definition definition, start_tick, duration, x
** Processing line: ~ if definition.is_a? Symbol~
- Inside source: true
*** True Line Result
if definition.is_a? Symbol
** Processing line: ~ return Easing.send(definition, x).cap_min_max(0, 1)~
- Inside source: true
*** True Line Result
return Easing.send(definition, x).cap_min_max(0, 1)
** Processing line: ~ elsif definition.is_a? Proc~
- Inside source: true
*** True Line Result
elsif definition.is_a? Proc
** Processing line: ~ return definition.call(x, start_tick, duration).cap_min_max(0, 1)~
- Inside source: true
*** True Line Result
return definition.call(x, start_tick, duration).cap_min_max(0, 1)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ raise <<-S~
- Inside source: true
*** True Line Result
raise <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ I don't know how to execute easing function with definition #{definition}.~
- Inside source: true
*** True Line Result
I don't know how to execute easing function with definition #{definition}.
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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 self.identity x~
- Inside source: true
*** True Line Result
def self.identity x
** Processing line: ~ x~
- Inside source: true
*** True Line Result
x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.flip x~
- Inside source: true
*** True Line Result
def self.flip x
** Processing line: ~ 1 - x~
- Inside source: true
*** True Line Result
1 - x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.quad x~
- Inside source: true
*** True Line Result
def self.quad x
** Processing line: ~ x * x~
- Inside source: true
*** True Line Result
x * x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.cube x~
- Inside source: true
*** True Line Result
def self.cube x
** Processing line: ~ x * x * x~
- Inside source: true
*** True Line Result
x * x * x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.quart x~
- Inside source: true
*** True Line Result
def self.quart x
** Processing line: ~ x * x * x * x * x~
- Inside source: true
*** True Line Result
x * x * x * x * x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.quint x~
- Inside source: true
*** True Line Result
def self.quint x
** Processing line: ~ x * x * x * x * x * x~
- Inside source: true
*** True Line Result
x * x * x * x * x * x
** 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: ~ Easing = GTK::Easing~
- Inside source: true
*** True Line Result
Easing = GTK::Easing
** 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: ~* geometry.rb~
- Header detected.
*** True Line Result
*** True Line Result
* geometry.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/geometry.rb~
- Inside source: true
*** True Line Result
# ./dragon/geometry.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: ~ # geometry.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# geometry.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: ~ module Geometry~
- Inside source: true
*** True Line Result
module Geometry
** Processing line: ~ # Returns f(t) for a cubic Bezier curve.~
- Inside source: true
*** True Line Result
# Returns f(t) for a cubic Bezier curve.
** Processing line: ~ def self.cubic_bezier t, a, b, c, d~
- Inside source: true
*** True Line Result
def self.cubic_bezier t, a, b, c, d
** Processing line: ~ s = 1 - t~
- Inside source: true
*** True Line Result
s = 1 - t
** Processing line: ~ s0 = 1~
- Inside source: true
*** True Line Result
s0 = 1
** Processing line: ~ s1 = s~
- Inside source: true
*** True Line Result
s1 = s
** Processing line: ~ s2 = s * s~
- Inside source: true
*** True Line Result
s2 = s * s
** Processing line: ~ s3 = s * s * s~
- Inside source: true
*** True Line Result
s3 = s * s * s
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ t0 = 1~
- Inside source: true
*** True Line Result
t0 = 1
** Processing line: ~ t1 = t~
- Inside source: true
*** True Line Result
t1 = t
** Processing line: ~ t2 = t * t~
- Inside source: true
*** True Line Result
t2 = t * t
** Processing line: ~ t3 = t * t * t~
- Inside source: true
*** True Line Result
t3 = t * t * t
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ 1 * s3 * t0 * a +~
- Inside source: true
*** True Line Result
1 * s3 * t0 * a +
** Processing line: ~ 3 * s2 * t1 * b +~
- Inside source: true
*** True Line Result
3 * s2 * t1 * b +
** Processing line: ~ 3 * s1 * t2 * c +~
- Inside source: true
*** True Line Result
3 * s1 * t2 * c +
** Processing line: ~ 1 * s0 * t3 * d~
- Inside source: true
*** True Line Result
1 * s0 * t3 * d
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns true if a primitive's rectangle is entirely inside another primitive's rectangle.~
- Inside source: true
*** True Line Result
# Returns true if a primitive's rectangle is entirely inside another primitive's rectangle.
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def inside_rect? outer~
- Inside source: true
*** True Line Result
def inside_rect? outer
** Processing line: ~ Geometry.inside_rect? self, outer~
- Inside source: true
*** True Line Result
Geometry.inside_rect? self, outer
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns true if a primitive's rectangle overlaps another primitive's rectangle.~
- Inside source: true
*** True Line Result
# Returns true if a primitive's rectangle overlaps another primitive's rectangle.
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def intersect_rect? other, tolerance = 0.1~
- Inside source: true
*** True Line Result
def intersect_rect? other, tolerance = 0.1
** Processing line: ~ Geometry.intersect_rect? self, other, tolerance~
- Inside source: true
*** True Line Result
Geometry.intersect_rect? self, other, tolerance
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def intersects_rect? *args~
- Inside source: true
*** True Line Result
def intersects_rect? *args
** Processing line: ~ Geometry.intersects_rect?(*args)~
- Inside source: true
*** True Line Result
Geometry.intersects_rect?(*args)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def scale_rect_extended percentage_x: percentage_x,~
- Inside source: true
*** True Line Result
def scale_rect_extended percentage_x: percentage_x,
** Processing line: ~ percentage_y: percentage_y,~
- Inside source: true
*** True Line Result
percentage_y: percentage_y,
** Processing line: ~ anchor_x: anchor_x,~
- Inside source: true
*** True Line Result
anchor_x: anchor_x,
** Processing line: ~ anchor_y: anchor_y~
- Inside source: true
*** True Line Result
anchor_y: anchor_y
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Geometry.scale_rect_extended self,~
- Inside source: true
*** True Line Result
Geometry.scale_rect_extended self,
** Processing line: ~ percentage_x: percentage_x,~
- Inside source: true
*** True Line Result
percentage_x: percentage_x,
** Processing line: ~ percentage_y: percentage_y,~
- Inside source: true
*** True Line Result
percentage_y: percentage_y,
** Processing line: ~ anchor_x: anchor_x,~
- Inside source: true
*** True Line Result
anchor_x: anchor_x,
** Processing line: ~ anchor_y: anchor_y~
- Inside source: true
*** True Line Result
anchor_y: anchor_y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Scales a primitive rect by a percentage.~
- Inside source: true
*** True Line Result
# Scales a primitive rect by a percentage.
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def scale_rect percentage, *anchors~
- Inside source: true
*** True Line Result
def scale_rect percentage, *anchors
** Processing line: ~ Geometry.scale_rect self, percentage, *anchors~
- Inside source: true
*** True Line Result
Geometry.scale_rect self, percentage, *anchors
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the angle from one primitive to another primitive.~
- Inside source: true
*** True Line Result
# Returns the angle from one primitive to another primitive.
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def angle_to other_point~
- Inside source: true
*** True Line Result
def angle_to other_point
** Processing line: ~ Geometry.angle_to self, other_point~
- Inside source: true
*** True Line Result
Geometry.angle_to self, other_point
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the angle to one primitive from another primitive.~
- Inside source: true
*** True Line Result
# Returns the angle to one primitive from another primitive.
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def angle_from other_point~
- Inside source: true
*** True Line Result
def angle_from other_point
** Processing line: ~ Geometry.angle_from self, other_point~
- Inside source: true
*** True Line Result
Geometry.angle_from self, other_point
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns true if a primitive is within a circle specified by the circle's center and radius.~
- Inside source: true
*** True Line Result
# Returns true if a primitive is within a circle specified by the circle's center and radius.
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def point_inside_circle? circle_center_point, radius~
- Inside source: true
*** True Line Result
def point_inside_circle? circle_center_point, radius
** Processing line: ~ Geometry.point_inside_circle? self, circle_center_point, radius~
- Inside source: true
*** True Line Result
Geometry.point_inside_circle? self, circle_center_point, radius
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def center_inside_rect other_rect~
- Inside source: true
*** True Line Result
def center_inside_rect other_rect
** Processing line: ~ offset_x = (other_rect.w - w).half~
- Inside source: true
*** True Line Result
offset_x = (other_rect.w - w).half
** Processing line: ~ offset_y = (other_rect.h - h).half~
- Inside source: true
*** True Line Result
offset_y = (other_rect.h - h).half
** Processing line: ~ new_rect = self.shift_rect(0, 0)~
- Inside source: true
*** True Line Result
new_rect = self.shift_rect(0, 0)
** Processing line: ~ new_rect.x = other_rect.x + offset_x~
- Inside source: true
*** True Line Result
new_rect.x = other_rect.x + offset_x
** Processing line: ~ new_rect.y = other_rect.y + offset_y~
- Inside source: true
*** True Line Result
new_rect.y = other_rect.y + offset_y
** Processing line: ~ new_rect~
- Inside source: true
*** True Line Result
new_rect
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, <<-S~
- Inside source: true
*** True Line Result
raise e, <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ center_inside_rect for self #{self} and other_rect #{other_rect}. Failed with exception #{e}.~
- Inside source: true
*** True Line Result
center_inside_rect for self #{self} and other_rect #{other_rect}. Failed with exception #{e}.
** 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 center_inside_rect_y other_rect~
- Inside source: true
*** True Line Result
def center_inside_rect_y other_rect
** Processing line: ~ offset_y = (other_rect.h - h).half~
- Inside source: true
*** True Line Result
offset_y = (other_rect.h - h).half
** Processing line: ~ new_rect = self.shift_rect(0, 0)~
- Inside source: true
*** True Line Result
new_rect = self.shift_rect(0, 0)
** Processing line: ~ new_rect.y = other_rect.y + offset_y~
- Inside source: true
*** True Line Result
new_rect.y = other_rect.y + offset_y
** Processing line: ~ new_rect~
- Inside source: true
*** True Line Result
new_rect
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, <<-S~
- Inside source: true
*** True Line Result
raise e, <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ center_inside_rect_y for self #{self} and other_rect #{other_rect}. Failed with exception #{e}.~
- Inside source: true
*** True Line Result
center_inside_rect_y for self #{self} and other_rect #{other_rect}. Failed with exception #{e}.
** 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 center_inside_rect_x other_rect~
- Inside source: true
*** True Line Result
def center_inside_rect_x other_rect
** Processing line: ~ offset_x = (other_rect.w - w).half~
- Inside source: true
*** True Line Result
offset_x = (other_rect.w - w).half
** Processing line: ~ new_rect = self.shift_rect(0, 0)~
- Inside source: true
*** True Line Result
new_rect = self.shift_rect(0, 0)
** Processing line: ~ new_rect.x = other_rect.x + offset_x~
- Inside source: true
*** True Line Result
new_rect.x = other_rect.x + offset_x
** Processing line: ~ new_rect~
- Inside source: true
*** True Line Result
new_rect
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, <<-S~
- Inside source: true
*** True Line Result
raise e, <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ center_inside_rect_x for self #{self} and other_rect #{other_rect}. Failed with exception #{e}.~
- Inside source: true
*** True Line Result
center_inside_rect_x for self #{self} and other_rect #{other_rect}. Failed with exception #{e}.
** 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: ~ # Returns a primitive that is anchored/repositioned based off its retangle.~
- Inside source: true
*** True Line Result
# Returns a primitive that is anchored/repositioned based off its retangle.
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def anchor_rect anchor_x, anchor_y~
- Inside source: true
*** True Line Result
def anchor_rect anchor_x, anchor_y
** Processing line: ~ current_w = self.w~
- Inside source: true
*** True Line Result
current_w = self.w
** Processing line: ~ current_h = self.h~
- Inside source: true
*** True Line Result
current_h = self.h
** Processing line: ~ delta_x = -1 * (anchor_x * current_w)~
- Inside source: true
*** True Line Result
delta_x = -1 * (anchor_x * current_w)
** Processing line: ~ delta_y = -1 * (anchor_y * current_h)~
- Inside source: true
*** True Line Result
delta_y = -1 * (anchor_y * current_h)
** Processing line: ~ self.shift_rect(delta_x, delta_y)~
- Inside source: true
*** True Line Result
self.shift_rect(delta_x, delta_y)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def angle_given_point other_point~
- Inside source: true
*** True Line Result
def angle_given_point other_point
** Processing line: ~ raise ":angle_given_point has been deprecated use :angle_from instead."~
- Inside source: true
*** True Line Result
raise ":angle_given_point has been deprecated use :angle_from instead."
** 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.shift_line line, x, y~
- Inside source: true
*** True Line Result
def self.shift_line line, x, y
** Processing line: ~ if line.is_a?(Array) || line.is_a?(Hash)~
- Inside source: true
*** True Line Result
if line.is_a?(Array) || line.is_a?(Hash)
** Processing line: ~ new_line = line.dup~
- Inside source: true
*** True Line Result
new_line = line.dup
** Processing line: ~ new_line.x += x~
- Inside source: true
*** True Line Result
new_line.x += x
** Processing line: ~ new_line.x2 += x~
- Inside source: true
*** True Line Result
new_line.x2 += x
** Processing line: ~ new_line.y += y~
- Inside source: true
*** True Line Result
new_line.y += y
** Processing line: ~ new_line.y2 += y~
- Inside source: true
*** True Line Result
new_line.y2 += y
** Processing line: ~ new_line~
- Inside source: true
*** True Line Result
new_line
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ raise "shift_line for #{line} is not supported."~
- Inside source: true
*** True Line Result
raise "shift_line for #{line} is not supported."
** 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 self.intersects_rect? *args~
- Inside source: true
*** True Line Result
def self.intersects_rect? *args
** Processing line: ~ raise <<-S~
- Inside source: true
*** True Line Result
raise <<-S
** Processing line: ~ intersects_rect? (with an \"s\") has been deprecated.~
- Inside source: true
*** True Line Result
intersects_rect? (with an \"s\") has been deprecated.
** Processing line: ~ Use intersect_rect? instead (remove the \"s\").~
- Inside source: true
*** True Line Result
Use intersect_rect? instead (remove the \"s\").
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ * NOTE:~
- Inside source: true
*** True Line Result
* NOTE:
** Processing line: ~ Ruby's naming convention is to *never* include the \"s\" for~
- Inside source: true
*** True Line Result
Ruby's naming convention is to *never* include the \"s\" for
** Processing line: ~ interrogative method names (methods that end with a ?). It~
- Inside source: true
*** True Line Result
interrogative method names (methods that end with a ?). It
** Processing line: ~ doesn't sound grammatically correct, but that has been the~
- Inside source: true
*** True Line Result
doesn't sound grammatically correct, but that has been the
** Processing line: ~ rule for a long time (and why intersects_rect? has been deprecated).~
- Inside source: true
*** True Line Result
rule for a long time (and why intersects_rect? has been deprecated).
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def self.line_y_intercept line~
- Inside source: true
*** True Line Result
def self.line_y_intercept line
** Processing line: ~ line.y - line_slope(line) * line.x~
- Inside source: true
*** True Line Result
line.y - line_slope(line) * line.x
** 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.angle_between_lines line_one, line_two, replace_infinity: nil~
- Inside source: true
*** True Line Result
def self.angle_between_lines line_one, line_two, replace_infinity: nil
** Processing line: ~ m_line_one = line_slope line_one, replace_infinity: replace_infinity~
- Inside source: true
*** True Line Result
m_line_one = line_slope line_one, replace_infinity: replace_infinity
** Processing line: ~ m_line_two = line_slope line_two, replace_infinity: replace_infinity~
- Inside source: true
*** True Line Result
m_line_two = line_slope line_two, replace_infinity: replace_infinity
** Processing line: ~ Math.atan((m_line_one - m_line_two) / (1 + m_line_two * m_line_one)).to_degrees~
- Inside source: true
*** True Line Result
Math.atan((m_line_one - m_line_two) / (1 + m_line_two * m_line_one)).to_degrees
** 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.line_slope line, replace_infinity: nil~
- Inside source: true
*** True Line Result
def self.line_slope line, replace_infinity: nil
** Processing line: ~ (line.y2 - line.y).fdiv(line.x2 - line.x)~
- Inside source: true
*** True Line Result
(line.y2 - line.y).fdiv(line.x2 - line.x)
** Processing line: ~ .replace_infinity(replace_infinity)~
- Inside source: true
*** True Line Result
.replace_infinity(replace_infinity)
** 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.ray_test point, line~
- Inside source: true
*** True Line Result
def self.ray_test point, line
** Processing line: ~ slope = (line.y2 - line.y).fdiv(line.x2 - line.x)~
- Inside source: true
*** True Line Result
slope = (line.y2 - line.y).fdiv(line.x2 - line.x)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if line.x > line.x2~
- Inside source: true
*** True Line Result
if line.x > line.x2
** Processing line: ~ point_two, point_one = [point_one, point_two]~
- Inside source: true
*** True Line Result
point_two, point_one = [point_one, point_two]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ r = ((line.x2 - line.x) * (point.y - line.y) -~
- Inside source: true
*** True Line Result
r = ((line.x2 - line.x) * (point.y - line.y) -
** Processing line: ~ (point.x - line.x) * (line.y2 - line.y))~
- Inside source: true
*** True Line Result
(point.x - line.x) * (line.y2 - line.y))
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if r == 0~
- Inside source: true
*** True Line Result
if r == 0
** Processing line: ~ return :on~
- Inside source: true
*** True Line Result
return :on
** Processing line: ~ elsif r < 0~
- Inside source: true
*** True Line Result
elsif r < 0
** Processing line: ~ return :right if slope >= 0~
- Inside source: true
*** True Line Result
return :right if slope >= 0
** Processing line: ~ return :left~
- Inside source: true
*** True Line Result
return :left
** Processing line: ~ elsif r > 0~
- Inside source: true
*** True Line Result
elsif r > 0
** Processing line: ~ return :left if slope >= 0~
- Inside source: true
*** True Line Result
return :left if slope >= 0
** Processing line: ~ return :right~
- Inside source: true
*** True Line Result
return :right
** 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: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def self.line_rect line~
- Inside source: true
*** True Line Result
def self.line_rect line
** Processing line: ~ if line.x > line.x2~
- Inside source: true
*** True Line Result
if line.x > line.x2
** Processing line: ~ x = line.x2~
- Inside source: true
*** True Line Result
x = line.x2
** Processing line: ~ y = line.y2~
- Inside source: true
*** True Line Result
y = line.y2
** Processing line: ~ x2 = line.x~
- Inside source: true
*** True Line Result
x2 = line.x
** Processing line: ~ y2 = line.y~
- Inside source: true
*** True Line Result
y2 = line.y
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ x = line.x~
- Inside source: true
*** True Line Result
x = line.x
** Processing line: ~ y = line.y~
- Inside source: true
*** True Line Result
y = line.y
** Processing line: ~ x2 = line.x2~
- Inside source: true
*** True Line Result
x2 = line.x2
** Processing line: ~ y2 = line.y2~
- Inside source: true
*** True Line Result
y2 = line.y2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ w = x2 - x~
- Inside source: true
*** True Line Result
w = x2 - x
** Processing line: ~ h = y2 - y~
- Inside source: true
*** True Line Result
h = y2 - y
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ { x: x, y: y, w: w, h: h }~
- Inside source: true
*** True Line Result
{ x: x, y: y, w: w, h: h }
** 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.line_intersect line_one, line_two~
- Inside source: true
*** True Line Result
def self.line_intersect line_one, line_two
** Processing line: ~ m1 = line_slope(line_one)~
- Inside source: true
*** True Line Result
m1 = line_slope(line_one)
** Processing line: ~ m2 = line_slope(line_two)~
- Inside source: true
*** True Line Result
m2 = line_slope(line_two)
** Processing line: ~ b1 = line_y_intercept(line_one)~
- Inside source: true
*** True Line Result
b1 = line_y_intercept(line_one)
** Processing line: ~ b2 = line_y_intercept(line_two)~
- Inside source: true
*** True Line Result
b2 = line_y_intercept(line_two)
** Processing line: ~ x = (b1 - b2) / (m2 - m1)~
- Inside source: true
*** True Line Result
x = (b1 - b2) / (m2 - m1)
** Processing line: ~ y = (-b2.fdiv(m2) + b1.fdiv(m1)).fdiv(1.fdiv(m1) - 1.fdiv(m2))~
- Inside source: true
*** True Line Result
y = (-b2.fdiv(m2) + b1.fdiv(m1)).fdiv(1.fdiv(m1) - 1.fdiv(m2))
** Processing line: ~ [x, y]~
- Inside source: true
*** True Line Result
[x, y]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.contract_intersect_rect?~
- Inside source: true
*** True Line Result
def self.contract_intersect_rect?
** Processing line: ~ [:left, :right, :top, :bottom]~
- Inside source: true
*** True Line Result
[:left, :right, :top, :bottom]
** 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.intersect_rect? rect_one, rect_two, tolerance = 0.1~
- Inside source: true
*** True Line Result
def self.intersect_rect? rect_one, rect_two, tolerance = 0.1
** Processing line: ~ return false if rect_one.right - tolerance < rect_two.left + tolerance~
- Inside source: true
*** True Line Result
return false if rect_one.right - tolerance < rect_two.left + tolerance
** Processing line: ~ return false if rect_one.left + tolerance > rect_two.right - tolerance~
- Inside source: true
*** True Line Result
return false if rect_one.left + tolerance > rect_two.right - tolerance
** Processing line: ~ return false if rect_one.top - tolerance < rect_two.bottom + tolerance~
- Inside source: true
*** True Line Result
return false if rect_one.top - tolerance < rect_two.bottom + tolerance
** Processing line: ~ return false if rect_one.bottom + tolerance > rect_two.top - tolerance~
- Inside source: true
*** True Line Result
return false if rect_one.bottom + tolerance > rect_two.top - tolerance
** Processing line: ~ return true~
- Inside source: true
*** True Line Result
return true
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ context_help_rect_one = (rect_one.help_contract_implementation contract_intersect_rect?)[:not_implemented_methods]~
- Inside source: true
*** True Line Result
context_help_rect_one = (rect_one.help_contract_implementation contract_intersect_rect?)[:not_implemented_methods]
** Processing line: ~ context_help_rect_two = (rect_two.help_contract_implementation contract_intersect_rect?)[:not_implemented_methods]~
- Inside source: true
*** True Line Result
context_help_rect_two = (rect_two.help_contract_implementation contract_intersect_rect?)[:not_implemented_methods]
** Processing line: ~ context_help = ""~
- Inside source: true
*** True Line Result
context_help = ""
** Processing line: ~ if context_help_rect_one && context_help_rect_one.length > 0~
- Inside source: true
*** True Line Result
if context_help_rect_one && context_help_rect_one.length > 0
** Processing line: ~ context_help += <<-S~
- Inside source: true
*** True Line Result
context_help += <<-S
** Processing line: ~ rect_one needs to implement the following methods: #{context_help_rect_one}~
- Inside source: true
*** True Line Result
rect_one needs to implement the following methods: #{context_help_rect_one}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ You may want to try include the ~AttrRect~ module which will give you these methods.~
- Inside source: true
*** True Line Result
You may want to try include the ~AttrRect~ module which will give you these methods.
** 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: ~ if context_help_rect_two && context_help_rect_two.length > 0~
- Inside source: true
*** True Line Result
if context_help_rect_two && context_help_rect_two.length > 0
** Processing line: ~ context_help += <<-S~
- Inside source: true
*** True Line Result
context_help += <<-S
** Processing line: ~ * FAILURE REASON:~
- Inside source: true
*** True Line Result
* FAILURE REASON:
** Processing line: ~ rect_two needs to implement the following methods: #{context_help_rect_two}~
- Inside source: true
*** True Line Result
rect_two needs to implement the following methods: #{context_help_rect_two}
** Processing line: ~ NOTE: You may want to try include the ~GTK::Geometry~ module which will give you these methods.~
- Inside source: true
*** True Line Result
NOTE: You may want to try include the ~GTK::Geometry~ module which will give you these methods.
** 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: ~ raise e, <<-S~
- Inside source: true
*** True Line Result
raise e, <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ :intersect_rect? failed for~
- Inside source: true
*** True Line Result
:intersect_rect? failed for
** Processing line: ~ - rect_one: #{rect_one}~
- Inside source: true
*** True Line Result
- rect_one: #{rect_one}
** Processing line: ~ - rect_two: #{rect_two}~
- Inside source: true
*** True Line Result
- rect_two: #{rect_two}
** Processing line: ~ #{context_help}~
- Inside source: true
*** True Line Result
#{context_help}
** 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: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def self.to_square size, x, y, anchor_x = 0.5, anchor_y = nil~
- Inside source: true
*** True Line Result
def self.to_square size, x, y, anchor_x = 0.5, anchor_y = nil
** Processing line: ~ anchor_y ||= anchor_x~
- Inside source: true
*** True Line Result
anchor_y ||= anchor_x
** Processing line: ~ x = x.shift_left(size * anchor_x)~
- Inside source: true
*** True Line Result
x = x.shift_left(size * anchor_x)
** Processing line: ~ y = y.shift_down(size * anchor_y)~
- Inside source: true
*** True Line Result
y = y.shift_down(size * anchor_y)
** Processing line: ~ [x, y, size, size]~
- Inside source: true
*** True Line Result
[x, y, size, size]
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, ":to_square failed for size: #{size} x: #{x} y: #{y} anchor_x: #{anchor_x} anchor_y: #{anchor_y}."~
- Inside source: true
*** True Line Result
raise e, ":to_square failed for size: #{size} x: #{x} y: #{y} anchor_x: #{anchor_x} anchor_y: #{anchor_y}."
** 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.distance point_one, point_two~
- Inside source: true
*** True Line Result
def self.distance point_one, point_two
** Processing line: ~ Math.sqrt((point_two.x - point_one.x)**2 + (point_two.y - point_one.y)**2)~
- Inside source: true
*** True Line Result
Math.sqrt((point_two.x - point_one.x)**2 + (point_two.y - point_one.y)**2)
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, ":distance failed for point_one: #{point_one} point_two #{point_two}."~
- Inside source: true
*** True Line Result
raise e, ":distance failed for point_one: #{point_one} point_two #{point_two}."
** 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.angle_from start_point, end_point~
- Inside source: true
*** True Line Result
def self.angle_from start_point, end_point
** Processing line: ~ d_y = end_point.y - start_point.y~
- Inside source: true
*** True Line Result
d_y = end_point.y - start_point.y
** Processing line: ~ d_x = end_point.x - start_point.x~
- Inside source: true
*** True Line Result
d_x = end_point.x - start_point.x
** Processing line: ~ Math::PI.+(Math.atan2(d_y, d_x)).to_degrees~
- Inside source: true
*** True Line Result
Math::PI.+(Math.atan2(d_y, d_x)).to_degrees
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, ":angle_from failed for start_point: #{start_point} end_point: #{end_point}."~
- Inside source: true
*** True Line Result
raise e, ":angle_from failed for start_point: #{start_point} end_point: #{end_point}."
** 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.angle_to start_point, end_point~
- Inside source: true
*** True Line Result
def self.angle_to start_point, end_point
** Processing line: ~ angle_from end_point, start_point~
- Inside source: true
*** True Line Result
angle_from end_point, start_point
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, ":angle_to failed for start_point: #{start_point} end_point: #{end_point}."~
- Inside source: true
*** True Line Result
raise e, ":angle_to failed for start_point: #{start_point} end_point: #{end_point}."
** 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.point_inside_circle? point, circle_center_point, radius~
- Inside source: true
*** True Line Result
def self.point_inside_circle? point, circle_center_point, radius
** Processing line: ~ (point.x - circle_center_point.x) ** 2 + (point.y - circle_center_point.y) ** 2 < radius ** 2~
- Inside source: true
*** True Line Result
(point.x - circle_center_point.x) ** 2 + (point.y - circle_center_point.y) ** 2 < radius ** 2
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, ":point_inside_circle? failed for point: #{point} circle_center_point: #{circle_center_point} radius: #{radius}"~
- Inside source: true
*** True Line Result
raise e, ":point_inside_circle? failed for point: #{point} circle_center_point: #{circle_center_point} radius: #{radius}"
** 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.inside_rect? inner_rect, outer_rect~
- Inside source: true
*** True Line Result
def self.inside_rect? inner_rect, outer_rect
** Processing line: ~ inner_rect.x >= outer_rect.x &&~
- Inside source: true
*** True Line Result
inner_rect.x >= outer_rect.x &&
** Processing line: ~ inner_rect.right <= outer_rect.right &&~
- Inside source: true
*** True Line Result
inner_rect.right <= outer_rect.right &&
** Processing line: ~ inner_rect.y >= outer_rect.y &&~
- Inside source: true
*** True Line Result
inner_rect.y >= outer_rect.y &&
** Processing line: ~ inner_rect.top <= outer_rect.top~
- Inside source: true
*** True Line Result
inner_rect.top <= outer_rect.top
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, ":inside_rect? failed for inner_rect: #{inner_rect} outer_rect: #{outer_rect}."~
- Inside source: true
*** True Line Result
raise e, ":inside_rect? failed for inner_rect: #{inner_rect} outer_rect: #{outer_rect}."
** 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.scale_rect_extended rect,~
- Inside source: true
*** True Line Result
def self.scale_rect_extended rect,
** Processing line: ~ percentage_x: percentage_x,~
- Inside source: true
*** True Line Result
percentage_x: percentage_x,
** Processing line: ~ percentage_y: percentage_y,~
- Inside source: true
*** True Line Result
percentage_y: percentage_y,
** Processing line: ~ anchor_x: anchor_x,~
- Inside source: true
*** True Line Result
anchor_x: anchor_x,
** Processing line: ~ anchor_y: anchor_y~
- Inside source: true
*** True Line Result
anchor_y: anchor_y
** Processing line: ~ anchor_x ||= 0.0~
- Inside source: true
*** True Line Result
anchor_x ||= 0.0
** Processing line: ~ anchor_y ||= 0.0~
- Inside source: true
*** True Line Result
anchor_y ||= 0.0
** Processing line: ~ percentage_x ||= 1.0~
- Inside source: true
*** True Line Result
percentage_x ||= 1.0
** Processing line: ~ percentage_y ||= 1.0~
- Inside source: true
*** True Line Result
percentage_y ||= 1.0
** Processing line: ~ new_w = rect.w * percentage_x~
- Inside source: true
*** True Line Result
new_w = rect.w * percentage_x
** Processing line: ~ new_h = rect.h * percentage_y~
- Inside source: true
*** True Line Result
new_h = rect.h * percentage_y
** Processing line: ~ new_x = rect.x + (rect.w - new_w) * anchor_x~
- Inside source: true
*** True Line Result
new_x = rect.x + (rect.w - new_w) * anchor_x
** Processing line: ~ new_y = rect.y + (rect.h - new_h) * anchor_y~
- Inside source: true
*** True Line Result
new_y = rect.y + (rect.h - new_h) * anchor_y
** Processing line: ~ if rect.is_a? Array~
- Inside source: true
*** True Line Result
if rect.is_a? Array
** Processing line: ~ return [~
- Inside source: true
*** True Line Result
return [
** Processing line: ~ new_x,~
- Inside source: true
*** True Line Result
new_x,
** Processing line: ~ new_y,~
- Inside source: true
*** True Line Result
new_y,
** Processing line: ~ new_w,~
- Inside source: true
*** True Line Result
new_w,
** Processing line: ~ new_h,~
- Inside source: true
*** True Line Result
new_h,
** Processing line: ~ *rect[4..-1]~
- Inside source: true
*** True Line Result
*rect[4..-1]
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~ elsif rect.is_a? Hash~
- Inside source: true
*** True Line Result
elsif rect.is_a? Hash
** Processing line: ~ return rect.merge(x: new_x, y: new_y, w: new_w, h: new_h)~
- Inside source: true
*** True Line Result
return rect.merge(x: new_x, y: new_y, w: new_w, h: new_h)
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ rect.x = new_x~
- Inside source: true
*** True Line Result
rect.x = new_x
** Processing line: ~ rect.y = new_y~
- Inside source: true
*** True Line Result
rect.y = new_y
** Processing line: ~ rect.w = new_w~
- Inside source: true
*** True Line Result
rect.w = new_w
** Processing line: ~ rect.h = new_h~
- Inside source: true
*** True Line Result
rect.h = new_h
** Processing line: ~ return rect~
- Inside source: true
*** True Line Result
return rect
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, ":scale_rect_extended failed for rect: #{rect} percentage_x: #{percentage_x} percentage_y: #{percentage_y} anchors_x: #{anchor_x} anchor_y: #{anchor_y}."~
- Inside source: true
*** True Line Result
raise e, ":scale_rect_extended failed for rect: #{rect} percentage_x: #{percentage_x} percentage_y: #{percentage_y} anchors_x: #{anchor_x} anchor_y: #{anchor_y}."
** 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.scale_rect rect, percentage, *anchors~
- Inside source: true
*** True Line Result
def self.scale_rect rect, percentage, *anchors
** Processing line: ~ anchor_x, anchor_y = *anchors.flatten~
- Inside source: true
*** True Line Result
anchor_x, anchor_y = *anchors.flatten
** Processing line: ~ anchor_x ||= 0~
- Inside source: true
*** True Line Result
anchor_x ||= 0
** Processing line: ~ anchor_y ||= anchor_x~
- Inside source: true
*** True Line Result
anchor_y ||= anchor_x
** Processing line: ~ Geometry.scale_rect_extended rect,~
- Inside source: true
*** True Line Result
Geometry.scale_rect_extended rect,
** Processing line: ~ percentage_x: percentage,~
- Inside source: true
*** True Line Result
percentage_x: percentage,
** Processing line: ~ percentage_y: percentage,~
- Inside source: true
*** True Line Result
percentage_y: percentage,
** Processing line: ~ anchor_x: anchor_x,~
- Inside source: true
*** True Line Result
anchor_x: anchor_x,
** Processing line: ~ anchor_y: anchor_y~
- Inside source: true
*** True Line Result
anchor_y: anchor_y
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, ":scale_rect failed for rect: #{rect} percentage: #{percentage} anchors [#{anchor_x} (x), #{anchor_y} (y)]."~
- Inside source: true
*** True Line Result
raise e, ":scale_rect failed for rect: #{rect} percentage: #{percentage} anchors [#{anchor_x} (x), #{anchor_y} (y)]."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end # module Geometry~
- Inside source: true
*** True Line Result
end # module Geometry
** Processing line: ~ end # module GTK~
- Inside source: true
*** True Line Result
end # module GTK
** 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: ~* grid.rb~
- Header detected.
*** True Line Result
*** True Line Result
* grid.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/grid.rb~
- Inside source: true
*** True Line Result
# ./dragon/grid.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: ~ # grid.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# grid.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 Grid~
- Inside source: true
*** True Line Result
class Grid
** Processing line: ~ include Serialize~
- Inside source: true
*** True Line Result
include Serialize
** Processing line: ~ SCREEN_Y_DIRECTION = -1.0~
- Inside source: true
*** True Line Result
SCREEN_Y_DIRECTION = -1.0
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The coordinate system currently in use.~
- Inside source: true
*** True Line Result
# The coordinate system currently in use.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Symbol] `:bottom_left` or `:center`~
- Inside source: true
*** True Line Result
# @return [Symbol] `:bottom_left` or `:center`
** Processing line: ~ attr_accessor :name~
- Inside source: true
*** True Line Result
attr_accessor :name
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the "x" coordinate indicating the bottom of the screen.~
- Inside source: true
*** True Line Result
# Returns the "x" coordinate indicating the bottom of the screen.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ attr_accessor :bottom~
- Inside source: true
*** True Line Result
attr_accessor :bottom
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the "x" coordinate indicating the top of the screen.~
- Inside source: true
*** True Line Result
# Returns the "x" coordinate indicating the top of the screen.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ attr_accessor :top~
- Inside source: true
*** True Line Result
attr_accessor :top
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the "y" coordinate indicating the left of the screen.~
- Inside source: true
*** True Line Result
# Returns the "y" coordinate indicating the left of the screen.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ attr_accessor :left~
- Inside source: true
*** True Line Result
attr_accessor :left
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the "y" coordinate indicating the right of the screen.~
- Inside source: true
*** True Line Result
# Returns the "y" coordinate indicating the right of the screen.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ attr_accessor :right~
- Inside source: true
*** True Line Result
attr_accessor :right
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the "x" coordinate indicating the center of the screen.~
- Inside source: true
*** True Line Result
# Returns the "x" coordinate indicating the center of the screen.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ attr_accessor :center_x~
- Inside source: true
*** True Line Result
attr_accessor :center_x
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the "y" coordinate indicating the center of the screen.~
- Inside source: true
*** True Line Result
# Returns the "y" coordinate indicating the center of the screen.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ attr_accessor :center_y~
- Inside source: true
*** True Line Result
attr_accessor :center_y
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the bottom left and top right coordinates in a single list.~
- Inside source: true
*** True Line Result
# Returns the bottom left and top right coordinates in a single list.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [[Float, Float, Float, Float]]~
- Inside source: true
*** True Line Result
# @return [[Float, Float, Float, Float]]
** Processing line: ~ attr_accessor :rect~
- Inside source: true
*** True Line Result
attr_accessor :rect
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the "x" coordinate of the origin.~
- Inside source: true
*** True Line Result
# Returns the "x" coordinate of the origin.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ attr_accessor :origin_x~
- Inside source: true
*** True Line Result
attr_accessor :origin_x
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the "y" coordinate of the origin.~
- Inside source: true
*** True Line Result
# Returns the "y" coordinate of the origin.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ attr_accessor :origin_y~
- Inside source: true
*** True Line Result
attr_accessor :origin_y
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ attr_accessor :left_margin, :bottom_margin~
- Inside source: true
*** True Line Result
attr_accessor :left_margin, :bottom_margin
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize runtime~
- Inside source: true
*** True Line Result
def initialize runtime
** Processing line: ~ @runtime = runtime~
- Inside source: true
*** True Line Result
@runtime = runtime
** Processing line: ~ @ffi_draw = runtime.ffi_draw~
- Inside source: true
*** True Line Result
@ffi_draw = runtime.ffi_draw
** Processing line: ~ origin_bottom_left!~
- Inside source: true
*** True Line Result
origin_bottom_left!
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns `x` plus the origin "x".~
- Inside source: true
*** True Line Result
# Returns `x` plus the origin "x".
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ def transform_x x~
- Inside source: true
*** True Line Result
def transform_x x
** Processing line: ~ @origin_x + x~
- Inside source: true
*** True Line Result
@origin_x + x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns `x` minus the origin "x".~
- Inside source: true
*** True Line Result
# Returns `x` minus the origin "x".
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ def untransform_x x~
- Inside source: true
*** True Line Result
def untransform_x x
** Processing line: ~ x - @origin_x~
- Inside source: true
*** True Line Result
x - @origin_x
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns `y` plus the origin "y".~
- Inside source: true
*** True Line Result
# Returns `y` plus the origin "y".
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ def transform_y y~
- Inside source: true
*** True Line Result
def transform_y y
** Processing line: ~ @origin_y + y * SCREEN_Y_DIRECTION~
- Inside source: true
*** True Line Result
@origin_y + y * SCREEN_Y_DIRECTION
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns `y` minus the origin "y".~
- Inside source: true
*** True Line Result
# Returns `y` minus the origin "y".
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ def untransform_y y~
- Inside source: true
*** True Line Result
def untransform_y y
** Processing line: ~ @origin_y + y * SCREEN_Y_DIRECTION~
- Inside source: true
*** True Line Result
@origin_y + y * SCREEN_Y_DIRECTION
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def ffi_draw~
- Inside source: true
*** True Line Result
def ffi_draw
** Processing line: ~ @ffi_draw~
- Inside source: true
*** True Line Result
@ffi_draw
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def ffi_draw= value~
- Inside source: true
*** True Line Result
def ffi_draw= value
** Processing line: ~ @ffi_draw = value~
- Inside source: true
*** True Line Result
@ffi_draw = value
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the rendering coordinate system to have its origin in the bottom left.~
- Inside source: true
*** True Line Result
# Sets the rendering coordinate system to have its origin in the bottom left.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def origin_bottom_left!~
- Inside source: true
*** True Line Result
def origin_bottom_left!
** Processing line: ~ return if @name == :bottom_left~
- Inside source: true
*** True Line Result
return if @name == :bottom_left
** Processing line: ~ @name = :bottom_left~
- Inside source: true
*** True Line Result
@name = :bottom_left
** Processing line: ~ @origin_x = 0.0~
- Inside source: true
*** True Line Result
@origin_x = 0.0
** Processing line: ~ @origin_y = @runtime.logical_height~
- Inside source: true
*** True Line Result
@origin_y = @runtime.logical_height
** Processing line: ~ @left = 0.0~
- Inside source: true
*** True Line Result
@left = 0.0
** Processing line: ~ @right = @runtime.logical_width~
- Inside source: true
*** True Line Result
@right = @runtime.logical_width
** Processing line: ~ @top = @runtime.logical_height~
- Inside source: true
*** True Line Result
@top = @runtime.logical_height
** Processing line: ~ @bottom = 0.0~
- Inside source: true
*** True Line Result
@bottom = 0.0
** Processing line: ~ @left_margin = 0.0~
- Inside source: true
*** True Line Result
@left_margin = 0.0
** Processing line: ~ @bottom_margin = 0.0~
- Inside source: true
*** True Line Result
@bottom_margin = 0.0
** Processing line: ~ @center_x = @runtime.logical_width.half~
- Inside source: true
*** True Line Result
@center_x = @runtime.logical_width.half
** Processing line: ~ @center_y = @runtime.logical_height.half~
- Inside source: true
*** True Line Result
@center_y = @runtime.logical_height.half
** Processing line: ~ @rect = [@left, @bottom, @runtime.logical_width, @runtime.logical_height].rect~
- Inside source: true
*** True Line Result
@rect = [@left, @bottom, @runtime.logical_width, @runtime.logical_height].rect
** Processing line: ~ @center = [@center_x, @center_y].point~
- Inside source: true
*** True Line Result
@center = [@center_x, @center_y].point
** Processing line: ~ @ffi_draw.set_grid @origin_x, @origin_y, SCREEN_Y_DIRECTION~
- Inside source: true
*** True Line Result
@ffi_draw.set_grid @origin_x, @origin_y, SCREEN_Y_DIRECTION
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Sets the rendering coordinate system to have its origin in the center.~
- Inside source: true
*** True Line Result
# Sets the rendering coordinate system to have its origin in the center.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def origin_center!~
- Inside source: true
*** True Line Result
def origin_center!
** Processing line: ~ return if @name == :center~
- Inside source: true
*** True Line Result
return if @name == :center
** Processing line: ~ @name = :center~
- Inside source: true
*** True Line Result
@name = :center
** Processing line: ~ @origin_x = @runtime.logical_width.half~
- Inside source: true
*** True Line Result
@origin_x = @runtime.logical_width.half
** Processing line: ~ @origin_y = @runtime.logical_height.half~
- Inside source: true
*** True Line Result
@origin_y = @runtime.logical_height.half
** Processing line: ~ @left = -@runtime.logical_width.half~
- Inside source: true
*** True Line Result
@left = -@runtime.logical_width.half
** Processing line: ~ @right = @runtime.logical_width.half~
- Inside source: true
*** True Line Result
@right = @runtime.logical_width.half
** Processing line: ~ @top = @runtime.logical_height.half~
- Inside source: true
*** True Line Result
@top = @runtime.logical_height.half
** Processing line: ~ @bottom = -@runtime.logical_height.half~
- Inside source: true
*** True Line Result
@bottom = -@runtime.logical_height.half
** Processing line: ~ @center_x = 0.0~
- Inside source: true
*** True Line Result
@center_x = 0.0
** Processing line: ~ @center_y = 0.0~
- Inside source: true
*** True Line Result
@center_y = 0.0
** Processing line: ~ @rect = [@left, @bottom, @runtime.logical_width, @runtime.logical_height].rect~
- Inside source: true
*** True Line Result
@rect = [@left, @bottom, @runtime.logical_width, @runtime.logical_height].rect
** Processing line: ~ @center = [@center_x, @center_y].point~
- Inside source: true
*** True Line Result
@center = [@center_x, @center_y].point
** Processing line: ~ @ffi_draw.set_grid @origin_x, @origin_y, SCREEN_Y_DIRECTION~
- Inside source: true
*** True Line Result
@ffi_draw.set_grid @origin_x, @origin_y, SCREEN_Y_DIRECTION
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The logical width used for rendering.~
- Inside source: true
*** True Line Result
# The logical width used for rendering.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ def w~
- Inside source: true
*** True Line Result
def w
** Processing line: ~ @runtime.logical_width~
- Inside source: true
*** True Line Result
@runtime.logical_width
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Half the logical width used for rendering.~
- Inside source: true
*** True Line Result
# Half the logical width used for rendering.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ def w_half~
- Inside source: true
*** True Line Result
def w_half
** Processing line: ~ w.half~
- Inside source: true
*** True Line Result
w.half
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The logical height used for rendering.~
- Inside source: true
*** True Line Result
# The logical height used for rendering.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ def h~
- Inside source: true
*** True Line Result
def h
** Processing line: ~ @runtime.logical_height~
- Inside source: true
*** True Line Result
@runtime.logical_height
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Half the logical height used for rendering.~
- Inside source: true
*** True Line Result
# Half the logical height used for rendering.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float]~
- Inside source: true
*** True Line Result
# @return [Float]
** Processing line: ~ def h_half~
- Inside source: true
*** True Line Result
def h_half
** Processing line: ~ h.half~
- Inside source: true
*** True Line Result
h.half
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the coordinates indicating the center of the screen.~
- Inside source: true
*** True Line Result
# Returns the coordinates indicating the center of the screen.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [[Float, Float]]~
- Inside source: true
*** True Line Result
# @return [[Float, Float]]
** Processing line: ~ def center~
- Inside source: true
*** True Line Result
def center
** Processing line: ~ @center~
- Inside source: true
*** True Line Result
@center
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the coordinates indicating the bottom right of the screen.~
- Inside source: true
*** True Line Result
# Returns the coordinates indicating the bottom right of the screen.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [[Float, Float]]~
- Inside source: true
*** True Line Result
# @return [[Float, Float]]
** Processing line: ~ def bottom_right~
- Inside source: true
*** True Line Result
def bottom_right
** Processing line: ~ [@right, @bottom].point~
- Inside source: true
*** True Line Result
[@right, @bottom].point
** 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: ~* inputs.rb~
- Header detected.
*** True Line Result
*** True Line Result
* inputs.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/inputs.rb~
- Inside source: true
*** True Line Result
# ./dragon/inputs.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: ~ # inputs.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# inputs.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: ~ # Represents all the keys available on the keyboard.~
- Inside source: true
*** True Line Result
# Represents all the keys available on the keyboard.
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ class KeyboardKeys~
- Inside source: true
*** True Line Result
class KeyboardKeys
** Processing line: ~ include Serialize~
- Inside source: true
*** True Line Result
include Serialize
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_accessor :exclamation_point,~
- Inside source: true
*** True Line Result
attr_accessor :exclamation_point,
** Processing line: ~ :zero, :one, :two, :three, :four,~
- Inside source: true
*** True Line Result
:zero, :one, :two, :three, :four,
** Processing line: ~ :five, :six, :seven, :eight, :nine,~
- Inside source: true
*** True Line Result
:five, :six, :seven, :eight, :nine,
** Processing line: ~ :backspace, :delete, :escape, :enter, :tab,~
- Inside source: true
*** True Line Result
:backspace, :delete, :escape, :enter, :tab,
** Processing line: ~ :open_round_brace, :close_round_brace,~
- Inside source: true
*** True Line Result
:open_round_brace, :close_round_brace,
** Processing line: ~ :open_curly_brace, :close_curly_brace,~
- Inside source: true
*** True Line Result
:open_curly_brace, :close_curly_brace,
** Processing line: ~ :open_square_brace, :close_square_brace,~
- Inside source: true
*** True Line Result
:open_square_brace, :close_square_brace,
** Processing line: ~ :colon, :semicolon, :equal_sign,~
- Inside source: true
*** True Line Result
:colon, :semicolon, :equal_sign,
** Processing line: ~ :hyphen, :space, :dollar_sign,~
- Inside source: true
*** True Line Result
:hyphen, :space, :dollar_sign,
** Processing line: ~ :double_quotation_mark,~
- Inside source: true
*** True Line Result
:double_quotation_mark,
** Processing line: ~ :single_quotation_mark,~
- Inside source: true
*** True Line Result
:single_quotation_mark,
** Processing line: ~ :backtick,~
- Inside source: true
*** True Line Result
:backtick,
** Processing line: ~ :tilde, :period, :comma, :pipe,~
- Inside source: true
*** True Line Result
:tilde, :period, :comma, :pipe,
** Processing line: ~ :underscore,~
- Inside source: true
*** True Line Result
:underscore,
** Processing line: ~ :a, :b, :c, :d, :e, :f, :g, :h,~
- Inside source: true
*** True Line Result
:a, :b, :c, :d, :e, :f, :g, :h,
** Processing line: ~ :i, :j, :k, :l, :m, :n, :o, :p,~
- Inside source: true
*** True Line Result
:i, :j, :k, :l, :m, :n, :o, :p,
** Processing line: ~ :q, :r, :s, :t, :u, :v, :w, :x,~
- Inside source: true
*** True Line Result
:q, :r, :s, :t, :u, :v, :w, :x,
** Processing line: ~ :y, :z,~
- Inside source: true
*** True Line Result
:y, :z,
** Processing line: ~ :shift, :control, :alt, :meta,~
- Inside source: true
*** True Line Result
:shift, :control, :alt, :meta,
** Processing line: ~ :left, :right, :up, :down, :pageup, :pagedown,~
- Inside source: true
*** True Line Result
:left, :right, :up, :down, :pageup, :pagedown,
** Processing line: ~ :char, :plus, :at, :forward_slash, :back_slash, :asterisk,~
- Inside source: true
*** True Line Result
:char, :plus, :at, :forward_slash, :back_slash, :asterisk,
** Processing line: ~ :less_than, :greater_than, :carat, :ampersand, :superscript_two,~
- Inside source: true
*** True Line Result
:less_than, :greater_than, :carat, :ampersand, :superscript_two,
** Processing line: ~ :circumflex,~
- Inside source: true
*** True Line Result
:circumflex,
** Processing line: ~ :question_mark, :section_sign, :ordinal_indicator,~
- Inside source: true
*** True Line Result
:question_mark, :section_sign, :ordinal_indicator,
** Processing line: ~ :raw_key~
- Inside source: true
*** True Line Result
:raw_key
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.sdl_to_key raw_key, modifier~
- Inside source: true
*** True Line Result
def self.sdl_to_key raw_key, modifier
** Processing line: ~ return nil unless (raw_key >= 0 && raw_key <= 255) ||~
- Inside source: true
*** True Line Result
return nil unless (raw_key >= 0 && raw_key <= 255) ||
** Processing line: ~ raw_key == 1073741903 ||~
- Inside source: true
*** True Line Result
raw_key == 1073741903 ||
** Processing line: ~ raw_key == 1073741904 ||~
- Inside source: true
*** True Line Result
raw_key == 1073741904 ||
** Processing line: ~ raw_key == 1073741905 ||~
- Inside source: true
*** True Line Result
raw_key == 1073741905 ||
** Processing line: ~ raw_key == 1073741906 ||~
- Inside source: true
*** True Line Result
raw_key == 1073741906 ||
** Processing line: ~ raw_key == 1073741899 ||~
- Inside source: true
*** True Line Result
raw_key == 1073741899 ||
** Processing line: ~ raw_key == 1073741902~
- Inside source: true
*** True Line Result
raw_key == 1073741902
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ char = KeyboardKeys.char_with_shift raw_key, modifier~
- Inside source: true
*** True Line Result
char = KeyboardKeys.char_with_shift raw_key, modifier
** Processing line: ~ names = KeyboardKeys.char_to_method char, raw_key~
- Inside source: true
*** True Line Result
names = KeyboardKeys.char_to_method char, raw_key
** Processing line: ~ names << :alt if (modifier & (256|512)) != 0 # alt key~
- Inside source: true
*** True Line Result
names << :alt if (modifier & (256|512)) != 0 # alt key
** Processing line: ~ names << :meta if (modifier & (1024|2048)) != 0 # meta key (command/apple/windows key)~
- Inside source: true
*** True Line Result
names << :meta if (modifier & (1024|2048)) != 0 # meta key (command/apple/windows key)
** Processing line: ~ names << :control if (modifier & (64|128)) != 0 # ctrl key~
- Inside source: true
*** True Line Result
names << :control if (modifier & (64|128)) != 0 # ctrl key
** Processing line: ~ names << :shift if (modifier & (1|2)) != 0 # shift key~
- Inside source: true
*** True Line Result
names << :shift if (modifier & (1|2)) != 0 # shift key
** Processing line: ~ names~
- Inside source: true
*** True Line Result
names
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.utf_8_char raw_key~
- Inside source: true
*** True Line Result
def self.utf_8_char raw_key
** Processing line: ~ return "²" if raw_key == 178~
- Inside source: true
*** True Line Result
return "²" if raw_key == 178
** Processing line: ~ return "§" if raw_key == 167~
- Inside source: true
*** True Line Result
return "§" if raw_key == 167
** Processing line: ~ return "º" if raw_key == 186~
- Inside source: true
*** True Line Result
return "º" if raw_key == 186
** Processing line: ~ return raw_key.chr~
- Inside source: true
*** True Line Result
return raw_key.chr
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.char_with_shift raw_key, modifier~
- Inside source: true
*** True Line Result
def self.char_with_shift raw_key, modifier
** Processing line: ~ return nil unless raw_key >= 0 && raw_key <= 255~
- Inside source: true
*** True Line Result
return nil unless raw_key >= 0 && raw_key <= 255
** Processing line: ~ if modifier != 1 && modifier != 2 && modifier != 3~
- Inside source: true
*** True Line Result
if modifier != 1 && modifier != 2 && modifier != 3
** Processing line: ~ return utf_8_char raw_key~
- Inside source: true
*** True Line Result
return utf_8_char raw_key
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ @shift_keys ||= {~
- Inside source: true
*** True Line Result
@shift_keys ||= {
** Processing line: ~ '`' => '~', '-' => '_', "'" => '"', "1" => '!',~
- Inside source: true
*** True Line Result
'`' => '~', '-' => '_', "'" => '"', "1" => '!',
** Processing line: ~ "2" => '@', "3" => '#', "4" => '$', "5" => '%',~
- Inside source: true
*** True Line Result
"2" => '@', "3" => '#', "4" => '$', "5" => '%',
** Processing line: ~ "6" => '^', "7" => '&', "8" => '*', "9" => '(',~
- Inside source: true
*** True Line Result
"6" => '^', "7" => '&', "8" => '*', "9" => '(',
** Processing line: ~ "0" => ')', ";" => ":", "=" => "+", "[" => "{",~
- Inside source: true
*** True Line Result
"0" => ')', ";" => ":", "=" => "+", "[" => "{",
** Processing line: ~ "]" => "}", '\\'=> "|", '/' => "?", '.' => ">",~
- Inside source: true
*** True Line Result
"]" => "}", '\\'=> "|", '/' => "?", '.' => ">",
** Processing line: ~ ',' => "<", 'a' => 'A', 'b' => 'B', 'c' => 'C',~
- Inside source: true
*** True Line Result
',' => "<", 'a' => 'A', 'b' => 'B', 'c' => 'C',
** Processing line: ~ 'd' => 'D', 'e' => 'E', 'f' => 'F', 'g' => 'G',~
- Inside source: true
*** True Line Result
'd' => 'D', 'e' => 'E', 'f' => 'F', 'g' => 'G',
** Processing line: ~ 'h' => 'H', 'i' => 'I', 'j' => 'J', 'k' => 'K',~
- Inside source: true
*** True Line Result
'h' => 'H', 'i' => 'I', 'j' => 'J', 'k' => 'K',
** Processing line: ~ 'l' => 'L', 'm' => 'M', 'n' => 'N', 'o' => 'O',~
- Inside source: true
*** True Line Result
'l' => 'L', 'm' => 'M', 'n' => 'N', 'o' => 'O',
** Processing line: ~ 'p' => 'P', 'q' => 'Q', 'r' => 'R', 's' => 'S',~
- Inside source: true
*** True Line Result
'p' => 'P', 'q' => 'Q', 'r' => 'R', 's' => 'S',
** Processing line: ~ 't' => 'T', 'u' => 'U', 'v' => 'V', 'w' => 'W',~
- Inside source: true
*** True Line Result
't' => 'T', 'u' => 'U', 'v' => 'V', 'w' => 'W',
** Processing line: ~ 'x' => 'X', 'y' => 'Y', 'z' => 'Z'~
- Inside source: true
*** True Line Result
'x' => 'X', 'y' => 'Y', 'z' => 'Z'
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @shift_keys[raw_key.chr.to_s] || raw_key.chr.to_s~
- Inside source: true
*** True Line Result
@shift_keys[raw_key.chr.to_s] || raw_key.chr.to_s
** 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 self.char_to_method_hash~
- Inside source: true
*** True Line Result
def self.char_to_method_hash
** Processing line: ~ @char_to_method ||= {~
- Inside source: true
*** True Line Result
@char_to_method ||= {
** Processing line: ~ 'A' => [:a, :shift],~
- Inside source: true
*** True Line Result
'A' => [:a, :shift],
** Processing line: ~ 'B' => [:b, :shift],~
- Inside source: true
*** True Line Result
'B' => [:b, :shift],
** Processing line: ~ 'C' => [:c, :shift],~
- Inside source: true
*** True Line Result
'C' => [:c, :shift],
** Processing line: ~ 'D' => [:d, :shift],~
- Inside source: true
*** True Line Result
'D' => [:d, :shift],
** Processing line: ~ 'E' => [:e, :shift],~
- Inside source: true
*** True Line Result
'E' => [:e, :shift],
** Processing line: ~ 'F' => [:f, :shift],~
- Inside source: true
*** True Line Result
'F' => [:f, :shift],
** Processing line: ~ 'G' => [:g, :shift],~
- Inside source: true
*** True Line Result
'G' => [:g, :shift],
** Processing line: ~ 'H' => [:h, :shift],~
- Inside source: true
*** True Line Result
'H' => [:h, :shift],
** Processing line: ~ 'I' => [:i, :shift],~
- Inside source: true
*** True Line Result
'I' => [:i, :shift],
** Processing line: ~ 'J' => [:j, :shift],~
- Inside source: true
*** True Line Result
'J' => [:j, :shift],
** Processing line: ~ 'K' => [:k, :shift],~
- Inside source: true
*** True Line Result
'K' => [:k, :shift],
** Processing line: ~ 'L' => [:l, :shift],~
- Inside source: true
*** True Line Result
'L' => [:l, :shift],
** Processing line: ~ 'M' => [:m, :shift],~
- Inside source: true
*** True Line Result
'M' => [:m, :shift],
** Processing line: ~ 'N' => [:n, :shift],~
- Inside source: true
*** True Line Result
'N' => [:n, :shift],
** Processing line: ~ 'O' => [:o, :shift],~
- Inside source: true
*** True Line Result
'O' => [:o, :shift],
** Processing line: ~ 'P' => [:p, :shift],~
- Inside source: true
*** True Line Result
'P' => [:p, :shift],
** Processing line: ~ 'Q' => [:q, :shift],~
- Inside source: true
*** True Line Result
'Q' => [:q, :shift],
** Processing line: ~ 'R' => [:r, :shift],~
- Inside source: true
*** True Line Result
'R' => [:r, :shift],
** Processing line: ~ 'S' => [:s, :shift],~
- Inside source: true
*** True Line Result
'S' => [:s, :shift],
** Processing line: ~ 'T' => [:t, :shift],~
- Inside source: true
*** True Line Result
'T' => [:t, :shift],
** Processing line: ~ 'U' => [:u, :shift],~
- Inside source: true
*** True Line Result
'U' => [:u, :shift],
** Processing line: ~ 'V' => [:v, :shift],~
- Inside source: true
*** True Line Result
'V' => [:v, :shift],
** Processing line: ~ 'W' => [:w, :shift],~
- Inside source: true
*** True Line Result
'W' => [:w, :shift],
** Processing line: ~ 'X' => [:x, :shift],~
- Inside source: true
*** True Line Result
'X' => [:x, :shift],
** Processing line: ~ 'Y' => [:y, :shift],~
- Inside source: true
*** True Line Result
'Y' => [:y, :shift],
** Processing line: ~ 'Z' => [:z, :shift],~
- Inside source: true
*** True Line Result
'Z' => [:z, :shift],
** Processing line: ~ "!" => [:exclamation_point],~
- Inside source: true
*** True Line Result
"!" => [:exclamation_point],
** Processing line: ~ "0" => [:zero],~
- Inside source: true
*** True Line Result
"0" => [:zero],
** Processing line: ~ "1" => [:one],~
- Inside source: true
*** True Line Result
"1" => [:one],
** Processing line: ~ "2" => [:two],~
- Inside source: true
*** True Line Result
"2" => [:two],
** Processing line: ~ "3" => [:three],~
- Inside source: true
*** True Line Result
"3" => [:three],
** Processing line: ~ "4" => [:four],~
- Inside source: true
*** True Line Result
"4" => [:four],
** Processing line: ~ "5" => [:five],~
- Inside source: true
*** True Line Result
"5" => [:five],
** Processing line: ~ "6" => [:six],~
- Inside source: true
*** True Line Result
"6" => [:six],
** Processing line: ~ "7" => [:seven],~
- Inside source: true
*** True Line Result
"7" => [:seven],
** Processing line: ~ "8" => [:eight],~
- Inside source: true
*** True Line Result
"8" => [:eight],
** Processing line: ~ "9" => [:nine],~
- Inside source: true
*** True Line Result
"9" => [:nine],
** Processing line: ~ "\b" => [:backspace],~
- Inside source: true
*** True Line Result
"\b" => [:backspace],
** Processing line: ~ "\e" => [:escape],~
- Inside source: true
*** True Line Result
"\e" => [:escape],
** Processing line: ~ "\r" => [:enter],~
- Inside source: true
*** True Line Result
"\r" => [:enter],
** Processing line: ~ "\t" => [:tab],~
- Inside source: true
*** True Line Result
"\t" => [:tab],
** Processing line: ~ "(" => [:open_round_brace],~
- Inside source: true
*** True Line Result
"(" => [:open_round_brace],
** Processing line: ~ ")" => [:close_round_brace],~
- Inside source: true
*** True Line Result
")" => [:close_round_brace],
** Processing line: ~ "{" => [:open_curly_brace],~
- Inside source: true
*** True Line Result
"{" => [:open_curly_brace],
** Processing line: ~ "}" => [:close_curly_brace],~
- Inside source: true
*** True Line Result
"}" => [:close_curly_brace],
** Processing line: ~ "[" => [:open_square_brace],~
- Inside source: true
*** True Line Result
"[" => [:open_square_brace],
** Processing line: ~ "]" => [:close_square_brace],~
- Inside source: true
*** True Line Result
"]" => [:close_square_brace],
** Processing line: ~ ":" => [:colon],~
- Inside source: true
*** True Line Result
":" => [:colon],
** Processing line: ~ ";" => [:semicolon],~
- Inside source: true
*** True Line Result
";" => [:semicolon],
** Processing line: ~ "=" => [:equal_sign],~
- Inside source: true
*** True Line Result
"=" => [:equal_sign],
** Processing line: ~ "-" => [:hyphen],~
- Inside source: true
*** True Line Result
"-" => [:hyphen],
** Processing line: ~ " " => [:space],~
- Inside source: true
*** True Line Result
" " => [:space],
** Processing line: ~ "$" => [:dollar_sign],~
- Inside source: true
*** True Line Result
"$" => [:dollar_sign],
** Processing line: ~ "\"" => [:double_quotation_mark],~
- Inside source: true
*** True Line Result
"\"" => [:double_quotation_mark],
** Processing line: ~ "'" => [:single_quotation_mark],~
- Inside source: true
*** True Line Result
"'" => [:single_quotation_mark],
** Processing line: ~ "`" => [:backtick],~
- Inside source: true
*** True Line Result
"`" => [:backtick],
** Processing line: ~ "~" => [:tilde],~
- Inside source: true
*** True Line Result
"~" => [:tilde],
** Processing line: ~ "." => [:period],~
- Inside source: true
*** True Line Result
"." => [:period],
** Processing line: ~ "," => [:comma],~
- Inside source: true
*** True Line Result
"," => [:comma],
** Processing line: ~ "|" => [:pipe],~
- Inside source: true
*** True Line Result
"|" => [:pipe],
** Processing line: ~ "_" => [:underscore],~
- Inside source: true
*** True Line Result
"_" => [:underscore],
** Processing line: ~ "#" => [:hash],~
- Inside source: true
*** True Line Result
"#" => [:hash],
** Processing line: ~ "+" => [:plus],~
- Inside source: true
*** True Line Result
"+" => [:plus],
** Processing line: ~ "@" => [:at],~
- Inside source: true
*** True Line Result
"@" => [:at],
** Processing line: ~ "/" => [:forward_slash],~
- Inside source: true
*** True Line Result
"/" => [:forward_slash],
** Processing line: ~ "\\" => [:back_slash],~
- Inside source: true
*** True Line Result
"\\" => [:back_slash],
** Processing line: ~ "*" => [:asterisk],~
- Inside source: true
*** True Line Result
"*" => [:asterisk],
** Processing line: ~ "<" => [:less_than],~
- Inside source: true
*** True Line Result
"<" => [:less_than],
** Processing line: ~ ">" => [:greater_than],~
- Inside source: true
*** True Line Result
">" => [:greater_than],
** Processing line: ~ "^" => [:circumflex],~
- Inside source: true
*** True Line Result
"^" => [:circumflex],
** Processing line: ~ "&" => [:ampersand],~
- Inside source: true
*** True Line Result
"&" => [:ampersand],
** Processing line: ~ "²" => [:superscript_two],~
- Inside source: true
*** True Line Result
"²" => [:superscript_two],
** Processing line: ~ "§" => [:section_sign],~
- Inside source: true
*** True Line Result
"§" => [:section_sign],
** Processing line: ~ "?" => [:question_mark],~
- Inside source: true
*** True Line Result
"?" => [:question_mark],
** Processing line: ~ '%' => [:percent_sign],~
- Inside source: true
*** True Line Result
'%' => [:percent_sign],
** Processing line: ~ "º" => [:ordinal_indicator],~
- Inside source: true
*** True Line Result
"º" => [:ordinal_indicator],
** Processing line: ~ 1073741903 => [:right],~
- Inside source: true
*** True Line Result
1073741903 => [:right],
** Processing line: ~ 1073741904 => [:left],~
- Inside source: true
*** True Line Result
1073741904 => [:left],
** Processing line: ~ 1073741905 => [:down],~
- Inside source: true
*** True Line Result
1073741905 => [:down],
** Processing line: ~ 1073741906 => [:up],~
- Inside source: true
*** True Line Result
1073741906 => [:up],
** Processing line: ~ 1073741899 => [:pageup],~
- Inside source: true
*** True Line Result
1073741899 => [:pageup],
** Processing line: ~ 1073741902 => [:pagedown],~
- Inside source: true
*** True Line Result
1073741902 => [:pagedown],
** Processing line: ~ 127 => [:delete]~
- Inside source: true
*** True Line Result
127 => [:delete]
** 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 self.char_to_method char, int = nil~
- Inside source: true
*** True Line Result
def self.char_to_method char, int = nil
** Processing line: ~ char_to_method_hash[char] || char_to_method_hash[int] || [char.to_sym || int]~
- Inside source: true
*** True Line Result
char_to_method_hash[char] || char_to_method_hash[int] || [char.to_sym || int]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def clear~
- Inside source: true
*** True Line Result
def clear
** Processing line: ~ set truthy_keys, false~
- Inside source: true
*** True Line Result
set truthy_keys, false
** Processing line: ~ @scrubbed_ivars = nil~
- Inside source: true
*** True Line Result
@scrubbed_ivars = nil
** 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 left_right~
- Inside source: true
*** True Line Result
def left_right
** Processing line: ~ return -1 if self.left~
- Inside source: true
*** True Line Result
return -1 if self.left
** Processing line: ~ return 1 if self.right~
- Inside source: true
*** True Line Result
return 1 if self.right
** Processing line: ~ return 0~
- Inside source: true
*** True Line Result
return 0
** 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 up_down~
- Inside source: true
*** True Line Result
def up_down
** Processing line: ~ return 1 if self.up~
- Inside source: true
*** True Line Result
return 1 if self.up
** Processing line: ~ return -1 if self.down~
- Inside source: true
*** True Line Result
return -1 if self.down
** Processing line: ~ return 0~
- Inside source: true
*** True Line Result
return 0
** 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 truthy_keys~
- Inside source: true
*** True Line Result
def truthy_keys
** Processing line: ~ get(all).find_all { |_, v| v }~
- Inside source: true
*** True Line Result
get(all).find_all { |_, v| v }
** Processing line: ~ .map { |k, _| k.to_sym }~
- Inside source: true
*** True Line Result
.map { |k, _| k.to_sym }
** 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 all? keys~
- Inside source: true
*** True Line Result
def all? keys
** Processing line: ~ values = get(keys.map { |k| k.without_ending_bang })~
- Inside source: true
*** True Line Result
values = get(keys.map { |k| k.without_ending_bang })
** Processing line: ~ all_true = values.all? do |k, v|~
- Inside source: true
*** True Line Result
all_true = values.all? do |k, v|
** Processing line: ~ v~
- Inside source: true
*** True Line Result
v
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if all_true~
- Inside source: true
*** True Line Result
if all_true
** Processing line: ~ keys.each do |k|~
- Inside source: true
*** True Line Result
keys.each do |k|
** Processing line: ~ clear_key k if k.end_with_bang?~
- Inside source: true
*** True Line Result
clear_key k if k.end_with_bang?
** 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: ~ all_true~
- Inside source: true
*** True Line Result
all_true
** 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 any? keys~
- Inside source: true
*** True Line Result
def any? keys
** Processing line: ~ values = get(keys.map { |k| k.without_ending_bang })~
- Inside source: true
*** True Line Result
values = get(keys.map { |k| k.without_ending_bang })
** Processing line: ~ any_true = values.any? do |k, v|~
- Inside source: true
*** True Line Result
any_true = values.any? do |k, v|
** Processing line: ~ v~
- Inside source: true
*** True Line Result
v
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if any_true~
- Inside source: true
*** True Line Result
if any_true
** Processing line: ~ keys.each do |k|~
- Inside source: true
*** True Line Result
keys.each do |k|
** Processing line: ~ clear_key k if k.end_with_bang?~
- Inside source: true
*** True Line Result
clear_key k if k.end_with_bang?
** 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: ~ any_true~
- Inside source: true
*** True Line Result
any_true
** 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 clear_key key~
- Inside source: true
*** True Line Result
def clear_key key
** Processing line: ~ @scrubbed_ivars = nil~
- Inside source: true
*** True Line Result
@scrubbed_ivars = nil
** Processing line: ~ self.instance_variable_set("@#{key.without_ending_bang}", false)~
- Inside source: true
*** True Line Result
self.instance_variable_set("@#{key.without_ending_bang}", false)
** 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 all~
- Inside source: true
*** True Line Result
def all
** Processing line: ~ @scrubbed_ivars ||= self.instance_variables~
- Inside source: true
*** True Line Result
@scrubbed_ivars ||= self.instance_variables
** Processing line: ~ .reject { |i| i == :@all || i == :@scrubbed_ivars }~
- Inside source: true
*** True Line Result
.reject { |i| i == :@all || i == :@scrubbed_ivars }
** Processing line: ~ .map { |i| i.to_s.gsub("@", "") }~
- Inside source: true
*** True Line Result
.map { |i| i.to_s.gsub("@", "") }
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ get(@scrubbed_ivars).map { |k, _| k }~
- Inside source: true
*** True Line Result
get(@scrubbed_ivars).map { |k, _| k }
** 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 get collection~
- Inside source: true
*** True Line Result
def get collection
** Processing line: ~ return [] if collection.length == 0~
- Inside source: true
*** True Line Result
return [] if collection.length == 0
** Processing line: ~ collection.map do |m|~
- Inside source: true
*** True Line Result
collection.map do |m|
** Processing line: ~ if m.end_with_bang?~
- Inside source: true
*** True Line Result
if m.end_with_bang?
** Processing line: ~ clear_after_return = true~
- Inside source: true
*** True Line Result
clear_after_return = true
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ value = self.instance_variable_get("@#{m.without_ending_bang}".to_sym)~
- Inside source: true
*** True Line Result
value = self.instance_variable_get("@#{m.without_ending_bang}".to_sym)
** Processing line: ~ clear_key m if clear_after_return~
- Inside source: true
*** True Line Result
clear_key m if clear_after_return
** Processing line: ~ [m.without_ending_bang, value]~
- Inside source: true
*** True Line Result
[m.without_ending_bang, 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: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def set collection, value = true~
- Inside source: true
*** True Line Result
def set collection, value = true
** Processing line: ~ return if collection.length == 0~
- Inside source: true
*** True Line Result
return if collection.length == 0
** Processing line: ~ @scrubbed_ivars = nil~
- Inside source: true
*** True Line Result
@scrubbed_ivars = nil
** Processing line: ~ value = Kernel.tick_count if value~
- Inside source: true
*** True Line Result
value = Kernel.tick_count if value
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ collection.each do |m|~
- Inside source: true
*** True Line Result
collection.each do |m|
** Processing line: ~ self.instance_variable_set("@#{m.to_s}".to_sym, value)~
- Inside source: true
*** True Line Result
self.instance_variable_set("@#{m.to_s}".to_sym, value)
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise e, <<-S~
- Inside source: true
*** True Line Result
raise e, <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ Attempted to set the a key on the DragonRuby GTK's Keyboard data~
- Inside source: true
*** True Line Result
Attempted to set the a key on the DragonRuby GTK's Keyboard data
** Processing line: ~ structure, but the property isn't available for raw_key #{raw_key} #{m}.~
- Inside source: true
*** True Line Result
structure, but the property isn't available for raw_key #{raw_key} #{m}.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ You should contact DragonRuby and tell them to associate the raw_key #{raw_key}~
- Inside source: true
*** True Line Result
You should contact DragonRuby and tell them to associate the raw_key #{raw_key}
** Processing line: ~ with a friendly property name (we are open to suggestions if you have any).~
- Inside source: true
*** True Line Result
with a friendly property name (we are open to suggestions if you have any).
** Processing line: ~ [GTK::KeyboardKeys#set, GTK::KeyboardKeys#char_to_method]~
- Inside source: true
*** True Line Result
[GTK::KeyboardKeys#set, GTK::KeyboardKeys#char_to_method]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ S~
- Inside source: true
*** True Line Result
S
** 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 method_missing m, *args~
- Inside source: true
*** True Line Result
def method_missing m, *args
** Processing line: ~ begin~
- Inside source: true
*** True Line Result
begin
** Processing line: ~ define_singleton_method(m) do~
- Inside source: true
*** True Line Result
define_singleton_method(m) do
** Processing line: ~ r = self.instance_variable_get("@#{m.without_ending_bang}".to_sym)~
- Inside source: true
*** True Line Result
r = self.instance_variable_get("@#{m.without_ending_bang}".to_sym)
** Processing line: ~ clear_key m~
- Inside source: true
*** True Line Result
clear_key m
** Processing line: ~ return r~
- Inside source: true
*** True Line Result
return r
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ return self.send m~
- Inside source: true
*** True Line Result
return self.send m
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ log_important "#{e}"~
- Inside source: true
*** True Line Result
log_important "#{e}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ raise <<-S~
- Inside source: true
*** True Line Result
raise <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ There is no member on the keyboard called #{m}. Here is a to_s representation of what's available:~
- Inside source: true
*** True Line Result
There is no member on the keyboard called #{m}. Here is a to_s representation of what's available:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #{KeyboardKeys.char_to_method_hash.map { |k, v| "[#{k} => #{v.join(",")}]" }.join(" ")}~
- Inside source: true
*** True Line Result
#{KeyboardKeys.char_to_method_hash.map { |k, v| "[#{k} => #{v.join(",")}]" }.join(" ")}
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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 serialize~
- Inside source: true
*** True Line Result
def serialize
** Processing line: ~ hash = super~
- Inside source: true
*** True Line Result
hash = super
** Processing line: ~ hash.delete(:scrubbed_ivars)~
- Inside source: true
*** True Line Result
hash.delete(:scrubbed_ivars)
** Processing line: ~ hash[:truthy_keys] = self.truthy_keys~
- Inside source: true
*** True Line Result
hash[:truthy_keys] = self.truthy_keys
** Processing line: ~ hash~
- Inside source: true
*** True Line Result
hash
** 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: ~ module GTK~
- Inside source: true
*** True Line Result
module GTK
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ class Keyboard~
- Inside source: true
*** True Line Result
class Keyboard
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @return [KeyboardKeys]~
- Inside source: true
*** True Line Result
# @return [KeyboardKeys]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_accessor :key_up~
- Inside source: true
*** True Line Result
attr_accessor :key_up
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @return [KeyboardKeys]~
- Inside source: true
*** True Line Result
# @return [KeyboardKeys]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_accessor :key_held~
- Inside source: true
*** True Line Result
attr_accessor :key_held
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @return [KeyboardKeys]~
- Inside source: true
*** True Line Result
# @return [KeyboardKeys]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_accessor :key_down~
- Inside source: true
*** True Line Result
attr_accessor :key_down
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @return [Boolean]~
- Inside source: true
*** True Line Result
# @return [Boolean]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_accessor :has_focus~
- Inside source: true
*** True Line Result
attr_accessor :has_focus
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize~
- Inside source: true
*** True Line Result
def initialize
** Processing line: ~ @key_up = KeyboardKeys.new~
- Inside source: true
*** True Line Result
@key_up = KeyboardKeys.new
** Processing line: ~ @key_held = KeyboardKeys.new~
- Inside source: true
*** True Line Result
@key_held = KeyboardKeys.new
** Processing line: ~ @key_down = KeyboardKeys.new~
- Inside source: true
*** True Line Result
@key_down = KeyboardKeys.new
** Processing line: ~ @has_focus = false~
- Inside source: true
*** True Line Result
@has_focus = false
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def p~
- Inside source: true
*** True Line Result
def p
** Processing line: ~ @key_down.p || @key_held.p~
- Inside source: true
*** True Line Result
@key_down.p || @key_held.p
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The left arrow or "a" was pressed.~
- Inside source: true
*** True Line Result
# The left arrow or "a" was pressed.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Boolean]~
- Inside source: true
*** True Line Result
# @return [Boolean]
** Processing line: ~ def left~
- Inside source: true
*** True Line Result
def left
** Processing line: ~ @key_up.left || @key_held.left || a~
- Inside source: true
*** True Line Result
@key_up.left || @key_held.left || a
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The right arrow or "d" was pressed.~
- Inside source: true
*** True Line Result
# The right arrow or "d" was pressed.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Boolean]~
- Inside source: true
*** True Line Result
# @return [Boolean]
** Processing line: ~ def right~
- Inside source: true
*** True Line Result
def right
** Processing line: ~ @key_up.right || @key_held.right || d~
- Inside source: true
*** True Line Result
@key_up.right || @key_held.right || d
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The up arrow or "w" was pressed.~
- Inside source: true
*** True Line Result
# The up arrow or "w" was pressed.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Boolean]~
- Inside source: true
*** True Line Result
# @return [Boolean]
** Processing line: ~ def up~
- Inside source: true
*** True Line Result
def up
** Processing line: ~ @key_up.up || @key_held.up || w~
- Inside source: true
*** True Line Result
@key_up.up || @key_held.up || w
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The down arrow or "s" was pressed.~
- Inside source: true
*** True Line Result
# The down arrow or "s" was pressed.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Boolean]~
- Inside source: true
*** True Line Result
# @return [Boolean]
** Processing line: ~ def down~
- Inside source: true
*** True Line Result
def down
** Processing line: ~ @key_up.down || @key_held.down || s~
- Inside source: true
*** True Line Result
@key_up.down || @key_held.down || s
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Clear all current key presses.~
- Inside source: true
*** True Line Result
# Clear all current key presses.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ def clear~
- Inside source: true
*** True Line Result
def clear
** Processing line: ~ @key_up.clear~
- Inside source: true
*** True Line Result
@key_up.clear
** Processing line: ~ @key_held.clear~
- Inside source: true
*** True Line Result
@key_held.clear
** Processing line: ~ @key_down.clear~
- Inside source: true
*** True Line Result
@key_down.clear
** 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
def serialize
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ key_up: @key_up.serialize,~
- Inside source: true
*** True Line Result
key_up: @key_up.serialize,
** Processing line: ~ key_held: @key_held.serialize,~
- Inside source: true
*** True Line Result
key_held: @key_held.serialize,
** Processing line: ~ key_down: @key_down.serialize,~
- Inside source: true
*** True Line Result
key_down: @key_down.serialize,
** Processing line: ~ has_focus: @has_focus~
- Inside source: true
*** True Line Result
has_focus: @has_focus
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ alias_method :inspect, :serialize~
- Inside source: true
*** True Line Result
alias_method :inspect, :serialize
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @return [String]~
- Inside source: true
*** True Line Result
# @return [String]
** Processing line: ~ def to_s~
- Inside source: true
*** True Line Result
def to_s
** Processing line: ~ serialize.to_s~
- Inside source: true
*** True Line Result
serialize.to_s
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def key~
- Inside source: true
*** True Line Result
def key
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ down: @key_down.truthy_keys,~
- Inside source: true
*** True Line Result
down: @key_down.truthy_keys,
** Processing line: ~ held: @key_held.truthy_keys,~
- Inside source: true
*** True Line Result
held: @key_held.truthy_keys,
** Processing line: ~ down_or_held: (@key_down.truthy_keys + @key_held.truthy_keys).uniq,~
- Inside source: true
*** True Line Result
down_or_held: (@key_down.truthy_keys + @key_held.truthy_keys).uniq,
** Processing line: ~ up: @key_up.truthy_keys,~
- Inside source: true
*** True Line Result
up: @key_up.truthy_keys,
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ alias_method :keys, :key~
- Inside source: true
*** True Line Result
alias_method :keys, :key
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ include DirectionalInputHelperMethods~
- Inside source: true
*** True Line Result
include DirectionalInputHelperMethods
** 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: ~ module GTK~
- Inside source: true
*** True Line Result
module GTK
** Processing line: ~ class MousePoint~
- Inside source: true
*** True Line Result
class MousePoint
** Processing line: ~ include GTK::Geometry~
- Inside source: true
*** True Line Result
include GTK::Geometry
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_accessor :x, :y, :point, :created_at, :global_created_at~
- Inside source: true
*** True Line Result
attr_accessor :x, :y, :point, :created_at, :global_created_at
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize x, y~
- Inside source: true
*** True Line Result
def initialize x, y
** Processing line: ~ @x = x~
- Inside source: true
*** True Line Result
@x = x
** Processing line: ~ @y = y~
- Inside source: true
*** True Line Result
@y = y
** Processing line: ~ @point = [x, y]~
- Inside source: true
*** True Line Result
@point = [x, y]
** Processing line: ~ @created_at = Kernel.tick_count~
- Inside source: true
*** True Line Result
@created_at = Kernel.tick_count
** Processing line: ~ @global_created_at = Kernel.global_tick_count~
- Inside source: true
*** True Line Result
@global_created_at = Kernel.global_tick_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def w; 0; end~
- Inside source: true
*** True Line Result
def w; 0; end
** Processing line: ~ def h; 0; end~
- Inside source: true
*** True Line Result
def h; 0; end
** Processing line: ~ def left; x; end~
- Inside source: true
*** True Line Result
def left; x; end
** Processing line: ~ def right; x; end~
- Inside source: true
*** True Line Result
def right; x; end
** Processing line: ~ def top; y; end~
- Inside source: true
*** True Line Result
def top; y; end
** Processing line: ~ def bottom; y; end~
- Inside source: true
*** True Line Result
def bottom; y; end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def created_at_elapsed~
- Inside source: true
*** True Line Result
def created_at_elapsed
** Processing line: ~ @created_at.elapsed_time~
- Inside source: true
*** True Line Result
@created_at.elapsed_time
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def to_hash~
- Inside source: true
*** True Line Result
def to_hash
** Processing line: ~ serialize~
- Inside source: true
*** True Line Result
serialize
** 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
def serialize
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: @x,~
- Inside source: true
*** True Line Result
x: @x,
** Processing line: ~ y: @y,~
- Inside source: true
*** True Line Result
y: @y,
** Processing line: ~ created_at: @created_at,~
- Inside source: true
*** True Line Result
created_at: @created_at,
** Processing line: ~ global_created_at: @global_created_at~
- Inside source: true
*** True Line Result
global_created_at: @global_created_at
** 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 inspect~
- Inside source: true
*** True Line Result
def inspect
** Processing line: ~ serialize.to_s~
- Inside source: true
*** True Line Result
serialize.to_s
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def to_s~
- Inside source: true
*** True Line Result
def to_s
** Processing line: ~ serialize.to_s~
- Inside source: true
*** True Line Result
serialize.to_s
** 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: ~ # Provides access to the mouse.~
- Inside source: true
*** True Line Result
# Provides access to the mouse.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ class Mouse~
- Inside source: true
*** True Line Result
class Mouse
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_accessor :moved,~
- Inside source: true
*** True Line Result
attr_accessor :moved,
** Processing line: ~ :moved_at,~
- Inside source: true
*** True Line Result
:moved_at,
** Processing line: ~ :global_moved_at,~
- Inside source: true
*** True Line Result
:global_moved_at,
** Processing line: ~ :up, :has_focus,~
- Inside source: true
*** True Line Result
:up, :has_focus,
** Processing line: ~ :button_bits, :button_left,~
- Inside source: true
*** True Line Result
:button_bits, :button_left,
** Processing line: ~ :button_middle, :button_right,~
- Inside source: true
*** True Line Result
:button_middle, :button_right,
** Processing line: ~ :button_x1, :button_x2,~
- Inside source: true
*** True Line Result
:button_x1, :button_x2,
** Processing line: ~ :wheel~
- Inside source: true
*** True Line Result
:wheel
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ attr_accessor :click~
- Inside source: true
*** True Line Result
attr_accessor :click
** Processing line: ~ attr_accessor :previous_click~
- Inside source: true
*** True Line Result
attr_accessor :previous_click
** Processing line: ~ attr_accessor :x~
- Inside source: true
*** True Line Result
attr_accessor :x
** Processing line: ~ attr_accessor :y~
- Inside source: true
*** True Line Result
attr_accessor :y
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize~
- Inside source: true
*** True Line Result
def initialize
** Processing line: ~ @x = 0~
- Inside source: true
*** True Line Result
@x = 0
** Processing line: ~ @y = 0~
- Inside source: true
*** True Line Result
@y = 0
** Processing line: ~ @has_focus = false~
- Inside source: true
*** True Line Result
@has_focus = false
** Processing line: ~ @button_bits = 0~
- Inside source: true
*** True Line Result
@button_bits = 0
** Processing line: ~ @button_left = false~
- Inside source: true
*** True Line Result
@button_left = false
** Processing line: ~ @button_middle = false~
- Inside source: true
*** True Line Result
@button_middle = false
** Processing line: ~ @button_right = false~
- Inside source: true
*** True Line Result
@button_right = false
** Processing line: ~ @button_x1 = false~
- Inside source: true
*** True Line Result
@button_x1 = false
** Processing line: ~ @button_x2 = false~
- Inside source: true
*** True Line Result
@button_x2 = false
** Processing line: ~ clear~
- Inside source: true
*** True Line Result
clear
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def point~
- Inside source: true
*** True Line Result
def point
** Processing line: ~ [@x, @y].point~
- Inside source: true
*** True Line Result
[@x, @y].point
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def inside_rect? rect~
- Inside source: true
*** True Line Result
def inside_rect? rect
** Processing line: ~ point.inside_rect? rect~
- Inside source: true
*** True Line Result
point.inside_rect? rect
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ alias_method :position, :point~
- Inside source: true
*** True Line Result
alias_method :position, :point
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def clear~
- Inside source: true
*** True Line Result
def clear
** Processing line: ~ if @click~
- Inside source: true
*** True Line Result
if @click
** Processing line: ~ @previous_click = MousePoint.new @click.point.x, @click.point.y~
- Inside source: true
*** True Line Result
@previous_click = MousePoint.new @click.point.x, @click.point.y
** Processing line: ~ @previous_click.created_at = @click.created_at~
- Inside source: true
*** True Line Result
@previous_click.created_at = @click.created_at
** Processing line: ~ @previous_click.global_created_at = @click.global_created_at~
- Inside source: true
*** True Line Result
@previous_click.global_created_at = @click.global_created_at
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ @click = nil~
- Inside source: true
*** True Line Result
@click = nil
** Processing line: ~ @up = nil~
- Inside source: true
*** True Line Result
@up = nil
** Processing line: ~ @moved = nil~
- Inside source: true
*** True Line Result
@moved = nil
** Processing line: ~ @wheel = nil~
- Inside source: true
*** True Line Result
@wheel = nil
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def up~
- Inside source: true
*** True Line Result
def up
** Processing line: ~ @up~
- Inside source: true
*** True Line Result
@up
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def down~
- Inside source: true
*** True Line Result
def down
** Processing line: ~ @click~
- Inside source: true
*** True Line Result
@click
** 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
def serialize
** Processing line: ~ result = {}~
- Inside source: true
*** True Line Result
result = {}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if @click~
- Inside source: true
*** True Line Result
if @click
** Processing line: ~ result[:click] = @click.to_hash~
- Inside source: true
*** True Line Result
result[:click] = @click.to_hash
** Processing line: ~ result[:down] = @click.to_hash~
- Inside source: true
*** True Line Result
result[:down] = @click.to_hash
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ result[:up] = @up.to_hash if @up~
- Inside source: true
*** True Line Result
result[:up] = @up.to_hash if @up
** Processing line: ~ result[:x] = @x~
- Inside source: true
*** True Line Result
result[:x] = @x
** Processing line: ~ result[:y] = @y~
- Inside source: true
*** True Line Result
result[:y] = @y
** Processing line: ~ result[:moved] = @moved~
- Inside source: true
*** True Line Result
result[:moved] = @moved
** Processing line: ~ result[:moved_at] = @moved_at~
- Inside source: true
*** True Line Result
result[:moved_at] = @moved_at
** Processing line: ~ result[:has_focus] = @has_focus~
- Inside source: true
*** True Line Result
result[:has_focus] = @has_focus
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ result~
- Inside source: true
*** True Line Result
result
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def to_s~
- Inside source: true
*** True Line Result
def to_s
** Processing line: ~ serialize.to_s~
- Inside source: true
*** True Line Result
serialize.to_s
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ alias_method :inspect, :to_s~
- Inside source: true
*** True Line Result
alias_method :inspect, :to_s
** 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: ~ module GTK~
- Inside source: true
*** True Line Result
module GTK
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ class Inputs~
- Inside source: true
*** True Line Result
class Inputs
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # A list of all controllers.~
- Inside source: true
*** True Line Result
# A list of all controllers.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Controller[]]~
- Inside source: true
*** True Line Result
# @return [Controller[]]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_reader :controllers~
- Inside source: true
*** True Line Result
attr_reader :controllers
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @return [Keyboard]~
- Inside source: true
*** True Line Result
# @return [Keyboard]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_reader :keyboard~
- Inside source: true
*** True Line Result
attr_reader :keyboard
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @return [Mouse]~
- Inside source: true
*** True Line Result
# @return [Mouse]
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_reader :mouse~
- Inside source: true
*** True Line Result
attr_reader :mouse
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ attr_accessor :text, :history~
- Inside source: true
*** True Line Result
attr_accessor :text, :history
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize~
- Inside source: true
*** True Line Result
def initialize
** Processing line: ~ @controllers = [Controller.new, Controller.new]~
- Inside source: true
*** True Line Result
@controllers = [Controller.new, Controller.new]
** Processing line: ~ @keyboard = Keyboard.new~
- Inside source: true
*** True Line Result
@keyboard = Keyboard.new
** Processing line: ~ @mouse = Mouse.new~
- Inside source: true
*** True Line Result
@mouse = Mouse.new
** Processing line: ~ @text = []~
- Inside source: true
*** True Line Result
@text = []
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def up~
- Inside source: true
*** True Line Result
def up
** Processing line: ~ keyboard.up ||~
- Inside source: true
*** True Line Result
keyboard.up ||
** Processing line: ~ (controller_one && controller_one.up)~
- Inside source: true
*** True Line Result
(controller_one && controller_one.up)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def down~
- Inside source: true
*** True Line Result
def down
** Processing line: ~ keyboard.down ||~
- Inside source: true
*** True Line Result
keyboard.down ||
** Processing line: ~ (controller_one && controller_one.down)~
- Inside source: true
*** True Line Result
(controller_one && controller_one.down)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def left~
- Inside source: true
*** True Line Result
def left
** Processing line: ~ keyboard.left ||~
- Inside source: true
*** True Line Result
keyboard.left ||
** Processing line: ~ (controller_one && controller_one.left)~
- Inside source: true
*** True Line Result
(controller_one && controller_one.left)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def right~
- Inside source: true
*** True Line Result
def right
** Processing line: ~ keyboard.right ||~
- Inside source: true
*** True Line Result
keyboard.right ||
** Processing line: ~ (controller_one && controller_one.right)~
- Inside source: true
*** True Line Result
(controller_one && controller_one.right)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def directional_vector~
- Inside source: true
*** True Line Result
def directional_vector
** Processing line: ~ keyboard.directional_vector ||~
- Inside source: true
*** True Line Result
keyboard.directional_vector ||
** Processing line: ~ (controller_one && controller_one.directional_vector)~
- Inside source: true
*** True Line Result
(controller_one && controller_one.directional_vector)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns a signal indicating right (`1`), left (`-1`), or neither ('0').~
- Inside source: true
*** True Line Result
# Returns a signal indicating right (`1`), left (`-1`), or neither ('0').
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Integer]~
- Inside source: true
*** True Line Result
# @return [Integer]
** Processing line: ~ def left_right~
- Inside source: true
*** True Line Result
def left_right
** Processing line: ~ return -1 if self.left~
- Inside source: true
*** True Line Result
return -1 if self.left
** Processing line: ~ return 1 if self.right~
- Inside source: true
*** True Line Result
return 1 if self.right
** Processing line: ~ return 0~
- Inside source: true
*** True Line Result
return 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns a signal indicating up (`1`), down (`-1`), or neither ('0').~
- Inside source: true
*** True Line Result
# Returns a signal indicating up (`1`), down (`-1`), or neither ('0').
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Integer]~
- Inside source: true
*** True Line Result
# @return [Integer]
** Processing line: ~ def up_down~
- Inside source: true
*** True Line Result
def up_down
** Processing line: ~ return 1 if self.up~
- Inside source: true
*** True Line Result
return 1 if self.up
** Processing line: ~ return -1 if self.down~
- Inside source: true
*** True Line Result
return -1 if self.down
** Processing line: ~ return 0~
- Inside source: true
*** True Line Result
return 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the coordinates of the last click.~
- Inside source: true
*** True Line Result
# Returns the coordinates of the last click.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Float, Float]~
- Inside source: true
*** True Line Result
# @return [Float, Float]
** Processing line: ~ def click~
- Inside source: true
*** True Line Result
def click
** Processing line: ~ return nil unless @mouse.click~
- Inside source: true
*** True Line Result
return nil unless @mouse.click
** Processing line: ~ return @mouse.click.point~
- Inside source: true
*** True Line Result
return @mouse.click.point
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The first controller.~
- Inside source: true
*** True Line Result
# The first controller.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Controller]~
- Inside source: true
*** True Line Result
# @return [Controller]
** Processing line: ~ def controller_one~
- Inside source: true
*** True Line Result
def controller_one
** Processing line: ~ @controllers[0]~
- Inside source: true
*** True Line Result
@controllers[0]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # The second controller.~
- Inside source: true
*** True Line Result
# The second controller.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [Controller]~
- Inside source: true
*** True Line Result
# @return [Controller]
** Processing line: ~ def controller_two~
- Inside source: true
*** True Line Result
def controller_two
** Processing line: ~ @controllers[1]~
- Inside source: true
*** True Line Result
@controllers[1]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Clears all inputs.~
- Inside source: true
*** True Line Result
# Clears all inputs.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @return [void]~
- Inside source: true
*** True Line Result
# @return [void]
** Processing line: ~ def clear~
- Inside source: true
*** True Line Result
def clear
** Processing line: ~ @mouse.clear~
- Inside source: true
*** True Line Result
@mouse.clear
** Processing line: ~ @keyboard.clear~
- Inside source: true
*** True Line Result
@keyboard.clear
** Processing line: ~ @controllers.each(&:clear)~
- Inside source: true
*** True Line Result
@controllers.each(&:clear)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # @return [Hash]~
- Inside source: true
*** True Line Result
# @return [Hash]
** Processing line: ~ def serialize~
- Inside source: true
*** True Line Result
def serialize
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ controller_one: controller_one.serialize,~
- Inside source: true
*** True Line Result
controller_one: controller_one.serialize,
** Processing line: ~ controller_two: controller_two.serialize,~
- Inside source: true
*** True Line Result
controller_two: controller_two.serialize,
** Processing line: ~ keyboard: keyboard.serialize,~
- Inside source: true
*** True Line Result
keyboard: keyboard.serialize,
** Processing line: ~ mouse: mouse.serialize,~
- Inside source: true
*** True Line Result
mouse: mouse.serialize,
** Processing line: ~ text: text.serialize~
- Inside source: true
*** True Line Result
text: text.serialize
** 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~
- 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: ~* log.rb~
- Header detected.
*** True Line Result
*** True Line Result
* log.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/log.rb~
- Inside source: true
*** True Line Result
# ./dragon/log.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: ~ # log.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# log.rb has been released under MIT (*only this file*).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ XTERM_COLOR = {~
- Inside source: true
*** True Line Result
XTERM_COLOR = {
** Processing line: ~ black: "\u001b[30m",~
- Inside source: true
*** True Line Result
black: "\u001b[30m",
** Processing line: ~ red: "\u001b[31m",~
- Inside source: true
*** True Line Result
red: "\u001b[31m",
** Processing line: ~ green: "\u001b[32m",~
- Inside source: true
*** True Line Result
green: "\u001b[32m",
** Processing line: ~ yellow: "\u001b[33m",~
- Inside source: true
*** True Line Result
yellow: "\u001b[33m",
** Processing line: ~ blue: "\u001b[34m",~
- Inside source: true
*** True Line Result
blue: "\u001b[34m",
** Processing line: ~ magenta: "\u001b[35m",~
- Inside source: true
*** True Line Result
magenta: "\u001b[35m",
** Processing line: ~ cyan: "\u001b[36m",~
- Inside source: true
*** True Line Result
cyan: "\u001b[36m",
** Processing line: ~ white: "\u001b[37m",~
- Inside source: true
*** True Line Result
white: "\u001b[37m",
** Processing line: ~ bright_black: "\u001b[30;1m",~
- Inside source: true
*** True Line Result
bright_black: "\u001b[30;1m",
** Processing line: ~ bright_red: "\u001b[31;1m",~
- Inside source: true
*** True Line Result
bright_red: "\u001b[31;1m",
** Processing line: ~ bright_green: "\u001b[32;1m",~
- Inside source: true
*** True Line Result
bright_green: "\u001b[32;1m",
** Processing line: ~ bright_yellow: "\u001b[33;1m",~
- Inside source: true
*** True Line Result
bright_yellow: "\u001b[33;1m",
** Processing line: ~ bright_blue: "\u001b[34;1m",~
- Inside source: true
*** True Line Result
bright_blue: "\u001b[34;1m",
** Processing line: ~ bright_magenta: "\u001b[35;1m",~
- Inside source: true
*** True Line Result
bright_magenta: "\u001b[35;1m",
** Processing line: ~ bright_cyan: "\u001b[36;1m",~
- Inside source: true
*** True Line Result
bright_cyan: "\u001b[36;1m",
** Processing line: ~ bright_white: "\u001b[37;1m",~
- Inside source: true
*** True Line Result
bright_white: "\u001b[37;1m",
** Processing line: ~ reset: "\u001b[0m",~
- Inside source: true
*** True Line Result
reset: "\u001b[0m",
** Processing line: ~ }~
- Inside source: true
*** True Line Result
}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ module GTK~
- Inside source: true
*** True Line Result
module GTK
** Processing line: ~ class Log~
- Inside source: true
*** True Line Result
class Log
** Processing line: ~ def self.write_to_log_and_puts *args~
- Inside source: true
*** True Line Result
def self.write_to_log_and_puts *args
** Processing line: ~ return if $gtk.production~
- Inside source: true
*** True Line Result
return if $gtk.production
** Processing line: ~ $gtk.append_file_root 'logs/log.txt', args.join("\n") + "\n"~
- Inside source: true
*** True Line Result
$gtk.append_file_root 'logs/log.txt', args.join("\n") + "\n"
** Processing line: ~ args.each { |obj| $gtk.log obj, self }~
- Inside source: true
*** True Line Result
args.each { |obj| $gtk.log obj, self }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.write_to_log_and_print *args~
- Inside source: true
*** True Line Result
def self.write_to_log_and_print *args
** Processing line: ~ return if $gtk.production~
- Inside source: true
*** True Line Result
return if $gtk.production
** Processing line: ~ $gtk.append_file_root 'logs/log.txt', args.join("\n")~
- Inside source: true
*** True Line Result
$gtk.append_file_root 'logs/log.txt', args.join("\n")
** Processing line: ~ Object.print(*args)~
- Inside source: true
*** True Line Result
Object.print(*args)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.puts_important *args~
- Inside source: true
*** True Line Result
def self.puts_important *args
** Processing line: ~ return if $gtk.production~
- Inside source: true
*** True Line Result
return if $gtk.production
** Processing line: ~ $gtk.append_file_root 'logs/log.txt', args.join("\n")~
- Inside source: true
*** True Line Result
$gtk.append_file_root 'logs/log.txt', args.join("\n")
** Processing line: ~ $gtk.notify! "Important notification occurred."~
- Inside source: true
*** True Line Result
$gtk.notify! "Important notification occurred."
** Processing line: ~ args.each { |obj| $gtk.log obj }~
- Inside source: true
*** True Line Result
args.each { |obj| $gtk.log obj }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.puts *args~
- Inside source: true
*** True Line Result
def self.puts *args
** Processing line: ~ message_id, message = args~
- Inside source: true
*** True Line Result
message_id, message = args
** Processing line: ~ message ||= message_id~
- Inside source: true
*** True Line Result
message ||= message_id
** Processing line: ~ write_to_log_and_puts message~
- Inside source: true
*** True Line Result
write_to_log_and_puts message
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.multiline? *args~
- Inside source: true
*** True Line Result
def self.multiline? *args
** Processing line: ~ return true if args.length > 1~
- Inside source: true
*** True Line Result
return true if args.length > 1
** Processing line: ~ return !args[0].to_s.multiline?~
- Inside source: true
*** True Line Result
return !args[0].to_s.multiline?
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.join_lines args~
- Inside source: true
*** True Line Result
def self.join_lines args
** Processing line: ~ return "" if args.length == 0~
- Inside source: true
*** True Line Result
return "" if args.length == 0
** Processing line: ~ return args if args.is_a? String~
- Inside source: true
*** True Line Result
return args if args.is_a? String
** Processing line: ~ return args[0] if args.length == 1~
- Inside source: true
*** True Line Result
return args[0] if args.length == 1
** Processing line: ~ return args.to_s.join("\n")~
- Inside source: true
*** True Line Result
return args.to_s.join("\n")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.headline name~
- Inside source: true
*** True Line Result
def self.headline name
** Processing line: ~ @asterisk_count ||= 1~
- Inside source: true
*** True Line Result
@asterisk_count ||= 1
** Processing line: ~ @asterisk_count = @asterisk_count.greater(1)~
- Inside source: true
*** True Line Result
@asterisk_count = @asterisk_count.greater(1)
** Processing line: ~ result_from_yield = join_lines yield~
- Inside source: true
*** True Line Result
result_from_yield = join_lines yield
** Processing line: ~ result_from_yield = result_from_yield.each_line.map { |l| " #{l}" }.join~
- Inside source: true
*** True Line Result
result_from_yield = result_from_yield.each_line.map { |l| " #{l}" }.join
** Processing line: ~ r ="#{"*" * @asterisk_count} #{name}\n#{result_from_yield}"~
- Inside source: true
*** True Line Result
r ="#{"*" * @asterisk_count} #{name}\n#{result_from_yield}"
** Processing line: ~ @asterisk_count -= 1~
- Inside source: true
*** True Line Result
@asterisk_count -= 1
** Processing line: ~ @asterisk_count = @asterisk_count.greater(1)~
- Inside source: true
*** True Line Result
@asterisk_count = @asterisk_count.greater(1)
** Processing line: ~ r~
- Inside source: true
*** True Line Result
r
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.dynamic_block~
- Inside source: true
*** True Line Result
def self.dynamic_block
** Processing line: ~ "#+BEGIN:~
- Inside source: true
*** True Line Result
"#+BEGIN:
** Processing line: ~ #{join_lines yield}~
- Inside source: true
*** True Line Result
#{join_lines yield}
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.puts_error *args~
- Inside source: true
*** True Line Result
def self.puts_error *args
** Processing line: ~ args ||= []~
- Inside source: true
*** True Line Result
args ||= []
** Processing line: ~ title = args[0]~
- Inside source: true
*** True Line Result
title = args[0]
** Processing line: ~ additional = args[1..-1] || []~
- Inside source: true
*** True Line Result
additional = args[1..-1] || []
** Processing line: ~ additional = "" if additional.length == 0~
- Inside source: true
*** True Line Result
additional = "" if additional.length == 0
** Processing line: ~ if !title.multiline? && join_lines(additional).multiline?~
- Inside source: true
*** True Line Result
if !title.multiline? && join_lines(additional).multiline?
** Processing line: ~ message = headline "ERROR: #{title}" do~
- Inside source: true
*** True Line Result
message = headline "ERROR: #{title}" do
** Processing line: ~ dynamic_block do~
- Inside source: true
*** True Line Result
dynamic_block do
** Processing line: ~ additional~
- Inside source: true
*** True Line Result
additional
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ elsif title.multiline?~
- Inside source: true
*** True Line Result
elsif title.multiline?
** Processing line: ~ message = headline "ERROR: " do~
- Inside source: true
*** True Line Result
message = headline "ERROR: " do
** Processing line: ~ dynamic_block do~
- Inside source: true
*** True Line Result
dynamic_block do
** Processing line: ~ args~
- Inside source: true
*** True Line Result
args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ message = "* ERROR: #{title} #{additional}".strip~
- Inside source: true
*** True Line Result
message = "* ERROR: #{title} #{additional}".strip
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ self.puts message~
- Inside source: true
*** True Line Result
self.puts message
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.puts_info *args~
- Inside source: true
*** True Line Result
def self.puts_info *args
** Processing line: ~ args ||= []~
- Inside source: true
*** True Line Result
args ||= []
** Processing line: ~ title = args[0]~
- Inside source: true
*** True Line Result
title = args[0]
** Processing line: ~ additional = args[1..-1] || []~
- Inside source: true
*** True Line Result
additional = args[1..-1] || []
** Processing line: ~ additional = "" if additional.length == 0~
- Inside source: true
*** True Line Result
additional = "" if additional.length == 0
** Processing line: ~ if !title.multiline? && join_lines(additional).multiline?~
- Inside source: true
*** True Line Result
if !title.multiline? && join_lines(additional).multiline?
** Processing line: ~ message = headline "INFO: #{title}" do~
- Inside source: true
*** True Line Result
message = headline "INFO: #{title}" do
** Processing line: ~ dynamic_block do~
- Inside source: true
*** True Line Result
dynamic_block do
** Processing line: ~ additional~
- Inside source: true
*** True Line Result
additional
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ elsif title.multiline?~
- Inside source: true
*** True Line Result
elsif title.multiline?
** Processing line: ~ message = headline "INFO: " do~
- Inside source: true
*** True Line Result
message = headline "INFO: " do
** Processing line: ~ dynamic_block do~
- Inside source: true
*** True Line Result
dynamic_block do
** Processing line: ~ args~
- Inside source: true
*** True Line Result
args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ message = "* INFO: #{title} #{additional}".strip~
- Inside source: true
*** True Line Result
message = "* INFO: #{title} #{additional}".strip
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ self.puts message~
- Inside source: true
*** True Line Result
self.puts message
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.puts_once *ids, message~
- Inside source: true
*** True Line Result
def self.puts_once *ids, message
** Processing line: ~ id = "#{ids}"~
- Inside source: true
*** True Line Result
id = "#{ids}"
** Processing line: ~ @once ||= {}~
- Inside source: true
*** True Line Result
@once ||= {}
** Processing line: ~ return if @once[id]~
- Inside source: true
*** True Line Result
return if @once[id]
** Processing line: ~ @once[id] = id~
- Inside source: true
*** True Line Result
@once[id] = id
** Processing line: ~ if !$gtk.cli_arguments[:replay] && !$gtk.cli_arguments[:record]~
- Inside source: true
*** True Line Result
if !$gtk.cli_arguments[:replay] && !$gtk.cli_arguments[:record]
** Processing line: ~ $gtk.notify!("Open the DragonRuby Console by pressing [`] [~] [²] [^] [º] or [§]. [Message ID: #{id}].")~
- Inside source: true
*** True Line Result
$gtk.notify!("Open the DragonRuby Console by pressing [`] [~] [²] [^] [º] or [§]. [Message ID: #{id}].")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ write_to_log_and_puts ""~
- Inside source: true
*** True Line Result
write_to_log_and_puts ""
** Processing line: ~ write_to_log_and_puts "#{message.strip}"~
- Inside source: true
*** True Line Result
write_to_log_and_puts "#{message.strip}"
** Processing line: ~ write_to_log_and_puts ""~
- Inside source: true
*** True Line Result
write_to_log_and_puts ""
** Processing line: ~ write_to_log_and_puts "[Message ID: #{id}]"~
- Inside source: true
*** True Line Result
write_to_log_and_puts "[Message ID: #{id}]"
** Processing line: ~ write_to_log_and_puts ""~
- Inside source: true
*** True Line Result
write_to_log_and_puts ""
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.puts_once_info *ids, message~
- Inside source: true
*** True Line Result
def self.puts_once_info *ids, message
** Processing line: ~ id = "#{ids}"~
- Inside source: true
*** True Line Result
id = "#{ids}"
** Processing line: ~ @once ||= {}~
- Inside source: true
*** True Line Result
@once ||= {}
** Processing line: ~ return if @once[id]~
- Inside source: true
*** True Line Result
return if @once[id]
** Processing line: ~ @once[id] = id~
- Inside source: true
*** True Line Result
@once[id] = id
** Processing line: ~ log_info message~
- Inside source: true
*** True Line Result
log_info message
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.print *args~
- Inside source: true
*** True Line Result
def self.print *args
** Processing line: ~ write_to_log_and_print(*args)~
- Inside source: true
*** True Line Result
write_to_log_and_print(*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
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class Object~
- Inside source: true
*** True Line Result
class Object
** Processing line: ~ def log_print *args~
- Inside source: true
*** True Line Result
def log_print *args
** Processing line: ~ GTK::Log.print(*args)~
- Inside source: true
*** True Line Result
GTK::Log.print(*args)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_important *args~
- Inside source: true
*** True Line Result
def log_important *args
** Processing line: ~ GTK::Log.puts_important(*args)~
- Inside source: true
*** True Line Result
GTK::Log.puts_important(*args)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log *args~
- Inside source: true
*** True Line Result
def log *args
** Processing line: ~ GTK::Log.puts(*args)~
- Inside source: true
*** True Line Result
GTK::Log.puts(*args)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_with_color xterm_escape_code, *args~
- Inside source: true
*** True Line Result
def log_with_color xterm_escape_code, *args
** Processing line: ~ log_print xterm_escape_code~
- Inside source: true
*** True Line Result
log_print xterm_escape_code
** Processing line: ~ log(*args)~
- Inside source: true
*** True Line Result
log(*args)
** Processing line: ~ ensure~
- Inside source: true
*** True Line Result
ensure
** Processing line: ~ log_reset_color~
- Inside source: true
*** True Line Result
log_reset_color
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_reset_color~
- Inside source: true
*** True Line Result
def log_reset_color
** Processing line: ~ log_print XTERM_COLOR[:reset]~
- Inside source: true
*** True Line Result
log_print XTERM_COLOR[:reset]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_black *args~
- Inside source: true
*** True Line Result
def log_black *args
** Processing line: ~ log_with_color XTERM_COLOR[:black], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:black], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_red *args~
- Inside source: true
*** True Line Result
def log_red *args
** Processing line: ~ log_with_color XTERM_COLOR[:red], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:red], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_green *args~
- Inside source: true
*** True Line Result
def log_green *args
** Processing line: ~ log_with_color XTERM_COLOR[:green], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:green], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_yellow *args~
- Inside source: true
*** True Line Result
def log_yellow *args
** Processing line: ~ log_with_color XTERM_COLOR[:yellow], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:yellow], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_blue *args~
- Inside source: true
*** True Line Result
def log_blue *args
** Processing line: ~ log_with_color XTERM_COLOR[:blue], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:blue], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_magenta *args~
- Inside source: true
*** True Line Result
def log_magenta *args
** Processing line: ~ log_with_color XTERM_COLOR[:magenta], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:magenta], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_cyan *args~
- Inside source: true
*** True Line Result
def log_cyan *args
** Processing line: ~ log_with_color XTERM_COLOR[:cyan], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:cyan], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_white *args~
- Inside source: true
*** True Line Result
def log_white *args
** Processing line: ~ log_with_color XTERM_COLOR[:white], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:white], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_bright_black *args~
- Inside source: true
*** True Line Result
def log_bright_black *args
** Processing line: ~ log_with_color XTERM_COLOR[:bright_black], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:bright_black], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_bright_red *args~
- Inside source: true
*** True Line Result
def log_bright_red *args
** Processing line: ~ log_with_color XTERM_COLOR[:bright_red], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:bright_red], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_bright_green *args~
- Inside source: true
*** True Line Result
def log_bright_green *args
** Processing line: ~ log_with_color XTERM_COLOR[:bright_green], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:bright_green], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_bright_yellow *args~
- Inside source: true
*** True Line Result
def log_bright_yellow *args
** Processing line: ~ log_with_color XTERM_COLOR[:bright_yellow], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:bright_yellow], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_bright_blue *args~
- Inside source: true
*** True Line Result
def log_bright_blue *args
** Processing line: ~ log_with_color XTERM_COLOR[:bright_blue], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:bright_blue], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_bright_magenta *args~
- Inside source: true
*** True Line Result
def log_bright_magenta *args
** Processing line: ~ log_with_color XTERM_COLOR[:bright_magenta], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:bright_magenta], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_bright_cyan *args~
- Inside source: true
*** True Line Result
def log_bright_cyan *args
** Processing line: ~ log_with_color XTERM_COLOR[:bright_cyan], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:bright_cyan], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_bright_white *args~
- Inside source: true
*** True Line Result
def log_bright_white *args
** Processing line: ~ log_with_color XTERM_COLOR[:bright_white], *args~
- Inside source: true
*** True Line Result
log_with_color XTERM_COLOR[:bright_white], *args
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_error *args~
- Inside source: true
*** True Line Result
def log_error *args
** Processing line: ~ GTK::Log.puts_error(*args)~
- Inside source: true
*** True Line Result
GTK::Log.puts_error(*args)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_info *args~
- Inside source: true
*** True Line Result
def log_info *args
** Processing line: ~ GTK::Log.puts_info(*args)~
- Inside source: true
*** True Line Result
GTK::Log.puts_info(*args)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_once *ids, message~
- Inside source: true
*** True Line Result
def log_once *ids, message
** Processing line: ~ GTK::Log.puts_once(*ids, message)~
- Inside source: true
*** True Line Result
GTK::Log.puts_once(*ids, message)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_once_info *ids, message~
- Inside source: true
*** True Line Result
def log_once_info *ids, message
** Processing line: ~ GTK::Log.puts_once_info(*ids, message)~
- Inside source: true
*** True Line Result
GTK::Log.puts_once_info(*ids, message)
** 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: ~* numeric.rb~
- Header detected.
*** True Line Result
*** True Line Result
* numeric.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/numeric.rb~
- Inside source: true
*** True Line Result
# ./dragon/numeric.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: ~ # numeric.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# numeric.rb has been released under MIT (*only this file*).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class Numeric~
- Inside source: true
*** True Line Result
class Numeric
** Processing line: ~ include ValueType~
- Inside source: true
*** True Line Result
include ValueType
** Processing line: ~ include NumericDeprecated~
- Inside source: true
*** True Line Result
include NumericDeprecated
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ alias_method :gte, :>=~
- Inside source: true
*** True Line Result
alias_method :gte, :>=
** Processing line: ~ alias_method :lte, :<=~
- Inside source: true
*** True Line Result
alias_method :lte, :<=
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Converts a numeric value representing seconds into frames.~
- Inside source: true
*** True Line Result
# Converts a numeric value representing seconds into frames.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def seconds~
- Inside source: true
*** True Line Result
def seconds
** Processing line: ~ self * 60~
- Inside source: true
*** True Line Result
self * 60
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Divides the number by `2.0` and returns a `float`.~
- Inside source: true
*** True Line Result
# Divides the number by `2.0` and returns a `float`.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def half~
- Inside source: true
*** True Line Result
def half
** Processing line: ~ self / 2.0~
- Inside source: true
*** True Line Result
self / 2.0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def to_byte~
- Inside source: true
*** True Line Result
def to_byte
** Processing line: ~ clamp(0, 255).to_i~
- Inside source: true
*** True Line Result
clamp(0, 255).to_i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def elapsed_time tick_count_override = nil~
- Inside source: true
*** True Line Result
def elapsed_time tick_count_override = nil
** Processing line: ~ (tick_count_override || Kernel.tick_count) - self~
- Inside source: true
*** True Line Result
(tick_count_override || Kernel.tick_count) - self
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def elapsed_time_percent duration~
- Inside source: true
*** True Line Result
def elapsed_time_percent duration
** Processing line: ~ elapsed_time.percentage_of duration~
- Inside source: true
*** True Line Result
elapsed_time.percentage_of duration
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def new?~
- Inside source: true
*** True Line Result
def new?
** Processing line: ~ elapsed_time == 0~
- Inside source: true
*** True Line Result
elapsed_time == 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns `true` if the numeric value has passed a duration/offset number.~
- Inside source: true
*** True Line Result
# Returns `true` if the numeric value has passed a duration/offset number.
** Processing line: ~ # `Kernel.tick_count` is used to determine if a number represents an elapsed~
- Inside source: true
*** True Line Result
# `Kernel.tick_count` is used to determine if a number represents an elapsed
** Processing line: ~ # moment in time.~
- Inside source: true
*** True Line Result
# moment in time.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def elapsed? offset = 0, tick_count_override = Kernel.tick_count~
- Inside source: true
*** True Line Result
def elapsed? offset = 0, tick_count_override = Kernel.tick_count
** Processing line: ~ (self + offset) < tick_count_override~
- Inside source: true
*** True Line Result
(self + offset) < tick_count_override
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def frame_index *opts~
- Inside source: true
*** True Line Result
def frame_index *opts
** Processing line: ~ frame_count_or_hash, hold_for, repeat, tick_count_override = opts~
- Inside source: true
*** True Line Result
frame_count_or_hash, hold_for, repeat, tick_count_override = opts
** Processing line: ~ if frame_count_or_hash.is_a? Hash~
- Inside source: true
*** True Line Result
if frame_count_or_hash.is_a? Hash
** Processing line: ~ frame_count = frame_count_or_hash[:count]~
- Inside source: true
*** True Line Result
frame_count = frame_count_or_hash[:count]
** Processing line: ~ hold_for = frame_count_or_hash[:hold_for]~
- Inside source: true
*** True Line Result
hold_for = frame_count_or_hash[:hold_for]
** Processing line: ~ repeat = frame_count_or_hash[:repeat]~
- Inside source: true
*** True Line Result
repeat = frame_count_or_hash[:repeat]
** Processing line: ~ tick_count_override = frame_count_or_hash[:tick_count_override]~
- Inside source: true
*** True Line Result
tick_count_override = frame_count_or_hash[:tick_count_override]
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ frame_count = frame_count_or_hash~
- Inside source: true
*** True Line Result
frame_count = frame_count_or_hash
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ tick_count_override ||= Kernel.tick_count~
- Inside source: true
*** True Line Result
tick_count_override ||= Kernel.tick_count
** Processing line: ~ animation_frame_count = frame_count~
- Inside source: true
*** True Line Result
animation_frame_count = frame_count
** Processing line: ~ animation_frame_hold_time = hold_for~
- Inside source: true
*** True Line Result
animation_frame_hold_time = hold_for
** Processing line: ~ animation_length = animation_frame_hold_time * animation_frame_count~
- Inside source: true
*** True Line Result
animation_length = animation_frame_hold_time * animation_frame_count
** Processing line: ~ return nil if Kernel.tick_count < self~
- Inside source: true
*** True Line Result
return nil if Kernel.tick_count < self
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if !repeat && (self + animation_length) < (tick_count_override - 1)~
- Inside source: true
*** True Line Result
if !repeat && (self + animation_length) < (tick_count_override - 1)
** Processing line: ~ return nil~
- Inside source: true
*** True Line Result
return nil
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ return self.elapsed_time.-(1).idiv(animation_frame_hold_time) % animation_frame_count~
- Inside source: true
*** True Line Result
return self.elapsed_time.-(1).idiv(animation_frame_hold_time) % animation_frame_count
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** 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:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ #{opts}~
- Inside source: true
*** True Line Result
#{opts}
** Processing line: ~ #{e}~
- Inside source: true
*** True Line Result
#{e}
** 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 zero?~
- Inside source: true
*** True Line Result
def zero?
** Processing line: ~ self == 0~
- Inside source: true
*** True Line Result
self == 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def zero~
- Inside source: true
*** True Line Result
def zero
** Processing line: ~ 0~
- Inside source: true
*** True Line Result
0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def one~
- Inside source: true
*** True Line Result
def one
** Processing line: ~ 1~
- Inside source: true
*** True Line Result
1
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def two~
- Inside source: true
*** True Line Result
def two
** Processing line: ~ 2~
- Inside source: true
*** True Line Result
2
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def five~
- Inside source: true
*** True Line Result
def five
** Processing line: ~ 5~
- Inside source: true
*** True Line Result
5
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def ten~
- Inside source: true
*** True Line Result
def ten
** Processing line: ~ 10~
- Inside source: true
*** True Line Result
10
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ alias_method :gt, :>~
- Inside source: true
*** True Line Result
alias_method :gt, :>
** Processing line: ~ alias_method :above?, :>~
- Inside source: true
*** True Line Result
alias_method :above?, :>
** Processing line: ~ alias_method :right_of?, :>~
- Inside source: true
*** True Line Result
alias_method :right_of?, :>
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ alias_method :lt, :<~
- Inside source: true
*** True Line Result
alias_method :lt, :<
** Processing line: ~ alias_method :below?, :<~
- Inside source: true
*** True Line Result
alias_method :below?, :<
** Processing line: ~ alias_method :left_of?, :<~
- Inside source: true
*** True Line Result
alias_method :left_of?, :<
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def shift_right i~
- Inside source: true
*** True Line Result
def shift_right i
** Processing line: ~ self + i~
- Inside source: true
*** True Line Result
self + i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def shift_left i~
- Inside source: true
*** True Line Result
def shift_left i
** Processing line: ~ shift_right(i * -1)~
- Inside source: true
*** True Line Result
shift_right(i * -1)
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise_immediately e, :shift_left, i~
- Inside source: true
*** True Line Result
raise_immediately e, :shift_left, i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def shift_up i~
- Inside source: true
*** True Line Result
def shift_up i
** Processing line: ~ self + i~
- Inside source: true
*** True Line Result
self + i
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise_immediately e, :shift_up, i~
- Inside source: true
*** True Line Result
raise_immediately e, :shift_up, i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def shift_down i~
- Inside source: true
*** True Line Result
def shift_down i
** Processing line: ~ shift_up(i * -1)~
- Inside source: true
*** True Line Result
shift_up(i * -1)
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise_immediately e, :shift_down, i~
- Inside source: true
*** True Line Result
raise_immediately e, :shift_down, i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # This provides a way for a numeric value to be randomized based on a combination~
- Inside source: true
*** True Line Result
# This provides a way for a numeric value to be randomized based on a combination
** Processing line: ~ # of two options: `:sign` and `:ratio`.~
- Inside source: true
*** True Line Result
# of two options: `:sign` and `:ratio`.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def randomize *definitions~
- Inside source: true
*** True Line Result
def randomize *definitions
** Processing line: ~ result = self~
- Inside source: true
*** True Line Result
result = self
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if definitions.include?(:sign)~
- Inside source: true
*** True Line Result
if definitions.include?(:sign)
** Processing line: ~ result = rand_sign~
- Inside source: true
*** True Line Result
result = rand_sign
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ if definitions.include?(:ratio)~
- Inside source: true
*** True Line Result
if definitions.include?(:ratio)
** Processing line: ~ result = rand * result~
- Inside source: true
*** True Line Result
result = rand * result
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ result~
- Inside source: true
*** True Line Result
result
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def rand_sign~
- Inside source: true
*** True Line Result
def rand_sign
** Processing line: ~ return self * -1 if rand > 0.5~
- Inside source: true
*** True Line Result
return self * -1 if rand > 0.5
** Processing line: ~ self~
- Inside source: true
*** True Line Result
self
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def rand_ratio~
- Inside source: true
*** True Line Result
def rand_ratio
** Processing line: ~ self * rand~
- Inside source: true
*** True Line Result
self * rand
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def remainder_of_divide n~
- Inside source: true
*** True Line Result
def remainder_of_divide n
** Processing line: ~ mod n~
- Inside source: true
*** True Line Result
mod n
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
- Inside source: true
*** True Line Result
# Easing function progress/percentage for a specific point in time.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def ease_extended tick_count_override, duration, default_before, default_after, *definitions~
- Inside source: true
*** True Line Result
def ease_extended tick_count_override, duration, default_before, default_after, *definitions
** Processing line: ~ GTK::Easing.ease_extended self,~
- Inside source: true
*** True Line Result
GTK::Easing.ease_extended self,
** Processing line: ~ tick_count_override,~
- Inside source: true
*** True Line Result
tick_count_override,
** Processing line: ~ self + duration,~
- Inside source: true
*** True Line Result
self + duration,
** Processing line: ~ default_before,~
- Inside source: true
*** True Line Result
default_before,
** Processing line: ~ default_after,~
- Inside source: true
*** True Line Result
default_after,
** Processing line: ~ *definitions~
- Inside source: true
*** True Line Result
*definitions
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
- Inside source: true
*** True Line Result
# Easing function progress/percentage for a specific point in time.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def global_ease duration, *definitions~
- Inside source: true
*** True Line Result
def global_ease duration, *definitions
** Processing line: ~ ease_extended Kernel.global_tick_count,~
- Inside source: true
*** True Line Result
ease_extended Kernel.global_tick_count,
** Processing line: ~ duration,~
- Inside source: true
*** True Line Result
duration,
** Processing line: ~ GTK::Easing.initial_value(*definitions),~
- Inside source: true
*** True Line Result
GTK::Easing.initial_value(*definitions),
** Processing line: ~ GTK::Easing.final_value(*definitions),~
- Inside source: true
*** True Line Result
GTK::Easing.final_value(*definitions),
** Processing line: ~ *definitions~
- Inside source: true
*** True Line Result
*definitions
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
- Inside source: true
*** True Line Result
# Easing function progress/percentage for a specific point in time.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def ease duration, *definitions~
- Inside source: true
*** True Line Result
def ease duration, *definitions
** Processing line: ~ ease_extended Kernel.tick_count,~
- Inside source: true
*** True Line Result
ease_extended Kernel.tick_count,
** Processing line: ~ duration,~
- Inside source: true
*** True Line Result
duration,
** Processing line: ~ GTK::Easing.initial_value(*definitions),~
- Inside source: true
*** True Line Result
GTK::Easing.initial_value(*definitions),
** Processing line: ~ GTK::Easing.final_value(*definitions),~
- Inside source: true
*** True Line Result
GTK::Easing.final_value(*definitions),
** Processing line: ~ *definitions~
- Inside source: true
*** True Line Result
*definitions
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
- Inside source: true
*** True Line Result
# Easing function progress/percentage for a specific point in time.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def ease_spline_extended tick_count_override, duration, spline~
- Inside source: true
*** True Line Result
def ease_spline_extended tick_count_override, duration, spline
** Processing line: ~ GTK::Easing.ease_spline_extended self,~
- Inside source: true
*** True Line Result
GTK::Easing.ease_spline_extended self,
** Processing line: ~ tick_count_override,~
- Inside source: true
*** True Line Result
tick_count_override,
** Processing line: ~ self + duration,~
- Inside source: true
*** True Line Result
self + duration,
** Processing line: ~ spline~
- Inside source: true
*** True Line Result
spline
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
- Inside source: true
*** True Line Result
# Easing function progress/percentage for a specific point in time.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def global_ease_spline duration, spline~
- Inside source: true
*** True Line Result
def global_ease_spline duration, spline
** Processing line: ~ ease_spline_extended Kernel.global_tick_count,~
- Inside source: true
*** True Line Result
ease_spline_extended Kernel.global_tick_count,
** Processing line: ~ duration,~
- Inside source: true
*** True Line Result
duration,
** Processing line: ~ spline~
- Inside source: true
*** True Line Result
spline
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
- Inside source: true
*** True Line Result
# Easing function progress/percentage for a specific point in time.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def ease_spline duration, spline~
- Inside source: true
*** True Line Result
def ease_spline duration, spline
** Processing line: ~ ease_spline_extended Kernel.tick_count,~
- Inside source: true
*** True Line Result
ease_spline_extended Kernel.tick_count,
** Processing line: ~ duration,~
- Inside source: true
*** True Line Result
duration,
** Processing line: ~ spline~
- Inside source: true
*** True Line Result
spline
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Converts a number representing an angle in degrees to radians.~
- Inside source: true
*** True Line Result
# Converts a number representing an angle in degrees to radians.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def to_radians~
- Inside source: true
*** True Line Result
def to_radians
** Processing line: ~ self * Math::PI.fdiv(180)~
- Inside source: true
*** True Line Result
self * Math::PI.fdiv(180)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Converts a number representing an angle in radians to degress.~
- Inside source: true
*** True Line Result
# Converts a number representing an angle in radians to degress.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def to_degrees~
- Inside source: true
*** True Line Result
def to_degrees
** Processing line: ~ self / Math::PI.fdiv(180)~
- Inside source: true
*** True Line Result
self / Math::PI.fdiv(180)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Given `self`, a rectangle primitive is returned.~
- Inside source: true
*** True Line Result
# Given `self`, a rectangle primitive is returned.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @example~
- Inside source: true
*** True Line Result
# @example
** Processing line: ~ # 5.to_square 100, 300 # returns [100, 300, 5, 5]~
- Inside source: true
*** True Line Result
# 5.to_square 100, 300 # returns [100, 300, 5, 5]
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def to_square x, y, anchor_x = 0.5, anchor_y = nil~
- Inside source: true
*** True Line Result
def to_square x, y, anchor_x = 0.5, anchor_y = nil
** Processing line: ~ GTK::Geometry.to_square(self, x, y, anchor_x, anchor_y)~
- Inside source: true
*** True Line Result
GTK::Geometry.to_square(self, x, y, anchor_x, anchor_y)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns a normal vector for a number that represents an angle in degress.~
- Inside source: true
*** True Line Result
# Returns a normal vector for a number that represents an angle in degress.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def vector max_value = 1~
- Inside source: true
*** True Line Result
def vector max_value = 1
** Processing line: ~ [vector_x(max_value), vector_y(max_value)]~
- Inside source: true
*** True Line Result
[vector_x(max_value), vector_y(max_value)]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the y component of a normal vector for a number that represents an angle in degress.~
- Inside source: true
*** True Line Result
# Returns the y component of a normal vector for a number that represents an angle in degress.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def vector_y max_value = 1~
- Inside source: true
*** True Line Result
def vector_y max_value = 1
** Processing line: ~ max_value * Math.sin(self.to_radians)~
- Inside source: true
*** True Line Result
max_value * Math.sin(self.to_radians)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the x component of a normal vector for a number that represents an angle in degress.~
- Inside source: true
*** True Line Result
# Returns the x component of a normal vector for a number that represents an angle in degress.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def vector_x max_value = 1~
- Inside source: true
*** True Line Result
def vector_x max_value = 1
** Processing line: ~ max_value * Math.cos(self.to_radians)~
- Inside source: true
*** True Line Result
max_value * Math.cos(self.to_radians)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def x_vector max_value = 1~
- Inside source: true
*** True Line Result
def x_vector max_value = 1
** Processing line: ~ vector_x max_value~
- Inside source: true
*** True Line Result
vector_x max_value
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def y_vector max_value = 1~
- Inside source: true
*** True Line Result
def y_vector max_value = 1
** Processing line: ~ vector_y max_value~
- Inside source: true
*** True Line Result
vector_y max_value
** 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 mod n~
- Inside source: true
*** True Line Result
def mod n
** Processing line: ~ self % n~
- Inside source: true
*** True Line Result
self % n
** 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 mod_zero? *ns~
- Inside source: true
*** True Line Result
def mod_zero? *ns
** Processing line: ~ ns.any? { |n| mod(n) == 0 }~
- Inside source: true
*** True Line Result
ns.any? { |n| mod(n) == 0 }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def mult n~
- Inside source: true
*** True Line Result
def mult n
** Processing line: ~ self * n~
- Inside source: true
*** True Line Result
self * n
** 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 fdiv n~
- Inside source: true
*** True Line Result
def fdiv n
** Processing line: ~ self / n.to_f~
- Inside source: true
*** True Line Result
self / n.to_f
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Divides `self` by a number `n` as a float, and converts it `to_i`.~
- Inside source: true
*** True Line Result
# Divides `self` by a number `n` as a float, and converts it `to_i`.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def idiv n~
- Inside source: true
*** True Line Result
def idiv n
** Processing line: ~ (self / n.to_f).to_i~
- Inside source: true
*** True Line Result
(self / n.to_f).to_i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns a numeric value that is a quantity `magnitude` closer to~
- Inside source: true
*** True Line Result
# Returns a numeric value that is a quantity `magnitude` closer to
** Processing line: ~ #`self`. If the distance between `self` and `target` is less than~
- Inside source: true
*** True Line Result
#`self`. If the distance between `self` and `target` is less than
** Processing line: ~ #the `magnitude` then `target` is returned.~
- Inside source: true
*** True Line Result
#the `magnitude` then `target` is returned.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def towards target, magnitude~
- Inside source: true
*** True Line Result
def towards target, magnitude
** Processing line: ~ return self if self == target~
- Inside source: true
*** True Line Result
return self if self == target
** Processing line: ~ delta = (self - target).abs~
- Inside source: true
*** True Line Result
delta = (self - target).abs
** Processing line: ~ return target if delta < magnitude~
- Inside source: true
*** True Line Result
return target if delta < magnitude
** Processing line: ~ return self - magnitude if self > target~
- Inside source: true
*** True Line Result
return self - magnitude if self > target
** Processing line: ~ return self + magnitude~
- Inside source: true
*** True Line Result
return self + magnitude
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Given `self` and a number representing `y` of a grid. This~
- Inside source: true
*** True Line Result
# Given `self` and a number representing `y` of a grid. This
** Processing line: ~ # function will return a one dimensional array containing the value~
- Inside source: true
*** True Line Result
# function will return a one dimensional array containing the value
** Processing line: ~ # yielded by an implicit block.~
- Inside source: true
*** True Line Result
# yielded by an implicit block.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @example~
- Inside source: true
*** True Line Result
# @example
** Processing line: ~ # 3.map_with_ys 2 do |x, y|~
- Inside source: true
*** True Line Result
# 3.map_with_ys 2 do |x, y|
** Processing line: ~ # x * y~
- Inside source: true
*** True Line Result
# x * y
** Processing line: ~ # end~
- Inside source: true
*** True Line Result
# end
** Processing line: ~ # # x y x y x y x y x y x y~
- Inside source: true
*** True Line Result
# # x y x y x y x y x y x y
** Processing line: ~ # # 0*0, 0*1 1*0 1*1 2*0 2*1~
- Inside source: true
*** True Line Result
# # 0*0, 0*1 1*0 1*1 2*0 2*1
** Processing line: ~ # # => [ 0, 0, 0, 1, 0, 2]~
- Inside source: true
*** True Line Result
# # => [ 0, 0, 0, 1, 0, 2]
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def map_with_ys ys, &block~
- Inside source: true
*** True Line Result
def map_with_ys ys, &block
** Processing line: ~ self.times.flat_map do |x|~
- Inside source: true
*** True Line Result
self.times.flat_map do |x|
** Processing line: ~ ys.map_with_index do |y|~
- Inside source: true
*** True Line Result
ys.map_with_index do |y|
** Processing line: ~ yield x, y~
- Inside source: true
*** True Line Result
yield x, y
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ raise_immediately e, :map_with_ys, [self, ys]~
- Inside source: true
*** True Line Result
raise_immediately e, :map_with_ys, [self, ys]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def combinations other_int~
- Inside source: true
*** True Line Result
def combinations other_int
** Processing line: ~ self.numbers.product(other_int.numbers)~
- Inside source: true
*** True Line Result
self.numbers.product(other_int.numbers)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def percentage_of n~
- Inside source: true
*** True Line Result
def percentage_of n
** Processing line: ~ (self / n.to_f).cap_min_max(0, 1)~
- Inside source: true
*** True Line Result
(self / n.to_f).cap_min_max(0, 1)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def cap i~
- Inside source: true
*** True Line Result
def cap i
** Processing line: ~ return i if self > i~
- Inside source: true
*** True Line Result
return i if self > i
** Processing line: ~ self~
- Inside source: true
*** True Line Result
self
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def cap_min_max min, max~
- Inside source: true
*** True Line Result
def cap_min_max min, max
** Processing line: ~ return min if self < min~
- Inside source: true
*** True Line Result
return min if self < min
** Processing line: ~ return max if self > max~
- Inside source: true
*** True Line Result
return max if self > max
** Processing line: ~ self~
- Inside source: true
*** True Line Result
self
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def lesser other~
- Inside source: true
*** True Line Result
def lesser other
** Processing line: ~ return other if other < self~
- Inside source: true
*** True Line Result
return other if other < self
** Processing line: ~ self~
- Inside source: true
*** True Line Result
self
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def greater other~
- Inside source: true
*** True Line Result
def greater other
** Processing line: ~ return other if other > self~
- Inside source: true
*** True Line Result
return other if other > self
** Processing line: ~ self~
- Inside source: true
*** True Line Result
self
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def subtract i~
- Inside source: true
*** True Line Result
def subtract i
** Processing line: ~ self - i~
- Inside source: true
*** True Line Result
self - i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def minus i~
- Inside source: true
*** True Line Result
def minus i
** Processing line: ~ self - i~
- Inside source: true
*** True Line Result
self - i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def add i~
- Inside source: true
*** True Line Result
def add i
** Processing line: ~ self + i~
- Inside source: true
*** True Line Result
self + i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def plus i~
- Inside source: true
*** True Line Result
def plus i
** Processing line: ~ self + i~
- Inside source: true
*** True Line Result
self + i
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def numbers~
- Inside source: true
*** True Line Result
def numbers
** Processing line: ~ (0..self).to_a~
- Inside source: true
*** True Line Result
(0..self).to_a
** 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 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: ~ alias_method(:original_eq_eq, :==) unless Numeric.instance_methods.include?(:original_eq_eq)~
- Inside source: true
*** True Line Result
alias_method(:original_eq_eq, :==) unless Numeric.instance_methods.include?(:original_eq_eq)
** Processing line: ~ def == other~
- Inside source: true
*** True Line Result
def == other
** Processing line: ~ return true if self.original_eq_eq(other)~
- Inside source: true
*** True Line Result
return true if self.original_eq_eq(other)
** Processing line: ~ if other.is_a?(OpenEntity)~
- Inside source: true
*** True Line Result
if other.is_a?(OpenEntity)
** Processing line: ~ return self.original_eq_eq(other.entity_id)~
- Inside source: true
*** True Line Result
return self.original_eq_eq(other.entity_id)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ return self.original_eq_eq(other)~
- Inside source: true
*** True Line Result
return self.original_eq_eq(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
# @gtk
** Processing line: ~ def map~
- Inside source: true
*** True Line Result
def map
** Processing line: ~ unless block_given?~
- Inside source: true
*** True Line Result
unless block_given?
** Processing line: ~ raise <<-S~
- Inside source: true
*** True Line Result
raise <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ A block is required for Numeric#map.~
- Inside source: true
*** True Line Result
A block is required for Numeric#map.
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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: ~ self.to_i.times.map do~
- Inside source: true
*** True Line Result
self.to_i.times.map do
** Processing line: ~ yield~
- Inside source: true
*** True Line Result
yield
** 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: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def map_with_index~
- Inside source: true
*** True Line Result
def map_with_index
** Processing line: ~ unless block_given?~
- Inside source: true
*** True Line Result
unless block_given?
** Processing line: ~ raise <<-S~
- Inside source: true
*** True Line Result
raise <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ A block is required for Numeric#map.~
- Inside source: true
*** True Line Result
A block is required for Numeric#map.
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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: ~ self.to_i.times.map do |i|~
- Inside source: true
*** True Line Result
self.to_i.times.map do |i|
** Processing line: ~ yield i~
- Inside source: true
*** True Line Result
yield 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 check_numeric! sender, other~
- Inside source: true
*** True Line Result
def check_numeric! sender, other
** Processing line: ~ return if other.is_a? Numeric~
- Inside source: true
*** True Line Result
return if other.is_a? Numeric
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ raise <<-S~
- Inside source: true
*** True Line Result
raise <<-S
** Processing line: ~ * ERROR:~
- Inside source: true
*** True Line Result
* ERROR:
** Processing line: ~ Attempted to invoke :+ on #{self} with the right hand argument of:~
- Inside source: true
*** True Line Result
Attempted to invoke :+ on #{self} with the right hand argument of:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #{other}~
- Inside source: true
*** True Line Result
#{other}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ The object above is not a Numeric.~
- Inside source: true
*** True Line Result
The object above is not a Numeric.
** Processing line: ~~
- Inside source: true
*** True Line Result
** 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 - other~
- Inside source: true
*** True Line Result
def - other
** Processing line: ~ return nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :-, other~
- Inside source: true
*** True Line Result
check_numeric! :-, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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 nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :+, other~
- Inside source: true
*** True Line Result
check_numeric! :+, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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 nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :*, other~
- Inside source: true
*** True Line Result
check_numeric! :*, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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 nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :/, other~
- Inside source: true
*** True Line Result
check_numeric! :/, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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
def serialize
** Processing line: ~ self~
- Inside source: true
*** True Line Result
self
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def from_top~
- Inside source: true
*** True Line Result
def from_top
** Processing line: ~ return 720 - self unless $gtk~
- Inside source: true
*** True Line Result
return 720 - self unless $gtk
** Processing line: ~ $gtk.args.grid.h - self~
- Inside source: true
*** True Line Result
$gtk.args.grid.h - self
** 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: ~ class Fixnum~
- Inside source: true
*** True Line Result
class Fixnum
** Processing line: ~ include ValueType~
- Inside source: true
*** True Line Result
include ValueType
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ alias_method(:original_eq_eq, :==) unless Fixnum.instance_methods.include?(:original_eq_eq)~
- Inside source: true
*** True Line Result
alias_method(:original_eq_eq, :==) unless Fixnum.instance_methods.include?(:original_eq_eq)
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def - other~
- Inside source: true
*** True Line Result
def - other
** Processing line: ~ return nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :-, other~
- Inside source: true
*** True Line Result
check_numeric! :-, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns `true` if the numeric value is evenly divisible by 2.~
- Inside source: true
*** True Line Result
# Returns `true` if the numeric value is evenly divisible by 2.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def even?~
- Inside source: true
*** True Line Result
def even?
** Processing line: ~ return (self % 2) == 0~
- Inside source: true
*** True Line Result
return (self % 2) == 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns `true` if the numeric value is *NOT* evenly divisible by 2.~
- Inside source: true
*** True Line Result
# Returns `true` if the numeric value is *NOT* evenly divisible by 2.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def odd?~
- Inside source: true
*** True Line Result
def odd?
** Processing line: ~ return !even?~
- Inside source: true
*** True Line Result
return !even?
** 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 nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :+, other~
- Inside source: true
*** True Line Result
check_numeric! :+, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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 nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :*, other~
- Inside source: true
*** True Line Result
check_numeric! :*, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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 nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :/, other~
- Inside source: true
*** True Line Result
check_numeric! :/, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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 true if self.original_eq_eq(other)~
- Inside source: true
*** True Line Result
return true if self.original_eq_eq(other)
** Processing line: ~ if other.is_a?(GTK::OpenEntity)~
- Inside source: true
*** True Line Result
if other.is_a?(GTK::OpenEntity)
** Processing line: ~ return self.original_eq_eq(other.entity_id)~
- Inside source: true
*** True Line Result
return self.original_eq_eq(other.entity_id)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ return self.original_eq_eq(other)~
- Inside source: true
*** True Line Result
return self.original_eq_eq(other)
** 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
# 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`.~
- Inside source: true
*** True Line Result
# is greater than `0`. Returns `0` if the number is equal to `0`.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def sign~
- Inside source: true
*** True Line Result
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
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns `true` if number is greater than `0`.~
- Inside source: true
*** True Line Result
# Returns `true` if number is greater than `0`.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def pos?~
- Inside source: true
*** True Line Result
def pos?
** Processing line: ~ sign > 0~
- Inside source: true
*** True Line Result
sign > 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns `true` if number is less than `0`.~
- Inside source: true
*** True Line Result
# Returns `true` if number is less than `0`.
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def neg?~
- Inside source: true
*** True Line Result
def neg?
** Processing line: ~ sign < 0~
- Inside source: true
*** True Line Result
sign < 0
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the cosine of a represented in degrees (NOT radians).~
- Inside source: true
*** True Line Result
# Returns the cosine of a represented in degrees (NOT radians).
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def cos~
- Inside source: true
*** True Line Result
def cos
** Processing line: ~ Math.cos(self.to_radians)~
- Inside source: true
*** True Line Result
Math.cos(self.to_radians)
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ # Returns the cosine of a represented in degrees (NOT radians).~
- Inside source: true
*** True Line Result
# Returns the cosine of a represented in degrees (NOT radians).
** Processing line: ~ #~
- Inside source: true
*** True Line Result
#
** Processing line: ~ # @gtk~
- Inside source: true
*** True Line Result
# @gtk
** Processing line: ~ def sin~
- Inside source: true
*** True Line Result
def sin
** Processing line: ~ Math.sin(self.to_radians)~
- Inside source: true
*** True Line Result
Math.sin(self.to_radians)
** 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: ~ class Float~
- Inside source: true
*** True Line Result
class Float
** Processing line: ~ include ValueType~
- Inside source: true
*** True Line Result
include ValueType
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def - other~
- Inside source: true
*** True Line Result
def - other
** Processing line: ~ return nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :-, other~
- Inside source: true
*** True Line Result
check_numeric! :-, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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 nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :+, other~
- Inside source: true
*** True Line Result
check_numeric! :+, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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 nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :*, other~
- Inside source: true
*** True Line Result
check_numeric! :*, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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 nil unless other~
- Inside source: true
*** True Line Result
return nil unless other
** Processing line: ~ check_numeric! :/, other~
- Inside source: true
*** True Line Result
check_numeric! :/, other
** Processing line: ~ super~
- Inside source: true
*** True Line Result
super
** 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
def serialize
** Processing line: ~ self~
- Inside source: true
*** True Line Result
self
** 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 sign~
- Inside source: true
*** True Line Result
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
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def replace_infinity scalar~
- Inside source: true
*** True Line Result
def replace_infinity scalar
** Processing line: ~ return self if !scalar~
- Inside source: true
*** True Line Result
return self if !scalar
** Processing line: ~ return self unless self.infinite?~
- Inside source: true
*** True Line Result
return self unless self.infinite?
** Processing line: ~ return -scalar if self < 0~
- Inside source: true
*** True Line Result
return -scalar if self < 0
** Processing line: ~ return scalar if self > 0~
- Inside source: true
*** True Line Result
return scalar if self > 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: ~ class Integer~
- Inside source: true
*** True Line Result
class Integer
** Processing line: ~ alias_method(:original_round, :round) unless Fixnum.instance_methods.include?(:original_round)~
- Inside source: true
*** True Line Result
alias_method(:original_round, :round) unless Fixnum.instance_methods.include?(:original_round)
** 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
original_round
** 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: ~* runtime/framerate_diagnostics.rb~
- Header detected.
*** True Line Result
*** True Line Result
* runtime/framerate_diagnostics.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/runtime/framerate_diagnostics.rb~
- Inside source: true
*** True Line Result
# ./dragon/runtime/framerate_diagnostics.rb
** 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: ~ # framerate_diagnostics.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# framerate_diagnostics.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 Runtime~
- Inside source: true
*** True Line Result
class Runtime
** Processing line: ~ # @visibility private~
- Inside source: true
*** True Line Result
# @visibility private
** Processing line: ~ module FramerateDiagnostics~
- Inside source: true
*** True Line Result
module FramerateDiagnostics
** Processing line: ~ def framerate_get_diagnostics~
- Inside source: true
*** True Line Result
def framerate_get_diagnostics
** Processing line: ~ <<-S~
- Inside source: true
*** True Line Result
<<-S
** Processing line: ~ * INFO: Framerate Diagnostics~
- Inside source: true
*** True Line Result
* INFO: Framerate Diagnostics
** Processing line: ~ You can display these diagnostics using:~
- Inside source: true
*** True Line Result
You can display these diagnostics using:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #+begin_src~
- Inside source: true
*** True Line Result
#+begin_src
** Processing line: ~ args.outputs.debug << args.gtk.framerate_diagnostics_primitives~
- Inside source: true
*** True Line Result
args.outputs.debug << args.gtk.framerate_diagnostics_primitives
** Processing line: ~ #+end_src~
- Inside source: true
*** True Line Result
#+end_src
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ ** Draw Calls: ~<<~ Invocation Perf Counter~
- Inside source: true
*** True Line Result
** Draw Calls: ~<<~ Invocation Perf Counter
** Processing line: ~ Here is how many times ~args.outputs.PRIMITIVE_ARRAY <<~ was called:~
- Inside source: true
*** True Line Result
Here is how many times ~args.outputs.PRIMITIVE_ARRAY <<~ was called:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #{$perf_counter_outputs_push_count} times invoked.~
- Inside source: true
*** True Line Result
#{$perf_counter_outputs_push_count} times invoked.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ If the number above is high, consider batching primitives so you can lower the invocation of ~<<~. For example.~
- Inside source: true
*** True Line Result
If the number above is high, consider batching primitives so you can lower the invocation of ~<<~. For example.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Instead of:~
- Inside source: true
*** True Line Result
Instead of:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #+begin_src~
- Inside source: true
*** True Line Result
#+begin_src
** Processing line: ~ args.state.enemies.map do |e|~
- Inside source: true
*** True Line Result
args.state.enemies.map do |e|
** Processing line: ~ e.alpha = 128~
- Inside source: true
*** True Line Result
e.alpha = 128
** Processing line: ~ args.outputs.sprites << e # <-- ~args.outputs.sprites <<~ is invoked a lot~
- Inside source: true
*** True Line Result
args.outputs.sprites << e # <-- ~args.outputs.sprites <<~ is invoked a lot
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ #+end_src~
- Inside source: true
*** True Line Result
#+end_src
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Do this:~
- Inside source: true
*** True Line Result
Do this:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #+begin_src~
- Inside source: true
*** True Line Result
#+begin_src
** Processing line: ~ args.outputs.sprites << args.state~
- Inside source: true
*** True Line Result
args.outputs.sprites << args.state
** Processing line: ~ .enemies~
- Inside source: true
*** True Line Result
.enemies
** Processing line: ~ .map do |e| # <-- ~args.outputs.sprites <<~ is only invoked once.~
- Inside source: true
*** True Line Result
.map do |e| # <-- ~args.outputs.sprites <<~ is only invoked once.
** Processing line: ~ e.alpha = 128~
- Inside source: true
*** True Line Result
e.alpha = 128
** Processing line: ~ e~
- Inside source: true
*** True Line Result
e
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ #+end_src~
- Inside source: true
*** True Line Result
#+end_src
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ ** Array Primitives~
- Inside source: true
*** True Line Result
** Array Primitives
** Processing line: ~ ~Primitives~ represented as an ~Array~ (~Tuple~) are great for prototyping, but are not as performant as using a ~Hash~.~
- Inside source: true
*** True Line Result
~Primitives~ represented as an ~Array~ (~Tuple~) are great for prototyping, but are not as performant as using a ~Hash~.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Here is the number of ~Array~ primitives that were encountered:~
- Inside source: true
*** True Line Result
Here is the number of ~Array~ primitives that were encountered:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #{$perf_counter_primitive_is_array} Array Primitives.~
- Inside source: true
*** True Line Result
#{$perf_counter_primitive_is_array} Array Primitives.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ If the number above is high, consider converting them to hashes. For example.~
- Inside source: true
*** True Line Result
If the number above is high, consider converting them to hashes. For example.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Instead of:~
- Inside source: true
*** True Line Result
Instead of:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #+begin_src~
- Inside source: true
*** True Line Result
#+begin_src
** Processing line: ~ args.outputs.sprites << [0, 0, 100, 100, 'sprites/enemy.png']~
- Inside source: true
*** True Line Result
args.outputs.sprites << [0, 0, 100, 100, 'sprites/enemy.png']
** Processing line: ~ #+begin_end~
- Inside source: true
*** True Line Result
#+begin_end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Do this:~
- Inside source: true
*** True Line Result
Do this:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #+begin_src~
- Inside source: true
*** True Line Result
#+begin_src
** Processing line: ~ args.outputs.sprites << { x: 0,~
- Inside source: true
*** True Line Result
args.outputs.sprites << { x: 0,
** Processing line: ~ y: 0,~
- Inside source: true
*** True Line Result
y: 0,
** Processing line: ~ w: 100,~
- Inside source: true
*** True Line Result
w: 100,
** Processing line: ~ h: 100,~
- Inside source: true
*** True Line Result
h: 100,
** Processing line: ~ path: 'sprites/enemy.png' }~
- Inside source: true
*** True Line Result
path: 'sprites/enemy.png' }
** Processing line: ~ #+begin_end~
- Inside source: true
*** True Line Result
#+begin_end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ ** Primitive Counts~
- Inside source: true
*** True Line Result
** Primitive Counts
** Processing line: ~ Here are the draw counts ordered by lowest to highest z order:~
- Inside source: true
*** True Line Result
Here are the draw counts ordered by lowest to highest z order:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ PRIMITIVE COUNT, STATIC COUNT~
- Inside source: true
*** True Line Result
PRIMITIVE COUNT, STATIC COUNT
** Processing line: ~ solids: #{@args.outputs.solids.length}, #{@args.outputs.static_solids.length}~
- Inside source: true
*** True Line Result
solids: #{@args.outputs.solids.length}, #{@args.outputs.static_solids.length}
** Processing line: ~ sprites: #{@args.outputs.sprites.length}, #{@args.outputs.static_sprites.length}~
- Inside source: true
*** True Line Result
sprites: #{@args.outputs.sprites.length}, #{@args.outputs.static_sprites.length}
** Processing line: ~ primitives: #{@args.outputs.primitives.length}, #{@args.outputs.static_primitives.length}~
- Inside source: true
*** True Line Result
primitives: #{@args.outputs.primitives.length}, #{@args.outputs.static_primitives.length}
** Processing line: ~ labels: #{@args.outputs.labels.length}, #{@args.outputs.static_labels.length}~
- Inside source: true
*** True Line Result
labels: #{@args.outputs.labels.length}, #{@args.outputs.static_labels.length}
** Processing line: ~ lines: #{@args.outputs.lines.length}, #{@args.outputs.static_lines.length}~
- Inside source: true
*** True Line Result
lines: #{@args.outputs.lines.length}, #{@args.outputs.static_lines.length}
** Processing line: ~ borders: #{@args.outputs.borders.length}, #{@args.outputs.static_borders.length}~
- Inside source: true
*** True Line Result
borders: #{@args.outputs.borders.length}, #{@args.outputs.static_borders.length}
** Processing line: ~ debug: #{@args.outputs.debug.length}, #{@args.outputs.static_debug.length}~
- Inside source: true
*** True Line Result
debug: #{@args.outputs.debug.length}, #{@args.outputs.static_debug.length}
** Processing line: ~ reserved: #{@args.outputs.reserved.length}, #{@args.outputs.static_reserved.length}~
- Inside source: true
*** True Line Result
reserved: #{@args.outputs.reserved.length}, #{@args.outputs.static_reserved.length}
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ ** Additional Help~
- Inside source: true
*** True Line Result
** Additional Help
** Processing line: ~ Come to the DragonRuby Discord channel if you need help troubleshooting performance issues. http://discord.dragonruby.org.~
- Inside source: true
*** True Line Result
Come to the DragonRuby Discord channel if you need help troubleshooting performance issues. http://discord.dragonruby.org.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ Source code for these diagnostics can be found at: [[https://github.com/dragonruby/dragonruby-game-toolkit-contrib/]]~
- Inside source: true
*** True Line Result
Source code for these diagnostics can be found at: [[https://github.com/dragonruby/dragonruby-game-toolkit-contrib/]]
** 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 framerate_warning_message~
- Inside source: true
*** True Line Result
def framerate_warning_message
** Processing line: ~ <<-S~
- Inside source: true
*** True Line Result
<<-S
** Processing line: ~ * WARNING:~
- Inside source: true
*** True Line Result
* WARNING:
** Processing line: ~ Your average framerate dropped below 60 fps for two seconds.~
- Inside source: true
*** True Line Result
Your average framerate dropped below 60 fps for two seconds.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ The average FPS was #{current_framerate}.~
- Inside source: true
*** True Line Result
The average FPS was #{current_framerate}.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ ** How To Disable Warning~
- Inside source: true
*** True Line Result
** How To Disable Warning
** Processing line: ~ If this warning is getting annoying put the following in your tick method:~
- Inside source: true
*** True Line Result
If this warning is getting annoying put the following in your tick method:
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #+begin_src~
- Inside source: true
*** True Line Result
#+begin_src
** Processing line: ~ args.gtk.log_level = :off~
- Inside source: true
*** True Line Result
args.gtk.log_level = :off
** Processing line: ~ #+end_src~
- Inside source: true
*** True Line Result
#+end_src
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ #{framerate_get_diagnostics}~
- Inside source: true
*** True Line Result
#{framerate_get_diagnostics}
** 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 current_framerate_primitives~
- Inside source: true
*** True Line Result
def current_framerate_primitives
** Processing line: ~ framerate_diagnostics_primitives~
- Inside source: true
*** True Line Result
framerate_diagnostics_primitives
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def framerate_diagnostics_primitives~
- Inside source: true
*** True Line Result
def framerate_diagnostics_primitives
** Processing line: ~ [~
- Inside source: true
*** True Line Result
[
** Processing line: ~ { x: 0, y: 93.from_top, w: 500, h: 93, a: 128 }.solid,~
- Inside source: true
*** True Line Result
{ x: 0, y: 93.from_top, w: 500, h: 93, a: 128 }.solid,
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: 5,~
- Inside source: true
*** True Line Result
x: 5,
** Processing line: ~ y: 5.from_top,~
- Inside source: true
*** True Line Result
y: 5.from_top,
** Processing line: ~ text: "More Info via DragonRuby Console: $gtk.framerate_diagnostics",~
- Inside source: true
*** True Line Result
text: "More Info via DragonRuby Console: $gtk.framerate_diagnostics",
** Processing line: ~ r: 255,~
- Inside source: true
*** True Line Result
r: 255,
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 255,~
- Inside source: true
*** True Line Result
b: 255,
** Processing line: ~ size_enum: -2~
- Inside source: true
*** True Line Result
size_enum: -2
** Processing line: ~ }.label,~
- Inside source: true
*** True Line Result
}.label,
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: 5,~
- Inside source: true
*** True Line Result
x: 5,
** Processing line: ~ y: 20.from_top,~
- Inside source: true
*** True Line Result
y: 20.from_top,
** Processing line: ~ text: "FPS: %.2f" % args.gtk.current_framerate,~
- Inside source: true
*** True Line Result
text: "FPS: %.2f" % args.gtk.current_framerate,
** Processing line: ~ r: 255,~
- Inside source: true
*** True Line Result
r: 255,
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 255,~
- Inside source: true
*** True Line Result
b: 255,
** Processing line: ~ size_enum: -2~
- Inside source: true
*** True Line Result
size_enum: -2
** Processing line: ~ }.label,~
- Inside source: true
*** True Line Result
}.label,
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: 5,~
- Inside source: true
*** True Line Result
x: 5,
** Processing line: ~ y: 35.from_top,~
- Inside source: true
*** True Line Result
y: 35.from_top,
** Processing line: ~ text: "Draw Calls: #{$perf_counter_outputs_push_count}",~
- Inside source: true
*** True Line Result
text: "Draw Calls: #{$perf_counter_outputs_push_count}",
** Processing line: ~ r: 255,~
- Inside source: true
*** True Line Result
r: 255,
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 255,~
- Inside source: true
*** True Line Result
b: 255,
** Processing line: ~ size_enum: -2~
- Inside source: true
*** True Line Result
size_enum: -2
** Processing line: ~ }.label,~
- Inside source: true
*** True Line Result
}.label,
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: 5,~
- Inside source: true
*** True Line Result
x: 5,
** Processing line: ~ y: 50.from_top,~
- Inside source: true
*** True Line Result
y: 50.from_top,
** Processing line: ~ text: "Array Primitives: #{$perf_counter_primitive_is_array}",~
- Inside source: true
*** True Line Result
text: "Array Primitives: #{$perf_counter_primitive_is_array}",
** Processing line: ~ r: 255,~
- Inside source: true
*** True Line Result
r: 255,
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 255,~
- Inside source: true
*** True Line Result
b: 255,
** Processing line: ~ size_enum: -2~
- Inside source: true
*** True Line Result
size_enum: -2
** Processing line: ~ }.label,~
- Inside source: true
*** True Line Result
}.label,
** Processing line: ~ {~
- Inside source: true
*** True Line Result
{
** Processing line: ~ x: 5,~
- Inside source: true
*** True Line Result
x: 5,
** Processing line: ~ y: 65.from_top,~
- Inside source: true
*** True Line Result
y: 65.from_top,
** Processing line: ~ text: "Mouse: #{@args.inputs.mouse.point}",~
- Inside source: true
*** True Line Result
text: "Mouse: #{@args.inputs.mouse.point}",
** Processing line: ~ r: 255,~
- Inside source: true
*** True Line Result
r: 255,
** Processing line: ~ g: 255,~
- Inside source: true
*** True Line Result
g: 255,
** Processing line: ~ b: 255,~
- Inside source: true
*** True Line Result
b: 255,
** Processing line: ~ size_enum: -2~
- Inside source: true
*** True Line Result
size_enum: -2
** Processing line: ~ }.label,~
- Inside source: true
*** True Line Result
}.label,
** 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~
- 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: ~* string.rb~
- Header detected.
*** True Line Result
*** True Line Result
* string.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/string.rb~
- Inside source: true
*** True Line Result
# ./dragon/string.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: ~ # string.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# string.rb has been released under MIT (*only this file*).
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ class String~
- Inside source: true
*** True Line Result
class String
** Processing line: ~ include ValueType~
- Inside source: true
*** True Line Result
include ValueType
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def wrapped_lines_recur word, rest, length, aggregate~
- Inside source: true
*** True Line Result
def wrapped_lines_recur word, rest, length, aggregate
** Processing line: ~ if word.nil?~
- Inside source: true
*** True Line Result
if word.nil?
** Processing line: ~ return aggregate~
- Inside source: true
*** True Line Result
return aggregate
** Processing line: ~ elsif rest[0].nil?~
- Inside source: true
*** True Line Result
elsif rest[0].nil?
** Processing line: ~ aggregate << word + "\n"~
- Inside source: true
*** True Line Result
aggregate << word + "\n"
** Processing line: ~ return aggregate~
- Inside source: true
*** True Line Result
return aggregate
** Processing line: ~ elsif (word + " " + rest[0]).length > length~
- Inside source: true
*** True Line Result
elsif (word + " " + rest[0]).length > length
** Processing line: ~ aggregate << word + "\n"~
- Inside source: true
*** True Line Result
aggregate << word + "\n"
** Processing line: ~ return wrapped_lines_recur rest[0], rest[1..-1], length, aggregate~
- Inside source: true
*** True Line Result
return wrapped_lines_recur rest[0], rest[1..-1], length, aggregate
** Processing line: ~ elsif (word + " " + rest[0]).length <= length~
- Inside source: true
*** True Line Result
elsif (word + " " + rest[0]).length <= length
** Processing line: ~ next_word = (word + " " + rest[0])~
- Inside source: true
*** True Line Result
next_word = (word + " " + rest[0])
** Processing line: ~ return wrapped_lines_recur next_word, rest[1..-1], length, aggregate~
- Inside source: true
*** True Line Result
return wrapped_lines_recur next_word, rest[1..-1], length, aggregate
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ log <<-S~
- Inside source: true
*** True Line Result
log <<-S
** Processing line: ~ WARNING:~
- Inside source: true
*** True Line Result
WARNING:
** Processing line: ~ #{word} is too long to fit in length of #{length}.~
- Inside source: true
*** True Line Result
#{word} is too long to fit in length of #{length}.
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ S~
- Inside source: true
*** True Line Result
S
** Processing line: ~ next_word = (word + " " + rest[0])~
- Inside source: true
*** True Line Result
next_word = (word + " " + rest[0])
** Processing line: ~ return wrapped_lines_recur next_word, rest[1..-1], length, aggregate~
- Inside source: true
*** True Line Result
return wrapped_lines_recur next_word, rest[1..-1], length, aggregate
** 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 end_with_bang?~
- Inside source: true
*** True Line Result
def end_with_bang?
** Processing line: ~ self[-1] == "!"~
- Inside source: true
*** True Line Result
self[-1] == "!"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def without_ending_bang~
- Inside source: true
*** True Line Result
def without_ending_bang
** Processing line: ~ return self unless end_with_bang?~
- Inside source: true
*** True Line Result
return self unless end_with_bang?
** Processing line: ~ self[0..-2]~
- Inside source: true
*** True Line Result
self[0..-2]
** 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 wrapped_lines length~
- Inside source: true
*** True Line Result
def wrapped_lines length
** Processing line: ~ self.each_line.map do |l|~
- Inside source: true
*** True Line Result
self.each_line.map do |l|
** Processing line: ~ l = l.rstrip~
- Inside source: true
*** True Line Result
l = l.rstrip
** Processing line: ~ if l.length < length~
- Inside source: true
*** True Line Result
if l.length < length
** Processing line: ~ l + "\n"~
- Inside source: true
*** True Line Result
l + "\n"
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ words = l.split ' '~
- Inside source: true
*** True Line Result
words = l.split ' '
** Processing line: ~ wrapped_lines_recur(words[0], words[1..-1], length, []).flatten~
- Inside source: true
*** True Line Result
wrapped_lines_recur(words[0], words[1..-1], length, []).flatten
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end.flatten~
- Inside source: true
*** True Line Result
end.flatten
** 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 wrap length~
- Inside source: true
*** True Line Result
def wrap length
** Processing line: ~ wrapped_lines(length).join.rstrip~
- Inside source: true
*** True Line Result
wrapped_lines(length).join.rstrip
** 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 multiline?~
- Inside source: true
*** True Line Result
def multiline?
** Processing line: ~ include? "\n"~
- Inside source: true
*** True Line Result
include? "\n"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def indent_lines amount, char = " "~
- Inside source: true
*** True Line Result
def indent_lines amount, char = " "
** Processing line: ~ self.each_line.each_with_index.map do |l, i|~
- Inside source: true
*** True Line Result
self.each_line.each_with_index.map do |l, i|
** Processing line: ~ if i == 0~
- Inside source: true
*** True Line Result
if i == 0
** Processing line: ~ l~
- Inside source: true
*** True Line Result
l
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ char * amount + l~
- Inside source: true
*** True Line Result
char * amount + l
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end.join~
- Inside source: true
*** True Line Result
end.join
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def quote~
- Inside source: true
*** True Line Result
def quote
** Processing line: ~ "\"#{self}\""~
- Inside source: true
*** True Line Result
"\"#{self}\""
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def trim~
- Inside source: true
*** True Line Result
def trim
** Processing line: ~ strip~
- Inside source: true
*** True Line Result
strip
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def trim!~
- Inside source: true
*** True Line Result
def trim!
** Processing line: ~ strip!~
- Inside source: true
*** True Line Result
strip!
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def ltrim~
- Inside source: true
*** True Line Result
def ltrim
** Processing line: ~ lstrip~
- Inside source: true
*** True Line Result
lstrip
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def ltrim!~
- Inside source: true
*** True Line Result
def ltrim!
** Processing line: ~ lstrip!~
- Inside source: true
*** True Line Result
lstrip!
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def rtrim~
- Inside source: true
*** True Line Result
def rtrim
** Processing line: ~ rstrip~
- Inside source: true
*** True Line Result
rstrip
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def rtrim!~
- Inside source: true
*** True Line Result
def rtrim!
** Processing line: ~ rstrip!~
- Inside source: true
*** True Line Result
rstrip!
** 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: ~* tests.rb~
- Header detected.
*** True Line Result
*** True Line Result
* tests.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/tests.rb~
- Inside source: true
*** True Line Result
# ./dragon/tests.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: ~ # tests.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# tests.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 Tests~
- Inside source: true
*** True Line Result
class Tests
** Processing line: ~ attr_accessor :failed, :passed, :inconclusive~
- Inside source: true
*** True Line Result
attr_accessor :failed, :passed, :inconclusive
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def initialize~
- Inside source: true
*** True Line Result
def initialize
** Processing line: ~ @failed = []~
- Inside source: true
*** True Line Result
@failed = []
** Processing line: ~ @passed = []~
- Inside source: true
*** True Line Result
@passed = []
** Processing line: ~ @inconclusive = []~
- Inside source: true
*** True Line Result
@inconclusive = []
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def run_test m~
- Inside source: true
*** True Line Result
def run_test m
** Processing line: ~ args = Args.new $gtk, nil~
- Inside source: true
*** True Line Result
args = Args.new $gtk, nil
** Processing line: ~ assert = Assert.new~
- Inside source: true
*** True Line Result
assert = Assert.new
** Processing line: ~ begin~
- Inside source: true
*** True Line Result
begin
** Processing line: ~ log_test_running m~
- Inside source: true
*** True Line Result
log_test_running m
** Processing line: ~ send(m, args, assert)~
- Inside source: true
*** True Line Result
send(m, args, assert)
** Processing line: ~ if !assert.assertion_performed~
- Inside source: true
*** True Line Result
if !assert.assertion_performed
** Processing line: ~ log_inconclusive m~
- Inside source: true
*** True Line Result
log_inconclusive m
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ log_passed m~
- Inside source: true
*** True Line Result
log_passed m
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ if test_signature_invalid_exception? e, m~
- Inside source: true
*** True Line Result
if test_signature_invalid_exception? e, m
** Processing line: ~ log_test_signature_incorrect m~
- Inside source: true
*** True Line Result
log_test_signature_incorrect m
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ mark_test_failed m, e~
- Inside source: true
*** True Line Result
mark_test_failed m, 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: ~ def test_methods_focused~
- Inside source: true
*** True Line Result
def test_methods_focused
** Processing line: ~ Object.methods.find_all { |m| m.start_with?( "focus_test_") }~
- Inside source: true
*** True Line Result
Object.methods.find_all { |m| m.start_with?( "focus_test_") }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_methods~
- Inside source: true
*** True Line Result
def test_methods
** Processing line: ~ Object.methods.find_all { |m| m.start_with? "test_" }~
- Inside source: true
*** True Line Result
Object.methods.find_all { |m| m.start_with? "test_" }
** 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~
- Inside source: true
*** True Line Result
def start
** Processing line: ~ log "* TEST: gtk.test.start has been invoked."~
- Inside source: true
*** True Line Result
log "* TEST: gtk.test.start has been invoked."
** Processing line: ~ if test_methods_focused.length != 0~
- Inside source: true
*** True Line Result
if test_methods_focused.length != 0
** Processing line: ~ @is_running = true~
- Inside source: true
*** True Line Result
@is_running = true
** Processing line: ~ test_methods_focused.each { |m| run_test m }~
- Inside source: true
*** True Line Result
test_methods_focused.each { |m| run_test m }
** Processing line: ~ print_summary~
- Inside source: true
*** True Line Result
print_summary
** Processing line: ~ @is_running = false~
- Inside source: true
*** True Line Result
@is_running = false
** Processing line: ~ elsif test_methods.length == 0~
- Inside source: true
*** True Line Result
elsif test_methods.length == 0
** Processing line: ~ log_no_tests_found~
- Inside source: true
*** True Line Result
log_no_tests_found
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ @is_running = true~
- Inside source: true
*** True Line Result
@is_running = true
** Processing line: ~ test_methods.each { |m| run_test m }~
- Inside source: true
*** True Line Result
test_methods.each { |m| run_test m }
** Processing line: ~ print_summary~
- Inside source: true
*** True Line Result
print_summary
** Processing line: ~ @is_running = false~
- Inside source: true
*** True Line Result
@is_running = false
** 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 mark_test_failed m, e~
- Inside source: true
*** True Line Result
def mark_test_failed m, e
** Processing line: ~ message = "Failed."~
- Inside source: true
*** True Line Result
message = "Failed."
** Processing line: ~ self.failed << { m: m, e: e }~
- Inside source: true
*** True Line Result
self.failed << { m: m, e: e }
** Processing line: ~ log message~
- Inside source: true
*** True Line Result
log message
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def running?~
- Inside source: true
*** True Line Result
def running?
** Processing line: ~ @is_running~
- Inside source: true
*** True Line Result
@is_running
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_inconclusive m~
- Inside source: true
*** True Line Result
def log_inconclusive m
** Processing line: ~ self.inconclusive << {m: m}~
- Inside source: true
*** True Line Result
self.inconclusive << {m: m}
** Processing line: ~ log "Inconclusive."~
- Inside source: true
*** True Line Result
log "Inconclusive."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_passed m~
- Inside source: true
*** True Line Result
def log_passed m
** Processing line: ~ self.passed << {m: m}~
- Inside source: true
*** True Line Result
self.passed << {m: m}
** Processing line: ~ log "Passed."~
- Inside source: true
*** True Line Result
log "Passed."
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_no_tests_found~
- Inside source: true
*** True Line Result
def log_no_tests_found
** Processing line: ~ log <<-S~
- Inside source: true
*** True Line Result
log <<-S
** Processing line: ~ No tests were found. To create a test. Define a method~
- Inside source: true
*** True Line Result
No tests were found. To create a test. Define a method
** Processing line: ~ that begins with test_. For example:~
- Inside source: true
*** True Line Result
that begins with test_. For example:
** Processing line: ~ #+begin_src~
- Inside source: true
*** True Line Result
#+begin_src
** Processing line: ~ def test_game_over args, assert~
- Inside source: true
*** True Line Result
def test_game_over args, assert
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ #+end_src~
- Inside source: true
*** True Line Result
#+end_src
** 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 log_test_running m~
- Inside source: true
*** True Line Result
def log_test_running m
** Processing line: ~ log "** Running: #{m}"~
- Inside source: true
*** True Line Result
log "** Running: #{m}"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def test_signature_invalid_exception? e, m~
- Inside source: true
*** True Line Result
def test_signature_invalid_exception? e, m
** Processing line: ~ e.to_s.include?(m.to_s) && e.to_s.include?("wrong number of arguments")~
- Inside source: true
*** True Line Result
e.to_s.include?(m.to_s) && e.to_s.include?("wrong number of arguments")
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def log_test_signature_incorrect m~
- Inside source: true
*** True Line Result
def log_test_signature_incorrect m
** Processing line: ~ log "TEST METHOD INVALID:", <<-S~
- Inside source: true
*** True Line Result
log "TEST METHOD INVALID:", <<-S
** Processing line: ~ I found a test method called :#{m}. But it needs to have~
- Inside source: true
*** True Line Result
I found a test method called :#{m}. But it needs to have
** Processing line: ~ the following method signature:~
- Inside source: true
*** True Line Result
the following method signature:
** Processing line: ~ #+begin_src~
- Inside source: true
*** True Line Result
#+begin_src
** Processing line: ~ def #{m} args, assert~
- Inside source: true
*** True Line Result
def #{m} args, assert
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ #+end_src~
- Inside source: true
*** True Line Result
#+end_src
** Processing line: ~ Please update the method signature to match the code above. If you~
- Inside source: true
*** True Line Result
Please update the method signature to match the code above. If you
** Processing line: ~ did not intend this to be a test method. Rename the method so it does~
- Inside source: true
*** True Line Result
did not intend this to be a test method. Rename the method so it does
** Processing line: ~ not start with "test_".~
- Inside source: true
*** True Line Result
not start with "test_".
** 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 print_summary~
- Inside source: true
*** True Line Result
def print_summary
** Processing line: ~ log "** Summary"~
- Inside source: true
*** True Line Result
log "** Summary"
** Processing line: ~ log "*** Passed"~
- Inside source: true
*** True Line Result
log "*** Passed"
** Processing line: ~ log "#{self.passed.length} test(s) passed."~
- Inside source: true
*** True Line Result
log "#{self.passed.length} test(s) passed."
** Processing line: ~ self.passed.each { |h| log "**** :#{h[:m]}" }~
- Inside source: true
*** True Line Result
self.passed.each { |h| log "**** :#{h[:m]}" }
** Processing line: ~ log "*** Inconclusive"~
- Inside source: true
*** True Line Result
log "*** Inconclusive"
** Processing line: ~ if self.inconclusive.length > 0~
- Inside source: true
*** True Line Result
if self.inconclusive.length > 0
** Processing line: ~ log_once :assertion_ok_note, <<-S~
- Inside source: true
*** True Line Result
log_once :assertion_ok_note, <<-S
** Processing line: ~ NOTE FOR INCONCLUSIVE TESTS: No assertion was performed in the test.~
- Inside source: true
*** True Line Result
NOTE FOR INCONCLUSIVE TESTS: No assertion was performed in the test.
** Processing line: ~ Add assert.ok! at the end of the test if you are using your own assertions.~
- Inside source: true
*** True Line Result
Add assert.ok! at the end of the test if you are using your own assertions.
** Processing line: ~ S~
- Inside source: true
*** True Line Result
S
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ log "#{self.inconclusive.length} test(s) inconclusive."~
- Inside source: true
*** True Line Result
log "#{self.inconclusive.length} test(s) inconclusive."
** Processing line: ~ self.inconclusive.each { |h| log "**** :#{h[:m]}" }~
- Inside source: true
*** True Line Result
self.inconclusive.each { |h| log "**** :#{h[:m]}" }
** Processing line: ~ log "*** Failed"~
- Inside source: true
*** True Line Result
log "*** Failed"
** Processing line: ~ log "#{self.failed.length} test(s) failed."~
- Inside source: true
*** True Line Result
log "#{self.failed.length} test(s) failed."
** Processing line: ~ self.failed.each do |h|~
- Inside source: true
*** True Line Result
self.failed.each do |h|
** Processing line: ~ log "**** Test name: :#{h[:m]}"~
- Inside source: true
*** True Line Result
log "**** Test name: :#{h[:m]}"
** Processing line: ~ log "#{h[:e].to_s.gsub("* ERROR:", "").strip}"~
- Inside source: true
*** True Line Result
log "#{h[:e].to_s.gsub("* ERROR:", "").strip}"
** 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: ~ 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: ~* trace.rb~
- Header detected.
*** True Line Result
*** True Line Result
* trace.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/trace.rb~
- Inside source: true
*** True Line Result
# ./dragon/trace.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: ~ # trace.rb has been released under MIT (*only this file*).~
- Inside source: true
*** True Line Result
# trace.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: ~ module Trace~
- Inside source: true
*** True Line Result
module Trace
** Processing line: ~ IGNORED_METHODS = [~
- Inside source: true
*** True Line Result
IGNORED_METHODS = [
** Processing line: ~ :define_singleton_method, :raise_immediately, :instance_of?,~
- Inside source: true
*** True Line Result
:define_singleton_method, :raise_immediately, :instance_of?,
** Processing line: ~ :raise_with_caller, :initialize_copy, :class_defined?,~
- Inside source: true
*** True Line Result
:raise_with_caller, :initialize_copy, :class_defined?,
** Processing line: ~ :instance_variable_get, :format, :purge_class, :instance_variable_defined?,~
- Inside source: true
*** True Line Result
:instance_variable_get, :format, :purge_class, :instance_variable_defined?,
** Processing line: ~ :metadata_object_id, :instance_variable_set, :__printstr__,~
- Inside source: true
*** True Line Result
:metadata_object_id, :instance_variable_set, :__printstr__,
** Processing line: ~ :instance_variables, :is_a?, :p, :kind_of?, :==, :log_once,~
- Inside source: true
*** True Line Result
:instance_variables, :is_a?, :p, :kind_of?, :==, :log_once,
** Processing line: ~ :protected_methods, :log_once_info, :private_methods, :open,~
- Inside source: true
*** True Line Result
:protected_methods, :log_once_info, :private_methods, :open,
** Processing line: ~ :!=, :initialize, :object_id, :Hash, :methods, :tick, :!,~
- Inside source: true
*** True Line Result
:!=, :initialize, :object_id, :Hash, :methods, :tick, :!,
** Processing line: ~ :respond_to?, :yield_self, :send, :instance_eval, :then,~
- Inside source: true
*** True Line Result
:respond_to?, :yield_self, :send, :instance_eval, :then,
** Processing line: ~ :__method__, :__send__, :log_print, :dig, :itself, :log_info,~
- Inside source: true
*** True Line Result
:__method__, :__send__, :log_print, :dig, :itself, :log_info,
** Processing line: ~ :remove_instance_variable, :raise, :public_methods, :instance_exec,~
- Inside source: true
*** True Line Result
:remove_instance_variable, :raise, :public_methods, :instance_exec,
** Processing line: ~ :gets, :local_variables, :tap, :__id__, :class, :singleton_class,~
- Inside source: true
*** True Line Result
:gets, :local_variables, :tap, :__id__, :class, :singleton_class,
** Processing line: ~ :block_given?, :_inspect, :puts, :global_variables, :getc, :iterator?,~
- Inside source: true
*** True Line Result
:block_given?, :_inspect, :puts, :global_variables, :getc, :iterator?,
** Processing line: ~ :hash, :to_enum, :printf, :frozen?, :print, :original_puts,~
- Inside source: true
*** True Line Result
:hash, :to_enum, :printf, :frozen?, :print, :original_puts,
** Processing line: ~ :srand, :freeze, :rand, :extend, :eql?, :equal?, :sprintf, :clone,~
- Inside source: true
*** True Line Result
:srand, :freeze, :rand, :extend, :eql?, :equal?, :sprintf, :clone,
** Processing line: ~ :dup, :to_s, :primitive_determined?, :inspect, :primitive?, :help,~
- Inside source: true
*** True Line Result
:dup, :to_s, :primitive_determined?, :inspect, :primitive?, :help,
** Processing line: ~ :__object_methods__, :proc, :__custom_object_methods__, :Float, :enum_for,~
- Inside source: true
*** True Line Result
:__object_methods__, :proc, :__custom_object_methods__, :Float, :enum_for,
** Processing line: ~ :__supports_ivars__?, :nil?, :fast_rand, :or, :and,~
- Inside source: true
*** True Line Result
:__supports_ivars__?, :nil?, :fast_rand, :or, :and,
** Processing line: ~ :__caller_without_noise__, :__gtk_ruby_string_contains_source_file_path__?,~
- Inside source: true
*** True Line Result
:__caller_without_noise__, :__gtk_ruby_string_contains_source_file_path__?,
** Processing line: ~ :__pretty_print_exception__, :__gtk_ruby_source_files__,~
- Inside source: true
*** True Line Result
:__pretty_print_exception__, :__gtk_ruby_source_files__,
** Processing line: ~ :String, :log, :Array, :putsc, :Integer, :===, :here,~
- Inside source: true
*** True Line Result
:String, :log, :Array, :putsc, :Integer, :===, :here,
** Processing line: ~ :raise_error_with_kind_of_okay_message, :better_instance_information,~
- Inside source: true
*** True Line Result
:raise_error_with_kind_of_okay_message, :better_instance_information,
** Processing line: ~ :lambda, :fail, :method_missing, :__case_eqq, :caller,~
- Inside source: true
*** True Line Result
:lambda, :fail, :method_missing, :__case_eqq, :caller,
** Processing line: ~ :raise_method_missing_better_error, :require, :singleton_methods,~
- Inside source: true
*** True Line Result
:raise_method_missing_better_error, :require, :singleton_methods,
** Processing line: ~ :!~, :loop, :numeric_or_default, :`, :state, :inputs, :outputs, "args=".to_sym,~
- Inside source: true
*** True Line Result
:!~, :loop, :numeric_or_default, :`, :state, :inputs, :outputs, "args=".to_sym,
** Processing line: ~ :grid, :gtk, :dragon, :args, :passes, :tick, :grep_source, :grep_source_file,~
- Inside source: true
*** True Line Result
:grid, :gtk, :dragon, :args, :passes, :tick, :grep_source, :grep_source_file,
** Processing line: ~ :numeric_or_default, :f_or_default, :s_or_default, :i_or_default,~
- Inside source: true
*** True Line Result
:numeric_or_default, :f_or_default, :s_or_default, :i_or_default,
** Processing line: ~ :comment, :primitive_marker, :xrepl, :repl~
- Inside source: true
*** True Line Result
:comment, :primitive_marker, :xrepl, :repl
** Processing line: ~ ]~
- Inside source: true
*** True Line Result
]
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.traced_classes~
- Inside source: true
*** True Line Result
def self.traced_classes
** Processing line: ~ @traced_classes ||= []~
- Inside source: true
*** True Line Result
@traced_classes ||= []
** Processing line: ~ @traced_classes~
- Inside source: true
*** True Line Result
@traced_classes
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.mark_class_as_traced! klass~
- Inside source: true
*** True Line Result
def self.mark_class_as_traced! klass
** Processing line: ~ @traced_classes << klass~
- Inside source: true
*** True Line Result
@traced_classes << klass
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.untrace_classes!~
- Inside source: true
*** True Line Result
def self.untrace_classes!
** Processing line: ~ traced_classes.each do |klass|~
- Inside source: true
*** True Line Result
traced_classes.each do |klass|
** Processing line: ~ klass.class_eval do~
- Inside source: true
*** True Line Result
klass.class_eval do
** Processing line: ~ all_methods = klass.instance_methods false~
- Inside source: true
*** True Line Result
all_methods = klass.instance_methods false
** Processing line: ~ if klass.instance_methods.respond_to?(:__trace_call_depth__)~
- Inside source: true
*** True Line Result
if klass.instance_methods.respond_to?(:__trace_call_depth__)
** Processing line: ~ undef_method :__trace_call_depth__~
- Inside source: true
*** True Line Result
undef_method :__trace_call_depth__
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ GTK::Trace.filter_methods_to_trace(all_methods).each do |m|~
- Inside source: true
*** True Line Result
GTK::Trace.filter_methods_to_trace(all_methods).each do |m|
** Processing line: ~ original_method_name = m~
- Inside source: true
*** True Line Result
original_method_name = m
** Processing line: ~ trace_method_name = GTK::Trace.trace_method_name_for m~
- Inside source: true
*** True Line Result
trace_method_name = GTK::Trace.trace_method_name_for m
** Processing line: ~ if klass.instance_methods.include? trace_method_name~
- Inside source: true
*** True Line Result
if klass.instance_methods.include? trace_method_name
** Processing line: ~ alias_method m, trace_method_name~
- Inside source: true
*** True Line Result
alias_method m, trace_method_name
** 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: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ $last_method_traced = nil~
- Inside source: true
*** True Line Result
$last_method_traced = nil
** Processing line: ~ @traced_classes.clear~
- Inside source: true
*** True Line Result
@traced_classes.clear
** Processing line: ~ $trace_enabled = false~
- Inside source: true
*** True Line Result
$trace_enabled = false
** Processing line: ~ if !$gtk.production~
- Inside source: true
*** True Line Result
if !$gtk.production
** Processing line: ~ $gtk.write_file_root 'logs/trace.txt', "Add trace!(SOMEOBJECT) to the top of ~tick~ and this file will be populated with invocation information.\n"~
- Inside source: true
*** True Line Result
$gtk.write_file_root 'logs/trace.txt', "Add trace!(SOMEOBJECT) to the top of ~tick~ and this file will be populated with invocation information.\n"
** 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 self.trace_method_name_for m~
- Inside source: true
*** True Line Result
def self.trace_method_name_for m
** Processing line: ~ "__trace_original_#{m}__".to_sym~
- Inside source: true
*** True Line Result
"__trace_original_#{m}__".to_sym
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.original_method_name_for m~
- Inside source: true
*** True Line Result
def self.original_method_name_for m
** Processing line: ~ return m unless m.to_s.start_with?("__trace_original_") && m.to_s.end_with?("__")~
- Inside source: true
*** True Line Result
return m unless m.to_s.start_with?("__trace_original_") && m.to_s.end_with?("__")
** Processing line: ~ m[16..-3]~
- Inside source: true
*** True Line Result
m[16..-3]
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.filter_methods_to_trace methods~
- Inside source: true
*** True Line Result
def self.filter_methods_to_trace methods
** Processing line: ~ methods.reject { |m| m.start_with? "__trace_" }.reject { |m| IGNORED_METHODS.include? m }~
- Inside source: true
*** True Line Result
methods.reject { |m| m.start_with? "__trace_" }.reject { |m| IGNORED_METHODS.include? m }
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~~
- Inside source: true
*** True Line Result
** Processing line: ~ def self.flush_trace pad_with_newline = false~
- Inside source: true
*** True Line Result
def self.flush_trace pad_with_newline = false
** Processing line: ~ $trace_puts ||= []~
- Inside source: true
*** True Line Result
$trace_puts ||= []
** Processing line: ~ if $trace_puts.length > 0~
- Inside source: true
*** True Line Result
if $trace_puts.length > 0
** Processing line: ~ text = $trace_puts.join("")~
- Inside source: true
*** True Line Result
text = $trace_puts.join("")
** Processing line: ~ if pad_with_newline~
- Inside source: true
*** True Line Result
if pad_with_newline
** Processing line: ~ $gtk.append_file_root 'logs/trace.txt', "\n" + text.strip~
- Inside source: true
*** True Line Result
$gtk.append_file_root 'logs/trace.txt', "\n" + text.strip
** Processing line: ~ else~
- Inside source: true
*** True Line Result
else
** Processing line: ~ $gtk.append_file_root 'logs/trace.txt', text.strip~
- Inside source: true
*** True Line Result
$gtk.append_file_root 'logs/trace.txt', text.strip
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ $trace_puts.clear~
- Inside source: true
*** True Line Result
$trace_puts.clear
** 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.trace! instance = nil~
- Inside source: true
*** True Line Result
def self.trace! instance = nil
** Processing line: ~ $trace_history ||= []~
- Inside source: true
*** True Line Result
$trace_history ||= []
** Processing line: ~ $trace_enabled = true~
- Inside source: true
*** True Line Result
$trace_enabled = true
** Processing line: ~ $trace_call_depth ||=0~
- Inside source: true
*** True Line Result
$trace_call_depth ||=0
** Processing line: ~ flush_trace~
- Inside source: true
*** True Line Result
flush_trace
** Processing line: ~ instance = $top_level unless instance~
- Inside source: true
*** True Line Result
instance = $top_level unless instance
** Processing line: ~ return if Trace.traced_classes.include? instance.class~
- Inside source: true
*** True Line Result
return if Trace.traced_classes.include? instance.class
** Processing line: ~ all_methods = instance.class.instance_methods false~
- Inside source: true
*** True Line Result
all_methods = instance.class.instance_methods false
** Processing line: ~ instance.class.class_eval do~
- Inside source: true
*** True Line Result
instance.class.class_eval do
** Processing line: ~ attr_accessor :__trace_call_depth__ unless instance.class.instance_methods.include?(:__trace_call_depth__)~
- Inside source: true
*** True Line Result
attr_accessor :__trace_call_depth__ unless instance.class.instance_methods.include?(:__trace_call_depth__)
** Processing line: ~ GTK::Trace.filter_methods_to_trace(all_methods).each do |m|~
- Inside source: true
*** True Line Result
GTK::Trace.filter_methods_to_trace(all_methods).each do |m|
** Processing line: ~ original_method_name = m~
- Inside source: true
*** True Line Result
original_method_name = m
** Processing line: ~ trace_method_name = GTK::Trace.trace_method_name_for m~
- Inside source: true
*** True Line Result
trace_method_name = GTK::Trace.trace_method_name_for m
** Processing line: ~ alias_method trace_method_name, m~
- Inside source: true
*** True Line Result
alias_method trace_method_name, m
** Processing line: ~ $trace_puts << "Tracing #{m} on #{instance.class}.\n"~
- Inside source: true
*** True Line Result
$trace_puts << "Tracing #{m} on #{instance.class}.\n"
** Processing line: ~ define_method(m) do |*args|~
- Inside source: true
*** True Line Result
define_method(m) do |*args|
** Processing line: ~ instance.__trace_call_depth__ ||= 0~
- Inside source: true
*** True Line Result
instance.__trace_call_depth__ ||= 0
** Processing line: ~ tab_width = " " * (instance.__trace_call_depth__ * 8)~
- Inside source: true
*** True Line Result
tab_width = " " * (instance.__trace_call_depth__ * 8)
** Processing line: ~ instance.__trace_call_depth__ += 1~
- Inside source: true
*** True Line Result
instance.__trace_call_depth__ += 1
** Processing line: ~ $trace_call_depth = instance.__trace_call_depth__~
- Inside source: true
*** True Line Result
$trace_call_depth = instance.__trace_call_depth__
** Processing line: ~ parameters = "#{args}"[1..-2]~
- Inside source: true
*** True Line Result
parameters = "#{args}"[1..-2]
** Processing line: ~ $trace_puts << "\n #{tab_width}#{m}(#{parameters})"~
- Inside source: true
*** True Line Result
$trace_puts << "\n #{tab_width}#{m}(#{parameters})"
** Processing line: ~ execution_time = Time.new.to_i~
- Inside source: true
*** True Line Result
execution_time = Time.new.to_i
** Processing line: ~ $last_method_traced = trace_method_name~
- Inside source: true
*** True Line Result
$last_method_traced = trace_method_name
** Processing line: ~ $trace_history << [m, parameters]~
- Inside source: true
*** True Line Result
$trace_history << [m, parameters]
** Processing line: ~ result = send(trace_method_name, *args)~
- Inside source: true
*** True Line Result
result = send(trace_method_name, *args)
** Processing line: ~ completion_time = Time.new.to_i~
- Inside source: true
*** True Line Result
completion_time = Time.new.to_i
** Processing line: ~ instance.__trace_call_depth__ -= 1~
- Inside source: true
*** True Line Result
instance.__trace_call_depth__ -= 1
** Processing line: ~ instance.__trace_call_depth__ = instance.__trace_call_depth__.greater 0~
- Inside source: true
*** True Line Result
instance.__trace_call_depth__ = instance.__trace_call_depth__.greater 0
** Processing line: ~ $trace_puts << "\n #{tab_width} success: #{m}"~
- Inside source: true
*** True Line Result
$trace_puts << "\n #{tab_width} success: #{m}"
** Processing line: ~ if instance.__trace_call_depth__ == 0~
- Inside source: true
*** True Line Result
if instance.__trace_call_depth__ == 0
** Processing line: ~ $trace_puts << "\n"~
- Inside source: true
*** True Line Result
$trace_puts << "\n"
** Processing line: ~ $trace_history.clear~
- Inside source: true
*** True Line Result
$trace_history.clear
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ result~
- Inside source: true
*** True Line Result
result
** Processing line: ~ rescue Exception => e~
- Inside source: true
*** True Line Result
rescue Exception => e
** Processing line: ~ instance.__trace_call_depth__ -= 1~
- Inside source: true
*** True Line Result
instance.__trace_call_depth__ -= 1
** Processing line: ~ instance.__trace_call_depth__ = instance.__trace_call_depth__.greater 0~
- Inside source: true
*** True Line Result
instance.__trace_call_depth__ = instance.__trace_call_depth__.greater 0
** Processing line: ~ $trace_puts << "\n #{tab_width} failed: #{m}"~
- Inside source: true
*** True Line Result
$trace_puts << "\n #{tab_width} failed: #{m}"
** Processing line: ~ if instance.__trace_call_depth__ == 0~
- Inside source: true
*** True Line Result
if instance.__trace_call_depth__ == 0
** Processing line: ~ $trace_puts << "\n #{tab_width} #{e}"~
- Inside source: true
*** True Line Result
$trace_puts << "\n #{tab_width} #{e}"
** Processing line: ~ $trace_puts << "\n"~
- Inside source: true
*** True Line Result
$trace_puts << "\n"
** Processing line: ~ end~
- Inside source: true
*** True Line Result
end
** Processing line: ~ $trace_call_depth = 0~
- Inside source: true
*** True Line Result
$trace_call_depth = 0
** Processing line: ~ GTK::Trace.flush_trace true~
- Inside source: true
*** True Line Result
GTK::Trace.flush_trace true
** Processing line: ~ raise e~
- Inside source: true
*** True Line Result
raise 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: ~ mark_class_as_traced! instance.class~
- Inside source: true
*** True Line Result
mark_class_as_traced! instance.class
** 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 Html Given True Lines
** Processing line: ~* DragonRuby Game Toolkit Live Docs~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DragonRuby Game Toolkit Live Docs~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~The information contained here is all available via the DragonRuby Console. You can Open the DragonRuby Console by pressing [`] [~] [²] [^] [º] or [§] within your game.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The information contained here is all available via the DragonRuby Console. You can Open the DragonRuby Console by pressing [`] [~] [²] [^] [º] or [§] within your game.~
- Line's tilde count is: 1
- Line contains link marker: false
** Processing line: ~To search docs you can type ~docs_search "SEARCH TERM"~ or if you want to get fancy you can provide a ~lambda~ to filter documentation:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~To search docs you can type ~docs_search "SEARCH TERM"~ or if you want to get fancy you can provide a ~lambda~ to filter documentation:~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ docs_search { |entry| (entry.include? "Array") && (!entry.include? "Enumerable") }~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~[[docs_search.gif]]~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~[[docs_search.gif]]~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~~
** Processing line: ~* Hello World~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Hello World~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Welcome to DragonRuby Game Toolkit. Take the steps below to get started.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Welcome to DragonRuby Game Toolkit. Take the steps below to get started.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~* Join the Discord and Subscribe to the News Letter~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Join the Discord and Subscribe to the News Letter~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Our Discord channel is [[http://discord.dragonruby.org]].~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Our Discord channel is [[http://discord.dragonruby.org]].~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~The News Letter will keep you in the loop with regards to current DragonRuby Events: [[http://dragonrubydispatch.com]].~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The News Letter will keep you in the loop with regards to current DragonRuby Events: [[http://dragonrubydispatch.com]].~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~Those who use DragonRuby are called Dragon Riders. This identity is incredibly important to us. When someone asks you:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Those who use DragonRuby are called Dragon Riders. This identity is incredibly important to us. When someone asks you:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_quote~
- BLOCKQUOTE start detected.
** Processing line: ~What game engine do you use?~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~What game engine do you use?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~#+end_quote~
- BLOCKQUOTE end detected.
** Processing line: ~~
** Processing line: ~Reply with:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Reply with:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_quote~
- BLOCKQUOTE start detected.
** Processing line: ~I am a Dragon Rider.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~I am a Dragon Rider.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~#+end_quote~
- BLOCKQUOTE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Watch Some Intro Videos~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Watch Some Intro Videos~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Each video is only 20 minutes and all of them will fit into a lunch break. So please watch them:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Each video is only 20 minutes and all of them will fit into a lunch break. So please watch them:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~1. Beginner Introduction to DragonRuby Game Toolkit: [[https://youtu.be/ixw7TJhU08E]]~
- OL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Beginner Introduction to DragonRuby Game Toolkit: [[https://youtu.be/ixw7TJhU08E]]~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~2. Intermediate Introduction to Ruby Syntax: [[https://youtu.be/HG-XRZ5Ppgc]]~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Intermediate Introduction to Ruby Syntax: [[https://youtu.be/HG-XRZ5Ppgc]]~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~3. Intermediate Introduction to Arrays in Ruby: [[https://youtu.be/N72sEYFRqfo]]~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Intermediate Introduction to Arrays in Ruby: [[https://youtu.be/N72sEYFRqfo]]~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~The second and third videos are not required if you are proficient with Ruby, but *definitely* watch the first one.~
- OL end detected.
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The second and third videos are not required if you are proficient with Ruby, but *definitely* watch the first one.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~You may also want to try this free course provided at [[http://dragonruby.school]].~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You may also want to try this free course provided at [[http://dragonruby.school]].~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~~
** Processing line: ~* Getting Started Tutorial~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Getting Started Tutorial~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~This is a tutorial written by Ryan C Gordon (a Juggernaut in the industry who has contracted to Valve, Epic, Activision, and EA... check out his Wikipedia page: [[https://en.wikipedia.org/wiki/Ryan_C._Gordon]]).~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~This is a tutorial written by Ryan C Gordon (a Juggernaut in the industry who has contracted to Valve, Epic, Activision, and EA... check out his Wikipedia page: [[https://en.wikipedia.org/wiki/Ryan_C._Gordon]]).~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~~
** Processing line: ~** Introduction~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Introduction~
- 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: ~Introduction~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Welcome!~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Welcome!~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Here's just a little push to get you started if you're new to programming or game development.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here's just a little push to get you started if you're new to programming or game development.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~If you want to write a game, it's no different than writing any other program for any other framework: there are a few simple rules that might be new to you, but more or less programming is programming no matter what you are building.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~If you want to write a game, it's no different than writing any other program for any other framework: there are a few simple rules that might be new to you, but more or less programming is programming no matter what you are building.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Did you not know that? Did you think you couldn't write a game because you're a "web guy" or you're writing Java at a desk job? Stop letting people tell you that you can't, because you already have everything you need.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Did you not know that? Did you think you couldn't write a game because you're a "web guy" or you're writing Java at a desk job? Stop letting people tell you that you can't, because you already have everything you need.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Here, we're going to be programming in a language called "Ruby." In the interest of full disclosure, I (Ryan Gordon) wrote the C parts of this toolkit and Ruby looks a little strange to me (Amir Rajan wrote the Ruby parts, discounting the parts I mangled), but I'm going to walk you through the basics because we're all learning together, and if you mostly think of yourself as someone that writes C (or C++, C#, Objective-C), PHP, or Java, then you're only a step behind me right now.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here, we're going to be programming in a language called "Ruby." In the interest of full disclosure, I (Ryan Gordon) wrote the C parts of this toolkit and Ruby looks a little strange to me (Amir Rajan wrote the Ruby parts, discounting the parts I mangled), but I'm going to walk you through the basics because we're all learning together, and if you mostly think of yourself as someone that writes C (or C++, C#, Objective-C), PHP, or Java, then you're only a step behind me right now.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Prerequisites~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Prerequisites~
- 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: ~Prerequisites~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Here's the most important thing you should know: Ruby lets you do some complicated things really easily, and you can learn that stuff later. I'm going to show you one or two cool tricks, but that's all.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here's the most important thing you should know: Ruby lets you do some complicated things really easily, and you can learn that stuff later. I'm going to show you one or two cool tricks, but that's all.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Do you know what an if statement is? A for-loop? An array? That's all you'll need to start.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Do you know what an if statement is? A for-loop? An array? That's all you'll need to start.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** The Game Loop~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~The Game Loop~
- 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: ~The Game Loop~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Ok, here are few rules with regards to game development with GTK:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Ok, here are few rules with regards to game development with GTK:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~- Your game is all going to happen under one function ...~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Your game is all going to happen under one function ...~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- that runs 60 times a second ...~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~that runs 60 times a second ...~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- and has to tell the computer what to draw each time.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~and has to tell the computer what to draw each time.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~That's an entire video game in one run-on sentence.~
- UL end detected.
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~That's an entire video game in one run-on sentence.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Here's that function. You're going to want to put this in mygame/app/main.rb, because that's where we'll look for it by default. Load it up in your favorite text editor.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here's that function. You're going to want to put this in mygame/app/main.rb, because that's where we'll look for it by default. Load it up in your favorite text editor.~
- 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: ~ args.outputs.labels << [580, 400, 'Hello World!']~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~Now run ~dragonruby~ ...did you get a window with "Hello World!" written in it? Good, you're officially a game developer!~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Now run ~dragonruby~ ...did you get a window with "Hello World!" written in it? Good, you're officially a game developer!~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~** Breakdown Of The ~tick~ Method~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Breakdown Of The ~tick~ Method~
- 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: ~Breakdown Of The ~tick~ Method~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~~mygame/app/main.rb~, is where the Ruby source code is located. This looks a little strange, so I'll break it down line by line. In Ruby, a '#' character starts a single-line comment, so I'll talk about this inline.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~mygame/app/main.rb~, is where the Ruby source code is located. This looks a little strange, so I'll break it down line by line. In Ruby, a '#' character starts a single-line comment, so I'll talk about this inline.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ # This "def"ines a function, named "tick," which takes a single argument~
** Processing line: ~ # named "args". DragonRuby looks for this function and calls it every~
** Processing line: ~ # frame, 60 times a second. "args" is a magic structure with lots of~
** Processing line: ~ # information in it. You can set variables in there for your own game state,~
** Processing line: ~ # and every frame it will updated if keys are pressed, joysticks moved,~
** Processing line: ~ # mice clicked, etc.~
** Processing line: ~ def tick args~
** Processing line: ~~
** Processing line: ~ # One of the things in "args" is the "outputs" object that your game uses~
** Processing line: ~ # to draw things. Afraid of rendering APIs? No problem. In DragonRuby,~
** Processing line: ~ # you use arrays to draw things and we figure out the details.~
** Processing line: ~ # If you want to draw text on the screen, you give it an array (the thing~
** Processing line: ~ # in the [ brackets ]), with an X and Y coordinate and the text to draw.~
** Processing line: ~ # The "<<" thing says "append this array onto the list of them at~
** Processing line: ~ # args.outputs.labels)~
** Processing line: ~ args.outputs.labels << [580, 400, 'Hello World!']~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~Once your ~tick~ function finishes, we look at all the arrays you made and figure out how to draw it. You don't need to know about graphics APIs. You're just setting up some arrays! DragonRuby clears out these arrays every frame, so you just need to add what you need _right now_ each time.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Once your ~tick~ function finishes, we look at all the arrays you made and figure out how to draw it. You don't need to know about graphics APIs. You're just setting up some arrays! DragonRuby clears out these arrays every frame, so you just need to add what you need _right now_ each time.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~** Rendering A Sprite~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Rendering A Sprite~
- 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: ~Rendering A Sprite~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Now let's spice this up a little.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Now let's spice this up a little.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~We're going to add some graphics. Each 2D image in DragonRuby is called a "sprite," and to use them, you just make sure they exist in a reasonable file format (png, jpg, gif, bmp, etc) and specify them by filename. The first time you use one, DragonRuby will load it and keep it in video memory for fast access in the future. If you use a filename that doesn't exist, you get a fun checkerboard pattern!~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~We're going to add some graphics. Each 2D image in DragonRuby is called a "sprite," and to use them, you just make sure they exist in a reasonable file format (png, jpg, gif, bmp, etc) and specify them by filename. The first time you use one, DragonRuby will load it and keep it in video memory for fast access in the future. If you use a filename that doesn't exist, you get a fun checkerboard pattern!~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~There's a "dragonruby.png" file included, just to get you started. Let's have it draw every frame with our text:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~There's a "dragonruby.png" file included, just to get you started. Let's have it draw every frame with our text:~
- 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: ~ args.outputs.labels << [580, 400, 'Hello World!']~
** Processing line: ~ args.outputs.sprites << [576, 100, 128, 101, 'dragonruby.png']~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~(Pro Tip: you don't have to restart DragonRuby to test your changes; when you save main.rb, DragonRuby will notice and reload your program.)~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~(Pro Tip: you don't have to restart DragonRuby to test your changes; when you save main.rb, DragonRuby will notice and reload your program.)~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~That ~.sprites~ line says "add a sprite to the list of sprites we're drawing, and draw it at position (576, 100) at a size of 128x101 pixels". You can find the image to draw at dragonruby.png.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~That ~.sprites~ line says "add a sprite to the list of sprites we're drawing, and draw it at position (576, 100) at a size of 128x101 pixels". You can find the image to draw at dragonruby.png.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~** Coordinate System and Virtual Canvas~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Coordinate System and Virtual Canvas~
- 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: ~Coordinate System and Virtual Canvas~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Quick note about coordinates: (0, 0) is the bottom left corner of the screen, and positive numbers go up and to the right. This is more "geometrically correct," even if it's not how you remember doing 2D graphics, but we chose this for a simpler reason: when you're making Super Mario Brothers and you want Mario to jump, you should be able to add to Mario's y position as he goes up and subtract as he falls. It makes things easier to understand.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Quick note about coordinates: (0, 0) is the bottom left corner of the screen, and positive numbers go up and to the right. This is more "geometrically correct," even if it's not how you remember doing 2D graphics, but we chose this for a simpler reason: when you're making Super Mario Brothers and you want Mario to jump, you should be able to add to Mario's y position as he goes up and subtract as he falls. It makes things easier to understand.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Also: your game screen is _always_ 1280x720 pixels. If you resize the window, we will scale and letterbox everything appropriately, so you never have to worry about different resolutions.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Also: your game screen is _always_ 1280x720 pixels. If you resize the window, we will scale and letterbox everything appropriately, so you never have to worry about different resolutions.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Ok, now we have an image on the screen, let's animate it:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Ok, now we have an image on the screen, let's animate it:~
- 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: ~ args.state.rotation ||= 0~
** Processing line: ~ args.outputs.labels << [580, 400, 'Hello World!' ]~
** Processing line: ~ args.outputs.sprites << [576, 100, 128, 101, 'dragonruby.png', args.state.rotation]~
** Processing line: ~ args.state.rotation -= 1~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~Now you can see that this function is getting called a lot!~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Now you can see that this function is getting called a lot!~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Game State~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Game State~
- 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: ~Game State~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Here's a fun Ruby thing: ~args.state.rotation ||= 0~ is shorthand for "if args.state.rotation isn't initialized, set it to zero." It's a nice way to embed your initialization code right next to where you need the variable.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here's a fun Ruby thing: ~args.state.rotation ||= 0~ is shorthand for "if args.state.rotation isn't initialized, set it to zero." It's a nice way to embed your initialization code right next to where you need the variable.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~~args.state~ is a place you can hang your own data. It's an open data structure that allows you to define properties that are arbitrarily nested. You don't need to define any kind of class.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.state~ is a place you can hang your own data. It's an open data structure that allows you to define properties that are arbitrarily nested. You don't need to define any kind of class.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~In this case, the current rotation of our sprite, which is happily spinning at 60 frames per second. If you don't specify rotation (or alpha, or color modulation, or a source rectangle, etc), DragonRuby picks a reasonable default, and the array is ordered by the most likely things you need to tell us: position, size, name.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~In this case, the current rotation of our sprite, which is happily spinning at 60 frames per second. If you don't specify rotation (or alpha, or color modulation, or a source rectangle, etc), DragonRuby picks a reasonable default, and the array is ordered by the most likely things you need to tell us: position, size, name.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** There Is No Delta Time~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~There Is No Delta Time~
- 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: ~There Is No Delta Time~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~One thing we decided to do in DragonRuby is not make you worry about delta time: your function runs at 60 frames per second (about 16 milliseconds) and that's that. Having to worry about framerate is something massive triple-AAA games do, but for fun little 2D games? You'd have to work really hard to not hit 60fps. All your drawing is happening on a GPU designed to run Fortnite quickly; it can definitely handle this.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~One thing we decided to do in DragonRuby is not make you worry about delta time: your function runs at 60 frames per second (about 16 milliseconds) and that's that. Having to worry about framerate is something massive triple-AAA games do, but for fun little 2D games? You'd have to work really hard to not hit 60fps. All your drawing is happening on a GPU designed to run Fortnite quickly; it can definitely handle this.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Since we didn't make you worry about delta time, you can just move the rotation by 1 every time and it works without you having to keep track of time and math. Want it to move faster? Subtract 2.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Since we didn't make you worry about delta time, you can just move the rotation by 1 every time and it works without you having to keep track of time and math. Want it to move faster? Subtract 2.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Handling User Input~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Handling User Input~
- 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: ~Handling User Input~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Now, let's move that image around.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Now, let's move that image around.~
- 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: ~ args.state.rotation ||= 0~
** Processing line: ~ args.state.x ||= 576~
** Processing line: ~ args.state.y ||= 100~
** Processing line: ~~
** Processing line: ~ if args.inputs.mouse.click~
** Processing line: ~ args.state.x = args.inputs.mouse.click.point.x - 64~
** Processing line: ~ args.state.y = args.inputs.mouse.click.point.y - 50~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << [580, 400, 'Hello World!']~
** Processing line: ~ args.outputs.sprites << [args.state.x,~
** Processing line: ~ args.state.y,~
** Processing line: ~ 128,~
** Processing line: ~ 101,~
** Processing line: ~ 'dragonruby.png',~
** Processing line: ~ args.state.rotation]~
** Processing line: ~~
** Processing line: ~ args.state.rotation -= 1~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~Everywhere you click your mouse, the image moves there. We set a default location for it with ~args.state.x ||= 576~, and then we change those variables when we see the mouse button in action. You can get at the keyboard and game controllers in similar ways.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Everywhere you click your mouse, the image moves there. We set a default location for it with ~args.state.x ||= 576~, and then we change those variables when we see the mouse button in action. You can get at the keyboard and game controllers in similar ways.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~** Coding On A Raspberry Pi~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Coding On A Raspberry Pi~
- 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: ~Coding On A Raspberry Pi~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~We have only tested DragonRuby on a Raspberry Pi 3, Models B and B+, but we believe it _should_ work on any model with comparable specs.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~We have only tested DragonRuby on a Raspberry Pi 3, Models B and B+, but we believe it _should_ work on any model with comparable specs.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~If you're running DragonRuby Game Toolkit on a Raspberry Pi, or trying to run a game made with the Toolkit on a Raspberry Pi, and it's really really slow-- like one frame every few seconds--then there's likely a simple fix.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~If you're running DragonRuby Game Toolkit on a Raspberry Pi, or trying to run a game made with the Toolkit on a Raspberry Pi, and it's really really slow-- like one frame every few seconds--then there's likely a simple fix.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~You're probably running a desktop environment: menus, apps, web browsers, etc. This is okay! Launch the terminal app and type:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You're probably running a desktop environment: menus, apps, web browsers, etc. This is okay! Launch the terminal app and type:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~sudo raspi-config~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~It'll ask you for your password (if you don't know, try "raspberry"), and then give you a menu of options. Find your way to "Advanced Options", then "GL Driver", and change this to "GL (Full KMS)" ... not "fake KMS," which is also listed there. Save and reboot. In theory, this should fix the problem.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~It'll ask you for your password (if you don't know, try "raspberry"), and then give you a menu of options. Find your way to "Advanced Options", then "GL Driver", and change this to "GL (Full KMS)" ... not "fake KMS," which is also listed there. Save and reboot. In theory, this should fix the problem.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~If you're _still_ having problems and have a Raspberry Pi 2 or better, go back to raspi-config and head over to "Advanced Options", "Memory split," and give the GPU 256 megabytes. You might be able to avoid this for simple games, as this takes RAM away from the system and reserves it for graphics. You can also try 128 megabytes as a gentler option.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~If you're _still_ having problems and have a Raspberry Pi 2 or better, go back to raspi-config and head over to "Advanced Options", "Memory split," and give the GPU 256 megabytes. You might be able to avoid this for simple games, as this takes RAM away from the system and reserves it for graphics. You can also try 128 megabytes as a gentler option.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Note that you can also run DragonRuby without X11 at all: if you run it from a virtual terminal it will render fullscreen and won't need the "Full KMS" option. This might be attractive if you want to use it as a game console sort of thing, or develop over ssh, or launch it from RetroPie, etc.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Note that you can also run DragonRuby without X11 at all: if you run it from a virtual terminal it will render fullscreen and won't need the "Full KMS" option. This might be attractive if you want to use it as a game console sort of thing, or develop over ssh, or launch it from RetroPie, etc.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Conclusion~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Conclusion~
- 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: ~Conclusion~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~There is a lot more you can do with DragonRuby, but now you've already got just about everything you need to make a simple game. After all, even the most fancy games are just creating objects and moving them around. Experiment a little. Add a few more things and have them interact in small ways. Want something to go away? Just don't add it to ~args.output~ anymore.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~There is a lot more you can do with DragonRuby, but now you've already got just about everything you need to make a simple game. After all, even the most fancy games are just creating objects and moving them around. Experiment a little. Add a few more things and have them interact in small ways. Want something to go away? Just don't add it to ~args.output~ anymore.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~* IMPORTANT: Go through all of the sample apps! Study them thoroughly!! No really, you should definitely do this!~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~IMPORTANT: Go through all of the sample apps! Study them thoroughly!! No really, you should definitely do this!~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Now that you've completed the Hello World tutorial. Head over to the `samples` directory. It is very very important that you study the sample apps thoroughly! Go through them in order. Here is a short description of each sample app.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Now that you've completed the Hello World tutorial. Head over to the `samples` directory. It is very very important that you study the sample apps thoroughly! Go through them in order. Here is a short description of each sample app.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Guided Samples~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Guided Samples~
- 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: ~Guided Samples~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~1. ~samples/00_learn_ruby_optional~: This directory contains sample apps that will help you learn the language.~
- OL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/00_learn_ruby_optional~: This directory contains sample apps that will help you learn the language.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~2. ~samples/01_rendering_basics~: This set of samples will show you how to render basic primitives such as ~labels~, ~solids~, ~borders~, ~lines~, ~sprites~, and how to play ~sounds~.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/01_rendering_basics~: This set of samples will show you how to render basic primitives such as ~labels~, ~solids~, ~borders~, ~lines~, ~sprites~, and how to play ~sounds~.~
- Line's tilde count is: 14
- Line contains link marker: false
- CODE detected.
** Processing line: ~3. ~samples/02_input_basics~: This set of samples show you how to accept input from the ~mouse~, ~keyboard~, and ~controllers~.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/02_input_basics~: This set of samples show you how to accept input from the ~mouse~, ~keyboard~, and ~controllers~.~
- Line's tilde count is: 8
- Line contains link marker: false
- CODE detected.
** Processing line: ~4. ~samples/03_rendering_sprites~: This set of samples shows you all the different ways to render sprites (including how to use a sprite sheet).~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/03_rendering_sprites~: This set of samples shows you all the different ways to render sprites (including how to use a sprite sheet).~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~4. ~samples/04_physics_and_collision~: This set of samples shows how to do various types of collisions and physics.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/04_physics_and_collision~: This set of samples shows how to do various types of collisions and physics.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~5. ~samples/05_mouse~: This set of samples show more advanced usages of the mouse.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/05_mouse~: This set of samples show more advanced usages of the mouse.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~6. ~samples/06_save_load~: This set of samples show how to save and load game data.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/06_save_load~: This set of samples show how to save and load game data.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~7. ~samples/07_advanced_rendering~: This set of samples show how to programmatically render sprites using render targets.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/07_advanced_rendering~: This set of samples show how to programmatically render sprites using render targets.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~8. ~samples/08_tweening_lerping_easing_functions~: This set of samples show how to perform animations.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/08_tweening_lerping_easing_functions~: This set of samples show how to perform animations.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~9. ~samples/09_performance~: This set of samples show how to handle performance issues when a large number of sprites on the screen.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/09_performance~: This set of samples show how to handle performance issues when a large number of sprites on the screen.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~10. ~samples/10_advanced_debugging~: This set of samples show how advanced debugging techniques and testing techniques.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/10_advanced_debugging~: This set of samples show how advanced debugging techniques and testing techniques.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~11. ~samples/11_http~: This set of samples show how use http.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ ~samples/11_http~: This set of samples show how use http.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~** Sample Games~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Sample Games~
- 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: ~Sample Games~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~There are samples that contain the path ~samples/99_*~. The sample apps that are prefixed with ~99_~ show non-trivial implemementations for a real game:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~There are samples that contain the path ~samples/99_*~. The sample apps that are prefixed with ~99_~ show non-trivial implemementations for a real game:~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~1. 3D Cube: Shows how to do faux 3D in DragonRuby.~
- OL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ 3D Cube: Shows how to do faux 3D in DragonRuby.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~2. Dueling Starships: A two player top-down versus game where each player controls a ship.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Dueling Starships: A two player top-down versus game where each player controls a ship.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~3. Flappy Dragon: DragonRuby's clone of Flappy Bird.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Flappy Dragon: DragonRuby's clone of Flappy Bird.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~4. Pong: A simple implementation of the game Pong.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Pong: A simple implementation of the game Pong.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~5. Snakemoji: The classic game of Snake but with all of the code written using emojis (sometimes you just have to have a little fun).~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Snakemoji: The classic game of Snake but with all of the code written using emojis (sometimes you just have to have a little fun).~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~6. Solar System: A simulation of our solar system.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Solar System: A simulation of our solar system.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~7. Crafting Starting Point: A starting point for those that want to build a crafting game.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Crafting Starting Point: A starting point for those that want to build a crafting game.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~8. Dev Tools: A set of sample apps that show how you can extend DragonRuby's Console, starting point for a tile editor, and a starting point for a paint app.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Dev Tools: A set of sample apps that show how you can extend DragonRuby's Console, starting point for a tile editor, and a starting point for a paint app.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~9. LOWREZ: Sample apps that show how to render at different resolutions.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ LOWREZ: Sample apps that show how to render at different resolutions.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~10. RPG: Various sample apps that show how to create narrative, topdown, tactical grid-based, and roguelike RPGs.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ RPG: Various sample apps that show how to create narrative, topdown, tactical grid-based, and roguelike RPGs.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~11. Platformers: Various sample apps that show how to create different kinds of physics/collision based platformers.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Platformers: Various sample apps that show how to create different kinds of physics/collision based platformers.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Deploying To Itch.io~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Deploying To Itch.io~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Once you've built your game, you're all set to deploy! Good luck in your game dev journey and if you get stuck, come to the Discord channel!~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Once you've built your game, you're all set to deploy! Good luck in your game dev journey and if you get stuck, come to the Discord channel!~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Creating Your Game Landing Page~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Creating Your Game Landing Page~
- 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: ~Creating Your Game Landing Page~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Log into Itch.io and go to [[https://itch.io/game/new]].~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Log into Itch.io and go to [[https://itch.io/game/new]].~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~~
** Processing line: ~- Title: Give your game a Title. This value represents your `gametitle`.~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Title: Give your game a Title. This value represents your `gametitle`.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- Project URL: Set your project url. This value represents your `gameid`.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Project URL: Set your project url. This value represents your `gameid`.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- Classification: Keep this as Game.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Classification: Keep this as Game.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- Kind of Project: Select HTML from the drop down list. Don't worry,
the HTML project type _also supports binary downloads_.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Kind of Project: Select HTML from the drop down list. Don't worry,
the HTML project type _also supports binary downloads_.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- Uploads: Skip this section for now.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Uploads: Skip this section for now.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~You can fill out all the other options later.~
- UL end detected.
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You can fill out all the other options later.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Update Your Game's Metadata~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Update Your Game's Metadata~
- 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: ~Update Your Game's Metadata~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Point your text editor at mygame/metadata/game_metadata.txt and make it look like this:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Point your text editor at mygame/metadata/game_metadata.txt and make it look like this:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~NOTE: Remove the ~#~ at the beginning of each line.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~NOTE: Remove the ~#~ at the beginning of each line.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ devid=bob~
** Processing line: ~ devtitle=Bob The Game Developer~
** Processing line: ~ gameid=mygame~
** Processing line: ~ gametitle=My Game~
** Processing line: ~ version=0.1~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~The ~devid~ property is the username you use to log into Itch.io. The ~devtitle~ is your name or company name (it can contain spaces). The ~gameid~ is the Project URL value. The ~gametitle~ is the name of your game (it can contain spaces). The ~version~ can be any ~major.minor~ number format.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The ~devid~ property is the username you use to log into Itch.io. The ~devtitle~ is your name or company name (it can contain spaces). The ~gameid~ is the Project URL value. The ~gametitle~ is the name of your game (it can contain spaces). The ~version~ can be any ~major.minor~ number format.~
- Line's tilde count is: 12
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~** Building Your Game For Distribution~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Building Your Game For Distribution~
- 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: ~Building Your Game For Distribution~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Open up the terminal and run this from the command line:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Open up the terminal and run this from the command line:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ ./dragonruby-publish --only-package mygame~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~(if you're on Windows, don't put the "./" on the front. That's a Mac and Linux thing.)~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~(if you're on Windows, don't put the "./" on the front. That's a Mac and Linux thing.)~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~A directory called ~./build~ will be created that contains your binaries. You can upload this to Itch.io manually.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~A directory called ~./build~ will be created that contains your binaries. You can upload this to Itch.io manually.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~For the HTML version of your game after you upload it. Check the checkbox labeled "This file will be played in the browser".~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~For the HTML version of your game after you upload it. Check the checkbox labeled "This file will be played in the browser".~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~For subsequent updates you can use an automated deployment to Itch.io:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~For subsequent updates you can use an automated deployment to Itch.io:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ ./dragonruby-publish mygame~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~DragonRuby will package _and publish_ your game to itch.io! Tell your friends to go to your game's very own webpage and buy it!~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~DragonRuby will package _and publish_ your game to itch.io! Tell your friends to go to your game's very own webpage and buy it!~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~If you make changes to your game, just re-run dragonruby-publish and it'll update the downloads for you.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~If you make changes to your game, just re-run dragonruby-publish and it'll update the downloads for you.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~* DragonRuby's Philosophy~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DragonRuby's Philosophy~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~The following tenants of DragonRuby are what set us apart from other game engines. Given that Game Toolkit is a relatively new engine, there are definitely features that are missing. So having a big check list of "all the cool things" is not this engine's forte. This is compensated with a strong commitment to the following principals.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The following tenants of DragonRuby are what set us apart from other game engines. Given that Game Toolkit is a relatively new engine, there are definitely features that are missing. So having a big check list of "all the cool things" is not this engine's forte. This is compensated with a strong commitment to the following principals.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Challenge The Status Quo~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Challenge The Status Quo~
- 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: ~Challenge The Status Quo~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Game engines of today are in a local maximum and don't take into consideration the challenges of this day and age. Unity and GameMaker specifically rot your brain. It's not sufficient to say:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Game engines of today are in a local maximum and don't take into consideration the challenges of this day and age. Unity and GameMaker specifically rot your brain. It's not sufficient to say:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_quote~
- BLOCKQUOTE start detected.
** Processing line: ~But that's how we've always done it.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~But that's how we've always done it.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~#+end_quote~
- BLOCKQUOTE end detected.
** Processing line: ~~
** Processing line: ~It's a hard pill to swallow, but forget blindly accepted best practices and try to figure out the underlying motivation for a specific approach to game development. Collaborate with us.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~It's a hard pill to swallow, but forget blindly accepted best practices and try to figure out the underlying motivation for a specific approach to game development. Collaborate with us.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Continuity of Design~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Continuity of Design~
- 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: ~Continuity of Design~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~There is a programming idiom in software called "the pit of success". The term normalizes up front pain as a necessity in the (hopes that the investment will yield dividends "when you become successful"). This results in more "Enterprise TM" code upfront, and makes it more difficult to get started when you are new to programming.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~There is a programming idiom in software called "the pit of success". The term normalizes up front pain as a necessity in the (hopes that the investment will yield dividends "when you become successful"). This results in more "Enterprise TM" code upfront, and makes it more difficult to get started when you are new to programming.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~DragonRuby's philosophy is to provide a spectrum across the "make it fast" vs "make it right" spectrum and provide incremental, intuitive transitions between points on that spectrum. This is captured in how render primitives can be represented as tuples/arrays, hashes, open structs/entities, and then finally classes (as opposed to forcing devs to use classes upfront).~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~DragonRuby's philosophy is to provide a spectrum across the "make it fast" vs "make it right" spectrum and provide incremental, intuitive transitions between points on that spectrum. This is captured in how render primitives can be represented as tuples/arrays, hashes, open structs/entities, and then finally classes (as opposed to forcing devs to use classes upfront).~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Release Often And Soon~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Release Often And Soon~
- 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: ~Release Often And Soon~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~The biggest mistake game devs make is spending too much time in isolation building their game. Release something, however small, and release it quickly.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The biggest mistake game devs make is spending too much time in isolation building their game. Release something, however small, and release it quickly.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Stop worrying about everything being pixel perfect. Don't wait until your game is 100% complete. Build your game publicly and iterate. Post in the #show-and-tell channel in the community Discord. You'll find a lot of support and encouragement there.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Stop worrying about everything being pixel perfect. Don't wait until your game is 100% complete. Build your game publicly and iterate. Post in the #show-and-tell channel in the community Discord. You'll find a lot of support and encouragement there.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Remember:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Remember:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_quote~
- BLOCKQUOTE start detected.
** Processing line: ~Real artists ship.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Real artists ship.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~#+end_quote~
- BLOCKQUOTE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~** Sustainable And Ethical Monetization~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Sustainable And Ethical Monetization~
- 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: ~Sustainable And Ethical Monetization~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~We all aspire to put food on the table doing what we love. Whether it is building games, writing tools to support game development, or anything in between.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~We all aspire to put food on the table doing what we love. Whether it is building games, writing tools to support game development, or anything in between.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Charge a fair amount of money for the things you create. It's expected and encouraged within the community. Give what you create away for free to those that can't afford it.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Charge a fair amount of money for the things you create. It's expected and encouraged within the community. Give what you create away for free to those that can't afford it.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Sustainable And Ethical Open Source~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Sustainable And Ethical Open Source~
- 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: ~Sustainable And Ethical Open Source~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~This goes hand in hand with sustainable and ethical monetization. The current state of open source is not sustainable. There is an immense amount of contributor burnout. Users of open source expect everything to be free, and few give back. This is a problem we want to fix (we're still trying to figure out the best solution).~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~This goes hand in hand with sustainable and ethical monetization. The current state of open source is not sustainable. There is an immense amount of contributor burnout. Users of open source expect everything to be free, and few give back. This is a problem we want to fix (we're still trying to figure out the best solution).~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~So, don't be "that guy" in the Discord that says "DragonRuby should be free and open source!" You will be personally flogged by Amir.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~So, don't be "that guy" in the Discord that says "DragonRuby should be free and open source!" You will be personally flogged by Amir.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** People Over Entities~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~People Over Entities~
- 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: ~People Over Entities~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~We prioritize the endorsement of real people over faceless entities. This game engine, and other products we create, are not insignificant line items of a large company. And you aren't a generic "commodity" or "corporate resource". So be active in the community Discord and you'll reap the benefits as more devs use DragonRuby.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~We prioritize the endorsement of real people over faceless entities. This game engine, and other products we create, are not insignificant line items of a large company. And you aren't a generic "commodity" or "corporate resource". So be active in the community Discord and you'll reap the benefits as more devs use DragonRuby.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Building A Game Should Be Fun And Bring Happiness~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Building A Game Should Be Fun And Bring Happiness~
- 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: ~Building A Game Should Be Fun And Bring Happiness~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~We will prioritize the removal of pain. The aesthetics of Ruby make it such a joy to work with, and we want to capture that within the engine.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~We will prioritize the removal of pain. The aesthetics of Ruby make it such a joy to work with, and we want to capture that within the engine.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Real World Application Drives Features~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Real World Application Drives Features~
- 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: ~Real World Application Drives Features~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~We are bombarded by marketing speak day in and day out. We don't do that here. There are things that are really great in the engine, and things that need a lot of work. Collaborate with us so we can help you reach your goals. Ask for features you actually need as opposed to anything speculative.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~We are bombarded by marketing speak day in and day out. We don't do that here. There are things that are really great in the engine, and things that need a lot of work. Collaborate with us so we can help you reach your goals. Ask for features you actually need as opposed to anything speculative.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~We want DragonRuby to *actually* help you build the game you want to build (as opposed to sell you something piece of demoware that doesn't work).~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~We want DragonRuby to *actually* help you build the game you want to build (as opposed to sell you something piece of demoware that doesn't work).~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~* How To Determine What Frame You Are On~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~How To Determine What Frame You Are On~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~There is a property on ~state~ called ~tick_count~ that is incremented by DragonRuby every time the ~tick~ method is called. The following code renders a label that displays the current ~tick_count~.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~There is a property on ~state~ called ~tick_count~ that is incremented by DragonRuby every time the ~tick~ method is called. The following code renders a label that displays the current ~tick_count~.~
- Line's tilde count is: 8
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.labels << [10, 670, "#{args.state.tick_count}"]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* How To Get Current Framerate~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~How To Get Current Framerate~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Current framerate is a top level property on the Game Toolkit Runtime and is accessible via ~args.gtk.current_framerate~.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Current framerate is a top level property on the Game Toolkit Runtime and is accessible via ~args.gtk.current_framerate~.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.labels << [10, 710, "framerate: #{args.gtk.current_framerate.round}"]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* How To Render A Sprite Using An Array~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~How To Render A Sprite Using An Array~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~All file paths should use the forward slash ~/~ *not* backslash ~~. Game Toolkit includes a number of sprites in the ~sprites~ folder (everything about your game is located in the ~mygame~ directory).~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~All file paths should use the forward slash ~/~ *not* backslash ~~. Game Toolkit includes a number of sprites in the ~sprites~ folder (everything about your game is located in the ~mygame~ directory).~
- Line's tilde count is: 8
- Line contains link marker: false
- CODE detected.
** Processing line: ~The following code renders a sprite with a ~width~ and ~height~ of ~100~ in the center of the screen.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The following code renders a sprite with a ~width~ and ~height~ of ~100~ in the center of the screen.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~~args.outputs.sprites~ is used to render a sprite.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.outputs.sprites~ is used to render a sprite.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.sprites << [~
** Processing line: ~ 640 - 50, # X~
** Processing line: ~ 360 - 50, # Y~
** Processing line: ~ 100, # W~
** Processing line: ~ 100, # H~
** Processing line: ~ 'sprites/square-blue.png' # PATH~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* More Sprite Properties As An Array~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~More Sprite Properties As An Array~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Here are all the properties you can set on a sprite.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here are all the properties you can set on a sprite.~
- 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: ~ args.outputs.sprites << [~
** Processing line: ~ 100, # X~
** Processing line: ~ 100, # Y~
** Processing line: ~ 32, # W~
** Processing line: ~ 64, # H~
** Processing line: ~ 'sprites/square-blue.png', # PATH~
** Processing line: ~ 0, # ANGLE~
** Processing line: ~ 255, # ALPHA~
** Processing line: ~ 0, # RED_SATURATION~
** Processing line: ~ 255, # GREEN_SATURATION~
** Processing line: ~ 0 # BLUE_SATURATION~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Different Sprite Representations~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Different Sprite Representations~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Using ordinal positioning can get a little unruly given so many properties you have control over.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Using ordinal positioning can get a little unruly given so many properties you have control over.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~You can represent a sprite as a ~Hash~:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You can represent a sprite as a ~Hash~:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.sprites << {~
** Processing line: ~ x: 640 - 50,~
** Processing line: ~ y: 360 - 50,~
** Processing line: ~ w: 100,~
** Processing line: ~ h: 100,~
** Processing line: ~ path: 'sprites/square-blue.png',~
** Processing line: ~ angle: 0,~
** Processing line: ~ a: 255,~
** Processing line: ~ r: 255,~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 255,~
** Processing line: ~ source_x: 0,~
** Processing line: ~ source_y: 0,~
** Processing line: ~ source_w: -1,~
** Processing line: ~ source_h: -1,~
** Processing line: ~ flip_vertically: false,~
** Processing line: ~ flip_horizontally: false,~
** Processing line: ~ angle_anchor_x: 0.5,~
** Processing line: ~ angle_anchor_y: 1.0~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~You can represent a sprite as an ~object~:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You can represent a sprite as an ~object~:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ # Create type with ALL sprite properties AND primitive_marker~
** Processing line: ~ class Sprite~
** Processing line: ~ attr_accessor :x, :y, :w, :h, :path, :angle, :a, :r, :g, :b,~
** Processing line: ~ :source_x, :source_y, :source_w, :source_h,~
** Processing line: ~ :tile_x, :tile_y, :tile_w, :tile_h,~
** Processing line: ~ :flip_horizontally, :flip_vertically,~
** Processing line: ~ :angle_anchor_x, :angle_anchor_y~
** Processing line: ~~
** Processing line: ~ def primitive_marker~
** Processing line: ~ :sprite~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ class BlueSquare < Sprite~
** Processing line: ~ def initialize opts~
** Processing line: ~ @x = opts[:x]~
** Processing line: ~ @y = opts[:y]~
** Processing line: ~ @w = opts[:w]~
** Processing line: ~ @h = opts[:h]~
** Processing line: ~ @path = 'sprites/square-blue.png'~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.sprites << (BlueSquare.new x: 640 - 50,~
** Processing line: ~ y: 360 - 50,~
** Processing line: ~ w: 50,~
** Processing line: ~ h: 50)~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* How To Render A Label~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~How To Render A Label~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~args.outputs.labels~ is used to render labels.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.outputs.labels~ is used to render labels.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~Labels are how you display text. This code will go directly inside of the ~def tick args~ method.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Labels are how you display text. This code will go directly inside of the ~def tick args~ method.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~Here is the minimum code:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here is the minimum code:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # X Y TEXT~
** Processing line: ~ args.outputs.labels << [640, 360, "I am a black label."]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* A Colored Label~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~A Colored Label~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # A colored label~
** Processing line: ~ # X Y TEXT, RED GREEN BLUE ALPHA~
** Processing line: ~ args.outputs.labels << [640, 360, "I am a redish label.", 255, 128, 128, 255]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Extended Label Properties~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Extended Label Properties~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # A colored label~
** Processing line: ~ # X Y TEXT SIZE ALIGNMENT RED GREEN BLUE ALPHA FONT FILE~
** Processing line: ~ args.outputs.labels << [~
** Processing line: ~ 640, # X~
** Processing line: ~ 360, # Y~
** Processing line: ~ "Hello world", # TEXT~
** Processing line: ~ 0, # SIZE_ENUM~
** Processing line: ~ 1, # ALIGNMENT_ENUM~
** Processing line: ~ 0, # RED~
** Processing line: ~ 0, # GREEN~
** Processing line: ~ 0, # BLUE~
** Processing line: ~ 255, # ALPHA~
** Processing line: ~ "fonts/coolfont.ttf" # FONT~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~A ~SIZE_ENUM~ of ~0~ represents "default size". A ~negative~ value will decrease the label size. A ~positive~ value will increase the label's size.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~A ~SIZE_ENUM~ of ~0~ represents "default size". A ~negative~ value will decrease the label size. A ~positive~ value will increase the label's size.~
- Line's tilde count is: 8
- Line contains link marker: false
- CODE detected.
** Processing line: ~An ~ALIGNMENT_ENUM~ of ~0~ represents "left aligned". ~1~ represents "center aligned". ~2~ represents "right aligned".~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~An ~ALIGNMENT_ENUM~ of ~0~ represents "left aligned". ~1~ represents "center aligned". ~2~ represents "right aligned".~
- Line's tilde count is: 8
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~* Rendering A Label As A ~Hash~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rendering A Label As A ~Hash~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~You can add additional metadata about your game within a label, which requires you to use a `Hash` instead.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You can add additional metadata about your game within a label, which requires you to use a `Hash` instead.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.labels << {~
** Processing line: ~ x: 200,~
** Processing line: ~ y: 550,~
** Processing line: ~ text: "dragonruby",~
** Processing line: ~ size_enum: 2,~
** Processing line: ~ alignment_enum: 1,~
** Processing line: ~ r: 155,~
** Processing line: ~ g: 50,~
** Processing line: ~ b: 50,~
** Processing line: ~ a: 255,~
** Processing line: ~ font: "fonts/manaspc.ttf",~
** Processing line: ~ # You can add any properties you like (this will be ignored/won't cause errors)~
** Processing line: ~ game_data_one: "Something",~
** Processing line: ~ game_data_two: {~
** Processing line: ~ value_1: "value",~
** Processing line: ~ value_2: "value two",~
** Processing line: ~ a_number: 15~
** Processing line: ~ }~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Getting The Size Of A Piece Of Text~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Getting The Size Of A Piece Of Text~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~You can get the render size of any string using ~args.gtk.calcstringbox~.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You can get the render size of any string using ~args.gtk.calcstringbox~.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # TEXT SIZE_ENUM FONT~
** Processing line: ~ w, h = args.gtk.calcstringbox("some string", 0, "font.ttf")~
** Processing line: ~~
** Processing line: ~ # NOTE: The SIZE_ENUM and FONT are optional arguments.~
** Processing line: ~~
** Processing line: ~ # Render a label showing the w and h of the text:~
** Processing line: ~ args.outputs.labels << [~
** Processing line: ~ 10,~
** Processing line: ~ 710,~
** Processing line: ~ # This string uses Ruby's string interpolation literal: #{}~
** Processing line: ~ "'some string' has width: #{w}, and height: #{h}."~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* How To Play A Sound~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~How To Play A Sound~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Sounds that end ~.wav~ will play once:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Sounds that end ~.wav~ will play once:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # Play a sound every second~
** Processing line: ~ if (args.state.tick_count % 60) == 0~
** Processing line: ~ args.outputs.sounds << 'something.wav'~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~Sounds that end ~.ogg~ is considered background music and will loop:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Sounds that end ~.ogg~ is considered background music and will loop:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # Start a sound loop at the beginning of the game~
** Processing line: ~ if args.state.tick_count == 0~
** Processing line: ~ args.outputs.sounds << 'background_music.ogg'~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~If you want to play a ~.ogg~ once as if it were a sound effect, you can do:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~If you want to play a ~.ogg~ once as if it were a sound effect, you can do:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # Play a sound every second~
** Processing line: ~ if (args.state.tick_count % 60) == 0~
** Processing line: ~ args.gtk.queue_sound 'some-ogg.ogg'~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Using ~args.state~ To Store Your Game State~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Using ~args.state~ To Store Your Game State~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~~args.state~ is a open data structure that allows you to define properties that are arbitrarily nested. You don't need to define any kind of ~class~.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.state~ is a open data structure that allows you to define properties that are arbitrarily nested. You don't need to define any kind of ~class~.~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~To initialize your game state, use the ~||=~ operator. Any value on the right side of ~||=~ will only be assigned _once_.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~To initialize your game state, use the ~||=~ operator. Any value on the right side of ~||=~ will only be assigned _once_.~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~To assign a value every frame, just use the ~=~ operator, but _make sure_ you've initialized a default value.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~To assign a value every frame, just use the ~=~ operator, but _make sure_ you've initialized a default value.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # initialize your game state ONCE~
** Processing line: ~ args.state.player.x ||= 0~
** Processing line: ~ args.state.player.y ||= 0~
** Processing line: ~ args.state.player.hp ||= 100~
** Processing line: ~~
** Processing line: ~ # increment the x position of the character by one every frame~
** Processing line: ~ args.state.player.x += 1~
** Processing line: ~~
** Processing line: ~ # Render a sprite with a label above the sprite~
** Processing line: ~ args.outputs.sprites << [~
** Processing line: ~ args.state.player.x,~
** Processing line: ~ args.state.player.y,~
** Processing line: ~ 32, 32,~
** Processing line: ~ "player.png"~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << [~
** Processing line: ~ args.state.player.x,~
** Processing line: ~ args.state.player.y - 50,~
** Processing line: ~ args.state.player.hp~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Frequently Asked Questions, Comments, and Concerns~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Frequently Asked Questions, Comments, and Concerns~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Here are questions, comments, and concerns that frequently come up.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here are questions, comments, and concerns that frequently come up.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Frequently Asked Questions~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Frequently Asked Questions~
- 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: ~Frequently Asked Questions~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~*** What is DragonRuby LLP?~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~What is DragonRuby LLP?~
- 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: ~What is DragonRuby LLP?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~DragonRuby LLP is a partnership of four devs who came together with the goal of bringing the aesthetics and joy of Ruby, everywhere possible.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~DragonRuby LLP is a partnership of four devs who came together with the goal of bringing the aesthetics and joy of Ruby, everywhere possible.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Under DragonRuby LLP, we offer a number of products (with more on the way):~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Under DragonRuby LLP, we offer a number of products (with more on the way):~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~- Game Toolkit (GTK): A 2D game engine that is compatible with modern
gaming platforms.~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Game Toolkit (GTK): A 2D game engine that is compatible with modern
gaming platforms.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- RubyMotion (RM): A compiler toolchain that allows you to build native, cross-platform mobile
apps. [[http://rubymotion.com]]~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~RubyMotion (RM): A compiler toolchain that allows you to build native, cross-platform mobile
apps. [[http://rubymotion.com]]~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~All of the products above leverage a shared core called DragonRuby.~
- UL end detected.
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~All of the products above leverage a shared core called DragonRuby.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~NOTE: From an official branding standpoint each one of the products is suffixed with "A DragonRuby LLP Product" tagline. Also, DragonRuby is _one word, title cased_.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~NOTE: From an official branding standpoint each one of the products is suffixed with "A DragonRuby LLP Product" tagline. Also, DragonRuby is _one word, title cased_.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~NOTE: We leave the "A DragonRuby LLP Product" off of this one because that just sounds really weird.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~NOTE: We leave the "A DragonRuby LLP Product" off of this one because that just sounds really weird.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~NOTE: Devs who use DragonRuby are "Dragon Riders/Riders of Dragons". That's a bad ass identifier huh?~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~NOTE: Devs who use DragonRuby are "Dragon Riders/Riders of Dragons". That's a bad ass identifier huh?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~*** What is DragonRuby?~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~What is DragonRuby?~
- 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: ~What is DragonRuby?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~The response to this question requires a few subparts. First we need to clarify some terms. Specifically _language specification_ vs _runtime_.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The response to this question requires a few subparts. First we need to clarify some terms. Specifically _language specification_ vs _runtime_.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~**** Okay... so what is the difference between a language specification and a runtime?~
- H4 detected.
- Determining if line is a header.
- Line contains ~**** ~... gsub-ing empty string
- Formatting line: ~Okay... so what is the difference between a language specification and a runtime?~
- 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: ~Okay... so what is the difference between a language specification and a runtime?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~A runtime is an _implementation_ of a language specification. When people say "Ruby," they are usually referring to "the Ruby 3.0+ language specification implemented via the CRuby/MRI Runtime."~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~A runtime is an _implementation_ of a language specification. When people say "Ruby," they are usually referring to "the Ruby 3.0+ language specification implemented via the CRuby/MRI Runtime."~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~But, there are many Ruby Runtimes: CRuby/MRI, JRuby, Truffle, Rubinius, Artichoke, and (last but certainly not least) DragonRuby.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~But, there are many Ruby Runtimes: CRuby/MRI, JRuby, Truffle, Rubinius, Artichoke, and (last but certainly not least) DragonRuby.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~**** Okay... what language specification does DragonRuby use then?~
- H4 detected.
- Determining if line is a header.
- Line contains ~**** ~... gsub-ing empty string
- Formatting line: ~Okay... what language specification does DragonRuby use then?~
- 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: ~Okay... what language specification does DragonRuby use then?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~DragonRuby's goal is to be compliant with the ISO/IEC 30170:2012 standard. It's syntax is Ruby 2.x compatible, but also contains semantic changes that help it natively interface with platform specific libraries.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~DragonRuby's goal is to be compliant with the ISO/IEC 30170:2012 standard. It's syntax is Ruby 2.x compatible, but also contains semantic changes that help it natively interface with platform specific libraries.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~**** So... why another runtime?~
- H4 detected.
- Determining if line is a header.
- Line contains ~**** ~... gsub-ing empty string
- Formatting line: ~So... why another runtime?~
- 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: ~So... why another runtime?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~The elevator pitch is:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The elevator pitch is:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~DragonRuby is a Multilevel Cross-platform Runtime. The "multiple levels" within the runtime allows us to target platforms no other Ruby can target: PC, Mac, Linux, Raspberry Pi, WASM, iOS, Android, Nintendo Switch, PS4, Xbox, and Scadia.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~DragonRuby is a Multilevel Cross-platform Runtime. The "multiple levels" within the runtime allows us to target platforms no other Ruby can target: PC, Mac, Linux, Raspberry Pi, WASM, iOS, Android, Nintendo Switch, PS4, Xbox, and Scadia.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~**** What does Multilevel Cross-platform mean?~
- H4 detected.
- Determining if line is a header.
- Line contains ~**** ~... gsub-ing empty string
- Formatting line: ~What does Multilevel Cross-platform mean?~
- 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: ~What does Multilevel Cross-platform mean?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~There are complexities associated with targeting all the platforms we support. Because of this, the runtime had to be architected in such a way that new platforms could be easily added (which lead to us partitioning the runtime internally):~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~There are complexities associated with targeting all the platforms we support. Because of this, the runtime had to be architected in such a way that new platforms could be easily added (which lead to us partitioning the runtime internally):~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~- Level 1 we leverage a good portion of mRuby.~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Level 1 we leverage a good portion of mRuby.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- Level 2 consists of optimizations to mRuby we've made given that our
target platforms are well known.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Level 2 consists of optimizations to mRuby we've made given that our
target platforms are well known.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- Level 3 consists of portable C libraries and their Ruby
C-Extensions.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Level 3 consists of portable C libraries and their Ruby
C-Extensions.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Levels 1 through 3 are fairly commonplace in many runtime implementations (with level 1 being the most portable, and level 3 being the fastest). But the DragonRuby Runtime has taken things a bit further:~
- UL end detected.
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Levels 1 through 3 are fairly commonplace in many runtime implementations (with level 1 being the most portable, and level 3 being the fastest). But the DragonRuby Runtime has taken things a bit further:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~- Level 4 consists of shared abstractions around hardware I/O and operating
system resources. This level leverages open source and proprietary components within Simple DirectMedia Layer (a low level multimedia component library that has been in active development for 22 years and counting).~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Level 4 consists of shared abstractions around hardware I/O and operating
system resources. This level leverages open source and proprietary components within Simple DirectMedia Layer (a low level multimedia component library that has been in active development for 22 years and counting).~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~- Level 5 is a code generation layer which creates metadata that allows
for native interoperability with host runtime libraries. It also includes OS specific message pump orchestrations.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Level 5 is a code generation layer which creates metadata that allows
for native interoperability with host runtime libraries. It also includes OS specific message pump orchestrations.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~- Level 6 is a Ahead of Time/Just in Time Ruby compiler built with LLVM. This
compiler outputs _very_ fast platform specific bitcode, but only supports a subset of the Ruby language specification.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Level 6 is a Ahead of Time/Just in Time Ruby compiler built with LLVM. This
compiler outputs _very_ fast platform specific bitcode, but only supports a subset of the Ruby language specification.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~These levels allow us to stay up to date with open source implementations of Ruby; provide fast, native code execution on proprietary platforms; ensure good separation between these two worlds; and provides a means to add new platforms without going insane.~
- UL end detected.
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~These levels allow us to stay up to date with open source implementations of Ruby; provide fast, native code execution on proprietary platforms; ensure good separation between these two worlds; and provides a means to add new platforms without going insane.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~**** Cool cool. So given that I understand everything to this point, can we answer the original question? What is DragonRuby?~
- H4 detected.
- Determining if line is a header.
- Line contains ~**** ~... gsub-ing empty string
- Formatting line: ~Cool cool. So given that I understand everything to this point, can we answer the original question? What is DragonRuby?~
- 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: ~Cool cool. So given that I understand everything to this point, can we answer the original question? What is DragonRuby?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~DragonRuby is a Ruby runtime implementation that takes all the lessons we've learned from MRI/CRuby, and merges it with the latest and greatest compiler and OSS technologies.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~DragonRuby is a Ruby runtime implementation that takes all the lessons we've learned from MRI/CRuby, and merges it with the latest and greatest compiler and OSS technologies.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~*** How is DragonRuby different than MRI?~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~How is DragonRuby different than MRI?~
- 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: ~How is DragonRuby different than MRI?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~DragonRuby supports a subset of MRI apis. Our target is to support all of mRuby's standard lib. There are challenges to this given the number of platforms we are trying to support (specifically console).~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~DragonRuby supports a subset of MRI apis. Our target is to support all of mRuby's standard lib. There are challenges to this given the number of platforms we are trying to support (specifically console).~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~**** Does DragonRuby support Gems?~
- H4 detected.
- Determining if line is a header.
- Line contains ~**** ~... gsub-ing empty string
- Formatting line: ~Does DragonRuby support Gems?~
- 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: ~Does DragonRuby support Gems?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~DragonRuby does not support gems because that requires the installation of MRI Ruby on the developer's machine (which is a non-starter given that we want DragonRuby to be a zero dependency runtime). While this seems easy for Mac and Linux, it is much harder on Windows and Raspberry Pi. mRuby has taken the approach of having a git repository for compatible gems and we will most likely follow suite: [[https://github.com/mruby/mgem-list]].~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~DragonRuby does not support gems because that requires the installation of MRI Ruby on the developer's machine (which is a non-starter given that we want DragonRuby to be a zero dependency runtime). While this seems easy for Mac and Linux, it is much harder on Windows and Raspberry Pi. mRuby has taken the approach of having a git repository for compatible gems and we will most likely follow suite: [[https://github.com/mruby/mgem-list]].~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~~
** Processing line: ~**** Does DragonRuby have a REPL/IRB?~
- H4 detected.
- Determining if line is a header.
- Line contains ~**** ~... gsub-ing empty string
- Formatting line: ~Does DragonRuby have a REPL/IRB?~
- 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: ~Does DragonRuby have a REPL/IRB?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~You can use DragonRuby's Console within the game to inspect object and execute small pieces of code. For more complex pieces of code create a file called ~repl.rb~ and put it in ~mygame/app/repl.rb~:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You can use DragonRuby's Console within the game to inspect object and execute small pieces of code. For more complex pieces of code create a file called ~repl.rb~ and put it in ~mygame/app/repl.rb~:~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~- Any code you write in there will be executed when you change the file. You can organize different pieces of code using the ~repl~ method:~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Any code you write in there will be executed when you change the file. You can organize different pieces of code using the ~repl~ method:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ repl do~
** Processing line: ~ puts "hello world"~
** Processing line: ~ puts 1 + 1~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~- If you use the `repl` method, the code will be executed and the DragonRuby Console will automatically open so you can see the results (on Mac and Linux, the results will also be printed to the terminal).~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~If you use the `repl` method, the code will be executed and the DragonRuby Console will automatically open so you can see the results (on Mac and Linux, the results will also be printed to the terminal).~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~- All ~puts~ statements will also be saved to ~logs/log.txt~. So if you want to stay in your editor and not look at the terminal, or the DragonRuby Console, you can ~tail~ this file.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~All ~puts~ statements will also be saved to ~logs/log.txt~. So if you want to stay in your editor and not look at the terminal, or the DragonRuby Console, you can ~tail~ this file.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~4. To ignore code in ~repl.rb~, instead of commenting it out, prefix ~repl~ with the letter ~x~ and it'll be ignored.~
- UL end detected.
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~4. To ignore code in ~repl.rb~, instead of commenting it out, prefix ~repl~ with the letter ~x~ and it'll be ignored.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ xrepl do # <------- line is prefixed with an "x"~
** Processing line: ~ puts "hello world"~
** Processing line: ~ puts 1 + 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # This code will be executed when you save the file.~
** Processing line: ~ repl do~
** Processing line: ~ puts "Hello"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "This code will also be executed."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # use xrepl to "comment out" code~
** Processing line: ~ xrepl do~
** Processing line: ~ puts "This code will not be executed because of the x infront of repl".~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~**** Does DragonRuby support ~pry~ or have any other debugging facilities?~
- H4 detected.
- Determining if line is a header.
- Line contains ~**** ~... gsub-ing empty string
- Formatting line: ~Does DragonRuby support ~pry~ or have any other debugging facilities?~
- 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: ~Does DragonRuby support ~pry~ or have any other debugging facilities?~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~~pry~ is a gem that assumes you are using the MRI Runtime (which is incompatible with DragonRuby). Eventually DragonRuby will have a pry based experience that is compatible with a debugging infrastructure called LLDB. Take the time to read about LLDB as it shows the challenges in creating something that is compatible.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~pry~ is a gem that assumes you are using the MRI Runtime (which is incompatible with DragonRuby). Eventually DragonRuby will have a pry based experience that is compatible with a debugging infrastructure called LLDB. Take the time to read about LLDB as it shows the challenges in creating something that is compatible.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~You can use DragonRuby's replay capabilities to troubleshoot:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You can use DragonRuby's replay capabilities to troubleshoot:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~1. DragonRuby is hot loaded which gives you a very fast feedback loop (if the game throws an exception, it's because of the code you just added).~
- OL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ DragonRuby is hot loaded which gives you a very fast feedback loop (if the game throws an exception, it's because of the code you just added).~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~2. Use ~./dragonruby mygame --record~ to create a game play recording that you can use to find the exception (you can replay a recoding by executing ~./dragonruby mygame --replay last_replay.txt~ or through the DragonRuby Console using ~$gtk.recording.start_replay "last_replay.txt"~.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Use ~./dragonruby mygame --record~ to create a game play recording that you can use to find the exception (you can replay a recoding by executing ~./dragonruby mygame --replay last_replay.txt~ or through the DragonRuby Console using ~$gtk.recording.start_replay "last_replay.txt"~.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~3. DragonRuby also ships with a unit testing facility. You can invoke the following command to run a test: ~./dragonruby . --eval some_ruby_file.rb --no-tick~.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ DragonRuby also ships with a unit testing facility. You can invoke the following command to run a test: ~./dragonruby . --eval some_ruby_file.rb --no-tick~.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~4. Get into the habit of adding debugging facilities within the game itself. You can add drawing primitives to ~args.outputs.debug~ that will render on top of your game but will be ignored in a production release.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Get into the habit of adding debugging facilities within the game itself. You can add drawing primitives to ~args.outputs.debug~ that will render on top of your game but will be ignored in a production release.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~5. Debugging something that runs at 60fps is (imo) not that helpful. The exception you are seeing could have been because of a change that occurred many frames ago.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~ Debugging something that runs at 60fps is (imo) not that helpful. The exception you are seeing could have been because of a change that occurred many frames ago.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Frequent Comments About Ruby as a Language Choice~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Frequent Comments About Ruby as a Language Choice~
- 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: ~Frequent Comments About Ruby as a Language Choice~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~*** But Ruby is dead.~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~But Ruby is dead.~
- 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: ~But Ruby is dead.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Let's check the official source for the answer to this question: isrubydead.com: [[https://isrubydead.com/]].~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Let's check the official source for the answer to this question: isrubydead.com: [[https://isrubydead.com/]].~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~On a more serious note, Ruby's _quantity_ levels aren't what they used to be. And that's totally fine. Every one chases the new and shiny.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~On a more serious note, Ruby's _quantity_ levels aren't what they used to be. And that's totally fine. Every one chases the new and shiny.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~What really matters is _quality/maturity_. Here is the latest (StackOverflow Survey sorted by highest paid developers)[https://insights.stackoverflow.com/survey/2019#top-paying-technologies].~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~What really matters is _quality/maturity_. Here is the latest (StackOverflow Survey sorted by highest paid developers)[https://insights.stackoverflow.com/survey/2019#top-paying-technologies].~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Let's stop making this comment shall we?~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Let's stop making this comment shall we?~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~*** But Ruby is slow.~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~But Ruby is slow.~
- 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: ~But Ruby is slow.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~That doesn't make any sense. A language specification can't be slow... it's a language spec. Sure, an _implementation/runtime_ can be slow though, but then we'd have to talk about which runtime.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~That doesn't make any sense. A language specification can't be slow... it's a language spec. Sure, an _implementation/runtime_ can be slow though, but then we'd have to talk about which runtime.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~*** Dynamic languages are slow.~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~Dynamic languages are slow.~
- 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: ~Dynamic languages are slow.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~They are certainly slower than statically compiled languages. With the processing power and compiler optimizations we have today, dynamic languages like Ruby are _fast enough_.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~They are certainly slower than statically compiled languages. With the processing power and compiler optimizations we have today, dynamic languages like Ruby are _fast enough_.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Unless you are writing in some form of intermediate representation by hand, your language of choice also suffers this same fallacy of slow. Like, nothing is faster than a low level assembly-like language. So unless you're writing in that, let's stop making this comment.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Unless you are writing in some form of intermediate representation by hand, your language of choice also suffers this same fallacy of slow. Like, nothing is faster than a low level assembly-like language. So unless you're writing in that, let's stop making this comment.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~NOTE: If you _are_ hand writing LLVM IR, we are always open to bringing on new partners with such a skill set. Email us ^_^.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~NOTE: If you _are_ hand writing LLVM IR, we are always open to bringing on new partners with such a skill set. Email us ^_^.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Frequent Concerns~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Frequent Concerns~
- 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: ~Frequent Concerns~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~*** DragonRuby is not open source. That's not right.~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~DragonRuby is not open source. That's not right.~
- 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: ~DragonRuby is not open source. That's not right.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~The current state of open source is unsustainable. Contributors work for free, most all open source repositories are severely under-staffed, and burnout from core members is rampant.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The current state of open source is unsustainable. Contributors work for free, most all open source repositories are severely under-staffed, and burnout from core members is rampant.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~We believe in open source very strongly. Parts of DragonRuby are in fact, open source. Just not all of it (for legal reasons, and because the IP we've created has value). And we promise that we are looking for (or creating) ways to _sustainably_ open source everything we do.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~We believe in open source very strongly. Parts of DragonRuby are in fact, open source. Just not all of it (for legal reasons, and because the IP we've created has value). And we promise that we are looking for (or creating) ways to _sustainably_ open source everything we do.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~If you have ideas on how we can do this, email us!~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~If you have ideas on how we can do this, email us!~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~If the reason above isn't sufficient, then definitely use something else.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~If the reason above isn't sufficient, then definitely use something else.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~All this being said, we do have parts of the engine open sourced on GitHub: [[https://github.com/dragonruby/dragonruby-game-toolkit-contrib/]]~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~All this being said, we do have parts of the engine open sourced on GitHub: [[https://github.com/dragonruby/dragonruby-game-toolkit-contrib/]]~
- Line's tilde count is: 0
- Line contains link marker: true
- LINK detected.
** Processing line: ~~
** Processing line: ~*** DragonRuby is for pay. You should offer a free version.~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~DragonRuby is for pay. You should offer a free version.~
- 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: ~DragonRuby is for pay. You should offer a free version.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~If you can afford to pay for DragonRuby, you should (and will). We don't go around telling writers that they should give us their books for free, and only require payment if we read the entire thing. It's time we stop asking that of software products.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~If you can afford to pay for DragonRuby, you should (and will). We don't go around telling writers that they should give us their books for free, and only require payment if we read the entire thing. It's time we stop asking that of software products.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~That being said, we will _never_ put someone out financially. We have income assistance for anyone that can't afford a license to any one of our products.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~That being said, we will _never_ put someone out financially. We have income assistance for anyone that can't afford a license to any one of our products.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~You qualify for a free, unrestricted license to DragonRuby products if any of the following items pertain to you:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You qualify for a free, unrestricted license to DragonRuby products if any of the following items pertain to you:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~- Your income is below $2,000.00 (USD) per month.~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Your income is below $2,000.00 (USD) per month.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- You are under 18 years of age.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You are under 18 years of age.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- You are a student of any type: traditional public school, home
schooling, college, bootcamp, or online.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You are a student of any type: traditional public school, home
schooling, college, bootcamp, or online.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- You are a teacher, mentor, or parent who wants to teach a kid how to code.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You are a teacher, mentor, or parent who wants to teach a kid how to code.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- You work/worked in public service or at a charitable organization:
for example public office, army, or any 501(c)(3) organization.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You work/worked in public service or at a charitable organization:
for example public office, army, or any 501(c)(3) organization.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Just contact Amir at amir.rajan@dragonruby.org with a short explanation of your current situation and he'll set you up. No questions asked.~
- UL end detected.
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Just contact Amir at amir.rajan@dragonruby.org with a short explanation of your current situation and he'll set you up. No questions asked.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~*** But still, you should offer a free version. So I can try it out and see if I like it.~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~But still, you should offer a free version. So I can try it out and see if I like it.~
- 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: ~But still, you should offer a free version. So I can try it out and see if I like it.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~You can try our [web-based sandbox environment](). But it won't do the runtime justice. Or just come to our [Slack]() or [Discord]() channel and ask questions. We'd be happy to have a one on one video chat with you and show off all the cool stuff we're doing.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You can try our [web-based sandbox environment](). But it won't do the runtime justice. Or just come to our [Slack]() or [Discord]() channel and ask questions. We'd be happy to have a one on one video chat with you and show off all the cool stuff we're doing.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Seriously just buy it. Get a refund if you don't like it. We make it stupid easy to do so.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Seriously just buy it. Get a refund if you don't like it. We make it stupid easy to do so.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~*** I still think you should do a free version. Think of all people who would give it a shot.~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~I still think you should do a free version. Think of all people who would give it a shot.~
- 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: ~I still think you should do a free version. Think of all people who would give it a shot.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Free isn't a sustainable financial model. We don't want to spam your email. We don't want to collect usage data off of you either. We just want to provide quality toolchains to quality developers (as opposed to a large quantity of developers).~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Free isn't a sustainable financial model. We don't want to spam your email. We don't want to collect usage data off of you either. We just want to provide quality toolchains to quality developers (as opposed to a large quantity of developers).~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~The people that pay for DragonRuby and make an effort to understand it are the ones we want to build a community around, partner with, and collaborate with. So having that small monetary wall deters entitled individuals that don't value the same things we do.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The people that pay for DragonRuby and make an effort to understand it are the ones we want to build a community around, partner with, and collaborate with. So having that small monetary wall deters entitled individuals that don't value the same things we do.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~*** What if I build something with DragonRuby, but DragonRuby LLP becomes insolvent.~
- H3 detected.
- Determining if line is a header.
- Line contains ~*** ~... gsub-ing empty string
- Formatting line: ~What if I build something with DragonRuby, but DragonRuby LLP becomes insolvent.~
- 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: ~What if I build something with DragonRuby, but DragonRuby LLP becomes insolvent.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~That won't happen if the development world stop asking for free stuff and non-trivially compensate open source developers. Look, we want to be able to work on the stuff we love, every day of our lives. And we'll go to great lengths to make that happen.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~That won't happen if the development world stop asking for free stuff and non-trivially compensate open source developers. Look, we want to be able to work on the stuff we love, every day of our lives. And we'll go to great lengths to make that happen.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~But, in the event that sad day comes, our partnership bylaws state that _all_ DragonRuby IP that can be legally open sourced, will be released under a permissive license.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~But, in the event that sad day comes, our partnership bylaws state that _all_ DragonRuby IP that can be legally open sourced, will be released under a permissive license.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::Runtime~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::Runtime~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~The GTK::Runtime class is the core of DragonRuby. It is globally accessible via ~$gtk~.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The GTK::Runtime class is the core of DragonRuby. It is globally accessible via ~$gtk~.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::Runtime#reset~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::Runtime#reset~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~This function will reset Kernel.tick_count to 0 and will remove all data from args.state.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~This function will reset Kernel.tick_count to 0 and will remove all data from args.state.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::Runtime#calcstringbox~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::Runtime#calcstringbox~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~This function returns the width and height of a string.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~This function returns the width and height of a string.~
- 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: ~ args.state.string_size ||= args.gtk.calcstringbox "Hello World"~
** Processing line: ~ args.state.string_size_font_size ||= args.gtk.calcstringbox "Hello World"~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::Runtime#write_file~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::Runtime#write_file~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~This function takes in two parameters. The first paramter is the file path and assumes the the game directory is the root. The second parameter is the string that will be written. The method overwrites whatever is currently in the file. Use ~GTK::Runtime#append_file~ to append to the file as opposed to overwriting.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~This function takes in two parameters. The first paramter is the file path and assumes the the game directory is the root. The second parameter is the string that will be written. The method overwrites whatever is currently in the file. Use ~GTK::Runtime#append_file~ to append to the file as opposed to overwriting.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ if args.inputs.mouse.click~
** Processing line: ~ args.gtk.write_file "last-mouse-click.txt", "Mouse was clicked at #{args.state.tick_count}."~
** 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.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Array~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~The Array class has been extend to provide methods that will help in common game development tasks. Array is one of the most powerful classes in Ruby and a very fundamental component of Game Toolkit.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The Array class has been extend to provide methods that will help in common game development tasks. Array is one of the most powerful classes in Ruby and a very fundamental component of Game Toolkit.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Array#map~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Array#map~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~The function given a block returns a new ~Enumerable~ of values.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The function given a block returns a new ~Enumerable~ of values.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~Example of using ~Array#map~ in conjunction with ~args.state~ and ~args.outputs.sprites~ to render sprites to the screen.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Example of using ~Array#map~ in conjunction with ~args.state~ and ~args.outputs.sprites~ to render sprites to the screen.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # define the colors of the rainbow in ~args.state~~
** Processing line: ~ # as an ~Array~ of ~Hash~es with :order and :name.~
** Processing line: ~ # :order will be used to determine render location~
** Processing line: ~ # and :name will be used to determine sprite path.~
** Processing line: ~ args.state.rainbow_colors ||= [~
** Processing line: ~ { order: 0, name: :red },~
** Processing line: ~ { order: 1, name: :orange },~
** Processing line: ~ { order: 2, name: :yellow },~
** Processing line: ~ { order: 3, name: :green },~
** Processing line: ~ { order: 4, name: :blue },~
** Processing line: ~ { order: 5, name: :indigo },~
** Processing line: ~ { order: 6, name: :violet },~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ # render sprites diagonally to the screen~
** Processing line: ~ # with a width and height of 50.~
** Processing line: ~ args.outputs~
** Processing line: ~ .sprites << args.state~
** Processing line: ~ .rainbow_colors~
** Processing line: ~ .map do |color| # <-- ~Array#map~ usage~
** Processing line: ~ [~
** Processing line: ~ color[:order] * 50,~
** Processing line: ~ color[:order] * 50,~
** Processing line: ~ 50,~
** Processing line: ~ 50,~
** Processing line: ~ "sprites/square-#{color[:name]}.png"~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Array#each~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Array#each~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~The function, given a block, invokes the block for each item in the ~Array~. ~Array#each~ is synonymous to foreach constructs in other languages.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The function, given a block, invokes the block for each item in the ~Array~. ~Array#each~ is synonymous to foreach constructs in other languages.~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~Example of using ~Array#each~ in conjunction with ~args.state~ and ~args.outputs.sprites~ to render sprites to the screen:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Example of using ~Array#each~ in conjunction with ~args.state~ and ~args.outputs.sprites~ to render sprites to the screen:~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # define the colors of the rainbow in ~args.state~~
** Processing line: ~ # as an ~Array~ of ~Hash~es with :order and :name.~
** Processing line: ~ # :order will be used to determine render location~
** Processing line: ~ # and :name will be used to determine sprite path.~
** Processing line: ~ args.state.rainbow_colors ||= [~
** Processing line: ~ { order: 0, name: :red },~
** Processing line: ~ { order: 1, name: :orange },~
** Processing line: ~ { order: 2, name: :yellow },~
** Processing line: ~ { order: 3, name: :green },~
** Processing line: ~ { order: 4, name: :blue },~
** Processing line: ~ { order: 5, name: :indigo },~
** Processing line: ~ { order: 6, name: :violet },~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ # render sprites diagonally to the screen~
** Processing line: ~ # with a width and height of 50.~
** Processing line: ~ args.state~
** Processing line: ~ .rainbow_colors~
** Processing line: ~ .map do |color| # <-- ~Array#each~ usage~
** Processing line: ~ args.outputs.sprites << [~
** Processing line: ~ color[:order] * 50,~
** Processing line: ~ color[:order] * 50,~
** Processing line: ~ 50,~
** Processing line: ~ 50,~
** Processing line: ~ "sprites/square-#{color[:name]}.png"~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Array#reject_nil~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Array#reject_nil~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Returns an ~Enumerable~ rejecting items that are ~nil~, this is an alias for ~Array#compact~:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Returns an ~Enumerable~ rejecting items that are ~nil~, this is an alias for ~Array#compact~:~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ repl do~
** Processing line: ~ a = [1, nil, 4, false, :a]~
** Processing line: ~ puts a.reject_nil~
** Processing line: ~ # => [1, 4, false, :a]~
** Processing line: ~ puts a.compact~
** Processing line: ~ # => [1, 4, false, :a]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Array#reject_false~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Array#reject_false~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Returns an `Enumerable` rejecting items that are `nil` or `false`.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Returns an `Enumerable` rejecting items that are `nil` or `false`.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ repl do~
** Processing line: ~ a = [1, nil, 4, false, :a]~
** Processing line: ~ puts a.reject_false~
** Processing line: ~ # => [1, 4, :a]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Array#product~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Array#product~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Returns all combinations of values between two arrays.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Returns all combinations of values between two arrays.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Here are some examples of using ~product~. Paste the following code at the bottom of main.rb and save the file to see the results:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here are some examples of using ~product~. Paste the following code at the bottom of main.rb and save the file to see the results:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ repl do~
** Processing line: ~ a = [0, 1]~
** Processing line: ~ puts a.product~
** Processing line: ~ # => [[0, 0], [0, 1], [1, 0], [1, 1]]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ repl do~
** Processing line: ~ a = [ 0, 1]~
** Processing line: ~ b = [:a, :b]~
** Processing line: ~ puts a.product b~
** Processing line: ~ # => [[0, :a], [0, :b], [1, :a], [1, :b]]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Array#map_2d~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Array#map_2d~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Assuming the array is an array of arrays, Given a block, each 2D array index invoked against the block. A 2D array is a common way to store data/layout for a stage.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Assuming the array is an array of arrays, Given a block, each 2D array index invoked against the block. A 2D array is a common way to store data/layout for a stage.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ repl do~
** Processing line: ~ stage = [~
** Processing line: ~ [:enemy, :empty, :player],~
** Processing line: ~ [:empty, :empty, :empty],~
** Processing line: ~ [:enemy, :empty, :enemy],~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ occupied_tiles = stage.map_2d do |row, col, tile|~
** Processing line: ~ if tile == :empty~
** Processing line: ~ nil~
** Processing line: ~ else~
** Processing line: ~ [row, col, tile]~
** Processing line: ~ end~
** Processing line: ~ end.reject_nil~
** Processing line: ~~
** Processing line: ~ puts "Stage:"~
** Processing line: ~ puts stage~
** Processing line: ~~
** Processing line: ~ puts "Occupied Tiles"~
** Processing line: ~ puts occupied_tiles~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Array#include_any?~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Array#include_any?~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Given a collection of items, the function will return ~true~ if any of ~self~'s items exists in the collection of items passed in:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Given a collection of items, the function will return ~true~ if any of ~self~'s items exists in the collection of items passed in:~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Array#any_intersect_rect?~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Array#any_intersect_rect?~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Assuming the array contains objects that respond to ~left~, ~right~, ~top~, ~bottom~, this method returns ~true~ if any of the elements within the array intersect the object being passed in. You are given an optional parameter called ~tolerance~ which informs how close to the other rectangles the elements need to be for it to be considered intersecting.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Assuming the array contains objects that respond to ~left~, ~right~, ~top~, ~bottom~, this method returns ~true~ if any of the elements within the array intersect the object being passed in. You are given an optional parameter called ~tolerance~ which informs how close to the other rectangles the elements need to be for it to be considered intersecting.~
- Line's tilde count is: 12
- Line contains link marker: false
- CODE detected.
** Processing line: ~The default tolerance is set to ~0.1~, which means that the primitives are not considered intersecting unless they are overlapping by more than ~0.1~.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The default tolerance is set to ~0.1~, which means that the primitives are not considered intersecting unless they are overlapping by more than ~0.1~.~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ repl do~
** Processing line: ~ # Here is a player class that has position and implement~
** Processing line: ~ # the ~attr_rect~ contract.~
** Processing line: ~ class Player~
** Processing line: ~ attr_rect~
** Processing line: ~ attr_accessor :x, :y, :w, :h~
** Processing line: ~~
** Processing line: ~ def initialize x, y, w, h~
** Processing line: ~ @x = x~
** Processing line: ~ @y = y~
** Processing line: ~ @w = w~
** Processing line: ~ @h = h~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ { x: @x, y: @y, w: @w, h: @h }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inspect~
** Processing line: ~ "#{serialize}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_s~
** Processing line: ~ "#{serialize}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Here is a definition of two walls.~
** Processing line: ~ walls = [~
** Processing line: ~ [10, 10, 10, 10],~
** Processing line: ~ { x: 20, y: 20, w: 10, h: 10 },~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ # Display the walls.~
** Processing line: ~ puts "Walls."~
** Processing line: ~ puts walls~
** Processing line: ~ puts ""~
** Processing line: ~~
** Processing line: ~ # Check any_intersect_rect? on player~
** Processing line: ~ player = Player.new 30, 20, 10, 10~
** Processing line: ~ puts "Is Player #{player} touching wall?"~
** Processing line: ~ puts (walls.any_intersect_rect? player)~
** Processing line: ~ # => false~
** Processing line: ~ # The value is false because of the default tolerance is 0.1.~
** Processing line: ~ # The overlap of the player rect and any of the wall rects is~
** Processing line: ~ # less than 0.1 (for those that intersect).~
** Processing line: ~ puts ""~
** Processing line: ~~
** Processing line: ~ player = Player.new 9, 10, 10, 10~
** Processing line: ~ puts "Is Player #{player} touching wall?"~
** Processing line: ~ puts (walls.any_intersect_rect? player)~
** Processing line: ~ # => true~
** Processing line: ~ puts ""~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::Outputs~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::Outputs~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Outputs is how you render primitives to the screen. The minimal setup for rendering something to the screen is via a ~tick~ method defined in mygame/app/main.rb~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Outputs is how you render primitives to the screen. The minimal setup for rendering something to the screen is via a ~tick~ method defined in mygame/app/main.rb~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # code goes here~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::Outputs#solids~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::Outputs#solids~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Add primitives to this collection to render a solid to the screen.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Add primitives to this collection to render a solid to the screen.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~** Rendering a solid using an Array~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Rendering a solid using an Array~
- 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: ~Rendering a solid using an Array~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~Creates a solid black rectangle located at 100, 100. 160 pixels wide and 90 pixels tall.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Creates a solid black rectangle located at 100, 100. 160 pixels wide and 90 pixels tall.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # X Y WIDTH HEIGHT~
** Processing line: ~ args.outputs.solids << [100, 100, 160, 90]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~** Rendering a solid using an Array with colors and alpha~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Rendering a solid using an Array with colors and alpha~
- 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: ~Rendering a solid using an Array with colors and alpha~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~The value for the color and alpha is an number between ~0~ and ~255~. The alpha property is optional and will be set to ~255~ if not specified.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The value for the color and alpha is an number between ~0~ and ~255~. The alpha property is optional and will be set to ~255~ if not specified.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~Creates a green solid rectangle with an opacity of 50%.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Creates a green solid rectangle with an opacity of 50%.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # X Y WIDTH HEIGHT RED GREEN BLUE ALPHA~
** Processing line: ~ args.outputs.solids << [100, 100, 160, 90, 0, 255, 0, 128]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~** Rendering a solid using a Hash~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Rendering a solid using a Hash~
- 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: ~Rendering a solid using a Hash~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~If you want a more readable invocation. You can use the following hash to create a solid. Any parameters that are not specified will be given a default value. The keys of the hash can be provided in any order.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~If you want a more readable invocation. You can use the following hash to create a solid. Any parameters that are not specified will be given a default value. The keys of the hash can be provided in any order.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.solids << {~
** Processing line: ~ x: 0,~
** Processing line: ~ y: 0,~
** Processing line: ~ w: 100,~
** Processing line: ~ h: 100,~
** Processing line: ~ r: 0,~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 0,~
** Processing line: ~ a: 255~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~** Rendering a solid using a Class~
- H2 detected.
- Determining if line is a header.
- Line contains ~** ~... gsub-ing empty string
- Formatting line: ~Rendering a solid using a Class~
- 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: ~Rendering a solid using a Class~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~You can also create a class with solid/border properties and render it as a primitive. ALL properties must on the class. *Additionally*, a method called ~primitive_marker~ must be defined on the class.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You can also create a class with solid/border properties and render it as a primitive. ALL properties must on the class. *Additionally*, a method called ~primitive_marker~ must be defined on the class.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~Here is an example:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here is an example:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ # Create type with ALL solid properties AND primitive_marker~
** Processing line: ~ class Solid~
** Processing line: ~ attr_accessor :x, :y, :w, :h, :r, :g, :b, :a~
** Processing line: ~~
** Processing line: ~ def primitive_marker~
** Processing line: ~ :solid~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Inherit from type~
** Processing line: ~ class Square < Solid~
** Processing line: ~ # constructor~
** Processing line: ~ def initialize x, y, size~
** Processing line: ~ self.x = x~
** Processing line: ~ self.y = y~
** Processing line: ~ self.w = size~
** Processing line: ~ self.h = size~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ # render solid/border~
** Processing line: ~ args.outputs.solids << Square.new(10, 10, 32)~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::Outputs#borders~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::Outputs#borders~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Add primitives to this collection to render an unfilled solid to the screen. Take a look at the documentation for Outputs#solids.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Add primitives to this collection to render an unfilled solid to the screen. Take a look at the documentation for Outputs#solids.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~The only difference between the two primitives is where they are added.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The only difference between the two primitives is where they are added.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Instead of using ~args.outputs.solids~:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Instead of using ~args.outputs.solids~:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # X Y WIDTH HEIGHT~
** Processing line: ~ args.outputs.solids << [100, 100, 160, 90]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~You have to use ~args.outputs.borders~:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~You have to use ~args.outputs.borders~:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # X Y WIDTH HEIGHT~
** Processing line: ~ args.outputs.borders << [100, 100, 160, 90]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::Mouse~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::Mouse~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~The mouse is accessible via ~args.inputs.mouse~:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The mouse is accessible via ~args.inputs.mouse~:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src ruby~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # Rendering a label that shows the mouse's x and y position (via args.inputs.mouse).~
** Processing line: ~ args.outputs.labels << [~
** Processing line: ~ 10,~
** Processing line: ~ 710,~
** Processing line: ~ "The mouse's position is: #{args.inputs.mouse.x} #{args.inputs.mouse.y}."~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~The mouse has the following properties.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The mouse has the following properties.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~- ~args.inputs.mouse.x~: Returns the x position of the mouse.~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.x~: Returns the x position of the mouse.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.y~: Returns the y position of the mouse.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.y~: Returns the y position of the mouse.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.moved~: Returns true if the mouse moved during the tick.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.moved~: Returns true if the mouse moved during the tick.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.moved_at~: Returns the tick_count (~args.state.tick_count~) that the mouse was moved at. This property will be ~nil~ if the mouse didn't move.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.moved_at~: Returns the tick_count (~args.state.tick_count~) that the mouse was moved at. This property will be ~nil~ if the mouse didn't move.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.global_moved_at~: Returns the global tick_count (~Kernel.global_tick_count~) that the mouse was moved at. This property will be ~nil~ if the mouse didn't move.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.global_moved_at~: Returns the global tick_count (~Kernel.global_tick_count~) that the mouse was moved at. This property will be ~nil~ if the mouse didn't move.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.click~: Returns a ~GTK::MousePoint~ for that specific frame (~args.state.tick_count~) if the mouse button was pressed.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.click~: Returns a ~GTK::MousePoint~ for that specific frame (~args.state.tick_count~) if the mouse button was pressed.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.previous_click~: Returns a ~GTK::MousePoint~ for the previous frame (~args.state.tick_count - 1~) if the mouse button was pressed.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.previous_click~: Returns a ~GTK::MousePoint~ for the previous frame (~args.state.tick_count - 1~) if the mouse button was pressed.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.up~: Returns true if for that specific frame (~args.state.tick_count~) if the mouse button was released.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.up~: Returns true if for that specific frame (~args.state.tick_count~) if the mouse button was released.~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.point~ | ~args.inputs.mouse.position~: Returns an ~Array~ which contains the ~x~ and ~y~ position of the mouse.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.point~ | ~args.inputs.mouse.position~: Returns an ~Array~ which contains the ~x~ and ~y~ position of the mouse.~
- Line's tilde count is: 10
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.has_focus~: Returns true if the game window has the mouse's focus.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.has_focus~: Returns true if the game window has the mouse's focus.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.wheel~: Returns an ~GTK::OpenEntity~ that contains an ~x~ and ~y~ property which represents how much the wheel has moved. If the wheel has not moved within the tick, this property will be ~nil~.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.wheel~: Returns an ~GTK::OpenEntity~ that contains an ~x~ and ~y~ property which represents how much the wheel has moved. If the wheel has not moved within the tick, this property will be ~nil~.~
- Line's tilde count is: 10
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.button_left~: Returns true if the left mouse button is down.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.button_left~: Returns true if the left mouse button is down.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.button_right~: Returns true if the right mouse button is down.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.button_right~: Returns true if the right mouse button is down.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.button_middle~: Returns true if the middle mouse button is down.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.button_middle~: Returns true if the middle mouse button is down.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~args.inputs.mouse.button_bits~: Gives the bits for each mouse button and its current state.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~args.inputs.mouse.button_bits~: Gives the bits for each mouse button and its current state.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::MousePoint~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::MousePoint~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~The ~GTK::MousePoint~ has the following properties.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The ~GTK::MousePoint~ has the following properties.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~- ~x~: Integer representing the mouse's x.~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~x~: Integer representing the mouse's x.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~y~: Integer representing the mouse's y.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~y~: Integer representing the mouse's y.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~point~: Array with the ~x~ and ~y~ values.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~point~: Array with the ~x~ and ~y~ values.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~w~: Width of the point that always returns ~0~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~w~: Width of the point that always returns ~0~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~h~: Height of the point that always returns ~0~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~h~: Height of the point that always returns ~0~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~left~: This value is the same as ~x~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~left~: This value is the same as ~x~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~right~: This value is the same as ~x~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~right~: This value is the same as ~x~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~top~: This value is the same as ~y~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~top~: This value is the same as ~y~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~bottom~: This value is the same as ~y~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~bottom~: This value is the same as ~y~ (included so that it can seemlessly work with ~GTK::Geometry~ functions).~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~created_at~: The tick (~args.state.tick_count~) that this structure was created.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~created_at~: The tick (~args.state.tick_count~) that this structure was created.~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~- ~global_created_at~: The global tick (~Kernel.global_tick_count~) that this structure was created.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~global_created_at~: The global tick (~Kernel.global_tick_count~) that this structure was created.~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::OpenEntity~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::OpenEntity~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~~GTK::OpenEntity~ is accessible within the DragonRuby's top level ~tick~ function via the ~args.state~ property.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~GTK::OpenEntity~ is accessible within the DragonRuby's top level ~tick~ function via the ~args.state~ property.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ args.state.x ||= 100~
** Processing line: ~ args.outputs.labels << [10, 710, "value of x is: #{args.state.x}."]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~The primary benefit of using ~args.state~ as opposed to instance variables is that ~GTK::OpenEntity~ allows for arbitrary nesting of properties without the need to create intermediate objects.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~The primary benefit of using ~args.state~ as opposed to instance variables is that ~GTK::OpenEntity~ allows for arbitrary nesting of properties without the need to create intermediate objects.~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~For example:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~For example:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ # intermediate player object does not need to be created~
** Processing line: ~ args.state.player.x ||= 100~
** Processing line: ~ args.state.player.y ||= 100~
** Processing line: ~ args.outputs.labels << [~
** Processing line: ~ 10,~
** Processing line: ~ 710,~
** Processing line: ~ "player x, y is:#{args.state.player.x}, #{args.state.player.y}."~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~GTK::OpenEntity#as_hash~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~GTK::OpenEntity#as_hash~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Returns a reference to the ~GTK::OpenEntity~ as a ~Hash~. This property is useful when you want to treat ~args.state~ as a ~Hash~ and invoke methods such as ~Hash#each~.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Returns a reference to the ~GTK::OpenEntity~ as a ~Hash~. This property is useful when you want to treat ~args.state~ as a ~Hash~ and invoke methods such as ~Hash#each~.~
- Line's tilde count is: 10
- Line contains link marker: false
- CODE detected.
** Processing line: ~Example:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Example:~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~#+begin_src~
- PRE start detected.
** Processing line: ~ def tick args~
** Processing line: ~ args.state.x ||= 100~
** Processing line: ~ args.state.y ||= 100~
** Processing line: ~ values = args.state~
** Processing line: ~ .as_hash~
** Processing line: ~ .map { |k, v| "#{k} #{v}" }~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << values.map.with_index do |v, i|~
** Processing line: ~ [~
** Processing line: ~ 10,~
** Processing line: ~ 710 - (30 * i),~
** Processing line: ~ v~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Numeric#frame_index~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Numeric#frame_index~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~This function is helpful for determining the index of frame-by-frame sprite animation. The numeric value ~self~ represents the moment the animation started.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~This function is helpful for determining the index of frame-by-frame sprite animation. The numeric value ~self~ represents the moment the animation started.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~frame_index~ takes three additional parameters:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~frame_index~ takes three additional parameters:~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~- How many frames exist in the sprite animation.~
- UL start detected.
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~How many frames exist in the sprite animation.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- How long to hold each animation for.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~How long to hold each animation for.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~- Whether the animation should repeat.~
- LI detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Whether the animation should repeat.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~frame_index~ will return ~nil~ if the time for the animation is out of bounds of the parameter specification.~
- UL end detected.
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~~frame_index~ will return ~nil~ if the time for the animation is out of bounds of the parameter specification.~
- Line's tilde count is: 4
- Line contains link marker: false
- CODE detected.
** Processing line: ~Example using variables:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Example using variables:~
- 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: ~ start_looping_at = 0~
** Processing line: ~ number_of_sprites = 6~
** Processing line: ~ number_of_frames_to_show_each_sprite = 4~
** Processing line: ~ does_sprite_loop = true~
** Processing line: ~~
** Processing line: ~ sprite_index =~
** Processing line: ~ start_looping_at.frame_index number_of_sprites,~
** Processing line: ~ number_of_frames_to_show_each_sprite,~
** Processing line: ~ does_sprite_loop~
** Processing line: ~~
** Processing line: ~ sprite_index ||= 0~
** Processing line: ~~
** Processing line: ~ args.outputs.sprites << [~
** Processing line: ~ 640 - 50,~
** Processing line: ~ 360 - 50,~
** Processing line: ~ 100,~
** Processing line: ~ 100,~
** Processing line: ~ "sprites/dragon-#{sprite_index}.png"~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~Example using named parameters:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Example using named parameters:~
- 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: ~ start_looping_at = 0~
** Processing line: ~~
** Processing line: ~ sprite_index =~
** Processing line: ~ start_looping_at.frame_index count: 6,~
** Processing line: ~ hold_for: 4,~
** Processing line: ~ repeat: true,~
** Processing line: ~ tick_count_override: args.state.tick_count~
** Processing line: ~~
** Processing line: ~ sprite_index ||= 0~
** Processing line: ~~
** Processing line: ~ args.outputs.sprites << [~
** Processing line: ~ 640 - 50,~
** Processing line: ~ 360 - 50,~
** Processing line: ~ 100,~
** Processing line: ~ 100,~
** Processing line: ~ "sprites/dragon-#{sprite_index}.png"~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Numeric#elapsed_time~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Numeric#elapsed_time~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~For a given number, the elapsed frames since that number is returned. `Kernel.tick_count` is used to determine how many frames have elapsed. An optional numeric argument can be passed in which will be used instead of `Kernel.tick_count`.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~For a given number, the elapsed frames since that number is returned. `Kernel.tick_count` is used to determine how many frames have elapsed. An optional numeric argument can be passed in which will be used instead of `Kernel.tick_count`.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Here is an example of how elapsed_time can be used.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Here is an example of how elapsed_time can be used.~
- 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: ~ args.state.last_click_at ||= 0~
** Processing line: ~~
** Processing line: ~ # record when a mouse click occurs~
** Processing line: ~ if args.inputs.mouse.click~
** Processing line: ~ args.state.last_click_at = args.state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Use Numeric#elapsed_time to determine how long it's been~
** Processing line: ~ if args.state.last_click_at.elapsed_time > 120~
** Processing line: ~ args.outputs.labels << [10, 710, "It has been over 2 seconds since the mouse was clicked."]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~And here is an example where the override parameter is passed in:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~And here is an example where the override parameter is passed in:~
- 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: ~ args.state.last_click_at ||= 0~
** Processing line: ~~
** Processing line: ~ # create a state variable that tracks time at half the speed of args.state.tick_count~
** Processing line: ~ args.state.simulation_tick = args.state.tick_count.idiv 2~
** Processing line: ~~
** Processing line: ~ # record when a mouse click occurs~
** Processing line: ~ if args.inputs.mouse.click~
** Processing line: ~ args.state.last_click_at = args.state.simulation_tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Use Numeric#elapsed_time to determine how long it's been~
** Processing line: ~ if (args.state.last_click_at.elapsed_time args.state.simulation_tick) > 120~
** Processing line: ~ args.outputs.labels << [10, 710, "It has been over 4 seconds since the mouse was clicked."]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Numeric#elapsed?~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Numeric#elapsed?~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~Returns true if ~Numeric#elapsed_time~ is greater than the number. An optional parameter can be passed into ~elapsed?~ which is added to the number before evaluating whether ~elapsed?~ is true.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Returns true if ~Numeric#elapsed_time~ is greater than the number. An optional parameter can be passed into ~elapsed?~ which is added to the number before evaluating whether ~elapsed?~ is true.~
- Line's tilde count is: 6
- Line contains link marker: false
- CODE detected.
** Processing line: ~Example usage (no optional parameter):~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Example usage (no optional parameter):~
- 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: ~ args.state.box_queue ||= []~
** Processing line: ~~
** Processing line: ~ if args.state.box_queue.empty?~
** Processing line: ~ args.state.box_queue << { name: :red,~
** Processing line: ~ destroy_at: args.state.tick_count + 60 }~
** Processing line: ~ args.state.box_queue << { name: :green,~
** Processing line: ~ destroy_at: args.state.tick_count + 60 }~
** Processing line: ~ args.state.box_queue << { name: :blue,~
** Processing line: ~ destroy_at: args.state.tick_count + 120 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ boxes_to_destroy = args.state~
** Processing line: ~ .box_queue~
** Processing line: ~ .find_all { |b| b[:destroy_at].elapsed? }~
** Processing line: ~~
** Processing line: ~ if !boxes_to_destroy.empty?~
** Processing line: ~ puts "boxes to destroy count: #{boxes_to_destroy.length}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ boxes_to_destroy.each { |b| puts "box #{b} was elapsed? on #{args.state.tick_count}." }~
** Processing line: ~~
** Processing line: ~ args.state.box_queue -= boxes_to_destroy~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~Example usage (with optional parameter):~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Example usage (with optional parameter):~
- 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: ~ args.state.box_queue ||= []~
** Processing line: ~~
** Processing line: ~ if args.state.box_queue.empty?~
** Processing line: ~ args.state.box_queue << { name: :red,~
** Processing line: ~ create_at: args.state.tick_count + 120,~
** Processing line: ~ lifespan: 60 }~
** Processing line: ~ args.state.box_queue << { name: :green,~
** Processing line: ~ create_at: args.state.tick_count + 120,~
** Processing line: ~ lifespan: 60 }~
** Processing line: ~ args.state.box_queue << { name: :blue,~
** Processing line: ~ create_at: args.state.tick_count + 120,~
** Processing line: ~ lifespan: 120 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # lifespan is passed in as a parameter to ~elapsed?~~
** Processing line: ~ boxes_to_destroy = args.state~
** Processing line: ~ .box_queue~
** Processing line: ~ .find_all { |b| b[:create_at].elapsed? b[:lifespan] }~
** Processing line: ~~
** Processing line: ~ if !boxes_to_destroy.empty?~
** Processing line: ~ puts "boxes to destroy count: #{boxes_to_destroy.length}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ boxes_to_destroy.each { |b| puts "box #{b} was elapsed? on #{args.state.tick_count}." }~
** Processing line: ~~
** Processing line: ~ args.state.box_queue -= boxes_to_destroy~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Numeric#created?~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Numeric#created?~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~Returns true if ~Numeric#elapsed_time == 0~. Essentially communicating that number is equal to the current frame.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Returns true if ~Numeric#elapsed_time == 0~. Essentially communicating that number is equal to the current frame.~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~Example usage:~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Example usage:~
- 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: ~ args.state.box_queue ||= []~
** Processing line: ~~
** Processing line: ~ if args.state.box_queue.empty?~
** Processing line: ~ args.state.box_queue << { name: :red,~
** Processing line: ~ create_at: args.state.tick_count + 60 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ boxes_to_spawn_this_frame = args.state~
** Processing line: ~ .box_queue~
** Processing line: ~ .find_all { |b| b[:create_at].new? }~
** Processing line: ~~
** Processing line: ~ boxes_to_spawn_this_frame.each { |b| puts "box #{b} was new? on #{args.state.tick_count}." }~
** Processing line: ~~
** Processing line: ~ args.state.box_queue -= boxes_to_spawn_this_frame~
** Processing line: ~ end~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Kernel~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Kernel~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Kernel in the DragonRuby Runtime has patches for how standard out is handled and also contains a unit of time in games called a tick.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Kernel in the DragonRuby Runtime has patches for how standard out is handled and also contains a unit of time in games called a tick.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Kernel::tick_count~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Kernel::tick_count~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Returns the current tick of the game. This value is reset if you call $gtk.reset.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Returns the current tick of the game. This value is reset if you call $gtk.reset.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* DOCS: ~Kernel::global_tick_count~~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~DOCS: ~Kernel::global_tick_count~~
- Line's tilde count is: 2
- Line contains link marker: false
- CODE detected.
** Processing line: ~~
** Processing line: ~Returns the current tick of the application from the point it was started. This value is never reset.~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Returns the current tick of the application from the point it was started. This value is never reset.~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Open Source~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Open Source~
- Line's tilde count is: 0
- Line contains link marker: false
** Processing line: ~Follows is a source code listing for all files that have been open sourced. This code can be found in the ~./samples~ directory and online at [[https://github.com/DragonRuby/dragonruby-game-toolkit-contrib/]].~
- P detected.
- Determining if line is a header.
- Line does not appear to be a header.
- Formatting line: ~Follows is a source code listing for all files that have been open sourced. This code can be found in the ~./samples~ directory and online at [[https://github.com/DragonRuby/dragonruby-game-toolkit-contrib/]].~
- Line's tilde count is: 2
- Line contains link marker: true
- CODE detected.
- LINK detected.
** Processing line: ~* Learn Ruby Optional - Beginner Ruby Primer - automation.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Beginner Ruby Primer - automation.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/00_learn_ruby_optional/00_beginner_ruby_primer/app/automation.rb~
** Processing line: ~ # ==========================================================================~
** Processing line: ~ # _ _ ________ __ _ _____ _____ _______ ______ _ _ _ _ _ _~
** Processing line: ~ # | | | | ____\ \ / / | | |_ _|/ ____|__ __| ____| \ | | | | | |~
** Processing line: ~ # | |__| | |__ \ \_/ / | | | | | (___ | | | |__ | \| | | | | |~
** Processing line: ~ # | __ | __| \ / | | | | \___ \ | | | __| | . ` | | | | |~
** Processing line: ~ # | | | | |____ | | | |____ _| |_ ____) | | | | |____| |\ |_|_|_|_|~
** Processing line: ~ # |_| |_|______| |_| |______|_____|_____/ |_| |______|_| \_(_|_|_|_)~
** Processing line: ~ #~
** Processing line: ~ #~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # \ | /~
** Processing line: ~ # \ | /~
** Processing line: ~ # +~
** Processing line: ~ #~
** Processing line: ~ # If you are new to the programming language Ruby, then you may find the~
** Processing line: ~ # following code a bit overwhelming. Come back to this file when you have~
** Processing line: ~ # a better grasp of Ruby and Game Toolkit.~
** Processing line: ~ #~
** Processing line: ~ # What follows is an automations script # that can be run via terminal:~
** Processing line: ~ # ./samples/00_beginner_ruby_primer $ ../../dragonruby . --eval app/automation.rb~
** Processing line: ~ # ==========================================================================~
** Processing line: ~~
** Processing line: ~ $gtk.reset~
** Processing line: ~ $gtk.scheduled_callbacks.clear~
** Processing line: ~ $gtk.schedule_callback 10 do~
** Processing line: ~ $gtk.console.set_command 'puts "Hello DragonRuby!"'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 20 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 30 do~
** Processing line: ~ $gtk.console.set_command 'outputs.solids << [910, 200, 100, 100, 255, 0, 0]'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 40 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 50 do~
** Processing line: ~ $gtk.console.set_command 'outputs.solids << [1010, 200, 100, 100, 0, 0, 255]'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 60 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 70 do~
** Processing line: ~ $gtk.console.set_command 'outputs.sprites << [1110, 200, 100, 100, "sprites/dragon_fly_0.png"]'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 80 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 90 do~
** Processing line: ~ $gtk.console.set_command "outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 100 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 110 do~
** Processing line: ~ $gtk.console.set_command "state.sprite_frame = state.tick_count.idiv(4).mod(6)"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 120 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 130 do~
** Processing line: ~ $gtk.console.set_command "outputs.labels << [1210, 170, state.sprite_frame, 0, 255, 0]"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 140 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 150 do~
** Processing line: ~ $gtk.console.set_command "state.sprite_path = \"sprites/dragon_fly_\#{state.sprite_frame}.png\""~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 160 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 170 do~
** Processing line: ~ $gtk.console.set_command "outputs.labels << [910, 330, \"path: \#{state.sprite_path}\", 0, 255, 0]"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 180 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 190 do~
** Processing line: ~ $gtk.console.set_command "outputs.sprites << [910, 330, 370, 370, state.sprite_path]"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 200 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 300 do~
** Processing line: ~ $gtk.console.set_command ":wq"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.schedule_callback 400 do~
** Processing line: ~ $gtk.console.eval_the_set_command~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Beginner Ruby Primer - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Beginner Ruby Primer - 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/00_learn_ruby_optional/00_beginner_ruby_primer/app/main.rb~
** Processing line: ~ # ==========================================================================~
** Processing line: ~ # _ _ ________ __ _ _____ _____ _______ ______ _ _ _ _ _ _~
** Processing line: ~ # | | | | ____\ \ / / | | |_ _|/ ____|__ __| ____| \ | | | | | |~
** Processing line: ~ # | |__| | |__ \ \_/ / | | | | | (___ | | | |__ | \| | | | | |~
** Processing line: ~ # | __ | __| \ / | | | | \___ \ | | | __| | . ` | | | | |~
** Processing line: ~ # | | | | |____ | | | |____ _| |_ ____) | | | | |____| |\ |_|_|_|_|~
** Processing line: ~ # |_| |_|______| |_| |______|_____|_____/ |_| |______|_| \_(_|_|_|_)~
** Processing line: ~ #~
** Processing line: ~ #~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # |~
** Processing line: ~ # \ | /~
** Processing line: ~ # \ | /~
** Processing line: ~ # +~
** Processing line: ~ #~
** Processing line: ~ # If you are new to the programming language Ruby, then you may find the~
** Processing line: ~ # following code a bit overwhelming. This sample is only designed to be~
** Processing line: ~ # run interactively (as opposed to being manipulated via source code).~
** Processing line: ~ #~
** Processing line: ~ # Start up this sample and follow along by visiting:~
** Processing line: ~ # https://s3.amazonaws.com/s3.dragonruby.org/dragonruby-gtk-primer.mp4~
** Processing line: ~ #~
** Processing line: ~ # It is STRONGLY recommended that you work through all the samples before~
** Processing line: ~ # looking at the code in this file.~
** Processing line: ~ # ==========================================================================~
** Processing line: ~~
** Processing line: ~ class TutorialOutputs~
** Processing line: ~ attr_accessor :solids, :sprites, :labels, :lines, :borders~
** Processing line: ~~
** Processing line: ~ def initialize~
** Processing line: ~ @solids = []~
** Processing line: ~ @sprites = []~
** Processing line: ~ @labels = []~
** Processing line: ~ @lines = []~
** Processing line: ~ @borders = []~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ @solids ||= []~
** Processing line: ~ @sprites ||= []~
** Processing line: ~ @labels ||= []~
** Processing line: ~ @lines ||= []~
** Processing line: ~ @borders ||= []~
** Processing line: ~ @solids.each { |p| $gtk.args.outputs.reserved << p.solid }~
** Processing line: ~ @sprites.each { |p| $gtk.args.outputs.reserved << p.sprite }~
** Processing line: ~ @labels.each { |p| $gtk.args.outputs.reserved << p.label }~
** Processing line: ~ @lines.each { |p| $gtk.args.outputs.reserved << p.line }~
** Processing line: ~ @borders.each { |p| $gtk.args.outputs.reserved << p.border }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def clear~
** Processing line: ~ @solids.clear~
** Processing line: ~ @sprites.clear~
** Processing line: ~ @labels.clear~
** Processing line: ~ @borders.clear~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults~
** Processing line: ~ state.reset_button ||=~
** Processing line: ~ state.new_entity(~
** Processing line: ~ :button,~
** Processing line: ~ label: [1190, 68, "RESTART", -2, 0, 0, 0, 0].label,~
** Processing line: ~ background: [1160, 38, 120, 50, 255, 255, 255].solid~
** Processing line: ~ )~
** Processing line: ~ $gtk.log_level = :off~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_reset_button~
** Processing line: ~ return unless state.hello_dragonruby_confirmed~
** Processing line: ~ $gtk.args.outputs.reserved << state.reset_button.background~
** Processing line: ~ $gtk.args.outputs.reserved << state.reset_button.label~
** Processing line: ~ if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.reset_button.background)~
** Processing line: ~ restart_tutorial~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def seperator~
** Processing line: ~ @seperator = "=" * 80~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_intro~
** Processing line: ~ queue_message "Welcome to the DragonRuby GTK primer! Try typing the~
** Processing line: ~ code below and press ENTER:~
** Processing line: ~~
** Processing line: ~ puts \"Hello DragonRuby!\"~
** Processing line: ~ "~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_hello_dragonruby~
** Processing line: ~ return unless console_has? "Hello DragonRuby!"~
** Processing line: ~~
** Processing line: ~ $gtk.args.state.hello_dragonruby_confirmed = true~
** Processing line: ~~
** Processing line: ~ queue_message "Well HELLO to you too!~
** Processing line: ~~
** Processing line: ~ If you ever want to RESTART the tutorial, just click the \"RESTART\"~
** Processing line: ~ button in the bottom right-hand corner.~
** Processing line: ~~
** Processing line: ~ Let's continue shall we? Type the code below and press ENTER:~
** Processing line: ~~
** Processing line: ~ outputs.solids << [910, 200, 100, 100, 255, 0, 0]~
** Processing line: ~ "~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_explain_solid~
** Processing line: ~ return unless $tutorial_outputs.solids.any? {|s| s == [910, 200, 100, 100, 255, 0, 0]}~
** Processing line: ~~
** Processing line: ~ queue_message "Sweet!~
** Processing line: ~~
** Processing line: ~ The code: outputs.solids << [910, 200, 100, 100, 255, 0, 0]~
** Processing line: ~ Does the following:~
** Processing line: ~ 1. GET the place where SOLIDS go: outputs.solids~
** Processing line: ~ 2. Request that a new SOLID be ADDED: <<~
** Processing line: ~ 3. The DEFINITION of a SOLID is the ARRAY:~
** Processing line: ~ [910, 200, 100, 100, 255, 0, 0]~
** Processing line: ~~
** Processing line: ~ GET ADD X Y WIDTH HEIGHT RED GREEN BLUE~
** Processing line: ~ | | | | | | | | |~
** Processing line: ~ | | | | | | | | |~
** Processing line: ~ outputs.solids << [910, 200, 100, 100, 255, 0, 0]~
** Processing line: ~ |_________________________________________|~
** Processing line: ~ |~
** Processing line: ~ |~
** Processing line: ~ ARRAY~
** Processing line: ~~
** Processing line: ~ Now let's create a blue SOLID. Type:~
** Processing line: ~~
** Processing line: ~ outputs.solids << [1010, 200, 100, 100, 0, 0, 255]~
** Processing line: ~ "~
** Processing line: ~~
** Processing line: ~ state.explain_solid_confirmed = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_explain_solid_blue~
** Processing line: ~ return unless state.explain_solid_confirmed~
** Processing line: ~ return unless $tutorial_outputs.solids.any? {|s| s == [1010, 200, 100, 100, 0, 0, 255]}~
** Processing line: ~ state.explain_solid_blue_confirmed = true~
** Processing line: ~~
** Processing line: ~ queue_message "And there is our blue SOLID!~
** Processing line: ~~
** Processing line: ~ The ARRAY is the MOST important thing in DragonRuby GTK.~
** Processing line: ~~
** Processing line: ~ Let's create a SPRITE using an ARRAY:~
** Processing line: ~~
** Processing line: ~ outputs.sprites << [1110, 200, 100, 100, 'sprites/dragon_fly_0.png']~
** Processing line: ~ "~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_explain_tick_count~
** Processing line: ~ return unless $tutorial_outputs.sprites.any? {|s| s == [1110, 200, 100, 100, 'sprites/dragon_fly_0.png']}~
** Processing line: ~ return if $tutorial_outputs.labels.any? {|l| l == [1210, 200, state.tick_count, 255, 255, 255]}~
** Processing line: ~ state.explain_tick_count_confirmed = true~
** Processing line: ~~
** Processing line: ~ queue_message "Look at the cute little dragon!~
** Processing line: ~~
** Processing line: ~ We can create a LABEL with ARRAYS too. Let's create a LABEL showing~
** Processing line: ~ THE PASSAGE OF TIME, which is called TICK_COUNT.~
** Processing line: ~~
** Processing line: ~ outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]~
** Processing line: ~ "~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_explain_mod~
** Processing line: ~ return unless $tutorial_outputs.labels.any? {|l| l == [1210, 200, state.tick_count, 0, 255, 0]}~
** Processing line: ~ state.explain_mod_confirmed = true~
** Processing line: ~ queue_message "~
** Processing line: ~ The code: outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]~
** Processing line: ~ Does the following:~
** Processing line: ~ 1. GET the place where labels go: outputs.labels~
** Processing line: ~ 2. Request that a new label be ADDED: <<~
** Processing line: ~ 3. The DEFINITION of a LABEL is the ARRAY:~
** Processing line: ~ [1210, 200, state.tick_count, 0, 255, 0]~
** Processing line: ~~
** Processing line: ~ GET ADD X Y TEXT RED GREEN BLUE~
** Processing line: ~ | | | | | | | |~
** Processing line: ~ | | | | | | | |~
** Processing line: ~ outputs.labels << [1210, 200, state.tick_count, 0, 255, 0]~
** Processing line: ~ |______________________________________________|~
** Processing line: ~ |~
** Processing line: ~ |~
** Processing line: ~ ARRAY~
** Processing line: ~~
** Processing line: ~ Now let's do some MATH, save the result to STATE, and create a LABEL:~
** Processing line: ~~
** Processing line: ~ state.sprite_frame = state.tick_count.idiv(4).mod(6)~
** Processing line: ~ outputs.labels << [1210, 170, state.sprite_frame, 0, 255, 0]~
** Processing line: ~~
** Processing line: ~ Type the lines above (pressing ENTER after each line).~
** Processing line: ~ "~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_explain_string_interpolation~
** Processing line: ~ return unless state.explain_mod_confirmed~
** Processing line: ~ return unless state.sprite_frame == state.tick_count.idiv(4).mod(6)~
** Processing line: ~ return unless $tutorial_outputs.labels.any? {|l| l == [1210, 170, state.sprite_frame, 0, 255, 0]}~
** Processing line: ~~
** Processing line: ~ queue_message "Here is what the mathematical computation you just typed does:~
** Processing line: ~~
** Processing line: ~ 1. Create an item of STATE named SPRITE_FRAME: state.sprite_frame =~
** Processing line: ~ 2. Set this SPRITE_FRAME to the PASSAGE OF TIME (tick_count),~
** Processing line: ~ DIVIDED EVENLY (idiv) into 4,~
** Processing line: ~ and then compute the REMAINDER (mod) of 6.~
** Processing line: ~~
** Processing line: ~ STATE SPRITE_FRAME PASSAGE OF HOW LONG HOW MANY~
** Processing line: ~ | | TIME TO SHOW IMAGES~
** Processing line: ~ | | | AN IMAGE TO FLIP THROUGH~
** Processing line: ~ | | | | |~
** Processing line: ~ state.sprite_frame = state.tick_count.idiv(4).mod(6)~
** Processing line: ~ | |~
** Processing line: ~ | +- REMAINDER OF DIVIDE~
** Processing line: ~ DIVIDE EVENLY~
** Processing line: ~ (NO DECIMALS)~
** Processing line: ~~
** Processing line: ~ With the information above, we can animate a SPRITE~
** Processing line: ~ using STRING INTERPOLATION: \#{}~
** Processing line: ~ which creates a unique SPRITE_PATH:~
** Processing line: ~~
** Processing line: ~ state.sprite_path = \"sprites/dragon_fly_\#{state.sprite_frame}.png\"~
** Processing line: ~ outputs.labels << [910, 330, \"path: \#{state.sprite_path}\", 0, 255, 0]~
** Processing line: ~ outputs.sprites << [910, 330, 370, 370, state.sprite_path]~
** Processing line: ~~
** Processing line: ~ Type the lines above (pressing ENTER after each line).~
** Processing line: ~ "~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_reprint_on_error~
** Processing line: ~ return unless console.last_command_errored~
** Processing line: ~ puts $gtk.state.messages.last~
** Processing line: ~ puts "\nWhoops! Try again."~
** Processing line: ~ console.last_command_errored = false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_evals~
** Processing line: ~ state.evals ||= []~
** Processing line: ~ if console.last_command && (console.last_command.start_with?("outputs.") || console.last_command.start_with?("state."))~
** Processing line: ~ state.evals << console.last_command~
** Processing line: ~ console.last_command = nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.evals.each do |l|~
** Processing line: ~ Kernel.eval l~
** Processing line: ~ end~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ state.evals = state.evals[0..-2]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $tutorial_outputs ||= TutorialOutputs.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $gtk.log_level = :off~
** Processing line: ~ defaults~
** Processing line: ~ console.show~
** Processing line: ~ $tutorial_outputs.clear~
** Processing line: ~ $tutorial_outputs.solids << [900, 37, 480, 700, 0, 0, 0, 255]~
** Processing line: ~ $tutorial_outputs.borders << [900, 37, 380, 683, 255, 255, 255]~
** Processing line: ~ tick_evals~
** Processing line: ~ $tutorial_outputs.tick~
** Processing line: ~ tick_intro~
** Processing line: ~ tick_hello_dragonruby~
** Processing line: ~ tick_reset_button~
** Processing line: ~ tick_explain_solid~
** Processing line: ~ tick_explain_solid_blue~
** Processing line: ~ tick_reprint_on_error~
** Processing line: ~ tick_explain_tick_count~
** Processing line: ~ tick_explain_mod~
** Processing line: ~ tick_explain_string_interpolation~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def console~
** Processing line: ~ $gtk.console~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def queue_message message~
** Processing line: ~ $gtk.args.state.messages ||= []~
** Processing line: ~ return if $gtk.args.state.messages.include? message~
** Processing line: ~ $gtk.args.state.messages << message~
** Processing line: ~ last_three = [$gtk.console.log[-3], $gtk.console.log[-2], $gtk.console.log[-1]].reject_nil~
** Processing line: ~ $gtk.console.log.clear~
** Processing line: ~ puts seperator~
** Processing line: ~ $gtk.console.log += last_three~
** Processing line: ~ puts seperator~
** Processing line: ~ puts message~
** Processing line: ~ puts seperator~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def console_has? message~
** Processing line: ~ console.log.map(&:upcase).include? "#{message.upcase}\n"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def restart_tutorial~
** Processing line: ~ $tutorial_outputs.clear~
** Processing line: ~ $gtk.console.log.clear~
** Processing line: ~ $gtk.reset~
** Processing line: ~ puts "Starting the tutorial over!"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def state~
** Processing line: ~ $gtk.args.state~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs~
** Processing line: ~ $gtk.args.inputs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def outputs~
** Processing line: ~ $tutorial_outputs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Intermediate Ruby Primer - printing.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Intermediate Ruby Primer - printing.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/01_printing.txt~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Commenting Code~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ #~
** Processing line: ~ # Prefixing text with a pound sign (#) is how you comment code in Ruby. Example:~
** Processing line: ~ #~
** Processing line: ~ # I am commented code. And so are the lines above.~
** Processing line: ~ #~
** Processing line: ~ # I you want more than a quick primer on Ruby, check out https://poignant.guide/. It's~
** Processing line: ~ # an entertaining read. Otherwise, go to the next txt file.~
** Processing line: ~ #~
** Processing line: ~ # Follow along by visiting:~
** Processing line: ~ # https://s3.amazonaws.com/s3.dragonruby.org/dragonruby-gtk-intermediate.mp4~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Printing to the Console:~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ #~
** Processing line: ~ # Every time you save repl.rb file, DragonRuby runs the code within it. Copy this text~
** Processing line: ~ # to repl.rb and save to see Hello World printed to the console.~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts '* RUBY PRIMER: Printing to the console using the ~puts~ function.'~
** Processing line: ~ puts '===='~
** Processing line: ~ puts '======'~
** Processing line: ~ puts '================================'~
** Processing line: ~ puts 'Hello World'~
** Processing line: ~ puts '================================'~
** Processing line: ~ puts '======'~
** Processing line: ~ puts '===='~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Intermediate Ruby Primer - strings.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Intermediate Ruby Primer - strings.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/02_strings.txt~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Strings~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ #~
** Processing line: ~ # Here is how you work with strings in Ruby. Take the text~
** Processing line: ~ # in this file and paste it into repl.rb and save:~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts '* RUBY PRIMER: strings'~
** 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: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Intermediate Ruby Primer - numbers.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Intermediate Ruby Primer - numbers.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/03_numbers.txt~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Numerics~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ #~
** Processing line: ~ # Here is how you work with numbers in Ruby. Take the text~
** Processing line: ~ # in this file and paste it into repl.rb and save:~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts '* RUBY PRIMER: Fixnum and Floats'~
** 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: ~ puts ''~
** Processing line: ~~
** 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: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Intermediate Ruby Primer - booleans.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Intermediate Ruby Primer - booleans.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/04_booleans.txt~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Booleans~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ #~
** Processing line: ~ # Here is how you work with numbers in Ruby. Take the text~
** Processing line: ~ # in this file and paste it into repl.rb and save:~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts '* RUBY PRIMER: TrueClass, FalseClass, NilClass (truthy / falsey values)'~
** Processing line: ~ puts "Anything that *isn't* false or nil is true."~
** Processing line: ~~
** 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: ~~
** Processing line: ~ d = false~
** Processing line: ~ puts "The value if d is #{d}. The type for d is #{d.class}."~
** Processing line: ~~
** Processing line: ~ if !d~
** Processing line: ~ puts "This if statement ran because d is falsey, using the not operator (!)."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ e = nil~
** Processing line: ~ puts "Nil is also considered falsey. The value of e is: #{e} (a blank string when printed). Which is of type #{e.class}."~
** Processing line: ~~
** Processing line: ~ if !e~
** Processing line: ~ puts "This if statement ran because e is nil and the if statement applied the NOT operator. !e yields a type of #{(!e).class}."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Intermediate Ruby Primer - conditionals.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Intermediate Ruby Primer - conditionals.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/05_conditionals.txt~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Conditionals~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ #~
** Processing line: ~ # Here is how you create conditionals in Ruby. Take the text~
** Processing line: ~ # in this file and paste it into repl.rb and save:~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "* RUBY PRIMER: Conditionals"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # if~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: 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: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # if/else~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: if/else statement"~
** Processing line: ~ i_am_false = false~
** 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: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # if/elsif/else~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: if/elsif/else statement"~
** Processing line: ~ i_am_false = false~
** Processing line: ~ i_am_true = true~
** 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: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # case~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO case statement"~
** Processing line: ~ i_am_one = 1 # change this value to see different results~
** Processing line: ~~
** Processing line: ~ case i_am_one~
** Processing line: ~ when 10~
** Processing line: ~ puts "the value of i_am_one is 10"~
** Processing line: ~ when 9~
** Processing line: ~ puts "the value of i_am_one is 9"~
** Processing line: ~ when 5~
** Processing line: ~ puts "the value of i_am_one is 5"~
** Processing line: ~ when 1~
** Processing line: ~ puts "the value of i_am_one is 1"~
** Processing line: ~ else~
** Processing line: ~ puts "Value wasn't cased."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # comparison operators~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: Different types of comparisons"~
** Processing line: ~ if 4 == 4~
** Processing line: ~ puts "4 equals 4 (==)"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if 4 != 3~
** Processing line: ~ puts "4 does not equal 3 (!=)"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if 3 < 4~
** Processing line: ~ puts "3 is less than 4 (<)"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if 4 > 3~
** Processing line: ~ puts "4 is greater than 3 (>)"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # and/or conditionals~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: AND, OR operator (&&, ||)"~
** Processing line: ~ if (4 > 3) || (3 < 4) || false~
** Processing line: ~ puts "print this if 4 is greater than 3 OR 3 is less than 4 OR false is true (||)"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if (4 > 3) && (3 < 4)~
** Processing line: ~ puts "print this if 4 is greater than 3 AND 3 is less than 4 (&&)"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Intermediate Ruby Primer - looping.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Intermediate Ruby Primer - looping.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/06_looping.txt~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Looping~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ #~
** Processing line: ~ # Looping looks a whole lot different than other languages.~
** Processing line: ~ # But it's pretty awesome when you get used to it.~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "* RUBY PRIMER: Loops"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # times~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: ~Numeric#times~ (for loop)"~
** Processing line: ~ 3.times do |i|~
** Processing line: ~ puts i~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # foreach~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: ~Array#each~ (for each loop)"~
** Processing line: ~ array = ["a", "b", "c", "d"]~
** Processing line: ~ array.each do |char|~
** Processing line: ~ puts char~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ puts "** INFO: ~Array#each_with_index~ (for each loop)"~
** Processing line: ~ array = ["a", "b", "c", "d"]~
** Processing line: ~ array.each do |char, i|~
** Processing line: ~ puts "index #{i}: #{char}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # ranges~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: range block exclusive (three dots)"~
** Processing line: ~ (0...3).each do |i|~
** Processing line: ~ puts i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ puts "** INFO: range block inclusive (two dots)"~
** Processing line: ~ (0..3).each do |i|~
** Processing line: ~ puts i~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Intermediate Ruby Primer - functions.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Intermediate Ruby Primer - functions.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/07_functions.txt~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Functions~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ # The last statement of a function is implictly returned. Parenthesis for functions~
** Processing line: ~ # are optional as long as the statement can be envaluated disambiguously.~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "* RUBY PRIMER: Functions"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Functions single parameter~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "* INFO: Function with one parameter"~
** Processing line: ~~
** Processing line: ~ # function definition~
** Processing line: ~ def add_one_to n~
** Processing line: ~ n + 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Parenthesis are optional in Ruby as long as the~
** Processing line: ~ # parsing is disambiguous. Here are a couple of variations.~
** Processing line: ~ # Generally speaking, don't put parenthesis is you don't have to.~
** Processing line: ~~
** Processing line: ~ # Conventional Usage of Parenthesis.~
** Processing line: ~ puts add_one_to(3)~
** Processing line: ~~
** Processing line: ~ # DragonRuby's recommended use of parenthesis (inner function has parenthesis).~
** Processing line: ~ puts (add_one_to 3)~
** Processing line: ~~
** Processing line: ~ # Full parens.~
** Processing line: ~ puts(add_one_to(3))~
** Processing line: ~~
** Processing line: ~ # Outer function has parenthesis~
** Processing line: ~ puts(add_one_to 3)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Functions with default parameter values~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "* INFO: 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 the argument three yields: #{function_with_default_value 3}"~
** Processing line: ~ puts "Passing no argument yields: #{function_with_default_value}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Nil default parameter value and ||= operator.~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "* INFO: Using the OR EQUAL operator (||=)"~
** Processing line: ~ def function_with_nil_default_with_local a = nil~
** Processing line: ~ result = a~
** Processing line: ~ result ||= "DEFAULT_VALUE_OF_A_IS_NIL_OR_FALSE"~
** Processing line: ~ "value is #{result}."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ puts "Passing 'hi' as the argument yields: #{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: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Intermediate Ruby Primer - arrays.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Intermediate Ruby Primer - arrays.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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/08_arrays.txt~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Arrays~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ # Arrays are incredibly powerful in Ruby. Learn to use them well.~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "* RUBY PRIMER: ARRAYS"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Enumerable ranges and .to_a~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: 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: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Finding elements~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: Finding elements in an array using ~Array#find_all~."~
** Processing line: ~ puts "Create a new array that only contains even numbers from the previous array."~
** Processing line: ~~
** 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: ~~
** Processing line: ~ puts evens~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Rejecting elements~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: Removing elements in an array using ~Array#reject~."~
** Processing line: ~ puts "Create a new array that rejects odd numbers."~
** Processing line: ~~
** 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: ~~
** Processing line: ~ puts also_even~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Array transform using the map function.~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: Creating new derived values from an array using ~Array#map~."~
** Processing line: ~ puts "Create an array that doubles every number."~
** Processing line: ~~
** 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: ~~
** Processing line: ~ puts doubled~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Combining array functions.~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: Combining ~Array#find_all~ along with ~Array#map~."~
** Processing line: ~ puts "Create an array that selects only odd numbers and then multiply those by 10."~
** Processing line: ~~
** 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: ~~
** Processing line: ~ puts odd_doubled~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Product function.~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: Create all combinations of array values using ~Array#product~."~
** Processing line: ~ puts "All two-item pairs 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: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Uniq and sort function.~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: Providing uniq values using ~Array#uniq~ and ~Array#sort~."~
** Processing line: ~ puts "All uniq combinations of numbers regardless of order."~
** Processing line: ~ puts "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: ~ # Example of an advanced array transform.~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: Advanced chaining. Combining ~Array's ~map~, ~find_all~, ~sort~, and ~sort_by~."~
** Processing line: ~ puts "All unique Pythagorean Triples between 1 and 100 sorted by area of the triangle."~
** Processing line: ~~
** Processing line: ~ one_to_hundred = (1..100).to_a~
** Processing line: ~~
** 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, _|~
** Processing line: ~ puts "(#{width}, #{height}, #{hypotenuse})"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Example of an sorting.~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~ repl do~
** Processing line: ~ puts "** INFO: Implementing a custom sort function that operates on the ~Hash~ datatype."~
** Processing line: ~~
** Processing line: ~ things_to_sort = [~
** Processing line: ~ { type: :background, order: 1 },~
** Processing line: ~ { type: :foreground, order: 1 },~
** Processing line: ~ { type: :foreground, order: 2 }~
** Processing line: ~ ]~
** Processing line: ~ puts "*** Original array."~
** Processing line: ~ puts things_to_sort~
** Processing line: ~~
** Processing line: ~ puts "*** Simple sort using key."~
** Processing line: ~ # For a simple sort, you can use sort_by~
** Processing line: ~ results = things_to_sort.sort_by do |hash|~
** Processing line: ~ hash[:order]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ puts results~
** Processing line: ~~
** Processing line: ~ puts "*** Custom sort."~
** Processing line: ~ puts "**** Sorting process."~
** Processing line: ~ # for a more complicated sort, you can provide a block that returns~
** Processing line: ~ # -1, 0, 1 for a left and right operand~
** Processing line: ~ results = things_to_sort.sort do |l, r|~
** Processing line: ~ sort_result = 0~
** Processing line: ~ puts "here is l: #{l}"~
** Processing line: ~ puts "here is r: #{r || "nil"}"~
** Processing line: ~ # if either value is nil/false return 0~
** Processing line: ~ if !l || !r~
** Processing line: ~ sort_result = 0~
** Processing line: ~ # if the type of "left" is background and the~
** Processing line: ~ # type of "right" is foreground, then return~
** Processing line: ~ # -1 (which means "left" is less than "right"~
** Processing line: ~ elsif l[:type] == :background && r[:type] == :foreground~
** Processing line: ~ sort_result = -1~
** Processing line: ~ # if the type of "left" is foreground and the~
** Processing line: ~ # type of "right" is background, then return~
** Processing line: ~ # 1 (which means "left" is greater than "right"~
** Processing line: ~ elsif l[:type] == :foreground && r[:type] == :background~
** Processing line: ~ sort_result = 1~
** Processing line: ~ # if "left" and "right"'s type are the same, then~
** Processing line: ~ # use the order as the tie breaker~
** Processing line: ~ elsif l[:order] < r[:order]~
** Processing line: ~ sort_result = -1~
** Processing line: ~ elsif l[:order] > r[:order]~
** Processing line: ~ sort_result = 1~
** Processing line: ~ # returning 0 means both values are equal~
** Processing line: ~ else~
** Processing line: ~ sort_result = 0~
** Processing line: ~ end~
** Processing line: ~ sort_result~
** Processing line: ~ end.to_a~
** Processing line: ~~
** Processing line: ~ puts "**** Sort result."~
** Processing line: ~ puts results~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # ====================================================================================~
** Processing line: ~ # Api documention for Array that is worth commiting to memory because arrays are so~
** Processing line: ~ # awesome in Ruby: https://docs.ruby-lang.org/en/2.0.0/Array.html~
** Processing line: ~ # ====================================================================================~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Intermediate Ruby Primer - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Intermediate Ruby Primer - 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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/main.rb~
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.labels << [640, 380, "Open repl.rb in the text editor of your choice and follow the document.", 0, 1]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Learn Ruby Optional - Intermediate Ruby Primer - repl.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Learn Ruby Optional - Intermediate Ruby Primer - 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/00_learn_ruby_optional/00_intermediate_ruby_primer/app/repl.rb~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rendering Basics - Labels - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rendering Basics - Labels - 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/01_rendering_basics/01_labels/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in a previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. Values in this array generate labels~
** Processing line: ~ the screen.~
** Processing line: ~ - args.grid.(left|right|top|bottom): Pixel value for the boundaries of the virtual~
** Processing line: ~ 720 p screen (Dragon Ruby Game Toolkits's virtual resolution is always 1280x720).~
** Processing line: ~ - Numeric#shift_(left|right|up|down): Shifts the Numeric in the correct direction~
** Processing line: ~ by adding or subracting.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # Labels are used to represent text elements in DragonRuby~
** Processing line: ~~
** Processing line: ~ # An example of creating a label is:~
** Processing line: ~ # args.outputs.labels << [320, 640, "Example", 3, 1, 255, 0, 0, 200, manaspace.ttf]~
** Processing line: ~~
** Processing line: ~ # The code above does the following:~
** Processing line: ~ # 1. GET the place where labels go: args.outputs.labels~
** Processing line: ~ # 2. Request a new LABEL be ADDED: <<~
** Processing line: ~ # 3. The DEFINITION of a SOLID is the ARRAY:~
** Processing line: ~ # [320, 640, "Example", 3, 1, 255, 0, 0, 200, manaspace.ttf]~
** Processing line: ~ # [ X , Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # The tick method is called by DragonRuby every frame~
** Processing line: ~ # args contains all the information regarding the game.~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows different version of label sizes and alignments. And how to use hashes instead of arrays."~
** Processing line: ~ # Here are some examples of simple labels, with the minimum number of parameters~
** Processing line: ~ # Note that the default values for the other parameters are 0, except for Alpha which is 255 and Font Style which is the default font~
** Processing line: ~ args.outputs.labels << [400, 620, "Here is a label with just an x, y, and text"]~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << [args.grid.left.shift_right(5), args.grid.top.shift_down(5), "This is a label located at the top left."]~
** Processing line: ~ args.outputs.labels << [args.grid.left.shift_right(5), args.grid.bottom.shift_up(30), "This is a label located at the bottom left."]~
** Processing line: ~ args.outputs.labels << [args.grid.right.shift_left(420), args.grid.top.shift_down(5), "This is a label located at the top right."]~
** Processing line: ~ args.outputs.labels << [args.grid.right.shift_left(440), args.grid.bottom.shift_up(30), "This is a label located at the bottom right."]~
** Processing line: ~~
** Processing line: ~ # Demonstration of the Size Parameter~
** Processing line: ~ args.outputs.labels << [175 + 150, 610 - 50, "Smaller label.", -2]~
** Processing line: ~ args.outputs.labels << [175 + 150, 580 - 50, "Small label.", -1]~
** Processing line: ~ args.outputs.labels << [175 + 150, 550 - 50, "Medium label.", 0]~
** Processing line: ~ args.outputs.labels << [175 + 150, 520 - 50, "Large label.", 1]~
** Processing line: ~ args.outputs.labels << [175 + 150, 490 - 50, "Larger label.", 2]~
** Processing line: ~~
** Processing line: ~ # Demonstration of the Align Parameter~
** Processing line: ~ args.outputs.labels << [260 + 150, 345 - 50, "Left aligned.", 0, 2]~
** Processing line: ~ args.outputs.labels << [260 + 150, 325 - 50, "Center aligned.", 0, 1]~
** Processing line: ~ args.outputs.labels << [260 + 150, 305 - 50, "Right aligned.", 0, 0]~
** Processing line: ~~
** Processing line: ~ # Demonstration of the RGBA parameters~
** Processing line: ~ args.outputs.labels << [600 + 150, 590 - 50, "Red Label.", 0, 0, 255, 0, 0]~
** Processing line: ~ args.outputs.labels << [600 + 150, 570 - 50, "Green Label.", 0, 0, 0, 255, 0]~
** Processing line: ~ args.outputs.labels << [600 + 150, 550 - 50, "Blue Label.", 0, 0, 0, 0, 255]~
** Processing line: ~ args.outputs.labels << [600 + 150, 530 - 50, "Faded Label.", 0, 0, 0, 0, 0, 128]~
** Processing line: ~~
** Processing line: ~ # Demonstration of the Font parameter~
** Processing line: ~ # In order to use a font of your choice, add its ttf file to the project folder, where the app folder is~
** Processing line: ~ args.outputs.labels << [690 + 150, 330 - 20, "Custom font (Array)", 0, 1, 125, 0, 200, 255, "manaspc.ttf" ]~
** Processing line: ~ args.outputs.primitives << { x: 690 + 150,~
** Processing line: ~ y: 330 - 50,~
** Processing line: ~ text: "Custom font (Hash)",~
** Processing line: ~ size_enum: 0,~
** Processing line: ~ alignment_enum: 1,~
** Processing line: ~ r: 125,~
** Processing line: ~ g: 0,~
** Processing line: ~ b: 200,~
** Processing line: ~ a: 255,~
** Processing line: ~ font: "manaspc.ttf" }.label~
** Processing line: ~~
** Processing line: ~ # Primitives can hold anything, and can be given a label in the following forms~
** Processing line: ~ args.outputs.primitives << [690 + 150, 330 - 80, "Custom font (.primitives Array)", 0, 1, 125, 0, 200, 255, "manaspc.ttf" ].label~
** Processing line: ~~
** Processing line: ~ args.outputs.primitives << { x: 690 + 150,~
** Processing line: ~ y: 330 - 110,~
** Processing line: ~ text: "Custom font (.primitives Hash)",~
** Processing line: ~ size_enum: 0,~
** Processing line: ~ alignment_enum: 1,~
** Processing line: ~ r: 125,~
** Processing line: ~ g: 0,~
** Processing line: ~ b: 200,~
** Processing line: ~ a: 255,~
** Processing line: ~ font: "manaspc.ttf" }.label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rendering Basics - Lines - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rendering Basics - Lines - 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/01_rendering_basics/02_lines/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in a previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.outputs.lines: An array. Values in this array generate lines on~
** Processing line: ~ the screen.~
** Processing line: ~ - args.state.tick_count: This property contains an integer value that~
** Processing line: ~ represents the current frame. GTK renders at 60 FPS. A value of 0~
** Processing line: ~ for args.state.tick_count represents the initial load of the game.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # The parameters required for lines are:~
** Processing line: ~ # 1. The initial point (x, y)~
** Processing line: ~ # 2. The end point (x2, y2)~
** Processing line: ~ # 3. The rgba values for the color and transparency (r, g, b, a)~
** Processing line: ~~
** Processing line: ~ # An example of creating a line would be:~
** Processing line: ~ # args.outputs.lines << [100, 100, 300, 300, 255, 0, 255, 255]~
** Processing line: ~~
** Processing line: ~ # This would create a line from (100, 100) to (300, 300)~
** Processing line: ~ # The RGB code (255, 0, 255) would determine its color, a purple~
** Processing line: ~ # It would have an Alpha value of 255, making it completely opaque~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows how to create lines."~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << [480, 620, "Lines (x, y, x2, y2, r, g, b, a)"]~
** Processing line: ~~
** Processing line: ~ # Some simple lines~
** Processing line: ~ args.outputs.lines << [380, 450, 675, 450]~
** Processing line: ~ args.outputs.lines << [380, 410, 875, 410]~
** Processing line: ~~
** Processing line: ~ # These examples utilize args.state.tick_count to change the length of the lines over time~
** Processing line: ~ # args.state.tick_count is the ticks that have occurred in the game~
** Processing line: ~ # This is accomplished by making either the starting or ending point based on the args.state.tick_count~
** Processing line: ~ args.outputs.lines << [380, 370, 875, 370, args.state.tick_count % 255, 0, 0, 255]~
** Processing line: ~ args.outputs.lines << [380, 330 - args.state.tick_count % 25, 875, 330, 0, 0, 0, 255]~
** Processing line: ~ args.outputs.lines << [380 + args.state.tick_count % 400, 290, 875, 290, 0, 0, 0, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rendering Basics - Solids Borders - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rendering Basics - Solids Borders - 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/01_rendering_basics/03_solids_borders/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in a previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.outputs.solids: An array. Values in this array generate~
** Processing line: ~ solid/filled rectangles on the screen.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # Rects are outputted in DragonRuby as rectangles~
** Processing line: ~ # If filled in, they are solids~
** Processing line: ~ # If hollow, they are borders~
** Processing line: ~~
** Processing line: ~ # Solids are added to args.outputs.solids~
** Processing line: ~ # Borders are added to args.outputs.borders~
** Processing line: ~~
** Processing line: ~ # The parameters required for rects are:~
** Processing line: ~ # 1. The upper right corner (x, y)~
** Processing line: ~ # 2. The width (w)~
** Processing line: ~ # 3. The height (h)~
** Processing line: ~ # 4. The rgba values for the color and transparency (r, g, b, a)~
** Processing line: ~~
** Processing line: ~ # Here is an example of a rect definition:~
** Processing line: ~ # [100, 100, 400, 500, 0, 255, 0, 180]~
** Processing line: ~~
** Processing line: ~ # The example would create a rect from (100, 100)~
** Processing line: ~ # Extending 400 pixels across the x axis~
** Processing line: ~ # and 500 pixels across the y axis~
** Processing line: ~ # The rect would be green (0, 255, 0)~
** Processing line: ~ # and mostly opaque with some transparency (180)~
** Processing line: ~~
** Processing line: ~ # Whether the rect would be filled or not depends on if~
** Processing line: ~ # it is added to args.outputs.solids or args.outputs.borders~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows how to create solid squares."~
** Processing line: ~ args.outputs.labels << [460, 600, "Solids (x, y, w, h, r, g, b, a)"]~
** Processing line: ~ args.outputs.solids << [470, 520, 50, 50]~
** Processing line: ~ args.outputs.solids << [530, 520, 50, 50, 0, 0, 0]~
** Processing line: ~ args.outputs.solids << [590, 520, 50, 50, 255, 0, 0]~
** Processing line: ~ args.outputs.solids << [650, 520, 50, 50, 255, 0, 0, 128]~
** Processing line: ~ args.outputs.solids << [710, 520, 50, 50, 0, 0, 0, 128 + args.state.tick_count % 128]~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << [460, 400, "Borders (x, y, w, h, r, g, b, a)"]~
** Processing line: ~ args.outputs.borders << [470, 320, 50, 50]~
** Processing line: ~ args.outputs.borders << [530, 320, 50, 50, 0, 0, 0]~
** Processing line: ~ args.outputs.borders << [590, 320, 50, 50, 255, 0, 0]~
** Processing line: ~ args.outputs.borders << [650, 320, 50, 50, 255, 0, 0, 128]~
** Processing line: ~ args.outputs.borders << [710, 320, 50, 50, 0, 0, 0, 128 + args.state.tick_count % 128]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rendering Basics - Sprites - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rendering Basics - Sprites - 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/01_rendering_basics/04_sprites/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in a previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.outputs.sprites: An array. Values in this array generate~
** Processing line: ~ sprites on the screen. The location of the sprite is assumed to~
** Processing line: ~ be under the mygame/ directory (the exception being dragonruby.png).~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # For all other display outputs, Sprites are your solution~
** Processing line: ~ # Sprites import images and display them with a certain rectangular area~
** Processing line: ~ # The image can be of any usual format and should be located within the folder,~
** Processing line: ~ # similar to additional fonts.~
** Processing line: ~~
** Processing line: ~ # Sprites have the following parameters~
** Processing line: ~ # Rectangular area (x, y, width, height)~
** Processing line: ~ # The image (path)~
** Processing line: ~ # Rotation (angle)~
** Processing line: ~ # Alpha (a)~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows how to render a sprite. Set its alpha, and rotate it."~
** Processing line: ~ args.outputs.labels << [460, 600, "Sprites (x, y, w, h, path, angle, a)"]~
** Processing line: ~ args.outputs.sprites << [460, 470, 128, 101, 'dragonruby.png']~
** Processing line: ~ args.outputs.sprites << [610, 470, 128, 101, 'dragonruby.png', args.state.tick_count % 360]~
** Processing line: ~ args.outputs.sprites << [760, 470, 128, 101, 'dragonruby.png', 0, args.state.tick_count % 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rendering Basics - Sounds - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rendering Basics - Sounds - 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/01_rendering_basics/05_sounds/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs Listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - sample: Chooses random element from array.~
** Processing line: ~ In this sample app, the target note is set by taking a sample from the collection~
** Processing line: ~ of available notes.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~ - args.grid.(left|right|top|bottom): Pixel value for the boundaries of the virtual~
** Processing line: ~ 720 p screen (Dragon Ruby Game Toolkits's virtual resolution is always 1280x720).~
** Processing line: ~~
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
** Processing line: ~ For example, if we want to create a new button, we would declare it as a new entity and~
** Processing line: ~ then define its properties.~
** Processing line: ~~
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
** Processing line: ~~
** Processing line: ~ - first: Returns the first element of an array.~
** Processing line: ~~
** Processing line: ~ - inside_rect: Returns true or false depending on if the point is inside the rect.~
** Processing line: ~~
** Processing line: ~ - to_sym: Returns symbol corresponding to string. Will create a symbol if it does~
** Processing line: ~ not already exist.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app allows users to test their musical skills by matching the piano sound that plays in each~
** Processing line: ~ # level to the correct note.~
** Processing line: ~~
** Processing line: ~ # Runs all the methods necessary for the game to function properly.~
** Processing line: ~ def tick args~
** Processing line: ~ defaults args~
** Processing line: ~ render args~
** Processing line: ~ calc args~
** Processing line: ~ input_mouse args~
** Processing line: ~ tick_instructions args, "Sample app shows how to play sounds. args.outputs.sounds << \"path_to_wav.wav\""~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values and creates empty collections~
** Processing line: ~ # Initialization happens in the first frame only~
** Processing line: ~ def defaults _~
** Processing line: ~ _.state.notes ||= []~
** Processing line: ~ _.state.click_feedbacks ||= []~
** Processing line: ~ _.state.current_level ||= 1~
** Processing line: ~ _.state.times_wrong ||= 0 # when game starts, user hasn't guessed wrong yet~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Uses a label to display current level, and shows the score~
** Processing line: ~ # Creates a button to play the sample note, and displays the available notes that could be a potential match~
** Processing line: ~ def render _~
** Processing line: ~~
** Processing line: ~ # grid.w_half positions the label in the horizontal center of the screen.~
** Processing line: ~ _.outputs.labels << [_.grid.w_half, _.grid.top.shift_down(40), "Hole #{_.state.current_level} of 9", 0, 1, 0, 0, 0]~
** Processing line: ~~
** Processing line: ~ render_score _ # shows score on screen~
** Processing line: ~~
** Processing line: ~ if _.state.game_over # if game is over, a "play again" button is shown~
** Processing line: ~ # Calculations ensure that Play Again label is displayed in center of border~
** Processing line: ~ # Remove calculations from y parameters and see what happens to border and label placement~
** Processing line: ~ _.state.play_again_border ||= _.state.with_meta([560, _.grid.h * 3 / 4 - 40, 160, 60], 'again') # array definition, text/title~
** Processing line: ~ _.outputs.labels << [_.grid.w_half, _.grid.h * 3 / 4, "Play Again", 0, 1, 0, 0, 0] # outputs label~
** Processing line: ~ _.outputs.borders << _.state.play_again_border # outputs border~
** Processing line: ~ else # otherwise, if game is not over~
** Processing line: ~ # Calculations ensure that label appears in center of border~
** Processing line: ~ _.state.play_note_border ||= _.state.with_meta([560, _.grid.h * 3 / 4 - 40, 160, 60], 'play') # array definition, text/title~
** Processing line: ~ _.outputs.labels << [_.grid.w_half, _.grid.h * 3 / 4, "Play Note ##{_.state.current_level}", 0, 1, 0, 0, 0] # outputs label~
** Processing line: ~ _.outputs.borders << _.state.play_note_border # outputs border~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return if _.state.game_over # return if game is over~
** Processing line: ~~
** Processing line: ~ _.outputs.labels << [_.grid.w_half, 400, "I think the note is a(n)...", 0, 1, 0, 0, 0] # outputs label~
** Processing line: ~~
** Processing line: ~ # Shows all of the available notes that can be potential matches.~
** Processing line: ~ available_notes.each_with_index do |note, i|~
** Processing line: ~ _.state.notes[i] ||= piano_button(_, note, i + 1) # calls piano_button method on each note (creates label and border)~
** Processing line: ~ _.outputs.labels << _.state.notes[i].label # outputs note on screen with a label and a border~
** Processing line: ~ _.outputs.borders << _.state.notes[i].border~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Shows whether or not the user is correct by filling the screen with either red or green~
** Processing line: ~ _.outputs.solids << _.state.click_feedbacks.map { |c| c.solid }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Shows the score (number of times the user guesses wrong) onto the screen using labels.~
** Processing line: ~ def render_score _~
** Processing line: ~ if _.state.times_wrong == 0 # if the user has guessed wrong zero times, the score is par~
** Processing line: ~ _.outputs.labels << [_.grid.w_half, _.grid.top.shift_down(80), "Score: PAR", 0, 1, 0, 0, 0]~
** Processing line: ~ else # otherwise, number of times the user has guessed wrong is shown~
** Processing line: ~ _.outputs.labels << [_.grid.w_half, _.grid.top.shift_down(80), "Score: +#{_.state.times_wrong}", 0, 1, 0, 0, 0] # shows score using string interpolation~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the target note for the level and performs calculations on click_feedbacks.~
** Processing line: ~ def calc _~
** Processing line: ~ _.state.target_note ||= available_notes.sample # chooses a note from available_notes collection as target note~
** Processing line: ~ _.state.click_feedbacks.each { |c| c.solid[-1] -= 5 } # remove this line and solid color will remain on screen indefinitely~
** Processing line: ~ # comment this line out and the solid color will keep flashing on screen instead of being removed from click_feedbacks collection~
** Processing line: ~ _.state.click_feedbacks.reject! { |c| c.solid[-1] <= 0 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Uses input from the user to play the target note, as well as the other notes that could be a potential match.~
** Processing line: ~ def input_mouse _~
** Processing line: ~ return unless _.inputs.mouse.click # return unless the mouse is clicked~
** Processing line: ~~
** Processing line: ~ # finds button that was clicked by user~
** Processing line: ~ button_clicked = _.outputs.borders.find_all do |b| # go through borders collection to find all borders that meet requirements~
** Processing line: ~ _.inputs.mouse.click.point.inside_rect? b # find button border that mouse was clicked inside of~
** Processing line: ~ end.reject {|b| !_.state.meta(b)}.first # reject, return first element~
** Processing line: ~~
** Processing line: ~ return unless button_clicked # return unless button_clicked as a value (a button was clicked)~
** Processing line: ~~
** Processing line: ~ queue_click_feedback _, # calls queue_click_feedback method on the button that was clicked~
** Processing line: ~ button_clicked.x,~
** Processing line: ~ button_clicked.y,~
** Processing line: ~ button_clicked.w,~
** Processing line: ~ button_clicked.h,~
** Processing line: ~ 150, 100, 200 # sets color of button to shade of purple~
** Processing line: ~~
** Processing line: ~ if _.state.meta(button_clicked) == 'play' # if "play note" button is pressed~
** Processing line: ~ _.outputs.sounds << "sounds/#{_.state.target_note}.wav" # sound of target note is output~
** Processing line: ~ elsif _.state.meta(button_clicked) == 'again' # if "play game again" button is pressed~
** Processing line: ~ _.state.target_note = nil # no target note~
** Processing line: ~ _.state.current_level = 1 # starts at level 1 again~
** Processing line: ~ _.state.times_wrong = 0 # starts off with 0 wrong guesses~
** Processing line: ~ _.state.game_over = false # the game is not over (because it has just been restarted)~
** Processing line: ~ else # otherwise if neither of those buttons were pressed~
** Processing line: ~ _.outputs.sounds << "sounds/#{_.state.meta(button_clicked)}.wav" # sound of clicked note is played~
** Processing line: ~ if _.state.meta(button_clicked).to_sym == _.state.target_note # if clicked note is target note~
** Processing line: ~ _.state.target_note = nil # target note is emptied~
** Processing line: ~~
** Processing line: ~ if _.state.current_level < 9 # if game hasn't reached level 9~
** Processing line: ~ _.state.current_level += 1 # game goes to next level~
** Processing line: ~ else # otherwise, if game has reached level 9~
** Processing line: ~ _.state.game_over = true # the game is over~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ queue_click_feedback _, 0, 0, _.grid.w, _.grid.h, 100, 200, 100 # green shown if user guesses correctly~
** Processing line: ~ else # otherwise, if clicked note is not target note~
** Processing line: ~ _.state.times_wrong += 1 # increments times user guessed wrong~
** Processing line: ~ queue_click_feedback _, 0, 0, _.grid.w, _.grid.h, 200, 100, 100 # red shown is user guesses wrong~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates a collection of all of the available notes as symbols~
** Processing line: ~ def available_notes~
** Processing line: ~ [:C3, :D3, :E3, :F3, :G3, :A3, :B3, :C4]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates buttons for each note, and sets a label (the note's name) and border for each note's button.~
** Processing line: ~ def piano_button _, note, position~
** Processing line: ~ _.state.new_entity(:button) do |b| # declares button as new entity~
** Processing line: ~ b.label = [460 + 40.mult(position), _.grid.h * 0.4, "#{note}", 0, 1, 0, 0, 0] # label definition~
** Processing line: ~ b.border = _.state.with_meta([460 + 40.mult(position) - 20, _.grid.h * 0.4 - 32, 40, 40], note) # border definition, text/title; 20 subtracted so label is in center of border~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Color of click feedback changes depending on what button was clicked, and whether the guess is right or wrong~
** Processing line: ~ # If a button is clicked, the inside of button is purple (see input_mouse method)~
** Processing line: ~ # If correct note is clicked, screen turns green~
** Processing line: ~ # If incorrect note is clicked, screen turns red (again, see input_mouse method)~
** Processing line: ~ def queue_click_feedback _, x, y, w, h, *color~
** Processing line: ~ _.state.click_feedbacks << _.state.new_entity(:click_feedback) do |c| # declares feedback as new entity~
** Processing line: ~ c.solid = [x, y, w, h, *color, 255] # sets color~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Input Basics - Keyboard - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Input Basics - Keyboard - 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/02_input_basics/01_keyboard/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in a previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.inputs.keyboard.key_up.KEY: The value of the properties will be set~
** Processing line: ~ to the frame that the key_up event occurred (the frame correlates~
** Processing line: ~ to args.state.tick_count). Otherwise the value will be nil. For a~
** Processing line: ~ full listing of keys, take a look at mygame/documentation/06-keyboard.md.~
** Processing line: ~ - args.state.PROPERTY: The state property on args is a dynamic~
** Processing line: ~ structure. You can define ANY property here with ANY type of~
** Processing line: ~ arbitrary nesting. Properties defined on args.state will be retained~
** Processing line: ~ across frames. If you attempt access a property that doesn't exist~
** Processing line: ~ on args.state, it will simply return nil (no exception will be thrown).~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # Along with outputs, inputs are also an essential part of video game development~
** Processing line: ~ # DragonRuby can take input from keyboards, mouse, and controllers.~
** Processing line: ~ # This sample app will cover keyboard input.~
** Processing line: ~~
** Processing line: ~ # args.inputs.keyboard.key_up.a will check to see if the a key has been pressed~
** Processing line: ~ # This will work with the other keys as well~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows how keyboard events are registered and accessed.", 360~
** Processing line: ~ # Notice how small_font accounts for all the remaining parameters~
** Processing line: ~ args.outputs.labels << [460, row_to_px(args, 0), "Current game time: #{args.state.tick_count}", small_font]~
** Processing line: ~ args.outputs.labels << [460, row_to_px(args, 2), "Keyboard input: args.inputs.keyboard.key_up.h", small_font]~
** Processing line: ~ args.outputs.labels << [460, row_to_px(args, 3), "Press \"h\" on the keyboard.", small_font]~
** Processing line: ~~
** Processing line: ~ # Input on a specifc key can be found through args.inputs.keyboard.key_up followed by the key~
** Processing line: ~ if args.inputs.keyboard.key_up.h~
** Processing line: ~ args.state.h_pressed_at = args.state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # This code simplifies to if args.state.h_pressed_at has not been initialized, set it to false~
** Processing line: ~ args.state.h_pressed_at ||= false~
** Processing line: ~~
** Processing line: ~ if args.state.h_pressed_at~
** Processing line: ~ args.outputs.labels << [460, row_to_px(args, 4), "\"h\" was pressed at time: #{args.state.h_pressed_at}", small_font]~
** Processing line: ~ else~
** Processing line: ~ args.outputs.labels << [460, row_to_px(args, 4), "\"h\" has never been pressed.", small_font]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ tick_help_text args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def small_font~
** Processing line: ~ # This method provides some values for the construction of labels~
** Processing line: ~ # Specifically, Size, Alignment, & RGBA~
** Processing line: ~ # This makes it so that custom parameters don't have to be repeatedly typed.~
** Processing line: ~ # Additionally "small_font" provides programmers with more information than some numbers~
** Processing line: ~ [-2, 0, 0, 0, 0, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def row_to_px args, row_number~
** Processing line: ~ # This takes a row_number and converts it to pixels DragonRuby understands.~
** Processing line: ~ # Row 0 starts 5 units below the top of the grid~
** Processing line: ~ # Each row afterward is 20 units lower~
** Processing line: ~ args.grid.top.shift_down(5).shift_down(20 * row_number)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Don't worry about understanding the code within this method just yet.~
** Processing line: ~ # This method shows you the help text within the game.~
** Processing line: ~ def tick_help_text args~
** Processing line: ~ return unless args.state.h_pressed_at~
** Processing line: ~~
** Processing line: ~ args.state.key_value_history ||= {}~
** Processing line: ~ args.state.key_down_value_history ||= {}~
** Processing line: ~ args.state.key_held_value_history ||= {}~
** Processing line: ~ args.state.key_up_value_history ||= {}~
** Processing line: ~~
** Processing line: ~ if (args.inputs.keyboard.key_down.truthy_keys.length > 0 ||~
** Processing line: ~ args.inputs.keyboard.key_held.truthy_keys.length > 0 ||~
** Processing line: ~ args.inputs.keyboard.key_up.truthy_keys.length > 0)~
** Processing line: ~ args.state.help_available = true~
** Processing line: ~ args.state.no_activity_debounce = nil~
** Processing line: ~ else~
** Processing line: ~ args.state.no_activity_debounce ||= 5.seconds~
** Processing line: ~ args.state.no_activity_debounce -= 1~
** Processing line: ~ if args.state.no_activity_debounce <= 0~
** Processing line: ~ args.state.help_available = false~
** Processing line: ~ args.state.key_value_history = {}~
** Processing line: ~ args.state.key_down_value_history = {}~
** Processing line: ~ args.state.key_held_value_history = {}~
** Processing line: ~ args.state.key_up_value_history = {}~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << [10, row_to_px(args, 6), "Advanced Help:", small_font]~
** Processing line: ~~
** Processing line: ~ if !args.state.help_available~
** Processing line: ~ args.outputs.labels << [10, row_to_px(args, 7), "Press a key and I'll show code to access the key and what value will be returned if you used the code.", small_font]~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << [10 , row_to_px(args, 7), "args.inputs.keyboard", small_font]~
** Processing line: ~ args.outputs.labels << [330, row_to_px(args, 7), "args.inputs.keyboard.key_down", small_font]~
** Processing line: ~ args.outputs.labels << [650, row_to_px(args, 7), "args.inputs.keyboard.key_held", small_font]~
** Processing line: ~ args.outputs.labels << [990, row_to_px(args, 7), "args.inputs.keyboard.key_up", small_font]~
** Processing line: ~~
** Processing line: ~ fill_history args, :key_value_history, :down_or_held, nil~
** Processing line: ~ fill_history args, :key_down_value_history, :down, :key_down~
** Processing line: ~ fill_history args, :key_held_value_history, :held, :key_held~
** Processing line: ~ fill_history args, :key_up_value_history, :up, :key_up~
** Processing line: ~~
** Processing line: ~ render_help_labels args, :key_value_history, :down_or_held, nil, 10~
** Processing line: ~ render_help_labels args, :key_down_value_history, :down, :key_down, 330~
** Processing line: ~ render_help_labels args, :key_held_value_history, :held, :key_held, 650~
** Processing line: ~ render_help_labels args, :key_up_value_history, :up, :key_up, 990~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def fill_history args, history_key, state_key, keyboard_method~
** Processing line: ~ fill_single_history args, history_key, state_key, keyboard_method, :raw_key~
** Processing line: ~ fill_single_history args, history_key, state_key, keyboard_method, :char~
** Processing line: ~ args.inputs.keyboard.keys[state_key].each do |key_name|~
** Processing line: ~ fill_single_history args, history_key, state_key, keyboard_method, key_name~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def fill_single_history args, history_key, state_key, keyboard_method, key_name~
** Processing line: ~ current_value = args.inputs.keyboard.send(key_name)~
** Processing line: ~ if keyboard_method~
** Processing line: ~ current_value = args.inputs.keyboard.send(keyboard_method).send(key_name)~
** Processing line: ~ end~
** Processing line: ~ args.state.as_hash[history_key][key_name] ||= []~
** Processing line: ~ args.state.as_hash[history_key][key_name] << current_value~
** Processing line: ~ args.state.as_hash[history_key][key_name] = args.state.as_hash[history_key][key_name].reverse.uniq.take(3).reverse~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_help_labels args, history_key, state_key, keyboard_method, x~
** Processing line: ~ idx = 8~
** Processing line: ~ args.outputs.labels << args.state~
** Processing line: ~ .as_hash[history_key]~
** Processing line: ~ .keys~
** Processing line: ~ .reverse~
** Processing line: ~ .map~
** Processing line: ~ .with_index do |k, i|~
** Processing line: ~ v = args.state.as_hash[history_key][k]~
** Processing line: ~ current_value = args.inputs.keyboard.send(k)~
** Processing line: ~ if keyboard_method~
** Processing line: ~ current_value = args.inputs.keyboard.send(keyboard_method).send(k)~
** Processing line: ~ end~
** Processing line: ~ idx += 2~
** Processing line: ~ [~
** Processing line: ~ [x, row_to_px(args, idx - 2),~
** Processing line: ~ " .#{k} is #{current_value || "nil"}",~
** Processing line: ~ small_font],~
** Processing line: ~ [x, row_to_px(args, idx - 1),~
** Processing line: ~ " was #{v}",~
** Processing line: ~ small_font]~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Input Basics - Mouse - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Input Basics - Mouse - 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/02_input_basics/02_mouse/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs that haven't been encountered in a previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.inputs.mouse.click: This property will be set if the mouse was clicked.~
** Processing line: ~ - args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.~
** Processing line: ~ - args.inputs.mouse.click.point.created_at: The frame the mouse click occurred in.~
** Processing line: ~ - args.inputs.mouse.click.point.created_at_elapsed: How many frames have passed~
** Processing line: ~ since the click event.~
** Processing line: ~~
** Processing line: ~ Reminder:~
** Processing line: ~~
** Processing line: ~ - args.state.PROPERTY: The state property on args is a dynamic~
** Processing line: ~ structure. You can define ANY property here with ANY type of~
** Processing line: ~ arbitrary nesting. Properties defined on args.state will be retained~
** Processing line: ~ across frames. If you attempt access a property that doesn't exist~
** Processing line: ~ on args.state, it will simply return nil (no exception will be thrown).~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This code demonstrates DragonRuby mouse input~
** Processing line: ~~
** Processing line: ~ # To see if the a mouse click occurred~
** Processing line: ~ # Use args.inputs.mouse.click~
** Processing line: ~ # Which returns a boolean~
** Processing line: ~~
** Processing line: ~ # To see where a mouse click occurred~
** Processing line: ~ # Use args.inputs.mouse.click.point.x AND~
** Processing line: ~ # args.inputs.mouse.click.point.y~
** Processing line: ~~
** Processing line: ~ # To see which frame the click occurred~
** 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: ~~
** Processing line: ~ # Saving the click in args.state can be quite useful~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows how mouse events are registered and how to measure elapsed time."~
** Processing line: ~ x = 460~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << small_label(args, x, 11, "Mouse input: args.inputs.mouse")~
** Processing line: ~~
** Processing line: ~ if args.inputs.mouse.click~
** Processing line: ~ args.state.last_mouse_click = args.inputs.mouse.click~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.last_mouse_click~
** Processing line: ~ click = args.state.last_mouse_click~
** Processing line: ~ args.outputs.labels << small_label(args, x, 12, "Mouse click happened at: #{click.created_at}")~
** Processing line: ~ args.outputs.labels << small_label(args, x, 13, "Mouse clicked #{click.created_at_elapsed} ticks ago")~
** Processing line: ~ args.outputs.labels << small_label(args, x, 14, "Mouse click location: #{click.point.x}, #{click.point.y}")~
** Processing line: ~ else~
** Processing line: ~ args.outputs.labels << small_label(args, x, 12, "Mouse click has not occurred yet.")~
** Processing line: ~ args.outputs.labels << small_label(args, x, 13, "Please click mouse.")~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def small_label args, x, row, message~
** Processing line: ~ # This method effectively combines the row_to_px and small_font methods~
** Processing line: ~ # It changes the given row value to a DragonRuby pixel value~
** Processing line: ~ # and adds the customization parameters~
** Processing line: ~ [x, row_to_px(args, row), message, small_font]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def small_font~
** Processing line: ~ [-2, 0, 0, 0, 0, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def row_to_px args, row_number~
** Processing line: ~ args.grid.top.shift_down(5).shift_down(20 * row_number)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Input Basics - Mouse Point To Rect - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Input Basics - Mouse Point To Rect - 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/02_input_basics/03_mouse_point_to_rect/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs that haven't been encountered in a previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.outputus.borders: An array. Values in this array will be rendered as~
** Processing line: ~ unfilled rectangles on the screen.~
** Processing line: ~ - ARRAY#inside_rect?: An array with at least two values is considered a point. An array~
** Processing line: ~ with at least four values is considered a rect. The inside_rect? function returns true~
** Processing line: ~ or false depending on if the point is inside the rect.~
** Processing line: ~~
** Processing line: ~ ```~
** Processing line: ~ # Point: x: 100, y: 100~
** Processing line: ~ # Rect: x: 0, y: 0, w: 500, h: 500~
** Processing line: ~ # Result: true~
** Processing line: ~~
** Processing line: ~ [100, 100].inside_rect? [0, 0, 500, 500]~
** Processing line: ~ ```~
** Processing line: ~~
** Processing line: ~ ```~
** Processing line: ~ # Point: x: 100, y: 100~
** Processing line: ~ # Rect: x: 300, y: 300, w: 100, h: 100~
** Processing line: ~ # Result: false~
** Processing line: ~~
** Processing line: ~ [100, 100].inside_rect? [300, 300, 100, 100]~
** Processing line: ~ ```~
** Processing line: ~~
** Processing line: ~ - args.inputs.mouse.click.point.created_at: The frame the mouse click occurred in.~
** Processing line: ~ - args.inputs.mouse.click.point.created_at_elapsed: How many frames have passed~
** Processing line: ~ since the click event.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # To determine whether a point is in a rect~
** Processing line: ~ # Use point.inside_rect? rect~
** Processing line: ~~
** Processing line: ~ # This is useful to determine if a click occurred in a rect~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows how to determing if a click happened inside a rectangle."~
** Processing line: ~~
** Processing line: ~ x = 460~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << small_label(args, x, 15, "Click inside the blue box maybe ---->")~
** Processing line: ~~
** Processing line: ~ box = [785, 370, 50, 50, 0, 0, 170]~
** Processing line: ~ args.outputs.borders << box~
** Processing line: ~~
** Processing line: ~ # Saves the most recent click into args.state~
** Processing line: ~ # Unlike the other components of args,~
** Processing line: ~ # args.state does not reset every tick.~
** Processing line: ~ if args.inputs.mouse.click~
** Processing line: ~ args.state.last_mouse_click = args.inputs.mouse.click~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.last_mouse_click~
** Processing line: ~ if args.state.last_mouse_click.point.inside_rect? box~
** Processing line: ~ args.outputs.labels << small_label(args, x, 16, "Mouse click happened *inside* the box.")~
** Processing line: ~ else~
** Processing line: ~ args.outputs.labels << small_label(args, x, 16, "Mouse click happened *outside* the box.")~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ args.outputs.labels << small_label(args, x, 16, "Mouse click has not occurred yet.")~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def small_label args, x, row, message~
** Processing line: ~ [x, row_to_px(args, row), message, small_font]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def small_font~
** Processing line: ~ [-2, 0, 0, 0, 0, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def row_to_px args, row_number~
** Processing line: ~ args.grid.top.shift_down(5).shift_down(20 * row_number)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Input Basics - Mouse Rect To Rect - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Input Basics - Mouse Rect To Rect - 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/02_input_basics/04_mouse_rect_to_rect/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs that haven't been encountered in a previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.outputs.borders: An array. Values in this array will be rendered as~
** Processing line: ~ unfilled rectangles on the screen.~
** Processing line: ~ - ARRAY#intersect_rect?: An array with at least four values is~
** Processing line: ~ considered a rect. The intersect_rect? function returns true~
** Processing line: ~ or false depending on if the two rectangles intersect.~
** Processing line: ~~
** Processing line: ~ ```~
** Processing line: ~ # Rect One: x: 100, y: 100, w: 100, h: 100~
** Processing line: ~ # Rect Two: x: 0, y: 0, w: 500, h: 500~
** Processing line: ~ # Result: true~
** Processing line: ~~
** Processing line: ~ [100, 100, 100, 100].intersect_rect? [0, 0, 500, 500]~
** Processing line: ~ ```~
** Processing line: ~~
** Processing line: ~ ```~
** Processing line: ~ # Rect One: x: 100, y: 100, w: 10, h: 10~
** Processing line: ~ # Rect Two: x: 500, y: 500, w: 10, h: 10~
** Processing line: ~ # Result: false~
** Processing line: ~~
** Processing line: ~ [100, 100, 10, 10].intersect_rect? [500, 500, 10, 10]~
** Processing line: ~ ```~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # Similarly, whether rects intersect can be found through~
** Processing line: ~ # rect1.intersect_rect? rect2~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows how to determine if two rectangles intersect."~
** Processing line: ~ x = 460~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << small_label(args, x, 3, "Click anywhere on the screen")~
** Processing line: ~ # red_box = [460, 250, 355, 90, 170, 0, 0]~
** Processing line: ~ # args.outputs.borders << red_box~
** Processing line: ~~
** Processing line: ~ # args.state.box_collision_one and args.state.box_collision_two~
** Processing line: ~ # Are given values of a solid when they should be rendered~
** Processing line: ~ # They are stored in game so that they do not get reset every tick~
** Processing line: ~ if args.inputs.mouse.click~
** Processing line: ~ if !args.state.box_collision_one~
** Processing line: ~ args.state.box_collision_one = [args.inputs.mouse.click.point.x - 25, args.inputs.mouse.click.point.y - 25, 125, 125, 180, 0, 0, 180]~
** Processing line: ~ elsif !args.state.box_collision_two~
** Processing line: ~ args.state.box_collision_two = [args.inputs.mouse.click.point.x - 25, args.inputs.mouse.click.point.y - 25, 125, 125, 0, 0, 180, 180]~
** Processing line: ~ else~
** Processing line: ~ args.state.box_collision_one = nil~
** Processing line: ~ args.state.box_collision_two = nil~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.box_collision_one~
** Processing line: ~ args.outputs.solids << args.state.box_collision_one~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.box_collision_two~
** Processing line: ~ args.outputs.solids << args.state.box_collision_two~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.box_collision_one && args.state.box_collision_two~
** Processing line: ~ if args.state.box_collision_one.intersect_rect? args.state.box_collision_two~
** Processing line: ~ args.outputs.labels << small_label(args, x, 4, 'The boxes intersect.')~
** Processing line: ~ else~
** Processing line: ~ args.outputs.labels << small_label(args, x, 4, 'The boxes do not intersect.')~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ args.outputs.labels << small_label(args, x, 4, '--')~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def small_label args, x, row, message~
** Processing line: ~ [x, row_to_px(args, row), message, small_font]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def small_font~
** Processing line: ~ [-2, 0, 0, 0, 0, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def row_to_px args, row_number~
** Processing line: ~ args.grid.top.shift_down(5).shift_down(20 * row_number)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Input Basics - Controller - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Input Basics - Controller - 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/02_input_basics/05_controller/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.inputs.controller_one.key_held.KEY: Will check to see if a specific key~
** Processing line: ~ is being held down on the controller.~
** Processing line: ~ If there is more than one controller being used, they can be differentiated by~
** Processing line: ~ using names like controller_one and controller_two.~
** Processing line: ~~
** Processing line: ~ For a full listing of buttons, take a look at mygame/documentation/08-controllers.md.~
** Processing line: ~~
** Processing line: ~ Reminder:~
** Processing line: ~~
** Processing line: ~ - args.state.PROPERTY: The state property on args is a dynamic~
** Processing line: ~ structure. You can define ANY property here with ANY type of~
** Processing line: ~ arbitrary nesting. Properties defined on args.state will be retained~
** Processing line: ~ across frames. If you attempt to access a property that doesn't exist~
** Processing line: ~ on args.state, it will simply return nil (no exception will be thrown).~
** Processing line: ~~
** Processing line: ~ In this sample app, args.state.BUTTONS is an array that stores the buttons of the controller.~
** Processing line: ~ The parameters of a button are:~
** Processing line: ~ 1. the position (x, y)~
** Processing line: ~ 2. the input key held on the controller~
** Processing line: ~ 3. the text or name of the button~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app provides a visual demonstration of a standard controller, including~
** Processing line: ~ # the placement and function of all buttons.~
** Processing line: ~~
** Processing line: ~ class ControllerDemo~
** Processing line: ~ attr_accessor :inputs, :state, :outputs~
** Processing line: ~~
** Processing line: ~ # Calls the methods necessary for the app to run successfully.~
** Processing line: ~ def tick~
** Processing line: ~ process_inputs~
** Processing line: ~ render~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Starts with an empty collection of buttons.~
** Processing line: ~ # Adds buttons that are on the controller to the collection.~
** Processing line: ~ def process_inputs~
** Processing line: ~ state.buttons = []~
** Processing line: ~~
** Processing line: ~ state.buttons << [100, 500, inputs.controller_one.key_held.l1, "L1"]~
** Processing line: ~ state.buttons << [100, 600, inputs.controller_one.key_held.l2, "L2"]~
** Processing line: ~~
** Processing line: ~ state.buttons << [1100, 500, inputs.controller_one.key_held.r1, "R1"]~
** Processing line: ~ state.buttons << [1100, 600, inputs.controller_one.key_held.r2, "R2"]~
** Processing line: ~~
** Processing line: ~ state.buttons << [540, 450, inputs.controller_one.key_held.select, "Select"]~
** Processing line: ~ state.buttons << [660, 450, inputs.controller_one.key_held.start, "Start"]~
** Processing line: ~~
** Processing line: ~ state.buttons << [200, 300, inputs.controller_one.key_held.left, "Left"]~
** Processing line: ~ state.buttons << [300, 400, inputs.controller_one.key_held.up, "Up"]~
** Processing line: ~ state.buttons << [400, 300, inputs.controller_one.key_held.right, "Right"]~
** Processing line: ~ state.buttons << [300, 200, inputs.controller_one.key_held.down, "Down"]~
** Processing line: ~~
** Processing line: ~ state.buttons << [800, 300, inputs.controller_one.key_held.x, "X"]~
** Processing line: ~ state.buttons << [900, 400, inputs.controller_one.key_held.y, "Y"]~
** Processing line: ~ state.buttons << [1000, 300, inputs.controller_one.key_held.a, "A"]~
** Processing line: ~ state.buttons << [900, 200, inputs.controller_one.key_held.b, "B"]~
** Processing line: ~~
** Processing line: ~ state.buttons << [450 + inputs.controller_one.left_analog_x_perc * 100,~
** Processing line: ~ 100 + inputs.controller_one.left_analog_y_perc * 100,~
** Processing line: ~ inputs.controller_one.key_held.l3,~
** Processing line: ~ "L3"]~
** Processing line: ~~
** Processing line: ~ state.buttons << [750 + inputs.controller_one.right_analog_x_perc * 100,~
** Processing line: ~ 100 + inputs.controller_one.right_analog_y_perc * 100,~
** Processing line: ~ inputs.controller_one.key_held.r3,~
** Processing line: ~ "R3"]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Gives each button a square shape.~
** Processing line: ~ # If the button is being pressed or held (which means it is considered active),~
** Processing line: ~ # the square is filled in. Otherwise, the button simply has a border.~
** Processing line: ~ def render~
** Processing line: ~ state.buttons.each do |x, y, active, text|~
** Processing line: ~ rect = [x, y, 75, 75]~
** Processing line: ~~
** Processing line: ~ if active # if button is pressed~
** Processing line: ~ outputs.solids << rect # rect is output as solid (filled in)~
** Processing line: ~ else~
** Processing line: ~ outputs.borders << rect # otherwise, output as border~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs the text of each button using labels.~
** Processing line: ~ outputs.labels << [x, y + 95, text] # add 95 to place label above button~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.labels << [10, 60, "Left Analog x: #{inputs.controller_one.left_analog_x_raw} (#{inputs.controller_one.left_analog_x_perc * 100}%)"]~
** Processing line: ~ outputs.labels << [10, 30, "Left Analog y: #{inputs.controller_one.left_analog_y_raw} (#{inputs.controller_one.left_analog_y_perc * 100}%)"]~
** Processing line: ~ outputs.labels << [900, 60, "Right Analog x: #{inputs.controller_one.right_analog_x_raw} (#{inputs.controller_one.right_analog_x_perc * 100}%)"]~
** Processing line: ~ outputs.labels << [900, 30, "Right Analog y: #{inputs.controller_one.right_analog_y_raw} (#{inputs.controller_one.right_analog_y_perc * 100}%)"]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $controller_demo = ControllerDemo.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows how controller input is handled. You'll need to connect a USB controller."~
** Processing line: ~ $controller_demo.inputs = args.inputs~
** Processing line: ~ $controller_demo.state = args.state~
** Processing line: ~ $controller_demo.outputs = args.outputs~
** Processing line: ~ $controller_demo.tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Resets the app.~
** Processing line: ~ def r~
** Processing line: ~ $gtk.reset~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rendering Sprites - Animation Using Separate Pngs - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rendering Sprites - Animation Using Separate Pngs - 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/03_rendering_sprites/01_animation_using_separate_pngs/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
** Processing line: ~~
** Processing line: ~ In this sample app, we're using string interpolation to iterate through images in the~
** Processing line: ~ sprites folder using their image path names.~
** Processing line: ~~
** Processing line: ~ - args.outputs.sprites: An array. Values in this array generate sprites on the screen.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, IMAGE PATH]~
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. Values in the array generate labels on the screen.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - args.inputs.keyboard.key_down.KEY: Determines if a key is in the down state, or pressed.~
** Processing line: ~ Stores the frame that key was pressed on.~
** Processing line: ~ For more information about the keyboard, go to mygame/documentation/06-keyboard.md.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app demonstrates how sprite animations work.~
** Processing line: ~ # There are two sprites that animate forever and one sprite~
** Processing line: ~ # that *only* animates when you press the "f" key on the keyboard.~
** Processing line: ~~
** Processing line: ~ # This is the entry point to your game. The `tick` method~
** Processing line: ~ # executes at 60 frames per second. There are two methods~
** Processing line: ~ # in this tick "entry point": `looping_animation`, and the~
** Processing line: ~ # second method is `one_time_animation`.~
** Processing line: ~ def tick args~
** Processing line: ~ looping_animation args~
** Processing line: ~ one_time_animation args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # This function shows how to animate a sprite that loops forever.~
** Processing line: ~ def looping_animation args~
** Processing line: ~ # Here we define a few local variables that will be sent~
** Processing line: ~ # into the magic function that gives us the correct sprite image~
** Processing line: ~ # over time. There are four things we need in order to figure~
** Processing line: ~ # out which sprite to show.~
** Processing line: ~~
** Processing line: ~ # 1. When to start the animation.~
** Processing line: ~ start_looping_at = 0~
** Processing line: ~~
** Processing line: ~ # 2. The number of pngs that represent the full animation.~
** Processing line: ~ number_of_sprites = 6~
** Processing line: ~~
** Processing line: ~ # 3. How long to show each png.~
** Processing line: ~ number_of_frames_to_show_each_sprite = 4~
** Processing line: ~~
** Processing line: ~ # 4. Whether the animation should loop once, or forever.~
** Processing line: ~ does_sprite_loop = true~
** Processing line: ~~
** Processing line: ~ # With the variables defined above, we can get a number~
** Processing line: ~ # which represents the sprite to show by calling the `frame_index` function.~
** Processing line: ~ # In this case the number will be between 0, and 5 (you can see the sprites~
** Processing line: ~ # in the ./sprites directory).~
** Processing line: ~ sprite_index = start_looping_at.frame_index number_of_sprites,~
** Processing line: ~ number_of_frames_to_show_each_sprite,~
** Processing line: ~ does_sprite_loop~
** Processing line: ~~
** Processing line: ~ # Now that we have `sprite_index, we can present the correct file.~
** Processing line: ~ args.outputs.sprites << [100, 100, 100, 100, "sprites/dragon_fly_#{sprite_index}.png"]~
** Processing line: ~~
** Processing line: ~ # Try changing the numbers below to see how the animation changes:~
** Processing line: ~ args.outputs.sprites << [100, 200, 100, 100, "sprites/dragon_fly_#{0.frame_index 6, 4, true}.png"]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # This function shows how to animate a sprite that executes~
** Processing line: ~ # only once when the "f" key is pressed.~
** Processing line: ~ def one_time_animation args~
** Processing line: ~ # This is just a label the shows instructions within the game.~
** Processing line: ~ args.outputs.labels << [220, 350, "(press f to animate)"]~
** Processing line: ~~
** Processing line: ~ # If "f" is pressed on the keyboard...~
** Processing line: ~ if args.inputs.keyboard.key_down.f~
** Processing line: ~ # Print the frame that "f" was pressed on.~
** Processing line: ~ puts "Hello from main.rb! The \"f\" key was in the down state on frame: #{args.inputs.keyboard.key_down.f}"~
** Processing line: ~~
** Processing line: ~ # And MOST IMPORTANTLY set the point it time to start the animation,~
** Processing line: ~ # equal to "now" which is represented as args.state.tick_count.~
** Processing line: ~~
** Processing line: ~ # Also IMPORTANT, you'll notice that the value of when to start looping~
** Processing line: ~ # is stored in `args.state`. This construct's values are retained across~
** Processing line: ~ # executions of the `tick` method.~
** Processing line: ~ args.state.start_looping_at = args.state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # These are the same local variables that were defined~
** Processing line: ~ # for the `looping_animation` function.~
** Processing line: ~ number_of_sprites = 6~
** Processing line: ~ number_of_frames_to_show_each_sprite = 4~
** Processing line: ~~
** Processing line: ~ # Except this sprite does not loop again. If the animation time has passed,~
** Processing line: ~ # then the frame_index function returns nil.~
** Processing line: ~ does_sprite_loop = false~
** Processing line: ~~
** Processing line: ~ sprite_index = args.state~
** Processing line: ~ .start_looping_at~
** Processing line: ~ .frame_index number_of_sprites,~
** Processing line: ~ number_of_frames_to_show_each_sprite,~
** Processing line: ~ does_sprite_loop~
** Processing line: ~~
** Processing line: ~ # This line sets the frame index to zero, if~
** Processing line: ~ # the animation duration has passed (frame_index returned nil).~
** Processing line: ~~
** Processing line: ~ # Remeber: we are not looping forever here.~
** Processing line: ~ sprite_index ||= 0~
** Processing line: ~~
** Processing line: ~ # Present the sprite.~
** Processing line: ~ args.outputs.sprites << [100, 300, 100, 100, "sprites/dragon_fly_#{sprite_index}.png"]~
** Processing line: ~~
** Processing line: ~ tick_instructions args, "Sample app shows how to use Numeric#frame_index and string interpolation to animate a sprite over time."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rendering Sprites - Animation Using Sprite Sheet - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rendering Sprites - Animation Using Sprite Sheet - 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/03_rendering_sprites/02_animation_using_sprite_sheet/app/main.rb~
** Processing line: ~ def tick args~
** Processing line: ~ args.state.player.x ||= 100~
** Processing line: ~ args.state.player.y ||= 100~
** Processing line: ~ args.state.player.w ||= 64~
** Processing line: ~ args.state.player.h ||= 64~
** Processing line: ~ args.state.player.direction ||= 1~
** Processing line: ~~
** Processing line: ~ args.state.player.is_moving = false~
** Processing line: ~~
** Processing line: ~ # get the keyboard input and set player properties~
** Processing line: ~ if args.inputs.keyboard.right~
** Processing line: ~ args.state.player.x += 3~
** Processing line: ~ args.state.player.direction = 1~
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
** Processing line: ~ elsif args.inputs.keyboard.left~
** Processing line: ~ args.state.player.x -= 3~
** Processing line: ~ args.state.player.direction = -1~
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.inputs.keyboard.up~
** Processing line: ~ args.state.player.y += 1~
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
** Processing line: ~ elsif args.inputs.keyboard.down~
** Processing line: ~ args.state.player.y -= 1~
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if no arrow keys are being pressed, set the player as not moving~
** Processing line: ~ if !args.inputs.keyboard.directional_vector~
** Processing line: ~ args.state.player.started_running_at = nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # wrap player around the stage~
** Processing line: ~ if args.state.player.x > 1280~
** Processing line: ~ args.state.player.x = -64~
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
** Processing line: ~ elsif args.state.player.x < -64~
** Processing line: ~ args.state.player.x = 1280~
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.player.y > 720~
** Processing line: ~ args.state.player.y = -64~
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
** Processing line: ~ elsif args.state.player.y < -64~
** Processing line: ~ args.state.player.y = 720~
** Processing line: ~ args.state.player.started_running_at ||= args.state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # render player as standing or running~
** Processing line: ~ if args.state.player.started_running_at~
** Processing line: ~ args.outputs.sprites << running_sprite(args)~
** Processing line: ~ else~
** Processing line: ~ args.outputs.sprites << standing_sprite(args)~
** Processing line: ~ end~
** Processing line: ~ args.outputs.labels << [30, 700, "Use arrow keys to move around."]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def standing_sprite args~
** Processing line: ~ {~
** Processing line: ~ x: args.state.player.x,~
** Processing line: ~ y: args.state.player.y,~
** Processing line: ~ w: args.state.player.w,~
** Processing line: ~ h: args.state.player.h,~
** Processing line: ~ path: "sprites/horizontal-stand.png",~
** Processing line: ~ flip_horizontally: args.state.player.direction > 0~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def running_sprite args~
** Processing line: ~ if !args.state.player.started_running_at~
** Processing line: ~ tile_index = 0~
** Processing line: ~ else~
** Processing line: ~ how_many_frames_in_sprite_sheet = 6~
** Processing line: ~ how_many_ticks_to_hold_each_frame = 3~
** Processing line: ~ should_the_index_repeat = true~
** Processing line: ~ tile_index = args.state~
** Processing line: ~ .player~
** Processing line: ~ .started_running_at~
** Processing line: ~ .frame_index(how_many_frames_in_sprite_sheet,~
** Processing line: ~ how_many_ticks_to_hold_each_frame,~
** Processing line: ~ should_the_index_repeat)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ {~
** Processing line: ~ x: args.state.player.x,~
** Processing line: ~ y: args.state.player.y,~
** Processing line: ~ w: args.state.player.w,~
** Processing line: ~ h: args.state.player.h,~
** Processing line: ~ path: 'sprites/horizontal-run.png',~
** Processing line: ~ tile_x: 0 + (tile_index * args.state.player.w),~
** Processing line: ~ tile_y: 0,~
** Processing line: ~ tile_w: args.state.player.w,~
** Processing line: ~ tile_h: args.state.player.h,~
** Processing line: ~ flip_horizontally: args.state.player.direction > 0,~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rendering Sprites - Animation States - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rendering Sprites - Animation States - 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/03_rendering_sprites/03_animation_states/app/main.rb~
** Processing line: ~ class Game~
** Processing line: ~ attr_gtk~
** Processing line: ~~
** Processing line: ~ def defaults~
** Processing line: ~ state.show_debug_layer = true if state.tick_count == 0~
** Processing line: ~ player.tile_size = 64~
** Processing line: ~ player.speed = 3~
** Processing line: ~ player.slash_frames = 15~
** Processing line: ~ player.x ||= 50~
** Processing line: ~ player.y ||= 400~
** Processing line: ~ player.dir_x ||= 1~
** Processing line: ~ player.dir_y ||= -1~
** Processing line: ~ player.is_moving ||= false~
** Processing line: ~ state.watch_list ||= {}~
** Processing line: ~ state.enemies ||= []~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def add_enemy~
** Processing line: ~ state.enemies << { x: 1200 * rand, y: 600 * rand, w: 64, h: 64 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def sprite_horizontal_run~
** Processing line: ~ tile_index = 0.frame_index(6, 3, true)~
** Processing line: ~ tile_index = 0 if !player.is_moving~
** Processing line: ~~
** Processing line: ~ {~
** Processing line: ~ x: player.x,~
** Processing line: ~ y: player.y,~
** Processing line: ~ w: player.tile_size,~
** Processing line: ~ h: player.tile_size,~
** Processing line: ~ path: 'sprites/horizontal-run.png',~
** Processing line: ~ tile_x: 0 + (tile_index * player.tile_size),~
** Processing line: ~ tile_y: 0,~
** Processing line: ~ tile_w: player.tile_size,~
** Processing line: ~ tile_h: player.tile_size,~
** Processing line: ~ flip_horizontally: player.dir_x > 0,~
** Processing line: ~ # a: 40~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def sprite_horizontal_stand~
** Processing line: ~ {~
** Processing line: ~ x: player.x,~
** Processing line: ~ y: player.y,~
** Processing line: ~ w: player.tile_size,~
** Processing line: ~ h: player.tile_size,~
** Processing line: ~ path: 'sprites/horizontal-stand.png',~
** Processing line: ~ flip_horizontally: player.dir_x > 0,~
** Processing line: ~ # a: 40~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def sprite_horizontal_slash~
** Processing line: ~ tile_index = player.slash_at.frame_index(5, player.slash_frames.idiv(5), false) || 0~
** Processing line: ~~
** Processing line: ~ {~
** Processing line: ~ x: player.x - 41.25,~
** Processing line: ~ y: player.y - 41.25,~
** Processing line: ~ w: 165,~
** Processing line: ~ h: 165,~
** Processing line: ~ path: 'sprites/horizontal-slash.png',~
** Processing line: ~ tile_x: 0 + (tile_index * 128),~
** Processing line: ~ tile_y: 0,~
** Processing line: ~ tile_w: 128,~
** Processing line: ~ tile_h: 128,~
** Processing line: ~ flip_horizontally: player.dir_x > 0~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_player~
** Processing line: ~ if player.slash_at~
** Processing line: ~ outputs.sprites << sprite_horizontal_slash~
** Processing line: ~ elsif player.is_moving~
** Processing line: ~ outputs.sprites << sprite_horizontal_run~
** Processing line: ~ else~
** Processing line: ~ outputs.sprites << sprite_horizontal_stand~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_enemies~
** Processing line: ~ outputs.borders << state.enemies~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_debug_layer~
** Processing line: ~ return if !state.show_debug_layer~
** Processing line: ~ outputs.labels << state.watch_list.map.with_index do |(k, v), i|~
** Processing line: ~ [30, 710 - i * 28, "#{k}: #{v || "(nil)"}"]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.borders << player.slash_collision_rect~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def slash_initiate?~
** Processing line: ~ # buffalo usb controller has a button and b button swapped lol~
** Processing line: ~ inputs.controller_one.key_down.a || inputs.keyboard.key_down.j~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input~
** Processing line: ~ # player movement~
** Processing line: ~ if slash_complete? && (vector = inputs.directional_vector)~
** Processing line: ~ player.x += vector.x * player.speed~
** Processing line: ~ player.y += vector.y * player.speed~
** Processing line: ~ end~
** Processing line: ~ player.slash_at = slash_initiate? if slash_initiate?~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_movement~
** Processing line: ~ # movement~
** Processing line: ~ if vector = inputs.directional_vector~
** Processing line: ~ state.debug_label = vector~
** Processing line: ~ player.dir_x = vector.x~
** Processing line: ~ player.dir_y = vector.y~
** Processing line: ~ player.is_moving = true~
** Processing line: ~ else~
** Processing line: ~ state.debug_label = vector~
** Processing line: ~ player.is_moving = false~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_slash~
** Processing line: ~ # re-calc the location of the swords collision box~
** Processing line: ~ if player.dir_x.positive?~
** Processing line: ~ player.slash_collision_rect = [player.x + player.tile_size,~
** Processing line: ~ player.y + player.tile_size.half - 10,~
** Processing line: ~ 40, 20]~
** Processing line: ~ else~
** Processing line: ~ player.slash_collision_rect = [player.x - 32 - 8,~
** Processing line: ~ player.y + player.tile_size.half - 10,~
** Processing line: ~ 40, 20]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # recalc sword's slash state~
** Processing line: ~ player.slash_at = nil if slash_complete?~
** Processing line: ~~
** Processing line: ~ # determine collision if the sword is at it's point of damaging~
** Processing line: ~ return unless slash_can_damage?~
** Processing line: ~~
** Processing line: ~ state.enemies.reject! { |e| e.intersect_rect? player.slash_collision_rect }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def slash_complete?~
** Processing line: ~ !player.slash_at || player.slash_at.elapsed?(player.slash_frames)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def slash_can_damage?~
** Processing line: ~ # damage occurs half way into the slash animation~
** Processing line: ~ return false if slash_complete?~
** Processing line: ~ return false if (player.slash_at + player.slash_frames.idiv(2)) != state.tick_count~
** Processing line: ~ return true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc~
** Processing line: ~ # generate an enemy if there aren't any on the screen~
** Processing line: ~ add_enemy if state.enemies.length == 0~
** Processing line: ~ calc_movement~
** Processing line: ~ calc_slash~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # source is at http://github.com/amirrajan/dragonruby-link-to-the-past~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render_enemies~
** Processing line: ~ render_player~
** Processing line: ~ outputs.labels << [30, 30, "Gamepad: D-Pad to move. B button to attack."]~
** Processing line: ~ outputs.labels << [30, 52, "Keyboard: WASD/Arrow keys to move. J to attack."]~
** Processing line: ~ render_debug_layer~
** Processing line: ~ input~
** Processing line: ~ calc~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def player~
** Processing line: ~ state.player~
** 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: ~ $gtk.reset~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rendering Sprites - Color And Rotation - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rendering Sprites - Color And Rotation - 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/03_rendering_sprites/04_color_and_rotation/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - merge: Returns a hash containing the contents of two original hashes.~
** Processing line: ~ Merge does not allow duplicate keys, so the value of a repeated key~
** Processing line: ~ will be overwritten.~
** Processing line: ~~
** Processing line: ~ For example, if we had two hashes~
** Processing line: ~ h1 = { "a" => 1, "b" => 2}~
** Processing line: ~ h2 = { "b" => 3, "c" => 3}~
** Processing line: ~ and we called the command~
** Processing line: ~ h1.merge(h2)~
** Processing line: ~ the result would the following hash~
** Processing line: ~ { "a" => 1, "b" => 3, "c" => 3}.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The value can be found~
** Processing line: ~ using their keys.~
** Processing line: ~ In this sample app, we're using a hash to create a sprite.~
** Processing line: ~~
** Processing line: ~ - args.outputs.sprites: An array. The values generate a sprite.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, PATH, ANGLE, ALPHA, RED, GREEN, BLUE]~
** Processing line: ~ Before continuing with this sample app, it is HIGHLY recommended that you look~
** Processing line: ~ at mygame/documentation/05-sprites.md.~
** Processing line: ~~
** Processing line: ~ - args.inputs.keyboard.key_held.KEY: Determines if a key is being pressed.~
** Processing line: ~ For more information about the keyboard, go to mygame/documentation/06-keyboard.md.~
** Processing line: ~~
** Processing line: ~ - args.inputs.controller_one: Takes input from the controller based on what key is pressed.~
** Processing line: ~ For more information about the controller, go to mygame/documentation/08-controllers.md.~
** Processing line: ~~
** Processing line: ~ - num1.lesser(num2): Finds the lower value of the given options.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app shows a car moving across the screen. It loops back around if it exceeds the dimensions of the screen,~
** Processing line: ~ # and also can be moved in different directions through keyboard input from the user.~
** Processing line: ~~
** Processing line: ~ # Calls the methods necessary for the game to run successfully.~
** Processing line: ~ def tick args~
** Processing line: ~ default args~
** Processing line: ~ render args.grid, args.outputs, args.state~
** Processing line: ~ calc args.state~
** Processing line: ~ process_inputs args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values for the car sprite~
** Processing line: ~ # Initialization ||= only happens in the first frame~
** Processing line: ~ def default args~
** Processing line: ~ args.state.sprite.width = 19~
** Processing line: ~ args.state.sprite.height = 10~
** Processing line: ~ args.state.sprite.scale = 4~
** Processing line: ~ args.state.max_speed = 5~
** Processing line: ~ args.state.x ||= 100~
** Processing line: ~ args.state.y ||= 100~
** Processing line: ~ args.state.speed ||= 1~
** Processing line: ~ args.state.angle ||= 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs sprite onto screen~
** Processing line: ~ def render grid, outputs, state~
** Processing line: ~ outputs.solids << [grid.rect, 70, 70, 70] # outputs gray background~
** Processing line: ~ outputs.sprites << [destination_rect(state), # sets first four parameters of car sprite~
** Processing line: ~ 'sprites/86.png', # image path of car~
** Processing line: ~ state.angle,~
** Processing line: ~ opacity, # transparency~
** Processing line: ~ saturation,~
** Processing line: ~ source_rect(state), # sprite sub division/tile (tile x, y, w, h)~
** Processing line: ~ false, false, # don't flip sprites~
** Processing line: ~ rotation_anchor]~
** Processing line: ~~
** Processing line: ~ # also look at the create_sprite helper method~
** Processing line: ~ #~
** Processing line: ~ # For example:~
** Processing line: ~ #~
** Processing line: ~ # dest = destination_rect(state)~
** Processing line: ~ # source = source_rect(state),~
** Processing line: ~ # outputs.sprites << create_sprite(~
** Processing line: ~ # 'sprites/86.png',~
** Processing line: ~ # x: dest.x,~
** Processing line: ~ # y: dest.y,~
** Processing line: ~ # w: dest.w,~
** Processing line: ~ # h: dest.h,~
** Processing line: ~ # angle: state.angle,~
** Processing line: ~ # source_x: source.x,~
** Processing line: ~ # source_y: source.y,~
** Processing line: ~ # source_w: source.w,~
** Processing line: ~ # source_h: source.h,~
** Processing line: ~ # flip_h: false,~
** Processing line: ~ # flip_v: false,~
** Processing line: ~ # rotation_anchor_x: 0.7,~
** Processing line: ~ # rotation_anchor_y: 0.5~
** Processing line: ~ # )~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates sprite by setting values inside of a hash~
** Processing line: ~ def create_sprite path, options = {}~
** Processing line: ~ options = {~
** Processing line: ~~
** Processing line: ~ # dest x, y, w, h~
** Processing line: ~ x: 0,~
** Processing line: ~ y: 0,~
** Processing line: ~ w: 100,~
** Processing line: ~ h: 100,~
** Processing line: ~~
** Processing line: ~ # angle, rotation~
** Processing line: ~ angle: 0,~
** Processing line: ~ rotation_anchor_x: 0.5,~
** Processing line: ~ rotation_anchor_y: 0.5,~
** Processing line: ~~
** Processing line: ~ # color saturation (red, green, blue), transparency~
** Processing line: ~ r: 255,~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 255,~
** Processing line: ~ a: 255,~
** Processing line: ~~
** Processing line: ~ # source x, y, width, height~
** Processing line: ~ source_x: 0,~
** Processing line: ~ source_y: 0,~
** Processing line: ~ source_w: -1,~
** Processing line: ~ source_h: -1,~
** Processing line: ~~
** Processing line: ~ # flip horiztonally, flip vertically~
** Processing line: ~ flip_h: false,~
** Processing line: ~ flip_v: false,~
** Processing line: ~~
** Processing line: ~ }.merge options~
** Processing line: ~~
** Processing line: ~ [~
** Processing line: ~ options[:x], options[:y], options[:w], options[:h], # dest rect keys~
** Processing line: ~ path,~
** Processing line: ~ options[:angle], options[:a], options[:r], options[:g], options[:b], # angle, color, alpha~
** Processing line: ~ options[:source_x], options[:source_y], options[:source_w], options[:source_h], # source rect keys~
** Processing line: ~ options[:flip_h], options[:flip_v], # flip~
** Processing line: ~ options[:rotation_anchor_x], options[:rotation_anchor_y], # rotation anchor~
** Processing line: ~ ] # hash keys contain corresponding values~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls the calc_pos and calc_wrap methods.~
** Processing line: ~ def calc state~
** Processing line: ~ calc_pos state~
** Processing line: ~ calc_wrap state~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Changes sprite's position on screen~
** Processing line: ~ # Vectors have magnitude and direction, so the incremented x and y values give the car direction~
** Processing line: ~ def calc_pos state~
** Processing line: ~ state.x += state.angle.vector_x * state.speed # increments x by product of angle's x vector and speed~
** Processing line: ~ state.y += state.angle.vector_y * state.speed # increments y by product of angle's y vector and speed~
** Processing line: ~ state.speed *= 1.1 # scales speed up~
** Processing line: ~ state.speed = state.speed.lesser(state.max_speed) # speed is either current speed or max speed, whichever has a lesser value (ensures that the car doesn't go too fast or exceed the max speed)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The screen's dimensions are 1280x720. If the car goes out of scope,~
** Processing line: ~ # it loops back around on the screen.~
** Processing line: ~ def calc_wrap state~
** Processing line: ~~
** Processing line: ~ # car returns to left side of screen if it disappears on right side of screen~
** Processing line: ~ # sprite.width refers to tile's size, which is multipled by scale (4) to make it bigger~
** Processing line: ~ state.x = -state.sprite.width * state.sprite.scale if state.x - 20 > 1280~
** Processing line: ~~
** Processing line: ~ # car wraps around to right side of screen if it disappears on the left side~
** Processing line: ~ state.x = 1280 if state.x + state.sprite.width * state.sprite.scale + 20 < 0~
** Processing line: ~~
** Processing line: ~ # car wraps around to bottom of screen if it disappears at the top of the screen~
** Processing line: ~ # if you subtract 520 pixels instead of 20 pixels, the car takes longer to reappear (try it!)~
** Processing line: ~ state.y = 0 if state.y - 20 > 720 # if 20 pixels less than car's y position is greater than vertical scope~
** Processing line: ~~
** Processing line: ~ # car wraps around to top of screen if it disappears at the bottom of the screen~
** Processing line: ~ state.y = 720 if state.y + state.sprite.height * state.sprite.scale + 20 < 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Changes angle of sprite based on user input from keyboard or controller~
** Processing line: ~ def process_inputs args~
** Processing line: ~~
** Processing line: ~ # NOTE: increasing the angle doesn't mean that the car will continue to go~
** Processing line: ~ # in a specific direction. The angle is increasing, which means that if the~
** Processing line: ~ # left key was kept in the "down" state, the change in the angle would cause~
** Processing line: ~ # the car to go in a counter-clockwise direction and form a circle (360 degrees)~
** Processing line: ~ if args.inputs.keyboard.key_held.left # if left key is pressed~
** Processing line: ~ args.state.angle += 2 # car's angle is incremented by 2~
** Processing line: ~~
** Processing line: ~ # The same applies to decreasing the angle. If the right key was kept in the~
** Processing line: ~ # "down" state, the decreasing angle would cause the car to go in a clockwise~
** Processing line: ~ # direction and form a circle (360 degrees)~
** Processing line: ~ elsif args.inputs.keyboard.key_held.right # if right key is pressed~
** Processing line: ~ args.state.angle -= 2 # car's angle is decremented by 2~
** Processing line: ~~
** Processing line: ~ # Input from a controller can also change the angle of the car~
** Processing line: ~ elsif args.inputs.controller_one.left_analog_x_perc != 0~
** Processing line: ~ args.state.angle += 2 * args.inputs.controller_one.left_analog_x_perc * -1~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # A sprite's center of rotation can be altered~
** Processing line: ~ # Increasing either of these numbers would dramatically increase the~
** Processing line: ~ # car's drift when it turns!~
** Processing line: ~ def rotation_anchor~
** Processing line: ~ [0.7, 0.5]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets opacity value of sprite to 255 so that it is not transparent at all~
** Processing line: ~ # Change it to 0 and you won't be able to see the car sprite on the screen~
** Processing line: ~ def opacity~
** Processing line: ~ 255~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the color of the sprite to white.~
** Processing line: ~ def saturation~
** Processing line: ~ [255, 255, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets definition of destination_rect (used to define the car sprite)~
** Processing line: ~ def destination_rect state~
** Processing line: ~ [state.x, state.y,~
** Processing line: ~ state.sprite.width * state.sprite.scale, # multiplies by 4 to set size~
** Processing line: ~ state.sprite.height * state.sprite.scale]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Portion of a sprite (a tile)~
** Processing line: ~ # Sub division of sprite is denoted as a rectangle directly related to original size of .png~
** Processing line: ~ # Tile is located at bottom left corner within a 19x10 pixel rectangle (based on sprite.width, sprite.height)~
** Processing line: ~ def source_rect state~
** Processing line: ~ [0, 0, state.sprite.width, state.sprite.height]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Physics And Collisions - Simple - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Physics And Collisions - Simple - 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/04_physics_and_collisions/01_simple/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.~
** Processing line: ~~
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app shows collisions between two boxes.~
** Processing line: ~~
** Processing line: ~ # Runs methods needed for game to run properly.~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows how to move a square over time and determine collision."~
** Processing line: ~ defaults args~
** Processing line: ~ render args~
** Processing line: ~ calc args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values.~
** Processing line: ~ def defaults args~
** Processing line: ~ # These values represent the moving box.~
** Processing line: ~ args.state.moving_box_speed = 10~
** Processing line: ~ args.state.moving_box_size = 100~
** Processing line: ~ args.state.moving_box_dx ||= 1~
** Processing line: ~ args.state.moving_box_dy ||= 1~
** Processing line: ~ args.state.moving_box ||= [0, 0, args.state.moving_box_size, args.state.moving_box_size] # moving_box_size is set as the width and height~
** Processing line: ~~
** Processing line: ~ # These values represent the center box.~
** Processing line: ~ args.state.center_box ||= [540, 260, 200, 200, 180]~
** Processing line: ~ args.state.center_box_collision ||= false # initially no collision~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render args~
** Processing line: ~ # If the game state denotes that a collision has occured,~
** Processing line: ~ # render a solid square, otherwise render a border instead.~
** Processing line: ~ if args.state.center_box_collision~
** Processing line: ~ args.outputs.solids << args.state.center_box~
** Processing line: ~ else~
** Processing line: ~ args.outputs.borders << args.state.center_box~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Then render the moving box.~
** Processing line: ~ args.outputs.solids << args.state.moving_box~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Generally in a pipeline for a game engine, you have rendering,~
** Processing line: ~ # game simulation (calculation), and input processing.~
** Processing line: ~ # This fuction represents the game simulation.~
** Processing line: ~ def calc args~
** Processing line: ~ position_moving_box args~
** Processing line: ~ determine_collision_center_box args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Changes the position of the moving box on the screen by multiplying the change in x (dx) and change in y (dy) by the speed,~
** Processing line: ~ # and adding it to the current position.~
** Processing line: ~ # dx and dy are positive if the box is moving right and up, respectively~
** Processing line: ~ # dx and dy are negative if the box is moving left and down, respectively~
** Processing line: ~ def position_moving_box args~
** Processing line: ~ args.state.moving_box.x += args.state.moving_box_dx * args.state.moving_box_speed~
** Processing line: ~ args.state.moving_box.y += args.state.moving_box_dy * args.state.moving_box_speed~
** Processing line: ~~
** Processing line: ~ # 1280x720 are the virtual pixels you work with (essentially 720p).~
** Processing line: ~ screen_width = 1280~
** Processing line: ~ screen_height = 720~
** Processing line: ~~
** Processing line: ~ # Position of the box is denoted by the bottom left hand corner, in~
** Processing line: ~ # that case, we have to subtract the width of the box so that it stays~
** Processing line: ~ # in the scene (you can try deleting the subtraction to see how it~
** Processing line: ~ # impacts the box's movement).~
** Processing line: ~ if args.state.moving_box.x > screen_width - args.state.moving_box_size~
** Processing line: ~ args.state.moving_box_dx = -1 # moves left~
** Processing line: ~ elsif args.state.moving_box.x < 0~
** Processing line: ~ args.state.moving_box_dx = 1 # moves right~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Here, we're making sure the moving box remains within the vertical scope of the screen~
** Processing line: ~ if args.state.moving_box.y > screen_height - args.state.moving_box_size # if the box moves too high~
** Processing line: ~ args.state.moving_box_dy = -1 # moves down~
** Processing line: ~ elsif args.state.moving_box.y < 0 # if the box moves too low~
** Processing line: ~ args.state.moving_box_dy = 1 # moves up~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def determine_collision_center_box args~
** Processing line: ~ # Collision is handled by the engine. You simply have to call the~
** Processing line: ~ # `intersect_rect?` function.~
** Processing line: ~ if args.state.moving_box.intersect_rect? args.state.center_box # if the two boxes intersect~
** Processing line: ~ args.state.center_box_collision = true # then a collision happened~
** Processing line: ~ else~
** Processing line: ~ args.state.center_box_collision = false # otherwise, no collision happened~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Physics And Collisions - Moving Objects - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Physics And Collisions - Moving Objects - 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/04_physics_and_collisions/02_moving_objects/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The value can be found~
** Processing line: ~ using their keys.~
** Processing line: ~~
** Processing line: ~ For example, if we have a "numbers" hash that stores numbers in English as the~
** Processing line: ~ key and numbers in Spanish as the value, we'd have a hash that looks like this...~
** Processing line: ~ numbers = { "one" => "uno", "two" => "dos", "three" => "tres" }~
** Processing line: ~ and on it goes.~
** Processing line: ~~
** Processing line: ~ Now if we wanted to find the corresponding value of the "one" key, we could say~
** Processing line: ~ puts numbers["one"]~
** Processing line: ~ which would print "uno" to the console.~
** Processing line: ~~
** Processing line: ~ - num1.greater(num2): Returns the greater value.~
** Processing line: ~ For example, if we have the command~
** Processing line: ~ puts 4.greater(3)~
** Processing line: ~ the number 4 would be printed to the console since it has a greater value than 3.~
** Processing line: ~ Similar to lesser, which returns the lesser value.~
** Processing line: ~~
** Processing line: ~ - num1.lesser(num2): Finds the lower value of the given options.~
** Processing line: ~ For example, in the statement~
** Processing line: ~ a = 4.lesser(3)~
** Processing line: ~ 3 has a lower value than 4, which means that the value of a would be set to 3,~
** Processing line: ~ but if the statement had been~
** Processing line: ~ a = 4.lesser(5)~
** Processing line: ~ 4 has a lower value than 5, which means that the value of a would be set to 4.~
** Processing line: ~~
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
** Processing line: ~ For example, you can derive an array of odd numbers from an original array of~
** Processing line: ~ numbers 1 through 10 by rejecting all elements that are even (or divisible by 2).~
** Processing line: ~~
** Processing line: ~ - find_all: Finds all values that satisfy specific requirements.~
** Processing line: ~ For example, you can find all elements of a collection that are divisible by 2~
** Processing line: ~ or find all objects that have intersected with another object.~
** Processing line: ~~
** Processing line: ~ - abs: Returns the absolute value.~
** Processing line: ~ For example, the command~
** Processing line: ~ (-30).abs~
** Processing line: ~ would return 30 as a result.~
** Processing line: ~~
** Processing line: ~ - map: Ruby method used to transform data; used in arrays, hashes, and collections.~
** Processing line: ~ Can be used to perform an action on every element of a collection, such as multiplying~
** Processing line: ~ each element by 2 or declaring every element as a new entity.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - args.inputs.keyboard.KEY: Determines if a key has been pressed.~
** Processing line: ~ For more information about the keyboard, take a look at mygame/documentation/06-keyboard.md.~
** Processing line: ~~
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.~
** Processing line: ~~
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # Calls methods needed for game to run properly~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Use LEFT and RIGHT arrow keys to move and SPACE to jump."~
** Processing line: ~ defaults args~
** Processing line: ~ render args~
** Processing line: ~ calc args~
** Processing line: ~ input args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # sets default values and creates empty collections~
** Processing line: ~ # initialization only happens in the first frame~
** Processing line: ~ def defaults args~
** Processing line: ~ fiddle args~
** Processing line: ~ args.state.enemy.hammers ||= []~
** Processing line: ~ args.state.enemy.hammer_queue ||= []~
** Processing line: ~ args.state.tick_count = args.state.tick_count~
** Processing line: ~ args.state.bridge_top = 128~
** Processing line: ~ args.state.player.x ||= 0 # initializes player's properties~
** Processing line: ~ args.state.player.y ||= args.state.bridge_top~
** Processing line: ~ args.state.player.w ||= 64~
** Processing line: ~ args.state.player.h ||= 64~
** Processing line: ~ args.state.player.dy ||= 0~
** Processing line: ~ args.state.player.dx ||= 0~
** Processing line: ~ args.state.enemy.x ||= 800 # initializes enemy's properties~
** Processing line: ~ args.state.enemy.y ||= 0~
** Processing line: ~ args.state.enemy.w ||= 128~
** Processing line: ~ args.state.enemy.h ||= 128~
** Processing line: ~ args.state.enemy.dy ||= 0~
** Processing line: ~ args.state.enemy.dx ||= 0~
** Processing line: ~ args.state.game_over_at ||= 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # sets enemy, player, hammer values~
** Processing line: ~ def fiddle args~
** Processing line: ~ args.state.gravity = -0.3~
** Processing line: ~ args.state.enemy_jump_power = 10 # sets enemy values~
** Processing line: ~ args.state.enemy_jump_interval = 60~
** Processing line: ~ args.state.hammer_throw_interval = 40 # sets hammer values~
** Processing line: ~ args.state.hammer_launch_power_default = 5~
** Processing line: ~ args.state.hammer_launch_power_near = 2~
** Processing line: ~ args.state.hammer_launch_power_far = 7~
** Processing line: ~ args.state.hammer_upward_launch_power = 15~
** Processing line: ~ args.state.max_hammers_per_volley = 10~
** Processing line: ~ args.state.gap_between_hammers = 10~
** Processing line: ~ args.state.player_jump_power = 10 # sets player values~
** Processing line: ~ args.state.player_jump_power_duration = 10~
** Processing line: ~ args.state.player_max_run_speed = 10~
** Processing line: ~ args.state.player_speed_slowdown_rate = 0.9~
** Processing line: ~ args.state.player_acceleration = 1~
** Processing line: ~ args.state.hammer_size = 32~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # outputs objects onto the screen~
** Processing line: ~ def render args~
** Processing line: ~ args.outputs.solids << 20.map_with_index do |i| # uses 20 squares to form bridge~
** Processing line: ~ # sets x by multiplying 64 to index to find pixel value (places all squares side by side)~
** Processing line: ~ # subtracts 64 from bridge_top because position is denoted by bottom left corner~
** Processing line: ~ [i * 64, args.state.bridge_top - 64, 64, 64]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.solids << [args.state.x, args.state.y, args.state.w, args.state.h, 255, 0, 0]~
** Processing line: ~ args.outputs.solids << [args.state.player.x, args.state.player.y, args.state.player.w, args.state.player.h, 255, 0, 0] # outputs player onto screen (red box)~
** Processing line: ~ args.outputs.solids << [args.state.enemy.x, args.state.enemy.y, args.state.enemy.w, args.state.enemy.h, 0, 255, 0] # outputs enemy onto screen (green box)~
** Processing line: ~ args.outputs.solids << args.state.enemy.hammers # outputs enemy's hammers onto screen~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Performs calculations to move objects on the screen~
** Processing line: ~ def calc args~
** Processing line: ~~
** Processing line: ~ # Since velocity is the change in position, the change in x increases by dx. Same with y and dy.~
** Processing line: ~ args.state.player.x += args.state.player.dx~
** Processing line: ~ args.state.player.y += args.state.player.dy~
** Processing line: ~~
** Processing line: ~ # Since acceleration is the change in velocity, the change in y (dy) increases every frame~
** Processing line: ~ args.state.player.dy += args.state.gravity~
** Processing line: ~~
** Processing line: ~ # player's y position is either current y position or y position of top of~
** Processing line: ~ # bridge, whichever has a greater value~
** Processing line: ~ # ensures that the player never goes below the bridge~
** Processing line: ~ args.state.player.y = args.state.player.y.greater(args.state.bridge_top)~
** Processing line: ~~
** Processing line: ~ # player's x position is either the current x position or 0, whichever has a greater value~
** Processing line: ~ # ensures that the player doesn't go too far left (out of the screen's scope)~
** Processing line: ~ args.state.player.x = args.state.player.x.greater(0)~
** Processing line: ~~
** Processing line: ~ # player is not falling if it is located on the top of the bridge~
** Processing line: ~ args.state.player.falling = false if args.state.player.y == args.state.bridge_top~
** Processing line: ~ args.state.player.rect = [args.state.player.x, args.state.player.y, args.state.player.h, args.state.player.w] # sets definition for player~
** Processing line: ~~
** Processing line: ~ args.state.enemy.x += args.state.enemy.dx # velocity; change in x increases by dx~
** Processing line: ~ args.state.enemy.y += args.state.enemy.dy # same with y and dy~
** Processing line: ~~
** Processing line: ~ # ensures that the enemy never goes below the bridge~
** Processing line: ~ args.state.enemy.y = args.state.enemy.y.greater(args.state.bridge_top)~
** Processing line: ~~
** Processing line: ~ # ensures that the enemy never goes too far left (outside the screen's scope)~
** Processing line: ~ args.state.enemy.x = args.state.enemy.x.greater(0)~
** Processing line: ~~
** Processing line: ~ # objects that go up must come down because of gravity~
** Processing line: ~ args.state.enemy.dy += args.state.gravity~
** Processing line: ~~
** Processing line: ~ args.state.enemy.y = args.state.enemy.y.greater(args.state.bridge_top)~
** Processing line: ~~
** Processing line: ~ #sets definition of enemy~
** Processing line: ~ args.state.enemy.rect = [args.state.enemy.x, args.state.enemy.y, args.state.enemy.h, args.state.enemy.w]~
** Processing line: ~~
** Processing line: ~ if args.state.enemy.y == args.state.bridge_top # if enemy is located on the top of the bridge~
** Processing line: ~ args.state.enemy.dy = 0 # there is no change in y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if 60 frames have passed and the enemy is not moving vertically~
** Processing line: ~ if args.state.tick_count.mod_zero?(args.state.enemy_jump_interval) && args.state.enemy.dy == 0~
** Processing line: ~ args.state.enemy.dy = args.state.enemy_jump_power # the enemy jumps up~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if 40 frames have passed or 5 frames have passed since the game ended~
** Processing line: ~ if args.state.tick_count.mod_zero?(args.state.hammer_throw_interval) || args.state.game_over_at.elapsed_time == 5~
** Processing line: ~ # rand will return a number greater than or equal to 0 and less than given variable's value (since max is excluded)~
** Processing line: ~ # that is why we're adding 1, to include the max possibility~
** Processing line: ~ volley_dx = (rand(args.state.hammer_launch_power_default) + 1) * -1 # horizontal movement (follow order of operations)~
** Processing line: ~~
** Processing line: ~ # if the horizontal distance between the player and enemy is less than 128 pixels~
** Processing line: ~ if (args.state.player.x - args.state.enemy.x).abs < 128~
** Processing line: ~ # the change in x won't be that great since the enemy and player are closer to each other~
** Processing line: ~ volley_dx = (rand(args.state.hammer_launch_power_near) + 1) * -1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if the horizontal distance between the player and enemy is greater than 300 pixels~
** Processing line: ~ if (args.state.player.x - args.state.enemy.x).abs > 300~
** Processing line: ~ # change in x will be more drastic since player and enemy are so far apart~
** Processing line: ~ volley_dx = (rand(args.state.hammer_launch_power_far) + 1) * -1 # more drastic change~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ (rand(args.state.max_hammers_per_volley) + 1).map_with_index do |i|~
** Processing line: ~ args.state.enemy.hammer_queue << { # stores hammer values in a hash~
** Processing line: ~ x: args.state.enemy.x,~
** Processing line: ~ w: args.state.hammer_size,~
** Processing line: ~ h: args.state.hammer_size,~
** Processing line: ~ dx: volley_dx, # change in horizontal position~
** Processing line: ~ # multiplication operator takes precedence over addition operator~
** Processing line: ~ throw_at: args.state.tick_count + i * args.state.gap_between_hammers~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # add elements from hammer_queue collection to the hammers collection by~
** Processing line: ~ # finding all hammers that were thrown before the current frame (have already been thrown)~
** Processing line: ~ args.state.enemy.hammers += args.state.enemy.hammer_queue.find_all do |h|~
** Processing line: ~ h[:throw_at] < args.state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.enemy.hammers.each do |h| # sets values for all hammers in collection~
** Processing line: ~ h[:y] ||= args.state.enemy.y + 130~
** Processing line: ~ h[:dy] ||= args.state.hammer_upward_launch_power~
** Processing line: ~ h[:dy] += args.state.gravity # acceleration is change in gravity~
** Processing line: ~ h[:x] += h[:dx] # incremented by change in position~
** Processing line: ~ h[:y] += h[:dy]~
** Processing line: ~ h[:rect] = [h[:x], h[:y], h[:w], h[:h]] # sets definition of hammer's rect~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # reject hammers that have been thrown before current frame (have already been thrown)~
** Processing line: ~ args.state.enemy.hammer_queue = args.state.enemy.hammer_queue.reject do |h|~
** Processing line: ~ h[:throw_at] < args.state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # any hammers with a y position less than 0 are rejected from the hammers collection~
** Processing line: ~ # since they have gone too far down (outside the scope's screen)~
** Processing line: ~ args.state.enemy.hammers = args.state.enemy.hammers.reject { |h| h[:y] < 0 }~
** Processing line: ~~
** Processing line: ~ # if there are any hammers that intersect with (or hit) the player,~
** Processing line: ~ # the reset_player method is called (so the game can start over)~
** Processing line: ~ if args.state.enemy.hammers.any? { |h| h[:rect].intersect_rect?(args.state.player.rect) }~
** Processing line: ~ reset_player args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if the enemy's rect intersects with (or hits) the player,~
** Processing line: ~ # the reset_player method is called (so the game can start over)~
** Processing line: ~ if args.state.enemy.rect.intersect_rect? args.state.player.rect~
** Processing line: ~ reset_player args~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Resets the player by changing its properties back to the values they had at initialization~
** Processing line: ~ def reset_player args~
** Processing line: ~ args.state.player.x = 0~
** Processing line: ~ args.state.player.y = args.state.bridge_top~
** Processing line: ~ args.state.player.dy = 0~
** Processing line: ~ args.state.player.dx = 0~
** Processing line: ~ args.state.enemy.hammers.clear # empties hammer collection~
** Processing line: ~ args.state.enemy.hammer_queue.clear # empties hammer_queue~
** Processing line: ~ args.state.game_over_at = args.state.tick_count # game_over_at set to current frame (or passage of time)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Processes input from the user to move the player~
** Processing line: ~ def input args~
** Processing line: ~ if args.inputs.keyboard.space # if the user presses the space bar~
** Processing line: ~ args.state.player.jumped_at ||= args.state.tick_count # jumped_at is set to current frame~
** Processing line: ~~
** Processing line: ~ # if the time that has passed since the jump is less than the player's jump duration and~
** Processing line: ~ # the player is not falling~
** Processing line: ~ if args.state.player.jumped_at.elapsed_time < args.state.player_jump_power_duration && !args.state.player.falling~
** Processing line: ~ args.state.player.dy = args.state.player_jump_power # change in y is set to power of player's jump~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if the space bar is in the "up" state (or not being pressed down)~
** Processing line: ~ if args.inputs.keyboard.key_up.space~
** Processing line: ~ args.state.player.jumped_at = nil # jumped_at is empty~
** Processing line: ~ args.state.player.falling = true # the player is falling~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.inputs.keyboard.left # if left key is pressed~
** Processing line: ~ args.state.player.dx -= args.state.player_acceleration # dx decreases by acceleration (player goes left)~
** Processing line: ~ # dx is either set to current dx or the negative max run speed (which would be -10),~
** Processing line: ~ # whichever has a greater value~
** Processing line: ~ args.state.player.dx = args.state.player.dx.greater(-args.state.player_max_run_speed)~
** Processing line: ~ elsif args.inputs.keyboard.right # if right key is pressed~
** Processing line: ~ args.state.player.dx += args.state.player_acceleration # dx increases by acceleration (player goes right)~
** Processing line: ~ # dx is either set to current dx or max run speed (which would be 10),~
** Processing line: ~ # whichever has a lesser value~
** Processing line: ~ args.state.player.dx = args.state.player.dx.lesser(args.state.player_max_run_speed)~
** Processing line: ~ else~
** Processing line: ~ args.state.player.dx *= args.state.player_speed_slowdown_rate # dx is scaled down~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.space ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Physics And Collisions - Entities - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Physics And Collisions - Entities - 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/04_physics_and_collisions/03_entities/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - map: Ruby method used to transform data; used in arrays, hashes, and collections.~
** Processing line: ~ Can be used to perform an action on every element of a collection, such as multiplying~
** Processing line: ~ each element by 2 or declaring every element as a new entity.~
** Processing line: ~~
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
** Processing line: ~ For example, you can derive an array of odd numbers from an original array of~
** Processing line: ~ numbers 1 through 10 by rejecting all elements that are even (or divisible by 2).~
** Processing line: ~~
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
** Processing line: ~ In this sample app, new_entity is used to define the properties of enemies and bullets.~
** Processing line: ~ (Remember, you can use state to define ANY property and it will be retained across frames.)~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. The values generate a label on the screen.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~~
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.~
** Processing line: ~~
** Processing line: ~ - args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app shows enemies that contain an id value and the time they were created.~
** Processing line: ~ # These enemies can be removed by shooting at them with bullets.~
** Processing line: ~~
** Processing line: ~ # Calls all methods necessary for the game to function properly.~
** Processing line: ~ def tick args~
** Processing line: ~ tick_instructions args, "Sample app shows how to use args.state.new_entity along with collisions. CLICK to shoot a bullet."~
** Processing line: ~ defaults args~
** Processing line: ~ render args~
** Processing line: ~ calc args~
** Processing line: ~ process_inputs args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values~
** Processing line: ~ # Enemies and bullets start off as empty collections~
** Processing line: ~ def defaults args~
** Processing line: ~ args.state.enemies ||= []~
** Processing line: ~ args.state.bullets ||= []~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Provides each enemy in enemies collection with rectangular border,~
** Processing line: ~ # as well as a label showing id and when they were created~
** Processing line: ~ def render args~
** Processing line: ~ # When you're calling a method that takes no arguments, you can use this & syntax on map.~
** Processing line: ~ # Numbers are being added to x and y in order to keep the text within the enemy's borders.~
** Processing line: ~ args.outputs.borders << args.state.enemies.map(&:rect)~
** Processing line: ~ args.outputs.labels << args.state.enemies.flat_map do |enemy|~
** Processing line: ~ [~
** Processing line: ~ [enemy.x + 4, enemy.y + 29, "id: #{enemy.entity_id}", -3, 0],~
** Processing line: ~ [enemy.x + 4, enemy.y + 17, "created_at: #{enemy.created_at}", -3, 0] # frame enemy was created~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs bullets in bullets collection as rectangular solids~
** Processing line: ~ args.outputs.solids << args.state.bullets.map(&:rect)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls all methods necessary for performing calculations~
** Processing line: ~ def calc args~
** Processing line: ~ add_new_enemies_if_needed args~
** Processing line: ~ move_bullets args~
** Processing line: ~ calculate_collisions args~
** Processing line: ~ remove_bullets_of_screen args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Adds enemies to the enemies collection and sets their values~
** Processing line: ~ def add_new_enemies_if_needed args~
** Processing line: ~ return if args.state.enemies.length >= 10 # if 10 or more enemies, enemies are not added~
** Processing line: ~ return unless args.state.bullets.length == 0 # if user has not yet shot bullet, no enemies are added~
** Processing line: ~~
** Processing line: ~ args.state.enemies += (10 - args.state.enemies.length).map do # adds enemies so there are 10 total~
** Processing line: ~ args.state.new_entity(:enemy) do |e| # each enemy is declared as a new entity~
** Processing line: ~ e.x = 640 + 500 * rand # each enemy is given random position on screen~
** Processing line: ~ e.y = 600 * rand + 50~
** Processing line: ~ e.rect = [e.x, e.y, 130, 30] # sets definition for enemy's rect~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Moves bullets across screen~
** Processing line: ~ # Sets definition of the bullets~
** Processing line: ~ def move_bullets args~
** Processing line: ~ args.state.bullets.each do |bullet| # perform action on each bullet in collection~
** Processing line: ~ bullet.x += bullet.speed # increment x by speed (bullets fly horizontally across screen)~
** Processing line: ~~
** Processing line: ~ # By randomizing the value that increments bullet.y, the bullet does not fly straight up and out~
** Processing line: ~ # of the scope of the screen. Try removing what follows bullet.speed, or changing 0.25 to 1.25 to~
** Processing line: ~ # see what happens to the bullet's movement.~
** Processing line: ~ bullet.y += bullet.speed.*(0.25).randomize(:ratio, :sign)~
** Processing line: ~ bullet.rect = [bullet.x, bullet.y, bullet.size, bullet.size] # sets definition of bullet's rect~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Determines if a bullet hits an enemy~
** Processing line: ~ def calculate_collisions args~
** Processing line: ~ args.state.bullets.each do |bullet| # perform action on every bullet and enemy in collections~
** Processing line: ~ args.state.enemies.each do |enemy|~
** Processing line: ~ # if bullet has not exploded yet and the bullet hits an enemy~
** Processing line: ~ if !bullet.exploded && bullet.rect.intersect_rect?(enemy.rect)~
** Processing line: ~ bullet.exploded = true # bullet explodes~
** Processing line: ~ enemy.dead = true # enemy is killed~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # All exploded bullets are rejected or removed from the bullets collection~
** Processing line: ~ # and any dead enemy is rejected from the enemies collection.~
** Processing line: ~ args.state.bullets = args.state.bullets.reject(&:exploded)~
** Processing line: ~ args.state.enemies = args.state.enemies.reject(&:dead)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Bullets are rejected from bullets collection once their position exceeds the width of screen~
** Processing line: ~ def remove_bullets_of_screen args~
** Processing line: ~ args.state.bullets = args.state.bullets.reject { |bullet| bullet.x > 1280 } # screen width is 1280~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls fire_bullet method~
** Processing line: ~ def process_inputs args~
** Processing line: ~ fire_bullet args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Once mouse is clicked by the user to fire a bullet, a new bullet is added to bullets collection~
** Processing line: ~ def fire_bullet args~
** Processing line: ~ return unless args.inputs.mouse.click # return unless mouse is clicked~
** Processing line: ~ args.state.bullets << args.state.new_entity(:bullet) do |bullet| # new bullet is declared a new entity~
** Processing line: ~ bullet.y = args.inputs.mouse.click.point.y # set to the y value of where the mouse was clicked~
** Processing line: ~ bullet.x = 0 # starts on the left side of the screen~
** Processing line: ~ bullet.size = 10~
** Processing line: ~ bullet.speed = 10 * rand + 2 # speed of a bullet is randomized~
** Processing line: ~ bullet.rect = [bullet.x, bullet.y, bullet.size, bullet.size] # definition is set~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.space ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Physics And Collisions - Box Collision - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Physics And Collisions - Box Collision - 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/04_physics_and_collisions/04_box_collision/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - first: Returns the first element of the array.~
** Processing line: ~ For example, if we have an array~
** Processing line: ~ numbers = [1, 2, 3, 4, 5]~
** Processing line: ~ and we call first by saying~
** Processing line: ~ numbers.first~
** Processing line: ~ the number 1 will be returned because it is the first element of the numbers array.~
** Processing line: ~~
** Processing line: ~ - num1.idiv(num2): Divides two numbers and returns an integer.~
** Processing line: ~ For example,~
** Processing line: ~ 16.idiv(3) = 5, because 16 / 3 is 5.33333 returned as an integer.~
** Processing line: ~ 16.idiv(4) = 4, because 16 / 4 is 4 and already has no decimal.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - find_all: Finds all values that satisfy specific requirements.~
** Processing line: ~~
** Processing line: ~ - ARRAY#intersect_rect?: An array with at least four values is~
** Processing line: ~ considered a rect. The intersect_rect? function returns true~
** Processing line: ~ or false depending on if the two rectangles intersect.~
** Processing line: ~~
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app allows users to create tiles and place them anywhere on the screen as obstacles.~
** Processing line: ~ # The player can then move and maneuver around them.~
** Processing line: ~~
** Processing line: ~ class PoorManPlatformerPhysics~
** Processing line: ~ attr_accessor :grid, :inputs, :state, :outputs~
** Processing line: ~~
** Processing line: ~ # Calls all methods necessary for the app to run successfully.~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render~
** Processing line: ~ calc~
** Processing line: ~ process_inputs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values for variables.~
** Processing line: ~ # The ||= sign means that the variable will only be set to the value following the = sign if the value has~
** Processing line: ~ # not already been set before. Intialization happens only in the first frame.~
** Processing line: ~ def defaults~
** Processing line: ~ state.tile_size = 64~
** Processing line: ~ state.gravity = -0.2~
** Processing line: ~ state.previous_tile_size ||= state.tile_size~
** Processing line: ~ state.x ||= 0~
** Processing line: ~ state.y ||= 800~
** Processing line: ~ state.dy ||= 0~
** Processing line: ~ state.dx ||= 0~
** Processing line: ~ state.world ||= []~
** Processing line: ~ state.world_lookup ||= {}~
** Processing line: ~ state.world_collision_rects ||= []~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs solids and borders of different colors for the world and collision_rects collections.~
** Processing line: ~ def render~
** Processing line: ~~
** Processing line: ~ # Sets a black background on the screen (Comment this line out and the background will become white.)~
** Processing line: ~ # Also note that black is the default color for when no color is assigned.~
** Processing line: ~ outputs.solids << grid.rect~
** Processing line: ~~
** Processing line: ~ # The position, size, and color (white) are set for borders given to the world collection.~
** Processing line: ~ # Try changing the color by assigning different numbers (between 0 and 255) to the last three parameters.~
** Processing line: ~ outputs.borders << state.world.map do |x, y|~
** Processing line: ~ [x * state.tile_size,~
** Processing line: ~ y * state.tile_size,~
** Processing line: ~ state.tile_size,~
** Processing line: ~ state.tile_size, 255, 255, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The top, bottom, and sides of the borders for collision_rects are different colors.~
** Processing line: ~ outputs.borders << state.world_collision_rects.map do |e|~
** Processing line: ~ [~
** Processing line: ~ [e[:top], 0, 170, 0], # top is a shade of green~
** Processing line: ~ [e[:bottom], 0, 100, 170], # bottom is a shade of greenish-blue~
** Processing line: ~ [e[:left_right], 170, 0, 0], # left and right are a shade of red~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the position, size, and color (a shade of green) of the borders of only the player's~
** Processing line: ~ # box and outputs it. If you change the 180 to 0, the player's box will be black and you~
** Processing line: ~ # won't be able to see it (because it will match the black background).~
** Processing line: ~ outputs.borders << [state.x,~
** Processing line: ~ state.y,~
** Processing line: ~ state.tile_size,~
** Processing line: ~ state.tile_size, 0, 180, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls methods needed to perform calculations.~
** Processing line: ~ def calc~
** Processing line: ~ calc_world_lookup~
** Processing line: ~ calc_player~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Performs calculations on world_lookup and sets values.~
** Processing line: ~ def calc_world_lookup~
** Processing line: ~~
** Processing line: ~ # If the tile size isn't equal to the previous tile size,~
** Processing line: ~ # the previous tile size is set to the tile size,~
** Processing line: ~ # and world_lookup hash is set to empty.~
** Processing line: ~ if state.tile_size != state.previous_tile_size~
** Processing line: ~ state.previous_tile_size = state.tile_size~
** Processing line: ~ state.world_lookup = {} # empty hash~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # return if the world_lookup hash has keys (or, in other words, is not empty)~
** Processing line: ~ # return unless the world collection has values inside of it (or is not empty)~
** Processing line: ~ return if state.world_lookup.keys.length > 0~
** Processing line: ~ return unless state.world.length > 0~
** Processing line: ~~
** Processing line: ~ # Starts with an empty hash for world_lookup.~
** Processing line: ~ # Searches through the world and finds the coordinates that exist.~
** Processing line: ~ state.world_lookup = {}~
** Processing line: ~ state.world.each { |x, y| state.world_lookup[[x, y]] = true }~
** Processing line: ~~
** Processing line: ~ # Assigns world_collision_rects for every sprite drawn.~
** Processing line: ~ state.world_collision_rects =~
** Processing line: ~ state.world_lookup~
** Processing line: ~ .keys~
** Processing line: ~ .map do |coord_x, coord_y|~
** Processing line: ~ s = state.tile_size~
** Processing line: ~ # multiply by tile size so the grid coordinates; sets pixel value~
** Processing line: ~ # don't forget that position is denoted by bottom left corner~
** Processing line: ~ # set x = coord_x or y = coord_y and see what happens!~
** Processing line: ~ x = s * coord_x~
** Processing line: ~ y = s * coord_y~
** Processing line: ~ {~
** Processing line: ~ # The values added to x, y, and s position the world_collision_rects so they all appear~
** Processing line: ~ # stacked (on top of world rects) but don't directly overlap.~
** Processing line: ~ # Remove these added values and mess around with the rect placement!~
** Processing line: ~ args: [coord_x, coord_y],~
** Processing line: ~ left_right: [x, y + 4, s, s - 6], # hash keys and values~
** Processing line: ~ top: [x + 4, y + 6, s - 8, s - 6],~
** Processing line: ~ bottom: [x + 1, y - 1, s - 2, s - 8],~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Performs calculations to change the x and y values of the player's box.~
** Processing line: ~ def calc_player~
** Processing line: ~~
** Processing line: ~ # Since acceleration is the change in velocity, the change in y (dy) increases every frame.~
** Processing line: ~ # What goes up must come down because of gravity.~
** Processing line: ~ state.dy += state.gravity~
** Processing line: ~~
** Processing line: ~ # Calls the calc_box_collision and calc_edge_collision methods.~
** Processing line: ~ calc_box_collision~
** Processing line: ~ calc_edge_collision~
** Processing line: ~~
** Processing line: ~ # Since velocity is the change in position, the change in y increases by dy. Same with x and dx.~
** Processing line: ~ state.y += state.dy~
** Processing line: ~ state.x += state.dx~
** Processing line: ~~
** Processing line: ~ # Scales dx down.~
** Processing line: ~ state.dx *= 0.8~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls methods needed to determine collisions between player and world_collision rects.~
** Processing line: ~ def calc_box_collision~
** Processing line: ~ return unless state.world_lookup.keys.length > 0 # return unless hash has atleast 1 key~
** Processing line: ~ collision_floor!~
** Processing line: ~ collision_left!~
** Processing line: ~ collision_right!~
** Processing line: ~ collision_ceiling!~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Finds collisions between the bottom of the player's rect and the top of a world_collision_rect.~
** Processing line: ~ def collision_floor!~
** Processing line: ~ return unless state.dy <= 0 # return unless player is going down or is as far down as possible~
** Processing line: ~ player_rect = [state.x, state.y - 0.1, state.tile_size, state.tile_size] # definition of player~
** Processing line: ~~
** Processing line: ~ # Goes through world_collision_rects to find all intersections between the bottom of player's rect and~
** Processing line: ~ # the top of a world_collision_rect (hence the "-0.1" above)~
** Processing line: ~ floor_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:top].intersect_rect?(player_rect, collision_tollerance) }~
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless floor_collisions # return unless collision occurred~
** Processing line: ~ state.y = floor_collisions[:top].top # player's y is set to the y of the top of the collided rect~
** Processing line: ~ state.dy = 0 # if a collision occurred, the player's rect isn't moving because its path is blocked~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Finds collisions between the player's left side and the right side of a world_collision_rect.~
** Processing line: ~ def collision_left!~
** Processing line: ~ return unless state.dx < 0 # return unless player is moving left~
** Processing line: ~ player_rect = [state.x - 0.1, state.y, state.tile_size, state.tile_size]~
** Processing line: ~~
** Processing line: ~ # Goes through world_collision_rects to find all intersections beween the player's left side and the~
** Processing line: ~ # right side of a world_collision_rect.~
** Processing line: ~ left_side_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, collision_tollerance) }~
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless left_side_collisions # return unless collision occurred~
** Processing line: ~~
** Processing line: ~ # player's x is set to the value of the x of the collided rect's right side~
** Processing line: ~ state.x = left_side_collisions[:left_right].right~
** Processing line: ~ state.dx = 0 # player isn't moving left because its path is blocked~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Finds collisions between the right side of the player and the left side of a world_collision_rect.~
** Processing line: ~ def collision_right!~
** Processing line: ~ return unless state.dx > 0 # return unless player is moving right~
** Processing line: ~ player_rect = [state.x + 0.1, state.y, state.tile_size, state.tile_size]~
** Processing line: ~~
** Processing line: ~ # Goes through world_collision_rects to find all intersections between the player's right side~
** Processing line: ~ # and the left side of a world_collision_rect (hence the "+0.1" above)~
** Processing line: ~ right_side_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, collision_tollerance) }~
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless right_side_collisions # return unless collision occurred~
** Processing line: ~~
** Processing line: ~ # player's x is set to the value of the collided rect's left, minus the size of a rect~
** Processing line: ~ # tile size is subtracted because player's position is denoted by bottom left corner~
** Processing line: ~ state.x = right_side_collisions[:left_right].left - state.tile_size~
** Processing line: ~ state.dx = 0 # player isn't moving right because its path is blocked~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Finds collisions between the top of the player's rect and the bottom of a world_collision_rect.~
** Processing line: ~ def collision_ceiling!~
** Processing line: ~ return unless state.dy > 0 # return unless player is moving up~
** Processing line: ~ player_rect = [state.x, state.y + 0.1, state.tile_size, state.tile_size]~
** Processing line: ~~
** Processing line: ~ # Goes through world_collision_rects to find intersections between the bottom of a~
** Processing line: ~ # world_collision_rect and the top of the player's rect (hence the "+0.1" above)~
** Processing line: ~ ceil_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:bottom].intersect_rect?(player_rect, collision_tollerance) }~
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless ceil_collisions # return unless collision occurred~
** Processing line: ~~
** Processing line: ~ # player's y is set to the bottom y of the rect it collided with, minus the size of a rect~
** Processing line: ~ state.y = ceil_collisions[:bottom].y - state.tile_size~
** Processing line: ~ state.dy = 0 # if a collision occurred, the player isn't moving up because its path is blocked~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Makes sure the player remains within the screen's dimensions.~
** Processing line: ~ def calc_edge_collision~
** Processing line: ~~
** Processing line: ~ #Ensures that the player doesn't fall below the map.~
** Processing line: ~ if state.y < 0~
** Processing line: ~ state.y = 0~
** Processing line: ~ state.dy = 0~
** Processing line: ~~
** Processing line: ~ #Ensures that the player doesn't go too high.~
** Processing line: ~ # Position of player is denoted by bottom left hand corner, which is why we have to subtract the~
** Processing line: ~ # size of the player's box (so it remains visible on the screen)~
** Processing line: ~ elsif state.y > 720 - state.tile_size # if the player's y position exceeds the height of screen~
** Processing line: ~ state.y = 720 - state.tile_size # the player will remain as high as possible while staying on screen~
** Processing line: ~ state.dy = 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Ensures that the player remains in the horizontal range that it is supposed to.~
** Processing line: ~ if state.x >= 1280 - state.tile_size && state.dx > 0 # if player moves too far right~
** Processing line: ~ state.x = 1280 - state.tile_size # player will remain as right as possible while staying on screen~
** Processing line: ~ state.dx = 0~
** Processing line: ~ elsif state.x <= 0 && state.dx < 0 # if player moves too far left~
** Processing line: ~ state.x = 0 # player will remain as left as possible while remaining on screen~
** Processing line: ~ state.dx = 0~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Processes input from the user on the keyboard.~
** Processing line: ~ def process_inputs~
** Processing line: ~ if inputs.mouse.down~
** Processing line: ~ state.world_lookup = {}~
** Processing line: ~ x, y = to_coord inputs.mouse.down.point # gets x, y coordinates for the grid~
** Processing line: ~~
** Processing line: ~ if state.world.any? { |loc| loc == [x, y] } # checks if coordinates duplicate~
** Processing line: ~ state.world = state.world.reject { |loc| loc == [x, y] } # erases tile space~
** Processing line: ~ else~
** Processing line: ~ state.world << [x, y] # If no duplicates, adds to world collection~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets dx to 0 if the player lets go of arrow keys.~
** Processing line: ~ if inputs.keyboard.key_up.right~
** Processing line: ~ state.dx = 0~
** Processing line: ~ elsif inputs.keyboard.key_up.left~
** Processing line: ~ state.dx = 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets dx to 3 in whatever direction the player chooses.~
** Processing line: ~ if inputs.keyboard.key_held.right # if right key is pressed~
** Processing line: ~ state.dx = 3~
** Processing line: ~ elsif inputs.keyboard.key_held.left # if left key is pressed~
** Processing line: ~ state.dx = -3~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #Sets dy to 5 to make the player ~fly~ when they press the space bar~
** Processing line: ~ if inputs.keyboard.key_held.space~
** Processing line: ~ state.dy = 5~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_coord point~
** Processing line: ~~
** Processing line: ~ # Integer divides (idiv) point.x to turn into grid~
** Processing line: ~ # Then, you can just multiply each integer by state.tile_size later so the grid coordinates.~
** Processing line: ~ [point.x.idiv(state.tile_size), point.y.idiv(state.tile_size)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Represents the tolerance for a collision between the player's rect and another rect.~
** Processing line: ~ def collision_tollerance~
** Processing line: ~ 0.0~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $platformer_physics = PoorManPlatformerPhysics.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $platformer_physics.grid = args.grid~
** Processing line: ~ $platformer_physics.inputs = args.inputs~
** Processing line: ~ $platformer_physics.state = args.state~
** Processing line: ~ $platformer_physics.outputs = args.outputs~
** Processing line: ~ $platformer_physics.tick~
** Processing line: ~ tick_instructions args, "Sample app shows platformer collisions. CLICK to place box. ARROW keys to move around. SPACE to jump."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Physics And Collisions - Box Collision 2 - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Physics And Collisions - Box Collision 2 - 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/04_physics_and_collisions/05_box_collision_2/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - times: Performs an action a specific number of times.~
** Processing line: ~ For example, if we said~
** Processing line: ~ 5.times puts "Hello DragonRuby",~
** Processing line: ~ then we'd see the words "Hello DragonRuby" printed on the console 5 times.~
** Processing line: ~~
** Processing line: ~ - split: Divides a string into substrings based on a delimiter.~
** Processing line: ~ For example, if we had a command~
** Processing line: ~ "DragonRuby is awesome".split(" ")~
** Processing line: ~ then the result would be~
** Processing line: ~ ["DragonRuby", "is", "awesome"] because the words are separated by a space delimiter.~
** Processing line: ~~
** Processing line: ~ - join: Opposite of split; converts each element of array to a string separated by delimiter.~
** Processing line: ~ For example, if we had a command~
** Processing line: ~ ["DragonRuby","is","awesome"].join(" ")~
** Processing line: ~ then the result would be~
** Processing line: ~ "DragonRuby is awesome".~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - to_s: Returns a string representation of an object.~
** Processing line: ~ For example, if we had~
** Processing line: ~ 500.to_s~
** Processing line: ~ the string "500" would be returned.~
** Processing line: ~ Similar to to_i, which returns an integer representation of an object.~
** Processing line: ~~
** Processing line: ~ - elapsed_time: How many frames have passed since the click event.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. Values in the array generate labels on the screen.~
** Processing line: ~ The parameters are: [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - inputs.mouse.down: Determines whether or not the mouse is being pressed down.~
** Processing line: ~ The position of the mouse when it is pressed down can be found using inputs.mouse.down.point.(x|y).~
** Processing line: ~~
** Processing line: ~ - first: Returns the first element of the array.~
** Processing line: ~~
** Processing line: ~ - num1.idiv(num2): Divides two numbers and returns an integer.~
** Processing line: ~~
** Processing line: ~ - find_all: Finds all values that satisfy specific requirements.~
** Processing line: ~~
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if two rectangles intersect.~
** Processing line: ~~
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
** Processing line: ~~
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ MAP_FILE_PATH = 'app/map.txt' # the map.txt file in the app folder contains exported map~
** Processing line: ~~
** Processing line: ~ class MetroidvaniaStarter~
** Processing line: ~ attr_accessor :grid, :inputs, :state, :outputs, :gtk~
** Processing line: ~~
** Processing line: ~ # Calls methods needed to run the game properly.~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render~
** Processing line: ~ calc~
** Processing line: ~ process_inputs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets all the default variables.~
** Processing line: ~ # '||' states that initialization occurs only in the first frame.~
** Processing line: ~ def defaults~
** Processing line: ~ state.tile_size = 64~
** Processing line: ~ state.gravity = -0.2~
** Processing line: ~ state.player_width = 60~
** Processing line: ~ state.player_height = 64~
** Processing line: ~ state.collision_tolerance = 0.0~
** Processing line: ~ state.previous_tile_size ||= state.tile_size~
** Processing line: ~ state.x ||= 0~
** Processing line: ~ state.y ||= 800~
** Processing line: ~ state.dy ||= 0~
** Processing line: ~ state.dx ||= 0~
** Processing line: ~ attempt_load_world_from_file~
** Processing line: ~ state.world_lookup ||= { }~
** Processing line: ~ state.world_collision_rects ||= []~
** Processing line: ~ state.mode ||= :creating # alternates between :creating and :selecting for sprite selection~
** Processing line: ~ state.select_menu ||= [0, 720, 1280, 720]~
** Processing line: ~ #=======================================IMPORTANT=======================================#~
** Processing line: ~ # When adding sprites, please label them "image1.png", "image2.png", image3".png", etc.~
** Processing line: ~ # Once you have done that, adjust "state.sprite_quantity" to how many sprites you have.~
** Processing line: ~ #=======================================================================================#~
** Processing line: ~ state.sprite_quantity ||= 20 # IMPORTANT TO ALTER IF SPRITES ADDED IF YOU ADD MORE SPRITES~
** Processing line: ~ state.sprite_coords ||= []~
** Processing line: ~ state.banner_coords ||= [640, 680 + 720]~
** Processing line: ~ state.sprite_selected ||= 1~
** Processing line: ~ state.map_saved_at ||= 0~
** Processing line: ~~
** Processing line: ~ # Sets all the cordinate values for the sprite selection screen into a grid~
** Processing line: ~ # Displayed when 's' is pressed by player to access sprites~
** Processing line: ~ if state.sprite_coords == [] # if sprite_coords is an empty array~
** Processing line: ~ count = 1~
** Processing line: ~ temp_x = 165 # sets a starting x and y position for display~
** Processing line: ~ temp_y = 500 + 720~
** Processing line: ~ state.sprite_quantity.times do # for the number of sprites you have~
** Processing line: ~ state.sprite_coords += [[temp_x, temp_y, count]] # add element to sprite_coords array~
** Processing line: ~ temp_x += 100 # increment temp_x~
** Processing line: ~ count += 1 # increment count~
** Processing line: ~ if temp_x > 1280 - (165 + 50) # if exceeding specific horizontal width on screen~
** Processing line: ~ temp_x = 165 # a new row of sprites starts~
** Processing line: ~ temp_y -= 75 # new row of sprites starts 75 units lower than the previous row~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Places sprites~
** Processing line: ~ def render~
** Processing line: ~~
** Processing line: ~ # Sets the x, y, width, height, and image path for each sprite in the world collection.~
** Processing line: ~ outputs.sprites << state.world.map do |x, y, sprite|~
** Processing line: ~ [x * state.tile_size, # multiply by size so grid coordinates; pixel value of location~
** Processing line: ~ y * state.tile_size,~
** Processing line: ~ state.tile_size,~
** Processing line: ~ state.tile_size,~
** Processing line: ~ 'sprites/image' + sprite.to_s + '.png'] # uses concatenation to create unique image path~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs sprite for the player by setting x, y, width, height, and image path~
** Processing line: ~ outputs.sprites << [state.x,~
** Processing line: ~ state.y,~
** Processing line: ~ state.player_width,~
** Processing line: ~ state.player_height,'sprites/player.png']~
** Processing line: ~~
** Processing line: ~ # Outputs labels as primitives in top right of the screen~
** Processing line: ~ outputs.primitives << [920, 700, 'Press \'s\' to access sprites.', 1, 0].label~
** Processing line: ~ outputs.primitives << [920, 675, 'Click existing sprite to delete.', 1, 0].label~
** Processing line: ~~
** Processing line: ~ outputs.primitives << [920, 640, '<- and -> to move.', 1, 0].label~
** Processing line: ~ outputs.primitives << [920, 615, 'Press and hold space to jump.', 1, 0].label~
** Processing line: ~~
** Processing line: ~ outputs.primitives << [920, 580, 'Press \'e\' to export current map.', 1, 0].label~
** Processing line: ~~
** Processing line: ~ # if the map is saved and less than 120 frames have passed, the label is displayed~
** Processing line: ~ if state.map_saved_at > 0 && state.map_saved_at.elapsed_time < 120~
** Processing line: ~ outputs.primitives << [920, 555, 'Map has been exported!', 1, 0, 50, 100, 50].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # If player hits 's', following appears~
** Processing line: ~ if state.mode == :selecting~
** Processing line: ~ # White background for sprite selection~
** Processing line: ~ outputs.primitives << [state.select_menu, 255, 255, 255].solid~
** Processing line: ~~
** Processing line: ~ # Select tile label at the top of the screen~
** Processing line: ~ outputs.primitives << [state.banner_coords.x, state.banner_coords.y, "Select Sprite (sprites located in \"sprites\" folder)", 10, 1, 0, 0, 0, 255].label~
** Processing line: ~~
** Processing line: ~ # Places sprites in locations calculated in the defaults function~
** Processing line: ~ outputs.primitives << state.sprite_coords.map do |x, y, order|~
** Processing line: ~ [x, y, 50, 50, 'sprites/image' + order.to_s + ".png"].sprite~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates sprite following mouse to help indicate which sprite you have selected~
** Processing line: ~ # 10 is subtracted from the mouse's x position so that the sprite is not covered by the mouse icon~
** Processing line: ~ outputs.primitives << [inputs.mouse.position.x - 10, inputs.mouse.position.y,~
** Processing line: ~ 10, 10, 'sprites/image' + state.sprite_selected.to_s + ".png"].sprite~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls methods that perform calculations~
** Processing line: ~ def calc~
** Processing line: ~ calc_in_game~
** Processing line: ~ calc_sprite_selection~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls methods that perform calculations (if in creating mode)~
** Processing line: ~ def calc_in_game~
** Processing line: ~ return unless state.mode == :creating~
** Processing line: ~ calc_world_lookup~
** Processing line: ~ calc_player~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_world_lookup~
** Processing line: ~ # If the tile size isn't equal to the previous tile size,~
** Processing line: ~ # the previous tile size is set to the tile size,~
** Processing line: ~ # and world_lookup hash is set to empty.~
** Processing line: ~ if state.tile_size != state.previous_tile_size~
** Processing line: ~ state.previous_tile_size = state.tile_size~
** Processing line: ~ state.world_lookup = {}~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # return if world_lookup is not empty or if world is empty~
** Processing line: ~ return if state.world_lookup.keys.length > 0~
** Processing line: ~ return unless state.world.length > 0~
** Processing line: ~~
** Processing line: ~ # Searches through the world and finds the coordinates that exist~
** Processing line: ~ state.world_lookup = {}~
** Processing line: ~ state.world.each { |x, y| state.world_lookup[[x, y]] = true }~
** 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 |coord_x, coord_y|~
** Processing line: ~ s = state.tile_size~
** Processing line: ~ # Multiplying by s (the size of a tile) ensures that the rect is~
** Processing line: ~ # placed exactly where you want it to be placed (causes grid to coordinate)~
** Processing line: ~ # How many pixels horizontally across and vertically up and down~
** Processing line: ~ x = s * coord_x~
** Processing line: ~ y = s * coord_y~
** Processing line: ~ {~
** Processing line: ~ args: [coord_x, coord_y],~
** Processing line: ~ left_right: [x, y + 4, s, s - 6], # hash keys and values~
** Processing line: ~ top: [x + 4, y + 6, s - 8, s - 6],~
** Processing line: ~ bottom: [x + 1, y - 1, s - 2, s - 8],~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calculates movement of player and calls methods that perform collision calculations~
** Processing line: ~ def calc_player~
** Processing line: ~ state.dy += state.gravity # what goes up must come down because of gravity~
** Processing line: ~ calc_box_collision~
** Processing line: ~ calc_edge_collision~
** Processing line: ~ state.y += state.dy # Since velocity is the change in position, the change in y increases by dy~
** Processing line: ~ state.x += state.dx # Ditto line above but dx and x~
** Processing line: ~ state.dx *= 0.8 # Scales dx down~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls methods that determine whether the player collides with any world_collision_rects.~
** Processing line: ~ def calc_box_collision~
** Processing line: ~ return unless state.world_lookup.keys.length > 0 # return unless hash has atleast 1 key~
** Processing line: ~ collision_floor~
** Processing line: ~ collision_left~
** Processing line: ~ collision_right~
** Processing line: ~ collision_ceiling~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Finds collisions between the bottom of the player's rect and the top of a world_collision_rect.~
** Processing line: ~ def collision_floor~
** Processing line: ~ return unless state.dy <= 0 # return unless player is going down or is as far down as possible~
** Processing line: ~ player_rect = [state.x, next_y, state.tile_size, state.tile_size] # definition of player~
** Processing line: ~~
** Processing line: ~ # Runs through all the sprites on the field and finds all intersections between player's~
** Processing line: ~ # bottom and the top of a rect.~
** Processing line: ~ floor_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:top].intersect_rect?(player_rect, state.collision_tolerance) }~
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless floor_collisions # performs following changes if a collision has occurred~
** Processing line: ~ state.y = floor_collisions[:top].top # y of player is set to the y of the colliding rect's top~
** Processing line: ~ state.dy = 0 # no change in y because the player's path is blocked~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Finds collisions between the player's left side and the right side of a world_collision_rect.~
** Processing line: ~ def collision_left~
** Processing line: ~ return unless state.dx < 0 # return unless player is moving left~
** Processing line: ~ player_rect = [next_x, state.y, state.tile_size, state.tile_size]~
** Processing line: ~~
** Processing line: ~ # Runs through all the sprites on the field and finds all intersections between the player's left side~
** Processing line: ~ # and the right side of a rect.~
** Processing line: ~ left_side_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }~
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless left_side_collisions # return unless collision occurred~
** Processing line: ~ state.x = left_side_collisions[:left_right].right # sets player's x to the x of the colliding rect's right side~
** Processing line: ~ state.dx = 0 # no change in x because the player's path is blocked~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Finds collisions between the right side of the player and the left side of a world_collision_rect.~
** Processing line: ~ def collision_right~
** Processing line: ~ return unless state.dx > 0 # return unless player is moving right~
** Processing line: ~ player_rect = [next_x, state.y, state.tile_size, state.tile_size]~
** Processing line: ~~
** Processing line: ~ # Runs through all the sprites on the field and finds all intersections between the player's~
** Processing line: ~ # right side and the left side of a rect.~
** Processing line: ~ right_side_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }~
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless right_side_collisions # return unless collision occurred~
** Processing line: ~ state.x = right_side_collisions[:left_right].left - state.tile_size # player's x is set to the x of colliding rect's left side (minus tile size since x is the player's bottom left corner)~
** Processing line: ~ state.dx = 0 # no change in x because the player's path is blocked~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Finds collisions between the top of the player's rect and the bottom of a world_collision_rect.~
** Processing line: ~ def collision_ceiling~
** Processing line: ~ return unless state.dy > 0 # return unless player is moving up~
** Processing line: ~ player_rect = [state.x, next_y, state.player_width, state.player_height]~
** Processing line: ~~
** Processing line: ~ # Runs through all the sprites on the field and finds all intersections between the player's top~
** Processing line: ~ # and the bottom of a rect.~
** Processing line: ~ ceil_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:bottom].intersect_rect?(player_rect, state.collision_tolerance) }~
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless ceil_collisions # return unless collision occurred~
** Processing line: ~ state.y = ceil_collisions[:bottom].y - state.tile_size # player's y is set to the y of the colliding rect's bottom (minus tile size)~
** Processing line: ~ state.dy = 0 # no change in y because the player's path is blocked~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Makes sure the player remains within the screen's dimensions.~
** Processing line: ~ def calc_edge_collision~
** Processing line: ~ # Ensures that player doesn't fall below the map~
** Processing line: ~ if next_y < 0 && state.dy < 0 # if player is moving down and is about to fall (next_y) below the map's scope~
** Processing line: ~ state.y = 0 # 0 is the lowest the player can be while staying on the screen~
** Processing line: ~ state.dy = 0~
** Processing line: ~ # Ensures player doesn't go insanely high~
** Processing line: ~ elsif next_y > 720 - state.tile_size && state.dy > 0 # if player is moving up, about to exceed map's scope~
** Processing line: ~ state.y = 720 - state.tile_size # if we don't subtract tile_size, we won't be able to see the player on the screen~
** Processing line: ~ state.dy = 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Ensures that player remains in the horizontal range its supposed to~
** Processing line: ~ if state.x >= 1280 - state.tile_size && state.dx > 0 # if the player is moving too far right~
** Processing line: ~ state.x = 1280 - state.tile_size # farthest right the player can be while remaining in the screen's scope~
** Processing line: ~ state.dx = 0~
** Processing line: ~ elsif state.x <= 0 && state.dx < 0 # if the player is moving too far left~
** Processing line: ~ state.x = 0 # farthest left the player can be while remaining in the screen's scope~
** Processing line: ~ state.dx = 0~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_sprite_selection~
** Processing line: ~ # Does the transition to bring down the select sprite screen~
** Processing line: ~ if state.mode == :selecting && state.select_menu.y != 0~
** Processing line: ~ state.select_menu.y = 0 # sets y position of select menu (shown when 's' is pressed)~
** Processing line: ~ state.banner_coords.y = 680 # sets y position of Select Sprite banner~
** Processing line: ~ state.sprite_coords = state.sprite_coords.map do |x, y, w, h|~
** Processing line: ~ [x, y - 720, w, h] # sets definition of sprites (change '-' to '+' and the sprites can't be seen)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Does the transition to leave the select sprite screen~
** Processing line: ~ if state.mode == :creating && state.select_menu.y != 720~
** Processing line: ~ state.select_menu.y = 720 # sets y position of select menu (menu is retreated back up)~
** Processing line: ~ state.banner_coords.y = 1000 # sets y position of Select Sprite banner~
** Processing line: ~ state.sprite_coords = state.sprite_coords.map do |x, y, w, h|~
** Processing line: ~ [x, y + 720, w, h] # sets definition of all elements in collection~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs~
** Processing line: ~ # If the state.mode is back and if the menu has retreated back up~
** Processing line: ~ # call methods that process user inputs~
** Processing line: ~ if state.mode == :creating~
** Processing line: ~ process_inputs_player_movement~
** Processing line: ~ process_inputs_place_tile~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # For each sprite_coordinate added, check what sprite was selected~
** Processing line: ~ if state.mode == :selecting~
** Processing line: ~ state.sprite_coords.map do |x, y, order| # goes through all sprites in collection~
** Processing line: ~ # checks that a specific sprite was pressed based on x, y position~
** Processing line: ~ if inputs.mouse.down && # the && (and) sign means ALL statements must be true for the evaluation to be true~
** Processing line: ~ inputs.mouse.down.point.x >= x && # x is greater than or equal to sprite's x and~
** Processing line: ~ inputs.mouse.down.point.x <= x + 50 && # x is less than or equal to 50 pixels to the right~
** Processing line: ~ inputs.mouse.down.point.y >= y && # y is greater than or equal to sprite's y~
** Processing line: ~ inputs.mouse.down.point.y <= y + 50 # y is less than or equal to 50 pixels up~
** Processing line: ~ state.sprite_selected = order # sprite is chosen~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ inputs_export_stage~
** Processing line: ~ process_inputs_show_available_sprites~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Moves the player based on the keys they press on their keyboard~
** Processing line: ~ def process_inputs_player_movement~
** Processing line: ~ # Sets dx to 0 if the player lets go of arrow keys (player won't move left or right)~
** Processing line: ~ if inputs.keyboard.key_up.right~
** Processing line: ~ state.dx = 0~
** Processing line: ~ elsif inputs.keyboard.key_up.left~
** Processing line: ~ state.dx = 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets dx to 3 in whatever direction the player chooses when they hold down (or press) the left or right keys~
** Processing line: ~ if inputs.keyboard.key_held.right~
** Processing line: ~ state.dx = 3~
** Processing line: ~ elsif inputs.keyboard.key_held.left~
** Processing line: ~ state.dx = -3~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets dy to 5 to make the player ~fly~ when they press the space bar on their keyboard~
** Processing line: ~ if inputs.keyboard.key_held.space~
** Processing line: ~ state.dy = 5~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Adds tile in the place the user holds down the mouse~
** Processing line: ~ def process_inputs_place_tile~
** Processing line: ~ if inputs.mouse.down # if mouse is pressed~
** Processing line: ~ state.world_lookup = {}~
** Processing line: ~ x, y = to_coord inputs.mouse.down.point # gets x, y coordinates for the grid~
** Processing line: ~~
** Processing line: ~ # Checks if any coordinates duplicate (already exist in world)~
** Processing line: ~ if state.world.any? { |existing_x, existing_y, n| existing_x == x && existing_y == y }~
** Processing line: ~ #erases existing tile space by rejecting them from world~
** Processing line: ~ state.world = state.world.reject do |existing_x, existing_y, n|~
** Processing line: ~ existing_x == x && existing_y == y~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ state.world << [x, y, state.sprite_selected] # If no duplicates, add the sprite~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Stores/exports world collection's info (coordinates, sprite number) into a file~
** Processing line: ~ def inputs_export_stage~
** Processing line: ~ if inputs.keyboard.key_down.e # if "e" is pressed~
** Processing line: ~ export_string = state.world.map do |x, y, sprite_number| # stores world info in a string~
** Processing line: ~ "#{x},#{y},#{sprite_number}" # using string interpolation~
** Processing line: ~ end~
** Processing line: ~ gtk.write_file(MAP_FILE_PATH, export_string.join("\n")) # writes string into a file~
** Processing line: ~ state.map_saved_at = state.tick_count # frame number (passage of time) when the map was saved~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs_show_available_sprites~
** Processing line: ~ # Based on keyboard input, the entity (:creating and :selecting) switch~
** Processing line: ~ if inputs.keyboard.key_held.s && state.mode == :creating # if "s" is pressed and currently creating~
** Processing line: ~ state.mode = :selecting # will change to selecting~
** Processing line: ~ inputs.keyboard.clear # VERY IMPORTANT! If not present, it'll flicker between on and off~
** Processing line: ~ elsif inputs.keyboard.key_held.s && state.mode == :selecting # if "s" is pressed and currently selecting~
** Processing line: ~ state.mode = :creating # will change to creating~
** Processing line: ~ inputs.keyboard.clear # VERY IMPORTANT! If not present, it'll flicker between on and off~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Loads the world collection by reading from the map.txt file in the app folder~
** Processing line: ~ def attempt_load_world_from_file~
** Processing line: ~ return if state.world # return if the world collection is already populated~
** Processing line: ~ state.world ||= [] # initialized as an empty collection~
** Processing line: ~ exported_world = gtk.read_file(MAP_FILE_PATH) # reads the file using the path mentioned at top of code~
** Processing line: ~ return unless exported_world # return unless the file read was successful~
** Processing line: ~ state.world = exported_world.each_line.map do |l| # perform action on each line of exported_world~
** Processing line: ~ l.split(',').map(&:to_i) # calls split using ',' as a delimiter, and invokes .map on the collection,~
** Processing line: ~ # calling to_i (converts to integers) on each element~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Adds the change in y to y to determine the next y position of the player.~
** Processing line: ~ def next_y~
** Processing line: ~ state.y + state.dy~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Determines next x position of player~
** Processing line: ~ def next_x~
** Processing line: ~ if state.dx < 0 # if the player moves left~
** Processing line: ~ return state.x - (state.tile_size - state.player_width) # subtracts since the change in x is negative (player is moving left)~
** Processing line: ~ else~
** Processing line: ~ return state.x + (state.tile_size - state.player_width) # adds since the change in x is positive (player is moving right)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_coord point~
** Processing line: ~ # Integer divides (idiv) point.x to turn into grid~
** Processing line: ~ # Then, you can just multiply each integer by state.tile_size~
** Processing line: ~ # later and huzzah. Grid coordinates~
** Processing line: ~ [point.x.idiv(state.tile_size), point.y.idiv(state.tile_size)]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $metroidvania_starter = MetroidvaniaStarter.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $metroidvania_starter.grid = args.grid~
** Processing line: ~ $metroidvania_starter.inputs = args.inputs~
** Processing line: ~ $metroidvania_starter.state = args.state~
** Processing line: ~ $metroidvania_starter.outputs = args.outputs~
** Processing line: ~ $metroidvania_starter.gtk = args.gtk~
** Processing line: ~ $metroidvania_starter.tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Physics And Collisions - Jump Physics - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Physics And Collisions - Jump Physics - 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/04_physics_and_collisions/06_jump_physics/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
** Processing line: ~ For example, if we want to create a new button, we would declare it as a new entity and~
** Processing line: ~ then define its properties. (Remember, you can use state to define ANY property and it will~
** Processing line: ~ be retained across frames.)~
** Processing line: ~~
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
** Processing line: ~ The parameters for a solid are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
** Processing line: ~~
** Processing line: ~ - num1.greater(num2): Returns the greater value.~
** Processing line: ~~
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The value can be found~
** Processing line: ~ using their keys.~
** Processing line: ~~
** Processing line: ~ - ARRAY#inside_rect?: Returns true or false depending on if the point is inside the rect.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app is a game that requires the user to jump from one platform to the next.~
** Processing line: ~ # As the player successfully clears platforms, they become smaller and move faster.~
** Processing line: ~~
** Processing line: ~ class VerticalPlatformer~
** Processing line: ~ attr_gtk~
** Processing line: ~~
** Processing line: ~ # declares vertical platformer as new entity~
** Processing line: ~ def s~
** Processing line: ~ state.vertical_platformer ||= state.new_entity(:vertical_platformer)~
** Processing line: ~ state.vertical_platformer~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # creates a new platform using a hash~
** Processing line: ~ def new_platform hash~
** Processing line: ~ s.new_entity_strict(:platform, hash) # platform key~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # calls methods needed for game to run properly~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render~
** Processing line: ~ calc~
** Processing line: ~ input~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values~
** Processing line: ~ def defaults~
** 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~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ s.tick_count = args.state.tick_count~
** Processing line: ~ s.gravity = -0.3 # what goes up must come down because of gravity~
** Processing line: ~ s.player.platforms_cleared ||= 0 # counts how many platforms the player has successfully cleared~
** Processing line: ~ s.player.x ||= 0 # sets player values~
** Processing line: ~ s.player.y ||= 100~
** Processing line: ~ s.player.w ||= 64~
** Processing line: ~ s.player.h ||= 64~
** Processing line: ~ s.player.dy ||= 0 # change in position~
** Processing line: ~ s.player.dx ||= 0~
** Processing line: ~ s.player_jump_power = 15~
** Processing line: ~ s.player_jump_power_duration = 10~
** Processing line: ~ s.player_max_run_speed = 5~
** Processing line: ~ s.player_speed_slowdown_rate = 0.9~
** Processing line: ~ s.player_acceleration = 1~
** 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: ~ # Outputs objects onto the screen~
** Processing line: ~ def render~
** Processing line: ~ outputs.solids << s.platforms.map do |p| # outputs platforms onto screen~
** Processing line: ~ [p.x + 300, p.y - s.camera[:y], p.w, p.h] # add 300 to place platform in horizontal center~
** Processing line: ~ # don't forget, position of platform is denoted by bottom left hand corner~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # outputs player using hash~
** Processing line: ~ outputs.solids << {~
** Processing line: ~ x: s.player.x + 300, # player positioned on top of platform~
** Processing line: ~ y: s.player.y - s.camera[:y],~
** Processing line: ~ w: s.player.w,~
** Processing line: ~ h: s.player.h,~
** Processing line: ~ r: 100, # color saturation~
** Processing line: ~ g: 100,~
** Processing line: ~ b: 200~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Performs calculations~
** Processing line: ~ def calc~
** Processing line: ~ s.platforms.each do |p| # for each platform in the collection~
** Processing line: ~ p.rect = [p.x, p.y, p.w, p.h] # set the definition~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # sets player point by adding half the player's width to the player's x~
** Processing line: ~ s.player.point = [s.player.x + s.player.w.half, s.player.y] # change + to - and see what happens!~
** Processing line: ~~
** Processing line: ~ # search the platforms collection to find if the player's point is inside the rect of a platform~
** Processing line: ~ collision = s.platforms.find { |p| s.player.point.inside_rect? p.rect }~
** Processing line: ~~
** Processing line: ~ # if collision occurred and player is moving down (or not moving vertically at all)~
** Processing line: ~ if collision && s.player.dy <= 0~
** Processing line: ~ s.player.y = collision.rect.y + collision.rect.h - 2 # player positioned on top of platform~
** Processing line: ~ s.player.dy = 0 if s.player.dy < 0 # player stops moving vertically~
** Processing line: ~ if !s.player.platform~
** Processing line: ~ s.player.dx = 0 # no horizontal movement~
** Processing line: ~ end~
** Processing line: ~ # changes horizontal position of player by multiplying collision change in x (dx) by speed and adding it to current x~
** Processing line: ~ s.player.x += collision.dx * collision.speed~
** Processing line: ~ s.player.platform = collision # player is on the platform that it collided with (or landed on)~
** Processing line: ~ if s.player.falling # if player is falling~
** Processing line: ~ s.player.dx = 0 # no horizontal movement~
** Processing line: ~ end~
** Processing line: ~ s.player.falling = false~
** Processing line: ~ s.player.jumped_at = nil~
** Processing line: ~ else~
** Processing line: ~ s.player.platform = nil # player is not on a platform~
** Processing line: ~ s.player.y += s.player.dy # velocity is the change in position~
** Processing line: ~ s.player.dy += s.gravity # acceleration is the change in velocity; what goes up must come down~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ s.platforms.each do |p| # for each platform in the collection~
** Processing line: ~ p.x += p.dx * p.speed # x is incremented by product of dx and speed (causes platform to move horizontally)~
** Processing line: ~ # changes platform's x so it moves left and right across the screen (between -300 and 300 pixels)~
** Processing line: ~ if p.x < -300 # if platform goes too far left~
** Processing line: ~ p.dx *= -1 # dx is scaled down~
** Processing line: ~ p.x = -300 # as far left as possible within scope~
** Processing line: ~ elsif p.x > (1000 - p.w) # if platform's x is greater than 300~
** Processing line: ~ p.dx *= -1~
** Processing line: ~ p.x = (1000 - p.w) # set to 300 (as far right as possible within scope)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ delta = (s.player.y - s.camera[:y] - 100) # used to position camera view~
** Processing line: ~~
** Processing line: ~ if delta > -200~
** Processing line: ~ s.camera[:y] += delta * 0.01 # allows player to see view as they move upwards~
** Processing line: ~ s.player.x += s.player.dx # velocity is change in position; change in x increases by dx~
** Processing line: ~~
** Processing line: ~ # searches platform collection to find platforms located more than 300 pixels above the player~
** Processing line: ~ has_platforms = s.platforms.find { |p| p.y > (s.player.y + 300) }~
** Processing line: ~ if !has_platforms # if there are no platforms 300 pixels above the player~
** Processing line: ~ width = 700 - (700 * (0.1 * s.player.platforms_cleared)) # the next platform is smaller than previous~
** Processing line: ~ s.player.platforms_cleared += 1 # player successfully cleared another platform~
** Processing line: ~ last_platform = s.platforms[-1] # platform just cleared becomes last platform~
** Processing line: ~ # another platform is created 300 pixels above the last platform, and this~
** Processing line: ~ # new platform has a smaller width and moves faster than all previous platforms~
** Processing line: ~ s.platforms << new_platform(x: (700 - width) * rand, # random x position~
** Processing line: ~ y: last_platform.y + 300,~
** Processing line: ~ w: width,~
** Processing line: ~ h: 32,~
** Processing line: ~ dx: 1.randomize(:sign), # random change in x~
** Processing line: ~ speed: 2 * s.player.platforms_cleared,~
** Processing line: ~ rect: nil)~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ s.as_hash.clear # otherwise clear the hash (no new platform is necessary)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Takes input from the user to move the player~
** Processing line: ~ def input~
** Processing line: ~ if inputs.keyboard.space # if the space bar is pressed~
** Processing line: ~ s.player.jumped_at ||= s.tick_count # set to current frame~
** Processing line: ~~
** Processing line: ~ # if the time that has passed since the jump is less than the duration of a jump (10 frames)~
** Processing line: ~ # and the player is not falling~
** Processing line: ~ if s.player.jumped_at.elapsed_time < s.player_jump_power_duration && !s.player.falling~
** Processing line: ~ s.player.dy = s.player_jump_power # player jumps up~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if inputs.keyboard.key_up.space # if space bar is in "up" state~
** Processing line: ~ s.player.falling = true # player is falling~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if inputs.keyboard.left # if left key is pressed~
** Processing line: ~ s.player.dx -= s.player_acceleration # player's position changes, decremented by acceleration~
** Processing line: ~ s.player.dx = s.player.dx.greater(-s.player_max_run_speed) # dx is either current dx or -5, whichever is greater~
** Processing line: ~ elsif inputs.keyboard.right # if right key is pressed~
** Processing line: ~ s.player.dx += s.player_acceleration # player's position changes, incremented by acceleration~
** Processing line: ~ s.player.dx = s.player.dx.lesser(s.player_max_run_speed) # dx is either current dx or 5, whichever is lesser~
** Processing line: ~ else~
** Processing line: ~ s.player.dx *= s.player_speed_slowdown_rate # scales dx down~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $game = VerticalPlatformer.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $game.args = args~
** Processing line: ~ $game.tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Mouse - Mouse Click - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Mouse - Mouse Click - 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/05_mouse/01_mouse_click/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - product: Returns an array of all combinations of elements from all arrays.~
** Processing line: ~~
** Processing line: ~ For example, [1,2].product([1,2]) would return the following array...~
** Processing line: ~ [[1,1], [1,2], [2,1], [2,2]]~
** Processing line: ~ More than two arrays can be given to product and it will still work,~
** Processing line: ~ such as [1,2].product([1,2],[3,4]). What would product return in this case?~
** Processing line: ~~
** Processing line: ~ Answer:~
** Processing line: ~ [[1,1,3],[1,1,4],[1,2,3],[1,2,4],[2,1,3],[2,1,4],[2,2,3],[2,2,4]]~
** Processing line: ~~
** Processing line: ~ - num1.fdiv(num2): Returns the float division (will have a decimal) of the two given numbers.~
** Processing line: ~ For example, 5.fdiv(2) = 2.5 and 5.fdiv(5) = 1.0~
** Processing line: ~~
** Processing line: ~ - yield: Allows you to call a method with a code block and yield to that block.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - ARRAY#inside_rect?: Returns true or false depending on if the point is inside the rect.~
** Processing line: ~~
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
** Processing line: ~~
** Processing line: ~ - args.inputs.mouse.click: This property will be set if the mouse was clicked.~
** Processing line: ~~
** Processing line: ~ - Ternary operator (?): Will evaluate a statement (just like an if statement)~
** Processing line: ~ and perform an action if the result is true or another action if it is false.~
** Processing line: ~~
** Processing line: ~ - reject: Removes elements from a collection if they meet certain requirements.~
** Processing line: ~~
** Processing line: ~ - args.outputs.borders: An array. The values generate a border.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
** Processing line: ~ For more information about borders, go to mygame/documentation/03-solids-and-borders.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app is a classic game of Tic Tac Toe.~
** Processing line: ~~
** Processing line: ~ class TicTacToe~
** Processing line: ~ attr_accessor :_, :state, :outputs, :inputs, :grid, :gtk~
** Processing line: ~~
** 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: ~ render_board~
** Processing line: ~ input_board~
** 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~
** Processing line: ~~
** Processing line: ~ # Positions the game's board in the center of the screen.~
** Processing line: ~ # Try removing what follows grid.w_half or grid.h_half and see how the position changes!~
** Processing line: ~ board_left = grid.w_half - square_size * 1.5~
** Processing line: ~ board_top = grid.h_half - square_size * 1.5~
** Processing line: ~~
** Processing line: ~ # At first glance, the add(1) looks pretty trivial. But if you remove it,~
** Processing line: ~ # you'll see that the positioning of the board would be skewed without it!~
** Processing line: ~ # Or if you put 2 in the parenthesis, the pieces will be placed in the wrong squares~
** Processing line: ~ # due to the change in board placement.~
** Processing line: ~ outputs.borders << all_spaces do |x, y, space| # outputs borders for all board spaces~
** Processing line: ~ space.border ||= [~
** Processing line: ~ board_left + x.add(1) * square_size, # space.border is initialized using this definition~
** Processing line: ~ board_top + y.add(1) * square_size,~
** Processing line: ~ square_size,~
** Processing line: ~ square_size~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Again, the calculations ensure that the piece is placed in the center of the grid square.~
** Processing line: ~ # Remove the '- 20' and the piece will be placed at the top of the grid square instead of the center.~
** Processing line: ~ outputs.labels << filled_spaces do |x, y, space| # put label in each filled space of board~
** Processing line: ~ label board_left + x.add(1) * square_size + square_size.fdiv(2),~
** Processing line: ~ board_top + y.add(1) * square_size + square_size - 20,~
** Processing line: ~ space.piece # text of label, either "x" or "o"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Uses a label to output whether x or o won, or if a draw occurred.~
** Processing line: ~ # If the game is ongoing, a label shows whose turn it currently is.~
** Processing line: ~ outputs.labels << if state.x_won~
** Processing line: ~ label grid.w_half, grid.top - 80, "x won" # the '-80' positions the label 80 pixels lower than top~
** Processing line: ~ elsif state.o_won~
** Processing line: ~ label grid.w_half, grid.top - 80, "o won" # grid.w_half positions the label in the center horizontally~
** Processing line: ~ elsif state.draw~
** Processing line: ~ label grid.w_half, grid.top - 80, "a draw"~
** Processing line: ~ else # if no one won and the game is ongoing~
** Processing line: ~ label grid.w_half, grid.top - 80, "turn: #{state.current_turn}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls the methods responsible for handling user input and determining the winner.~
** Processing line: ~ # Does nothing unless the mouse is clicked.~
** Processing line: ~ def input_board~
** Processing line: ~ return unless inputs.mouse.click~
** Processing line: ~ input_place_piece~
** Processing line: ~ input_restart_game~
** Processing line: ~ determine_winner~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Handles user input for placing pieces on the board.~
** Processing line: ~ def input_place_piece~
** Processing line: ~ return if state.game_over~
** Processing line: ~~
** Processing line: ~ # Checks to find the space that the mouse was clicked inside of, and makes sure the space does not already~
** Processing line: ~ # have a piece in it.~
** Processing line: ~ __, __, space = all_spaces.find do |__, __, space|~
** Processing line: ~ inputs.mouse.click.point.inside_rect?(space.border) && !space.piece~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The piece that goes into the space belongs to the player whose turn it currently is.~
** Processing line: ~ return unless space~
** Processing line: ~ space.piece = state.current_turn~
** Processing line: ~~
** Processing line: ~ # This ternary operator statement allows us to change the current player's turn.~
** Processing line: ~ # If it is currently x's turn, it becomes o's turn. If it is not x's turn, it become's x's turn.~
** Processing line: ~ state.current_turn = state.current_turn == :x ? :o : :x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Resets the game.~
** Processing line: ~ def input_restart_game~
** Processing line: ~ return unless state.game_over~
** Processing line: ~ gtk.reset~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Checks if x or o won the game.~
** Processing line: ~ # If neither player wins and all nine squares are filled, a draw happens.~
** Processing line: ~ # Once a player is chosen as the winner or a draw happens, the game is over.~
** Processing line: ~ def determine_winner~
** Processing line: ~ state.x_won = won? :x # evaluates to either true or false (boolean values)~
** Processing line: ~ state.o_won = won? :o~
** Processing line: ~ state.draw = true if filled_spaces.length == 9 && !state.x_won && !state.o_won~
** Processing line: ~ state.game_over = state.x_won || state.o_won || state.draw~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Determines if a player won by checking if there is a horizontal match or vertical match.~
** Processing line: ~ # Horizontal_match and vertical_match have boolean values. If either is true, the game has been won.~
** Processing line: ~ def won? piece~
** Processing line: ~ # performs action on all space combinations~
** Processing line: ~ won = [[-1, 0, 1]].product([-1, 0, 1]).map do |xs, y|~
** Processing line: ~~
** Processing line: ~ # Checks if the 3 grid spaces with the same y value (or same row) and~
** Processing line: ~ # x values that are next to each other have pieces that belong to the same player.~
** Processing line: ~ # Remember, the value of piece is equal to the current turn (which is the player).~
** Processing line: ~ horizontal_match = state.spaces[xs[0]][y].piece == piece &&~
** Processing line: ~ state.spaces[xs[1]][y].piece == piece &&~
** Processing line: ~ state.spaces[xs[2]][y].piece == piece~
** Processing line: ~~
** Processing line: ~ # Checks if the 3 grid spaces with the same x value (or same column) and~
** Processing line: ~ # y values that are next to each other have pieces that belong to the same player.~
** Processing line: ~ # The && represents an "and" statement: if even one part of the statement is false,~
** Processing line: ~ # the entire statement evaluates to false.~
** Processing line: ~ vertical_match = state.spaces[y][xs[0]].piece == piece &&~
** Processing line: ~ state.spaces[y][xs[1]].piece == piece &&~
** Processing line: ~ state.spaces[y][xs[2]].piece == piece~
** Processing line: ~~
** Processing line: ~ horizontal_match || vertical_match # if either is true, true is returned~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sees if there is a diagonal match, starting from the bottom left and ending at the top right.~
** Processing line: ~ # Is added to won regardless of whether the statement is true or false.~
** Processing line: ~ won << (state.spaces[-1][-1].piece == piece && # bottom left~
** Processing line: ~ state.spaces[ 0][ 0].piece == piece && # center~
** Processing line: ~ state.spaces[ 1][ 1].piece == piece) # top right~
** Processing line: ~~
** Processing line: ~ # Sees if there is a diagonal match, starting at the bottom right and ending at the top left~
** Processing line: ~ # and is added to won.~
** Processing line: ~ won << (state.spaces[ 1][-1].piece == piece && # bottom right~
** Processing line: ~ state.spaces[ 0][ 0].piece == piece && # center~
** Processing line: ~ state.spaces[-1][ 1].piece == piece) # top left~
** Processing line: ~~
** Processing line: ~ # Any false statements (meaning false diagonal matches) are rejected from won~
** Processing line: ~ won.reject_false.any?~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Defines filled spaces on the board by rejecting all spaces that do not have game pieces in them.~
** Processing line: ~ # The ! before a statement means "not". For example, we are rejecting any space combinations that do~
** Processing line: ~ # NOT have pieces in them.~
** Processing line: ~ def filled_spaces~
** Processing line: ~ state.space_combinations~
** Processing line: ~ .reject { |x, y| !state.spaces[x][y].piece } # reject spaces with no pieces in them~
** Processing line: ~ .map do |x, y|~
** Processing line: ~ if block_given?~
** Processing line: ~ yield x, y, state.spaces[x][y]~
** Processing line: ~ else~
** Processing line: ~ [x, y, state.spaces[x][y]] # sets definition of space~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Defines all spaces on the board.~
** Processing line: ~ def all_spaces~
** Processing line: ~ if !block_given?~
** Processing line: ~ state.space_combinations.map do |x, y|~
** Processing line: ~ [x, y, state.spaces[x][y]] # sets definition of space~
** Processing line: ~ end~
** Processing line: ~ else # if a block is given (block_given? is true)~
** Processing line: ~ state.space_combinations.map do |x, y|~
** Processing line: ~ yield x, y, state.spaces[x][y] # yield if a block is given~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets values for a label, such as the position, value, size, alignment, and color.~
** Processing line: ~ def label x, y, value~
** Processing line: ~ [x, y + 10, value, 20, 1, 0, 0, 0]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $tic_tac_toe = TicTacToe.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $tic_tac_toe._ = args~
** Processing line: ~ $tic_tac_toe.state = args.state~
** Processing line: ~ $tic_tac_toe.outputs = args.outputs~
** Processing line: ~ $tic_tac_toe.inputs = args.inputs~
** Processing line: ~ $tic_tac_toe.grid = args.grid~
** Processing line: ~ $tic_tac_toe.gtk = args.gtk~
** Processing line: ~ $tic_tac_toe.tick~
** Processing line: ~ tick_instructions args, "Sample app shows how to work with mouse clicks."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Mouse - Mouse Move - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Mouse - Mouse Move - 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/05_mouse/02_mouse_move/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - num1.greater(num2): Returns the greater value.~
** Processing line: ~ For example, if we have the command~
** Processing line: ~ puts 4.greater(3)~
** Processing line: ~ the number 4 would be printed to the console since it has a greater value than 3.~
** Processing line: ~ Similar to lesser, which returns the lesser value.~
** Processing line: ~~
** Processing line: ~ - find_all: Finds all elements of a collection that meet certain requirements.~
** Processing line: ~ For example, in this sample app, we're using find_all to find all zombies that have intersected~
** Processing line: ~ or hit the player's sprite since these zombies have been killed.~
** Processing line: ~~
** Processing line: ~ - args.inputs.keyboard.key_down.KEY: Determines if a key is being held or pressed.~
** Processing line: ~ Stores the frame the "down" event occurred.~
** Processing line: ~ For more information about the keyboard, go to mygame/documentation/06-keyboard.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.sprites: An array. The values generate a sprite.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, PATH, ANGLE, ALPHA, RED, GREEN, BLUE]~
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
** Processing line: ~~
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
** Processing line: ~ When we want to create a new object, we can declare it as a new entity and then define~
** Processing line: ~ its properties. (Remember, you can use state to define ANY property and it will~
** Processing line: ~ be retained across frames.)~
** Processing line: ~~
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
** Processing line: ~~
** Processing line: ~ - map: Ruby method used to transform data; used in arrays, hashes, and collections.~
** Processing line: ~ Can be used to perform an action on every element of a collection, such as multiplying~
** Processing line: ~ each element by 2 or declaring every element as a new entity.~
** Processing line: ~~
** Processing line: ~ - sample: Chooses a random element from the array.~
** Processing line: ~~
** Processing line: ~ - reject: Removes elements that meet certain requirements.~
** Processing line: ~ In this sample app, we're removing/rejecting zombies that reach the center of the screen. We're also~
** Processing line: ~ rejecting zombies that were killed more than 30 frames ago.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app allows users to move around the screen in order to kill zombies. Zombies appear from every direction so the goal~
** Processing line: ~ # is to kill the zombies as fast as possible!~
** Processing line: ~~
** Processing line: ~ class ProtectThePuppiesFromTheZombies~
** Processing line: ~ attr_accessor :grid, :inputs, :state, :outputs~
** Processing line: ~~
** Processing line: ~ # Calls the methods necessary for the game to run properly.~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render~
** Processing line: ~ calc~
** Processing line: ~ input~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values for the zombies and for the player.~
** Processing line: ~ # Initialization happens only in the first frame.~
** Processing line: ~ def defaults~
** Processing line: ~ state.flash_at ||= 0~
** Processing line: ~ state.zombie_min_spawn_rate ||= 60~
** Processing line: ~ state.zombie_spawn_countdown ||= random_spawn_countdown state.zombie_min_spawn_rate~
** Processing line: ~ state.zombies ||= []~
** Processing line: ~ state.killed_zombies ||= []~
** Processing line: ~~
** Processing line: ~ # Declares player as a new entity and sets its properties.~
** Processing line: ~ # The player begins the game in the center of the screen, not moving in any direction.~
** Processing line: ~ state.player ||= state.new_entity(:player, { x: 640,~
** Processing line: ~ y: 360,~
** Processing line: ~ attack_angle: 0,~
** Processing line: ~ dx: 0,~
** Processing line: ~ dy: 0 })~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs a gray background.~
** Processing line: ~ # Calls the methods needed to output the player, zombies, etc onto the screen.~
** Processing line: ~ def render~
** Processing line: ~ outputs.solids << [grid.rect, 100, 100, 100]~
** Processing line: ~ render_zombies~
** Processing line: ~ render_killed_zombies~
** Processing line: ~ render_player~
** Processing line: ~ render_flash~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs the zombies on the screen and sets values for the sprites, such as the position, width, height, and animation.~
** Processing line: ~ def render_zombies~
** Processing line: ~ outputs.sprites << state.zombies.map do |z| # performs action on all zombies in the collection~
** Processing line: ~ z.sprite = [z.x, z.y, 4 * 3, 8 * 3, animation_sprite(z)].sprite # sets definition for sprite, calls animation_sprite method~
** Processing line: ~ z.sprite~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs sprites of killed zombies, and displays a slash image to show that a zombie has been killed.~
** Processing line: ~ def render_killed_zombies~
** Processing line: ~ outputs.sprites << state.killed_zombies.map do |z| # performs action on all killed zombies in collection~
** Processing line: ~ z.sprite = [z.x,~
** Processing line: ~ z.y,~
** Processing line: ~ 4 * 3,~
** Processing line: ~ 8 * 3,~
** Processing line: ~ animation_sprite(z, z.death_at), # calls animation_sprite method~
** Processing line: ~ 0, # angle~
** Processing line: ~ 255 * z.death_at.ease(30, :flip)].sprite # transparency of a zombie changes when they die~
** Processing line: ~ # change the value of 30 and see what happens when a zombie is killed~
** Processing line: ~~
** Processing line: ~ # Sets values to output the slash over the zombie's sprite when a zombie is killed.~
** Processing line: ~ # The slash is tilted 45 degrees from the angle of the player's attack.~
** Processing line: ~ # Change the 3 inside scale_rect to 30 and the slash will be HUGE! Scale_rect positions~
** Processing line: ~ # the slash over the killed zombie's sprite.~
** Processing line: ~ [z.sprite, [z.sprite.rect, 'sprites/slash.png', 45 + state.player.attack_angle_on_click, z.sprite.a].scale_rect(3, 0.5, 0.5)]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs the player sprite using the images in the sprites folder.~
** Processing line: ~ def render_player~
** Processing line: ~ state.player_sprite = [state.player.x,~
** Processing line: ~ state.player.y,~
** Processing line: ~ 4 * 3,~
** Processing line: ~ 8 * 3, "sprites/player-#{animation_index(state.player.created_at_elapsed)}.png"] # string interpolation~
** Processing line: ~ outputs.sprites << state.player_sprite~
** Processing line: ~~
** Processing line: ~ # Outputs a small red square that previews the angles that the player can attack in.~
** Processing line: ~ # It can be moved in a perfect circle around the player to show possible movements.~
** Processing line: ~ # Change the 60 in the parenthesis and see what happens to the movement of the red square.~
** Processing line: ~ outputs.solids << [state.player.x + state.player.attack_angle.vector_x(60),~
** Processing line: ~ state.player.y + state.player.attack_angle.vector_y(60),~
** Processing line: ~ 3, 3, 255, 0, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Renders flash as a solid. The screen turns white for 10 frames when a zombie is killed.~
** Processing line: ~ def render_flash~
** Processing line: ~ return if state.flash_at.elapsed_time > 10 # return if more than 10 frames have passed since flash.~
** Processing line: ~ # Transparency gradually changes (or eases) during the 10 frames of flash.~
** Processing line: ~ outputs.primitives << [grid.rect, 255, 255, 255, 255 * state.flash_at.ease(10, :flip)].solid~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls all methods necessary for performing calculations.~
** Processing line: ~ def calc~
** Processing line: ~ calc_spawn_zombie~
** Processing line: ~ calc_move_zombies~
** Processing line: ~ calc_player~
** Processing line: ~ calc_kill_zombie~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Decreases the zombie spawn countdown by 1 if it has a value greater than 0.~
** Processing line: ~ def calc_spawn_zombie~
** Processing line: ~ if state.zombie_spawn_countdown > 0~
** Processing line: ~ state.zombie_spawn_countdown -= 1~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # New zombies are created, positioned on the screen, and added to the zombies collection.~
** Processing line: ~ state.zombies << state.new_entity(:zombie) do |z| # each zombie is declared a new entity~
** Processing line: ~ if rand > 0.5~
** Processing line: ~ z.x = grid.rect.w.randomize(:ratio) # random x position on screen (within grid scope)~
** Processing line: ~ z.y = [-10, 730].sample # y position is set to either -10 or 730 (randomly chosen)~
** Processing line: ~ # the possible values exceed the screen's scope so zombies appear to be coming from far away~
** Processing line: ~ else~
** Processing line: ~ z.x = [-10, 1290].sample # x position is set to either -10 or 1290 (randomly chosen)~
** Processing line: ~ z.y = grid.rect.w.randomize(:ratio) # random y position on screen~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls random_spawn_countdown method (determines how fast new zombies appear)~
** Processing line: ~ state.zombie_spawn_countdown = random_spawn_countdown state.zombie_min_spawn_rate~
** Processing line: ~ state.zombie_min_spawn_rate -= 1~
** Processing line: ~ # set to either the current zombie_min_spawn_rate or 0, depending on which value is greater~
** Processing line: ~ state.zombie_min_spawn_rate = state.zombie_min_spawn_rate.greater(0)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Moves all zombies towards the center of the screen.~
** Processing line: ~ # All zombies that reach the center (640, 360) are rejected from the zombies collection and disappear.~
** Processing line: ~ def calc_move_zombies~
** Processing line: ~ state.zombies.each do |z| # for each zombie in the collection~
** Processing line: ~ z.y = z.y.towards(360, 0.1) # move the zombie towards the center (640, 360) at a rate of 0.1~
** Processing line: ~ z.x = z.x.towards(640, 0.1) # change 0.1 to 1.1 and see how much faster the zombies move to the center~
** Processing line: ~ end~
** Processing line: ~ state.zombies = state.zombies.reject { |z| z.y == 360 && z.x == 640 } # remove zombies that are in center~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calculates the position and movement of the player on the screen.~
** Processing line: ~ def calc_player~
** Processing line: ~ state.player.x += state.player.dx # changes x based on dx (change in x)~
** Processing line: ~ state.player.y += state.player.dy # changes y based on dy (change in y)~
** Processing line: ~~
** Processing line: ~ state.player.dx *= 0.9 # scales dx down~
** Processing line: ~ state.player.dy *= 0.9 # scales dy down~
** Processing line: ~~
** Processing line: ~ # Compares player's x to 1280 to find lesser value, then compares result to 0 to find greater value.~
** Processing line: ~ # This ensures that the player remains within the screen's scope.~
** Processing line: ~ state.player.x = state.player.x.lesser(1280).greater(0)~
** Processing line: ~ state.player.y = state.player.y.lesser(720).greater(0) # same with player's y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Finds all zombies that intersect with the player's sprite. These zombies are removed from the zombies collection~
** Processing line: ~ # and added to the killed_zombies collection since any zombie that intersects with the player is killed.~
** 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: ~ 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: ~~
** Processing line: ~ if killed_this_frame.length > 0 # if atleast one zombie was killed in the frame~
** Processing line: ~ state.flash_at = state.tick_count # flash_at set to the frame when the zombie was killed~
** Processing line: ~ # Don't forget, the rendered flash lasts for 10 frames after the zombie is killed (look at render_flash method)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the tick_count (passage of time) as the value of the death_at variable for each killed zombie.~
** Processing line: ~ # Death_at stores the frame a zombie was killed.~
** Processing line: ~ killed_this_frame.each do |z|~
** Processing line: ~ z.death_at = state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Zombies are rejected from the killed_zombies collection depending on when they were killed.~
** Processing line: ~ # They are rejected if more than 30 frames have passed since their death.~
** Processing line: ~ state.killed_zombies = state.killed_zombies.reject { |z| state.tick_count - z.death_at > 30 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Uses input from the user to move the player around the screen.~
** Processing line: ~ def input~
** Processing line: ~~
** Processing line: ~ # If the "a" key or left key is pressed, the x position of the player decreases.~
** Processing line: ~ # Otherwise, if the "d" key or right key is pressed, the x position of the player increases.~
** Processing line: ~ if inputs.keyboard.key_held.a || inputs.keyboard.key_held.left~
** Processing line: ~ state.player.x -= 5~
** Processing line: ~ elsif inputs.keyboard.key_held.d || inputs.keyboard.key_held.right~
** Processing line: ~ state.player.x += 5~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # If the "w" or up key is pressed, the y position of the player increases.~
** Processing line: ~ # Otherwise, if the "s" or down key is pressed, the y position of the player decreases.~
** Processing line: ~ if inputs.keyboard.key_held.w || inputs.keyboard.key_held.up~
** Processing line: ~ state.player.y += 5~
** Processing line: ~ elsif inputs.keyboard.key_held.s || inputs.keyboard.key_held.down~
** Processing line: ~ state.player.y -= 5~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the attack angle so the player can move and attack in the precise direction it wants to go.~
** Processing line: ~ # If the mouse is moved, the attack angle is changed (based on the player's position and mouse position).~
** Processing line: ~ # Attack angle also contributes to the position of red square.~
** Processing line: ~ if inputs.mouse.moved~
** Processing line: ~ state.player.attack_angle = inputs.mouse.position.angle_from [state.player.x, state.player.y]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if inputs.mouse.click && state.player.dx < 0.5 && state.player.dy < 0.5~
** Processing line: ~ state.player.attack_angle_on_click = inputs.mouse.position.angle_from [state.player.x, state.player.y]~
** Processing line: ~ state.player.attack_angle = state.player.attack_angle_on_click # player's attack angle is set~
** Processing line: ~ state.player.dx = state.player.attack_angle.vector_x(25) # change in player's position~
** Processing line: ~ state.player.dy = state.player.attack_angle.vector_y(25)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the zombie spawn's countdown to a random number.~
** Processing line: ~ # How fast zombies appear (change the 60 to 6 and too many zombies will appear at once!)~
** Processing line: ~ def random_spawn_countdown minimum~
** Processing line: ~ 10.randomize(:ratio, :sign).to_i + 60~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Helps to iterate through the images in the sprites folder by setting the animation index.~
** Processing line: ~ # 3 frames is how long to show an image, and 6 is how many images to flip through.~
** Processing line: ~ def animation_index at~
** Processing line: ~ at.idiv(3).mod(6)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Animates the zombies by using the animation index to go through the images in the sprites folder.~
** Processing line: ~ def animation_sprite zombie, at = nil~
** Processing line: ~ at ||= zombie.created_at_elapsed # how long it is has been since a zombie was created~
** Processing line: ~ index = animation_index at~
** Processing line: ~ "sprites/zombie-#{index}.png" # string interpolation to iterate through images~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $protect_the_puppies_from_the_zombies = ProtectThePuppiesFromTheZombies.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $protect_the_puppies_from_the_zombies.grid = args.grid~
** Processing line: ~ $protect_the_puppies_from_the_zombies.inputs = args.inputs~
** Processing line: ~ $protect_the_puppies_from_the_zombies.state = args.state~
** Processing line: ~ $protect_the_puppies_from_the_zombies.outputs = args.outputs~
** Processing line: ~ $protect_the_puppies_from_the_zombies.tick~
** Processing line: ~ tick_instructions args, "How to get the mouse position and translate it to an x, y position using .vector_x and .vector_y. CLICK to play."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Mouse - Mouse Move Paint App - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Mouse - Mouse Move Paint App - 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/05_mouse/03_mouse_move_paint_app/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - Floor: Method that returns an integer number smaller than or equal to the original with no decimal.~
** Processing line: ~~
** Processing line: ~ For example, if we have a variable, a = 13.7, and we called floor on it, it would look like this...~
** Processing line: ~ puts a.floor()~
** Processing line: ~ which would print out 13.~
** Processing line: ~ (There is also a ceil method, which returns an integer number greater than or equal to the original~
** Processing line: ~ with no decimal. If we had called ceil on the variable a, the result would have been 14.)~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The value can be found~
** Processing line: ~ using their keys.~
** Processing line: ~~
** Processing line: ~ For example, if we have a "numbers" hash that stores numbers in English as the~
** Processing line: ~ key and numbers in Spanish as the value, we'd have a hash that looks like this...~
** Processing line: ~ numbers = { "one" => "uno", "two" => "dos", "three" => "tres" }~
** Processing line: ~ and on it goes.~
** Processing line: ~~
** Processing line: ~ Now if we wanted to find the corresponding value of the "one" key, we could say~
** Processing line: ~ puts numbers["one"]~
** Processing line: ~ which would print "uno" to the console.~
** Processing line: ~~
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
** Processing line: ~ In this sample app, new_entity is used to create a new button that clears the grid.~
** Processing line: ~ (Remember, you can use state to define ANY property and it will be retained across frames.)~
** Processing line: ~~
** Processing line: ~ - args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.~
** Processing line: ~~
** Processing line: ~ - args.inputs.mouse.click.point.created_at: The frame the mouse click occurred in.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. The values in the array generate a label.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - ARRAY#inside_rect?: Returns true or false depending on if the point is inside the rect.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app shows an empty grid that the user can paint on.~
** Processing line: ~ # To paint, the user must keep their mouse presssed and drag it around the grid.~
** Processing line: ~ # The "clear" button allows users to clear the grid so they can start over.~
** Processing line: ~~
** Processing line: ~ class PaintApp~
** Processing line: ~ attr_accessor :inputs, :state, :outputs, :grid, :args~
** Processing line: ~~
** Processing line: ~ # Runs methods necessary for the game to function properly.~
** Processing line: ~ def tick~
** Processing line: ~ print_title~
** Processing line: ~ add_grid~
** Processing line: ~ check_click~
** Processing line: ~ draw_buttons~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Prints the title onto the screen by using a label.~
** Processing line: ~ # Also separates the title from the grid with a line as a horizontal separator.~
** Processing line: ~ def print_title~
** Processing line: ~ args.outputs.labels << [ 640, 700, 'Paint!', 0, 1 ]~
** Processing line: ~ outputs.lines << horizontal_separator(660, 0, 1280)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the starting position, ending position, and color for the horizontal separator.~
** Processing line: ~ # The starting and ending positions have the same y values.~
** Processing line: ~ def horizontal_separator y, x, x2~
** Processing line: ~ [x, y, x2, y, 150, 150, 150]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the starting position, ending position, and color for the vertical separator.~
** Processing line: ~ # The starting and ending positions have the same x values.~
** Processing line: ~ def vertical_separator x, y, y2~
** Processing line: ~ [x, y, x, y2, 150, 150, 150]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs a border and a grid containing empty squares onto the screen.~
** Processing line: ~ def add_grid~
** Processing line: ~~
** Processing line: ~ # Sets the x, y, height, and width of the grid.~
** Processing line: ~ # There are 31 horizontal lines and 31 vertical lines in the grid.~
** Processing line: ~ # Feel free to count them yourself before continuing!~
** Processing line: ~ x, y, h, w = 640 - 500/2, 640 - 500, 500, 500 # calculations done so the grid appears in screen's center~
** Processing line: ~ lines_h = 31~
** Processing line: ~ lines_v = 31~
** Processing line: ~~
** Processing line: ~ # Sets values for the grid's border, grid lines, and filled squares.~
** Processing line: ~ # The filled_squares variable is initially set to an empty array.~
** Processing line: ~ state.grid_border ||= [ x, y, h, w ] # definition of grid's outer border~
** Processing line: ~ state.grid_lines ||= draw_grid(x, y, h, w, lines_h, lines_v) # calls draw_grid method~
** Processing line: ~ state.filled_squares ||= [] # there are no filled squares until the user fills them in~
** Processing line: ~~
** Processing line: ~ # Outputs the grid lines, border, and filled squares onto the screen.~
** Processing line: ~ outputs.lines.concat state.grid_lines~
** Processing line: ~ outputs.borders << state.grid_border~
** Processing line: ~ outputs.solids << state.filled_squares~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Draws the grid by adding in vertical and horizontal separators.~
** Processing line: ~ def draw_grid x, y, h, w, lines_h, lines_v~
** Processing line: ~~
** Processing line: ~ # The grid starts off empty.~
** Processing line: ~ grid = []~
** Processing line: ~~
** Processing line: ~ # Calculates the placement and adds horizontal lines or separators into the grid.~
** Processing line: ~ curr_y = y # start at the bottom of the box~
** Processing line: ~ dist_y = h / (lines_h + 1) # finds distance to place horizontal lines evenly throughout 500 height of grid~
** Processing line: ~ lines_h.times do~
** Processing line: ~ curr_y += dist_y # increment curr_y by the distance between the horizontal lines~
** Processing line: ~ grid << horizontal_separator(curr_y, x, x + w - 1) # add a separator into the grid~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calculates the placement and adds vertical lines or separators into the grid.~
** Processing line: ~ curr_x = x # now start at the left of the box~
** Processing line: ~ dist_x = w / (lines_v + 1) # finds distance to place vertical lines evenly throughout 500 width of grid~
** Processing line: ~ lines_v.times do~
** Processing line: ~ curr_x += dist_x # increment curr_x by the distance between the vertical lines~
** Processing line: ~ grid << vertical_separator(curr_x, y + 1, y + h) # add separator~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # paint_grid uses a hash to assign values to keys.~
** Processing line: ~ state.paint_grid ||= {"x" => x, "y" => y, "h" => h, "w" => w, "lines_h" => lines_h,~
** Processing line: ~ "lines_v" => lines_v, "dist_x" => dist_x,~
** Processing line: ~ "dist_y" => dist_y }~
** Processing line: ~~
** Processing line: ~ return grid~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Checks if the user is keeping the mouse pressed down and sets the mouse_hold variable accordingly using boolean values.~
** Processing line: ~ # If the mouse is up, the user cannot drag the mouse.~
** Processing line: ~ def check_click~
** Processing line: ~ if inputs.mouse.down #is mouse up or down?~
** Processing line: ~ state.mouse_held = true # mouse is being held down~
** Processing line: ~ elsif inputs.mouse.up # if mouse is up~
** Processing line: ~ state.mouse_held = false # mouse is not being held down or dragged~
** Processing line: ~ state.mouse_dragging = false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.mouse_held && # mouse needs to be down~
** Processing line: ~ !inputs.mouse.click && # must not be first click~
** Processing line: ~ ((inputs.mouse.previous_click.point.x - inputs.mouse.position.x).abs > 15) # Need to move 15 pixels before "drag"~
** Processing line: ~ state.mouse_dragging = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # If the user clicks their mouse inside the grid, the search_lines method is called with a click input type.~
** Processing line: ~ if ((inputs.mouse.click) && (inputs.mouse.click.point.inside_rect? state.grid_border))~
** Processing line: ~ search_lines(inputs.mouse.click.point, :click)~
** Processing line: ~~
** Processing line: ~ # If the user drags their mouse inside the grid, the search_lines method is called with a drag input type.~
** Processing line: ~ elsif ((state.mouse_dragging) && (inputs.mouse.position.inside_rect? state.grid_border))~
** Processing line: ~ search_lines(inputs.mouse.position, :drag)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the definition of a grid box and handles user input to fill in or clear grid boxes.~
** Processing line: ~ def search_lines (point, input_type)~
** Processing line: ~ point.x -= state.paint_grid["x"] # subtracts the value assigned to the "x" key in the paint_grid hash~
** Processing line: ~ point.y -= state.paint_grid["y"] # subtracts the value assigned to the "y" key in the paint_grid hash~
** Processing line: ~~
** Processing line: ~ # Remove code following the .floor and see what happens when you try to fill in grid squares~
** Processing line: ~ point.x = (point.x / state.paint_grid["dist_x"]).floor * state.paint_grid["dist_x"]~
** Processing line: ~ point.y = (point.y / state.paint_grid["dist_y"]).floor * state.paint_grid["dist_y"]~
** Processing line: ~~
** Processing line: ~ point.x += state.paint_grid["x"]~
** Processing line: ~ point.y += state.paint_grid["y"]~
** Processing line: ~~
** Processing line: ~ # Sets definition of a grid box, meaning its x, y, width, and height.~
** Processing line: ~ # Floor is called on the point.x and point.y variables.~
** Processing line: ~ # Ceil method is called on values of the distance hash keys, setting the width and height of a box.~
** Processing line: ~ grid_box = [ point.x.floor, point.y.floor, state.paint_grid["dist_x"].ceil, state.paint_grid["dist_y"].ceil ]~
** Processing line: ~~
** Processing line: ~ if input_type == :click # if user clicks their mouse~
** Processing line: ~ if state.filled_squares.include? grid_box # if grid box is already filled in~
** Processing line: ~ state.filled_squares.delete grid_box # box is cleared and removed from filled_squares~
** Processing line: ~ else~
** Processing line: ~ state.filled_squares << grid_box # otherwise, box is filled in and added to filled_squares~
** Processing line: ~ end~
** Processing line: ~ elsif input_type == :drag # if user drags mouse~
** Processing line: ~ unless state.filled_squares.include? grid_box # unless the grid box dragged over is already filled in~
** Processing line: ~ state.filled_squares << grid_box # the box is filled in and added to filled_squares~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates and outputs a "Clear" button on the screen using a label and a border.~
** Processing line: ~ # If the button is clicked, the filled squares are cleared, making the filled_squares collection empty.~
** Processing line: ~ def draw_buttons~
** Processing line: ~ x, y, w, h = 390, 50, 240, 50~
** Processing line: ~ state.clear_button ||= state.new_entity(:button_with_fade)~
** Processing line: ~~
** Processing line: ~ # The x and y positions are set to display the label in the center of the button.~
** Processing line: ~ # Try changing the first two parameters to simply x, y and see what happens to the text placement!~
** Processing line: ~ state.clear_button.label ||= [x + w.half, y + h.half + 10, "Clear", 0, 1] # placed in center of border~
** Processing line: ~ state.clear_button.border ||= [x, y, w, h]~
** Processing line: ~~
** Processing line: ~ # If the mouse is clicked inside the borders of the clear button,~
** Processing line: ~ # the filled_squares collection is emptied and the squares are cleared.~
** Processing line: ~ if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.clear_button.border)~
** Processing line: ~ state.clear_button.clicked_at = inputs.mouse.click.created_at # time (frame) the click occurred~
** Processing line: ~ state.filled_squares.clear~
** Processing line: ~ inputs.mouse.previous_click = nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.labels << state.clear_button.label~
** Processing line: ~ outputs.borders << state.clear_button.border~
** Processing line: ~~
** Processing line: ~ # When the clear button is clicked, the color of the button changes~
** Processing line: ~ # and the transparency changes, as well. If you change the time from~
** Processing line: ~ # 0.25.seconds to 1.25.seconds or more, the change will last longer.~
** Processing line: ~ if state.clear_button.clicked_at~
** Processing line: ~ outputs.solids << [x, y, w, h, 0, 180, 80, 255 * state.clear_button.clicked_at.ease(0.25.seconds, :flip)]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $paint_app = PaintApp.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $paint_app.inputs = args.inputs~
** Processing line: ~ $paint_app.state = args.state~
** Processing line: ~ $paint_app.grid = args.grid~
** Processing line: ~ $paint_app.args = args~
** Processing line: ~ $paint_app.outputs = args.outputs~
** Processing line: ~ $paint_app.tick~
** Processing line: ~ tick_instructions args, "How to create a simple paint app. CLICK and HOLD to draw."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Mouse - Coordinate Systems - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Mouse - Coordinate Systems - 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/05_mouse/04_coordinate_systems/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.inputs.mouse.click.position: Coordinates of the mouse's position on the screen.~
** Processing line: ~ Unlike args.inputs.mouse.click.point, the mouse does not need to be pressed down for~
** Processing line: ~ position to know the mouse's coordinates.~
** Processing line: ~ For more information about the mouse, go to mygame/documentation/07-mouse.md.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - args.inputs.mouse.click: This property will be set if the mouse was clicked.~
** Processing line: ~~
** Processing line: ~ - args.inputs.mouse.click.point.(x|y): The x and y location of the mouse.~
** Processing line: ~~
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
** Processing line: ~~
** Processing line: ~ In this sample app, string interpolation is used to show the current position of the mouse~
** Processing line: ~ in a label.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array that generates a label.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.solids: An array that generates a solid.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE, ALPHA]~
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.lines: An array that generates a line.~
** Processing line: ~ The parameters are [X, Y, X2, Y2, RED, GREEN, BLUE, ALPHA]~
** Processing line: ~ For more information about lines, go to mygame/documentation/04-lines.md.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app shows a coordinate system or grid. The user can move their mouse around the screen and the~
** Processing line: ~ # coordinates of their position on the screen will be displayed. Users can choose to view one quadrant or~
** Processing line: ~ # four quadrants by pressing the button.~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~~
** Processing line: ~ # The addition and subtraction in the first two parameters of the label and solid~
** Processing line: ~ # ensure that the outputs don't overlap each other. Try removing them and see what happens.~
** Processing line: ~ pos = args.inputs.mouse.position # stores coordinates of mouse's position~
** Processing line: ~ args.outputs.labels << [pos.x + 10, pos.y + 10, "#{pos}"] # outputs label of coordinates~
** Processing line: ~ args.outputs.solids << [pos.x - 2, pos.y - 2, 5, 5] # outputs small blackk box placed where mouse is hovering~
** Processing line: ~~
** Processing line: ~ button = [0, 0, 370, 50] # sets definition of toggle button~
** Processing line: ~ args.outputs.borders << button # outputs button as border (not filled in)~
** Processing line: ~ args.outputs.labels << [10, 35, "click here toggle coordinate system"] # label of button~
** Processing line: ~ args.outputs.lines << [ 0, -720, 0, 720] # vertical line dividing quadrants~
** Processing line: ~ args.outputs.lines << [-1280, 0, 1280, 0] # horizontal line dividing quadrants~
** Processing line: ~~
** Processing line: ~ if args.inputs.mouse.click # if the user clicks the mouse~
** Processing line: ~ pos = args.inputs.mouse.click.point # pos's value is point where user clicked (coordinates)~
** Processing line: ~ if pos.inside_rect? button # if the click occurred inside the button~
** Processing line: ~ if args.grid.name == :bottom_left # if the grid shows bottom left as origin~
** Processing line: ~ args.grid.origin_center! # origin will be shown in center~
** Processing line: ~ else~
** Processing line: ~ args.grid.origin_bottom_left! # otherwise, the view will change to show bottom left as origin~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ tick_instructions args, "Sample app shows the two supported coordinate systems in Game Toolkit."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Save Load - Save Load Game - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Save Load - Save Load Game - 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/06_save_load/01_save_load_game/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - Symbol (:): Ruby object with a name and an internal ID. Symbols are useful~
** Processing line: ~ because with a given symbol name, you can refer to the same object throughout~
** Processing line: ~ a Ruby program.~
** Processing line: ~~
** Processing line: ~ In this sample app, we're using symbols for our buttons. We have buttons that~
** Processing line: ~ light fires, save, load, etc. Each of these buttons has a distinct symbol like~
** Processing line: ~ :light_fire, :save_game, :load_game, etc.~
** Processing line: ~~
** Processing line: ~ - to_sym: Returns the symbol corresponding to the given string; creates the symbol~
** Processing line: ~ if it does not already exist.~
** Processing line: ~ For example,~
** Processing line: ~ 'car'.to_sym~
** Processing line: ~ would return the symbol :car.~
** Processing line: ~~
** Processing line: ~ - last: Returns the last element of an array.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - num1.lesser(num2): finds the lower value of the given options.~
** Processing line: ~ For example, in the statement~
** Processing line: ~ a = 4.lesser(3)~
** Processing line: ~ 3 has a lower value than 4, which means that the value of a would be set to 3,~
** Processing line: ~ but if the statement had been~
** Processing line: ~ a = 4.lesser(5)~
** Processing line: ~ 4 has a lower value than 5, which means that the value of a would be set to 4.~
** Processing line: ~~
** Processing line: ~ - num1.fdiv(num2): returns the float division (will have a decimal) of the two given numbers.~
** Processing line: ~ For example, 5.fdiv(2) = 2.5 and 5.fdiv(5) = 1.0~
** Processing line: ~~
** Processing line: ~ - String interpolation: uses #{} syntax; everything between the #{ and the } is evaluated~
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. Values generate a label.~
** Processing line: ~ Parameters are [X, Y, TEXT, SIZE, ALIGN, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - ARRAY#inside_rect?: An array with at least two values is considered a point. An array~
** Processing line: ~ with at least four values is considered a rect. The inside_rect? function returns true~
** Processing line: ~ or false depending on if the point is inside the rect.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This code allows users to perform different tasks, such as saving and loading the game.~
** Processing line: ~ # Users also have options to reset the game and light a fire.~
** Processing line: ~~
** Processing line: ~ class TextedBasedGame~
** Processing line: ~~
** Processing line: ~ # Contains methods needed for game to run properly.~
** Processing line: ~ # Increments tick count by 1 each time it runs (60 times in a single second)~
** Processing line: ~ def tick~
** Processing line: ~ default~
** Processing line: ~ show_intro~
** Processing line: ~ state.engine_tick_count += 1~
** Processing line: ~ tick_fire~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values.~
** Processing line: ~ # The ||= ensures that a variable's value is only set to the value following the = sign~
** Processing line: ~ # if the value has not already been set before. Intialization happens only in the first frame.~
** Processing line: ~ def default~
** Processing line: ~ state.engine_tick_count ||= 0~
** Processing line: ~ state.active_module ||= :room~
** Processing line: ~ state.fire_progress ||= 0~
** Processing line: ~ state.fire_ready_in ||= 10~
** Processing line: ~ state.previous_fire ||= :dead~
** Processing line: ~ state.fire ||= :dead~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def show_intro~
** Processing line: ~ return unless state.engine_tick_count == 0 # return unless the game just started~
** Processing line: ~ set_story_line "awake." # calls set_story_line method, sets to "awake"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets story line.~
** Processing line: ~ def set_story_line story_line~
** Processing line: ~ state.story_line = story_line # story line set to value of parameter~
** Processing line: ~ state.active_module = :alert # active module set to alert~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Clears story line.~
** Processing line: ~ def clear_storyline~
** Processing line: ~ state.active_module = :none # active module set to none~
** Processing line: ~ state.story_line = nil # story line is cleared, set to nil (or empty)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Determines fire progress (how close the fire is to being ready to light).~
** Processing line: ~ def tick_fire~
** Processing line: ~ return if state.active_module == :alert # return if active module is alert~
** Processing line: ~ state.fire_progress += 1 # increment fire progress~
** Processing line: ~ # fire_ready_in is 10. The fire_progress is either the current value or 10, whichever has a lower value.~
** Processing line: ~ state.fire_progress = state.fire_progress.lesser(state.fire_ready_in)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the value of fire (whether it is dead or roaring), and the story line~
** Processing line: ~ def light_fire~
** Processing line: ~ return unless fire_ready? # returns unless the fire is ready to be lit~
** Processing line: ~ state.fire = :roaring # fire is lit, set to roaring~
** Processing line: ~ state.fire_progress = 0 # the fire progress returns to 0, since the fire has been lit~
** Processing line: ~ if state.fire != state.previous_fire~
** Processing line: ~ set_story_line "the fire is #{state.fire}." # the story line is set using string interpolation~
** Processing line: ~ state.previous_fire = state.fire~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Checks if the fire is ready to be lit. Returns a boolean value.~
** Processing line: ~ def fire_ready?~
** Processing line: ~ # If fire_progress (value between 0 and 10) is equal to fire_ready_in (value of 10),~
** Processing line: ~ # the fire is ready to be lit.~
** Processing line: ~ state.fire_progress == state.fire_ready_in~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Divides the value of the fire_progress variable by 10 to determine how close the user is to~
** Processing line: ~ # being able to light a fire.~
** Processing line: ~ def light_fire_progress~
** Processing line: ~ state.fire_progress.fdiv(10) # float division~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Defines fire as the state.fire variable.~
** Processing line: ~ def fire~
** Processing line: ~ state.fire~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the title of the room.~
** Processing line: ~ def room_title~
** Processing line: ~ return "a room that is dark" if state.fire == :dead # room is dark if the fire is dead~
** Processing line: ~ return "a room that is lit" # room is lit if the fire is not dead~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the active_module to room.~
** Processing line: ~ def go_to_room~
** Processing line: ~ state.active_module = :room~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Defines active_module as the state.active_module variable.~
** Processing line: ~ def active_module~
** Processing line: ~ state.active_module~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Defines story_line as the state.story_line variable.~
** Processing line: ~ def story_line~
** Processing line: ~ state.story_line~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Update every 60 frames (or every second)~
** Processing line: ~ def should_tick?~
** Processing line: ~ state.tick_count.mod_zero?(60)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the value of the game state provider.~
** Processing line: ~ def initialize game_state_provider~
** Processing line: ~ @game_state_provider = game_state_provider~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Defines the game state.~
** Processing line: ~ # Any variable prefixed with an @ symbol is an instance variable.~
** Processing line: ~ def state~
** Processing line: ~ @game_state_provider.state~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Saves the state of the game in a text file called game_state.txt.~
** Processing line: ~ def save~
** Processing line: ~ $gtk.serialize_state('game_state.txt', state)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Loads the game state from the game_state.txt text file.~
** Processing line: ~ # If the load is unsuccessful, the user is informed since the story line indicates the failure.~
** Processing line: ~ def load~
** Processing line: ~ parsed_state = $gtk.deserialize_state('game_state.txt')~
** Processing line: ~ if !parsed_state~
** Processing line: ~ set_story_line "no game to load. press save first."~
** Processing line: ~ else~
** Processing line: ~ $gtk.args.state = parsed_state~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Resets the game.~
** Processing line: ~ def reset~
** Processing line: ~ $gtk.reset~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ class TextedBasedGamePresenter~
** Processing line: ~ attr_accessor :state, :outputs, :inputs~
** Processing line: ~~
** Processing line: ~ # Creates empty collection called highlights.~
** Processing line: ~ # Calls methods necessary to run the game.~
** Processing line: ~ def tick~
** Processing line: ~ state.layout.highlights ||= []~
** Processing line: ~ game.tick if game.should_tick?~
** Processing line: ~ render~
** Processing line: ~ process_input~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs a label of the tick count (passage of time) and calls all render methods.~
** Processing line: ~ def render~
** Processing line: ~ outputs.labels << [10, 30, state.tick_count]~
** Processing line: ~ render_alert~
** Processing line: ~ render_room~
** Processing line: ~ render_highlights~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs a label onto the screen that shows the story line, and also outputs a "close" button.~
** Processing line: ~ def render_alert~
** Processing line: ~ return unless game.active_module == :alert~
** Processing line: ~~
** Processing line: ~ outputs.labels << [640, 480, game.story_line, 5, 1] # outputs story line label~
** Processing line: ~ outputs.primitives << button(:alert_dismiss, 490, 380, "close") # positions "close" button under story line~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_room~
** Processing line: ~ return unless game.active_module == :room~
** Processing line: ~ outputs.labels << [640, 700, game.room_title, 4, 1] # outputs room title label at top of screen~
** Processing line: ~~
** Processing line: ~ # The parameters for these outputs are (symbol, x, y, text, value/percentage) and each has a y value~
** Processing line: ~ # that positions it 60 pixels lower than the previous output.~
** Processing line: ~~
** Processing line: ~ # outputs the light_fire_progress bar, uses light_fire_progress for its percentage (which changes bar's appearance)~
** Processing line: ~ outputs.primitives << progress_bar(:light_fire, 490, 600, "light fire", game.light_fire_progress)~
** Processing line: ~ outputs.primitives << button( :save_game, 490, 540, "save") # outputs save button~
** Processing line: ~ outputs.primitives << button( :load_game, 490, 480, "load") # outputs load button~
** Processing line: ~ outputs.primitives << button( :reset_game, 490, 420, "reset") # outputs reset button~
** Processing line: ~ outputs.labels << [640, 30, "the fire is #{game.fire}", 0, 1] # outputs fire label at bottom of screen~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs a collection of highlights using an array to set their values, and also rejects certain values from the collection.~
** Processing line: ~ def render_highlights~
** Processing line: ~ state.layout.highlights.each do |h| # for each highlight in the collection~
** Processing line: ~ h.lifetime -= 1 # decrease the value of its lifetime~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.solids << state.layout.highlights.map do |h| # outputs highlights collection~
** Processing line: ~ [h.x, h.y, h.w, h.h, h.color, 255 * h.lifetime / h.max_lifetime] # sets definition for each highlight~
** Processing line: ~ # transparency changes; divide lifetime by max_lifetime, multiply result by 255~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # reject highlights from collection that have no remaining lifetime~
** Processing line: ~ state.layout.highlights = state.layout.highlights.reject { |h| h.lifetime <= 0 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Checks whether or not a button was clicked.~
** Processing line: ~ # Returns a boolean value.~
** Processing line: ~ def process_input~
** Processing line: ~ button = button_clicked? # calls button_clicked? method~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns a boolean value.~
** Processing line: ~ # Finds the button that was clicked from the button list and determines what method to call.~
** Processing line: ~ # Adds a highlight to the highlights collection.~
** Processing line: ~ def button_clicked?~
** Processing line: ~ return nil unless click_pos # return nil unless click_pos holds coordinates of mouse click~
** Processing line: ~ button = @button_list.find do |k, v| # goes through button_list to find button clicked~
** Processing line: ~ click_pos.inside_rect? v[:primitives].last.rect # was the mouse clicked inside the rect of button?~
** Processing line: ~ end~
** Processing line: ~ return unless button # return unless a button was clicked~
** Processing line: ~ method_to_call = "#{button[0]}_clicked".to_sym # sets method_to_call to symbol (like :save_game or :load_game)~
** Processing line: ~ if self.respond_to? method_to_call # returns true if self responds to the given method (method actually exists)~
** Processing line: ~ border = button[1][:primitives].last # sets border definition using value of last key in button list hash~
** Processing line: ~~
** Processing line: ~ # declares each highlight as a new entity, sets properties~
** Processing line: ~ state.layout.highlights << state.new_entity(:highlight) do |h|~
** Processing line: ~ h.x = border.x~
** Processing line: ~ h.y = border.y~
** Processing line: ~ h.w = border.w~
** Processing line: ~ h.h = border.h~
** Processing line: ~ h.max_lifetime = 10~
** Processing line: ~ h.lifetime = h.max_lifetime~
** Processing line: ~ h.color = [120, 120, 180] # sets color to shade of purple~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ self.send method_to_call # invoke method identified by symbol~
** Processing line: ~ else # otherwise, if self doesn't respond to given method~
** Processing line: ~ border = button[1][:primitives].last # sets border definition using value of last key in hash~
** Processing line: ~~
** Processing line: ~ # declares each highlight as a new entity, sets properties~
** Processing line: ~ state.layout.highlights << state.new_entity(:highlight) do |h|~
** Processing line: ~ h.x = border.x~
** Processing line: ~ h.y = border.y~
** Processing line: ~ h.w = border.w~
** Processing line: ~ h.h = border.h~
** Processing line: ~ h.max_lifetime = 4 # different max_lifetime than the one set if respond_to? had been true~
** Processing line: ~ h.lifetime = h.max_lifetime~
** Processing line: ~ h.color = [120, 80, 80] # sets color to dark color~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # instructions for users on how to add the missing method_to_call to the code~
** Processing line: ~ puts "It looks like #{method_to_call} doesn't exists on TextedBasedGamePresenter. Please add this method:"~
** Processing line: ~ puts "Just copy the code below and put it in the #{TextedBasedGamePresenter} class definition."~
** Processing line: ~ puts ""~
** Processing line: ~ puts "```"~
** Processing line: ~ puts "class TextedBasedGamePresenter <--- find this class and put the method below in it"~
** Processing line: ~ puts ""~
** Processing line: ~ puts " def #{method_to_call}"~
** Processing line: ~ puts " puts 'Yay that worked!'"~
** Processing line: ~ puts " end"~
** Processing line: ~ puts ""~
** Processing line: ~ puts "end <-- make sure to put the #{method_to_call} method in between the `class` word and the final `end` statement."~
** Processing line: ~ puts "```"~
** Processing line: ~ puts ""~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns the position of the mouse when it is clicked.~
** Processing line: ~ def click_pos~
** Processing line: ~ return nil unless inputs.mouse.click # returns nil unless the mouse was clicked~
** Processing line: ~ return inputs.mouse.click.point # returns location of mouse click (coordinates)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates buttons for the button_list and sets their values using a hash (uses symbols as keys)~
** Processing line: ~ def button id, x, y, text~
** Processing line: ~ @button_list[id] ||= { # assigns values to hash keys~
** Processing line: ~ id: id,~
** Processing line: ~ text: text,~
** Processing line: ~ primitives: [~
** Processing line: ~ [x + 10, y + 30, text, 2, 0].label, # positions label inside border~
** Processing line: ~ [x, y, 300, 50].border, # sets definition of border~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ @button_list[id][:primitives] # returns label and border for buttons~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates a progress bar (used for lighting the fire) and sets its values.~
** Processing line: ~ def progress_bar id, x, y, text, percentage~
** Processing line: ~ @button_list[id] = { # assigns values to hash keys~
** Processing line: ~ id: id,~
** Processing line: ~ text: text,~
** Processing line: ~ primitives: [~
** Processing line: ~ [x, y, 300, 50, 100, 100, 100].solid, # sets definition for solid (which fills the bar with gray)~
** Processing line: ~ [x + 10, y + 30, text, 2, 0].label, # sets definition for label, positions inside border~
** Processing line: ~ [x, y, 300, 50].border, # sets definition of border~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ # Fills progress bar based on percentage. If the fire was ready to be lit (100%) and we multiplied by~
** Processing line: ~ # 100, only 1/3 of the bar would only be filled in. 200 would cause only 2/3 to be filled in.~
** Processing line: ~ @button_list[id][:primitives][0][2] = 300 * percentage~
** Processing line: ~ @button_list[id][:primitives]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Defines the game.~
** Processing line: ~ def game~
** Processing line: ~ @game~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Initalizes the game and creates an empty list of buttons.~
** Processing line: ~ def initialize~
** Processing line: ~ @game = TextedBasedGame.new self~
** Processing line: ~ @button_list ||= {}~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Clears the storyline and takes the user to the room.~
** Processing line: ~ def alert_dismiss_clicked~
** Processing line: ~ game.clear_storyline~
** Processing line: ~ game.go_to_room~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Lights the fire when the user clicks the "light fire" option.~
** Processing line: ~ def light_fire_clicked~
** Processing line: ~ game.light_fire~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Saves the game when the user clicks the "save" option.~
** Processing line: ~ def save_game_clicked~
** Processing line: ~ game.save~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Resets the game when the user clicks the "reset" option.~
** Processing line: ~ def reset_game_clicked~
** Processing line: ~ game.reset~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Loads the game when the user clicks the "load" option.~
** Processing line: ~ def load_game_clicked~
** Processing line: ~ game.load~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $text_based_rpg = TextedBasedGamePresenter.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $text_based_rpg.state = args.state~
** Processing line: ~ $text_based_rpg.outputs = args.outputs~
** Processing line: ~ $text_based_rpg.inputs = args.inputs~
** Processing line: ~ $text_based_rpg.tick~
** 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~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Rendering - Simple Render Targets - 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/01_simple_render_targets/app/main.rb~
** Processing line: ~ def tick args~
** Processing line: ~ # args.outputs.render_targets are really really powerful.~
** Processing line: ~ # They essentially allow you to create a sprite programmatically and cache the result.~
** Processing line: ~~
** Processing line: ~ # Create a render_target of a :block and a :gradient on tick zero.~
** Processing line: ~ if args.state.tick_count == 0~
** Processing line: ~ args.render_target(:block).solids << [0, 0, 1280, 100]~
** Processing line: ~~
** Processing line: ~ # The gradient is actually just a collection of black solids with increasing~
** Processing line: ~ # opacities.~
** Processing line: ~ args.render_target(:gradient).solids << 90.map_with_index do |x|~
** Processing line: ~ 50.map_with_index do |y|~
** Processing line: ~ [x * 15, y * 15, 15, 15, 0, 0, 0, (x * 3).fdiv(255) * 255]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Take the :block render_target and present it horizontally centered.~
** Processing line: ~ # Use a subsection of the render_targetd specified by source_x,~
** Processing line: ~ # source_y, source_w, source_h.~
** Processing line: ~ args.outputs.sprites << { x: 0,~
** Processing line: ~ y: 310,~
** Processing line: ~ w: 1280,~
** Processing line: ~ h: 100,~
** Processing line: ~ path: :block,~
** Processing line: ~ source_x: 0,~
** Processing line: ~ source_y: 0,~
** Processing line: ~ source_w: 1280,~
** Processing line: ~ source_h: 100 }~
** Processing line: ~~
** Processing line: ~ # After rendering :block, render gradient on top of :block.~
** Processing line: ~ args.outputs.sprites << [0, 0, 1280, 720, :gradient]~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << [1270, 710, args.gtk.current_framerate, 0, 2, 255, 255, 255]~
** Processing line: ~ tick_instructions args, "Sample app shows how to use render_targets (programmatically create cached sprites)."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.reset~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Rendering - Render Targets With Alphas - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Rendering - Render Targets With Alphas - 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/02_render_targets_with_alphas/app/main.rb~
** Processing line: ~ # This sample is meant to show you how to do that dripping transition thing~
** Processing line: ~ # at the start of the original Doom. Most of this file is here to animate~
** Processing line: ~ # a scene to wipe away; the actual wipe effect is in the last 20 lines or~
** Processing line: ~ # so.~
** Processing line: ~~
** Processing line: ~ $gtk.reset # reset all game state if reloaded.~
** Processing line: ~~
** Processing line: ~ def circle_of_blocks pass, xoffset, yoffset, angleoffset, blocksize, distance~
** Processing line: ~ numblocks = 10~
** Processing line: ~~
** Processing line: ~ for i in 1..numblocks do~
** Processing line: ~ angle = ((360 / numblocks) * i) + angleoffset~
** Processing line: ~ radians = angle * (Math::PI / 180)~
** Processing line: ~ x = (xoffset + (distance * Math.cos(radians))).round~
** Processing line: ~ y = (yoffset + (distance * Math.sin(radians))).round~
** Processing line: ~ pass.solids << [ x, y, blocksize, blocksize, 255, 255, 0 ]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def draw_scene args, pass~
** Processing line: ~ pass.solids << [0, 360, 1280, 360, 0, 0, 200]~
** Processing line: ~ pass.solids << [0, 0, 1280, 360, 0, 127, 0]~
** Processing line: ~~
** Processing line: ~ blocksize = 100~
** Processing line: ~ angleoffset = args.state.tick_count * 2.5~
** Processing line: ~ centerx = (1280 - blocksize) / 2~
** Processing line: ~ centery = (720 - blocksize) / 2~
** Processing line: ~~
** Processing line: ~ circle_of_blocks pass, centerx, centery, angleoffset, blocksize * 2, 500~
** Processing line: ~ circle_of_blocks pass, centerx, centery, angleoffset, blocksize, 325~
** Processing line: ~ circle_of_blocks pass, centerx, centery, angleoffset, blocksize / 2, 200~
** Processing line: ~ circle_of_blocks pass, centerx, centery, angleoffset, blocksize / 4, 100~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ segments = 160~
** Processing line: ~~
** Processing line: ~ # On the first tick, initialize some stuff.~
** Processing line: ~ if !args.state.yoffsets~
** Processing line: ~ args.state.baseyoff = 0~
** Processing line: ~ args.state.yoffsets = []~
** Processing line: ~ for i in 0..segments do~
** Processing line: ~ args.state.yoffsets << rand * 100~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Just draw some random stuff for a few seconds.~
** Processing line: ~ args.state.static_debounce ||= 60 * 2.5~
** Processing line: ~ if args.state.static_debounce > 0~
** Processing line: ~ last_frame = args.state.static_debounce == 1~
** Processing line: ~ target = last_frame ? args.render_target(:last_frame) : args.outputs~
** Processing line: ~ draw_scene args, target~
** Processing line: ~ args.state.static_debounce -= 1~
** Processing line: ~ return unless last_frame~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # build up the wipe...~
** Processing line: ~~
** Processing line: ~ # this is the thing we're wiping to.~
** Processing line: ~ args.outputs.sprites << [ 0, 0, 1280, 720, 'dragonruby.png' ]~
** Processing line: ~~
** Processing line: ~ return if (args.state.baseyoff > (1280 + 100)) # stop when done sliding~
** Processing line: ~~
** Processing line: ~ segmentw = 1280 / segments~
** Processing line: ~~
** Processing line: ~ x = 0~
** Processing line: ~ for i in 0..segments do~
** Processing line: ~ yoffset = 0~
** Processing line: ~ if args.state.yoffsets[i] < args.state.baseyoff~
** Processing line: ~ yoffset = args.state.baseyoff - args.state.yoffsets[i]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # (720 - yoffset) flips the coordinate system, (- 720) adjusts for the height of the segment.~
** Processing line: ~ args.outputs.sprites << [ x, (720 - yoffset) - 720, segmentw, 720, 'last_frame', 0, 255, 255, 255, 255, x, 0, segmentw, 720 ]~
** Processing line: ~ x += segmentw~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.baseyoff += 4~
** Processing line: ~~
** Processing line: ~ tick_instructions args, "Sample app shows an advanced usage of render_target."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Rendering - Render Target Viewports - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Rendering - Render Target Viewports - 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/03_render_target_viewports/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
** Processing line: ~ For example, if we want to create a new button, we would declare it as a new entity and~
** Processing line: ~ then define its properties. (Remember, you can use state to define ANY property and it will~
** Processing line: ~ be retained across frames.)~
** Processing line: ~~
** Processing line: ~ If you have a solar system and you're creating args.state.sun and setting its image path to an~
** Processing line: ~ image in the sprites folder, you would do the following:~
** Processing line: ~ (See samples/99_sample_nddnug_workshop for more details.)~
** Processing line: ~~
** Processing line: ~ args.state.sun ||= args.state.new_entity(:sun) do |s|~
** Processing line: ~ s.path = 'sprites/sun.png'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ - String interpolation: Uses #{} syntax; everything between the #{ and the } is evaluated~
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
** Processing line: ~~
** Processing line: ~ For example, if we have a variable~
** Processing line: ~ name = "Ruby"~
** Processing line: ~ then the line~
** Processing line: ~ puts "How are you, #{name}?"~
** Processing line: ~ would print "How are you, Ruby?" to the console.~
** Processing line: ~ (Remember, string interpolation only works with double quotes!)~
** Processing line: ~~
** Processing line: ~ - Ternary operator (?): Similar to if statement; first evalulates whether a statement is~
** Processing line: ~ true or false, and then executes a command depending on that result.~
** Processing line: ~ For example, if we had a variable~
** Processing line: ~ grade = 75~
** Processing line: ~ and used the ternary operator in the command~
** Processing line: ~ pass_or_fail = grade > 65 ? "pass" : "fail"~
** Processing line: ~ then the value of pass_or_fail would be "pass" since grade's value was greater than 65.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - args.grid.(left|right|top|bottom): Pixel value for the boundaries of the virtual~
** Processing line: ~ 720 p screen (Dragon Ruby Game Toolkits's virtual resolution is always 1280x720).~
** Processing line: ~~
** Processing line: ~ - Numeric#shift_(left|right|up|down): Shifts the Numeric in the correct direction~
** Processing line: ~ by adding or subracting.~
** Processing line: ~~
** Processing line: ~ - ARRAY#inside_rect?: An array with at least two values is considered a point. An array~
** Processing line: ~ with at least four values is considered a rect. The inside_rect? function returns true~
** Processing line: ~ or false depending on if the point is inside the rect.~
** Processing line: ~~
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if the two rectangles intersect.~
** Processing line: ~~
** Processing line: ~ - args.inputs.mouse.click: This property will be set if the mouse was clicked.~
** Processing line: ~ For more information about the mouse, go to mygame/documentation/07-mouse.md.~
** Processing line: ~~
** Processing line: ~ - args.inputs.keyboard.key_up.KEY: The value of the properties will be set~
** Processing line: ~ to the frame that the key_up event occurred (the frame correlates~
** Processing line: ~ to args.state.tick_count).~
** Processing line: ~ For more information about the keyboard, go to mygame/documentation/06-keyboard.md.~
** Processing line: ~~
** Processing line: ~ - args.state.labels:~
** Processing line: ~ The parameters for a label are~
** Processing line: ~ 1. the position (x, y)~
** Processing line: ~ 2. the text~
** Processing line: ~ 3. the size~
** Processing line: ~ 4. the alignment~
** Processing line: ~ 5. the color (red, green, and blue saturations)~
** Processing line: ~ 6. the alpha (or transparency)~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - args.state.lines:~
** Processing line: ~ The parameters for a line are~
** Processing line: ~ 1. the starting position (x, y)~
** Processing line: ~ 2. the ending position (x2, y2)~
** Processing line: ~ 3. the color (red, green, and blue saturations)~
** Processing line: ~ 4. the alpha (or transparency)~
** Processing line: ~ For more information about lines, go to mygame/documentation/04-lines.md.~
** Processing line: ~~
** Processing line: ~ - args.state.solids (and args.state.borders):~
** Processing line: ~ The parameters for a solid (or border) are~
** Processing line: ~ 1. the position (x, y)~
** Processing line: ~ 2. the width (w)~
** Processing line: ~ 3. the height (h)~
** Processing line: ~ 4. the color (r, g, b)~
** Processing line: ~ 5. the alpha (or transparency)~
** Processing line: ~ For more information about solids and borders, go to mygame/documentation/03-solids-and-borders.md.~
** Processing line: ~~
** Processing line: ~ - args.state.sprites:~
** Processing line: ~ The parameters for a sprite are~
** Processing line: ~ 1. the position (x, y)~
** Processing line: ~ 2. the width (w)~
** Processing line: ~ 3. the height (h)~
** Processing line: ~ 4. the image path~
** Processing line: ~ 5. the angle~
** Processing line: ~ 6. the alpha (or transparency)~
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app shows different objects that can be used when making games, such as labels,~
** Processing line: ~ # lines, sprites, solids, buttons, etc. Each demo section shows how these objects can be used.~
** Processing line: ~~
** Processing line: ~ # Also note that state.tick_count refers to the passage of time, or current frame.~
** Processing line: ~~
** Processing line: ~ class TechDemo~
** Processing line: ~ attr_accessor :inputs, :state, :outputs, :grid, :args~
** Processing line: ~~
** Processing line: ~ # Calls all methods necessary for the app to run properly.~
** Processing line: ~ def tick~
** Processing line: ~ labels_tech_demo~
** Processing line: ~ lines_tech_demo~
** Processing line: ~ solids_tech_demo~
** Processing line: ~ borders_tech_demo~
** Processing line: ~ sprites_tech_demo~
** Processing line: ~ keyboards_tech_demo~
** Processing line: ~ controller_tech_demo~
** Processing line: ~ mouse_tech_demo~
** Processing line: ~ point_to_rect_tech_demo~
** Processing line: ~ rect_to_rect_tech_demo~
** Processing line: ~ button_tech_demo~
** Processing line: ~ export_game_state_demo~
** Processing line: ~ window_state_demo~
** Processing line: ~ render_seperators~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Shows output of different kinds of labels on the screen~
** Processing line: ~ def labels_tech_demo~
** Processing line: ~ outputs.labels << [grid.left.shift_right(5), grid.top.shift_down(5), "This is a label located at the top left."]~
** Processing line: ~ outputs.labels << [grid.left.shift_right(5), grid.bottom.shift_up(30), "This is a label located at the bottom left."]~
** Processing line: ~ outputs.labels << [ 5, 690, "Labels (x, y, text, size, align, r, g, b, a)"]~
** Processing line: ~ outputs.labels << [ 5, 660, "Smaller label.", -2]~
** Processing line: ~ outputs.labels << [ 5, 630, "Small label.", -1]~
** Processing line: ~ outputs.labels << [ 5, 600, "Medium label.", 0]~
** Processing line: ~ outputs.labels << [ 5, 570, "Large label.", 1]~
** Processing line: ~ outputs.labels << [ 5, 540, "Larger label.", 2]~
** Processing line: ~ outputs.labels << [300, 660, "Left aligned.", 0, 2]~
** Processing line: ~ outputs.labels << [300, 640, "Center aligned.", 0, 1]~
** Processing line: ~ outputs.labels << [300, 620, "Right aligned.", 0, 0]~
** Processing line: ~ outputs.labels << [175, 595, "Red Label.", 0, 0, 255, 0, 0]~
** Processing line: ~ outputs.labels << [175, 575, "Green Label.", 0, 0, 0, 255, 0]~
** Processing line: ~ outputs.labels << [175, 555, "Blue Label.", 0, 0, 0, 0, 255]~
** Processing line: ~ outputs.labels << [175, 535, "Faded Label.", 0, 0, 0, 0, 0, 128]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Shows output of lines on the screen~
** Processing line: ~ def lines_tech_demo~
** Processing line: ~ outputs.labels << [5, 500, "Lines (x, y, x2, y2, r, g, b, a)"]~
** Processing line: ~ outputs.lines << [5, 450, 100, 450]~
** Processing line: ~ outputs.lines << [5, 430, 300, 430]~
** Processing line: ~ outputs.lines << [5, 410, 300, 410, state.tick_count % 255, 0, 0, 255] # red saturation changes~
** Processing line: ~ outputs.lines << [5, 390 - state.tick_count % 25, 300, 390, 0, 0, 0, 255] # y position changes~
** Processing line: ~ outputs.lines << [5 + state.tick_count % 200, 360, 300, 360, 0, 0, 0, 255] # x position changes~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Shows output of different kinds of solids on the screen~
** Processing line: ~ def solids_tech_demo~
** Processing line: ~ outputs.labels << [ 5, 350, "Solids (x, y, w, h, r, g, b, a)"]~
** Processing line: ~ outputs.solids << [ 10, 270, 50, 50]~
** Processing line: ~ outputs.solids << [ 70, 270, 50, 50, 0, 0, 0]~
** Processing line: ~ outputs.solids << [130, 270, 50, 50, 255, 0, 0]~
** Processing line: ~ outputs.solids << [190, 270, 50, 50, 255, 0, 0, 128]~
** Processing line: ~ outputs.solids << [250, 270, 50, 50, 0, 0, 0, 128 + state.tick_count % 128] # transparency changes~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Shows output of different kinds of borders on the screen~
** Processing line: ~ # The parameters for a border are the same as the parameters for a solid~
** Processing line: ~ def borders_tech_demo~
** Processing line: ~ outputs.labels << [ 5, 260, "Borders (x, y, w, h, r, g, b, a)"]~
** Processing line: ~ outputs.borders << [ 10, 180, 50, 50]~
** Processing line: ~ outputs.borders << [ 70, 180, 50, 50, 0, 0, 0]~
** Processing line: ~ outputs.borders << [130, 180, 50, 50, 255, 0, 0]~
** Processing line: ~ outputs.borders << [190, 180, 50, 50, 255, 0, 0, 128]~
** Processing line: ~ outputs.borders << [250, 180, 50, 50, 0, 0, 0, 128 + state.tick_count % 128] # transparency changes~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Shows output of different kinds of sprites on the screen~
** Processing line: ~ def sprites_tech_demo~
** Processing line: ~ outputs.labels << [ 5, 170, "Sprites (x, y, w, h, path, angle, a)"]~
** Processing line: ~ outputs.sprites << [ 10, 40, 128, 101, 'dragonruby.png']~
** Processing line: ~ outputs.sprites << [ 150, 40, 128, 101, 'dragonruby.png', state.tick_count % 360] # angle changes~
** Processing line: ~ outputs.sprites << [ 300, 40, 128, 101, 'dragonruby.png', 0, state.tick_count % 255] # transparency changes~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Holds size, alignment, color (black), and alpha (transparency) parameters~
** Processing line: ~ # Using small_font as a parameter accounts for all remaining parameters~
** Processing line: ~ # so they don't have to be repeatedly typed~
** Processing line: ~ def small_font~
** Processing line: ~ [-2, 0, 0, 0, 0, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets position of each row~
** Processing line: ~ # Converts given row value to pixels that DragonRuby understands~
** Processing line: ~ def row_to_px row_number~
** Processing line: ~~
** Processing line: ~ # Row 0 starts 5 units below the top of the grid.~
** Processing line: ~ # Each row afterward is 20 units lower.~
** Processing line: ~ grid.top.shift_down(5).shift_down(20 * row_number)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Uses labels to output current game time (passage of time), and whether or not "h" was pressed~
** Processing line: ~ # If "h" is pressed, the frame is output when the key_up event occurred~
** Processing line: ~ def keyboards_tech_demo~
** Processing line: ~ outputs.labels << [460, row_to_px(0), "Current game time: #{state.tick_count}", small_font]~
** Processing line: ~ outputs.labels << [460, row_to_px(2), "Keyboard input: inputs.keyboard.key_up.h", small_font]~
** Processing line: ~ outputs.labels << [460, row_to_px(3), "Press \"h\" on the keyboard.", small_font]~
** Processing line: ~~
** Processing line: ~ if inputs.keyboard.key_up.h # if "h" key_up event occurs~
** Processing line: ~ state.h_pressed_at = state.tick_count # frame it occurred is stored~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # h_pressed_at is initially set to false, and changes once the user presses the "h" key.~
** Processing line: ~ state.h_pressed_at ||= false~
** Processing line: ~~
** Processing line: ~ if state.h_pressed_at # if h is pressed (pressed_at has a frame number and is no longer false)~
** Processing line: ~ outputs.labels << [460, row_to_px(4), "\"h\" was pressed at time: #{state.h_pressed_at}", small_font]~
** Processing line: ~ else # otherwise, label says "h" was never pressed~
** Processing line: ~ outputs.labels << [460, row_to_px(4), "\"h\" has never been pressed.", small_font]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # border around keyboard input demo section~
** Processing line: ~ outputs.borders << [455, row_to_px(5), 360, row_to_px(2).shift_up(5) - row_to_px(5)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets definition for a small label~
** Processing line: ~ # Makes it easier to position labels in respect to the position of other labels~
** Processing line: ~ def small_label x, row, message~
** Processing line: ~ [x, row_to_px(row), message, small_font]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Uses small labels to show whether the "a" button on the controller is down, held, or up.~
** Processing line: ~ # y value of each small label is set by calling the row_to_px method~
** Processing line: ~ def controller_tech_demo~
** Processing line: ~ x = 460~
** Processing line: ~ outputs.labels << small_label(x, 6, "Controller one input: inputs.controller_one")~
** Processing line: ~ outputs.labels << small_label(x, 7, "Current state of the \"a\" button.")~
** Processing line: ~ outputs.labels << small_label(x, 8, "Check console window for more info.")~
** Processing line: ~~
** Processing line: ~ if inputs.controller_one.key_down.a # if "a" is in "down" state~
** Processing line: ~ outputs.labels << small_label(x, 9, "\"a\" button down: #{inputs.controller_one.key_down.a}")~
** Processing line: ~ puts "\"a\" button down at #{inputs.controller_one.key_down.a}" # prints frame the event occurred~
** Processing line: ~ elsif inputs.controller_one.key_held.a # if "a" is held down~
** Processing line: ~ outputs.labels << small_label(x, 9, "\"a\" button held: #{inputs.controller_one.key_held.a}")~
** Processing line: ~ elsif inputs.controller_one.key_up.a # if "a" is in up state~
** Processing line: ~ outputs.labels << small_label(x, 9, "\"a\" button up: #{inputs.controller_one.key_up.a}")~
** Processing line: ~ puts "\"a\" key up at #{inputs.controller_one.key_up.a}"~
** Processing line: ~ else # if no event has occurred~
** Processing line: ~ outputs.labels << small_label(x, 9, "\"a\" button state is nil.")~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # border around controller input demo section~
** Processing line: ~ outputs.borders << [455, row_to_px(10), 360, row_to_px(6).shift_up(5) - row_to_px(10)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs when the mouse was clicked, as well as the coordinates on the screen~
** Processing line: ~ # of where the click occurred~
** Processing line: ~ def mouse_tech_demo~
** Processing line: ~ x = 460~
** Processing line: ~~
** Processing line: ~ outputs.labels << small_label(x, 11, "Mouse input: inputs.mouse")~
** Processing line: ~~
** Processing line: ~ if inputs.mouse.click # if click has a value and is not nil~
** Processing line: ~ state.last_mouse_click = inputs.mouse.click # coordinates of click are stored~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.last_mouse_click # if mouse is clicked (has coordinates as value)~
** Processing line: ~ # outputs the time (frame) the click occurred, as well as how many frames have passed since the event~
** Processing line: ~ outputs.labels << small_label(x, 12, "Mouse click happened at: #{state.last_mouse_click.created_at}, #{state.last_mouse_click.created_at_elapsed}")~
** Processing line: ~ # outputs coordinates of click~
** Processing line: ~ outputs.labels << small_label(x, 13, "Mouse click location: #{state.last_mouse_click.point.x}, #{state.last_mouse_click.point.y}")~
** Processing line: ~ else # otherwise if the mouse has not been clicked~
** Processing line: ~ outputs.labels << small_label(x, 12, "Mouse click has not occurred yet.")~
** Processing line: ~ outputs.labels << small_label(x, 13, "Please click mouse.")~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs whether a mouse click occurred inside or outside of a box~
** Processing line: ~ def point_to_rect_tech_demo~
** Processing line: ~ x = 460~
** Processing line: ~~
** Processing line: ~ outputs.labels << small_label(x, 15, "Click inside the blue box maybe ---->")~
** Processing line: ~~
** Processing line: ~ box = [765, 370, 50, 50, 0, 0, 170] # blue box~
** Processing line: ~ outputs.borders << box~
** Processing line: ~~
** Processing line: ~ if state.last_mouse_click # if the mouse was clicked~
** Processing line: ~ if state.last_mouse_click.point.inside_rect? box # if mouse clicked inside box~
** Processing line: ~ outputs.labels << small_label(x, 16, "Mouse click happened inside the box.")~
** Processing line: ~ else # otherwise, if mouse was clicked outside the box~
** Processing line: ~ outputs.labels << small_label(x, 16, "Mouse click happened outside the box.")~
** Processing line: ~ end~
** Processing line: ~ else # otherwise, if was not clicked at all~
** Processing line: ~ outputs.labels << small_label(x, 16, "Mouse click has not occurred yet.") # output if the mouse was not clicked~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # border around mouse input demo section~
** Processing line: ~ outputs.borders << [455, row_to_px(14), 360, row_to_px(11).shift_up(5) - row_to_px(14)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs a red box onto the screen. A mouse click from the user inside of the red box will output~
** Processing line: ~ # a smaller box. If two small boxes are inside of the red box, it will be determined whether or not~
** Processing line: ~ # they intersect.~
** Processing line: ~ def rect_to_rect_tech_demo~
** Processing line: ~ x = 460~
** Processing line: ~~
** Processing line: ~ outputs.labels << small_label(x, 17.5, "Click inside the red box below.") # label with instructions~
** Processing line: ~ red_box = [460, 250, 355, 90, 170, 0, 0] # definition of the red box~
** Processing line: ~ outputs.borders << red_box # output as a border (not filled in)~
** Processing line: ~~
** Processing line: ~ # If the mouse is clicked inside the red box, two collision boxes are created.~
** Processing line: ~ if inputs.mouse.click~
** Processing line: ~ if inputs.mouse.click.point.inside_rect? red_box~
** Processing line: ~ if !state.box_collision_one # if the collision_one box does not yet have a definition~
** Processing line: ~ # Subtracts 25 from the x and y positions of the click point in order to make the click point the center of the box.~
** Processing line: ~ # You can try deleting the subtraction to see how it impacts the box placement.~
** Processing line: ~ state.box_collision_one = [inputs.mouse.click.point.x - 25, inputs.mouse.click.point.y - 25, 50, 50, 180, 0, 0, 180] # sets definition~
** Processing line: ~ elsif !state.box_collision_two # if collision_two does not yet have a definition~
** Processing line: ~ state.box_collision_two = [inputs.mouse.click.point.x - 25, inputs.mouse.click.point.y - 25, 50, 50, 0, 0, 180, 180] # sets definition~
** Processing line: ~ else~
** Processing line: ~ state.box_collision_one = nil # both boxes are empty~
** Processing line: ~ state.box_collision_two = nil~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # If collision boxes exist, they are output onto screen inside the red box as solids~
** Processing line: ~ if state.box_collision_one~
** Processing line: ~ outputs.solids << state.box_collision_one~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.box_collision_two~
** Processing line: ~ outputs.solids << state.box_collision_two~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs whether or not the two collision boxes intersect.~
** Processing line: ~ if state.box_collision_one && state.box_collision_two # if both collision_boxes are defined (and not nil or empty)~
** Processing line: ~ if state.box_collision_one.intersect_rect? state.box_collision_two # if the two boxes intersect~
** Processing line: ~ outputs.labels << small_label(x, 23.5, 'The boxes intersect.')~
** Processing line: ~ else # otherwise, if the two boxes do not intersect~
** Processing line: ~ outputs.labels << small_label(x, 23.5, 'The boxes do not intersect.')~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ outputs.labels << small_label(x, 23.5, '--') # if the two boxes are not defined (are nil or empty), this label is output~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates a button and outputs it onto the screen using labels and borders.~
** Processing line: ~ # If the button is clicked, the color changes to make it look faded.~
** Processing line: ~ def button_tech_demo~
** Processing line: ~ x, y, w, h = 460, 160, 300, 50~
** Processing line: ~ state.button ||= state.new_entity(:button_with_fade)~
** Processing line: ~~
** Processing line: ~ # Adds w.half to x and h.half + 10 to y in order to display the text inside the button's borders.~
** Processing line: ~ state.button.label ||= [x + w.half, y + h.half + 10, "click me and watch me fade", 0, 1]~
** Processing line: ~ state.button.border ||= [x, y, w, h]~
** Processing line: ~~
** Processing line: ~ if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.button.border) # if mouse is clicked, and clicked inside button's border~
** Processing line: ~ state.button.clicked_at = inputs.mouse.click.created_at # stores the time the click occurred~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.labels << state.button.label~
** Processing line: ~ outputs.borders << state.button.border~
** Processing line: ~~
** Processing line: ~ if state.button.clicked_at # if button was clicked (variable has a value and is not nil)~
** Processing line: ~~
** Processing line: ~ # The appearance of the button changes for 0.25 seconds after the time the button is clicked at.~
** Processing line: ~ # The color changes (rgb is set to 0, 180, 80) and the transparency gradually changes.~
** Processing line: ~ # Change 0.25 to 1.25 and notice that the transparency takes longer to return to normal.~
** Processing line: ~ outputs.solids << [x, y, w, h, 0, 180, 80, 255 * state.button.clicked_at.ease(0.25.seconds, :flip)]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates a new button by declaring it as a new entity, and sets values.~
** Processing line: ~ def new_button_prefab x, y, message~
** Processing line: ~ w, h = 300, 50~
** Processing line: ~ button = state.new_entity(:button_with_fade)~
** Processing line: ~ button.label = [x + w.half, y + h.half + 10, message, 0, 1] # '+ 10' keeps label's text within button's borders~
** Processing line: ~ button.border = [x, y, w, h] # sets border definition~
** Processing line: ~ button~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # If the mouse has been clicked and the click's location is inside of the button's border, that means~
** Processing line: ~ # that the button has been clicked. This method returns a boolean value.~
** Processing line: ~ def button_clicked? button~
** Processing line: ~ inputs.mouse.click && inputs.mouse.click.point.inside_rect?(button.border)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Determines if button was clicked, and changes its appearance if it is clicked~
** Processing line: ~ def tick_button_prefab button~
** Processing line: ~ outputs.labels << button.label # outputs button's label and border~
** Processing line: ~ outputs.borders << button.border~
** Processing line: ~~
** Processing line: ~ if button_clicked? button # if button is clicked~
** Processing line: ~ button.clicked_at = inputs.mouse.click.created_at # stores the time that the button was clicked~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if button.clicked_at # if clicked_at has a frame value and is not nil~
** Processing line: ~ # button is output; color changes and transparency changes for 0.25 seconds after click occurs~
** Processing line: ~ outputs.solids << [button.border.x, button.border.y, button.border.w, button.border.h,~
** Processing line: ~ 0, 180, 80, 255 * button.clicked_at.ease(0.25.seconds, :flip)] # transparency changes for 0.25 seconds~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Exports the app's game state if the export button is clicked.~
** Processing line: ~ def export_game_state_demo~
** Processing line: ~ state.export_game_state_button ||= new_button_prefab(460, 100, "click to export app state")~
** Processing line: ~ tick_button_prefab(state.export_game_state_button) # calls method to output button~
** Processing line: ~ if button_clicked? state.export_game_state_button # if the export button is clicked~
** Processing line: ~ args.gtk.export! "Exported from clicking the export button in the tech demo." # the export occurs~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The mouse and keyboard focus are set to "yes" when the Dragonruby window is the active window.~
** Processing line: ~ def window_state_demo~
** Processing line: ~ m = $gtk.args.inputs.mouse.has_focus ? 'Y' : 'N' # ternary operator (similar to if statement)~
** Processing line: ~ k = $gtk.args.inputs.keyboard.has_focus ? 'Y' : 'N'~
** Processing line: ~ outputs.labels << [460, 20, "mouse focus: #{m} keyboard focus: #{k}", small_font]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #Sets values for the horizontal separator (divides demo sections)~
** Processing line: ~ def horizontal_seperator y, x, x2~
** Processing line: ~ [x, y, x2, y, 150, 150, 150]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #Sets the values for the vertical separator (divides demo sections)~
** Processing line: ~ def vertical_seperator x, y, y2~
** Processing line: ~ [x, y, x, y2, 150, 150, 150]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs vertical and horizontal separators onto the screen to separate each demo section.~
** Processing line: ~ def render_seperators~
** Processing line: ~ outputs.lines << horizontal_seperator(505, grid.left, 445)~
** Processing line: ~ outputs.lines << horizontal_seperator(353, grid.left, 445)~
** Processing line: ~ outputs.lines << horizontal_seperator(264, grid.left, 445)~
** Processing line: ~ outputs.lines << horizontal_seperator(174, grid.left, 445)~
** Processing line: ~~
** Processing line: ~ outputs.lines << vertical_seperator(445, grid.top, grid.bottom)~
** Processing line: ~~
** Processing line: ~ outputs.lines << horizontal_seperator(690, 445, 820)~
** Processing line: ~ outputs.lines << horizontal_seperator(426, 445, 820)~
** Processing line: ~~
** Processing line: ~ outputs.lines << vertical_seperator(820, grid.top, grid.bottom)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $tech_demo = TechDemo.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $tech_demo.inputs = args.inputs~
** Processing line: ~ $tech_demo.state = args.state~
** Processing line: ~ $tech_demo.grid = args.grid~
** Processing line: ~ $tech_demo.args = args~
** Processing line: ~ $tech_demo.outputs = args.render_target(:mini_map)~
** Processing line: ~ $tech_demo.tick~
** Processing line: ~ args.outputs.labels << [830, 715, "Render target:", [-2, 0, 0, 0, 0, 255]]~
** Processing line: ~ args.outputs.sprites << [0, 0, 1280, 720, :mini_map]~
** Processing line: ~ args.outputs.sprites << [830, 300, 675, 379, :mini_map]~
** Processing line: ~ tick_instructions args, "Sample app shows all the rendering apis available."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Rendering - Render Primitive Hierarchies - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Rendering - Render Primitive Hierarchies - 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/04_render_primitive_hierarchies/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - Nested array: An array whose individual elements are also arrays; useful for~
** Processing line: ~ storing groups of similar data. Also called multidimensional arrays.~
** Processing line: ~~
** Processing line: ~ In this sample app, we see nested arrays being used in object definitions.~
** Processing line: ~ Notice the parameters for solids, listed below. Parameters 1-3 set the~
** Processing line: ~ definition for the rect, and parameter 4 sets the definition of the color.~
** Processing line: ~~
** Processing line: ~ Instead of having a solid definition that looks like this,~
** Processing line: ~ [X, Y, W, H, R, G, B]~
** Processing line: ~ we can separate it into two separate array definitions in one, like this~
** Processing line: ~ [[X, Y, W, H], [R, G, B]]~
** Processing line: ~ and both options work fine in defining our solid (or any object).~
** Processing line: ~~
** Processing line: ~ - Collections: Lists of data; useful for organizing large amounts of data.~
** Processing line: ~ One element of a collection could be an array (which itself contains many elements).~
** Processing line: ~ For example, a collection that stores two solid objects would look like this:~
** Processing line: ~ [~
** Processing line: ~ [100, 100, 50, 50, 0, 0, 0],~
** Processing line: ~ [100, 150, 50, 50, 255, 255, 255]~
** Processing line: ~ ]~
** Processing line: ~ If this collection was added to args.outputs.solids, two solids would be output~
** Processing line: ~ next to each other, one black and one white.~
** Processing line: ~ Nested arrays can be used in collections, as you will see in this sample app.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
** Processing line: ~ The parameters for a solid are~
** Processing line: ~ 1. The position on the screen (x, y)~
** Processing line: ~ 2. The width (w)~
** Processing line: ~ 3. The height (h)~
** Processing line: ~ 4. The color (r, g, b) (if a color is not assigned, the object's default color will be black)~
** Processing line: ~ NOTE: THE PARAMETERS ARE THE SAME FOR BORDERS!~
** Processing line: ~~
** Processing line: ~ Here is an example of a (red) border or solid definition:~
** Processing line: ~ [100, 100, 400, 500, 255, 0, 0]~
** Processing line: ~ It will be a solid or border depending on if it is added to args.outputs.solids or args.outputs.borders.~
** Processing line: ~ For more information about solids and borders, go to mygame/documentation/03-solids-and-borders.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.sprites: An array. The values generate a sprite.~
** Processing line: ~ The parameters for sprites are~
** Processing line: ~ 1. The position on the screen (x, y)~
** Processing line: ~ 2. The width (w)~
** Processing line: ~ 3. The height (h)~
** Processing line: ~ 4. The image path (p)~
** Processing line: ~~
** Processing line: ~ Here is an example of a sprite definition:~
** Processing line: ~ [100, 100, 400, 500, 'sprites/dragonruby.png']~
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This code demonstrates the creation and output of objects like sprites, borders, and solids~
** Processing line: ~ # If filled in, they are solids~
** Processing line: ~ # If hollow, they are borders~
** Processing line: ~ # If images, they are sprites~
** Processing line: ~~
** Processing line: ~ # Solids are added to args.outputs.solids~
** Processing line: ~ # Borders are added to args.outputs.borders~
** Processing line: ~ # Sprites are added to args.outputs.sprites~
** Processing line: ~~
** Processing line: ~ # The tick method runs 60 frames every second.~
** Processing line: ~ # Your game is going to happen under this one function.~
** Processing line: ~ def tick args~
** Processing line: ~ border_as_solid_and_solid_as_border args~
** Processing line: ~ sprite_as_border_or_solids args~
** Processing line: ~ collection_of_borders_and_solids args~
** Processing line: ~ collection_of_sprites args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Shows a border being output onto the screen as a border and a solid~
** Processing line: ~ # Also shows how colors can be set~
** Processing line: ~ def border_as_solid_and_solid_as_border args~
** Processing line: ~ border = [0, 0, 50, 50]~
** Processing line: ~ args.outputs.borders << border~
** Processing line: ~ args.outputs.solids << border~
** Processing line: ~~
** Processing line: ~ # Red, green, blue saturations (last three parameters) can be any number between 0 and 255~
** Processing line: ~ border_with_color = [0, 100, 50, 50, 255, 0, 0]~
** Processing line: ~ args.outputs.borders << border_with_color~
** Processing line: ~ args.outputs.solids << border_with_color~
** Processing line: ~~
** Processing line: ~ border_with_nested_color = [0, 200, 50, 50, [0, 255, 0]] # nested color~
** Processing line: ~ args.outputs.borders << border_with_nested_color~
** Processing line: ~ args.outputs.solids << border_with_nested_color~
** Processing line: ~~
** Processing line: ~ border_with_nested_rect = [[0, 300, 50, 50], 0, 0, 255] # nested rect~
** Processing line: ~ args.outputs.borders << border_with_nested_rect~
** Processing line: ~ args.outputs.solids << border_with_nested_rect~
** Processing line: ~~
** Processing line: ~ border_with_nested_color_and_rect = [[0, 400, 50, 50], [255, 0, 255]] # nested rect and color~
** Processing line: ~ args.outputs.borders << border_with_nested_color_and_rect~
** Processing line: ~ args.outputs.solids << border_with_nested_color_and_rect~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Shows a sprite output onto the screen as a sprite, border, and solid~
** Processing line: ~ # Demonstrates that all three outputs appear differently on screen~
** Processing line: ~ def sprite_as_border_or_solids args~
** Processing line: ~ sprite = [100, 0, 50, 50, 'sprites/ship.png']~
** Processing line: ~ args.outputs.sprites << sprite~
** Processing line: ~~
** Processing line: ~ # Sprite_as_border variable has same parameters (excluding position) as above object,~
** Processing line: ~ # but will appear differently on screen because it is added to args.outputs.borders~
** Processing line: ~ sprite_as_border = [100, 100, 50, 50, 'sprites/ship.png']~
** Processing line: ~ args.outputs.borders << sprite_as_border~
** Processing line: ~~
** Processing line: ~ # Sprite_as_solid variable has same parameters (excluding position) as above object,~
** Processing line: ~ # but will appear differently on screen because it is added to args.outputs.solids~
** Processing line: ~ sprite_as_solid = [100, 200, 50, 50, 'sprites/ship.png']~
** Processing line: ~ args.outputs.solids << sprite_as_solid~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Holds and outputs a collection of borders and a collection of solids~
** Processing line: ~ # Collections are created by using arrays to hold parameters of each individual object~
** Processing line: ~ def collection_of_borders_and_solids args~
** Processing line: ~ collection_borders = [~
** Processing line: ~ [~
** Processing line: ~ [200, 0, 50, 50], # black border~
** Processing line: ~ [200, 100, 50, 50, 255, 0, 0], # red border~
** Processing line: ~ [200, 200, 50, 50, [0, 255, 0]], # nested color~
** Processing line: ~ ],~
** Processing line: ~ [[200, 300, 50, 50], 0, 0, 255], # nested rect~
** Processing line: ~ [[200, 400, 50, 50], [255, 0, 255]] # nested rect and nested color~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ args.outputs.borders << collection_borders~
** Processing line: ~~
** Processing line: ~ collection_solids = [~
** Processing line: ~ [~
** Processing line: ~ [[300, 300, 50, 50], 0, 0, 255], # nested rect~
** Processing line: ~ [[300, 400, 50, 50], [255, 0, 255]] # nested rect and nested color~
** Processing line: ~ ],~
** Processing line: ~ [300, 0, 50, 50],~
** Processing line: ~ [300, 100, 50, 50, 255, 0, 0],~
** Processing line: ~ [300, 200, 50, 50, [0, 255, 0]], # nested color~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ args.outputs.solids << collection_solids~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Holds and outputs a collection of sprites by adding it to args.outputs.sprites~
** Processing line: ~ # Also outputs a collection with same parameters (excluding position) by adding~
** Processing line: ~ # it to args.outputs.solids and another to args.outputs.borders~
** Processing line: ~ def collection_of_sprites args~
** Processing line: ~ sprites_collection = [~
** Processing line: ~ [~
** Processing line: ~ [400, 0, 50, 50, 'sprites/ship.png'],~
** Processing line: ~ [400, 100, 50, 50, 'sprites/ship.png'],~
** Processing line: ~ ],~
** Processing line: ~ [400, 200, 50, 50, 'sprites/ship.png']~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ args.outputs.sprites << sprites_collection~
** Processing line: ~~
** Processing line: ~ args.outputs.solids << [~
** Processing line: ~ [500, 0, 50, 50, 'sprites/ship.png'],~
** Processing line: ~ [500, 100, 50, 50, 'sprites/ship.png'],~
** Processing line: ~ [[[500, 200, 50, 50, 'sprites/ship.png']]]~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ args.outputs.borders << [~
** Processing line: ~ [~
** Processing line: ~ [600, 0, 50, 50, 'sprites/ship.png'],~
** Processing line: ~ [600, 100, 50, 50, 'sprites/ship.png'],~
** Processing line: ~ ],~
** Processing line: ~ [600, 200, 50, 50, 'sprites/ship.png']~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Rendering - Render Primitives As Hash - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Rendering - Render Primitives As Hash - 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/05_render_primitives_as_hash/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The value can be found~
** Processing line: ~ using their keys.~
** Processing line: ~~
** Processing line: ~ For example, if we have a "numbers" hash that stores numbers in English as the~
** Processing line: ~ key and numbers in Spanish as the value, we'd have a hash that looks like this...~
** Processing line: ~ numbers = { "one" => "uno", "two" => "dos", "three" => "tres" }~
** Processing line: ~ and on it goes.~
** Processing line: ~~
** Processing line: ~ Now if we wanted to find the corresponding value of the "one" key, we could say~
** Processing line: ~ puts numbers["one"]~
** Processing line: ~ which would print "uno" to the console.~
** Processing line: ~~
** Processing line: ~ - args.outputs.sprites: An array. The values generate a sprite.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, PATH, ANGLE, ALPHA, RED, GREEN, BLUE]~
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE, ALPHA]~
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.borders: An array. The values generate a border.~
** Processing line: ~ The parameters are the same as a solid.~
** Processing line: ~ For more information about borders, go to mygame/documentation/03-solids-and-borders.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.lines: An array. The values generate a line.~
** Processing line: ~ The parameters are [X1, Y1, X2, Y2, RED, GREEN, BLUE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app demonstrates how hashes can be used to output different kinds of objects.~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ args.state.angle ||= 0 # initializes angle to 0~
** Processing line: ~ args.state.angle += 1 # increments angle by 1 every frame (60 times a second)~
** Processing line: ~~
** Processing line: ~ # Outputs sprite using a hash~
** Processing line: ~ args.outputs.sprites << {~
** Processing line: ~ x: 30, # sprite position~
** Processing line: ~ y: 550,~
** Processing line: ~ w: 128, # sprite size~
** Processing line: ~ h: 101,~
** Processing line: ~ path: "dragonruby.png", # image path~
** Processing line: ~ angle: args.state.angle, # angle~
** Processing line: ~ a: 255, # alpha (transparency)~
** Processing line: ~ r: 255, # color saturation~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 255,~
** Processing line: ~ tile_x: 0, # sprite sub division/tile~
** Processing line: ~ tile_y: 0,~
** Processing line: ~ tile_w: -1,~
** Processing line: ~ tile_h: -1,~
** Processing line: ~ flip_vertically: false, # don't flip sprite~
** Processing line: ~ flip_horizontally: false,~
** Processing line: ~ angle_anchor_x: 0.5, # rotation center set to middle~
** Processing line: ~ angle_anchor_y: 0.5~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ # Outputs label using a hash~
** Processing line: ~ args.outputs.labels << {~
** Processing line: ~ x: 200, # label position~
** Processing line: ~ y: 550,~
** Processing line: ~ text: "dragonruby", # label text~
** Processing line: ~ size_enum: 2,~
** Processing line: ~ alignment_enum: 1,~
** Processing line: ~ r: 155, # color saturation~
** Processing line: ~ g: 50,~
** Processing line: ~ b: 50,~
** Processing line: ~ a: 255, # transparency~
** Processing line: ~ font: "fonts/manaspc.ttf" # font style; without mentioned file, label won't output correctly~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ # Outputs solid using a hash~
** Processing line: ~ # [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE, ALPHA]~
** Processing line: ~ args.outputs.solids << {~
** Processing line: ~ x: 400, # position~
** Processing line: ~ y: 550,~
** Processing line: ~ w: 160, # size~
** Processing line: ~ h: 90,~
** Processing line: ~ r: 120, # color saturation~
** Processing line: ~ g: 50,~
** Processing line: ~ b: 50,~
** Processing line: ~ a: 255 # transparency~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ # Outputs border using a hash~
** Processing line: ~ # Same parameters as a solid~
** Processing line: ~ args.outputs.borders << {~
** Processing line: ~ x: 600,~
** Processing line: ~ y: 550,~
** Processing line: ~ w: 160,~
** Processing line: ~ h: 90,~
** Processing line: ~ r: 120,~
** Processing line: ~ g: 50,~
** Processing line: ~ b: 50,~
** Processing line: ~ a: 255~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ # Outputs line using a hash~
** Processing line: ~ args.outputs.lines << {~
** Processing line: ~ x: 900, # starting position~
** Processing line: ~ y: 550,~
** Processing line: ~ x2: 1200, # ending position~
** Processing line: ~ y2: 550,~
** Processing line: ~ r: 120, # color saturation~
** Processing line: ~ g: 50,~
** Processing line: ~ b: 50,~
** Processing line: ~ a: 255 # transparency~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ # Outputs sprite as a primitive using a hash~
** Processing line: ~ args.outputs.primitives << {~
** Processing line: ~ x: 30, # position~
** Processing line: ~ y: 200,~
** Processing line: ~ w: 128, # size~
** Processing line: ~ h: 101,~
** Processing line: ~ path: "dragonruby.png", # image path~
** Processing line: ~ angle: args.state.angle, # angle~
** Processing line: ~ a: 255, # transparency~
** Processing line: ~ r: 255, # color saturation~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 255,~
** Processing line: ~ tile_x: 0, # sprite sub division/tile~
** Processing line: ~ tile_y: 0,~
** Processing line: ~ tile_w: -1,~
** Processing line: ~ tile_h: -1,~
** Processing line: ~ flip_vertically: false, # don't flip~
** Processing line: ~ flip_horizontally: false,~
** Processing line: ~ angle_anchor_x: 0.5, # rotation center set to middle~
** Processing line: ~ angle_anchor_y: 0.5~
** Processing line: ~ }.sprite~
** Processing line: ~~
** Processing line: ~ # Outputs label as primitive using a hash~
** Processing line: ~ args.outputs.primitives << {~
** Processing line: ~ x: 200, # position~
** Processing line: ~ y: 200,~
** Processing line: ~ text: "dragonruby", # text~
** Processing line: ~ size: 2,~
** Processing line: ~ alignment: 1,~
** Processing line: ~ r: 155, # color saturation~
** Processing line: ~ g: 50,~
** Processing line: ~ b: 50,~
** Processing line: ~ a: 255, # transparency~
** Processing line: ~ font: "fonts/manaspc.ttf" # font style~
** Processing line: ~ }.label~
** Processing line: ~~
** Processing line: ~ # Outputs solid as primitive using a hash~
** Processing line: ~ args.outputs.primitives << {~
** Processing line: ~ x: 400, # position~
** Processing line: ~ y: 200,~
** Processing line: ~ w: 160, # size~
** Processing line: ~ h: 90,~
** Processing line: ~ r: 120, # color saturation~
** Processing line: ~ g: 50,~
** Processing line: ~ b: 50,~
** Processing line: ~ a: 255 # transparency~
** Processing line: ~ }.solid~
** Processing line: ~~
** Processing line: ~ # Outputs border as primitive using a hash~
** Processing line: ~ # Same parameters as solid~
** Processing line: ~ args.outputs.primitives << {~
** Processing line: ~ x: 600, # position~
** Processing line: ~ y: 200,~
** Processing line: ~ w: 160, # size~
** Processing line: ~ h: 90,~
** Processing line: ~ r: 120, # color saturation~
** Processing line: ~ g: 50,~
** Processing line: ~ b: 50,~
** Processing line: ~ a: 255 # transparency~
** Processing line: ~ }.border~
** Processing line: ~~
** Processing line: ~ # Outputs line as primitive using a hash~
** Processing line: ~ args.outputs.primitives << {~
** Processing line: ~ x: 900, # starting position~
** Processing line: ~ y: 200,~
** Processing line: ~ x2: 1200, # ending position~
** Processing line: ~ y2: 200,~
** Processing line: ~ r: 120, # color saturation~
** Processing line: ~ g: 50,~
** Processing line: ~ b: 50,~
** Processing line: ~ a: 255 # transparency~
** Processing line: ~ }.line~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Tweening Lerping Easing Functions - Easing Functions - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Tweening Lerping Easing Functions - Easing Functions - 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/08_tweening_lerping_easing_functions/01_easing_functions/app/main.rb~
** Processing line: ~ def tick args~
** Processing line: ~ # STOP! Watch the following presentation first!!!!~
** Processing line: ~ # Math for Game Programmers: Fast and Funky 1D Nonlinear Transformations~
** Processing line: ~ # https://www.youtube.com/watch?v=mr5xkf6zSzk~
** Processing line: ~~
** Processing line: ~ # You've watched the talk, yes? YES???~
** Processing line: ~~
** Processing line: ~ # define starting and ending points of properties to animate~
** Processing line: ~ args.state.target_x = 1180~
** Processing line: ~ args.state.target_y = 620~
** Processing line: ~ args.state.target_w = 100~
** Processing line: ~ args.state.target_h = 100~
** Processing line: ~ args.state.starting_x = 0~
** Processing line: ~ args.state.starting_y = 0~
** Processing line: ~ args.state.starting_w = 300~
** Processing line: ~ args.state.starting_h = 300~
** Processing line: ~~
** Processing line: ~ # define start time and duration of animation~
** Processing line: ~ args.state.start_animate_at = 3.seconds # this is the same as writing 60 * 5 (or 300)~
** Processing line: ~ args.state.duration = 2.seconds # this is the same as writing 60 * 2 (or 120)~
** Processing line: ~~
** Processing line: ~ # define type of animations~
** Processing line: ~ # Here are all the options you have for values you can put in the array:~
** Processing line: ~ # :identity, :quad, :cube, :quart, :quint, :flip~
** Processing line: ~~
** Processing line: ~ # Linear is defined as:~
** Processing line: ~ # [:identity]~
** Processing line: ~ #~
** Processing line: ~ # Smooth start variations are:~
** Processing line: ~ # [:quad]~
** Processing line: ~ # [:cube]~
** Processing line: ~ # [:quart]~
** Processing line: ~ # [:quint]~
** Processing line: ~~
** Processing line: ~ # Linear reversed, and smooth stop are the same as the animations defined above, but reversed:~
** Processing line: ~ # [:flip, :identity]~
** Processing line: ~ # [:flip, :quad, :flip]~
** Processing line: ~ # [:flip, :cube, :flip]~
** Processing line: ~ # [:flip, :quart, :flip]~
** Processing line: ~ # [:flip, :quint, :flip]~
** Processing line: ~~
** Processing line: ~ # You can also do custom definitions. See the bottom of the file details~
** Processing line: ~ # on how to do that. I've defined a couple for you:~
** Processing line: ~ # [:smoothest_start]~
** Processing line: ~ # [:smoothest_stop]~
** Processing line: ~~
** Processing line: ~ # CHANGE THIS LINE TO ONE OF THE LINES ABOVE TO SEE VARIATIONS~
** Processing line: ~ args.state.animation_type = [:identity]~
** Processing line: ~ # args.state.animation_type = [:quad]~
** Processing line: ~ # args.state.animation_type = [:cube]~
** Processing line: ~ # args.state.animation_type = [:quart]~
** Processing line: ~ # args.state.animation_type = [:quint]~
** Processing line: ~ # args.state.animation_type = [:flip, :identity]~
** Processing line: ~ # args.state.animation_type = [:flip, :quad, :flip]~
** Processing line: ~ # args.state.animation_type = [:flip, :cube, :flip]~
** Processing line: ~ # args.state.animation_type = [:flip, :quart, :flip]~
** Processing line: ~ # args.state.animation_type = [:flip, :quint, :flip]~
** Processing line: ~ # args.state.animation_type = [:smoothest_start]~
** Processing line: ~ # args.state.animation_type = [:smoothest_stop]~
** Processing line: ~~
** Processing line: ~ # THIS IS WHERE THE MAGIC HAPPENS!~
** Processing line: ~ # Numeric#ease~
** Processing line: ~ progress = args.state.start_animate_at.ease(args.state.duration, args.state.animation_type)~
** Processing line: ~~
** Processing line: ~ # Numeric#ease needs to called:~
** Processing line: ~ # 1. On the number that represents the point in time you want to start, and takes two parameters:~
** Processing line: ~ # a. The first parameter is how long the animation should take.~
** Processing line: ~ # b. The second parameter represents the functions that need to be called.~
** Processing line: ~ #~
** Processing line: ~ # For example, if I wanted an animate to start 3 seconds in, and last for 10 seconds,~
** Processing line: ~ # and I want to animation to start fast and end slow, I would do:~
** Processing line: ~ # (60 * 3).ease(60 * 10, :flip, :quint, :flip)~
** Processing line: ~~
** Processing line: ~ # initial value delta to the final value~
** Processing line: ~ calc_x = args.state.starting_x + (args.state.target_x - args.state.starting_x) * progress~
** Processing line: ~ calc_y = args.state.starting_y + (args.state.target_y - args.state.starting_y) * progress~
** Processing line: ~ calc_w = args.state.starting_w + (args.state.target_w - args.state.starting_w) * progress~
** Processing line: ~ calc_h = args.state.starting_h + (args.state.target_h - args.state.starting_h) * progress~
** Processing line: ~~
** Processing line: ~ args.outputs.solids << [calc_x, calc_y, calc_w, calc_h, 0, 0, 0]~
** Processing line: ~~
** Processing line: ~ # count down~
** Processing line: ~ count_down = args.state.start_animate_at - args.state.tick_count~
** Processing line: ~ if count_down > 0~
** Processing line: ~ args.outputs.labels << [640, 375, "Running: #{args.state.animation_type} in...", 3, 1]~
** Processing line: ~ args.outputs.labels << [640, 345, "%.2f" % count_down.fdiv(60), 3, 1]~
** Processing line: ~ elsif progress >= 1~
** Processing line: ~ args.outputs.labels << [640, 360, "Click screen to reset.", 3, 1]~
** Processing line: ~ if args.inputs.click~
** Processing line: ~ $gtk.reset~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # $gtk.reset~
** Processing line: ~~
** Processing line: ~ # you can make own variations of animations using this~
** Processing line: ~ module Easing~
** Processing line: ~ # you have access to all the built in functions: identity, flip, quad, cube, quart, quint~
** Processing line: ~ def self.smoothest_start x~
** Processing line: ~ quad(quint(x))~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.smoothest_stop x~
** Processing line: ~ flip(quad(quint(flip(x))))~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # this is the source for the existing easing functions~
** Processing line: ~ def self.identity x~
** Processing line: ~ x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.flip x~
** Processing line: ~ 1 - x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.quad x~
** Processing line: ~ x * x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.cube x~
** Processing line: ~ x * x * x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.quart x~
** Processing line: ~ x * x * x * x * x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.quint x~
** Processing line: ~ x * x * x * x * x * x~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Tweening Lerping Easing Functions - Cubic Bezier - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Tweening Lerping Easing Functions - Cubic Bezier - 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/08_tweening_lerping_easing_functions/02_cubic_bezier/app/main.rb~
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.background_color = [33, 33, 33]~
** Processing line: ~ args.outputs.lines << bezier(100, 100,~
** Processing line: ~ 100, 620,~
** Processing line: ~ 1180, 620,~
** Processing line: ~ 1180, 100,~
** Processing line: ~ 0)~
** Processing line: ~~
** Processing line: ~ args.outputs.lines << bezier(100, 100,~
** Processing line: ~ 100, 620,~
** Processing line: ~ 1180, 620,~
** Processing line: ~ 1180, 100,~
** Processing line: ~ 20)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ def bezier x1, y1, x2, y2, x3, y3, x4, y4, step~
** Processing line: ~ step ||= 0~
** Processing line: ~ color = [200, 200, 200]~
** Processing line: ~ points = points_for_bezier [x1, y1], [x2, y2], [x3, y3], [x4, y4], step~
** Processing line: ~~
** Processing line: ~ points.each_cons(2).map do |p1, p2|~
** Processing line: ~ [p1, p2, color]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def points_for_bezier p1, p2, p3, p4, step~
** Processing line: ~ points = []~
** Processing line: ~ if step == 0~
** Processing line: ~ [p1, p2, p3, p4]~
** Processing line: ~ else~
** Processing line: ~ t_step = 1.fdiv(step + 1)~
** Processing line: ~ t = 0~
** Processing line: ~ t += t_step~
** Processing line: ~ points = []~
** Processing line: ~ while t < 1~
** Processing line: ~ points << [~
** Processing line: ~ b_for_t(p1.x, p2.x, p3.x, p4.x, t),~
** Processing line: ~ b_for_t(p1.y, p2.y, p3.y, p4.y, t),~
** Processing line: ~ ]~
** Processing line: ~ t += t_step~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ [~
** Processing line: ~ p1,~
** Processing line: ~ *points,~
** Processing line: ~ p4~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def b_for_t v0, v1, v2, v3, t~
** Processing line: ~ pow(1 - t, 3) * v0 +~
** Processing line: ~ 3 * pow(1 - t, 2) * t * v1 +~
** Processing line: ~ 3 * (1 - t) * pow(t, 2) * v2 +~
** Processing line: ~ pow(t, 3) * v3~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def pow n, to~
** Processing line: ~ n ** to~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Tweening Lerping Easing Functions - Easing Using Spline - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Tweening Lerping Easing Functions - Easing Using Spline - 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/08_tweening_lerping_easing_functions/03_easing_using_spline/app/main.rb~
** Processing line: ~ def tick args~
** Processing line: ~ args.state.duration = 10.seconds~
** Processing line: ~ args.state.spline = [~
** Processing line: ~ [0.0, 0.33, 0.66, 1.0],~
** Processing line: ~ [1.0, 1.0, 1.0, 1.0],~
** Processing line: ~ [1.0, 0.66, 0.33, 0.0],~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ args.state.simulation_tick = args.state.tick_count % args.state.duration~
** Processing line: ~ progress = 0.ease_spline_extended args.state.simulation_tick, args.state.duration, args.state.spline~
** Processing line: ~ args.outputs.borders << args.grid.rect~
** Processing line: ~ args.outputs.solids << [20 + 1240 * progress,~
** Processing line: ~ 20 + 680 * progress,~
** Processing line: ~ 20, 20].anchor_rect(0.5, 0.5)~
** Processing line: ~ args.outputs.labels << [10,~
** Processing line: ~ 710,~
** Processing line: ~ "perc: #{"%.2f" % (args.state.simulation_tick / args.state.duration)} t: #{args.state.simulation_tick}"]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Tweening Lerping Easing Functions - Parametric Enemy Movement - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Tweening Lerping Easing Functions - Parametric Enemy Movement - 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/08_tweening_lerping_easing_functions/04_parametric_enemy_movement/app/main.rb~
** Processing line: ~ def new_star args~
** Processing line: ~ { x: 1280.randomize(:ratio),~
** Processing line: ~ starting_y: 800,~
** Processing line: ~ distance_to_travel: 900 + 100.randomize(:ratio),~
** Processing line: ~ duration: 100.randomize(:ratio) + 60,~
** Processing line: ~ created_at: args.state.tick_count,~
** Processing line: ~ max_alpha: 128.randomize(:ratio) + 128,~
** Processing line: ~ b: 255.randomize(:ratio),~
** Processing line: ~ g: 200.randomize(:ratio),~
** Processing line: ~ w: 1.randomize(:ratio) + 1,~
** Processing line: ~ h: 1.randomize(:ratio) + 1 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def new_enemy args~
** Processing line: ~ { x: 1280.randomize(:ratio),~
** Processing line: ~ starting_y: 800,~
** Processing line: ~ distance_to_travel: -900,~
** Processing line: ~ duration: 60.randomize(:ratio) + 180,~
** Processing line: ~ created_at: args.state.tick_count,~
** Processing line: ~ w: 32,~
** Processing line: ~ h: 32,~
** Processing line: ~ fire_rate: (30.randomize(:ratio) + (60 - args.state.score)).to_i }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def new_bullet args, starting_x, starting_y, enemy_speed~
** Processing line: ~ { x: starting_x,~
** Processing line: ~ starting_y: starting_y,~
** Processing line: ~ distance_to_travel: -900,~
** Processing line: ~ created_at: args.state.tick_count,~
** Processing line: ~ duration: 900 / (enemy_speed.abs + 2.0 + (5.0 * args.state.score.fdiv(100))).abs,~
** Processing line: ~ w: 5,~
** Processing line: ~ h: 5 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def new_player_bullet args, starting_x, starting_y, player_speed~
** Processing line: ~ { x: starting_x,~
** Processing line: ~ starting_y: starting_y,~
** Processing line: ~ distance_to_travel: 900,~
** Processing line: ~ created_at: args.state.tick_count,~
** Processing line: ~ duration: 900 / (player_speed + 2.0),~
** Processing line: ~ w: 5,~
** Processing line: ~ h: 5 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults args~
** Processing line: ~ args.outputs.background_color = [0, 0, 0]~
** Processing line: ~ args.state.score ||= 0~
** Processing line: ~ args.state.stars ||= []~
** Processing line: ~ args.state.enemies ||= []~
** Processing line: ~ args.state.bullets ||= []~
** Processing line: ~ args.state.player_bullets ||= []~
** Processing line: ~ args.state.max_stars = 50~
** Processing line: ~ args.state.max_enemies = 10~
** Processing line: ~ args.state.player.x ||= 640~
** Processing line: ~ args.state.player.y ||= 100~
** Processing line: ~ args.state.player.w ||= 32~
** Processing line: ~ args.state.player.h ||= 32~
** Processing line: ~~
** Processing line: ~ if args.state.tick_count == 0~
** Processing line: ~ args.state.stars.clear~
** Processing line: ~ args.state.max_stars.times do~
** Processing line: ~ s = new_star args~
** Processing line: ~ s[:created_at] += s[:duration].randomize(:ratio)~
** Processing line: ~ args.state.stars << s~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.tick_count == 0~
** Processing line: ~ args.state.enemies.clear~
** Processing line: ~ args.state.max_enemies.times do~
** Processing line: ~ s = new_enemy args~
** Processing line: ~ s[:created_at] += s[:duration].randomize(:ratio)~
** Processing line: ~ args.state.enemies << s~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input args~
** Processing line: ~ if args.inputs.keyboard.left~
** Processing line: ~ args.state.player.x -= 5~
** Processing line: ~ elsif args.inputs.keyboard.right~
** Processing line: ~ args.state.player.x += 5~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.inputs.keyboard.up~
** Processing line: ~ args.state.player.y += 5~
** Processing line: ~ elsif args.inputs.keyboard.down~
** Processing line: ~ args.state.player.y -= 5~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.inputs.keyboard.key_down.space~
** Processing line: ~ args.state.player_bullets << new_player_bullet(args,~
** Processing line: ~ args.state.player.x + args.state.player.w.half,~
** Processing line: ~ args.state.player.y + args.state.player.h, 5)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.player.y = args.state.player.y.greater(0).lesser(720 - args.state.player.w)~
** Processing line: ~ args.state.player.x = args.state.player.x.greater(0).lesser(1280 - args.state.player.h)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def completed? entity~
** Processing line: ~ (entity[:created_at] + entity[:duration]).elapsed_time > 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_stars args~
** Processing line: ~ if (stars_to_add = args.state.max_stars - args.state.stars.length) > 0~
** Processing line: ~ stars_to_add.times { args.state.stars << new_star(args) }~
** Processing line: ~ end~
** Processing line: ~ args.state.stars = args.state.stars.reject { |s| completed? s }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def move_enemies args~
** Processing line: ~ if (enemies_to_add = args.state.max_enemies - args.state.enemies.length) > 0~
** Processing line: ~ enemies_to_add.times { args.state.enemies << new_enemy(args) }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.enemies = args.state.enemies.reject { |s| completed? s }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def move_bullets args~
** Processing line: ~ args.state.enemies.each do |e|~
** Processing line: ~ if args.state.tick_count.mod_zero?(e[:fire_rate])~
** Processing line: ~ args.state.bullets << new_bullet(args, e[:x] + e[:w].half, current_y(e), e[:distance_to_travel] / e[:duration])~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.bullets = args.state.bullets.reject { |s| completed? s }~
** Processing line: ~ args.state.player_bullets = args.state.player_bullets.reject { |s| completed? s }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def intersect? entity_one, entity_two~
** Processing line: ~ entity_one.merge(y: current_y(entity_one))~
** Processing line: ~ .intersect_rect? entity_two.merge(y: current_y(entity_two))~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def kill args~
** Processing line: ~ bullets_hitting_enemies = []~
** Processing line: ~ dead_bullets = []~
** Processing line: ~ dead_enemies = []~
** Processing line: ~~
** Processing line: ~ args.state.player_bullets.each do |b|~
** Processing line: ~ args.state.enemies.each do |e|~
** Processing line: ~ if intersect? b, e~
** Processing line: ~ dead_bullets << b~
** Processing line: ~ dead_enemies << e~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.score += dead_enemies.length~
** Processing line: ~~
** Processing line: ~ args.state.player_bullets.reject! { |b| dead_bullets.include? b }~
** Processing line: ~ args.state.enemies.reject! { |e| dead_enemies.include? e }~
** Processing line: ~~
** Processing line: ~ dead = args.state.bullets.any? do |b|~
** Processing line: ~ [args.state.player.x,~
** Processing line: ~ args.state.player.y,~
** Processing line: ~ args.state.player.w,~
** Processing line: ~ args.state.player.h].intersect_rect? b.merge(y: current_y(b))~
** Processing line: ~ end~
** Processing line: ~ return unless dead~
** Processing line: ~ args.gtk.reset~
** Processing line: ~ defaults args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc args~
** Processing line: ~ calc_stars args~
** Processing line: ~ move_enemies args~
** Processing line: ~ move_bullets args~
** Processing line: ~ kill args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def current_y entity~
** Processing line: ~ entity[:starting_y] + (entity[:distance_to_travel] * entity[:created_at].ease(entity[:duration], :identity))~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render args~
** Processing line: ~ args.outputs.solids << args.state.stars.map do |s|~
** Processing line: ~ [s[:x],~
** Processing line: ~ current_y(s),~
** Processing line: ~ s[:w], s[:h], 0, s[:g], s[:b], s[:max_alpha] * s[:created_at].ease(20, :identity)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.borders << args.state.enemies.map do |s|~
** Processing line: ~ [s[:x],~
** Processing line: ~ current_y(s),~
** Processing line: ~ s[:w], s[:h], 255, 0, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.borders << args.state.bullets.map do |b|~
** Processing line: ~ [b[:x],~
** Processing line: ~ current_y(b),~
** Processing line: ~ b[:w], b[:h], 255, 0, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.borders << args.state.player_bullets.map do |b|~
** Processing line: ~ [b[:x],~
** Processing line: ~ current_y(b),~
** Processing line: ~ b[:w], b[:h], 255, 255, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.borders << [args.state.player.x,~
** Processing line: ~ args.state.player.y,~
** Processing line: ~ args.state.player.w,~
** Processing line: ~ args.state.player.h, 255, 255, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ defaults args~
** Processing line: ~ input args~
** Processing line: ~ calc args~
** Processing line: ~ render args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Performance - Sprites As Hash - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Performance - Sprites As Hash - 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/01_sprites_as_hash/app/main.rb~
** Processing line: ~ # Sprites represented as Hashes using the queue ~args.outputs.sprites~~
** Processing line: ~ # code up, but are the "slowest" to render.~
** Processing line: ~ # The reason for this is the access of the key in the Hash and also~
** Processing line: ~ # because the data args.outputs.sprites is cleared every tick.~
** 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: ~ {~
** Processing line: ~ x: (random_x args),~
** Processing line: ~ y: (random_y args),~
** Processing line: ~ w: 4, h: 4, path: 'sprites/tiny-star.png',~
** Processing line: ~ s: random_speed~
** Processing line: ~ }~
** 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 "* 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 Entities - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Performance - Sprites As Entities - 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/02_sprites_as_entities/app/main.rb~
** Processing line: ~ # Sprites represented as Entities using the queue ~args.outputs.sprites~~
** Processing line: ~ # yields nicer access apis over Hashes, but require a bit more code upfront.~
** Processing line: ~ # The hash sample has to use star[:s] to get the speed of the star, but~
** Processing line: ~ # an entity can use .s instead.~
** 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: ~ args.state.new_entity :star, {~
** Processing line: ~ 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: ~ }~
** 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 "* 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~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Performance - Sprites As Strict Entities - 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_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~
** Processing line: ~ # addition of new properties after the fact. They are more performant than OpenEntities~
** Processing line: ~ # because of this constraint.~
** 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: ~ args.state.new_entity_strict(:star,~
** Processing line: ~ 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) do |entity|~
** Processing line: ~ # invoke attr_sprite so that it responds to~
** Processing line: ~ # all properties that are required to render a sprite~
** Processing line: ~ entity.attr_sprite~
** Processing line: ~ end~
** 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 "* 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 Classes - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Performance - Sprites As Classes - 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/04_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.~
** Processing line: ~ class Star~
** Processing line: ~ attr_sprite~
** Processing line: ~~
** Processing line: ~ def initialize grid~
** Processing line: ~ @grid = grid~
** Processing line: ~ @x = (rand @grid.w) * -1~
** Processing line: ~ @y = (rand @grid.h) * -1~
** Processing line: ~ @w = 4~
** Processing line: ~ @h = 4~
** Processing line: ~ @s = 1 + (4.randomize :ratio)~
** Processing line: ~ @path = 'sprites/tiny-star.png'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def move~
** Processing line: ~ @x += @s~
** Processing line: ~ @y += @s~
** Processing line: ~ @x = (rand @grid.w) * -1 if @x > @grid.right~
** Processing line: ~ @y = (rand @grid.h) * -1 if @y > @grid.top~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # calls methods needed for game to run properly~
** Processing line: ~ def tick args~
** Processing line: ~ # sets console command when sample app initially opens~
** Processing line: ~ if Kernel.global_tick_count == 0~
** 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| Star.new args.grid }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # update~
** Processing line: ~ args.state.stars.each(&:move)~
** 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 - Static Sprites As Classes - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Performance - Static Sprites As Classes - 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/05_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~
** Processing line: ~ # which is less functional/data oriented.~
** Processing line: ~ class Star~
** Processing line: ~ attr_sprite~
** Processing line: ~~
** Processing line: ~ def initialize grid~
** Processing line: ~ @grid = grid~
** Processing line: ~ @x = (rand @grid.w) * -1~
** Processing line: ~ @y = (rand @grid.h) * -1~
** Processing line: ~ @w = 4~
** Processing line: ~ @h = 4~
** Processing line: ~ @s = 1 + (4.randomize :ratio)~
** Processing line: ~ @path = 'sprites/tiny-star.png'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def move~
** Processing line: ~ @x += @s~
** Processing line: ~ @y += @s~
** Processing line: ~ @x = (rand @grid.w) * -1 if @x > @grid.right~
** Processing line: ~ @y = (rand @grid.h) * -1 if @y > @grid.top~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # calls methods needed for game to run properly~
** Processing line: ~ def tick args~
** Processing line: ~ # sets console command when sample app initially opens~
** Processing line: ~ if Kernel.global_tick_count == 0~
** 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| Star.new args.grid }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # update~
** Processing line: ~ args.state.stars.each(&:move)~
** 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 - Static Sprites As Classes With Custom Drawing - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Performance - Static Sprites As Classes With Custom Drawing - 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/06_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~
** Processing line: ~ # functional/data-oriented practices.~
** Processing line: ~ class Star~
** Processing line: ~ def initialize grid~
** Processing line: ~ @grid = grid~
** Processing line: ~ @x = (rand @grid.w) * -1~
** Processing line: ~ @y = (rand @grid.h) * -1~
** Processing line: ~ @w = 4~
** Processing line: ~ @h = 4~
** Processing line: ~ @s = 1 + (4.randomize :ratio)~
** Processing line: ~ @path = 'sprites/tiny-star.png'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def move~
** Processing line: ~ @x += @s~
** Processing line: ~ @y += @s~
** Processing line: ~ @x = (rand @grid.w) * -1 if @x > @grid.right~
** Processing line: ~ @y = (rand @grid.h) * -1 if @y > @grid.top~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if the object that is in args.outputs.sprites (or static_sprites)~
** Processing line: ~ # respond_to? :draw_override, then the method is invoked giving you~
** Processing line: ~ # access to the class used to draw to the canvas.~
** Processing line: ~ def draw_override ffi_draw~
** Processing line: ~ # first move then draw~
** Processing line: ~ move~
** Processing line: ~~
** Processing line: ~ # The argument order for ffi.draw_sprite is:~
** Processing line: ~ # x, y, w, h, path~
** Processing line: ~ ffi_draw.draw_sprite @x, @y, @w, @h, @path~
** Processing line: ~~
** Processing line: ~ # The argument order for ffi_draw.draw_sprite_2 is (pass in nil for default value):~
** Processing line: ~ # x, y, w, h, path,~
** Processing line: ~ # angle, alpha~
** Processing line: ~~
** Processing line: ~ # The argument order for ffi_draw.draw_sprite_3 is:~
** Processing line: ~ # x, y, w, h,~
** Processing line: ~ # path,~
** Processing line: ~ # angle,~
** Processing line: ~ # alpha, red_saturation, green_saturation, blue_saturation~
** Processing line: ~ # flip_horizontally, flip_vertically,~
** Processing line: ~ # tile_x, tile_y, tile_w, tile_h~
** Processing line: ~ # angle_anchor_x, angle_anchor_y,~
** Processing line: ~ # source_x, source_y, source_w, source_h~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # calls methods needed for game to run properly~
** Processing line: ~ def tick args~
** Processing line: ~ # sets console command when sample app initially opens~
** Processing line: ~ if Kernel.global_tick_count == 0~
** 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| Star.new args.grid }~
** Processing line: ~ args.outputs.static_sprites << args.state.stars~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # render framerate~
** 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 - Collision Limits - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Performance - Collision Limits - 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/07_collision_limits/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~ - find_all: Finds all elements of a collection that meet certain requirements.~
** Processing line: ~ In this sample app, we're finding all bodies that intersect with the center body.~
** Processing line: ~~
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if two rectangles intersect.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This code demonstrates moving objects that loop around once they exceed the scope of the screen,~
** Processing line: ~ # which has dimensions of 1280 by 720, and also detects collisions between objects called "bodies".~
** Processing line: ~~
** Processing line: ~ def body_count num~
** Processing line: ~ $gtk.args.state.other_bodies = num.map { [1280 * rand, 720 * rand, 10, 10] } # other_bodies set using num collection~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~~
** Processing line: ~ # Center body's values are set using an array~
** Processing line: ~ # Map is used to set values of 2000 other bodies~
** Processing line: ~ # All bodies that intersect with center body are stored in collisions collection~
** Processing line: ~ args.state.center_body ||= [640 - 100, 360 - 100, 200, 200] # calculations done to place body in center~
** Processing line: ~ args.state.other_bodies ||= 2000.map { [1280 * rand, 720 * rand, 10, 10] } # 2000 bodies given random position on screen~
** Processing line: ~~
** Processing line: ~ # finds all bodies that intersect with center body, stores them in collisions~
** Processing line: ~ collisions = args.state.other_bodies.find_all { |b| b.intersect_rect? args.state.center_body }~
** Processing line: ~~
** Processing line: ~ args.borders << args.state.center_body # outputs center body as a black border~
** Processing line: ~~
** Processing line: ~ # transparency changes based on number of collisions; the more collisions, the redder (more transparent) the box becomes~
** Processing line: ~ args.solids << [args.state.center_body, 255, 0, 0, collisions.length * 5] # center body is red solid~
** Processing line: ~ args.solids << args.state.other_bodies # other bodies are output as (black) solids, as well~
** Processing line: ~~
** Processing line: ~ args.labels << [10, 30, args.gtk.current_framerate] # outputs frame rate in bottom left corner~
** Processing line: ~~
** Processing line: ~ # Bodies are returned to bottom left corner if positions exceed scope of screen~
** Processing line: ~ args.state.other_bodies.each do |b| # for each body in the other_bodies collection~
** Processing line: ~ b.x += 5 # x and y are both incremented by 5~
** Processing line: ~ b.y += 5~
** Processing line: ~ b.x = 0 if b.x > 1280 # x becomes 0 if star exceeds scope of screen (goes too far right)~
** Processing line: ~ b.y = 0 if b.y > 720 # y becomes 0 if star exceeds scope of screen (goes too far up)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Resets the game.~
** Processing line: ~ $gtk.reset~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Debugging - Trace Debugging - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Debugging - Trace Debugging - 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/01_trace_debugging/app/main.rb~
** Processing line: ~ class Game~
** Processing line: ~ attr_gtk~
** Processing line: ~~
** Processing line: ~ def method1 num~
** Processing line: ~ method2 num~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def method2 num~
** Processing line: ~ method3 num~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def method3 num~
** Processing line: ~ method4 num~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def method4 num~
** Processing line: ~ if num == 1~
** Processing line: ~ puts "UNLUCKY #{num}."~
** Processing line: ~ state.unlucky_count += 1~
** Processing line: ~ if state.unlucky_count > 3~
** Processing line: ~ raise "NAT 1 finally occurred. Check app/trace.txt for all method invocation history."~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ puts "LUCKY #{num}."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ state.roll_history ||= []~
** Processing line: ~ state.roll_history << rand(20) + 1~
** Processing line: ~ state.countdown ||= 600~
** Processing line: ~ state.countdown -= 1~
** Processing line: ~ state.unlucky_count ||= 0~
** Processing line: ~ outputs.labels << [640, 360, "A dice roll of 1 will cause an exception.", 0, 1]~
** Processing line: ~ if state.countdown > 0~
** Processing line: ~ outputs.labels << [640, 340, "Dice roll countdown: #{state.countdown}", 0, 1]~
** Processing line: ~ else~
** Processing line: ~ state.attempts ||= 0~
** Processing line: ~ state.attempts += 1~
** Processing line: ~ outputs.labels << [640, 340, "ROLLING! #{state.attempts}", 0, 1]~
** Processing line: ~ end~
** Processing line: ~ return if state.countdown > 0~
** Processing line: ~ method1 state.roll_history[-1]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $game = Game.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ trace! $game # <------------------- TRACING ENABLED FOR THIS OBJECT~
** Processing line: ~ $game.args = args~
** Processing line: ~ $game.tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Debugging - Trace Debugging Classes - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Debugging - Trace Debugging Classes - 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/02_trace_debugging_classes/app/main.rb~
** Processing line: ~ class Foobar~
** Processing line: ~ def initialize~
** Processing line: ~ trace! # Trace is added to the constructor.~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def clicky args~
** Processing line: ~ return unless args.inputs.mouse.click~
** Processing line: ~ try_rand rand~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def try_rand num~
** Processing line: ~ return if num < 0.9~
** Processing line: ~ raise "Exception finally occurred. Take a look at logs/trace.txt #{num}."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ args.labels << [640, 360, "Start clicking. Eventually an exception will be thrown. Then look at logs/trace.txt.", 0, 1]~
** Processing line: ~ args.state.foobar = Foobar.new if args.tick_count~
** Processing line: ~ return unless args.state.foobar~
** Processing line: ~ args.state.foobar.clicky args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Debugging - Unit Tests - exception_raising_tests.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Debugging - Unit Tests - exception_raising_tests.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/03_unit_tests/exception_raising_tests.rb~
** Processing line: ~ begin :shared~
** Processing line: ~ class ExceptionalClass~
** Processing line: ~ def initialize exception_to_throw = nil~
** Processing line: ~ raise exception_to_throw if exception_to_throw~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_exception_in_newing_object args, assert~
** Processing line: ~ begin~
** Processing line: ~ ExceptionalClass.new TypeError~
** Processing line: ~ raise "Exception wasn't thrown!"~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ assert.equal! e.class, TypeError, "Exceptions within constructor should be retained."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ puts "running tests"~
** Processing line: ~ $gtk.reset 100~
** Processing line: ~ $gtk.log_level = :off~
** Processing line: ~ $gtk.tests.start~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Debugging - Unit Tests - gen_docs.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Debugging - Unit Tests - gen_docs.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/03_unit_tests/gen_docs.rb~
** Processing line: ~ # sh ./amir-build-and-run.sh --eval samples/99_zz_gtk_unit_tests/gen_docs.rb --no-tick~
** Processing line: ~ Kernel.export_docs!~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Debugging - Unit Tests - geometry_tests.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Debugging - Unit Tests - geometry_tests.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/03_unit_tests/geometry_tests.rb~
** Processing line: ~ begin :shared~
** Processing line: ~ def primitive_representations x, y, w, h~
** Processing line: ~ [~
** Processing line: ~ [x, y, w, h],~
** Processing line: ~ { x: x, y: y, w: w, h: h },~
** Processing line: ~ RectForTest.new(x, y, w, h)~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ class RectForTest~
** Processing line: ~ attr_sprite~
** Processing line: ~~
** Processing line: ~ def initialize x, y, w, h~
** Processing line: ~ @x = x~
** Processing line: ~ @y = y~
** Processing line: ~ @w = w~
** Processing line: ~ @h = h~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_s~
** Processing line: ~ "RectForTest: #{[x, y, w, h]}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ begin :intersect_rect?~
** Processing line: ~ def test_intersect_rect_point args, assert~
** Processing line: ~ assert.true! [16, 13].intersect_rect?([13, 12, 4, 4]), "point intersects with rect."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_intersect_rect args, assert~
** Processing line: ~ intersecting = primitive_representations(0, 0, 100, 100) +~
** Processing line: ~ primitive_representations(20, 20, 20, 20)~
** Processing line: ~~
** Processing line: ~ intersecting.product(intersecting).each do |rect_one, rect_two|~
** Processing line: ~ assert.true! rect_one.intersect_rect?(rect_two),~
** Processing line: ~ "intersect_rect? assertion failed for #{rect_one}, #{rect_two} (expected true)."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ not_intersecting = [~
** Processing line: ~ [ 0, 0, 5, 5],~
** Processing line: ~ { x: 10, y: 10, w: 5, h: 5 },~
** Processing line: ~ RectForTest.new(20, 20, 5, 5)~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ not_intersecting.product(not_intersecting)~
** Processing line: ~ .reject { |rect_one, rect_two| rect_one == rect_two }~
** Processing line: ~ .each do |rect_one, rect_two|~
** Processing line: ~ assert.false! rect_one.intersect_rect?(rect_two),~
** Processing line: ~ "intersect_rect? assertion failed for #{rect_one}, #{rect_two} (expected false)."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ begin :inside_rect?~
** Processing line: ~ def assert_inside_rect outer: nil, inner: nil, expected: nil, assert: nil~
** Processing line: ~ assert.true! inner.inside_rect?(outer) == expected,~
** Processing line: ~ "inside_rect? assertion failed for outer: #{outer} inner: #{inner} (expected #{expected})."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_inside_rect args, assert~
** Processing line: ~ outer_rects = primitive_representations(0, 0, 10, 10)~
** Processing line: ~ inner_rects = primitive_representations(1, 1, 5, 5)~
** Processing line: ~ primitive_representations(0, 0, 10, 10).product(primitive_representations(1, 1, 5, 5))~
** Processing line: ~ .each do |outer, inner|~
** Processing line: ~ assert_inside_rect outer: outer, inner: inner,~
** Processing line: ~ expected: true, assert: assert~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ begin :angle_to~
** Processing line: ~ def test_angle_to args, assert~
** Processing line: ~ origins = primitive_representations(0, 0, 0, 0)~
** Processing line: ~ rights = primitive_representations(1, 0, 0, 0)~
** Processing line: ~ aboves = primitive_representations(0, 1, 0, 0)~
** Processing line: ~~
** Processing line: ~ origins.product(aboves).each do |origin, above|~
** Processing line: ~ assert.equal! origin.angle_to(above), 90,~
** Processing line: ~ "A point directly above should be 90 degrees."~
** Processing line: ~~
** Processing line: ~ assert.equal! above.angle_from(origin), 90,~
** Processing line: ~ "A point coming from above should be 90 degrees."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ origins.product(rights).each do |origin, right|~
** Processing line: ~ assert.equal! origin.angle_to(right) % 360, 0,~
** Processing line: ~ "A point directly to the right should be 0 degrees."~
** Processing line: ~~
** Processing line: ~ assert.equal! right.angle_from(origin) % 360, 0,~
** Processing line: ~ "A point coming from the right should be 0 degrees."~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ begin :scale_rect~
** Processing line: ~ def test_scale_rect args, assert~
** Processing line: ~ assert.equal! [0, 0, 100, 100].scale_rect(0.5, 0.5),~
** Processing line: ~ [25.0, 25.0, 50.0, 50.0]~
** Processing line: ~~
** Processing line: ~ assert.equal! [0, 0, 100, 100].scale_rect(0.5),~
** Processing line: ~ [0.0, 0.0, 50.0, 50.0]~
** Processing line: ~~
** Processing line: ~ assert.equal! [0, 0, 100, 100].scale_rect_extended(percentage_x: 0.5, percentage_y: 0.5, anchor_x: 0.5, anchor_y: 0.5),~
** Processing line: ~ [25.0, 25.0, 50.0, 50.0]~
** Processing line: ~~
** Processing line: ~ assert.equal! [0, 0, 100, 100].scale_rect_extended(percentage_x: 0.5, percentage_y: 0.5, anchor_x: 0, anchor_y: 0),~
** Processing line: ~ [0.0, 0.0, 50.0, 50.0]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ puts "running tests"~
** Processing line: ~ $gtk.reset 100~
** Processing line: ~ $gtk.log_level = :off~
** Processing line: ~ $gtk.tests.start~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Debugging - Unit Tests - http_tests.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Debugging - Unit Tests - http_tests.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/03_unit_tests/http_tests.rb~
** Processing line: ~ def try_assert_or_schedule args, assert~
** Processing line: ~ if $result[:complete]~
** Processing line: ~ log_info "Request completed! Verifying."~
** Processing line: ~ if $result[:http_response_code] != 200~
** Processing line: ~ log_info "The request yielded a result of #{$result[:http_response_code]} instead of 200."~
** Processing line: ~ exit~
** Processing line: ~ end~
** Processing line: ~ log_info ":try_assert_or_schedule succeeded!"~
** Processing line: ~ else~
** Processing line: ~ args.gtk.schedule_callback Kernel.tick_count + 10 do~
** Processing line: ~ try_assert_or_schedule args, assert~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_http args, assert~
** Processing line: ~ $result = $gtk.http_get 'http://dragonruby.org'~
** Processing line: ~ try_assert_or_schedule args, assert~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ puts "running tests"~
** Processing line: ~ $gtk.reset 100~
** Processing line: ~ $gtk.log_level = :off~
** Processing line: ~ $gtk.tests.start~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Debugging - Unit Tests - object_to_primitive_tests.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Debugging - Unit Tests - object_to_primitive_tests.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/03_unit_tests/object_to_primitive_tests.rb~
** Processing line: ~ class PlayerSpriteForTest~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_array_to_sprite args, assert~
** Processing line: ~ array = [[0, 0, 100, 100, "test.png"]].sprites~
** Processing line: ~ puts "No exception was thrown. Sweet!"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_class_to_sprite args, assert~
** Processing line: ~ array = [PlayerSprite.new].sprites~
** Processing line: ~ assert.true! array.first.is_a?(PlayerSprite)~
** Processing line: ~ puts "No exception was thrown. Sweet!"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.reset 100~
** Processing line: ~ $gtk.log_level = :off~
** Processing line: ~ $gtk.tests.start~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Debugging - Unit Tests - parsing_tests.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Debugging - Unit Tests - parsing_tests.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/03_unit_tests/parsing_tests.rb~
** Processing line: ~ def test_parse_json args, assert~
** Processing line: ~ result = args.gtk.parse_json '{ "name": "John Doe", "aliases": ["JD"] }'~
** Processing line: ~ assert.equal! result, { "name"=>"John Doe", "aliases"=>["JD"] }, "Parsing JSON failed."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_parse_xml args, assert~
** Processing line: ~ result = args.gtk.parse_xml <<-S~
** Processing line: ~ ~
** Processing line: ~ John Doe~
** Processing line: ~ ~
** Processing line: ~ S~
** Processing line: ~~
** Processing line: ~ expected = {:type=>:element,~
** Processing line: ~ :name=>nil,~
** Processing line: ~ :children=>[{:type=>:element,~
** Processing line: ~ :name=>"Person",~
** Processing line: ~ :children=>[{:type=>:element,~
** Processing line: ~ :name=>"Name",~
** Processing line: ~ :children=>[{:type=>:content,~
** Processing line: ~ :data=>"John Doe"}]}],~
** Processing line: ~ :attributes=>{"id"=>"100"}}]}~
** Processing line: ~~
** Processing line: ~ assert.equal! result, expected, "Parsing xml failed."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ puts "running tests"~
** Processing line: ~ $gtk.reset 100~
** Processing line: ~ $gtk.log_level = :off~
** Processing line: ~ $gtk.tests.start~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Debugging - Unit Tests - serialize_deserialize_tests.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Debugging - Unit Tests - serialize_deserialize_tests.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/03_unit_tests/serialize_deserialize_tests.rb~
** Processing line: ~ def test_serialize args, assert~
** Processing line: ~ GTK::Entity.__reset_id__!~
** Processing line: ~ args.state.player_one = "test"~
** Processing line: ~ result = args.gtk.serialize_state args.state~
** Processing line: ~ assert.equal! result, "{:entity_id=>3, :tick_count=>-1, :player_one=>\"test\"}"~
** Processing line: ~~
** Processing line: ~ GTK::Entity.__reset_id__!~
** Processing line: ~ args.gtk.write_file 'state.txt', ''~
** Processing line: ~ result = args.gtk.serialize_state 'state.txt', args.state~
** Processing line: ~ assert.equal! result, "{:entity_id=>3, :tick_count=>-1, :player_one=>\"test\"}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_deserialize args, assert~
** Processing line: ~ GTK::Entity.__reset_id__!~
** Processing line: ~ result = args.gtk.deserialize_state '{:entity_id=>3, :tick_count=>-1, :player_one=>"test"}'~
** Processing line: ~ assert.equal! result.player_one, "test"~
** Processing line: ~~
** Processing line: ~ GTK::Entity.__reset_id__!~
** Processing line: ~ args.gtk.write_file 'state.txt', '{:entity_id=>3, :tick_count=>-1, :player_one=>"test"}'~
** Processing line: ~ result = args.gtk.deserialize_state 'state.txt'~
** Processing line: ~ assert.equal! result.player_one, "test"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_very_large_serialization args, assert~
** Processing line: ~ GTK::Entity.__reset_id__!~
** Processing line: ~ size = 3000~
** Processing line: ~ size.map_with_index do |i|~
** Processing line: ~ args.state.send("k#{i}=".to_sym, i)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ result = args.gtk.serialize_state args.state~
** Processing line: ~ assert.true! (args.gtk.console.log.join.include? "unlikely a string this large will deserialize correctly")~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_strict_entity_serialization args, assert~
** Processing line: ~ GTK::Entity.__reset_id__!~
** Processing line: ~ args.state.player_one = args.state.new_entity(:player, name: "Ryu")~
** Processing line: ~ args.state.player_two = args.state.new_entity_strict(:player_strict, name: "Ken")~
** Processing line: ~~
** Processing line: ~ serialized_state = args.gtk.serialize_state args.state~
** Processing line: ~ assert.equal! serialized_state, '{:entity_id=>1, :tick_count=>-1, :player_one=>{:entity_id=>1, :entity_name=>:player, :entity_type=>:player, :created_at=>-1, :global_created_at=>-1, :name=>"Ryu"}, :player_two=>{:entity_id=>3, :entity_name=>:player_strict, :created_at=>-1, :global_created_at_elapsed=>-1, :entity_strict=>true, :name=>"Ken"}}'~
** Processing line: ~~
** Processing line: ~ deserialize_state = args.gtk.deserialize_state serialized_state~
** Processing line: ~~
** Processing line: ~ assert.equal! args.state.player_one.name, deserialize_state.player_one.name~
** Processing line: ~ assert.true! args.state.player_one.is_a? GTK::OpenEntity~
** Processing line: ~~
** Processing line: ~ assert.equal! args.state.player_two.name, deserialize_state.player_two.name~
** Processing line: ~ assert.true! args.state.player_two.is_a? GTK::StrictEntity~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_strict_entity_serialization_with_nil args, assert~
** Processing line: ~ GTK::Entity.__reset_id__!~
** Processing line: ~ args.state.player_one = args.state.new_entity(:player, name: "Ryu")~
** Processing line: ~ args.state.player_two = args.state.new_entity_strict(:player_strict, name: "Ken", blood_type: nil)~
** Processing line: ~~
** Processing line: ~ serialized_state = args.gtk.serialize_state args.state~
** Processing line: ~ assert.equal! serialized_state, '{:entity_id=>3, :tick_count=>-1, :player_one=>{:entity_id=>1, :entity_name=>:player, :entity_type=>:player, :created_at=>-1, :global_created_at=>-1, :name=>"Ryu"}, :player_two=>{:entity_id=>3, :entity_name=>:player_strict, :created_at=>-1, :global_created_at_elapsed=>-1, :entity_strict=>true, :name=>"Ken", :blood_type=>nil}}'~
** Processing line: ~~
** Processing line: ~ deserialized_state = args.gtk.deserialize_state serialized_state~
** Processing line: ~~
** Processing line: ~ assert.equal! args.state.player_one.name, deserialized_state.player_one.name~
** Processing line: ~ assert.true! args.state.player_one.is_a? GTK::OpenEntity~
** Processing line: ~~
** Processing line: ~ assert.equal! args.state.player_two.name, deserialized_state.player_two.name~
** Processing line: ~ assert.equal! args.state.player_two.blood_type, deserialized_state.player_two.blood_type~
** Processing line: ~ assert.equal! deserialized_state.player_two.blood_type, nil~
** Processing line: ~ assert.true! args.state.player_two.is_a? GTK::StrictEntity~
** Processing line: ~~
** Processing line: ~ deserialized_state.player_two.blood_type = :O~
** Processing line: ~ assert.equal! deserialized_state.player_two.blood_type, :O~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_multiple_strict_entities args, assert~
** Processing line: ~ GTK::Entity.__reset_id__!~
** Processing line: ~ args.state.player = args.state.new_entity_strict(:player_one, name: "Ryu")~
** Processing line: ~ args.state.enemy = args.state.new_entity_strict(:enemy, name: "Bison", other_property: 'extra mean')~
** Processing line: ~~
** Processing line: ~ serialized_state = args.gtk.serialize_state args.state~
** Processing line: ~ deserialized_state = args.gtk.deserialize_state serialized_state~
** Processing line: ~~
** Processing line: ~ assert.equal! deserialized_state.player.name, "Ryu"~
** Processing line: ~ assert.equal! deserialized_state.enemy.other_property, "extra mean"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $tests.start~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Advanced Debugging - Unit Tests - state_serialization_experimental_tests.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Advanced Debugging - Unit Tests - state_serialization_experimental_tests.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/03_unit_tests/state_serialization_experimental_tests.rb~
** Processing line: ~ MAX_CODE_GEN_LENGTH = 50~
** Processing line: ~~
** Processing line: ~ # NOTE: This is experimental/advanced stuff.~
** Processing line: ~ def needs_partitioning? target~
** Processing line: ~ target[:value].to_s.length > MAX_CODE_GEN_LENGTH~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def partition target~
** Processing line: ~ return [] unless needs_partitioning? target~
** Processing line: ~ if target[:value].is_a? GTK::OpenEntity~
** Processing line: ~ target[:value] = target[:value].hash~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ results = []~
** Processing line: ~ idx = 0~
** Processing line: ~ left, right = target[:value].partition do~
** Processing line: ~ idx += 1~
** Processing line: ~ idx.even?~
** Processing line: ~ end~
** Processing line: ~ left, right = Hash[left], Hash[right]~
** Processing line: ~ left = { value: left }~
** Processing line: ~ right = { value: right}~
** Processing line: ~ [left, right]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def add_partition target, path, aggregate, final_result~
** Processing line: ~ partitions = partition target~
** Processing line: ~ partitions.each do |part|~
** Processing line: ~ if needs_partitioning? part~
** Processing line: ~ if part[:value].keys.length == 1~
** Processing line: ~ first_key = part[:value].keys[0]~
** Processing line: ~ new_part = { value: part[:value][first_key] }~
** Processing line: ~ path.push first_key~
** Processing line: ~ add_partition new_part, path, aggregate, final_result~
** Processing line: ~ path.pop~
** Processing line: ~ else~
** Processing line: ~ add_partition part, path, aggregate, final_result~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ final_result << { value: { __path__: [*path] } }~
** Processing line: ~ final_result << { value: part[:value] }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def state_to_string state~
** Processing line: ~ parts_queue = []~
** Processing line: ~ final_queue = []~
** Processing line: ~ add_partition({ value: state.hash },~
** Processing line: ~ [],~
** Processing line: ~ parts_queue,~
** Processing line: ~ final_queue)~
** Processing line: ~ final_queue.reject {|i| i[:value].keys.length == 0}.map do |i|~
** Processing line: ~ i[:value].to_s~
** Processing line: ~ end.join("\n#==================================================#\n")~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def state_from_string string~
** Processing line: ~ Kernel.eval("$load_data = {}")~
** Processing line: ~ lines = string.split("\n#==================================================#\n")~
** Processing line: ~ lines.each do |l|~
** Processing line: ~ puts "todo: #{l}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ GTK::OpenEntity.parse_from_hash $load_data~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_save_and_load args, assert~
** Processing line: ~ args.state.item_1.name = "Jane"~
** Processing line: ~ string = state_to_string args.state~
** Processing line: ~ state = state_from_string string~
** Processing line: ~ assert.equal! args.state.item_1.name, state.item_1.name~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_save_and_load_big args, assert~
** Processing line: ~ size = 1000~
** Processing line: ~ size.map_with_index do |i|~
** Processing line: ~ args.state.send("k#{i}=".to_sym, i)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ string = state_to_string args.state~
** Processing line: ~ state = state_from_string string~
** Processing line: ~ size.map_with_index do |i|~
** Processing line: ~ assert.equal! args.state.send("k#{i}".to_sym), state.send("k#{i}".to_sym)~
** Processing line: ~ assert.equal! args.state.send("k#{i}".to_sym), i~
** Processing line: ~ assert.equal! state.send("k#{i}".to_sym), i~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_save_and_load_big_nested args, assert~
** Processing line: ~ args.state.player_one.friend.nested_hash.k0 = 0~
** Processing line: ~ args.state.player_one.friend.nested_hash.k1 = 1~
** Processing line: ~ args.state.player_one.friend.nested_hash.k2 = 2~
** Processing line: ~ args.state.player_one.friend.nested_hash.k3 = 3~
** Processing line: ~ args.state.player_one.friend.nested_hash.k4 = 4~
** Processing line: ~ args.state.player_one.friend.nested_hash.k5 = 5~
** Processing line: ~ args.state.player_one.friend.nested_hash.k6 = 6~
** Processing line: ~ args.state.player_one.friend.nested_hash.k7 = 7~
** Processing line: ~ args.state.player_one.friend.nested_hash.k8 = 8~
** Processing line: ~ args.state.player_one.friend.nested_hash.k9 = 9~
** Processing line: ~ string = state_to_string args.state~
** Processing line: ~ state = state_from_string string~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.reset 100~
** Processing line: ~ $gtk.log_level = :off~
** Processing line: ~ $gtk.tests.start~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Http - Retrieve Images - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Http - Retrieve Images - 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/01_retrieve_images/app/main.rb~
** 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: ~ 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]~
** Processing line: ~ args.outputs.labels << [640, 500, "Quit in the next few seconds if this is a problem.", 10, 1, 255, 255, 255]~
** Processing line: ~ args.outputs.labels << [640, 350, "#{(args.state.warning_debounce / 60.0).to_i}", 10, 1, 255, 255, 255]~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.download_debounce ||= 0 # start immediately, reset to non zero later.~
** Processing line: ~ args.state.photos ||= []~
** Processing line: ~~
** Processing line: ~ # Put a little pause between each download.~
** Processing line: ~ if args.state.download.nil?~
** Processing line: ~ if args.state.download_debounce > 0~
** Processing line: ~ args.state.download_debounce -= 1~
** Processing line: ~ else~
** Processing line: ~ args.state.download = $gtk.http_get 'https://picsum.photos/200/300.jpg'~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if !args.state.download.nil?~
** Processing line: ~ if args.state.download[:complete]~
** Processing line: ~ if args.state.download[:http_response_code] == 200~
** Processing line: ~ fname = "sprites/#{args.state.photos.length}.jpg"~
** Processing line: ~ $gtk.write_file fname, args.state.download[:response_data]~
** Processing line: ~ args.state.photos << [ 100 + rand(1080), 500 - rand(480), fname, rand(80) - 40 ]~
** Processing line: ~ end~
** Processing line: ~ args.state.download = nil~
** Processing line: ~ args.state.download_debounce = (rand(3) + 2) * 60~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # draw any downloaded photos...~
** Processing line: ~ args.state.photos.each { |i|~
** Processing line: ~ args.outputs.primitives << [i[0], i[1], 200, 300, i[2], i[3]].sprite~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ # Draw a download progress bar...~
** Processing line: ~ args.outputs.primitives << [0, 0, 1280, 30, 0, 0, 0, 255].solid~
** Processing line: ~ if !args.state.download.nil?~
** Processing line: ~ br = args.state.download[:response_read]~
** Processing line: ~ total = args.state.download[:response_total]~
** Processing line: ~ if total != 0~
** Processing line: ~ pct = br.to_f / total.to_f~
** Processing line: ~ args.outputs.primitives << [0, 0, 1280 * pct, 30, 0, 0, 255, 255].solid~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* 12 C Extensions - Basics - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~12 C Extensions - Basics - 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/12_c_extensions/01_basics/app/main.rb~
** Processing line: ~ $gtk.ffi_misc.gtk_dlopen("./samples/12_c_extensions/01_basics/build.dir/ext.lib")~
** Processing line: ~ include FFI::CExt~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.labels << [460, 600, "square(42) = #{square(42)}"]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* 3d - 3d Cube - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~3d - 3d Cube - 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/3d_cube/app/main.rb~
** Processing line: ~ STARTX = 0.0~
** Processing line: ~ STARTY = 0.0~
** Processing line: ~ ENDY = 20.0~
** Processing line: ~ ENDX = 20.0~
** Processing line: ~ SPINPOINT = 10~
** Processing line: ~ SPINDURATION = 400~
** Processing line: ~ POINTSIZE = 8~
** Processing line: ~ BOXDEPTH = 40~
** Processing line: ~ YAW = 1~
** Processing line: ~ DISTANCE = 10~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.background_color = [0, 0, 0]~
** Processing line: ~ a = Math.sin(args.state.tick_count / SPINDURATION) * Math.tan(args.state.tick_count / SPINDURATION)~
** Processing line: ~ s = Math.sin(a)~
** Processing line: ~ c = Math.cos(a)~
** Processing line: ~ x = STARTX~
** Processing line: ~ y = STARTY~
** Processing line: ~ offset_x = (1280 - (ENDX - STARTX)) / 2~
** Processing line: ~ offset_y = (360 - (ENDY - STARTY)) / 2~
** Processing line: ~~
** Processing line: ~ srand(1)~
** Processing line: ~ while y < ENDY do~
** Processing line: ~ while x < ENDX do~
** Processing line: ~ if (y == STARTY ||~
** Processing line: ~ y == (ENDY / 0.5) * 2 ||~
** Processing line: ~ y == (ENDY / 0.5) * 2 + 0.5 ||~
** Processing line: ~ y == ENDY - 0.5 ||~
** Processing line: ~ x == STARTX ||~
** Processing line: ~ x == ENDX - 0.5)~
** Processing line: ~ z = rand(BOXDEPTH)~
** Processing line: ~ z *= Math.sin(a / 2)~
** Processing line: ~ x -= SPINPOINT~
** Processing line: ~ u = (x * c) - (z * s)~
** Processing line: ~ v = (x * s) + (z * c)~
** Processing line: ~ k = DISTANCE.fdiv(100) + (v / 500 * YAW)~
** Processing line: ~ u = u / k~
** Processing line: ~ v = y / k~
** Processing line: ~ w = POINTSIZE / 10 / k~
** Processing line: ~ args.outputs.sprites << { x: offset_x + u - w, y: offset_y + v - w, w: w, h: w, path: 'sprites/square-blue.png'}~
** Processing line: ~ x += SPINPOINT~
** Processing line: ~ end~
** Processing line: ~ x += 0.5~
** Processing line: ~ end~
** Processing line: ~ y += 0.5~
** Processing line: ~ x = STARTX~
** Processing line: ~ end~
** 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 - Dueling Starships - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Arcade - Dueling Starships - 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_arcade/dueling_starships/app/main.rb~
** Processing line: ~ class DuelingSpaceships~
** Processing line: ~ attr_accessor :state, :inputs, :outputs, :grid~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render~
** Processing line: ~ calc~
** Processing line: ~ input~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults~
** Processing line: ~ outputs.background_color = [0, 0, 0]~
** Processing line: ~ state.ship_blue ||= new_blue_ship~
** Processing line: ~ state.ship_red ||= new_red_ship~
** Processing line: ~ state.flames ||= []~
** Processing line: ~ state.bullets ||= []~
** Processing line: ~ state.ship_blue_score ||= 0~
** Processing line: ~ state.ship_red_score ||= 0~
** Processing line: ~ state.stars ||= 100.map do~
** Processing line: ~ [rand.add(2).to_square(grid.w_half.randomize(:sign, :ratio),~
** Processing line: ~ grid.h_half.randomize(:sign, :ratio)),~
** Processing line: ~ 128 + 128.randomize(:ratio), 255, 255]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def default_ship x, y, angle, sprite_path, bullet_sprite_path, color~
** Processing line: ~ state.new_entity(:ship,~
** Processing line: ~ { x: x,~
** Processing line: ~ y: y,~
** Processing line: ~ dy: 0,~
** Processing line: ~ dx: 0,~
** Processing line: ~ damage: 0,~
** Processing line: ~ dead: false,~
** Processing line: ~ angle: angle,~
** Processing line: ~ max_alpha: 255,~
** Processing line: ~ sprite_path: sprite_path,~
** Processing line: ~ bullet_sprite_path: bullet_sprite_path,~
** Processing line: ~ color: color })~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def new_red_ship~
** Processing line: ~ default_ship(400, 250.randomize(:sign, :ratio),~
** Processing line: ~ 180, 'sprites/ship_red.png', 'sprites/red_bullet.png',~
** Processing line: ~ [255, 90, 90])~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def new_blue_ship~
** Processing line: ~ default_ship(-400, 250.randomize(:sign, :ratio),~
** Processing line: ~ 0, 'sprites/ship_blue.png', 'sprites/blue_bullet.png',~
** Processing line: ~ [110, 140, 255])~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render~
** Processing line: ~ render_instructions~
** Processing line: ~ render_score~
** Processing line: ~ render_universe~
** Processing line: ~ render_flames~
** Processing line: ~ render_ships~
** Processing line: ~ render_bullets~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_ships~
** Processing line: ~ update_ship_outputs(state.ship_blue)~
** Processing line: ~ update_ship_outputs(state.ship_red)~
** Processing line: ~ outputs.sprites << [state.ship_blue.sprite, state.ship_red.sprite]~
** Processing line: ~ outputs.labels << [state.ship_blue.label, state.ship_red.label]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_instructions~
** Processing line: ~ return if state.ship_blue.dx > 0 || state.ship_blue.dy > 0 ||~
** Processing line: ~ state.ship_red.dx > 0 || state.ship_red.dy > 0 ||~
** Processing line: ~ state.flames.length > 0~
** Processing line: ~~
** Processing line: ~ outputs.labels << [grid.left.shift_right(30),~
** Processing line: ~ grid.bottom.shift_up(30),~
** Processing line: ~ "Two gamepads needed to play. R1 to accelerate. Left and right on D-PAD to turn ship. Hold A to shoot. Press B to drop mines.",~
** Processing line: ~ 0, 0, 255, 255, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc~
** Processing line: ~ calc_thrusts~
** Processing line: ~ calc_ships~
** Processing line: ~ calc_bullets~
** Processing line: ~ calc_winner~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input~
** Processing line: ~ input_accelerate~
** Processing line: ~ input_turn~
** Processing line: ~ input_bullets_and_mines~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_score~
** Processing line: ~ outputs.labels << [grid.left.shift_right(80),~
** Processing line: ~ grid.top.shift_down(40),~
** Processing line: ~ state.ship_blue_score, 30, 1, state.ship_blue.color]~
** Processing line: ~~
** Processing line: ~ outputs.labels << [grid.right.shift_left(80),~
** Processing line: ~ grid.top.shift_down(40),~
** Processing line: ~ state.ship_red_score, 30, 1, state.ship_red.color]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_universe~
** Processing line: ~ return if outputs.static_solids.any?~
** Processing line: ~ outputs.static_solids << grid.rect~
** Processing line: ~ outputs.static_solids << state.stars~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def apply_round_finished_alpha entity~
** Processing line: ~ return entity unless state.round_finished_debounce~
** Processing line: ~ entity.a *= state.round_finished_debounce.percentage_of(2.seconds)~
** Processing line: ~ return entity~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def update_ship_outputs ship, sprite_size = 66~
** Processing line: ~ ship.sprite =~
** Processing line: ~ apply_round_finished_alpha [sprite_size.to_square(ship.x, ship.y),~
** Processing line: ~ ship.sprite_path,~
** Processing line: ~ ship.angle,~
** Processing line: ~ ship.dead ? 0 : 255 * ship.created_at.ease(2.seconds)].sprite~
** Processing line: ~ ship.label =~
** Processing line: ~ apply_round_finished_alpha [ship.x,~
** Processing line: ~ ship.y + 100,~
** Processing line: ~ "." * 5.minus(ship.damage).greater(0), 20, 1, ship.color, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_flames sprite_size = 6~
** Processing line: ~ outputs.sprites << state.flames.map do |p|~
** Processing line: ~ apply_round_finished_alpha [sprite_size.to_square(p.x, p.y),~
** Processing line: ~ 'sprites/flame.png', 0,~
** Processing line: ~ p.max_alpha * p.created_at.ease(p.lifetime, :flip)].sprite~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_bullets sprite_size = 10~
** Processing line: ~ outputs.sprites << state.bullets.map do |b|~
** Processing line: ~ apply_round_finished_alpha [b.sprite_size.to_square(b.x, b.y),~
** Processing line: ~ b.owner.bullet_sprite_path,~
** Processing line: ~ 0, b.max_alpha].sprite~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def wrap_location! location~
** Processing line: ~ location.x = grid.left if location.x > grid.right~
** Processing line: ~ location.x = grid.right if location.x < grid.left~
** Processing line: ~ location.y = grid.top if location.y < grid.bottom~
** Processing line: ~ location.y = grid.bottom if location.y > grid.top~
** Processing line: ~ location~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_thrusts~
** Processing line: ~ state.flames =~
** Processing line: ~ state.flames~
** Processing line: ~ .reject(&:old?)~
** Processing line: ~ .map do |p|~
** Processing line: ~ p.speed *= 0.9~
** Processing line: ~ p.y += p.angle.vector_y(p.speed)~
** Processing line: ~ p.x += p.angle.vector_x(p.speed)~
** Processing line: ~ wrap_location! p~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def all_ships~
** Processing line: ~ [state.ship_blue, state.ship_red]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def alive_ships~
** Processing line: ~ all_ships.reject { |s| s.dead }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_bullet bullet~
** Processing line: ~ bullet.y += bullet.angle.vector_y(bullet.speed)~
** Processing line: ~ bullet.x += bullet.angle.vector_x(bullet.speed)~
** Processing line: ~ wrap_location! bullet~
** Processing line: ~ explode_bullet! bullet if bullet.old?~
** Processing line: ~ return if bullet.exploded~
** Processing line: ~ return if state.round_finished~
** Processing line: ~ alive_ships.each do |s|~
** Processing line: ~ if s != bullet.owner &&~
** Processing line: ~ s.sprite.intersect_rect?(bullet.sprite_size.to_square(bullet.x, bullet.y))~
** Processing line: ~ explode_bullet! bullet, 10, 5, 30~
** Processing line: ~ s.damage += 1~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_bullets~
** Processing line: ~ state.bullets.each { |b| calc_bullet b }~
** Processing line: ~ state.bullets.reject! { |b| b.exploded }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def create_explosion! type, entity, flame_count, max_speed, lifetime, max_alpha = 255~
** Processing line: ~ flame_count.times do~
** Processing line: ~ state.flames << state.new_entity(type,~
** Processing line: ~ { angle: 360.randomize(:ratio),~
** Processing line: ~ speed: max_speed.randomize(:ratio),~
** Processing line: ~ lifetime: lifetime,~
** Processing line: ~ x: entity.x,~
** Processing line: ~ y: entity.y,~
** Processing line: ~ max_alpha: max_alpha })~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def explode_bullet! bullet, flame_override = 5, max_speed = 5, lifetime = 10~
** Processing line: ~ bullet.exploded = true~
** Processing line: ~ create_explosion! :bullet_explosion,~
** Processing line: ~ bullet,~
** Processing line: ~ flame_override,~
** Processing line: ~ max_speed,~
** Processing line: ~ lifetime,~
** Processing line: ~ bullet.max_alpha~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_ship ship~
** Processing line: ~ ship.x += ship.dx~
** Processing line: ~ ship.y += ship.dy~
** Processing line: ~ wrap_location! ship~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_ships~
** Processing line: ~ all_ships.each { |s| calc_ship s }~
** Processing line: ~ return if all_ships.any? { |s| s.dead }~
** Processing line: ~ return if state.round_finished~
** Processing line: ~ return unless state.ship_blue.sprite.intersect_rect?(state.ship_red.sprite)~
** Processing line: ~ state.ship_blue.damage = 5~
** Processing line: ~ state.ship_red.damage = 5~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def create_thruster_flames! ship~
** Processing line: ~ state.flames << state.new_entity(:ship_thruster,~
** Processing line: ~ { angle: ship.angle + 180 + 60.randomize(:sign, :ratio),~
** Processing line: ~ speed: 5.randomize(:ratio),~
** Processing line: ~ max_alpha: 255 * ship.created_at_elapsed.percentage_of(2.seconds),~
** Processing line: ~ lifetime: 30,~
** Processing line: ~ x: ship.x - ship.angle.vector_x(40) + 5.randomize(:sign, :ratio),~
** Processing line: ~ y: ship.y - ship.angle.vector_y(40) + 5.randomize(:sign, :ratio) })~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_accelerate_ship should_move_ship, ship~
** Processing line: ~ return if ship.dead~
** Processing line: ~~
** Processing line: ~ should_move_ship &&= (ship.dx + ship.dy).abs < 5~
** Processing line: ~~
** Processing line: ~ if should_move_ship~
** Processing line: ~ create_thruster_flames! ship~
** Processing line: ~ ship.dx += ship.angle.vector_x 0.050~
** Processing line: ~ ship.dy += ship.angle.vector_y 0.050~
** Processing line: ~ else~
** Processing line: ~ ship.dx *= 0.99~
** Processing line: ~ ship.dy *= 0.99~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_accelerate~
** Processing line: ~ input_accelerate_ship inputs.controller_one.key_held.r1 || inputs.keyboard.up, state.ship_blue~
** Processing line: ~ input_accelerate_ship inputs.controller_two.key_held.r1, state.ship_red~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_turn_ship direction, ship~
** Processing line: ~ ship.angle -= 3 * direction~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_turn~
** Processing line: ~ input_turn_ship inputs.controller_one.left_right + inputs.keyboard.left_right, state.ship_blue~
** Processing line: ~ input_turn_ship inputs.controller_two.left_right, state.ship_red~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_bullet create_bullet, ship~
** Processing line: ~ return unless create_bullet~
** Processing line: ~ return if ship.dead~
** Processing line: ~~
** Processing line: ~ state.bullets << state.new_entity(:ship_bullet,~
** Processing line: ~ { owner: ship,~
** Processing line: ~ angle: ship.angle,~
** Processing line: ~ max_alpha: 255 * ship.created_at_elapsed.percentage_of(2.seconds),~
** Processing line: ~ speed: 5 + ship.dx.mult(ship.angle.vector_x) + ship.dy.mult(ship.angle.vector_y),~
** Processing line: ~ lifetime: 120,~
** Processing line: ~ sprite_size: 10,~
** Processing line: ~ x: ship.x + ship.angle.vector_x * 32,~
** Processing line: ~ y: ship.y + ship.angle.vector_y * 32 })~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_mine create_mine, ship~
** Processing line: ~ return unless create_mine~
** Processing line: ~ return if ship.dead~
** Processing line: ~~
** Processing line: ~ state.bullets << state.new_entity(:ship_bullet,~
** Processing line: ~ { owner: ship,~
** Processing line: ~ angle: 360.randomize(:sign, :ratio),~
** Processing line: ~ max_alpha: 255 * ship.created_at_elapsed.percentage_of(2.seconds),~
** Processing line: ~ speed: 0.02,~
** Processing line: ~ sprite_size: 10,~
** Processing line: ~ lifetime: 600,~
** Processing line: ~ x: ship.x + ship.angle.vector_x * -50,~
** Processing line: ~ y: ship.y + ship.angle.vector_y * -50 })~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_bullets_and_mines~
** Processing line: ~ return if state.bullets.length > 100~
** Processing line: ~~
** Processing line: ~ [~
** Processing line: ~ [inputs.controller_one.key_held.a || inputs.keyboard.key_held.space,~
** Processing line: ~ inputs.controller_one.key_down.b || inputs.keyboard.key_down.down,~
** Processing line: ~ state.ship_blue],~
** Processing line: ~ [inputs.controller_two.key_held.a, inputs.controller_two.key_down.b, state.ship_red]~
** Processing line: ~ ].each do |a_held, b_down, ship|~
** Processing line: ~ input_bullet(a_held && state.tick_count.mod_zero?(10).or(a_held == 0), ship)~
** Processing line: ~ input_mine(b_down, ship)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_kill_ships~
** Processing line: ~ alive_ships.find_all { |s| s.damage >= 5 }.each do |s|~
** Processing line: ~ s.dead = true~
** Processing line: ~ create_explosion! :ship_explosion, s, 20, 20, 30, s.max_alpha~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_score~
** Processing line: ~ return if state.round_finished~
** Processing line: ~ return if alive_ships.length > 1~
** Processing line: ~~
** Processing line: ~ if alive_ships.first == state.ship_red~
** Processing line: ~ state.ship_red_score += 1~
** Processing line: ~ elsif alive_ships.first == state.ship_blue~
** Processing line: ~ state.ship_blue_score += 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.round_finished = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_reset_ships~
** Processing line: ~ return unless state.round_finished~
** Processing line: ~ state.round_finished_debounce ||= 2.seconds~
** Processing line: ~ state.round_finished_debounce -= 1~
** Processing line: ~ return if state.round_finished_debounce > 0~
** Processing line: ~ start_new_round!~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def start_new_round!~
** Processing line: ~ state.ship_blue = new_blue_ship~
** Processing line: ~ state.ship_red = new_red_ship~
** Processing line: ~ state.round_finished = false~
** Processing line: ~ state.round_finished_debounce = nil~
** Processing line: ~ state.flames.clear~
** Processing line: ~ state.bullets.clear~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_winner~
** Processing line: ~ calc_kill_ships~
** Processing line: ~ calc_score~
** Processing line: ~ calc_reset_ships~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $dueling_spaceship = DuelingSpaceships.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ args.grid.origin_center!~
** Processing line: ~ $dueling_spaceship.inputs = args.inputs~
** Processing line: ~ $dueling_spaceship.outputs = args.outputs~
** Processing line: ~ $dueling_spaceship.state = args.state~
** Processing line: ~ $dueling_spaceship.grid = args.grid~
** Processing line: ~ $dueling_spaceship.tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* arcade/flappy dragon/credits.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~arcade/flappy dragon/credits.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_arcade/flappy_dragon/CREDITS.txt~
** Processing line: ~ code: Amir Rajan, https://twitter.com/amirrajan~
** Processing line: ~ graphics and audio: Nick Culbertson, https://twitter.com/MobyPixel~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* arcade/flappy dragon/main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~arcade/flappy dragon/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_arcade/flappy_dragon/app/main.rb~
** Processing line: ~ class FlappyDragon~
** Processing line: ~ attr_accessor :grid, :inputs, :state, :outputs~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render~
** Processing line: ~ calc~
** Processing line: ~ process_inputs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults~
** Processing line: ~ state.flap_power = 11~
** Processing line: ~ state.gravity = 0.9~
** Processing line: ~ state.ceiling = 600~
** Processing line: ~ state.ceiling_flap_power = 6~
** Processing line: ~ state.wall_countdown_length = 100~
** Processing line: ~ state.wall_gap_size = 100~
** Processing line: ~ state.wall_countdown ||= 0~
** Processing line: ~ state.hi_score ||= 0~
** Processing line: ~ state.score ||= 0~
** Processing line: ~ state.walls ||= []~
** Processing line: ~ state.x ||= 50~
** Processing line: ~ state.y ||= 500~
** Processing line: ~ state.dy ||= 0~
** Processing line: ~ state.scene ||= :menu~
** Processing line: ~ state.scene_at ||= 0~
** Processing line: ~ state.difficulty ||= :normal~
** Processing line: ~ state.new_difficulty ||= :normal~
** Processing line: ~ state.countdown ||= 4.seconds~
** Processing line: ~ state.flash_at ||= 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render~
** Processing line: ~ outputs.sounds << "sounds/flappy-song.ogg" if state.tick_count == 1~
** Processing line: ~ render_score~
** Processing line: ~ render_menu~
** Processing line: ~ render_game~
** 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: ~ 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: ~~
** 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: ~ 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: ~ end~
** Processing line: ~~
** Processing line: ~ def render_game~
** Processing line: ~ render_game_over~
** Processing line: ~ render_background~
** Processing line: ~ render_walls~
** Processing line: ~ render_dragon~
** Processing line: ~ render_flash~
** Processing line: ~ end~
** 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: ~ end~
** Processing line: ~~
** Processing line: ~ def render_background~
** Processing line: ~ outputs.sprites << [0, 0, 1280, 720, '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~
** Processing line: ~ scroll_point_at = state.death_at if state.countdown > 0~
** Processing line: ~ scroll_point_at ||= 0~
** Processing line: ~~
** Processing line: ~ outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_back.png', 0.25)~
** Processing line: ~ outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_middle.png', 0.50)~
** Processing line: ~ outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_front.png', 1.00, -80)~
** 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: ~ ]~
** Processing line: ~ end~
** Processing line: ~ outputs.sprites << state.walls.map(&:sprites)~
** Processing line: ~ end~
** Processing line: ~~
** 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: ~ 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: ~ 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~
** Processing line: ~ state.dragon_sprite.y += (sprite_changed_elapsed * 14 - sprite_changed_elapsed ** 1.6)~
** Processing line: ~ end~
** Processing line: ~~
** 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: ~~
** Processing line: ~ state.flash_at = 0 if state.flash_at.elapsed_time > 20~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc~
** Processing line: ~ return unless state.scene == :game~
** Processing line: ~ reset_game if state.countdown == 1~
** Processing line: ~ state.countdown -= 1 and return if state.countdown > 0~
** Processing line: ~ calc_walls~
** Processing line: ~ calc_flap~
** Processing line: ~ calc_game_over~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_walls~
** Processing line: ~ state.walls.each { |w| w.x -= 8 }~
** Processing line: ~~
** Processing line: ~ walls_count_before_removal = state.walls.length~
** Processing line: ~~
** Processing line: ~ state.walls.reject! { |w| w.x < -100 }~
** Processing line: ~~
** Processing line: ~ state.score += 1 if state.walls.count < walls_count_before_removal~
** Processing line: ~~
** Processing line: ~ state.wall_countdown -= 1 and return if state.wall_countdown > 0~
** Processing line: ~~
** Processing line: ~ state.walls << state.new_entity(:wall) do |w|~
** Processing line: ~ w.x = grid.right~
** Processing line: ~ w.opening = grid.top~
** Processing line: ~ .randomize(:ratio)~
** Processing line: ~ .greater(200)~
** Processing line: ~ .lesser(520)~
** Processing line: ~ w.bottom_height = w.opening - state.wall_gap_size~
** Processing line: ~ w.top_y = w.opening + state.wall_gap_size~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.wall_countdown = state.wall_countdown_length~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_flap~
** Processing line: ~ state.y += state.dy~
** Processing line: ~ state.dy = state.dy.lesser state.flap_power~
** Processing line: ~ state.dy -= state.gravity~
** Processing line: ~ return if state.y < state.ceiling~
** Processing line: ~ state.y = state.ceiling~
** Processing line: ~ state.dy = state.dy.lesser state.ceiling_flap_power~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_game_over~
** Processing line: ~ return unless game_over?~
** Processing line: ~~
** Processing line: ~ state.death_at = state.tick_count~
** Processing line: ~ state.death_from = state.walls.first~
** Processing line: ~ state.death_fall_direction = -1~
** Processing line: ~ state.death_fall_direction = 1 if state.x > state.death_from.x~
** Processing line: ~ outputs.sounds << "sounds/hit-sound.wav"~
** Processing line: ~ begin_countdown~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs~
** Processing line: ~ process_inputs_menu~
** Processing line: ~ process_inputs_game~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs_menu~
** Processing line: ~ return unless state.scene == :menu~
** Processing line: ~~
** Processing line: ~ changediff = inputs.keyboard.key_down.tab || inputs.controller_one.key_down.select~
** Processing line: ~ if inputs.mouse.click~
** Processing line: ~ p = inputs.mouse.click.point~
** Processing line: ~ if (p.y >= 165) && (p.y < 200) && (p.x >= 500) && (p.x < 800)~
** Processing line: ~ changediff = true~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if changediff~
** Processing line: ~ case state.new_difficulty~
** Processing line: ~ when :easy~
** Processing line: ~ state.new_difficulty = :normal~
** Processing line: ~ when :normal~
** Processing line: ~ state.new_difficulty = :hard~
** Processing line: ~ when :hard~
** Processing line: ~ state.new_difficulty = :flappy~
** Processing line: ~ when :flappy~
** Processing line: ~ state.new_difficulty = :easy~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if inputs.keyboard.key_down.enter || inputs.controller_one.key_down.start || inputs.controller_one.key_down.a~
** Processing line: ~ state.difficulty = state.new_difficulty~
** Processing line: ~ change_to_scene :game~
** Processing line: ~ reset_game false~
** Processing line: ~ state.hi_score = 0~
** Processing line: ~ begin_countdown~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if inputs.keyboard.key_down.escape || (inputs.mouse.click && !changediff) || inputs.controller_one.key_down.b~
** Processing line: ~ state.new_difficulty = state.difficulty~
** Processing line: ~ change_to_scene :game~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs_game~
** Processing line: ~ return unless state.scene == :game~
** Processing line: ~~
** Processing line: ~ clicked_menu = false~
** Processing line: ~ if inputs.mouse.click~
** Processing line: ~ p = inputs.mouse.click.point~
** Processing line: ~ clicked_menu = (p.y >= 620) && (p.x < 275)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if clicked_menu || inputs.keyboard.key_down.escape || inputs.keyboard.key_down.enter || inputs.controller_one.key_down.start~
** Processing line: ~ change_to_scene :menu~
** Processing line: ~ elsif (inputs.mouse.down || inputs.mouse.click || inputs.keyboard.key_down.space || inputs.controller_one.key_down.a) && state.countdown == 0~
** Processing line: ~ state.dy = 0~
** Processing line: ~ state.dy += state.flap_power~
** Processing line: ~ state.flapped_at = state.tick_count~
** Processing line: ~ outputs.sounds << "sounds/fly-sound.wav"~
** 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: ~ end~
** Processing line: ~~
** Processing line: ~ def large_white_typeset~
** Processing line: ~ [5, 0, 255, 255, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def at_beginning?~
** Processing line: ~ state.walls.count == 0~
** Processing line: ~ end~
** 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: ~ end~
** Processing line: ~~
** Processing line: ~ def game_over?~
** Processing line: ~ return true if state.y <= 0.-(500 * collision_forgiveness) && !at_beginning?~
** Processing line: ~~
** 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: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def collision_forgiveness~
** Processing line: ~ case state.difficulty~
** Processing line: ~ when :easy~
** Processing line: ~ 0.9~
** Processing line: ~ when :normal~
** Processing line: ~ 0.7~
** Processing line: ~ when :hard~
** Processing line: ~ 0.5~
** Processing line: ~ when :flappy~
** Processing line: ~ 0.3~
** Processing line: ~ else~
** Processing line: ~ 0.9~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def countdown_text~
** Processing line: ~ state.countdown ||= -1~
** Processing line: ~ return "" if state.countdown == 0~
** Processing line: ~ return "GO!" if state.countdown.idiv(60) == 0~
** Processing line: ~ return "GAME OVER" if state.death_at~
** Processing line: ~ return "READY?"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def begin_countdown~
** Processing line: ~ state.countdown = 4.seconds~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def score_text~
** Processing line: ~ return "" unless state.countdown > 1.seconds~
** Processing line: ~ return "" unless state.death_at~
** Processing line: ~ return "SCORE: 0 (LOL)" if state.score == 0~
** Processing line: ~ return "HI SCORE: #{state.score}" if state.score == state.hi_score~
** Processing line: ~ return "SCORE: #{state.score}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def reset_game set_flash = true~
** Processing line: ~ state.flash_at = state.tick_count if set_flash~
** Processing line: ~ state.walls = []~
** Processing line: ~ state.y = 500~
** Processing line: ~ state.dy = 0~
** Processing line: ~ state.hi_score = state.hi_score.greater(state.score)~
** Processing line: ~ state.score = 0~
** Processing line: ~ state.wall_countdown = state.wall_countdown_length.fdiv(2)~
** Processing line: ~ state.show_death = false~
** Processing line: ~ state.death_at = nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def change_to_scene scene~
** Processing line: ~ state.scene = scene~
** Processing line: ~ state.scene_at = state.tick_count~
** Processing line: ~ inputs.keyboard.clear~
** Processing line: ~ inputs.controller_one.clear~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $flappy_dragon = FlappyDragon.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $flappy_dragon.grid = args.grid~
** Processing line: ~ $flappy_dragon.inputs = args.inputs~
** Processing line: ~ $flappy_dragon.state = args.state~
** Processing line: ~ $flappy_dragon.outputs = args.outputs~
** Processing line: ~ $flappy_dragon.tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Arcade - Pong - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Arcade - Pong - 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_arcade/pong/app/main.rb~
** Processing line: ~ def tick args~
** Processing line: ~ defaults args~
** Processing line: ~ render args~
** Processing line: ~ calc args~
** Processing line: ~ input args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults args~
** Processing line: ~ args.state.ball.debounce ||= 3 * 60~
** Processing line: ~ args.state.ball.size ||= 10~
** Processing line: ~ args.state.ball.size_half ||= args.state.ball.size / 2~
** Processing line: ~ args.state.ball.x ||= 640~
** Processing line: ~ args.state.ball.y ||= 360~
** Processing line: ~ args.state.ball.dx ||= 5.randomize(:sign)~
** Processing line: ~ args.state.ball.dy ||= 5.randomize(:sign)~
** Processing line: ~ args.state.left_paddle.y ||= 360~
** Processing line: ~ args.state.right_paddle.y ||= 360~
** Processing line: ~ args.state.paddle.h ||= 120~
** Processing line: ~ args.state.paddle.w ||= 10~
** Processing line: ~ args.state.left_paddle.score ||= 0~
** Processing line: ~ args.state.right_paddle.score ||= 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render args~
** Processing line: ~ render_center_line args~
** Processing line: ~ render_scores args~
** Processing line: ~ render_countdown args~
** Processing line: ~ render_ball args~
** Processing line: ~ render_paddles args~
** Processing line: ~ render_instructions args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ begin :render_methods~
** Processing line: ~ def render_center_line args~
** Processing line: ~ args.outputs.lines << [640, 0, 640, 720]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_scores args~
** Processing line: ~ args.outputs.labels << [~
** Processing line: ~ [320, 650, args.state.left_paddle.score, 10, 1],~
** Processing line: ~ [960, 650, args.state.right_paddle.score, 10, 1]~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_countdown args~
** Processing line: ~ return unless args.state.ball.debounce > 0~
** Processing line: ~ args.outputs.labels << [640, 360, "%.2f" % args.state.ball.debounce.fdiv(60), 10, 1]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_ball args~
** Processing line: ~ args.outputs.solids << solid_ball(args)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_paddles args~
** Processing line: ~ args.outputs.solids << solid_left_paddle(args)~
** Processing line: ~ args.outputs.solids << solid_right_paddle(args)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_instructions args~
** Processing line: ~ args.outputs.labels << [320, 30, "W and S keys to move left paddle.", 0, 1]~
** Processing line: ~ args.outputs.labels << [920, 30, "O and L keys to move right paddle.", 0, 1]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc args~
** Processing line: ~ args.state.ball.debounce -= 1 and return if args.state.ball.debounce > 0~
** Processing line: ~ calc_move_ball args~
** Processing line: ~ calc_collision_with_left_paddle args~
** Processing line: ~ calc_collision_with_right_paddle args~
** Processing line: ~ calc_collision_with_walls args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ begin :calc_methods~
** Processing line: ~ def calc_move_ball args~
** Processing line: ~ args.state.ball.x += args.state.ball.dx~
** Processing line: ~ args.state.ball.y += args.state.ball.dy~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_collision_with_left_paddle args~
** Processing line: ~ if solid_left_paddle(args).intersect_rect? solid_ball(args)~
** Processing line: ~ args.state.ball.dx *= -1~
** Processing line: ~ elsif args.state.ball.x < 0~
** Processing line: ~ args.state.right_paddle.score += 1~
** Processing line: ~ calc_reset_round args~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_collision_with_right_paddle args~
** Processing line: ~ if solid_right_paddle(args).intersect_rect? solid_ball(args)~
** Processing line: ~ args.state.ball.dx *= -1~
** Processing line: ~ elsif args.state.ball.x > 1280~
** Processing line: ~ args.state.left_paddle.score += 1~
** Processing line: ~ calc_reset_round args~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_collision_with_walls args~
** Processing line: ~ if args.state.ball.y + args.state.ball.size_half > 720~
** Processing line: ~ args.state.ball.y = 720 - args.state.ball.size_half~
** Processing line: ~ args.state.ball.dy *= -1~
** Processing line: ~ elsif args.state.ball.y - args.state.ball.size_half < 0~
** Processing line: ~ args.state.ball.y = args.state.ball.size_half~
** Processing line: ~ args.state.ball.dy *= -1~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_reset_round args~
** Processing line: ~ args.state.ball.x = 640~
** Processing line: ~ args.state.ball.y = 360~
** Processing line: ~ args.state.ball.dx = 5.randomize(:sign)~
** Processing line: ~ args.state.ball.dy = 5.randomize(:sign)~
** Processing line: ~ args.state.ball.debounce = 3 * 60~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input args~
** Processing line: ~ input_left_paddle args~
** Processing line: ~ input_right_paddle args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ begin :input_methods~
** Processing line: ~ def input_left_paddle args~
** Processing line: ~ if args.inputs.controller_one.key_down.down || args.inputs.keyboard.key_down.s~
** Processing line: ~ args.state.left_paddle.y -= 40~
** Processing line: ~ elsif args.inputs.controller_one.key_down.up || args.inputs.keyboard.key_down.w~
** Processing line: ~ args.state.left_paddle.y += 40~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_right_paddle args~
** Processing line: ~ if args.inputs.controller_two.key_down.down || args.inputs.keyboard.key_down.l~
** Processing line: ~ args.state.right_paddle.y -= 40~
** Processing line: ~ elsif args.inputs.controller_two.key_down.up || args.inputs.keyboard.key_down.o~
** Processing line: ~ args.state.right_paddle.y += 40~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ begin :assets~
** Processing line: ~ def solid_ball args~
** Processing line: ~ centered_rect args.state.ball.x, args.state.ball.y, args.state.ball.size, args.state.ball.size~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def solid_left_paddle args~
** Processing line: ~ centered_rect_vertically 0, args.state.left_paddle.y, args.state.paddle.w, args.state.paddle.h~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def solid_right_paddle args~
** Processing line: ~ centered_rect_vertically 1280 - args.state.paddle.w, args.state.right_paddle.y, args.state.paddle.w, args.state.paddle.h~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def centered_rect x, y, w, h~
** Processing line: ~ [x - w / 2, y - h / 2, w, h]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def centered_rect_vertically x, y, w, h~
** Processing line: ~ [x, y - h / 2, w, h]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Arcade - Snakemoji - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Arcade - Snakemoji - 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_arcade/snakemoji/app/main.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ ################################~
** Processing line: ~ # So I was working on a snake game while~
** Processing line: ~ # learning DragonRuby, and at some point I had a thought~
** Processing line: ~ # what if I use "😀" as a function name, surely it wont work right...?~
** Processing line: ~ # RIGHT....?~
** Processing line: ~ # BUT IT DID, IT WORKED~
** Processing line: ~ # it all went downhill from then~
** Processing line: ~ # Created by Anton K. (ai Doge)~
** Processing line: ~ # https://gist.github.com/scorp200~
** Processing line: ~ #############LICENSE############~
** Processing line: ~ # Feel free to use this anywhere and however you want~
** Processing line: ~ # You can sell this to EA for $1,000,000 if you want, its completely free.~
** Processing line: ~ # Just rememeber you are helping this... thing... to spread...~
** Processing line: ~ # ALSO! I am not liable for any mental, physical or financial damage caused.~
** Processing line: ~ #############LICENSE############~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ class Array~
** Processing line: ~ #Helper function~
** Processing line: ~ def move! vector~
** Processing line: ~ self.x += vector.x~
** Processing line: ~ self.y += vector.y~
** Processing line: ~ return self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #Helper function to draw snake body~
** Processing line: ~ def draw! 🎮, 📺, color~
** Processing line: ~ translate 📺.solids, 🎮.⛓, [self.x * 🎮.⚖️ + 🎮.🛶 / 2, self.y * 🎮.⚖️ + 🎮.🛶 / 2, 🎮.⚖️ - 🎮.🛶, 🎮.⚖️ - 🎮.🛶, color]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #This is where it all started, I was trying to find good way to multiply a map by a number, * is already used so is **~
** Processing line: ~ #I kept trying different combinations of symbols, when suddenly...~
** Processing line: ~ def 😀 value~
** Processing line: ~ self.map {|d| d * value}~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #Draw stuff with an offset~
** Processing line: ~ def translate output_collection, ⛓, what~
** Processing line: ~ what.x += ⛓.x~
** Processing line: ~ what.y += ⛓.y~
** Processing line: ~ output_collection << what~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ BLUE = [33, 150, 243]~
** Processing line: ~ RED = [244, 67, 54]~
** Processing line: ~ GOLD = [255, 193, 7]~
** Processing line: ~ LAST = 0~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ defaults args.state~
** Processing line: ~ render args.state, args.outputs~
** Processing line: ~ input args.state, args.inputs~
** Processing line: ~ update args.state~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def update 🎮~
** Processing line: ~ #Update every 10 frames~
** Processing line: ~ if 🎮.tick_count.mod_zero? 10~
** Processing line: ~ #Add new snake body piece at head's location~
** Processing line: ~ 🎮.🐍 << [*🎮.🤖]~
** Processing line: ~ #Assign Next Direction to Direction~
** Processing line: ~ 🎮.🚗 = *🎮.🚦~
** Processing line: ~~
** Processing line: ~ #Trim the snake a bit if its longer than current size~
** Processing line: ~ if 🎮.🐍.length > 🎮.🛒~
** Processing line: ~ 🎮.🐍 = 🎮.🐍[-🎮.🛒..-1]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #Move the head in the Direction~
** Processing line: ~ 🎮.🤖.move! 🎮.🚗~
** Processing line: ~~
** Processing line: ~ #If Head is outside the playing field, or inside snake's body restart game~
** Processing line: ~ if 🎮.🤖.x < 0 || 🎮.🤖.x >= 🎮.🗺.x || 🎮.🤖.y < 0 || 🎮.🤖.y >= 🎮.🗺.y || 🎮.🚗 != [0, 0] && 🎮.🐍.any? {|s| s == 🎮.🤖}~
** Processing line: ~ LAST = 🎮.💰~
** Processing line: ~ 🎮.as_hash.clear~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #If head lands on food add size and score~
** Processing line: ~ if 🎮.🤖 == 🎮.🍎~
** Processing line: ~ 🎮.🛒 += 1~
** Processing line: ~ 🎮.💰 += (🎮.🛒 * 0.8).floor.to_i + 5~
** Processing line: ~ spawn_🍎 🎮~
** Processing line: ~ puts 🎮.🍎~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #Every second remove 1 point~
** Processing line: ~ if 🎮.💰 > 0 && 🎮.tick_count.mod_zero?(60)~
** Processing line: ~ 🎮.💰 -= 1~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def spawn_🍎 🎮~
** Processing line: ~ #Food~
** Processing line: ~ 🎮.🍎 ||= [*🎮.🤖]~
** Processing line: ~ #Randomly spawns food inside the playing field, keep doing this if the food keeps landing on the snake's body~
** Processing line: ~ while 🎮.🐍.any? {|s| s == 🎮.🍎} || 🎮.🍎 == 🎮.🤖 do~
** Processing line: ~ 🎮.🍎 = [rand(🎮.🗺.x), rand(🎮.🗺.y)]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render 🎮, 📺~
** Processing line: ~ #Paint the background black~
** Processing line: ~ 📺.solids << [0, 0, 1280, 720, 0, 0, 0, 255]~
** Processing line: ~ #Draw a border for the playing field~
** Processing line: ~ translate 📺.borders, 🎮.⛓, [0, 0, 🎮.🗺.x * 🎮.⚖️, 🎮.🗺.y * 🎮.⚖️, 255, 255, 255]~
** Processing line: ~~
** Processing line: ~ #Draw the snake's body~
** Processing line: ~ 🎮.🐍.map do |🐍| 🐍.draw! 🎮, 📺, BLUE end~
** Processing line: ~ #Draw the head~
** Processing line: ~ 🎮.🤖.draw! 🎮, 📺, BLUE~
** Processing line: ~ #Draw the food~
** Processing line: ~ 🎮.🍎.draw! 🎮, 📺, RED~
** Processing line: ~~
** Processing line: ~ #Draw current score~
** Processing line: ~ translate 📺.labels, 🎮.⛓, [5, 715, "Score: #{🎮.💰}", GOLD]~
** Processing line: ~ #Draw your last score, if any~
** Processing line: ~ translate 📺.labels, 🎮.⛓, [[*🎮.🤖.😀(🎮.⚖️)].move!([0, 🎮.⚖️ * 2]), "Your Last score is #{LAST}", 0, 1, GOLD] unless LAST == 0 || 🎮.🚗 != [0, 0]~
** Processing line: ~ #Draw starting message, only if Direction is 0~
** Processing line: ~ translate 📺.labels, 🎮.⛓, [🎮.🤖.😀(🎮.⚖️), "Press any Arrow key to start", 0, 1, GOLD] unless 🎮.🚗 != [0, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input 🎮, 🕹~
** Processing line: ~ #Left and Right keyboard input, only change if X direction is 0~
** Processing line: ~ if 🕹.keyboard.key_held.left && 🎮.🚗.x == 0~
** Processing line: ~ 🎮.🚦 = [-1, 0]~
** Processing line: ~ elsif 🕹.keyboard.key_held.right && 🎮.🚗.x == 0~
** Processing line: ~ 🎮.🚦 = [1, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #Up and Down keyboard input, only change if Y direction is 0~
** Processing line: ~ if 🕹.keyboard.key_held.up && 🎮.🚗.y == 0~
** Processing line: ~ 🎮.🚦 = [0, 1]~
** Processing line: ~ elsif 🕹.keyboard.key_held.down && 🎮.🚗.y == 0~
** Processing line: ~ 🎮.🚦 = [0, -1]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults 🎮~
** Processing line: ~ #Playing field size~
** Processing line: ~ 🎮.🗺 ||= [20, 20]~
** Processing line: ~ #Scale for drawing, screen height / Field height~
** Processing line: ~ 🎮.⚖️ ||= 720 / 🎮.🗺.y~
** Processing line: ~ #Offset, offset all rendering to the center of the screen~
** Processing line: ~ 🎮.⛓ ||= [(1280 - 720).fdiv(2), 0]~
** Processing line: ~ #Padding, make the snake body slightly smaller than the scale~
** Processing line: ~ 🎮.🛶 ||= (🎮.⚖️ * 0.2).to_i~
** Processing line: ~ #Snake Size~
** Processing line: ~ 🎮.🛒 ||= 3~
** Processing line: ~ #Snake head, the only part we are actually controlling~
** Processing line: ~ 🎮.🤖 ||= [🎮.🗺.x / 2, 🎮.🗺.y / 2]~
** Processing line: ~ #Snake body map, follows the head~
** Processing line: ~ 🎮.🐍 ||= []~
** Processing line: ~ #Direction the head moves to~
** Processing line: ~ 🎮.🚗 ||= [0, 0]~
** Processing line: ~ #Next_Direction, during input check only change this variable and then when game updates asign this to Direction~
** Processing line: ~ 🎮.🚦 ||= [*🎮.🚗]~
** Processing line: ~ #Your score~
** Processing line: ~ 🎮.💰 ||= 0~
** Processing line: ~ #Spawns Food randomly~
** Processing line: ~ spawn_🍎(🎮) unless 🎮.🍎?~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Arcade - Solar System - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Arcade - Solar System - 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_arcade/solar_system/app/main.rb~
** Processing line: ~ # Focused tutorial video: https://s3.amazonaws.com/s3.dragonruby.org/dragonruby-nddnug-workshop.mp4~
** Processing line: ~ # Workshop/Presentation which provides motivation for creating a game engine: https://www.youtube.com/watch?v=S3CFce1arC8~
** Processing line: ~~
** Processing line: ~ def defaults args~
** Processing line: ~ args.outputs.background_color = [0, 0, 0]~
** Processing line: ~ args.state.x ||= 640~
** Processing line: ~ args.state.y ||= 360~
** Processing line: ~ args.state.stars ||= 100.map do~
** Processing line: ~ [1280 * rand, 720 * rand, rand.fdiv(10), 255 * rand, 255 * rand, 255 * rand]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.sun ||= args.state.new_entity(:sun) do |s|~
** Processing line: ~ s.s = 100~
** Processing line: ~ s.path = 'sprites/sun.png'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.planets = [~
** Processing line: ~ [:mercury, 65, 5, 88],~
** Processing line: ~ [:venus, 100, 10, 225],~
** Processing line: ~ [:earth, 120, 10, 365],~
** Processing line: ~ [:mars, 140, 8, 687],~
** Processing line: ~ [:jupiter, 280, 30, 365 * 11.8],~
** Processing line: ~ [:saturn, 350, 20, 365 * 29.5],~
** Processing line: ~ [:uranus, 400, 15, 365 * 84],~
** Processing line: ~ [:neptune, 440, 15, 365 * 164.8],~
** Processing line: ~ [:pluto, 480, 5, 365 * 247.8],~
** Processing line: ~ ].map do |name, distance, size, year_in_days|~
** Processing line: ~ args.state.new_entity(name) do |p|~
** Processing line: ~ p.path = "sprites/#{name}.png"~
** Processing line: ~ p.distance = distance * 0.7~
** Processing line: ~ p.s = size * 0.7~
** Processing line: ~ p.year_in_days = year_in_days~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.ship ||= args.state.new_entity(:ship) do |s|~
** Processing line: ~ s.x = 1280 * rand~
** Processing line: ~ s.y = 720 * rand~
** Processing line: ~ s.angle = 0~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_sprite args, entity~
** Processing line: ~ x = 0~
** Processing line: ~ y = 0~
** Processing line: ~~
** Processing line: ~ if entity.year_in_days~
** Processing line: ~ day = args.state.tick_count~
** Processing line: ~ day_in_year = day % entity.year_in_days~
** Processing line: ~ entity.random_start_day ||= day_in_year * rand~
** Processing line: ~ percentage_of_year = day_in_year.fdiv(entity.year_in_days)~
** Processing line: ~ angle = 365 * percentage_of_year~
** Processing line: ~ x = angle.vector_x(entity.distance)~
** Processing line: ~ y = angle.vector_y(entity.distance)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ [640 + x - entity.s.half, 360 + y - entity.s.half, entity.s, entity.s, entity.path]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render args~
** Processing line: ~ args.outputs.solids << [0, 0, 1280, 720]~
** Processing line: ~~
** Processing line: ~ args.outputs.sprites << args.state.stars.map do |x, y, _, r, g, b|~
** Processing line: ~ [x, y, 10, 10, 'sprites/star.png', 0, 100, r, g, b]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.sprites << to_sprite(args, args.state.sun)~
** Processing line: ~ args.outputs.sprites << args.state.planets.map { |p| to_sprite args, p }~
** Processing line: ~ args.outputs.sprites << [args.state.ship.x, args.state.ship.y, 20, 20, 'sprites/ship.png', args.state.ship.angle]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc args~
** Processing line: ~ args.state.stars = args.state.stars.map do |x, y, speed, r, g, b|~
** Processing line: ~ x += speed~
** Processing line: ~ y += speed~
** Processing line: ~ x = 0 if x > 1280~
** Processing line: ~ y = 0 if y > 720~
** Processing line: ~ [x, y, speed, r, g, b]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.tick_count == 0~
** Processing line: ~ args.outputs.sounds << 'sounds/bg.ogg'~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs args~
** Processing line: ~ if args.inputs.keyboard.left || args.inputs.controller_one.key_held.left~
** Processing line: ~ args.state.ship.angle += 1~
** Processing line: ~ elsif args.inputs.keyboard.right || args.inputs.controller_one.key_held.right~
** Processing line: ~ args.state.ship.angle -= 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.inputs.keyboard.up || args.inputs.controller_one.key_held.a~
** Processing line: ~ args.state.ship.x += args.state.ship.angle.x_vector~
** Processing line: ~ args.state.ship.y += args.state.ship.angle.y_vector~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ defaults args~
** Processing line: ~ render args~
** Processing line: ~ calc args~
** Processing line: ~ process_inputs args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def r~
** Processing line: ~ $gtk.reset~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Crafting - Craft Game Starting Point - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Crafting - Craft Game 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_crafting/craft_game_starting_point/app/main.rb~
** Processing line: ~ # ==================================================~
** Processing line: ~ # A NOTE TO JAM CRAFT PARTICIPANTS:~
** Processing line: ~ # The comments and code in here are just as small piece of DragonRuby's capabilities.~
** Processing line: ~ # Be sure to check out the rest of the sample apps. Start with README.txt and go from there!~
** Processing line: ~ # ==================================================~
** Processing line: ~~
** Processing line: ~ # def tick args is the entry point into your game. This function is called at~
** Processing line: ~ # a fixed update time of 60hz (60 fps).~
** Processing line: ~ def tick args~
** Processing line: ~ # The defaults function intitializes the game.~
** Processing line: ~ defaults args~
** Processing line: ~~
** Processing line: ~ # After the game is initialized, render it.~
** Processing line: ~ render args~
** Processing line: ~~
** Processing line: ~ # After rendering the player should be able to respond to input.~
** Processing line: ~ input args~
** Processing line: ~~
** Processing line: ~ # After responding to input, the game performs any additional calculations.~
** Processing line: ~ calc args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults args~
** Processing line: ~ # hide the mouse cursor for this game, we are going to render our own cursor~
** Processing line: ~ if args.state.tick_count == 0~
** Processing line: ~ args.gtk.hide_cursor~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.click_ripples ||= []~
** Processing line: ~~
** Processing line: ~ # everything is on a 1280x720 virtual canvas, so you can~
** Processing line: ~ # hardcode locations~
** Processing line: ~~
** Processing line: ~ # define the borders for where the inventory is located~
** Processing line: ~ # args.state is a data structure that accepts any arbitrary parameters~
** Processing line: ~ # so you can create an object graph without having to create any classes.~
** Processing line: ~~
** Processing line: ~ # Bottom left is 0, 0. Top right is 1280, 720.~
** Processing line: ~ # The inventory area is at the top of the screen~
** Processing line: ~ # the number 80 is the size of all the sprites, so that is what is being~
** Processing line: ~ # used to decide the with and height~
** Processing line: ~ args.state.sprite_size = 80~
** Processing line: ~~
** Processing line: ~ args.state.inventory_border.w = args.state.sprite_size * 10~
** Processing line: ~ args.state.inventory_border.h = args.state.sprite_size * 3~
** Processing line: ~ args.state.inventory_border.x = 10~
** Processing line: ~ args.state.inventory_border.y = 710 - args.state.inventory_border.h~
** Processing line: ~~
** Processing line: ~ # define the borders for where the crafting area is located~
** Processing line: ~ # the crafting area is below the inventory area~
** Processing line: ~ # the number 80 is the size of all the sprites, so that is what is being~
** Processing line: ~ # used to decide the with and height~
** Processing line: ~ args.state.craft_border.x = 10~
** Processing line: ~ args.state.craft_border.y = 220~
** Processing line: ~ args.state.craft_border.w = args.state.sprite_size * 3~
** Processing line: ~ args.state.craft_border.h = args.state.sprite_size * 3~
** Processing line: ~~
** Processing line: ~ # define the area where results are located~
** Processing line: ~ # the crafting result is to the right of the craft area~
** Processing line: ~ args.state.result_border.x = 10 + args.state.sprite_size * 3 + args.state.sprite_size~
** Processing line: ~ args.state.result_border.y = 220 + args.state.sprite_size~
** Processing line: ~ args.state.result_border.w = args.state.sprite_size~
** Processing line: ~ args.state.result_border.h = args.state.sprite_size~
** Processing line: ~~
** Processing line: ~ # initialize items for the first time if they are nil~
** Processing line: ~ # you start with 15 wood, 1 chest, and 5 plank~
** Processing line: ~ # Ruby has built in syntax for dictionaries (they look a lot like json objects).~
** Processing line: ~ # Ruby also has a special type called a Symbol denoted with a : followed by a word.~
** Processing line: ~ # Symbols are nice because they remove the need for magic strings.~
** Processing line: ~ if !args.state.items~
** Processing line: ~ args.state.items = [~
** Processing line: ~ {~
** Processing line: ~ id: :wood, # :wood is a Symbol, this is better than using "wood" for the id~
** Processing line: ~ quantity: 15,~
** Processing line: ~ path: 'sprites/wood.png',~
** Processing line: ~ location: :inventory,~
** Processing line: ~ ordinal_x: 0, ordinal_y: 0~
** Processing line: ~ },~
** Processing line: ~ {~
** Processing line: ~ id: :chest,~
** Processing line: ~ quantity: 1,~
** Processing line: ~ path: 'sprites/chest.png',~
** Processing line: ~ location: :inventory,~
** Processing line: ~ ordinal_x: 1, ordinal_y: 0~
** Processing line: ~ },~
** Processing line: ~ {~
** Processing line: ~ id: :plank,~
** Processing line: ~ quantity: 5,~
** Processing line: ~ path: 'sprites/plank.png',~
** Processing line: ~ location: :inventory,~
** Processing line: ~ ordinal_x: 2, ordinal_y: 0~
** Processing line: ~ },~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ # after initializing the oridinal positions, derive the pixel~
** Processing line: ~ # locations assuming that the width and height are 80~
** Processing line: ~ args.state.items.each { |item| set_inventory_position args, item }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # define all the oridinal positions of the inventory slots~
** Processing line: ~ if !args.state.inventory_area~
** Processing line: ~ args.state.inventory_area = [~
** 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: 0, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 1, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 2, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 3, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 4, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 5, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 6, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 7, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 8, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 9, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 0, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 1, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 2, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 3, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 4, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 5, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 6, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 7, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 8, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 9, ordinal_y: 2 },~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ # after initializing the oridinal positions, derive the pixel~
** Processing line: ~ # locations assuming that the width and height are 80~
** Processing line: ~ args.state.inventory_area.each { |i| set_inventory_position args, i }~
** Processing line: ~~
** Processing line: ~ # if you want to see the result you can use the Ruby function called "puts".~
** Processing line: ~ # Uncomment this line to see the value.~
** Processing line: ~ # puts args.state.inventory_area~
** Processing line: ~~
** Processing line: ~ # You can see all things written via puts in DragonRuby's Console, or under logs/log.txt.~
** Processing line: ~ # To bring up DragonRuby's Console, press the ~ key within the game.~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # define all the oridinal positions of the craft slots~
** Processing line: ~ if !args.state.craft_area~
** Processing line: ~ args.state.craft_area = [~
** Processing line: ~ { ordinal_x: 0, ordinal_y: 0 },~
** Processing line: ~ { ordinal_x: 0, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 0, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 1, ordinal_y: 0 },~
** Processing line: ~ { ordinal_x: 1, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 1, ordinal_y: 2 },~
** Processing line: ~ { ordinal_x: 2, ordinal_y: 0 },~
** Processing line: ~ { ordinal_x: 2, ordinal_y: 1 },~
** Processing line: ~ { ordinal_x: 2, ordinal_y: 2 },~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ # after initializing the oridinal positions, derive the pixel~
** Processing line: ~ # locations assuming that the width and height are 80~
** Processing line: ~ args.state.craft_area.each { |c| set_craft_position args, c }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ def render args~
** Processing line: ~ # for the results area, create a sprite that show its boundaries~
** Processing line: ~ args.outputs.primitives << { x: args.state.result_border.x,~
** Processing line: ~ y: args.state.result_border.y,~
** Processing line: ~ w: args.state.result_border.w,~
** Processing line: ~ h: args.state.result_border.h,~
** Processing line: ~ path: 'sprites/border-black.png' }~
** Processing line: ~~
** Processing line: ~ # for each inventory spot, create a sprite~
** Processing line: ~ # args.outputs.primitives is how DragonRuby performs a render.~
** Processing line: ~ # Adding a single hash or multiple hashes to this array will tell~
** Processing line: ~ # DragonRuby to render those primitives on that frame.~
** Processing line: ~~
** Processing line: ~ # The .map function on Array is used instead of any kind of looping.~
** Processing line: ~ # .map returns a new object for every object within an Array.~
** Processing line: ~ args.outputs.primitives << args.state.inventory_area.map do |a|~
** Processing line: ~ { x: a.x, y: a.y, w: a.w, h: a.h, path: 'sprites/border-black.png' }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # for each craft spot, create a sprite~
** Processing line: ~ args.outputs.primitives << args.state.craft_area.map do |a|~
** Processing line: ~ { x: a.x, y: a.y, w: a.w, h: a.h, path: 'sprites/border-black.png' }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # after the borders have been rendered, render the~
** Processing line: ~ # items within those slots (and allow for highlighting)~
** Processing line: ~ # if an item isn't currently being held~
** Processing line: ~ allow_inventory_highlighting = !args.state.held_item~
** Processing line: ~~
** Processing line: ~ # go through each item and render them~
** Processing line: ~ # use Array's find_all method to remove any items that are currently being held~
** Processing line: ~ args.state.items.find_all { |item| item[:location] != :held }.map do |item|~
** Processing line: ~ # if an item is currently being held, don't render it in it's spot within the~
** Processing line: ~ # inventory or craft area (this is handled via the find_all method).~
** Processing line: ~~
** Processing line: ~ # the item_prefab returns a hash containing all the visual components of an item.~
** Processing line: ~ # the main sprite, the black background, the quantity text, and a hover indication~
** Processing line: ~ # if the mouse is currently hovering over the item.~
** Processing line: ~ args.outputs.primitives << item_prefab(args, item, allow_inventory_highlighting, args.inputs.mouse)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The last thing we want to render is the item currently being held.~
** Processing line: ~ args.outputs.primitives << item_prefab(args, args.state.held_item, allow_inventory_highlighting, args.inputs.mouse)~
** Processing line: ~~
** Processing line: ~ args.outputs.primitives << args.state.click_ripples~
** Processing line: ~~
** Processing line: ~ # render a mouse cursor since we have the OS cursor hidden~
** Processing line: ~ args.outputs.primitives << { x: args.inputs.mouse.x - 5, y: args.inputs.mouse.y - 5, w: 10, h: 10, path: 'sprites/circle-gray.png', a: 128 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Alrighty! This is where all the fun happens~
** Processing line: ~ def input args~
** Processing line: ~ # if the mouse is clicked and not item is currently being held~
** Processing line: ~ # args.state.held_item is nil when the game starts.~
** Processing line: ~ # If the player clicks, the property args.inputs.mouse.click will~
** Processing line: ~ # be a non nil value, we don't want to process any of the code here~
** Processing line: ~ # if the mouse hasn't been clicked~
** Processing line: ~ return if !args.inputs.mouse.click~
** Processing line: ~~
** Processing line: ~ # if a click occurred, add a ripple to the ripple queue~
** Processing line: ~ args.state.click_ripples << { x: args.inputs.mouse.x - 5, y: args.inputs.mouse.y - 5, w: 10, h: 10, path: 'sprites/circle-gray.png', a: 128 }~
** Processing line: ~~
** Processing line: ~ # if the mouse has been clicked, and no item is currently held...~
** Processing line: ~ if !args.state.held_item~
** Processing line: ~ # see if any of the items intersect the pointer using the inside_rect? method~
** Processing line: ~ # the find method will either return the first object that returns true~
** Processing line: ~ # for the match clause, or it'll return nil if nothing matches the match clause~
** Processing line: ~ found = args.state.items.find do |item|~
** Processing line: ~ # for each item in args.state.items, run the following boolean check~
** Processing line: ~ args.inputs.mouse.click.point.inside_rect?(item)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if an item intersects the mouse pointer, then set the item's location to :held and~
** Processing line: ~ # set args.state.held_item to the item for later reference~
** Processing line: ~ if found~
** Processing line: ~ args.state.held_item = found~
** Processing line: ~ found[:location] = :held~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if the mouse is clicked and an item is currently beign held....~
** Processing line: ~ elsif args.state.held_item~
** Processing line: ~ # determine if a slot within the craft area was clicked~
** Processing line: ~ craft_area = args.state.craft_area.find { |a| args.inputs.mouse.click.point.inside_rect? a }~
** Processing line: ~~
** Processing line: ~ # also determine if a slot within the inventory area was clicked~
** Processing line: ~ inventory_area = args.state.inventory_area.find { |a| args.inputs.mouse.click.point.inside_rect? a }~
** Processing line: ~~
** Processing line: ~ # if the click was within a craft area~
** Processing line: ~ if craft_area~
** Processing line: ~ # check to see if an item is already there and ignore the click if an item is found~
** Processing line: ~ # item_at_craft_slot is a helper method that returns an item or nil for a given oridinal~
** Processing line: ~ # position~
** Processing line: ~ item_already_there = item_at_craft_slot args, craft_area[:ordinal_x], craft_area[:ordinal_y]~
** Processing line: ~~
** Processing line: ~ # if an item *doesn't* exist in the craft area~
** Processing line: ~ if !item_already_there~
** Processing line: ~ # if the quantity they are currently holding is greater than 1~
** Processing line: ~ if args.state.held_item[:quantity] > 1~
** Processing line: ~ # remove one item (creating a seperate item of the same type), and place it~
** Processing line: ~ # at the oridinal position and location of the craft area~
** Processing line: ~ # the .merge method on Hash creates a new Hash, but updates any values~
** Processing line: ~ # passed as arguments to merge~
** Processing line: ~ new_item = args.state.held_item.merge(quantity: 1,~
** Processing line: ~ location: :craft,~
** Processing line: ~ ordinal_x: craft_area[:ordinal_x],~
** Processing line: ~ ordinal_y: craft_area[:ordinal_y])~
** Processing line: ~~
** Processing line: ~ # after the item is crated, place it into the args.state.items collection~
** Processing line: ~ args.state.items << new_item~
** Processing line: ~~
** Processing line: ~ # then subtract one from the held item~
** Processing line: ~ args.state.held_item[:quantity] -= 1~
** Processing line: ~~
** Processing line: ~ # if the craft area is available and there is only one item being held~
** Processing line: ~ elsif args.state.held_item[:quantity] == 1~
** Processing line: ~ # instead of creating any new items just set the location of the held item~
** Processing line: ~ # to the oridinal position of the craft area, and then nil out the~
** Processing line: ~ # held item state so that a new item can be picked up~
** Processing line: ~ args.state.held_item[:location] = :craft~
** Processing line: ~ args.state.held_item[:ordinal_x] = craft_area[:ordinal_x]~
** Processing line: ~ args.state.held_item[:ordinal_y] = craft_area[:ordinal_y]~
** Processing line: ~ args.state.held_item = nil~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if the selected area is an inventory area (as opposed to within the craft area)~
** Processing line: ~ elsif inventory_area~
** Processing line: ~~
** Processing line: ~ # check to see if there is already an item in that inventory slot~
** Processing line: ~ # the item_at_inventory_slot helper method returns an item or nil~
** Processing line: ~ item_already_there = item_at_inventory_slot args, inventory_area[:ordinal_x], inventory_area[:ordinal_y]~
** Processing line: ~~
** Processing line: ~ # if there is already an item there, and the item types/id match~
** Processing line: ~ if item_already_there && item_already_there[:id] == args.state.held_item[:id]~
** Processing line: ~ # then merge the item quantities~
** Processing line: ~ held_quantity = args.state.held_item[:quantity]~
** Processing line: ~ item_already_there[:quantity] += held_quantity~
** Processing line: ~~
** Processing line: ~ # remove the item being held from the items collection (since it's quantity is now 0)~
** Processing line: ~ args.state.items.reject! { |i| i[:location] == :held }~
** Processing line: ~~
** Processing line: ~ # nil out the held_item so a new item can be picked up~
** Processing line: ~ args.state.held_item = nil~
** Processing line: ~~
** Processing line: ~ # if there currently isn't an item there, then put the held item in the slot~
** Processing line: ~ elsif !item_already_there~
** Processing line: ~ args.state.held_item[:location] = :inventory~
** Processing line: ~ args.state.held_item[:ordinal_x] = inventory_area[:ordinal_x]~
** Processing line: ~ args.state.held_item[:ordinal_y] = inventory_area[:ordinal_y]~
** Processing line: ~~
** Processing line: ~ # nil out the held_item so a new item can be picked up~
** Processing line: ~ args.state.held_item = nil~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # the calc method is executed after input~
** Processing line: ~ def calc args~
** Processing line: ~ # make sure that the real position of the inventory~
** Processing line: ~ # items are updated every frame to ensure that they~
** Processing line: ~ # are placed correctly given their location and oridinal positions~
** Processing line: ~ # instead of using .map, here we use .each (since we are not returning a new item and just updating the items in place)~
** Processing line: ~ args.state.items.each do |item|~
** Processing line: ~ # based on the location of the item, invoke the correct pixel conversion method~
** Processing line: ~ if item[:location] == :inventory~
** Processing line: ~ set_inventory_position args, item~
** Processing line: ~ elsif item[:location] == :craft~
** Processing line: ~ set_craft_position args, item~
** Processing line: ~ elsif item[:location] == :held~
** Processing line: ~ # if the item is held, center the item around the mouse pointer~
** Processing line: ~ args.state.held_item.x = args.inputs.mouse.x - args.state.held_item.w.half~
** Processing line: ~ args.state.held_item.y = args.inputs.mouse.y - args.state.held_item.h.half~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # for each hash/sprite in the click ripples queue,~
** Processing line: ~ # expand its size by 20 percent and decrease its alpha~
** Processing line: ~ # by 10.~
** Processing line: ~ args.state.click_ripples.each do |ripple|~
** Processing line: ~ delta_w = ripple.w * 1.2 - ripple.w~
** Processing line: ~ delta_h = ripple.h * 1.2 - ripple.h~
** Processing line: ~ ripple.x -= delta_w.half~
** Processing line: ~ ripple.y -= delta_h.half~
** Processing line: ~ ripple.w += delta_w~
** Processing line: ~ ripple.h += delta_h~
** Processing line: ~ ripple.a -= 10~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # remove any items from the collection where the alpha value is less than equal to~
** Processing line: ~ # zero using the reject! method (reject with an exclamation point at the end changes the~
** Processing line: ~ # array value in place, while reject without the exclamation point returns a new array).~
** Processing line: ~ args.state.click_ripples.reject! { |ripple| ripple.a <= 0 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # helper function for finding an item at a craft slot~
** Processing line: ~ def item_at_craft_slot args, ordinal_x, ordinal_y~
** Processing line: ~ args.state.items.find { |i| i[:location] == :craft && i[:ordinal_x] == ordinal_x && i[:ordinal_y] == ordinal_y }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # helper function for finding an item at an inventory slot~
** Processing line: ~ def item_at_inventory_slot args, ordinal_x, ordinal_y~
** Processing line: ~ args.state.items.find { |i| i[:location] == :inventory && i[:ordinal_x] == ordinal_x && i[:ordinal_y] == ordinal_y }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # helper function that creates a visual representation of an item~
** Processing line: ~ def item_prefab args, item, should_highlight, mouse~
** Processing line: ~ return nil unless item~
** Processing line: ~~
** Processing line: ~ overlay = nil~
** Processing line: ~~
** Processing line: ~ x = item.x~
** Processing line: ~ y = item.y~
** Processing line: ~ w = item.w~
** Processing line: ~ h = item.h~
** Processing line: ~~
** Processing line: ~ if should_highlight && mouse.point.inside_rect?(item)~
** Processing line: ~ overlay = { x: x, y: y, w: w, h: h, path: "sprites/square-blue.png", a: 130, }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ [~
** Processing line: ~ # sprites are hashes with a path property, this is the main sprite~
** Processing line: ~ { x: x, y: y, w: args.state.sprite_size, h: args.state.sprite_size, path: item[:path], },~
** Processing line: ~~
** Processing line: ~ # this represents the black area in the bottom right corner of the main sprite so that the~
** Processing line: ~ # quantity is visible~
** Processing line: ~ { x: x + 55, y: y, w: 25, h: 25, path: "sprites/square-black.png", }, # sprites are hashes with a path property~
** Processing line: ~~
** Processing line: ~ # labels are hashes with a text property~
** Processing line: ~ { x: x + 56, y: y + 22, text: "#{item[:quantity]}", r: 255, g: 255, b: 255, },~
** Processing line: ~~
** Processing line: ~ # this is the mouse overlay, if the overlay isn't applicable, then this value will be nil (nil values will not be rendered)~
** Processing line: ~ overlay~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # helper function for deriving the position of an item within inventory~
** Processing line: ~ def set_inventory_position args, item~
** Processing line: ~ item.x = args.state.inventory_border.x + item[:ordinal_x] * 80~
** Processing line: ~ item.y = (args.state.inventory_border.y + args.state.inventory_border.h - 80) - item[:ordinal_y] * 80~
** Processing line: ~ item.w = 80~
** Processing line: ~ item.h = 80~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # helper function for deriving the position of an item within the craft area~
** Processing line: ~ def set_craft_position args, item~
** Processing line: ~ item.x = args.state.craft_border.x + item[:ordinal_x] * 80~
** Processing line: ~ item.y = (args.state.craft_border.y + args.state.inventory_border.h - 80) - item[:ordinal_y] * 80~
** Processing line: ~ item.w = 80~
** Processing line: ~ item.h = 80~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Any lines outside of a function will be executed when the file is reloaded.~
** Processing line: ~ # So every time you save main.rb, the game will be reset.~
** Processing line: ~ # Comment out the line below if you don't want this to happen.~
** Processing line: ~ $gtk.reset~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Dev Tools - Add Buttons To Console - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Dev Tools - Add Buttons To Console - 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_dev_tools/add_buttons_to_console/app/main.rb~
** Processing line: ~ # You can customize the buttons that show up in the Console.~
** Processing line: ~ class GTK::Console::Menu~
** Processing line: ~ # STEP 1: Override the custom_buttons function.~
** Processing line: ~ def custom_buttons~
** Processing line: ~ [~
** Processing line: ~ (button id: :yay,~
** Processing line: ~ # row for button~
** Processing line: ~ row: 3,~
** Processing line: ~ # column for button~
** Processing line: ~ col: 10,~
** Processing line: ~ # text~
** Processing line: ~ text: "I AM CUSTOM",~
** Processing line: ~ # when clicked call the custom_button_clicked function~
** Processing line: ~ method: :custom_button_clicked),~
** Processing line: ~~
** Processing line: ~ (button id: :yay,~
** Processing line: ~ # row for button~
** Processing line: ~ row: 3,~
** Processing line: ~ # column for button~
** Processing line: ~ col: 9,~
** Processing line: ~ # text~
** Processing line: ~ text: "CUSTOM ALSO",~
** Processing line: ~ # when clicked call the custom_button_also_clicked function~
** Processing line: ~ method: :custom_button_also_clicked)~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # STEP 2: Define the function that should be called.~
** Processing line: ~ def custom_button_clicked~
** Processing line: ~ log "* INFO: I AM CUSTOM was clicked!"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def custom_button_also_clicked~
** Processing line: ~ log "* INFO: Custom Button Clicked at #{Kernel.global_tick_count}!"~
** Processing line: ~~
** Processing line: ~ all_buttons_as_string = $gtk.console.menu.buttons.map do |b|~
** Processing line: ~ <<-S.strip~
** Processing line: ~ ** id: #{b[:id]}~
** Processing line: ~ :PROPERTIES:~
** Processing line: ~ :id: :#{b[:id]}~
** Processing line: ~ :method: :#{b[:method]}~
** Processing line: ~ :text: #{b[:text]}~
** Processing line: ~ :END:~
** Processing line: ~ S~
** Processing line: ~ end.join("\n")~
** Processing line: ~~
** Processing line: ~ log <<-S~
** Processing line: ~ * INFO: Here are all the buttons:~
** Processing line: ~ #{all_buttons_as_string}~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.labels << [args.grid.center.x, args.grid.center.y,~
** Processing line: ~ "Open the DragonRuby Console to see the custom menu items.",~
** Processing line: ~ 0, 1]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Dev Tools - Animation Creator Starting Point - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Dev Tools - Animation Creator 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_dev_tools/animation_creator_starting_point/app/main.rb~
** Processing line: ~ class OneBitLowrezPaint~
** Processing line: ~ attr_gtk~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ outputs.background_color = [0, 0, 0]~
** Processing line: ~ defaults~
** Processing line: ~ render_instructions~
** Processing line: ~ render_canvas~
** Processing line: ~ render_buttons_frame_selection~
** Processing line: ~ render_animation_frame_thumbnails~
** Processing line: ~ render_animation~
** Processing line: ~ input_mouse_click~
** Processing line: ~ input_keyboard~
** Processing line: ~ calc_auto_export~
** Processing line: ~ calc_buttons_frame_selection~
** Processing line: ~ calc_animation_frames~
** Processing line: ~ process_queue_create_sprite~
** Processing line: ~ process_queue_reset_sprite~
** Processing line: ~ process_queue_update_rt_animation_frame~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults~
** Processing line: ~ state.animation_frames_per_second = 12~
** Processing line: ~ queues.create_sprite ||= []~
** Processing line: ~ queues.reset_sprite ||= []~
** Processing line: ~ queues.update_rt_animation_frame ||= []~
** Processing line: ~~
** Processing line: ~ if !state.animation_frames~
** Processing line: ~ state.animation_frames ||= []~
** Processing line: ~ add_animation_frame_to_end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.last_mouse_down ||= 0~
** Processing line: ~ state.last_mouse_up ||= 0~
** Processing line: ~~
** Processing line: ~ state.buttons_frame_selection.left = 10~
** Processing line: ~ state.buttons_frame_selection.top = grid.top - 10~
** Processing line: ~ state.buttons_frame_selection.size = 20~
** Processing line: ~~
** Processing line: ~ defaults_canvas_sprite~
** Processing line: ~~
** Processing line: ~ state.edit_mode ||= :drawing~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults_canvas_sprite~
** Processing line: ~ rt_canvas.size = 16~
** Processing line: ~ rt_canvas.zoom = 30~
** Processing line: ~ rt_canvas.width = rt_canvas.size * rt_canvas.zoom~
** Processing line: ~ rt_canvas.height = rt_canvas.size * rt_canvas.zoom~
** Processing line: ~ rt_canvas.sprite = { x: 0,~
** Processing line: ~ y: 0,~
** Processing line: ~ w: rt_canvas.width,~
** Processing line: ~ h: rt_canvas.height,~
** Processing line: ~ path: :rt_canvas }.center_inside_rect(x: 0, y: 0, w: 640, h: 720)~
** Processing line: ~~
** Processing line: ~ return unless state.tick_count == 1~
** Processing line: ~~
** Processing line: ~ outputs[:rt_canvas].width = rt_canvas.width~
** Processing line: ~ outputs[:rt_canvas].height = rt_canvas.height~
** Processing line: ~ outputs[:rt_canvas].sprites << (rt_canvas.size + 1).map_with_index do |x|~
** Processing line: ~ (rt_canvas.size + 1).map_with_index do |y|~
** Processing line: ~ path = 'sprites/square-white.png'~
** Processing line: ~ path = 'sprites/square-blue.png' if x == 7 || x == 8~
** Processing line: ~ { x: x * rt_canvas.zoom,~
** Processing line: ~ y: y * rt_canvas.zoom,~
** Processing line: ~ w: rt_canvas.zoom,~
** Processing line: ~ h: rt_canvas.zoom,~
** Processing line: ~ path: path,~
** Processing line: ~ a: 50 }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_instructions~
** Processing line: ~ instructions = <<-S~
** Processing line: ~ * Instructions:~
** Processing line: ~ - All data is stored in the ~canvas~ directory.~
** Processing line: ~ - Hold ~d~ to set the edit mode to erase.~
** Processing line: ~ - Release ~d~ to set the edit mode drawing.~
** Processing line: ~ - Press ~a~ to added a frame to the end.~
** Processing line: ~ - Press ~b~ to select the previous frame.~
** Processing line: ~ - Press ~f~ to select the next frame.~
** Processing line: ~ - Press ~c~ to copy a frame.~
** Processing line: ~ - Press ~v~ to paste a copied frame into the selected frame.~
** Processing line: ~ - Press ~x~ to delete the currently selected frame.~
** Processing line: ~ - Press ~w~ to save the canvas and export all sprites.~
** Processing line: ~ - Press ~l~ to load the canvas.~
** Processing line: ~ S~
** Processing line: ~~
** Processing line: ~ instructions.strip.each_line.with_index do |l, i|~
** Processing line: ~ outputs.labels << { x: 840, y: 500 - (i * 20), text: "#{l}",~
** Processing line: ~ r: 180, g: 180, b: 180, size_enum: -3 }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_canvas~
** Processing line: ~ return if state.tick_count.zero?~
** Processing line: ~ outputs.sprites << rt_canvas.sprite~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_buttons_frame_selection~
** Processing line: ~ args.outputs.primitives << state.buttons_frame_selection.items.map_with_index do |b, i|~
** Processing line: ~ label = { x: b.x + state.buttons_frame_selection.size.half,~
** Processing line: ~ y: b.y,~
** Processing line: ~ text: "#{i + 1}", r: 180, g: 180, b: 180,~
** Processing line: ~ size_enum: -4, alignment_enum: 1 }.label~
** Processing line: ~~
** Processing line: ~ selection_border = b.merge(r: 40, g: 40, b: 40).border~
** Processing line: ~~
** Processing line: ~ if i == state.animation_frames_selected_index~
** Processing line: ~ selection_border = b.merge(r: 40, g: 230, b: 200).border~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ [selection_border, label]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_animation_frame_thumbnails~
** Processing line: ~ return if state.tick_count.zero?~
** Processing line: ~~
** Processing line: ~ outputs[:current_animation_frame].width = rt_canvas.size~
** Processing line: ~ outputs[:current_animation_frame].height = rt_canvas.size~
** Processing line: ~ outputs[:current_animation_frame].solids << selected_animation_frame[:pixels].map_with_index do |f, i|~
** Processing line: ~ { x: f.x,~
** Processing line: ~ y: f.y,~
** Processing line: ~ w: 1,~
** Processing line: ~ h: 1, r: 255, g: 255, b: 255 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.sprites << rt_canvas.sprite.merge(path: :current_animation_frame)~
** Processing line: ~~
** Processing line: ~ state.animation_frames.map_with_index do |animation_frame, animation_frame_index|~
** Processing line: ~ outputs.sprites << state.buttons_frame_selection[:items][animation_frame_index][:inner_rect]~
** Processing line: ~ .merge(path: animation_frame[:rt_name])~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_animation~
** Processing line: ~ sprite_index = 0.frame_index count: state.animation_frames.length,~
** Processing line: ~ hold_for: 60 / state.animation_frames_per_second,~
** Processing line: ~ repeat: true~
** Processing line: ~~
** Processing line: ~ args.outputs.sprites << { x: 700 - 8,~
** Processing line: ~ y: 120,~
** Processing line: ~ w: 16,~
** Processing line: ~ h: 16,~
** Processing line: ~ path: (sprite_path sprite_index) }~
** Processing line: ~~
** Processing line: ~ args.outputs.sprites << { x: 700 - 16,~
** Processing line: ~ y: 230,~
** Processing line: ~ w: 32,~
** Processing line: ~ h: 32,~
** Processing line: ~ path: (sprite_path sprite_index) }~
** Processing line: ~~
** Processing line: ~ args.outputs.sprites << { x: 700 - 32,~
** Processing line: ~ y: 360,~
** Processing line: ~ w: 64,~
** Processing line: ~ h: 64,~
** Processing line: ~ path: (sprite_path sprite_index) }~
** Processing line: ~~
** Processing line: ~ args.outputs.sprites << { x: 700 - 64,~
** Processing line: ~ y: 520,~
** Processing line: ~ w: 128,~
** Processing line: ~ h: 128,~
** Processing line: ~ path: (sprite_path sprite_index) }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_mouse_click~
** Processing line: ~ if inputs.mouse.up~
** Processing line: ~ state.last_mouse_up = state.tick_count~
** Processing line: ~ elsif inputs.mouse.moved && user_is_editing?~
** Processing line: ~ edit_current_animation_frame inputs.mouse.point~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return unless inputs.mouse.click~
** Processing line: ~~
** Processing line: ~ clicked_frame_button = state.buttons_frame_selection.items.find do |b|~
** Processing line: ~ inputs.mouse.point.inside_rect? b~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if (clicked_frame_button)~
** Processing line: ~ state.animation_frames_selected_index = clicked_frame_button[:index]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if (inputs.mouse.point.inside_rect? rt_canvas.sprite)~
** Processing line: ~ state.last_mouse_down = state.tick_count~
** Processing line: ~ edit_current_animation_frame inputs.mouse.point~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_keyboard~
** Processing line: ~ # w to save~
** Processing line: ~ if inputs.keyboard.key_down.w~
** Processing line: ~ t = Time.now~
** Processing line: ~ state.save_description = "Time: #{t} (#{t.to_i})"~
** Processing line: ~ gtk.serialize_state 'canvas/state.txt', state~
** Processing line: ~ gtk.serialize_state "tmp/canvas_backups/#{t.to_i}/state.txt", state~
** Processing line: ~ animation_frames.each_with_index do |animation_frame, i|~
** Processing line: ~ queues.update_rt_animation_frame << { index: i,~
** Processing line: ~ at: state.tick_count + i,~
** Processing line: ~ queue_sprite_creation: true }~
** Processing line: ~ queues.create_sprite << { index: i,~
** Processing line: ~ at: state.tick_count + animation_frames.length + i,~
** Processing line: ~ path_override: "tmp/canvas_backups/#{t.to_i}/sprite-#{i}.png" }~
** Processing line: ~ end~
** Processing line: ~ gtk.notify! "Canvas saved."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # l to load~
** Processing line: ~ if inputs.keyboard.key_down.l~
** Processing line: ~ args.state = gtk.deserialize_state 'canvas/state.txt'~
** Processing line: ~ animation_frames.each_with_index do |a, i|~
** Processing line: ~ queues.update_rt_animation_frame << { index: i,~
** Processing line: ~ at: state.tick_count + i,~
** Processing line: ~ queue_sprite_creation: true }~
** Processing line: ~ end~
** Processing line: ~ gtk.notify! "Canvas loaded."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # d to go into delete mode, release to paint~
** Processing line: ~ if inputs.keyboard.key_held.d~
** Processing line: ~ state.edit_mode = :erasing~
** Processing line: ~ gtk.notify! "Erasing." if inputs.keyboard.key_held.d == (state.tick_count - 1)~
** Processing line: ~ elsif inputs.keyboard.key_up.d~
** Processing line: ~ state.edit_mode = :drawing~
** Processing line: ~ gtk.notify! "Drawing."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # a to add a frame to the end~
** Processing line: ~ if inputs.keyboard.key_down.a~
** Processing line: ~ queues.create_sprite << { index: state.animation_frames_selected_index,~
** Processing line: ~ at: state.tick_count }~
** Processing line: ~ queues.create_sprite << { index: state.animation_frames_selected_index + 1,~
** Processing line: ~ at: state.tick_count }~
** Processing line: ~ add_animation_frame_to_end~
** Processing line: ~ gtk.notify! "Frame added to end."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # c or t to copy~
** Processing line: ~ if (inputs.keyboard.key_down.c || inputs.keyboard.key_down.t)~
** Processing line: ~ state.clipboard = [selected_animation_frame[:pixels]].flatten~
** Processing line: ~ gtk.notify! "Current frame copied."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # v or q to paste~
** Processing line: ~ if (inputs.keyboard.key_down.v || inputs.keyboard.key_down.q) && state.clipboard~
** Processing line: ~ selected_animation_frame[:pixels] = [state.clipboard].flatten~
** Processing line: ~ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,~
** Processing line: ~ at: state.tick_count,~
** Processing line: ~ queue_sprite_creation: true }~
** Processing line: ~ gtk.notify! "Pasted."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # f to go forward/next frame~
** Processing line: ~ if (inputs.keyboard.key_down.f)~
** Processing line: ~ if (state.animation_frames_selected_index == (state.animation_frames.length - 1))~
** Processing line: ~ state.animation_frames_selected_index = 0~
** Processing line: ~ else~
** Processing line: ~ state.animation_frames_selected_index += 1~
** Processing line: ~ end~
** Processing line: ~ gtk.notify! "Next frame."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # b to go back/previous frame~
** Processing line: ~ if (inputs.keyboard.key_down.b)~
** Processing line: ~ if (state.animation_frames_selected_index == 0)~
** Processing line: ~ state.animation_frames_selected_index = state.animation_frames.length - 1~
** Processing line: ~ else~
** Processing line: ~ state.animation_frames_selected_index -= 1~
** Processing line: ~ end~
** Processing line: ~ gtk.notify! "Previous frame."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # x to delete frame~
** Processing line: ~ if (inputs.keyboard.key_down.x) && animation_frames.length > 1~
** Processing line: ~ state.clipboard = selected_animation_frame[:pixels]~
** Processing line: ~ state.animation_frames = animation_frames.find_all { |v| v[:index] != state.animation_frames_selected_index }~
** Processing line: ~ if state.animation_frames_selected_index >= state.animation_frames.length~
** Processing line: ~ state.animation_frames_selected_index = state.animation_frames.length - 1~
** Processing line: ~ end~
** Processing line: ~ gtk.notify! "Frame deleted."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_auto_export~
** Processing line: ~ return if user_is_editing?~
** Processing line: ~ return if state.last_mouse_up.elapsed_time != 30~
** Processing line: ~ # auto export current animation frame if there is no editing for 30 ticks~
** Processing line: ~ queues.create_sprite << { index: state.animation_frames_selected_index,~
** Processing line: ~ at: state.tick_count }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_buttons_frame_selection~
** Processing line: ~ state.buttons_frame_selection.items = animation_frames.length.map_with_index do |i|~
** Processing line: ~ { x: state.buttons_frame_selection.left + i * state.buttons_frame_selection.size,~
** Processing line: ~ y: state.buttons_frame_selection.top - state.buttons_frame_selection.size,~
** Processing line: ~ inner_rect: {~
** Processing line: ~ x: (state.buttons_frame_selection.left + 2) + i * state.buttons_frame_selection.size,~
** Processing line: ~ y: (state.buttons_frame_selection.top - state.buttons_frame_selection.size + 2),~
** Processing line: ~ w: 16,~
** Processing line: ~ h: 16,~
** Processing line: ~ },~
** Processing line: ~ w: state.buttons_frame_selection.size,~
** Processing line: ~ h: state.buttons_frame_selection.size,~
** Processing line: ~ index: i }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_animation_frames~
** Processing line: ~ animation_frames.each_with_index do |animation_frame, i|~
** Processing line: ~ animation_frame[:index] = i~
** Processing line: ~ animation_frame[:rt_name] = "animation_frame_#{i}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_queue_create_sprite~
** Processing line: ~ sprites_to_create = queues.create_sprite~
** Processing line: ~ .find_all { |h| h[:at].elapsed? }~
** Processing line: ~~
** Processing line: ~ queues.create_sprite = queues.create_sprite - sprites_to_create~
** Processing line: ~~
** Processing line: ~ sprites_to_create.each do |h|~
** Processing line: ~ export_animation_frame h[:index], h[:path_override]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_queue_reset_sprite~
** Processing line: ~ sprites_to_reset = queues.reset_sprite~
** Processing line: ~ .find_all { |h| h[:at].elapsed? }~
** Processing line: ~~
** Processing line: ~ queues.reset_sprite -= sprites_to_reset~
** Processing line: ~~
** Processing line: ~ sprites_to_reset.each { |h| gtk.reset_sprite (sprite_path h[:index]) }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_queue_update_rt_animation_frame~
** Processing line: ~ animation_frames_to_update = queues.update_rt_animation_frame~
** Processing line: ~ .find_all { |h| h[:at].elapsed? }~
** Processing line: ~~
** Processing line: ~ queues.update_rt_animation_frame -= animation_frames_to_update~
** Processing line: ~~
** Processing line: ~ animation_frames_to_update.each do |h|~
** Processing line: ~ update_animation_frame_render_target animation_frames[h[:index]]~
** Processing line: ~~
** Processing line: ~ if h[:queue_sprite_creation]~
** Processing line: ~ queues.create_sprite << { index: h[:index],~
** Processing line: ~ at: state.tick_count + 1 }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def update_animation_frame_render_target animation_frame~
** Processing line: ~ return if !animation_frame~
** Processing line: ~~
** Processing line: ~ outputs[animation_frame[:rt_name]].width = state.rt_canvas.size~
** Processing line: ~ outputs[animation_frame[:rt_name]].height = state.rt_canvas.size~
** Processing line: ~ outputs[animation_frame[:rt_name]].solids << animation_frame[:pixels].map do |f|~
** Processing line: ~ { x: f.x,~
** Processing line: ~ y: f.y,~
** Processing line: ~ w: 1,~
** Processing line: ~ h: 1, r: 255, g: 255, b: 255 }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def animation_frames~
** Processing line: ~ state.animation_frames~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def add_animation_frame_to_end~
** Processing line: ~ animation_frames << {~
** Processing line: ~ index: animation_frames.length,~
** Processing line: ~ pixels: [],~
** Processing line: ~ rt_name: "animation_frame_#{animation_frames.length}"~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ state.animation_frames_selected_index = (animation_frames.length - 1)~
** Processing line: ~ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,~
** Processing line: ~ at: state.tick_count,~
** Processing line: ~ queue_sprite_creation: true }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def sprite_path i~
** Processing line: ~ "canvas/sprite-#{i}.png"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def export_animation_frame i, path_override = nil~
** Processing line: ~ return if !state.animation_frames[i]~
** Processing line: ~~
** Processing line: ~ outputs.screenshots << state.buttons_frame_selection~
** Processing line: ~ .items[i][:inner_rect]~
** Processing line: ~ .merge(path: path_override || (sprite_path i))~
** Processing line: ~~
** Processing line: ~ outputs.screenshots << state.buttons_frame_selection~
** Processing line: ~ .items[i][:inner_rect]~
** Processing line: ~ .merge(path: "tmp/sprite_backups/#{Time.now.to_i}-sprite-#{i}.png")~
** Processing line: ~~
** Processing line: ~ queues.reset_sprite << { index: i, at: state.tick_count }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def selected_animation_frame~
** Processing line: ~ state.animation_frames[state.animation_frames_selected_index]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def edit_current_animation_frame point~
** Processing line: ~ draw_area_point = (to_draw_area point)~
** Processing line: ~ if state.edit_mode == :drawing && (!selected_animation_frame[:pixels].include? draw_area_point)~
** Processing line: ~ selected_animation_frame[:pixels] << draw_area_point~
** Processing line: ~ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,~
** Processing line: ~ at: state.tick_count,~
** Processing line: ~ queue_sprite_creation: !user_is_editing? }~
** Processing line: ~ elsif state.edit_mode == :erasing && (selected_animation_frame[:pixels].include? draw_area_point)~
** Processing line: ~ selected_animation_frame[:pixels] = selected_animation_frame[:pixels].reject { |p| p == draw_area_point }~
** Processing line: ~ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,~
** Processing line: ~ at: state.tick_count,~
** Processing line: ~ queue_sprite_creation: !user_is_editing? }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def user_is_editing?~
** Processing line: ~ state.last_mouse_down > state.last_mouse_up~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_draw_area point~
** Processing line: ~ x, y = point~
** Processing line: ~ x -= rt_canvas.sprite.x~
** Processing line: ~ y -= rt_canvas.sprite.y~
** Processing line: ~ { x: x.idiv(rt_canvas.zoom),~
** Processing line: ~ y: y.idiv(rt_canvas.zoom) }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def rt_canvas~
** Processing line: ~ state.rt_canvas ||= state.new_entity(:rt_canvas)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def queues~
** Processing line: ~ state.queues ||= state.new_entity(:queues)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $game = OneBitLowrezPaint.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** 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: ~* Dev Tools - Tile Editor Starting Point - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Dev Tools - Tile Editor 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_dev_tools/tile_editor_starting_point/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - to_s: Returns a string representation of an object.~
** Processing line: ~ For example, if we had~
** Processing line: ~ 500.to_s~
** Processing line: ~ the string "500" would be returned.~
** Processing line: ~ Similar to to_i, which returns an integer representation of an object.~
** Processing line: ~~
** Processing line: ~ - Ceil: Returns an integer number greater than or equal to the original~
** Processing line: ~ with no decimal.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - ARRAY#inside_rect?: Returns true or false depending on if the point is inside a rect.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.sprites: An array. The values generate a sprite.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, IMAGE PATH]~
** Processing line: ~ For more information about sprites, go to mygame/documentation/05-sprites.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.solids: An array. The values generate a solid.~
** Processing line: ~ The parameters are [X, Y, WIDTH, HEIGHT, RED, GREEN, BLUE]~
** Processing line: ~ For more information about solids, go to mygame/documentation/03-solids-and-borders.md.~
** Processing line: ~~
** Processing line: ~ - args.outputs.lines: An array. The values generate a line.~
** Processing line: ~ The parameters are [X1, Y1, X2, Y2, RED, GREEN, BLUE]~
** Processing line: ~ For more information about lines, go to mygame/documentation/04-lines.md.~
** Processing line: ~~
** Processing line: ~ - args.state.new_entity: Used when we want to create a new object, like a sprite or button.~
** Processing line: ~ In this sample app, new_entity is used to create a new button that clears the grid.~
** Processing line: ~ (Remember, you can use state to define ANY property and it will be retained across frames.)~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app shows an empty grid that the user can paint in. There are different image tiles that~
** Processing line: ~ # the user can use to fill the grid, and the "Clear" button can be pressed to clear the grid boxes.~
** Processing line: ~~
** Processing line: ~ class TileEditor~
** Processing line: ~ attr_accessor :inputs, :state, :outputs, :grid, :args~
** Processing line: ~~
** Processing line: ~ # Runs all the methods necessary for the game to function properly.~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render~
** Processing line: ~ check_click~
** Processing line: ~ draw_buttons~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values~
** Processing line: ~ # Initialization only happens in the first frame~
** Processing line: ~ # NOTE: The values of some of these variables may seem confusingly large at first.~
** Processing line: ~ # The gridSize is 1600 but it seems a lot smaller on the screen, for example.~
** Processing line: ~ # But keep in mind that by using the "W", "A", "S", and "D" keys, you can~
** Processing line: ~ # move the grid's view in all four directions for more grid spaces.~
** Processing line: ~ def defaults~
** Processing line: ~ state.tileCords ||= []~
** Processing line: ~ state.tileQuantity ||= 6~
** Processing line: ~ state.tileSize ||= 50~
** Processing line: ~ state.tileSelected ||= 1~
** Processing line: ~ state.tempX ||= 50~
** Processing line: ~ state.tempY ||= 500~
** Processing line: ~ state.speed ||= 4~
** Processing line: ~ state.centerX ||= 4000~
** Processing line: ~ state.centerY ||= 4000~
** Processing line: ~ state.originalCenter ||= [state.centerX, state.centerY]~
** Processing line: ~ state.gridSize ||= 1600~
** Processing line: ~ state.lineQuantity ||= 50~
** Processing line: ~ state.increment ||= state.gridSize / state.lineQuantity~
** Processing line: ~ state.gridX ||= []~
** Processing line: ~ state.gridY ||= []~
** Processing line: ~ state.filled_squares ||= []~
** Processing line: ~ state.grid_border ||= [390, 140, 500, 500]~
** Processing line: ~~
** Processing line: ~ get_grid unless state.tempX == 0 # calls get_grid in the first frame only~
** Processing line: ~ determineTileCords unless state.tempX == 0 # calls determineTileCords in first frame~
** Processing line: ~ state.tempX = 0 # sets tempX to 0; the two methods aren't called again~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calculates the placement of lines or separators in the grid~
** Processing line: ~ def get_grid~
** Processing line: ~ curr_x = state.centerX - (state.gridSize / 2) # starts at left of grid~
** Processing line: ~ deltaX = state.gridSize / state.lineQuantity # finds distance to place vertical lines evenly through width of grid~
** Processing line: ~ (state.lineQuantity + 2).times do~
** Processing line: ~ state.gridX << curr_x # adds curr_x to gridX collection~
** Processing line: ~ curr_x += deltaX # increment curr_x by the distance between vertical lines~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ curr_y = state.centerY - (state.gridSize / 2) # starts at bottom of grid~
** Processing line: ~ deltaY = state.gridSize / state.lineQuantity # finds distance to place horizontal lines evenly through height of grid~
** Processing line: ~ (state.lineQuantity + 2).times do~
** Processing line: ~ state.gridY << curr_y # adds curr_y to gridY collection~
** Processing line: ~ curr_y += deltaY # increments curr_y to distance between horizontal lines~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Determines coordinate positions of patterned tiles (on the left side of the grid)~
** Processing line: ~ def determineTileCords~
** Processing line: ~ state.tempCounter ||= 1 # initializes tempCounter to 1~
** Processing line: ~ state.tileQuantity.times do # there are 6 different kinds of tiles~
** Processing line: ~ state.tileCords += [[state.tempX, state.tempY, state.tempCounter]] # adds tile definition to collection~
** Processing line: ~ state.tempX += 75 # increments tempX to put horizontal space between the patterned tiles~
** Processing line: ~ state.tempCounter += 1 # increments tempCounter~
** Processing line: ~ if state.tempX > 200 # if tempX exceeds 200 pixels~
** Processing line: ~ state.tempX = 50 # a new row of patterned tiles begins~
** Processing line: ~ state.tempY -= 75 # the new row is 75 pixels lower than the previous row~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs objects (grid, tiles, etc) onto the screen~
** Processing line: ~ def render~
** Processing line: ~ outputs.sprites << state.tileCords.map do # outputs tileCords collection using images in sprites folder~
** Processing line: ~ |x, y, order|~
** Processing line: ~ [x, y, state.tileSize, state.tileSize, 'sprites/image' + order.to_s + ".png"]~
** Processing line: ~ end~
** Processing line: ~ outputs.solids << [0, 0, 1280, 720, 255, 255, 255] # outputs white background~
** Processing line: ~ add_grid # outputs grid~
** Processing line: ~ print_title # outputs title and current tile pattern~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates a grid by outputting vertical and horizontal grid lines onto the screen.~
** Processing line: ~ # Outputs sprites for the filled_squares collection onto the screen.~
** Processing line: ~ def add_grid~
** Processing line: ~~
** Processing line: ~ # Outputs the grid's border.~
** Processing line: ~ outputs.borders << state.grid_border~
** Processing line: ~ temp = 0~
** Processing line: ~~
** Processing line: ~ # Before looking at the code that outputs the vertical and horizontal lines in the~
** Processing line: ~ # grid, take note of the fact that:~
** Processing line: ~ # grid_border[1] refers to the border's bottom line (running horizontally),~
** Processing line: ~ # grid_border[2] refers to the border's top line (running (horizontally),~
** Processing line: ~ # grid_border[0] refers to the border's left line (running vertically),~
** Processing line: ~ # and grid_border[3] refers to the border's right line (running vertically).~
** Processing line: ~~
** Processing line: ~ # [2]~
** Processing line: ~ # ----------~
** Processing line: ~ # | |~
** Processing line: ~ # [0] | | [3]~
** Processing line: ~ # | |~
** Processing line: ~ # ----------~
** Processing line: ~ # [1]~
** Processing line: ~~
** Processing line: ~ # Calculates the positions and outputs the x grid lines in the color gray.~
** Processing line: ~ state.gridX.map do # perform an action on all elements of the gridX collection~
** Processing line: ~ |x|~
** Processing line: ~ temp += 1 # increment temp~
** Processing line: ~~
** Processing line: ~ # if x's value is greater than (or equal to) the x value of the border's left side~
** Processing line: ~ # and less than (or equal to) the x value of the border's right side~
** Processing line: ~ if x >= state.centerX - (state.grid_border[2] / 2) && x <= state.centerX + (state.grid_border[2] / 2)~
** Processing line: ~ delta = state.centerX - 640~
** Processing line: ~ # vertical lines have the same starting and ending x positions~
** Processing line: ~ # starting y and ending y positions lead from the bottom of the border to the top of the border~
** Processing line: ~ outputs.lines << [x - delta, state.grid_border[1], x - delta, state.grid_border[1] + state.grid_border[2], 150, 150, 150] # sets definition of vertical line and outputs it~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ temp = 0~
** Processing line: ~~
** Processing line: ~ # Calculates the positions and outputs the y grid lines in the color gray.~
** Processing line: ~ state.gridY.map do # perform an action on all elements of the gridY collection~
** Processing line: ~ |y|~
** Processing line: ~ temp += 1 # increment temp~
** Processing line: ~~
** Processing line: ~ # if y's value is greater than (or equal to) the y value of the border's bottom side~
** Processing line: ~ # and less than (or equal to) the y value of the border's top side~
** Processing line: ~ if y >= state.centerY - (state.grid_border[3] / 2) && y <= state.centerY + (state.grid_border[3] / 2)~
** Processing line: ~ delta = state.centerY - 393~
** Processing line: ~ # horizontal lines have the same starting and ending y positions~
** Processing line: ~ # starting x and ending x positions lead from the left side of the border to the right side of the border~
** Processing line: ~ outputs.lines << [state.grid_border[0], y - delta, state.grid_border[0] + state.grid_border[3], y - delta, 150, 150, 150] # sets definition of horizontal line and outputs it~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets values and outputs sprites for the filled_squares collection.~
** Processing line: ~ state.filled_squares.map do # perform an action on every element of the filled_squares collection~
** Processing line: ~ |x, y, w, h, sprite|~
** Processing line: ~ # if x's value is greater than (or equal to) the x value of 17 pixels to the left of the border's left side~
** Processing line: ~ # and less than (or equal to) the x value of the border's right side~
** Processing line: ~ # and y's value is greater than (or equal to) the y value of the border's bottom side~
** Processing line: ~ # and less than (or equal to) the y value of 25 pixels above the border's top side~
** Processing line: ~ # NOTE: The allowance of 17 pixels and 25 pixels is due to the fact that a grid box may be slightly cut off or~
** Processing line: ~ # not entirely visible in the grid's view (until it is moved using "W", "A", "S", "D")~
** Processing line: ~ if x >= state.centerX - (state.grid_border[2] / 2) - 17 && x <= state.centerX + (state.grid_border[2] / 2) &&~
** Processing line: ~ y >= state.centerY - (state.grid_border[3] / 2) && y <= state.centerY + (state.grid_border[3] / 2) + 25~
** Processing line: ~ # calculations done to place sprites in grid spaces that are meant to filled in~
** Processing line: ~ # mess around with the x and y values and see how the sprite placement changes~
** Processing line: ~ outputs.sprites << [x - state.centerX + 630, y - state.centerY + 360, w, h, sprite]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # outputs a white solid along the left side of the grid (change the color and you'll be able to see it against the white background)~
** Processing line: ~ # state.increment subtracted in x parameter because solid's position is denoted by bottom left corner~
** Processing line: ~ # state.increment subtracted in y parameter to avoid covering the title label~
** Processing line: ~ outputs.primitives << [state.grid_border[0] - state.increment,~
** Processing line: ~ state.grid_border[1] - state.increment, state.increment, state.grid_border[3] + (state.increment * 2),~
** Processing line: ~ 255, 255, 255].solid~
** Processing line: ~~
** Processing line: ~ # outputs a white solid along the right side of the grid~
** Processing line: ~ # state.increment subtracted from y parameter to avoid covering title label~
** Processing line: ~ outputs.primitives << [state.grid_border[0] + state.grid_border[2],~
** Processing line: ~ state.grid_border[1] - state.increment, state.increment, state.grid_border[3] + (state.increment * 2),~
** Processing line: ~ 255, 255, 255].solid~
** Processing line: ~~
** Processing line: ~ # outputs a white solid along the bottom of the grid~
** Processing line: ~ # state.increment subtracted from y parameter to avoid covering last row of grid boxes~
** Processing line: ~ outputs.primitives << [state.grid_border[0] - state.increment, state.grid_border[1] - state.increment,~
** Processing line: ~ state.grid_border[2] + (2 * state.increment), state.increment, 255, 255, 255].solid~
** Processing line: ~~
** Processing line: ~ # outputs a white solid along the top of the grid~
** Processing line: ~ outputs.primitives << [state.grid_border[0] - state.increment, state.grid_border[1] + state.grid_border[3],~
** Processing line: ~ state.grid_border[2] + (2 * state.increment), state.increment, 255, 255, 255].solid~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs title and current tile pattern~
** Processing line: ~ def print_title~
** Processing line: ~ outputs.labels << [640, 700, 'Mouse to Place Tile, WASD to Move Around', 7, 1] # title label~
** Processing line: ~ outputs.lines << horizontal_separator(660, 0, 1280) # outputs horizontal separator~
** Processing line: ~ outputs.labels << [1050, 500, 'Current:', 3, 1] # outputs Current label~
** Processing line: ~ outputs.sprites << [1110, 474, state.tileSize / 2, state.tileSize / 2, 'sprites/image' + state.tileSelected.to_s + ".png"] # outputs sprite of current tile pattern using images in sprites folder; output is half the size of a tile~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the starting position, ending position, and color for the horizontal separator.~
** Processing line: ~ def horizontal_separator y, x, x2~
** Processing line: ~ [x, y, x2, y, 150, 150, 150] # definition of separator; horizontal line means same starting/ending y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Checks if the mouse is being clicked or dragged~
** Processing line: ~ def check_click~
** Processing line: ~ if inputs.keyboard.key_down.r # if the "r" key is pressed down~
** Processing line: ~ $dragon.reset~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if inputs.mouse.down #is mouse up or down?~
** Processing line: ~ state.mouse_held = true~
** Processing line: ~ if inputs.mouse.position.x < state.grid_border[0] # if mouse's x position is inside the grid's borders~
** Processing line: ~ state.tileCords.map do # perform action on all elements of tileCords collection~
** Processing line: ~ |x, y, order|~
** Processing line: ~ # if mouse's x position is greater than (or equal to) the starting x position of a tile~
** Processing line: ~ # and the mouse's x position is also less than (or equal to) the ending x position of that tile,~
** Processing line: ~ # and the mouse's y position is greater than (or equal to) the starting y position of that tile,~
** Processing line: ~ # and the mouse's y position is also less than (or equal to) the ending y position of that tile,~
** Processing line: ~ # (BASICALLY, IF THE MOUSE'S POSITION IS WITHIN THE STARTING AND ENDING POSITIONS OF A TILE)~
** Processing line: ~ if inputs.mouse.position.x >= x && inputs.mouse.position.x <= x + state.tileSize &&~
** Processing line: ~ inputs.mouse.position.y >= y && inputs.mouse.position.y <= y + state.tileSize~
** Processing line: ~ state.tileSelected = order # that tile is selected~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ elsif inputs.mouse.up # otherwise, if the mouse is in the "up" state~
** Processing line: ~ state.mouse_held = false # mouse is not held down or dragged~
** Processing line: ~ state.mouse_dragging = false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.mouse_held && # mouse needs to be down~
** Processing line: ~ !inputs.mouse.click && # must not be first click~
** Processing line: ~ ((inputs.mouse.previous_click.point.x - inputs.mouse.position.x).abs > 15 ||~
** Processing line: ~ (inputs.mouse.previous_click.point.y - inputs.mouse.position.y).abs > 15) # Need to move 15 pixels before "drag"~
** Processing line: ~ state.mouse_dragging = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if mouse is clicked inside grid's border, search_lines method is called with click input type~
** Processing line: ~ if ((inputs.mouse.click) && (inputs.mouse.click.point.inside_rect? state.grid_border))~
** Processing line: ~ search_lines(inputs.mouse.click.point, :click)~
** Processing line: ~~
** Processing line: ~ # if mouse is dragged inside grid's border, search_lines method is called with drag input type~
** Processing line: ~ elsif ((state.mouse_dragging) && (inputs.mouse.position.inside_rect? state.grid_border))~
** Processing line: ~ search_lines(inputs.mouse.position, :drag)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Changes grid's position on screen by moving it up, down, left, or right.~
** Processing line: ~~
** Processing line: ~ # centerX is incremented by speed if the "d" key is pressed and if that sum is less than~
** Processing line: ~ # the original left side of the center plus half the grid, minus half the top border of grid.~
** Processing line: ~ # MOVES GRID RIGHT (increasing x)~
** Processing line: ~ state.centerX += state.speed if inputs.keyboard.key_held.d &&~
** Processing line: ~ (state.centerX + state.speed) < state.originalCenter[0] + (state.gridSize / 2) - (state.grid_border[2] / 2)~
** Processing line: ~ # centerX is decremented by speed if the "a" key is pressed and if that difference is greater than~
** Processing line: ~ # the original left side of the center minus half the grid, plus half the top border of grid.~
** Processing line: ~ # MOVES GRID LEFT (decreasing x)~
** Processing line: ~ state.centerX -= state.speed if inputs.keyboard.key_held.a &&~
** Processing line: ~ (state.centerX - state.speed) > state.originalCenter[0] - (state.gridSize / 2) + (state.grid_border[2] / 2)~
** Processing line: ~ # centerY is incremented by speed if the "w" key is pressed and if that sum is less than~
** Processing line: ~ # the original bottom of the center plus half the grid, minus half the right border of grid.~
** Processing line: ~ # MOVES GRID UP (increasing y)~
** Processing line: ~ state.centerY += state.speed if inputs.keyboard.key_held.w &&~
** Processing line: ~ (state.centerY + state.speed) < state.originalCenter[1] + (state.gridSize / 2) - (state.grid_border[3] / 2)~
** Processing line: ~ # centerY is decremented by speed if the "s" key is pressed and if the difference is greater than~
** Processing line: ~ # the original bottom of the center minus half the grid, plus half the right border of grid.~
** Processing line: ~ # MOVES GRID DOWN (decreasing y)~
** Processing line: ~ state.centerY -= state.speed if inputs.keyboard.key_held.s &&~
** Processing line: ~ (state.centerY - state.speed) > state.originalCenter[1] - (state.gridSize / 2) + (state.grid_border[3] / 2)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Performs calculations on the gridX and gridY collections, and sets values.~
** Processing line: ~ # Sets the definition of a grid box, including the image that it is filled with.~
** Processing line: ~ def search_lines (point, input_type)~
** Processing line: ~ point.x += state.centerX - 630 # increments x and y~
** Processing line: ~ point.y += state.centerY - 360~
** Processing line: ~ findX = 0~
** Processing line: ~ findY = 0~
** Processing line: ~ increment = state.gridSize / state.lineQuantity # divides grid by number of separators~
** Processing line: ~~
** Processing line: ~ state.gridX.map do # perform an action on every element of collection~
** Processing line: ~ |x|~
** Processing line: ~ # findX increments x by 10 if point.x is less than that sum and findX is currently 0~
** Processing line: ~ findX = x + 10 if point.x < (x + 10) && findX == 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.gridY.map do~
** Processing line: ~ |y|~
** Processing line: ~ # findY is set to y if point.y is less than that value and findY is currently 0~
** Processing line: ~ findY = y if point.y < (y) && findY == 0~
** Processing line: ~ end~
** Processing line: ~ # position of a box is denoted by bottom left corner, which is why the increment is being subtracted~
** Processing line: ~ grid_box = [findX - (increment.ceil), findY - (increment.ceil), increment.ceil, increment.ceil,~
** Processing line: ~ "sprites/image" + state.tileSelected.to_s + ".png"] # sets sprite definition~
** Processing line: ~~
** Processing line: ~ if input_type == :click # if user clicks their mouse~
** Processing line: ~ if state.filled_squares.include? grid_box # if grid box is already filled in~
** Processing line: ~ state.filled_squares.delete grid_box # box is cleared and removed from filled_squares~
** Processing line: ~ else~
** Processing line: ~ state.filled_squares << grid_box # otherwise, box is filled in and added to filled_squares~
** Processing line: ~ end~
** Processing line: ~ elsif input_type == :drag # if user drags mouse~
** Processing line: ~ unless state.filled_squares.include? grid_box # unless grid box dragged over is already filled in~
** Processing line: ~ state.filled_squares << grid_box # box is filled in and added to filled_squares~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates a "Clear" button using labels and borders.~
** Processing line: ~ def draw_buttons~
** Processing line: ~ x, y, w, h = 390, 50, 240, 50~
** Processing line: ~ state.clear_button ||= state.new_entity(:button_with_fade)~
** Processing line: ~~
** Processing line: ~ # x and y positions are set to display "Clear" label in center of the button~
** Processing line: ~ # Try changing first two parameters to simply x, y and see what happens to the text placement~
** Processing line: ~ state.clear_button.label ||= [x + w.half, y + h.half + 10, "Clear", 0, 1]~
** Processing line: ~ state.clear_button.border ||= [x, y, w, h] # definition of button's border~
** Processing line: ~~
** Processing line: ~ # If the mouse is clicked inside the borders of the clear button~
** Processing line: ~ if inputs.mouse.click && inputs.mouse.click.point.inside_rect?(state.clear_button.border)~
** Processing line: ~ state.clear_button.clicked_at = inputs.mouse.click.created_at # value is frame of mouse click~
** Processing line: ~ state.filled_squares.clear # filled squares collection is emptied (squares are cleared)~
** Processing line: ~ inputs.mouse.previous_click = nil # no previous click~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.labels << state.clear_button.label # outputs clear button~
** Processing line: ~ outputs.borders << state.clear_button.border~
** Processing line: ~~
** Processing line: ~ # When the clear button is clicked, the color of the button changes~
** Processing line: ~ # and the transparency changes, as well. If you change the time from~
** Processing line: ~ # 0.25.seconds to 1.25.seconds or more, the change will last longer.~
** Processing line: ~ if state.clear_button.clicked_at~
** Processing line: ~ outputs.solids << [x, y, w, h, 0, 180, 80, 255 * state.clear_button.clicked_at.ease(0.25.seconds, :flip)]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $tile_editor = TileEditor.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $tile_editor.inputs = args.inputs~
** Processing line: ~ $tile_editor.grid = args.grid~
** Processing line: ~ $tile_editor.args = args~
** Processing line: ~ $tile_editor.outputs = args.outputs~
** Processing line: ~ $tile_editor.state = args.state~
** Processing line: ~ $tile_editor.tick~
** Processing line: ~ tick_instructions args, "Roll your own tile editor. CLICK to select a sprite. CLICK in grid to place sprite. WASD to move around."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.mouse.click ||~
** Processing line: ~ args.inputs.keyboard.directional_vector ||~
** Processing line: ~ args.inputs.keyboard.key_down.enter ||~
** Processing line: ~ args.inputs.keyboard.key_down.escape~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(click to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Lowrez - Resolution 64x64 - lowrez.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Lowrez - Resolution 64x64 - lowrez.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_lowrez/resolution_64x64/app/lowrez.rb~
** Processing line: ~ # Emulation of a 64x64 canvas. Don't change this file unless you know what you're doing :-)~
** Processing line: ~ # Head over to main.rb and study the code there.~
** Processing line: ~~
** Processing line: ~ LOWREZ_SIZE = 64~
** Processing line: ~ LOWREZ_ZOOM = 10~
** Processing line: ~ LOWREZ_ZOOMED_SIZE = LOWREZ_SIZE * LOWREZ_ZOOM~
** Processing line: ~ LOWREZ_X_OFFSET = (1280 - LOWREZ_ZOOMED_SIZE).half~
** Processing line: ~ LOWREZ_Y_OFFSET = ( 720 - LOWREZ_ZOOMED_SIZE).half~
** Processing line: ~~
** Processing line: ~ LOWREZ_FONT_XL = -1~
** Processing line: ~ LOWREZ_FONT_XL_HEIGHT = 20~
** Processing line: ~~
** Processing line: ~ LOWREZ_FONT_LG = -3.5~
** Processing line: ~ LOWREZ_FONT_LG_HEIGHT = 15~
** Processing line: ~~
** Processing line: ~ LOWREZ_FONT_MD = -6~
** Processing line: ~ LOWREZ_FONT_MD_HEIGHT = 10~
** Processing line: ~~
** Processing line: ~ LOWREZ_FONT_SM = -8.5~
** Processing line: ~ LOWREZ_FONT_SM_HEIGHT = 5~
** Processing line: ~~
** Processing line: ~ LOWREZ_FONT_PATH = 'fonts/lowrez.ttf'~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ class LowrezOutputs~
** Processing line: ~ attr_accessor :width, :height~
** Processing line: ~~
** Processing line: ~ def initialize args~
** Processing line: ~ @args = args~
** Processing line: ~ @background_color ||= [0, 0, 0]~
** Processing line: ~ @args.outputs.background_color = @background_color~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def background_color~
** Processing line: ~ @background_color ||= [0, 0, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def background_color= opts~
** Processing line: ~ @background_color = opts~
** Processing line: ~ @args.outputs.background_color = @background_color~
** Processing line: ~~
** Processing line: ~ outputs_lowrez.solids << [0, 0, LOWREZ_SIZE, LOWREZ_SIZE, @background_color]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def outputs_lowrez~
** Processing line: ~ return @args.outputs if @args.state.tick_count <= 0~
** Processing line: ~ return @args.outputs[:lowrez]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def solids~
** Processing line: ~ outputs_lowrez.solids~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def borders~
** Processing line: ~ outputs_lowrez.borders~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def sprites~
** Processing line: ~ outputs_lowrez.sprites~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def labels~
** Processing line: ~ outputs_lowrez.labels~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def default_label~
** Processing line: ~ {~
** Processing line: ~ x: 0,~
** Processing line: ~ y: 63,~
** Processing line: ~ text: "",~
** Processing line: ~ size_enum: LOWREZ_FONT_SM,~
** Processing line: ~ alignment_enum: 0,~
** Processing line: ~ r: 0,~
** Processing line: ~ g: 0,~
** Processing line: ~ b: 0,~
** Processing line: ~ a: 255,~
** Processing line: ~ font: LOWREZ_FONT_PATH~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def lines~
** Processing line: ~ outputs_lowrez.lines~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def primitives~
** Processing line: ~ outputs_lowrez.primitives~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def click~
** Processing line: ~ return nil unless @args.inputs.mouse.click~
** Processing line: ~ mouse~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def mouse_click~
** Processing line: ~ click~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def mouse_down~
** Processing line: ~ @args.inputs.mouse.down~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def mouse_up~
** Processing line: ~ @args.inputs.mouse.up~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def mouse~
** Processing line: ~ [~
** Processing line: ~ ((@args.inputs.mouse.x - LOWREZ_X_OFFSET).idiv(LOWREZ_ZOOM)),~
** Processing line: ~ ((@args.inputs.mouse.y - LOWREZ_Y_OFFSET).idiv(LOWREZ_ZOOM))~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def mouse_position~
** Processing line: ~ mouse~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def keyboard~
** Processing line: ~ @args.inputs.keyboard~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ class GTK::Args~
** Processing line: ~ def init_lowrez~
** Processing line: ~ return if @lowrez~
** Processing line: ~ @lowrez = LowrezOutputs.new self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def lowrez~
** Processing line: ~ @lowrez~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Runtime~
** Processing line: ~ alias_method :__original_tick_core__, :tick_core unless Runtime.instance_methods.include?(:__original_tick_core__)~
** Processing line: ~~
** Processing line: ~ def tick_core~
** Processing line: ~ @args.init_lowrez~
** Processing line: ~ __original_tick_core__~
** Processing line: ~~
** Processing line: ~ return if @args.state.tick_count <= 0~
** Processing line: ~~
** Processing line: ~ @args.render_target(:lowrez)~
** Processing line: ~ .labels~
** Processing line: ~ .each do |l|~
** Processing line: ~ l.y += 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ @args.render_target(:lowrez)~
** Processing line: ~ .lines~
** Processing line: ~ .each do |l|~
** Processing line: ~ l.y += 1~
** Processing line: ~ l.y2 += 1~
** Processing line: ~ l.y2 += 1 if l.y1 != l.y2~
** Processing line: ~ l.x2 += 1 if l.x1 != l.x2~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ @args.outputs~
** Processing line: ~ .sprites << { x: 320,~
** Processing line: ~ y: 40,~
** Processing line: ~ w: 640,~
** Processing line: ~ h: 640,~
** Processing line: ~ source_x: 0,~
** Processing line: ~ source_y: 0,~
** Processing line: ~ source_w: 64,~
** Processing line: ~ source_h: 64,~
** Processing line: ~ path: :lowrez }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Lowrez - Resolution 64x64 - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Lowrez - Resolution 64x64 - 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_lowrez/resolution_64x64/app/main.rb~
** Processing line: ~ require 'app/lowrez.rb'~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ # How to set the background color~
** Processing line: ~ args.lowrez.background_color = [255, 255, 255]~
** Processing line: ~~
** Processing line: ~ # ==== HELLO WORLD ======================================================~
** Processing line: ~ # Steps to get started:~
** Processing line: ~ # 1. ~def tick args~ is the entry point for your game.~
** Processing line: ~ # 2. There are quite a few code samples below, remove the "##"~
** Processing line: ~ # before each line and save the file to see the changes.~
** Processing line: ~ # 3. 0, 0 is in bottom left and 63, 63 is in top right corner.~
** Processing line: ~ # 4. Be sure to come to the discord channel if you need~
** Processing line: ~ # more help: [[http://discord.dragonruby.org]].~
** Processing line: ~~
** Processing line: ~ # Commenting and uncommenting code:~
** Processing line: ~ # - Add a "#" infront of lines to comment out code~
** Processing line: ~ # - Remove the "#" infront of lines to comment out code~
** Processing line: ~~
** Processing line: ~ # Invoke the hello_world subroutine/method~
** Processing line: ~ hello_world args # <---- add a "#" to the beginning of the line to stop running this subroutine/method.~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ==== HOW TO RENDER A LABEL ============================================~
** Processing line: ~ # Uncomment the line below to invoke the how_to_render_a_label subroutine/method.~
** Processing line: ~ # Note: The method is defined in this file with the signature ~def how_to_render_a_label args~~
** Processing line: ~ # Scroll down to the method to see the details.~
** Processing line: ~~
** Processing line: ~ # Remove the "#" at the beginning of the line below~
** Processing line: ~ # how_to_render_a_label args # <---- remove the "#" at the begging of this line to run the method~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ==== HOW TO RENDER A FILLED SQUARE (SOLID) ============================~
** Processing line: ~ # Remove the "#" at the beginning of the line below~
** Processing line: ~ # how_to_render_solids args~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ==== HOW TO RENDER AN UNFILLED SQUARE (BORDER) ========================~
** Processing line: ~ # Remove the "#" at the beginning of the line below~
** Processing line: ~ # how_to_render_borders args~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ==== HOW TO RENDER A LINE =============================================~
** Processing line: ~ # Remove the "#" at the beginning of the line below~
** Processing line: ~ # how_to_render_lines args~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # == HOW TO RENDER A SPRITE =============================================~
** Processing line: ~ # Remove the "#" at the beginning of the line below~
** Processing line: ~ # how_to_render_sprites args~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ==== HOW TO MOVE A SPRITE BASED OFF OF USER INPUT =====================~
** Processing line: ~ # Remove the "#" at the beginning of the line below~
** Processing line: ~ # how_to_move_a_sprite args~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ==== HOW TO ANIMATE A SPRITE (SEPERATE PNGS) ==========================~
** Processing line: ~ # Remove the "#" at the beginning of the line below~
** Processing line: ~ # how_to_animate_a_sprite args~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ==== HOW TO ANIMATE A SPRITE (SPRITE SHEET) ===========================~
** Processing line: ~ # Remove the "#" at the beginning of the line below~
** Processing line: ~ # how_to_animate_a_sprite_sheet args~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ==== HOW TO DETERMINE COLLISION =============================================~
** Processing line: ~ # Remove the "#" at the beginning of the line below~
** Processing line: ~ # how_to_determine_collision args~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ==== HOW TO CREATE BUTTONS ==================================================~
** Processing line: ~ # Remove the "#" at the beginning of the line below~
** Processing line: ~ # how_to_create_buttons args~
** Processing line: ~ # =======================================================================~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # ==== The line below renders a debug grid, mouse information, and current tick~
** Processing line: ~ render_debug args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def hello_world args~
** Processing line: ~ args.lowrez.solids << { x: 0, y: 64, w: 10, h: 10, r: 255 }~
** Processing line: ~~
** Processing line: ~ args.lowrez.labels << {~
** Processing line: ~ x: 32,~
** Processing line: ~ y: 63,~
** Processing line: ~ text: "lowrezjam 2020",~
** Processing line: ~ size_enum: LOWREZ_FONT_SM,~
** Processing line: ~ alignment_enum: 1,~
** Processing line: ~ r: 0,~
** Processing line: ~ g: 0,~
** Processing line: ~ b: 0,~
** Processing line: ~ a: 255,~
** Processing line: ~ font: LOWREZ_FONT_PATH~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ args.lowrez.sprites << {~
** Processing line: ~ x: 32 - 10,~
** Processing line: ~ y: 32 - 10,~
** Processing line: ~ w: 20,~
** Processing line: ~ h: 20,~
** Processing line: ~ path: 'sprites/lowrez-ship-blue.png',~
** Processing line: ~ a: args.state.tick_count % 255,~
** Processing line: ~ angle: args.state.tick_count % 360~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # =======================================================================~
** Processing line: ~ # ==== HOW TO RENDER A LABEL ============================================~
** Processing line: ~ # =======================================================================~
** Processing line: ~ def how_to_render_a_label args~
** Processing line: ~ # NOTE: Text is aligned from the TOP LEFT corner~
** Processing line: ~~
** Processing line: ~ # Render an EXTRA LARGE/XL label (remove the "#" in front of each line below)~
** Processing line: ~ args.lowrez.labels << { x: 0, y: 57, text: "Hello World",~
** Processing line: ~ size_enum: LOWREZ_FONT_XL,~
** Processing line: ~ r: 0, g: 0, b: 0, a: 255,~
** Processing line: ~ font: LOWREZ_FONT_PATH }~
** Processing line: ~~
** Processing line: ~ # Render a LARGE/LG label (remove the "#" in front of each line below)~
** Processing line: ~ args.lowrez.labels << { x: 0, y: 36, text: "Hello World",~
** Processing line: ~ size_enum: LOWREZ_FONT_LG,~
** Processing line: ~ r: 0, g: 0, b: 0, a: 255,~
** Processing line: ~ font: LOWREZ_FONT_PATH }~
** Processing line: ~~
** Processing line: ~ # Render a MEDIUM/MD label (remove the "#" in front of each line below)~
** Processing line: ~ args.lowrez.labels << { x: 0, y: 20, text: "Hello World",~
** Processing line: ~ size_enum: LOWREZ_FONT_MD,~
** Processing line: ~ r: 0, g: 0, b: 0, a: 255,~
** Processing line: ~ font: LOWREZ_FONT_PATH }~
** Processing line: ~~
** Processing line: ~ # Render a SMALL/SM label (remove the "#" in front of each line below)~
** Processing line: ~ args.lowrez.labels << { x: 0, y: 9, text: "Hello World",~
** Processing line: ~ size_enum: LOWREZ_FONT_SM,~
** Processing line: ~ r: 0, g: 0, b: 0, a: 255,~
** Processing line: ~ font: LOWREZ_FONT_PATH }~
** Processing line: ~~
** Processing line: ~ # You are provided args.lowrez.default_label which returns a Hash that you~
** Processing line: ~ # can ~merge~ properties with~
** Processing line: ~ # Example 1~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(text: "Default")~
** Processing line: ~~
** Processing line: ~ # Example 2~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 31,~
** Processing line: ~ text: "Default",~
** Processing line: ~ r: 128,~
** Processing line: ~ g: 128,~
** Processing line: ~ b: 128)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ ## # ==== HOW TO RENDER FILLED SQUARES (SOLIDS) ==================================~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ def how_to_render_solids args~
** Processing line: ~ # Render a red square at 0, 0 with a width and height of 1~
** Processing line: ~ args.lowrez.solids << { x: 0, y: 0, w: 1, h: 1, r: 255, g: 0, b: 0, a: 255 }~
** Processing line: ~~
** Processing line: ~ # Render a red square at 1, 1 with a width and height of 2~
** Processing line: ~ args.lowrez.solids << { x: 1, y: 1, w: 2, h: 2, r: 255, g: 0, b: 0, a: 255 }~
** Processing line: ~~
** Processing line: ~ # Render a red square at 3, 3 with a width and height of 3~
** Processing line: ~ args.lowrez.solids << { x: 3, y: 3, w: 3, h: 3, r: 255, g: 0, b: 0 }~
** Processing line: ~~
** Processing line: ~ # Render a red square at 6, 6 with a width and height of 4~
** Processing line: ~ args.lowrez.solids << { x: 6, y: 6, w: 4, h: 4, r: 255, g: 0, b: 0 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ ## # ==== HOW TO RENDER UNFILLED SQUARES (BORDERS) ===============================~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ def how_to_render_borders args~
** Processing line: ~ # Render a red square at 0, 0 with a width and height of 3~
** Processing line: ~ args.lowrez.borders << { x: 0, y: 0, w: 3, h: 3, r: 255, g: 0, b: 0, a: 255 }~
** Processing line: ~~
** Processing line: ~ # Render a red square at 3, 3 with a width and height of 3~
** Processing line: ~ args.lowrez.borders << { x: 3, y: 3, w: 4, h: 4, r: 255, g: 0, b: 0, a: 255 }~
** Processing line: ~~
** Processing line: ~ # Render a red square at 5, 5 with a width and height of 4~
** Processing line: ~ args.lowrez.borders << { x: 7, y: 7, w: 5, h: 5, r: 255, g: 0, b: 0, a: 255 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ ## # ==== HOW TO RENDER A LINE ===================================================~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ def how_to_render_lines args~
** Processing line: ~ # Render a horizontal line at the bottom~
** Processing line: ~ args.lowrez.lines << { x: 0, y: 0, x2: 63, y2: 0, r: 255 }~
** Processing line: ~~
** Processing line: ~ # Render a vertical line at the left~
** Processing line: ~ args.lowrez.lines << { x: 0, y: 0, x2: 0, y2: 63, r: 255 }~
** Processing line: ~~
** Processing line: ~ # Render a diagonal line starting from the bottom left and going to the top right~
** Processing line: ~ args.lowrez.lines << { x: 0, y: 0, x2: 63, y2: 63, r: 255 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ ## # == HOW TO RENDER A SPRITE ===================================================~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ def how_to_render_sprites args~
** Processing line: ~ # Loop 10 times and create 10 sprites in 10 positions~
** Processing line: ~ # Render a sprite at the bottom left with a width and height of 5 and a path of 'sprites/lowrez-ship-blue.png'~
** Processing line: ~ 10.times do |i|~
** Processing line: ~ args.lowrez.sprites << {~
** Processing line: ~ x: i * 5,~
** Processing line: ~ y: i * 5,~
** Processing line: ~ w: 5,~
** Processing line: ~ h: 5,~
** Processing line: ~ path: 'sprites/lowrez-ship-blue.png'~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Given an array of positions create sprites~
** Processing line: ~ positions = [~
** Processing line: ~ { x: 10, y: 42 },~
** Processing line: ~ { x: 15, y: 45 },~
** Processing line: ~ { x: 22, y: 33 },~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ positions.each do |position|~
** Processing line: ~ # use Ruby's ~Hash#merge~ function to create a sprite~
** Processing line: ~ args.lowrez.sprites << position.merge(path: 'sprites/lowrez-ship-red.png',~
** Processing line: ~ w: 5,~
** Processing line: ~ h: 5)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ ## # ==== HOW TO ANIMATE A SPRITE (SEPERATE PNGS) ==========================~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ def how_to_animate_a_sprite args~
** Processing line: ~ # STEP 1: Define when you want the animation to start. The animation in this case will start in 3 seconds~
** Processing line: ~ start_animation_on_tick = 180~
** Processing line: ~~
** Processing line: ~ # STEP 2: Get the frame_index given the start tick.~
** Processing line: ~ sprite_index = start_animation_on_tick.frame_index count: 7, # how many sprites?~
** Processing line: ~ hold_for: 4, # how long to hold each sprite?~
** Processing line: ~ repeat: true # should it repeat?~
** Processing line: ~~
** Processing line: ~ # STEP 3: frame_index will return nil if the frame hasn't arrived yet~
** Processing line: ~ if sprite_index~
** Processing line: ~ # if the sprite_index is populated, use it to determine the sprite path and render it~
** Processing line: ~ sprite_path = "sprites/explosion-#{sprite_index}.png"~
** Processing line: ~ args.lowrez.sprites << { x: 0, y: 0, w: 64, h: 64, path: sprite_path }~
** Processing line: ~ else~
** Processing line: ~ # if the sprite_index is nil, render a countdown instead~
** Processing line: ~ countdown_in_seconds = ((start_animation_on_tick - args.state.tick_count) / 60).round(1)~
** Processing line: ~~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 32,~
** Processing line: ~ y: 32,~
** Processing line: ~ text: "Count Down: #{countdown_in_seconds}",~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # render the current tick and the resolved sprite index~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 0,~
** Processing line: ~ y: 11,~
** Processing line: ~ text: "Tick: #{args.state.tick_count}")~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 0,~
** Processing line: ~ y: 5,~
** Processing line: ~ text: "sprite_index: #{sprite_index}")~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ ## # ==== HOW TO ANIMATE A SPRITE (SPRITE SHEET) =================================~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ def how_to_animate_a_sprite_sheet args~
** Processing line: ~ # STEP 1: Define when you want the animation to start. The animation in this case will start in 3 seconds~
** Processing line: ~ start_animation_on_tick = 180~
** Processing line: ~~
** Processing line: ~ # STEP 2: Get the frame_index given the start tick.~
** Processing line: ~ sprite_index = start_animation_on_tick.frame_index count: 7, # how many sprites?~
** Processing line: ~ hold_for: 4, # how long to hold each sprite?~
** Processing line: ~ repeat: true # should it repeat?~
** Processing line: ~~
** Processing line: ~ # STEP 3: frame_index will return nil if the frame hasn't arrived yet~
** Processing line: ~ if sprite_index~
** Processing line: ~ # if the sprite_index is populated, use it to determine the source rectangle and render it~
** Processing line: ~ args.lowrez.sprites << {~
** Processing line: ~ x: 0,~
** Processing line: ~ y: 0,~
** Processing line: ~ w: 64,~
** Processing line: ~ h: 64,~
** Processing line: ~ path: "sprites/explosion-sheet.png",~
** Processing line: ~ source_x: 32 * sprite_index,~
** Processing line: ~ source_y: 0,~
** Processing line: ~ source_w: 32,~
** Processing line: ~ source_h: 32~
** Processing line: ~ }~
** Processing line: ~ else~
** Processing line: ~ # if the sprite_index is nil, render a countdown instead~
** Processing line: ~ countdown_in_seconds = ((start_animation_on_tick - args.state.tick_count) / 60).round(1)~
** Processing line: ~~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 32,~
** Processing line: ~ y: 32,~
** Processing line: ~ text: "Count Down: #{countdown_in_seconds}",~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # render the current tick and the resolved sprite index~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 0,~
** Processing line: ~ y: 11,~
** Processing line: ~ text: "tick: #{args.state.tick_count}")~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 0,~
** Processing line: ~ y: 5,~
** Processing line: ~ text: "sprite_index: #{sprite_index}")~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ ## # ==== HOW TO STORE STATE, ACCEPT INPUT, AND RENDER SPRITE BASED OFF OF STATE =~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ def how_to_move_a_sprite args~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 32,~
** Processing line: ~ y: 62, text: "Use Arrow Keys",~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 32,~
** Processing line: ~ y: 56, text: "Use WASD",~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 32,~
** Processing line: ~ y: 50, text: "Or Click",~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~~
** Processing line: ~ # set the initial values for x and y using ||= ("or equal operator")~
** Processing line: ~ args.state.ship.x ||= 0~
** Processing line: ~ args.state.ship.y ||= 0~
** Processing line: ~~
** Processing line: ~ # if a mouse click occurs, update the ship's x and y to be the location of the click~
** Processing line: ~ if args.lowrez.mouse_click~
** Processing line: ~ args.state.ship.x = args.lowrez.mouse_click.x~
** Processing line: ~ args.state.ship.y = args.lowrez.mouse_click.y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if a or left arrow is pressed/held, decrement the ships x position~
** Processing line: ~ if args.lowrez.keyboard.left~
** Processing line: ~ args.state.ship.x -= 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if d or right arrow is pressed/held, increment the ships x position~
** Processing line: ~ if args.lowrez.keyboard.right~
** Processing line: ~ args.state.ship.x += 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if s or down arrow is pressed/held, decrement the ships y position~
** Processing line: ~ if args.lowrez.keyboard.down~
** Processing line: ~ args.state.ship.y -= 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if w or up arrow is pressed/held, increment the ships y position~
** Processing line: ~ if args.lowrez.keyboard.up~
** Processing line: ~ args.state.ship.y += 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # render the sprite to the screen using the position stored in args.state.ship~
** Processing line: ~ args.lowrez.sprites << {~
** Processing line: ~ x: args.state.ship.x,~
** Processing line: ~ y: args.state.ship.y,~
** Processing line: ~ w: 5,~
** Processing line: ~ h: 5,~
** Processing line: ~ path: 'sprites/lowrez-ship-blue.png',~
** Processing line: ~ # parameters beyond this point are optional~
** Processing line: ~ angle: 0, # Note: rotation angle is denoted in degrees NOT radians~
** Processing line: ~ r: 255,~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 255,~
** Processing line: ~ a: 255~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # =======================================================================~
** Processing line: ~ # ==== HOW TO DETERMINE COLLISION =======================================~
** Processing line: ~ # =======================================================================~
** Processing line: ~ def how_to_determine_collision args~
** Processing line: ~ # Render the instructions~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 32,~
** Processing line: ~ y: 62, text: "Click Anywhere",~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~~
** Processing line: ~ # if a mouse click occurs:~
** Processing line: ~ # - set ship_one if it isn't set~
** Processing line: ~ # - set ship_two if it isn't set~
** Processing line: ~ # - otherwise reset ship one and ship two~
** Processing line: ~ if args.lowrez.mouse_click~
** Processing line: ~ # is ship_one set?~
** Processing line: ~ if !args.state.ship_one~
** Processing line: ~ args.state.ship_one = { x: args.lowrez.mouse_click.x - 10,~
** Processing line: ~ y: args.lowrez.mouse_click.y - 10,~
** Processing line: ~ w: 20,~
** Processing line: ~ h: 20 }~
** Processing line: ~ # is ship_one set?~
** Processing line: ~ elsif !args.state.ship_two~
** Processing line: ~ args.state.ship_two = { x: args.lowrez.mouse_click.x - 10,~
** Processing line: ~ y: args.lowrez.mouse_click.y - 10,~
** Processing line: ~ w: 20,~
** Processing line: ~ h: 20 }~
** Processing line: ~ # should we reset?~
** Processing line: ~ else~
** Processing line: ~ args.state.ship_one = nil~
** Processing line: ~ args.state.ship_two = nil~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # render ship one if it's set~
** Processing line: ~ if args.state.ship_one~
** Processing line: ~ # use Ruby's .merge method which is available on ~Hash~ to set the sprite and alpha~
** Processing line: ~ # render ship one~
** Processing line: ~ args.lowrez.sprites << args.state.ship_one.merge(path: 'sprites/lowrez-ship-blue.png', a: 100)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.ship_two~
** Processing line: ~ # use Ruby's .merge method which is available on ~Hash~ to set the sprite and alpha~
** Processing line: ~ # render ship two~
** Processing line: ~ args.lowrez.sprites << args.state.ship_two.merge(path: 'sprites/lowrez-ship-red.png', a: 100)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # if both ship one and ship two are set, then determine collision~
** Processing line: ~ if args.state.ship_one && args.state.ship_two~
** Processing line: ~ # collision is determined using the intersect_rect? method~
** Processing line: ~ if args.state.ship_one.intersect_rect? args.state.ship_two~
** Processing line: ~ # if collision occurred, render the words collision!~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 31,~
** Processing line: ~ y: 5,~
** Processing line: ~ text: "Collision!",~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~ else~
** Processing line: ~ # if collision occurred, render the words no collision.~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 31,~
** Processing line: ~ y: 5,~
** Processing line: ~ text: "No Collision.",~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ # if both ship one and ship two aren't set, then render --~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(x: 31,~
** Processing line: ~ y: 6,~
** Processing line: ~ text: "--",~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ ## # ==== HOW TO CREATE BUTTONS ==================================================~
** Processing line: ~ ## # =============================================================================~
** Processing line: ~ def how_to_create_buttons args~
** Processing line: ~ # Define a button style~
** Processing line: ~ args.state.button_style = { w: 62, h: 10, r: 80, g: 80, b: 80 }~
** Processing line: ~ args.state.label_style = { r: 80, g: 80, b: 80 }~
** Processing line: ~~
** Processing line: ~ # Render instructions~
** Processing line: ~ args.state.button_message ||= "Press a Button!"~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(args.state.label_style)~
** Processing line: ~ .merge(x: 32,~
** Processing line: ~ y: 62,~
** Processing line: ~ text: args.state.button_message,~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # Creates button one using a border and a label~
** Processing line: ~ args.state.button_one_border = args.state.button_style.merge( x: 1, y: 32)~
** Processing line: ~ args.lowrez.borders << args.state.button_one_border~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(args.state.label_style)~
** Processing line: ~ .merge(x: args.state.button_one_border.x + 2,~
** Processing line: ~ y: args.state.button_one_border.y + LOWREZ_FONT_SM_HEIGHT + 2,~
** Processing line: ~ text: "Button One")~
** Processing line: ~~
** Processing line: ~ # Creates button two using a border and a label~
** Processing line: ~ args.state.button_two_border = args.state.button_style.merge( x: 1, y: 20)~
** Processing line: ~~
** Processing line: ~ args.lowrez.borders << args.state.button_two_border~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(args.state.label_style)~
** Processing line: ~ .merge(x: args.state.button_two_border.x + 2,~
** Processing line: ~ y: args.state.button_two_border.y + LOWREZ_FONT_SM_HEIGHT + 2,~
** Processing line: ~ text: "Button Two")~
** Processing line: ~~
** Processing line: ~ # Initialize the state variable that tracks which button was clicked to "" (empty stringI~
** Processing line: ~ args.state.last_button_clicked ||= "--"~
** Processing line: ~~
** Processing line: ~ # If a click occurs, check to see if either button one, or button two was clicked~
** Processing line: ~ # using the inside_rect? method of the mouse~
** Processing line: ~ # set args.state.last_button_clicked accordingly~
** Processing line: ~ if args.lowrez.mouse_click~
** Processing line: ~ if args.lowrez.mouse_click.inside_rect? args.state.button_one_border~
** Processing line: ~ args.state.last_button_clicked = "One Clicked!"~
** Processing line: ~ elsif args.lowrez.mouse_click.inside_rect? args.state.button_two_border~
** Processing line: ~ args.state.last_button_clicked = "Two Clicked!"~
** Processing line: ~ else~
** Processing line: ~ args.state.last_button_clicked = "--"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Render the current value of args.state.last_button_clicked~
** Processing line: ~ args.lowrez.labels << args.lowrez~
** Processing line: ~ .default_label~
** Processing line: ~ .merge(args.state.label_style)~
** Processing line: ~ .merge(x: 32,~
** Processing line: ~ y: 5,~
** Processing line: ~ text: args.state.last_button_clicked,~
** Processing line: ~ alignment_enum: 1)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ def render_debug args~
** Processing line: ~ if !args.state.grid_rendered~
** Processing line: ~ 65.map_with_index do |i|~
** Processing line: ~ args.outputs.static_debug << {~
** Processing line: ~ x: LOWREZ_X_OFFSET,~
** Processing line: ~ y: LOWREZ_Y_OFFSET + (i * 10),~
** Processing line: ~ x2: LOWREZ_X_OFFSET + LOWREZ_ZOOMED_SIZE,~
** Processing line: ~ y2: LOWREZ_Y_OFFSET + (i * 10),~
** Processing line: ~ r: 128,~
** Processing line: ~ g: 128,~
** Processing line: ~ b: 128,~
** Processing line: ~ a: 80~
** Processing line: ~ }.line~
** Processing line: ~~
** Processing line: ~ args.outputs.static_debug << {~
** Processing line: ~ x: LOWREZ_X_OFFSET + (i * 10),~
** Processing line: ~ y: LOWREZ_Y_OFFSET,~
** Processing line: ~ x2: LOWREZ_X_OFFSET + (i * 10),~
** Processing line: ~ y2: LOWREZ_Y_OFFSET + LOWREZ_ZOOMED_SIZE,~
** Processing line: ~ r: 128,~
** Processing line: ~ g: 128,~
** Processing line: ~ b: 128,~
** Processing line: ~ a: 80~
** Processing line: ~ }.line~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.grid_rendered = true~
** Processing line: ~~
** Processing line: ~ args.state.last_click ||= 0~
** Processing line: ~ args.state.last_up ||= 0~
** Processing line: ~ args.state.last_click = args.state.tick_count if args.lowrez.mouse_down # you can also use args.lowrez.click~
** Processing line: ~ args.state.last_up = args.state.tick_count if args.lowrez.mouse_up~
** Processing line: ~ args.state.label_style = { size_enum: -1.5 }~
** Processing line: ~~
** Processing line: ~ args.state.watch_list = [~
** Processing line: ~ "args.state.tick_count is: #{args.state.tick_count}",~
** Processing line: ~ "args.lowrez.mouse_position is: #{args.lowrez.mouse_position.x}, #{args.lowrez.mouse_position.y}",~
** Processing line: ~ "args.lowrez.mouse_down tick: #{args.state.last_click || "never"}",~
** Processing line: ~ "args.lowrez.mouse_up tick: #{args.state.last_up || "false"}",~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << args.state~
** Processing line: ~ .watch_list~
** Processing line: ~ .map_with_index do |text, i|~
** Processing line: ~ {~
** Processing line: ~ x: 5,~
** Processing line: ~ y: 720 - (i * 20),~
** Processing line: ~ text: text,~
** Processing line: ~ size_enum: -1.5~
** Processing line: ~ }.label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << {~
** Processing line: ~ x: 640,~
** Processing line: ~ y: 25,~
** Processing line: ~ text: "INFO: dev mode is currently enabled. Comment out the invocation of ~render_debug~ within the ~tick~ method to hide the debug layer.",~
** Processing line: ~ size_enum: -0.5,~
** Processing line: ~ alignment_enum: 1~
** Processing line: ~ }.label~
** 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~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Platformer - Clepto Frog - 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_platformer/clepto_frog/app/main.rb~
** Processing line: ~ MAP_FILE_PATH = 'app/map.txt'~
** Processing line: ~~
** Processing line: ~ require 'app/map.rb'~
** Processing line: ~~
** Processing line: ~ class CleptoFrog~
** Processing line: ~ attr_gtk~
** Processing line: ~~
** Processing line: ~ def render_ending~
** Processing line: ~ state.game_over_at ||= state.tick_count~
** Processing line: ~~
** Processing line: ~ outputs.labels << [640, 700, "Clepto Frog", 4, 1]~
** Processing line: ~~
** Processing line: ~ if state.tick_count >= (state.game_over_at + 120)~
** Processing line: ~ 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)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.tick_count >= (state.game_over_at + 240)~
** Processing line: ~ 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)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ 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",~
** Processing line: ~ 4, 1, 0, 0, 0, 255 * (state.game_over_at + 360).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: ~ 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]~
** Processing line: ~~
** Processing line: ~ if state.tick_count >= (state.game_over_at + 550)~
** Processing line: ~ restart_game~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def restart_game~
** Processing line: ~ state.world = nil~
** Processing line: ~ state.x = nil~
** Processing line: ~ state.y = nil~
** Processing line: ~ state.dx = nil~
** Processing line: ~ state.dy = nil~
** Processing line: ~ state.stuff_score = 0~
** Processing line: ~ state.stuff_time = 0~
** Processing line: ~ state.intro_tick_count = nil~
** Processing line: ~ defaults~
** Processing line: ~ state.game_start_at = state.tick_count~
** Processing line: ~ state.scene = :game~
** Processing line: ~ state.game_over_at = nil~
** Processing line: ~ end~
** 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: ~ state.scene = :game~
** Processing line: ~ state.game_start_at = state.tick_count~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ if state.scene == :intro && state.tick_count <= 800~
** Processing line: ~ render_intro~
** Processing line: ~ elsif state.scene == :ending~
** Processing line: ~ render_ending~
** Processing line: ~ else~
** Processing line: ~ render~
** Processing line: ~ end~
** Processing line: ~ calc~
** Processing line: ~ process_inputs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults~
** Processing line: ~ state.scene ||= :intro~
** Processing line: ~ state.stuff_score ||= 0~
** Processing line: ~ state.stuff_time ||= 0~
** Processing line: ~ state.stuff_best_time ||= nil~
** Processing line: ~ state.camera_x ||= 0~
** Processing line: ~ state.camera_y ||= 0~
** Processing line: ~ state.target_camera_scale ||= 1~
** Processing line: ~ state.camera_scale ||= 1~
** Processing line: ~ state.tongue_length ||= 100~
** Processing line: ~ state.dev_action ||= :collision_mode~
** Processing line: ~ state.action ||= :aiming~
** Processing line: ~ state.tongue_angle ||= 90~
** Processing line: ~ state.tile_size = 64~
** Processing line: ~ state.gravity = -0.1~
** Processing line: ~ state.air = -0.01~
** Processing line: ~ state.player_width = 60~
** Processing line: ~ state.player_height = 60~
** Processing line: ~ state.collision_tolerance = 0.0~
** Processing line: ~ state.previous_tile_size ||= state.tile_size~
** Processing line: ~ state.x ||= 2400~
** Processing line: ~ state.y ||= 200~
** Processing line: ~ state.dy ||= 0~
** Processing line: ~ state.dx ||= 0~
** Processing line: ~ attempt_load_world_from_file~
** Processing line: ~ state.world_lookup ||= { }~
** Processing line: ~ state.world_collision_rects ||= []~
** Processing line: ~ state.mode ||= :creating~
** Processing line: ~ state.select_menu ||= [0, 720, 1280, 720]~
** Processing line: ~ state.sprite_quantity ||= 20~
** Processing line: ~ state.sprite_coords ||= []~
** Processing line: ~ state.banner_coords ||= [640, 680 + 720]~
** Processing line: ~ state.sprite_selected ||= 1~
** Processing line: ~ state.map_saved_at ||= 0~
** Processing line: ~ state.intro_tick_count ||= state.tick_count~
** Processing line: ~ if state.sprite_coords == []~
** Processing line: ~ count = 1~
** Processing line: ~ temp_x = 165~
** Processing line: ~ temp_y = 500 + 720~
** Processing line: ~ state.sprite_quantity.times do~
** Processing line: ~ state.sprite_coords += [[temp_x, temp_y, count]]~
** Processing line: ~ temp_x += 100~
** Processing line: ~ count += 1~
** Processing line: ~ if temp_x > 1280 - (165 + 50)~
** Processing line: ~ temp_x = 165~
** Processing line: ~ temp_y -= 75~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def start_of_tongue x = nil, y = nil~
** Processing line: ~ x ||= state.x~
** Processing line: ~ y ||= state.y~
** Processing line: ~ [~
** Processing line: ~ x + state.player_width.half,~
** Processing line: ~ y + state.player_height.half~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def stage_definition~
** Processing line: ~ outputs.sprites << [vx(0), vy(0), vw(10000), vw(5875), 'sprites/level-map.png']~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render~
** Processing line: ~ stage_definition~
** Processing line: ~ start_of_tongue_render = [vx(start_of_tongue.x), vy(start_of_tongue.y)]~
** Processing line: ~ end_of_tongue_render = [vx(end_of_tongue.x), vy(end_of_tongue.y)]~
** Processing line: ~~
** Processing line: ~ if state.anchor_point~
** Processing line: ~ anchor_point_render = [vx(state.anchor_point.x), vy(state.anchor_point.y)]~
** Processing line: ~ outputs.sprites << { x: start_of_tongue_render.x,~
** Processing line: ~ y: start_of_tongue_render.y,~
** Processing line: ~ w: vw(2),~
** Processing line: ~ h: args.geometry.distance(start_of_tongue_render, anchor_point_render),~
** Processing line: ~ path: 'sprites/square-pink.png',~
** Processing line: ~ angle_anchor_y: 0,~
** Processing line: ~ angle: state.tongue_angle - 90 }~
** Processing line: ~ else~
** Processing line: ~ outputs.sprites << { x: vx(start_of_tongue.x),~
** Processing line: ~ y: vy(start_of_tongue.y),~
** Processing line: ~ w: vw(2),~
** Processing line: ~ h: vh(state.tongue_length),~
** Processing line: ~ path: 'sprites/square-pink.png',~
** Processing line: ~ angle_anchor_y: 0,~
** Processing line: ~ angle: state.tongue_angle - 90 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.sprites << state.objects.map { |o| [vx(o.x), vy(o.y), vw(o.w), vh(o.h), o.path] }~
** 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: ~ 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: ~ path: 'sprites/square-gray.png',~
** Processing line: ~ a: 128~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ render_player~
** Processing line: ~ outputs.sprites << [vx(2315), vy(45), vw(569), vh(402), 'sprites/square-blue.png', 0, 40]~
** Processing line: ~~
** Processing line: ~ # Label in top left of the screen~
** Processing line: ~ outputs.primitives << [20, 640, 180, 70, 255, 255, 255, 128].solid~
** Processing line: ~ outputs.primitives << [30, 700, "Stuff: #{state.stuff_score} of #{$mugs.count}", 1].label~
** Processing line: ~ outputs.primitives << [30, 670, "Time: #{"%.2f" % state.stuff_time}", 1].label~
** Processing line: ~~
** Processing line: ~ if state.god_mode~
** Processing line: ~ if state.map_saved_at > 0 && state.map_saved_at.elapsed_time < 120~
** Processing line: ~ outputs.primitives << [920, 670, 'Map has been exported!', 1, 0, 50, 100, 50].label~
** Processing line: ~ end~
** 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: ~ end~
** Processing line: ~~
** Processing line: ~ render_mini_map~
** Processing line: ~ outputs.primitives << [0, 0, 1280, 720, 255, 255, 255, 255 * state.game_start_at.ease(60, :flip)].solid~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_mini_map~
** Processing line: ~ x, y = 1170, 10~
** Processing line: ~ outputs.primitives << [x, y, 100, 58, 0, 0, 0, 200].solid~
** Processing line: ~ outputs.primitives << [x + args.state.x.fdiv(100) - 1, y + args.state.y.fdiv(100) - 1, 2, 2, 0, 255, 0].solid~
** Processing line: ~ t_start = start_of_tongue~
** Processing line: ~ t_end = end_of_tongue~
** Processing line: ~ outputs.primitives << [~
** Processing line: ~ x + t_start.x.fdiv(100), y + t_start.y.fdiv(100),~
** Processing line: ~ x + t_end.x.fdiv(100), y + t_end.y.fdiv(100),~
** Processing line: ~ 255, 255, 255~
** Processing line: ~ ].line~
** Processing line: ~~
** Processing line: ~ state.objects.each do |o|~
** Processing line: ~ outputs.primitives << [x + o.x.fdiv(100) - 1, y + o.y.fdiv(100) - 1, 2, 2, 200, 200, 0].solid~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_camera percentage_override = nil~
** Processing line: ~ percentage = percentage_override || (0.2 * state.camera_scale)~
** Processing line: ~ target_scale = state.target_camera_scale~
** Processing line: ~ distance_scale = target_scale - state.camera_scale~
** Processing line: ~ state.camera_scale += distance_scale * percentage~
** Processing line: ~~
** Processing line: ~ target_x = state.x * state.target_camera_scale~
** Processing line: ~ target_y = state.y * state.target_camera_scale~
** Processing line: ~~
** Processing line: ~ distance_x = target_x - (state.camera_x + 640)~
** Processing line: ~ distance_y = target_y - (state.camera_y + 360)~
** Processing line: ~ state.camera_x += distance_x * percentage if distance_x.abs > 1~
** Processing line: ~ state.camera_y += distance_y * percentage if distance_y.abs > 1~
** Processing line: ~ state.camera_x = 0 if state.camera_x < 0~
** Processing line: ~ state.camera_y = 0 if state.camera_y < 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def vx x~
** Processing line: ~ (x * state.camera_scale) - state.camera_x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def vy y~
** Processing line: ~ (y * state.camera_scale) - state.camera_y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def vw w~
** Processing line: ~ w * state.camera_scale~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def vh h~
** Processing line: ~ h * state.camera_scale~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc~
** Processing line: ~ calc_camera~
** Processing line: ~ calc_world_lookup~
** Processing line: ~ calc_player~
** Processing line: ~ calc_on_floor~
** Processing line: ~ calc_score~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def set_camera_scale v = nil~
** Processing line: ~ return if v < 0.1~
** Processing line: ~ state.target_camera_scale = v~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs_god_mode~
** Processing line: ~ return unless state.god_mode~
** Processing line: ~~
** Processing line: ~ if inputs.keyboard.key_down.equal_sign || (inputs.keyboard.equal_sign && state.tick_count.mod_zero?(10))~
** Processing line: ~ set_camera_scale state.camera_scale + 0.1~
** Processing line: ~ elsif inputs.keyboard.key_down.hyphen || (inputs.keyboard.hyphen && state.tick_count.mod_zero?(10))~
** Processing line: ~ set_camera_scale state.camera_scale - 0.1~
** Processing line: ~ elsif inputs.keyboard.eight || inputs.keyboard.zero~
** Processing line: ~ set_camera_scale 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if input_up?~
** Processing line: ~ state.y += 10~
** Processing line: ~ state.dy = 0~
** Processing line: ~ elsif input_down?~
** Processing line: ~ state.y -= 10~
** Processing line: ~ state.dy = 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if input_left?~
** Processing line: ~ state.x -= 10~
** Processing line: ~ state.dx = 0~
** Processing line: ~ elsif input_right?~
** Processing line: ~ state.x += 10~
** Processing line: ~ state.dx = 0~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs~
** 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: ~~
** Processing line: ~ def input_up?~
** Processing line: ~ inputs.keyboard.w || inputs.keyboard.up || inputs.keyboard.k~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_up_released?~
** Processing line: ~ inputs.keyboard.key_up.w ||~
** Processing line: ~ inputs.keyboard.key_up.up ||~
** Processing line: ~ inputs.keyboard.key_up.k~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_down?~
** Processing line: ~ inputs.keyboard.s || inputs.keyboard.down || inputs.keyboard.j~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_down_released?~
** Processing line: ~ inputs.keyboard.key_up.s ||~
** Processing line: ~ inputs.keyboard.key_up.down ||~
** Processing line: ~ inputs.keyboard.key_up.j~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_left?~
** Processing line: ~ inputs.keyboard.a || inputs.keyboard.left || inputs.keyboard.h~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_right?~
** Processing line: ~ inputs.keyboard.d || inputs.keyboard.right || inputs.keyboard.l~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def set_object path, w, h~
** Processing line: ~ state.object = path~
** Processing line: ~ state.object_w = w~
** Processing line: ~ state.object_h = h~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def collision_mode~
** Processing line: ~ state.dev_action = :collision_mode~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs_player_movement~
** Processing line: ~ if inputs.keyboard.key_down.g~
** Processing line: ~ state.god_mode = !state.god_mode~
** Processing line: ~ puts state.god_mode~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if inputs.keyboard.key_down.u && state.dev_action == :collision_mode~
** Processing line: ~ state.world = state.world[0..-2]~
** Processing line: ~ state.world_lookup = {}~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if inputs.keyboard.key_down.space && !state.anchor_point~
** Processing line: ~ state.tongue_length = 0~
** Processing line: ~ state.action = :shooting~
** Processing line: ~ outputs.sounds << 'sounds/shooting.wav'~
** Processing line: ~ elsif inputs.keyboard.key_down.space~
** Processing line: ~ state.action = :aiming~
** Processing line: ~ state.anchor_point = nil~
** Processing line: ~ state.tongue_length = 100~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.anchor_point~
** Processing line: ~ if input_up?~
** Processing line: ~ if state.tongue_length >= 105~
** Processing line: ~ state.tongue_length -= 5~
** Processing line: ~ state.dy += 0.8~
** Processing line: ~ end~
** Processing line: ~ elsif input_down?~
** Processing line: ~ state.tongue_length += 5~
** Processing line: ~ state.dy -= 0.8~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if input_left? && state.dx > 1~
** Processing line: ~ state.dx *= 0.98~
** Processing line: ~ elsif input_left? && state.dx < -1~
** Processing line: ~ state.dx *= 1.03~
** Processing line: ~ elsif input_left? && !state.on_floor~
** Processing line: ~ state.dx -= 3~
** Processing line: ~ elsif input_right? && state.dx > 1~
** Processing line: ~ state.dx *= 1.03~
** Processing line: ~ elsif input_right? && state.dx < -1~
** Processing line: ~ state.dx *= 0.98~
** Processing line: ~ elsif input_right? && !state.on_floor~
** Processing line: ~ state.dx += 3~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ if input_left?~
** Processing line: ~ state.tongue_angle += 1.5~
** Processing line: ~ state.tongue_angle = state.tongue_angle~
** Processing line: ~ elsif input_right?~
** Processing line: ~ state.tongue_angle -= 1.5~
** Processing line: ~ state.tongue_angle = state.tongue_angle~
** Processing line: ~ end~
** 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)~
** Processing line: ~ state.world = []~
** 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: ~ 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~
** Processing line: ~ $mugs.map do |x, y, w, h, path|~
** Processing line: ~ state.objects << [x, y, w, h, path]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_world_lookup~
** Processing line: ~ if state.tile_size != state.previous_tile_size~
** Processing line: ~ state.previous_tile_size = state.tile_size~
** Processing line: ~ state.world_lookup = {}~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return if state.world_lookup.keys.length > 0~
** Processing line: ~ return unless state.world.length > 0~
** 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: ~ 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: ~ s = state.tile_size~
** Processing line: ~ w ||= s~
** Processing line: ~ 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: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_pendulum~
** Processing line: ~ return if !state.anchor_point~
** Processing line: ~ target_x = state.anchor_point.x - start_of_tongue.x~
** Processing line: ~ target_y = state.anchor_point.y -~
** Processing line: ~ state.tongue_length - 5 - 20 - state.player_height~
** Processing line: ~~
** Processing line: ~ diff_y = state.y - target_y~
** Processing line: ~~
** Processing line: ~ if target_x > 0~
** Processing line: ~ state.dx += 0.6~
** Processing line: ~ elsif target_x < 0~
** Processing line: ~ state.dx -= 0.6~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if diff_y > 0~
** Processing line: ~ state.dy -= 0.1~
** Processing line: ~ elsif diff_y < 0~
** Processing line: ~ state.dy += 0.1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.dx *= 0.99~
** Processing line: ~~
** Processing line: ~ if state.dy.abs < 2~
** Processing line: ~ state.dy *= 0.8~
** Processing line: ~ else~
** Processing line: ~ state.dy *= 0.90~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.tongue_length && state.y~
** Processing line: ~ state.dy += state.tongue_angle.vector_y state.tongue_length.fdiv(1000)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_tongue_angle~
** Processing line: ~ return unless state.anchor_point~
** Processing line: ~ state.tongue_angle = args.geometry.angle_from state.anchor_point, start_of_tongue~
** Processing line: ~ state.tongue_length = args.geometry.distance(start_of_tongue, state.anchor_point)~
** Processing line: ~ state.tongue_length = state.tongue_length.greater(100)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def player_from_end_of_tongue~
** Processing line: ~ p = state.tongue_angle.vector(state.tongue_length)~
** Processing line: ~ derived_start = [state.anchor_point.x - p.x, state.anchor_point.y - p.y]~
** Processing line: ~ derived_start.x -= state.player_width.half~
** Processing line: ~ derived_start.y -= state.player_height.half~
** Processing line: ~ derived_start~
** Processing line: ~ end~
** 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: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_shooting~
** Processing line: ~ return unless state.action == :shooting~
** Processing line: ~ state.tongue_length += 30~
** Processing line: ~ potential_anchor = end_of_tongue~
** Processing line: ~ if potential_anchor.x <= 0~
** Processing line: ~ state.anchor_point = potential_anchor~
** Processing line: ~ state.action = :anchored~
** Processing line: ~ outputs.sounds << 'sounds/attached.wav'~
** Processing line: ~ elsif potential_anchor.x >= 10000~
** Processing line: ~ state.anchor_point = potential_anchor~
** Processing line: ~ state.action = :anchored~
** Processing line: ~ outputs.sounds << 'sounds/attached.wav'~
** Processing line: ~ elsif potential_anchor.y <= 0~
** Processing line: ~ state.anchor_point = potential_anchor~
** Processing line: ~ state.action = :anchored~
** Processing line: ~ outputs.sounds << 'sounds/attached.wav'~
** Processing line: ~ elsif potential_anchor.y >= 5875~
** Processing line: ~ state.anchor_point = potential_anchor~
** 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: ~ 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: ~ end.first~
** Processing line: ~ if collision~
** Processing line: ~ state.anchor_point = potential_anchor~
** Processing line: ~ state.action = :anchored~
** Processing line: ~ outputs.sounds << 'sounds/attached.wav'~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_player~
** Processing line: ~ calc_shooting~
** Processing line: ~ if !state.god_mode~
** Processing line: ~ state.dy += state.gravity # Since acceleration is the change in velocity, the change in y (dy) increases every frame~
** Processing line: ~ state.dx += state.dx * state.air~
** Processing line: ~ end~
** Processing line: ~ calc_pendulum~
** Processing line: ~ calc_box_collision~
** Processing line: ~ calc_edge_collision~
** Processing line: ~ if !state.god_mode~
** Processing line: ~ state.y += state.dy~
** Processing line: ~ state.x += state.dx~
** Processing line: ~ end~
** Processing line: ~ calc_tongue_angle~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_box_collision~
** Processing line: ~ return unless state.world_lookup.keys.length > 0~
** Processing line: ~ collision_floor~
** Processing line: ~ collision_left~
** Processing line: ~ collision_right~
** Processing line: ~ collision_ceiling~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_edge_collision~
** Processing line: ~ # Ensures that player doesn't fall below the map~
** Processing line: ~ if next_y < 0 && state.dy < 0~
** Processing line: ~ state.y = 0~
** Processing line: ~ state.dy = state.dy.abs * 0.8~
** Processing line: ~ state.collision_on_y = true~
** Processing line: ~ # Ensures player doesn't go insanely high~
** Processing line: ~ elsif next_y > 5875 - state.tile_size && state.dy > 0~
** Processing line: ~ state.y = 5875 - state.tile_size~
** Processing line: ~ state.dy = state.dy.abs * 0.8 * -1~
** Processing line: ~ state.collision_on_y = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Ensures that player remains in the horizontal range its supposed to~
** Processing line: ~ if state.x >= 10000 - state.tile_size && state.dx > 0~
** Processing line: ~ state.x = 10000 - state.tile_size~
** Processing line: ~ state.dx = state.dx.abs * 0.8 * -1~
** Processing line: ~ state.collision_on_x = true~
** Processing line: ~ elsif state.x <= 0 && state.dx < 0~
** Processing line: ~ state.x = 0~
** Processing line: ~ state.dx = state.dx.abs * 0.8~
** Processing line: ~ state.collision_on_x = true~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def next_y~
** Processing line: ~ state.y + state.dy~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def next_x~
** Processing line: ~ if state.dx < 0~
** Processing line: ~ return (state.x + state.dx) - (state.tile_size - state.player_width)~
** Processing line: ~ else~
** Processing line: ~ return (state.x + state.dx) + (state.tile_size - state.player_width)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def collision_floor~
** Processing line: ~ return unless state.dy <= 0~
** Processing line: ~~
** Processing line: ~ player_rect = [state.x, next_y, state.tile_size, state.tile_size]~
** Processing line: ~~
** Processing line: ~ # Runs through all the sprites on the field and determines if the player hits the bottom of sprite (hence "-0.1" above)~
** Processing line: ~ floor_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:top].intersect_rect?(player_rect, state.collision_tolerance) }~
** Processing line: ~ .first~
** Processing line: ~~
** Processing line: ~ return unless floor_collisions~
** Processing line: ~ state.y = floor_collisions[:top].top~
** Processing line: ~ state.dy = state.dy.abs * 0.8~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def collision_left~
** Processing line: ~ return unless state.dx < 0~
** Processing line: ~ player_rect = [next_x, state.y, state.tile_size, state.tile_size]~
** Processing line: ~~
** Processing line: ~ # Runs through all the sprites on the field and determines if the player hits the left side of sprite (hence "-0.1" above)~
** Processing line: ~ left_side_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }~
** 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.dx = state.dy.abs * 0.8~
** Processing line: ~ state.collision_on_x = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def collision_right~
** Processing line: ~ return unless state.dx > 0~
** Processing line: ~~
** Processing line: ~ player_rect = [next_x, state.y, state.tile_size, state.tile_size]~
** Processing line: ~ # Runs through all the sprites on the field and determines if the player hits the right side of sprite (hence "-0.1" above)~
** Processing line: ~ right_side_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:left_right].intersect_rect?(player_rect, state.collision_tolerance) }~
** 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.dx = state.dx.abs * 0.8 * -1~
** Processing line: ~ state.collision_on_x = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def collision_ceiling~
** Processing line: ~ return unless state.dy > 0~
** Processing line: ~~
** Processing line: ~ player_rect = [state.x, next_y, state.player_width, state.player_height]~
** Processing line: ~~
** Processing line: ~ # Runs through all the sprites on the field and determines if the player hits the ceiling of sprite (hence "+0.1" above)~
** Processing line: ~ ceil_collisions = state.world_collision_rects~
** Processing line: ~ .find_all { |r| r[:bottom].intersect_rect?(player_rect, state.collision_tolerance) }~
** 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.dy = state.dy.abs * 0.8 * -1~
** Processing line: ~ state.collision_on_y = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_coord point~
** Processing line: ~ # Integer divides (idiv) point.x to turn into grid~
** Processing line: ~ # Then, you can just multiply each integer by state.tile_size~
** Processing line: ~ # later and huzzah. Grid coordinates~
** Processing line: ~ [point.x.idiv(state.tile_size), point.y.idiv(state.tile_size)]~
** 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 += 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: ~ state.map_saved_at = state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_export_stage~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_score~
** Processing line: ~ return unless state.scene == :game~
** Processing line: ~ player = [state.x, state.y, state.player_width, state.player_height]~
** Processing line: ~ collected = state.objects.find_all { |s| s.intersect_rect? player }~
** Processing line: ~ state.stuff_score += collected.length~
** Processing line: ~ if collected.length > 0~
** Processing line: ~ outputs.sounds << 'sounds/collectable.wav'~
** Processing line: ~ end~
** Processing line: ~ state.objects = state.objects.reject { |s| collected.include? s }~
** Processing line: ~ state.stuff_time += 0.01~
** Processing line: ~ if state.objects.length == 0~
** Processing line: ~ if !state.stuff_best_time || state.stuff_time < state.stuff_best_time~
** Processing line: ~ state.stuff_best_time = state.stuff_time~
** Processing line: ~ end~
** Processing line: ~ state.game_over_at = nil~
** Processing line: ~ state.scene = :ending~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_on_floor~
** Processing line: ~ if state.action == :anchored~
** Processing line: ~ state.on_floor = false~
** Processing line: ~ state.on_floor_debounce = 30~
** Processing line: ~ else~
** Processing line: ~ state.on_floor_debounce ||= 30~
** Processing line: ~~
** Processing line: ~ if state.dy.round != 0~
** Processing line: ~ state.on_floor_debounce = 30~
** Processing line: ~ state.on_floor = false~
** Processing line: ~ else~
** Processing line: ~ state.on_floor_debounce -= 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.on_floor_debounce <= 0~
** Processing line: ~ state.on_floor_debounce = 0~
** Processing line: ~ state.on_floor = true~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_player~
** Processing line: ~ path = "sprites/square-green.png"~
** Processing line: ~ angle = 0~
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y) - 30, "dy: #{state.dy.round}"]~
** Processing line: ~ if state.action == :idle~
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "IDLE"]~
** Processing line: ~ path = "sprites/square-green.png"~
** Processing line: ~ elsif state.action == :aiming && !state.on_floor~
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "AIMING AIR BORN"]~
** Processing line: ~ angle = state.tongue_angle - 90~
** Processing line: ~ path = "sprites/square-green.png"~
** Processing line: ~ elsif state.action == :aiming # ON THE GROUND~
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "AIMING GROUND"]~
** Processing line: ~ path = "sprites/square-green.png"~
** Processing line: ~ elsif state.action == :shooting && !state.on_floor~
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "SHOOTING AIR BORN"]~
** Processing line: ~ path = "sprites/square-green.png"~
** Processing line: ~ angle = state.tongue_angle - 90~
** Processing line: ~ elsif state.action == :shooting~
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "SHOOTING ON GROUND"]~
** Processing line: ~ path = "sprites/square-green.png"~
** Processing line: ~ elsif state.action == :anchored~
** Processing line: ~ # outputs.labels << [vx(state.x), vy(state.y), "SWINGING"]~
** Processing line: ~ angle = state.tongue_angle - 90~
** Processing line: ~ path = "sprites/square-green.png"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.sprites << [vx(state.x),~
** Processing line: ~ vy(state.y),~
** Processing line: ~ vw(state.player_width),~
** Processing line: ~ vh(state.player_height),~
** Processing line: ~ path,~
** Processing line: ~ angle]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_player_old~
** Processing line: ~ # Player~
** Processing line: ~ if state.action == :aiming~
** Processing line: ~ path = 'sprites\frg\idle\frog_idle.png'~
** Processing line: ~ if state.dx > 2~
** Processing line: ~ #directional right sprite was here but i needa redo it~
** Processing line: ~ path = 'sprites\frg\anchor\frog-anchor-0.png'~
** Processing line: ~ #directional left sprite was here but i needa redo it~
** Processing line: ~ elsif state.dx < -2~
** Processing line: ~ path = 'sprites\frg\anchor\frog-anchor-0.png'~
** Processing line: ~ end~
** Processing line: ~ outputs.sprites << [vx(state.x),~
** Processing line: ~ vy(state.y),~
** Processing line: ~ vw(state.player_width),~
** Processing line: ~ vh(state.player_height),~
** Processing line: ~ path,~
** Processing line: ~ (state.tongue_angle - 90)]~
** Processing line: ~ elsif state.action == :anchored || state.action == :shooting~
** Processing line: ~ outputs.sprites << [vx(state.x),~
** Processing line: ~ vy(state.y),~
** Processing line: ~ vw(state.player_width),~
** Processing line: ~ vw(state.player_height),~
** Processing line: ~ 'sprites/animations_povfrog/frog_bwah_up.png',~
** Processing line: ~ (state.tongue_angle - 90)]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ $game = CleptoFrog.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ if args.state.scene == :game~
** Processing line: ~ tick_instructions args, "SPACE to SHOOT and RELEASE tongue. LEFT, RIGHT to SWING and BUILD momentum. MINIMAP in bottom right corner.", 360~
** Processing line: ~ end~
** Processing line: ~ $game.args = args~
** Processing line: ~ $game.tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_instructions args, text, y = 715~
** Processing line: ~ return if args.state.key_event_occurred~
** Processing line: ~ if args.inputs.keyboard.directional_vector || args.inputs.keyboard.key_down.space~
** Processing line: ~ args.state.key_event_occurred = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.debug << [0, y - 50, 1280, 60].solid~
** Processing line: ~ args.outputs.debug << [640, y, text, 1, 1, 255, 255, 255].label~
** Processing line: ~ args.outputs.debug << [640, y - 25, "(SPACE to dismiss instructions)" , -2, 1, 255, 255, 255].label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Platformer - Clepto Frog - map.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Platformer - Clepto Frog - map.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_platformer/clepto_frog/app/map.rb~
** Processing line: ~ $collisions = [~
** Processing line: ~ [326, 463, 64, 64],~
** Processing line: ~ [274, 462, 64, 64],~
** Processing line: ~ [326, 413, 64, 64],~
** Processing line: ~ [275, 412, 64, 64],~
** Processing line: ~ [124, 651, 64, 64],~
** Processing line: ~ [72, 651, 64, 64],~
** Processing line: ~ [124, 600, 64, 64],~
** Processing line: ~ [69, 599, 64, 64],~
** Processing line: ~ [501, 997, 64, 64],~
** Processing line: ~ [476, 995, 64, 64],~
** Processing line: ~ [3224, 2057, 64, 64],~
** Processing line: ~ [3224, 1994, 64, 64],~
** Processing line: ~ [3225, 1932, 64, 64],~
** Processing line: ~ [3225, 1870, 64, 64],~
** Processing line: ~ [3226, 1806, 64, 64],~
** Processing line: ~ [3224, 1744, 64, 64],~
** Processing line: ~ [3225, 1689, 64, 64],~
** Processing line: ~ [3226, 1660, 64, 64],~
** Processing line: ~ [3161, 1658, 64, 64],~
** Processing line: ~ [3097, 1660, 64, 64],~
** Processing line: ~ [3033, 1658, 64, 64],~
** Processing line: ~ [2969, 1658, 64, 64],~
** Processing line: ~ [2904, 1658, 64, 64],~
** Processing line: ~ [2839, 1657, 64, 64],~
** Processing line: ~ [2773, 1657, 64, 64],~
** Processing line: ~ [2709, 1658, 64, 64],~
** Processing line: ~ [2643, 1657, 64, 64],~
** Processing line: ~ [2577, 1657, 64, 64],~
** Processing line: ~ [2509, 1658, 64, 64],~
** Processing line: ~ [2440, 1658, 64, 64],~
** Processing line: ~ [2371, 1658, 64, 64],~
** Processing line: ~ [2301, 1659, 64, 64],~
** Processing line: ~ [2230, 1659, 64, 64],~
** Processing line: ~ [2159, 1659, 64, 64],~
** Processing line: ~ [2092, 1660, 64, 64],~
** Processing line: ~ [2025, 1661, 64, 64],~
** Processing line: ~ [1958, 1660, 64, 64],~
** Processing line: ~ [1888, 1659, 64, 64],~
** Processing line: ~ [1817, 1657, 64, 64],~
** Processing line: ~ [1745, 1656, 64, 64],~
** Processing line: ~ [1673, 1658, 64, 64],~
** Processing line: ~ [1605, 1660, 64, 64],~
** Processing line: ~ [1536, 1658, 64, 64],~
** Processing line: ~ [1465, 1660, 64, 64],~
** Processing line: ~ [1386, 1960, 64, 64],~
** Processing line: ~ [1384, 1908, 64, 64],~
** Processing line: ~ [1387, 1862, 64, 64],~
** Processing line: ~ [1326, 1863, 64, 64],~
** Processing line: ~ [1302, 1862, 64, 64],~
** Processing line: ~ [1119, 1906, 64, 64],~
** Processing line: ~ [1057, 1905, 64, 64],~
** Processing line: ~ [994, 1905, 64, 64],~
** Processing line: ~ [937, 1904, 64, 64],~
** Processing line: ~ [896, 1904, 64, 64],~
** Processing line: ~ [1001, 1845, 64, 64],~
** Processing line: ~ [1003, 1780, 64, 64],~
** Processing line: ~ [1003, 1718, 64, 64],~
** Processing line: ~ [692, 1958, 64, 64],~
** Processing line: ~ [691, 1900, 64, 64],~
** Processing line: ~ [774, 1861, 64, 64],~
** Processing line: ~ [712, 1861, 64, 64],~
** Processing line: ~ [691, 1863, 64, 64],~
** Processing line: ~ [325, 2133, 64, 64],~
** Processing line: ~ [275, 2134, 64, 64],~
** Processing line: ~ [326, 2082, 64, 64],~
** Processing line: ~ [275, 2082, 64, 64],~
** Processing line: ~ [124, 2321, 64, 64],~
** Processing line: ~ [71, 2320, 64, 64],~
** Processing line: ~ [123, 2267, 64, 64],~
** Processing line: ~ [71, 2268, 64, 64],~
** Processing line: ~ [2354, 1859, 64, 64],~
** Processing line: ~ [2292, 1859, 64, 64],~
** Processing line: ~ [2231, 1857, 64, 64],~
** Processing line: ~ [2198, 1858, 64, 64],~
** Processing line: ~ [2353, 1802, 64, 64],~
** Processing line: ~ [2296, 1798, 64, 64],~
** Processing line: ~ [2233, 1797, 64, 64],~
** Processing line: ~ [2200, 1797, 64, 64],~
** Processing line: ~ [2352, 1742, 64, 64],~
** Processing line: ~ [2288, 1741, 64, 64],~
** Processing line: ~ [2230, 1743, 64, 64],~
** Processing line: ~ [2196, 1743, 64, 64],~
** Processing line: ~ [1736, 460, 64, 64],~
** Processing line: ~ [1735, 400, 64, 64],~
** Processing line: ~ [1736, 339, 64, 64],~
** Processing line: ~ [1736, 275, 64, 64],~
** Processing line: ~ [1738, 210, 64, 64],~
** Processing line: ~ [1735, 145, 64, 64],~
** Processing line: ~ [1735, 87, 64, 64],~
** Processing line: ~ [1736, 51, 64, 64],~
** Processing line: ~ [539, 289, 64, 64],~
** Processing line: ~ [541, 228, 64, 64],~
** Processing line: ~ [626, 191, 64, 64],~
** Processing line: ~ [572, 192, 64, 64],~
** Processing line: ~ [540, 193, 64, 64],~
** Processing line: ~ [965, 233, 64, 64],~
** Processing line: ~ [904, 234, 64, 64],~
** Processing line: ~ [840, 234, 64, 64],~
** Processing line: ~ [779, 234, 64, 64],~
** Processing line: ~ [745, 236, 64, 64],~
** Processing line: ~ [851, 169, 64, 64],~
** Processing line: ~ [849, 108, 64, 64],~
** Processing line: ~ [852, 50, 64, 64],~
** Processing line: ~ [1237, 289, 64, 64],~
** Processing line: ~ [1236, 228, 64, 64],~
** Processing line: ~ [1238, 197, 64, 64],~
** Processing line: ~ [1181, 192, 64, 64],~
** Processing line: ~ [1152, 192, 64, 64],~
** Processing line: ~ [1443, 605, 64, 64],~
** Processing line: ~ [1419, 606, 64, 64],~
** Processing line: ~ [1069, 925, 64, 64],~
** Processing line: ~ [1068, 902, 64, 64],~
** Processing line: ~ [1024, 927, 64, 64],~
** Processing line: ~ [1017, 897, 64, 64],~
** Processing line: ~ [963, 926, 64, 64],~
** Processing line: ~ [958, 898, 64, 64],~
** Processing line: ~ [911, 928, 64, 64],~
** Processing line: ~ [911, 896, 64, 64],~
** Processing line: ~ [2132, 803, 64, 64],~
** Processing line: ~ [2081, 803, 64, 64],~
** Processing line: ~ [2131, 752, 64, 64],~
** Processing line: ~ [2077, 751, 64, 64],~
** Processing line: ~ [2615, 649, 64, 64],~
** Processing line: ~ [2564, 651, 64, 64],~
** Processing line: ~ [2533, 650, 64, 64],~
** Processing line: ~ [2027, 156, 64, 64],~
** Processing line: ~ [1968, 155, 64, 64],~
** Processing line: ~ [1907, 153, 64, 64],~
** Processing line: ~ [1873, 155, 64, 64],~
** Processing line: ~ [2025, 95, 64, 64],~
** Processing line: ~ [1953, 98, 64, 64],~
** Processing line: ~ [1894, 100, 64, 64],~
** Processing line: ~ [1870, 100, 64, 64],~
** Processing line: ~ [2029, 45, 64, 64],~
** Processing line: ~ [1971, 48, 64, 64],~
** Processing line: ~ [1915, 47, 64, 64],~
** Processing line: ~ [1873, 47, 64, 64],~
** Processing line: ~ [3956, 288, 64, 64],~
** Processing line: ~ [3954, 234, 64, 64],~
** Processing line: ~ [4042, 190, 64, 64],~
** Processing line: ~ [3990, 190, 64, 64],~
** Processing line: ~ [3958, 195, 64, 64],~
** Processing line: ~ [3422, 709, 64, 64],~
** Processing line: ~ [3425, 686, 64, 64],~
** Processing line: ~ [3368, 709, 64, 64],~
** Processing line: ~ [3364, 683, 64, 64],~
** Processing line: ~ [3312, 711, 64, 64],~
** Processing line: ~ [3307, 684, 64, 64],~
** Processing line: ~ [3266, 712, 64, 64],~
** Processing line: ~ [3269, 681, 64, 64],~
** Processing line: ~ [4384, 236, 64, 64],~
** Processing line: ~ [4320, 234, 64, 64],~
** Processing line: ~ [4257, 235, 64, 64],~
** Processing line: ~ [4192, 234, 64, 64],~
** Processing line: ~ [4162, 234, 64, 64],~
** Processing line: ~ [4269, 171, 64, 64],~
** Processing line: ~ [4267, 111, 64, 64],~
** Processing line: ~ [4266, 52, 64, 64],~
** Processing line: ~ [4580, 458, 64, 64],~
** Processing line: ~ [4582, 396, 64, 64],~
** Processing line: ~ [4582, 335, 64, 64],~
** Processing line: ~ [4581, 275, 64, 64],~
** Processing line: ~ [4581, 215, 64, 64],~
** Processing line: ~ [4581, 152, 64, 64],~
** Processing line: ~ [4582, 89, 64, 64],~
** Processing line: ~ [4583, 51, 64, 64],~
** Processing line: ~ [4810, 289, 64, 64],~
** Processing line: ~ [4810, 227, 64, 64],~
** Processing line: ~ [4895, 189, 64, 64],~
** Processing line: ~ [4844, 191, 64, 64],~
** Processing line: ~ [4809, 191, 64, 64],~
** Processing line: ~ [5235, 233, 64, 64],~
** Processing line: ~ [5176, 232, 64, 64],~
** Processing line: ~ [5118, 230, 64, 64],~
** Processing line: ~ [5060, 232, 64, 64],~
** Processing line: ~ [5015, 237, 64, 64],~
** Processing line: ~ [5123, 171, 64, 64],~
** Processing line: ~ [5123, 114, 64, 64],~
** Processing line: ~ [5121, 51, 64, 64],~
** Processing line: ~ [5523, 461, 64, 64],~
** Processing line: ~ [5123, 42, 64, 64],~
** Processing line: ~ [5525, 401, 64, 64],~
** Processing line: ~ [5525, 340, 64, 64],~
** Processing line: ~ [5526, 273, 64, 64],~
** Processing line: ~ [5527, 211, 64, 64],~
** Processing line: ~ [5525, 150, 64, 64],~
** Processing line: ~ [5527, 84, 64, 64],~
** Processing line: ~ [5524, 44, 64, 64],~
** Processing line: ~ [5861, 288, 64, 64],~
** Processing line: ~ [5861, 229, 64, 64],~
** Processing line: ~ [5945, 193, 64, 64],~
** Processing line: ~ [5904, 193, 64, 64],~
** Processing line: ~ [5856, 194, 64, 64],~
** Processing line: ~ [6542, 234, 64, 64],~
** Processing line: ~ [6478, 235, 64, 64],~
** Processing line: ~ [6413, 238, 64, 64],~
** Processing line: ~ [6348, 235, 64, 64],~
** Processing line: ~ [6285, 236, 64, 64],~
** Processing line: ~ [6222, 235, 64, 64],~
** Processing line: ~ [6160, 235, 64, 64],~
** Processing line: ~ [6097, 236, 64, 64],~
** Processing line: ~ [6069, 237, 64, 64],~
** Processing line: ~ [6321, 174, 64, 64],~
** Processing line: ~ [6318, 111, 64, 64],~
** Processing line: ~ [6320, 49, 64, 64],~
** Processing line: ~ [6753, 291, 64, 64],~
** Processing line: ~ [6752, 227, 64, 64],~
** Processing line: ~ [6753, 192, 64, 64],~
** Processing line: ~ [6692, 191, 64, 64],~
** Processing line: ~ [6668, 193, 64, 64],~
** Processing line: ~ [6336, 604, 64, 64],~
** Processing line: ~ [6309, 603, 64, 64],~
** Processing line: ~ [7264, 461, 64, 64],~
** Processing line: ~ [7264, 395, 64, 64],~
** Processing line: ~ [7264, 333, 64, 64],~
** Processing line: ~ [7264, 270, 64, 64],~
** Processing line: ~ [7265, 207, 64, 64],~
** Processing line: ~ [7266, 138, 64, 64],~
** Processing line: ~ [7264, 78, 64, 64],~
** Processing line: ~ [7266, 48, 64, 64],~
** Processing line: ~ [7582, 149, 64, 64],~
** Processing line: ~ [7524, 147, 64, 64],~
** Processing line: ~ [7461, 146, 64, 64],~
** Processing line: ~ [7425, 148, 64, 64],~
** Processing line: ~ [7580, 86, 64, 64],~
** Processing line: ~ [7582, 41, 64, 64],~
** Processing line: ~ [7519, 41, 64, 64],~
** Processing line: ~ [7460, 40, 64, 64],~
** Processing line: ~ [7427, 96, 64, 64],~
** Processing line: ~ [7427, 41, 64, 64],~
** Processing line: ~ [8060, 288, 64, 64],~
** Processing line: ~ [8059, 226, 64, 64],~
** Processing line: ~ [8145, 194, 64, 64],~
** Processing line: ~ [8081, 194, 64, 64],~
** Processing line: ~ [8058, 195, 64, 64],~
** Processing line: ~ [8485, 234, 64, 64],~
** Processing line: ~ [8422, 235, 64, 64],~
** Processing line: ~ [8360, 235, 64, 64],~
** Processing line: ~ [8296, 235, 64, 64],~
** Processing line: ~ [8266, 237, 64, 64],~
** Processing line: ~ [8371, 173, 64, 64],~
** Processing line: ~ [8370, 117, 64, 64],~
** Processing line: ~ [8372, 59, 64, 64],~
** Processing line: ~ [8372, 51, 64, 64],~
** Processing line: ~ [9147, 192, 64, 64],~
** Processing line: ~ [9063, 287, 64, 64],~
** Processing line: ~ [9064, 225, 64, 64],~
** Processing line: ~ [9085, 193, 64, 64],~
** Processing line: ~ [9063, 194, 64, 64],~
** Processing line: ~ [9492, 234, 64, 64],~
** Processing line: ~ [9428, 234, 64, 64],~
** Processing line: ~ [9365, 235, 64, 64],~
** Processing line: ~ [9302, 235, 64, 64],~
** Processing line: ~ [9270, 237, 64, 64],~
** Processing line: ~ [9374, 172, 64, 64],~
** Processing line: ~ [9376, 109, 64, 64],~
** Processing line: ~ [9377, 48, 64, 64],~
** Processing line: ~ [9545, 1060, 64, 64],~
** Processing line: ~ [9482, 1062, 64, 64],~
** Processing line: ~ [9423, 1062, 64, 64],~
** Processing line: ~ [9387, 1062, 64, 64],~
** Processing line: ~ [9541, 999, 64, 64],~
** Processing line: ~ [9542, 953, 64, 64],~
** Processing line: ~ [9478, 953, 64, 64],~
** Processing line: ~ [9388, 999, 64, 64],~
** Processing line: ~ [9414, 953, 64, 64],~
** Processing line: ~ [9389, 953, 64, 64],~
** Processing line: ~ [9294, 1194, 64, 64],~
** Processing line: ~ [9245, 1195, 64, 64],~
** Processing line: ~ [9297, 1143, 64, 64],~
** Processing line: ~ [9245, 1144, 64, 64],~
** Processing line: ~ [5575, 1781, 64, 64],~
** Processing line: ~ [5574, 1753, 64, 64],~
** Processing line: ~ [5522, 1782, 64, 64],~
** Processing line: ~ [5518, 1753, 64, 64],~
** Processing line: ~ [5472, 1783, 64, 64],~
** Processing line: ~ [5471, 1751, 64, 64],~
** Processing line: ~ [5419, 1781, 64, 64],~
** Processing line: ~ [5421, 1749, 64, 64],~
** Processing line: ~ [500, 3207, 64, 64],~
** Processing line: ~ [477, 3205, 64, 64],~
** Processing line: ~ [1282, 3214, 64, 64],~
** Processing line: ~ [1221, 3214, 64, 64],~
** Processing line: ~ [1188, 3215, 64, 64],~
** Processing line: ~ [1345, 3103, 64, 64],~
** Processing line: ~ [1288, 3103, 64, 64],~
** Processing line: ~ [1231, 3104, 64, 64],~
** Processing line: ~ [1190, 3153, 64, 64],~
** Processing line: ~ [1189, 3105, 64, 64],~
** Processing line: ~ [2255, 3508, 64, 64],~
** Processing line: ~ [2206, 3510, 64, 64],~
** Processing line: ~ [2254, 3458, 64, 64],~
** Processing line: ~ [2202, 3458, 64, 64],~
** Processing line: ~ [2754, 2930, 64, 64],~
** Processing line: ~ [2726, 2932, 64, 64],~
** Processing line: ~ [3408, 2874, 64, 64],~
** Processing line: ~ [3407, 2849, 64, 64],~
** Processing line: ~ [3345, 2872, 64, 64],~
** Processing line: ~ [3342, 2847, 64, 64],~
** Processing line: ~ [3284, 2874, 64, 64],~
** Processing line: ~ [3284, 2848, 64, 64],~
** Processing line: ~ [3248, 2878, 64, 64],~
** Processing line: ~ [3252, 2848, 64, 64],~
** Processing line: ~ [3953, 3274, 64, 64],~
** Processing line: ~ [3899, 3277, 64, 64],~
** Processing line: ~ [3951, 3222, 64, 64],~
** Processing line: ~ [3900, 3222, 64, 64],~
** Processing line: ~ [4310, 2968, 64, 64],~
** Processing line: ~ [4246, 2969, 64, 64],~
** Processing line: ~ [4183, 2965, 64, 64],~
** Processing line: ~ [4153, 2967, 64, 64],~
** Processing line: ~ [4311, 2910, 64, 64],~
** Processing line: ~ [4308, 2856, 64, 64],~
** Processing line: ~ [4251, 2855, 64, 64],~
** Processing line: ~ [4197, 2857, 64, 64],~
** Processing line: ~ [5466, 3184, 64, 64],~
** Processing line: ~ [5466, 3158, 64, 64],~
** Processing line: ~ [5404, 3184, 64, 64],~
** Processing line: ~ [5404, 3156, 64, 64],~
** Processing line: ~ [5343, 3185, 64, 64],~
** Processing line: ~ [5342, 3156, 64, 64],~
** Processing line: ~ [5308, 3185, 64, 64],~
** Processing line: ~ [5307, 3154, 64, 64],~
** Processing line: ~ [6163, 2950, 64, 64],~
** Processing line: ~ [6111, 2952, 64, 64],~
** Processing line: ~ [6164, 2898, 64, 64],~
** Processing line: ~ [6113, 2897, 64, 64],~
** Processing line: ~ [7725, 3156, 64, 64],~
** Processing line: ~ [7661, 3157, 64, 64],~
** Processing line: ~ [7598, 3157, 64, 64],~
** Processing line: ~ [7533, 3156, 64, 64],~
** Processing line: ~ [7468, 3156, 64, 64],~
** Processing line: ~ [7401, 3156, 64, 64],~
** Processing line: ~ [7335, 3157, 64, 64],~
** Processing line: ~ [7270, 3157, 64, 64],~
** Processing line: ~ [7208, 3157, 64, 64],~
** Processing line: ~ [7146, 3157, 64, 64],~
** Processing line: ~ [7134, 3159, 64, 64],~
** Processing line: ~ [6685, 3726, 64, 64],~
** Processing line: ~ [6685, 3663, 64, 64],~
** Processing line: ~ [6683, 3602, 64, 64],~
** Processing line: ~ [6679, 3538, 64, 64],~
** Processing line: ~ [6680, 3474, 64, 64],~
** Processing line: ~ [6682, 3413, 64, 64],~
** Processing line: ~ [6681, 3347, 64, 64],~
** Processing line: ~ [6681, 3287, 64, 64],~
** Processing line: ~ [6682, 3223, 64, 64],~
** Processing line: ~ [6683, 3161, 64, 64],~
** Processing line: ~ [6682, 3102, 64, 64],~
** Processing line: ~ [6684, 3042, 64, 64],~
** Processing line: ~ [6685, 2980, 64, 64],~
** Processing line: ~ [6685, 2920, 64, 64],~
** Processing line: ~ [6683, 2859, 64, 64],~
** Processing line: ~ [6684, 2801, 64, 64],~
** Processing line: ~ [6686, 2743, 64, 64],~
** Processing line: ~ [6683, 2683, 64, 64],~
** Processing line: ~ [6681, 2622, 64, 64],~
** Processing line: ~ [6682, 2559, 64, 64],~
** Processing line: ~ [6683, 2498, 64, 64],~
** Processing line: ~ [6685, 2434, 64, 64],~
** Processing line: ~ [6683, 2371, 64, 64],~
** Processing line: ~ [6683, 2306, 64, 64],~
** Processing line: ~ [6684, 2242, 64, 64],~
** Processing line: ~ [6683, 2177, 64, 64],~
** Processing line: ~ [6683, 2112, 64, 64],~
** Processing line: ~ [6683, 2049, 64, 64],~
** Processing line: ~ [6683, 1985, 64, 64],~
** Processing line: ~ [6682, 1923, 64, 64],~
** Processing line: ~ [6683, 1860, 64, 64],~
** Processing line: ~ [6685, 1797, 64, 64],~
** Processing line: ~ [6684, 1735, 64, 64],~
** Processing line: ~ [6685, 1724, 64, 64],~
** Processing line: ~ [7088, 1967, 64, 64],~
** Processing line: ~ [7026, 1966, 64, 64],~
** Processing line: ~ [6964, 1967, 64, 64],~
** Processing line: ~ [6900, 1965, 64, 64],~
** Processing line: ~ [6869, 1969, 64, 64],~
** Processing line: ~ [6972, 1904, 64, 64],~
** Processing line: ~ [6974, 1840, 64, 64],~
** Processing line: ~ [6971, 1776, 64, 64],~
** Processing line: ~ [6971, 1716, 64, 64],~
** Processing line: ~ [7168, 1979, 64, 64],~
** Processing line: ~ [7170, 1919, 64, 64],~
** Processing line: ~ [7169, 1882, 64, 64],~
** Processing line: ~ [7115, 1880, 64, 64],~
** Processing line: ~ [7086, 1881, 64, 64],~
** Processing line: ~ [7725, 1837, 64, 64],~
** Processing line: ~ [7724, 1776, 64, 64],~
** Processing line: ~ [7724, 1728, 64, 64],~
** Processing line: ~ [7661, 1727, 64, 64],~
** Processing line: ~ [7603, 1728, 64, 64],~
** Processing line: ~ [7571, 1837, 64, 64],~
** Processing line: ~ [7570, 1774, 64, 64],~
** Processing line: ~ [7572, 1725, 64, 64],~
** Processing line: ~ [7859, 2134, 64, 64],~
** Processing line: ~ [7858, 2070, 64, 64],~
** Processing line: ~ [7858, 2008, 64, 64],~
** Processing line: ~ [7860, 1942, 64, 64],~
** Processing line: ~ [7856, 1878, 64, 64],~
** Processing line: ~ [7860, 1813, 64, 64],~
** Processing line: ~ [7859, 1750, 64, 64],~
** Processing line: ~ [7856, 1724, 64, 64],~
** Processing line: ~ [8155, 1837, 64, 64],~
** Processing line: ~ [8092, 1839, 64, 64],~
** Processing line: ~ [8032, 1838, 64, 64],~
** Processing line: ~ [7999, 1839, 64, 64],~
** Processing line: ~ [8153, 1773, 64, 64],~
** Processing line: ~ [8154, 1731, 64, 64],~
** Processing line: ~ [8090, 1730, 64, 64],~
** Processing line: ~ [8035, 1732, 64, 64],~
** Processing line: ~ [8003, 1776, 64, 64],~
** Processing line: ~ [8003, 1730, 64, 64],~
** Processing line: ~ [8421, 1978, 64, 64],~
** Processing line: ~ [8420, 1917, 64, 64],~
** Processing line: ~ [8505, 1878, 64, 64],~
** Processing line: ~ [8443, 1881, 64, 64],~
** Processing line: ~ [8420, 1882, 64, 64],~
** Processing line: ~ [8847, 1908, 64, 64],~
** Processing line: ~ [8783, 1908, 64, 64],~
** Processing line: ~ [8718, 1910, 64, 64],~
** Processing line: ~ [8654, 1910, 64, 64],~
** Processing line: ~ [8628, 1911, 64, 64],~
** Processing line: ~ [8729, 1847, 64, 64],~
** Processing line: ~ [8731, 1781, 64, 64],~
** Processing line: ~ [8731, 1721, 64, 64],~
** Processing line: ~ [9058, 2135, 64, 64],~
** Processing line: ~ [9056, 2073, 64, 64],~
** Processing line: ~ [9058, 2006, 64, 64],~
** Processing line: ~ [9057, 1939, 64, 64],~
** Processing line: ~ [9058, 1876, 64, 64],~
** Processing line: ~ [9056, 1810, 64, 64],~
** Processing line: ~ [9059, 1745, 64, 64],~
** Processing line: ~ [9060, 1722, 64, 64],~
** Processing line: ~ [9273, 1977, 64, 64],~
** Processing line: ~ [9273, 1912, 64, 64],~
** Processing line: ~ [9358, 1883, 64, 64],~
** Processing line: ~ [9298, 1881, 64, 64],~
** Processing line: ~ [9270, 1883, 64, 64],~
** Processing line: ~ [9699, 1910, 64, 64],~
** Processing line: ~ [9637, 1910, 64, 64],~
** Processing line: ~ [9576, 1910, 64, 64],~
** Processing line: ~ [9512, 1911, 64, 64],~
** Processing line: ~ [9477, 1912, 64, 64],~
** Processing line: ~ [9584, 1846, 64, 64],~
** Processing line: ~ [9585, 1783, 64, 64],~
** Processing line: ~ [9586, 1719, 64, 64],~
** Processing line: ~ [8320, 2788, 64, 64],~
** Processing line: ~ [8256, 2789, 64, 64],~
** Processing line: ~ [8192, 2789, 64, 64],~
** Processing line: ~ [8180, 2789, 64, 64],~
** Processing line: ~ [8319, 2730, 64, 64],~
** Processing line: ~ [8319, 2671, 64, 64],~
** Processing line: ~ [8319, 2639, 64, 64],~
** Processing line: ~ [8259, 2639, 64, 64],~
** Processing line: ~ [8202, 2639, 64, 64],~
** Processing line: ~ [8179, 2727, 64, 64],~
** Processing line: ~ [8178, 2665, 64, 64],~
** Processing line: ~ [8177, 2636, 64, 64],~
** Processing line: ~ [9360, 3138, 64, 64],~
** Processing line: ~ [9296, 3137, 64, 64],~
** Processing line: ~ [9235, 3139, 64, 64],~
** Processing line: ~ [9174, 3139, 64, 64],~
** Processing line: ~ [9113, 3138, 64, 64],~
** Processing line: ~ [9050, 3138, 64, 64],~
** Processing line: ~ [8988, 3138, 64, 64],~
** Processing line: ~ [8925, 3138, 64, 64],~
** Processing line: ~ [8860, 3136, 64, 64],~
** Processing line: ~ [8797, 3136, 64, 64],~
** Processing line: ~ [8770, 3138, 64, 64],~
** Processing line: ~ [8827, 4171, 64, 64],~
** Processing line: ~ [8827, 4107, 64, 64],~
** Processing line: ~ [8827, 4043, 64, 64],~
** Processing line: ~ [8827, 3978, 64, 64],~
** Processing line: ~ [8825, 3914, 64, 64],~
** Processing line: ~ [8824, 3858, 64, 64],~
** Processing line: ~ [9635, 4234, 64, 64],~
** Processing line: ~ [9584, 4235, 64, 64],~
** Processing line: ~ [9634, 4187, 64, 64],~
** Processing line: ~ [9582, 4183, 64, 64],~
** Processing line: ~ [9402, 5114, 64, 64],~
** Processing line: ~ [9402, 5087, 64, 64],~
** Processing line: ~ [9347, 5113, 64, 64],~
** Processing line: ~ [9345, 5086, 64, 64],~
** Processing line: ~ [9287, 5114, 64, 64],~
** Processing line: ~ [9285, 5085, 64, 64],~
** Processing line: ~ [9245, 5114, 64, 64],~
** Processing line: ~ [9244, 5086, 64, 64],~
** Processing line: ~ [9336, 5445, 64, 64],~
** Processing line: ~ [9285, 5445, 64, 64],~
** Processing line: ~ [9337, 5395, 64, 64],~
** Processing line: ~ [9283, 5393, 64, 64],~
** Processing line: ~ [8884, 4968, 64, 64],~
** Processing line: ~ [8884, 4939, 64, 64],~
** Processing line: ~ [8822, 4967, 64, 64],~
** Processing line: ~ [8823, 4940, 64, 64],~
** Processing line: ~ [8765, 4967, 64, 64],~
** Processing line: ~ [8762, 4937, 64, 64],~
** Processing line: ~ [8726, 4969, 64, 64],~
** Processing line: ~ [8727, 4939, 64, 64],~
** Processing line: ~ [7946, 5248, 64, 64],~
** Processing line: ~ [7945, 5220, 64, 64],~
** Processing line: ~ [7887, 5248, 64, 64],~
** Processing line: ~ [7886, 5219, 64, 64],~
** Processing line: ~ [7830, 5248, 64, 64],~
** Processing line: ~ [7827, 5218, 64, 64],~
** Processing line: ~ [7781, 5248, 64, 64],~
** Processing line: ~ [7781, 5216, 64, 64],~
** Processing line: ~ [6648, 4762, 64, 64],~
** Processing line: ~ [6621, 4761, 64, 64],~
** Processing line: ~ [5011, 4446, 64, 64],~
** Processing line: ~ [4982, 4444, 64, 64],~
** Processing line: ~ [4146, 4641, 64, 64],~
** Processing line: ~ [4092, 4643, 64, 64],~
** Processing line: ~ [4145, 4589, 64, 64],~
** Processing line: ~ [4091, 4590, 64, 64],~
** Processing line: ~ [4139, 4497, 64, 64],~
** Processing line: ~ [4135, 4437, 64, 64],~
** Processing line: ~ [4135, 4383, 64, 64],~
** Processing line: ~ [4078, 4495, 64, 64],~
** Processing line: ~ [4014, 4494, 64, 64],~
** Processing line: ~ [3979, 4496, 64, 64],~
** Processing line: ~ [4074, 4384, 64, 64],~
** Processing line: ~ [4015, 4381, 64, 64],~
** Processing line: ~ [3980, 4433, 64, 64],~
** Processing line: ~ [3981, 4384, 64, 64],~
** Processing line: ~ [3276, 4279, 64, 64],~
** Processing line: ~ [3275, 4218, 64, 64],~
** Processing line: ~ [3276, 4170, 64, 64],~
** Processing line: ~ [3211, 4164, 64, 64],~
** Processing line: ~ [3213, 4280, 64, 64],~
** Processing line: ~ [3156, 4278, 64, 64],~
** Processing line: ~ [3120, 4278, 64, 64],~
** Processing line: ~ [3151, 4163, 64, 64],~
** Processing line: ~ [3120, 4216, 64, 64],~
** Processing line: ~ [3120, 4161, 64, 64],~
** Processing line: ~ [1536, 4171, 64, 64],~
** Processing line: ~ [1536, 4110, 64, 64],~
** Processing line: ~ [1535, 4051, 64, 64],~
** Processing line: ~ [1536, 3991, 64, 64],~
** Processing line: ~ [1536, 3928, 64, 64],~
** Processing line: ~ [1536, 3863, 64, 64],~
** Processing line: ~ [1078, 4605, 64, 64],~
** Processing line: ~ [1076, 4577, 64, 64],~
** Processing line: ~ [1018, 4604, 64, 64],~
** Processing line: ~ [1018, 4575, 64, 64],~
** Processing line: ~ [957, 4606, 64, 64],~
** Processing line: ~ [960, 4575, 64, 64],~
** Processing line: ~ [918, 4602, 64, 64],~
** Processing line: ~ [918, 4580, 64, 64],~
** Processing line: ~ [394, 4164, 64, 64],~
** Processing line: ~ [335, 4163, 64, 64],~
** Processing line: ~ [274, 4161, 64, 64],~
** Processing line: ~ [236, 4163, 64, 64],~
** Processing line: ~ [394, 4140, 64, 64],~
** Processing line: ~ [329, 4139, 64, 64],~
** Processing line: ~ [268, 4139, 64, 64],~
** Processing line: ~ [239, 4139, 64, 64],~
** Processing line: ~ [4326, 5073, 64, 64],~
** Processing line: ~ [4324, 5042, 64, 64],~
** Processing line: ~ [4265, 5074, 64, 64],~
** Processing line: ~ [4263, 5042, 64, 64],~
** Processing line: ~ [4214, 5072, 64, 64],~
** Processing line: ~ [4211, 5043, 64, 64],~
** Processing line: ~ [4166, 5073, 64, 64],~
** Processing line: ~ [4164, 5041, 64, 64],~
** Processing line: ~ [4844, 5216, 64, 64],~
** Processing line: ~ [4844, 5189, 64, 64],~
** Processing line: ~ [4785, 5217, 64, 64],~
** Processing line: ~ [4790, 5187, 64, 64],~
** Processing line: ~ [4726, 5219, 64, 64],~
** Processing line: ~ [4728, 5185, 64, 64],~
** Processing line: ~ [4681, 5218, 64, 64],~
** Processing line: ~ [4684, 5186, 64, 64],~
** Processing line: ~ [4789, 4926, 64, 64],~
** Processing line: ~ [4734, 4928, 64, 64],~
** Processing line: ~ [4787, 4876, 64, 64],~
** Processing line: ~ [4738, 4874, 64, 64],~
** Processing line: ~ [4775, 5548, 64, 64],~
** Processing line: ~ [4775, 5495, 64, 64],~
** Processing line: ~ [4723, 5550, 64, 64],~
** Processing line: ~ [4725, 5494, 64, 64],~
** Processing line: ~ [1360, 5269, 64, 64],~
** Processing line: ~ [1362, 5218, 64, 64],~
** Processing line: ~ [1315, 5266, 64, 64],~
** Processing line: ~ [1282, 5266, 64, 64],~
** Processing line: ~ [1246, 5311, 64, 64],~
** Processing line: ~ [1190, 5312, 64, 64],~
** Processing line: ~ [1136, 5310, 64, 64],~
** Processing line: ~ [1121, 5427, 64, 64],~
** Processing line: ~ [1121, 5370, 64, 64],~
** Processing line: ~ [1074, 5427, 64, 64],~
** Processing line: ~ [1064, 5423, 64, 64],~
** Processing line: ~ [1052, 5417, 64, 64],~
** Processing line: ~ [1050, 5368, 64, 64],~
** Processing line: ~ [1008, 5314, 64, 64],~
** Processing line: ~ [997, 5307, 64, 64],~
** Processing line: ~ [977, 5299, 64, 64],~
** Processing line: ~ [976, 5248, 64, 64],~
** Processing line: ~ [825, 5267, 64, 64],~
** Processing line: ~ [826, 5213, 64, 64],~
** Processing line: ~ [776, 5267, 64, 64],~
** Processing line: ~ [768, 5261, 64, 64],~
** Processing line: ~ [755, 5256, 64, 64],~
** Processing line: ~ [753, 5209, 64, 64],~
** Processing line: ~ [1299, 5206, 64, 64],~
** Processing line: ~ [1238, 5204, 64, 64],~
** Processing line: ~ [1178, 5203, 64, 64],~
** Processing line: ~ [1124, 5204, 64, 64],~
** Processing line: ~ [1065, 5206, 64, 64],~
** Processing line: ~ [1008, 5203, 64, 64],~
** Processing line: ~ [977, 5214, 64, 64],~
** Processing line: ~ [410, 5313, 64, 64],~
** Processing line: ~ [407, 5249, 64, 64],~
** Processing line: ~ [411, 5225, 64, 64],~
** Processing line: ~ [397, 5217, 64, 64],~
** Processing line: ~ [378, 5209, 64, 64],~
** Processing line: ~ [358, 5312, 64, 64],~
** Processing line: ~ [287, 5427, 64, 64],~
** Processing line: ~ [286, 5364, 64, 64],~
** Processing line: ~ [300, 5313, 64, 64],~
** Processing line: ~ [242, 5427, 64, 64],~
** Processing line: ~ [229, 5420, 64, 64],~
** Processing line: ~ [217, 5416, 64, 64],~
** Processing line: ~ [215, 5364, 64, 64],~
** Processing line: ~ [174, 5311, 64, 64],~
** Processing line: ~ [165, 5308, 64, 64],~
** Processing line: ~ [139, 5300, 64, 64],~
** Processing line: ~ [141, 5236, 64, 64],~
** Processing line: ~ [141, 5211, 64, 64],~
** Processing line: ~ [315, 5208, 64, 64],~
** Processing line: ~ [251, 5208, 64, 64],~
** Processing line: ~ [211, 5211, 64, 64],~
** Processing line: ~ [8050, 4060, 64, 64],~
** Processing line: ~ [7992, 4060, 64, 64],~
** Processing line: ~ [7929, 4060, 64, 64],~
** Processing line: ~ [7866, 4061, 64, 64],~
** Processing line: ~ [7828, 4063, 64, 64],~
** Processing line: ~ [7934, 4001, 64, 64],~
** Processing line: ~ [7935, 3936, 64, 64],~
** Processing line: ~ [7935, 3875, 64, 64],~
** Processing line: ~ [7622, 4111, 64, 64],~
** Processing line: ~ [7623, 4049, 64, 64],~
** Processing line: ~ [7707, 4018, 64, 64],~
** Processing line: ~ [7663, 4019, 64, 64],~
** Processing line: ~ [7623, 4017, 64, 64],~
** Processing line: ~ [7193, 4060, 64, 64],~
** Processing line: ~ [7131, 4059, 64, 64],~
** Processing line: ~ [7070, 4057, 64, 64],~
** Processing line: ~ [7008, 4060, 64, 64],~
** Processing line: ~ [6977, 4060, 64, 64],~
** Processing line: ~ [7080, 3998, 64, 64],~
** Processing line: ~ [7081, 3935, 64, 64],~
** Processing line: ~ [7080, 3873, 64, 64],~
** Processing line: ~ [6855, 4019, 64, 64],~
** Processing line: ~ [6790, 4018, 64, 64],~
** Processing line: ~ [6770, 4114, 64, 64],~
** Processing line: ~ [6770, 4060, 64, 64],~
** Processing line: ~ [6768, 4013, 64, 64],~
** Processing line: ~ [6345, 4060, 64, 64],~
** Processing line: ~ [6284, 4062, 64, 64],~
** Processing line: ~ [6222, 4061, 64, 64],~
** Processing line: ~ [6166, 4061, 64, 64],~
** Processing line: ~ [6124, 4066, 64, 64],~
** Processing line: ~ [6226, 3995, 64, 64],~
** Processing line: ~ [6226, 3933, 64, 64],~
** Processing line: ~ [6228, 3868, 64, 64],~
** Processing line: ~ [5916, 4113, 64, 64],~
** Processing line: ~ [5918, 4052, 64, 64],~
** Processing line: ~ [6001, 4018, 64, 64],~
** Processing line: ~ [5941, 4019, 64, 64],~
** Processing line: ~ [5918, 4020, 64, 64],~
** Processing line: ~ [5501, 4059, 64, 64],~
** Processing line: ~ [5439, 4061, 64, 64],~
** Processing line: ~ [5376, 4059, 64, 64],~
** Processing line: ~ [5312, 4058, 64, 64],~
** Processing line: ~ [5285, 4062, 64, 64],~
** Processing line: ~ [5388, 3999, 64, 64],~
** Processing line: ~ [5385, 3941, 64, 64],~
** Processing line: ~ [5384, 3874, 64, 64],~
** Processing line: ~ [5075, 4112, 64, 64],~
** Processing line: ~ [5074, 4051, 64, 64],~
** Processing line: ~ [5158, 4018, 64, 64],~
** Processing line: ~ [5095, 4020, 64, 64],~
** Processing line: ~ [5073, 4018, 64, 64],~
** Processing line: ~ [4549, 3998, 64, 64],~
** Processing line: ~ [4393, 3996, 64, 64],~
** Processing line: ~ [4547, 3938, 64, 64],~
** Processing line: ~ [4547, 3886, 64, 64],~
** Processing line: ~ [4488, 3885, 64, 64],~
** Processing line: ~ [4427, 3885, 64, 64],~
** Processing line: ~ [4395, 3938, 64, 64],~
** Processing line: ~ [4395, 3885, 64, 64],~
** Processing line: ~ [0, 0, 64, 64],~
** Processing line: ~ [0, 1670, 64, 64],~
** Processing line: ~ [6691, 1653, 64, 64],~
** Processing line: ~ [1521, 3792, 64, 64],~
** Processing line: ~ [0, 5137, 64, 64],~
** Processing line: ~ [0, 0, 64, 64],~
** Processing line: ~ [0, 1670, 64, 64],~
** Processing line: ~ [6691, 1653, 64, 64],~
** Processing line: ~ [1521, 3792, 64, 64],~
** Processing line: ~ [0, 5137, 64, 64],~
** Processing line: ~ [1215, 2421, 64, 64],~
** Processing line: ~ [1214, 2360, 64, 64],~
** Processing line: ~ [1211, 2300, 64, 64],~
** Processing line: ~ [1211, 2291, 64, 64],~
** Processing line: ~ [1158, 2420, 64, 64],~
** Processing line: ~ [1156, 2358, 64, 64],~
** Processing line: ~ [1149, 2291, 64, 64],~
** Processing line: ~ [1095, 2420, 64, 64],~
** Processing line: ~ [1030, 2418, 64, 64],~
** Processing line: ~ [966, 2419, 64, 64],~
** Processing line: ~ [903, 2419, 64, 64],~
** Processing line: ~ [852, 2419, 64, 64],~
** Processing line: ~ [1087, 2291, 64, 64],~
** Processing line: ~ [1023, 2291, 64, 64],~
** Processing line: ~ [960, 2291, 64, 64],~
** Processing line: ~ [896, 2292, 64, 64],~
** Processing line: ~ [854, 2355, 64, 64],~
** Processing line: ~ [854, 2292, 64, 64],~
** Processing line: ~ [675, 3017, 64, 64],~
** Processing line: ~ [622, 3017, 64, 64],~
** Processing line: ~ [676, 2965, 64, 64],~
** Processing line: ~ [622, 2965, 64, 64],~
** Processing line: ~ [1560, 3212, 64, 64],~
** Processing line: ~ [1496, 3212, 64, 64],~
** Processing line: ~ [1430, 3211, 64, 64],~
** Processing line: ~ [1346, 3214, 64, 64],~
** Processing line: ~ [1410, 3213, 64, 64],~
** Processing line: ~ [1560, 3147, 64, 64],~
** Processing line: ~ [1559, 3105, 64, 64],~
** Processing line: ~ [1496, 3105, 64, 64],~
** Processing line: ~ [1442, 3105, 64, 64],~
** Processing line: ~ [1412, 3106, 64, 64],~
** Processing line: ~ [918, 4163, 64, 64],~
** Processing line: ~ [854, 4161, 64, 64],~
** Processing line: ~ [792, 4160, 64, 64],~
** Processing line: ~ [729, 4159, 64, 64],~
** Processing line: ~ [666, 4158, 64, 64],~
** Processing line: ~ [601, 4158, 64, 64],~
** Processing line: ~ [537, 4156, 64, 64],~
** Processing line: ~ [918, 4137, 64, 64],~
** Processing line: ~ [854, 4137, 64, 64],~
** Processing line: ~ [789, 4136, 64, 64],~
** Processing line: ~ [726, 4137, 64, 64],~
** Processing line: ~ [661, 4137, 64, 64],~
** Processing line: ~ [599, 4139, 64, 64],~
** Processing line: ~ [538, 4137, 64, 64],~
** Processing line: ~ [5378, 4254, 64, 64],~
** Processing line: ~ [5440, 4204, 64, 64],~
** Processing line: ~ [5405, 4214, 64, 64],~
** Processing line: ~ [5350, 4254, 64, 64],~
** Processing line: ~ [5439, 4177, 64, 64],~
** Processing line: ~ [5413, 4173, 64, 64],~
** Processing line: ~ [5399, 4128, 64, 64],~
** Processing line: ~ [5352, 4200, 64, 64],~
** Processing line: ~ [5352, 4158, 64, 64],~
** Processing line: ~ [5392, 4130, 64, 64],~
** Processing line: ~ [6216, 4251, 64, 64],~
** Processing line: ~ [6190, 4251, 64, 64],~
** Processing line: ~ [6279, 4200, 64, 64],~
** Processing line: ~ [6262, 4205, 64, 64],~
** Processing line: ~ [6233, 4214, 64, 64],~
** Processing line: ~ [6280, 4172, 64, 64],~
** Processing line: ~ [6256, 4169, 64, 64],~
** Processing line: ~ [6239, 4128, 64, 64],~
** Processing line: ~ [6231, 4128, 64, 64],~
** Processing line: ~ [6191, 4195, 64, 64],~
** Processing line: ~ [6190, 4158, 64, 64],~
** Processing line: ~ [7072, 4250, 64, 64],~
** Processing line: ~ [7046, 4250, 64, 64],~
** Processing line: ~ [7133, 4202, 64, 64],~
** Processing line: ~ [7107, 4209, 64, 64],~
** Processing line: ~ [7086, 4214, 64, 64],~
** Processing line: ~ [7133, 4173, 64, 64],~
** Processing line: ~ [7108, 4169, 64, 64],~
** Processing line: ~ [7092, 4127, 64, 64],~
** Processing line: ~ [7084, 4128, 64, 64],~
** Processing line: ~ [7047, 4191, 64, 64],~
** Processing line: ~ [7047, 4156, 64, 64],~
** Processing line: ~ [7926, 4252, 64, 64],~
** Processing line: ~ [7900, 4253, 64, 64],~
** Processing line: ~ [7987, 4202, 64, 64],~
** Processing line: ~ [7965, 4209, 64, 64],~
** Processing line: ~ [7942, 4216, 64, 64],~
** Processing line: ~ [7989, 4174, 64, 64],~
** Processing line: ~ [7970, 4170, 64, 64],~
** Processing line: ~ [7949, 4126, 64, 64],~
** Processing line: ~ [7901, 4196, 64, 64],~
** Processing line: ~ [7900, 4159, 64, 64],~
** Processing line: ~ [7941, 4130, 64, 64],~
** Processing line: ~ [2847, 379, 64, 64],~
** Processing line: ~ [2825, 380, 64, 64],~
** Processing line: ~ [2845, 317, 64, 64],~
** Processing line: ~ [2829, 316, 64, 64],~
** Processing line: ~ [2845, 255, 64, 64],~
** Processing line: ~ [2830, 257, 64, 64],~
** Processing line: ~ [2845, 202, 64, 64],~
** Processing line: ~ [2829, 198, 64, 64],~
** Processing line: ~ [2770, 169, 64, 64],~
** Processing line: ~ [2708, 170, 64, 64],~
** Processing line: ~ [2646, 171, 64, 64],~
** Processing line: ~ [2582, 171, 64, 64],~
** Processing line: ~ [2518, 171, 64, 64],~
** Processing line: ~ [2454, 171, 64, 64],~
** Processing line: ~ [2391, 172, 64, 64],~
** Processing line: ~ [2332, 379, 64, 64],~
** Processing line: ~ [2315, 379, 64, 64],~
** Processing line: ~ [2334, 316, 64, 64],~
** Processing line: ~ [2315, 317, 64, 64],~
** Processing line: ~ [2332, 254, 64, 64],~
** Processing line: ~ [2314, 254, 64, 64],~
** Processing line: ~ [2335, 192, 64, 64],~
** Processing line: ~ [2311, 192, 64, 64],~
** Processing line: ~ [2846, 142, 64, 64],~
** Processing line: ~ [2784, 140, 64, 64],~
** Processing line: ~ [2846, 79, 64, 64],~
** Processing line: ~ [2847, 41, 64, 64],~
** Processing line: ~ [2783, 80, 64, 64],~
** Processing line: ~ [2790, 39, 64, 64],~
** Processing line: ~ [2727, 41, 64, 64],~
** Processing line: ~ [2665, 43, 64, 64],~
** Processing line: ~ [2605, 43, 64, 64],~
** Processing line: ~ [2543, 44, 64, 64],~
** Processing line: ~ [2480, 45, 64, 64],~
** Processing line: ~ [2419, 45, 64, 64],~
** Processing line: ~ [2357, 44, 64, 64],~
** Processing line: ~ [2313, 129, 64, 64],~
** Processing line: ~ [2313, 70, 64, 64],~
** Processing line: ~ [2314, 40, 64, 64],~
** Processing line: ~ [2517, 2385, 64, 64],~
** Processing line: ~ [2452, 2385, 64, 64],~
** Processing line: ~ [2390, 2386, 64, 64],~
** Processing line: ~ [2328, 2386, 64, 64],~
** Processing line: ~ [2264, 2386, 64, 64],~
** Processing line: ~ [2200, 2386, 64, 64],~
** Processing line: ~ [2137, 2387, 64, 64],~
** Processing line: ~ [2071, 2385, 64, 64],~
** Processing line: ~ [2016, 2389, 64, 64],~
** Processing line: ~ [2517, 2341, 64, 64],~
** Processing line: ~ [2518, 2316, 64, 64],~
** Processing line: ~ [2456, 2316, 64, 64],~
** Processing line: ~ [2393, 2316, 64, 64],~
** Processing line: ~ [2328, 2317, 64, 64],~
** Processing line: ~ [2264, 2316, 64, 64],~
** Processing line: ~ [2207, 2318, 64, 64],~
** Processing line: ~ [2144, 2317, 64, 64],~
** Processing line: ~ [2081, 2316, 64, 64],~
** Processing line: ~ [2015, 2342, 64, 64],~
** Processing line: ~ [2016, 2315, 64, 64],~
** Processing line: ~ [869, 3709, 64, 64],~
** Processing line: ~ [819, 3710, 64, 64],~
** Processing line: ~ [869, 3658, 64, 64],~
** Processing line: ~ [820, 3658, 64, 64],~
** Processing line: ~ [0, 0, 64, 64],~
** Processing line: ~ [0, 1670, 64, 64],~
** Processing line: ~ [6691, 1653, 64, 64],~
** Processing line: ~ [1521, 3792, 64, 64],~
** Processing line: ~ [0, 5137, 64, 64],~
** Processing line: ~ [3898, 2400, 64, 64],~
** Processing line: ~ [3835, 2400, 64, 64],~
** Processing line: ~ [3771, 2400, 64, 64],~
** Processing line: ~ [3708, 2401, 64, 64],~
** Processing line: ~ [3646, 2401, 64, 64],~
** Processing line: ~ [3587, 2401, 64, 64],~
** Processing line: ~ [3530, 2401, 64, 64],~
** Processing line: ~ [3897, 2340, 64, 64],~
** Processing line: ~ [3897, 2295, 64, 64],~
** Processing line: ~ [3834, 2296, 64, 64],~
** Processing line: ~ [3773, 2295, 64, 64],~
** Processing line: ~ [3710, 2296, 64, 64],~
** Processing line: ~ [3656, 2295, 64, 64],~
** Processing line: ~ [3593, 2294, 64, 64],~
** Processing line: ~ [3527, 2339, 64, 64],~
** Processing line: ~ [3531, 2293, 64, 64],~
** Processing line: ~ [4152, 2903, 64, 64],~
** Processing line: ~ [4155, 2858, 64, 64],~
** Processing line: ~ [3942, 1306, 64, 64],~
** Processing line: ~ [3942, 1279, 64, 64],~
** Processing line: ~ [3879, 1306, 64, 64],~
** Processing line: ~ [3881, 1278, 64, 64],~
** Processing line: ~ [3819, 1305, 64, 64],~
** Processing line: ~ [3819, 1277, 64, 64],~
** Processing line: ~ [3756, 1306, 64, 64],~
** Processing line: ~ [3756, 1277, 64, 64],~
** Processing line: ~ [3694, 1306, 64, 64],~
** Processing line: ~ [3695, 1277, 64, 64],~
** Processing line: ~ [3631, 1306, 64, 64],~
** Processing line: ~ [3632, 1278, 64, 64],~
** Processing line: ~ [3565, 1306, 64, 64],~
** Processing line: ~ [3567, 1279, 64, 64],~
** Processing line: ~ [4432, 1165, 64, 64],~
** Processing line: ~ [4408, 1163, 64, 64],~
** Processing line: ~ [5123, 1003, 64, 64],~
** Processing line: ~ [5065, 1002, 64, 64],~
** Processing line: ~ [5042, 1002, 64, 64],~
** Processing line: ~ [6020, 1780, 64, 64],~
** Processing line: ~ [6020, 1756, 64, 64],~
** Processing line: ~ [5959, 1780, 64, 64],~
** Processing line: ~ [5959, 1752, 64, 64],~
** Processing line: ~ [5897, 1779, 64, 64],~
** Processing line: ~ [5899, 1752, 64, 64],~
** Processing line: ~ [5836, 1779, 64, 64],~
** Processing line: ~ [5836, 1751, 64, 64],~
** Processing line: ~ [5776, 1780, 64, 64],~
** Processing line: ~ [5776, 1754, 64, 64],~
** Processing line: ~ [5717, 1780, 64, 64],~
** Processing line: ~ [5716, 1752, 64, 64],~
** Processing line: ~ [5658, 1781, 64, 64],~
** Processing line: ~ [5658, 1755, 64, 64],~
** Processing line: ~ [5640, 1781, 64, 64],~
** Processing line: ~ [5640, 1754, 64, 64],~
** Processing line: ~ [5832, 2095, 64, 64],~
** Processing line: ~ [5782, 2093, 64, 64],~
** Processing line: ~ [5832, 2044, 64, 64],~
** Processing line: ~ [5777, 2043, 64, 64],~
** Processing line: ~ [4847, 2577, 64, 64],~
** Processing line: ~ [4795, 2577, 64, 64],~
** Processing line: ~ [4846, 2526, 64, 64],~
** Processing line: ~ [4794, 2526, 64, 64],~
** Processing line: ~ [8390, 923, 64, 64],~
** Processing line: ~ [8363, 922, 64, 64],~
** Processing line: ~ [7585, 1084, 64, 64],~
** Processing line: ~ [7582, 1058, 64, 64],~
** Processing line: ~ [7525, 1084, 64, 64],~
** Processing line: ~ [7524, 1056, 64, 64],~
** Processing line: ~ [7478, 1085, 64, 64],~
** Processing line: ~ [7476, 1055, 64, 64],~
** Processing line: ~ [7421, 1086, 64, 64],~
** Processing line: ~ [7421, 1052, 64, 64],~
** Processing line: ~ [7362, 1085, 64, 64],~
** Processing line: ~ [7361, 1053, 64, 64],~
** Processing line: ~ [7307, 1087, 64, 64],~
** Processing line: ~ [7307, 1054, 64, 64],~
** Processing line: ~ [7258, 1086, 64, 64],~
** Processing line: ~ [7255, 1058, 64, 64],~
** Processing line: ~ [7203, 1083, 64, 64],~
** Processing line: ~ [7203, 1055, 64, 64],~
** Processing line: ~ [7161, 1085, 64, 64],~
** Processing line: ~ [7158, 1057, 64, 64],~
** Processing line: ~ [7100, 1083, 64, 64],~
** Processing line: ~ [7099, 1058, 64, 64],~
** Processing line: ~ [7038, 1082, 64, 64],~
** Processing line: ~ [7038, 1058, 64, 64],~
** Processing line: ~ [6982, 1083, 64, 64],~
** Processing line: ~ [6984, 1057, 64, 64],~
** Processing line: ~ [0, 0, 64, 64],~
** Processing line: ~ [0, 1670, 64, 64],~
** Processing line: ~ [6691, 1653, 64, 64],~
** Processing line: ~ [1521, 3792, 64, 64],~
** Processing line: ~ [0, 5137, 64, 64],~
** Processing line: ~ [0, 0, 64, 64],~
** Processing line: ~ [0, 1670, 64, 64],~
** Processing line: ~ [6691, 1653, 64, 64],~
** Processing line: ~ [1521, 3792, 64, 64],~
** Processing line: ~ [0, 5137, 64, 64],~
** Processing line: ~ [0, 0, 64, 64],~
** Processing line: ~ [0, 1670, 64, 64],~
** Processing line: ~ [6691, 1653, 64, 64],~
** Processing line: ~ [1521, 3792, 64, 64],~
** Processing line: ~ [0, 5137, 64, 64],~
** Processing line: ~ [8346, 424, 64, 64],~
** Processing line: ~ [8407, 376, 64, 64],~
** Processing line: ~ [8375, 386, 64, 64],~
** Processing line: ~ [8407, 347, 64, 64],~
** Processing line: ~ [8388, 343, 64, 64],~
** Processing line: ~ [8320, 423, 64, 64],~
** Processing line: ~ [8319, 363, 64, 64],~
** Processing line: ~ [8368, 303, 64, 64],~
** Processing line: ~ [8359, 303, 64, 64],~
** Processing line: ~ [8318, 330, 64, 64],~
** Processing line: ~ [9369, 425, 64, 64],~
** Processing line: ~ [9340, 425, 64, 64],~
** Processing line: ~ [9431, 376, 64, 64],~
** Processing line: ~ [9414, 382, 64, 64],~
** Processing line: ~ [9387, 391, 64, 64],~
** Processing line: ~ [9431, 349, 64, 64],~
** Processing line: ~ [9412, 344, 64, 64],~
** Processing line: ~ [9392, 305, 64, 64],~
** Processing line: ~ [9339, 365, 64, 64],~
** Processing line: ~ [9341, 333, 64, 64],~
** Processing line: ~ [9384, 301, 64, 64],~
** Processing line: ~ [7673, 1896, 64, 64],~
** Processing line: ~ [7642, 1834, 64, 64],~
** Processing line: ~ [7646, 1901, 64, 64],~
** Processing line: ~ [4500, 4054, 64, 64],~
** Processing line: ~ [4476, 4055, 64, 64],~
** Processing line: ~ [4459, 3997, 64, 64],~
** Processing line: ~ [76, 5215, 64, 64],~
** Processing line: ~ [39, 5217, 64, 64],~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ $mugs = [~
** Processing line: ~ [85, 87, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [958, 1967, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [2537, 1734, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [3755, 2464, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [1548, 3273, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [2050, 220, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [854, 297, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [343, 526, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [3454, 772, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [5041, 298, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [6089, 300, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [6518, 295, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [7661, 47, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [9392, 1125, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [7298, 1152, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [5816, 1843, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [876, 3772, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [1029, 4667, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [823, 5324, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [3251, 5220, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [4747, 5282, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [9325, 5178, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [9635, 4298, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [7837, 4127, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [8651, 1971, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [6892, 2031, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [4626, 3882, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [4024, 4554, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [3925, 3337, 39, 43, "sprites/square-orange.png"],~
** Processing line: ~ [5064, 1064, 39, 43, "sprites/square-orange.png"]~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Platformer - Gorillas Basic - credits.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Platformer - Gorillas Basic - credits.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_platformer/gorillas_basic/CREDITS.txt~
** Processing line: ~ code: Amir Rajan, https://twitter.com/amirrajan~
** Processing line: ~ graphics: Nick Culbertson, https://twitter.com/MobyPixel~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Platformer - Gorillas Basic - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Platformer - Gorillas Basic - 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_platformer/gorillas_basic/app/main.rb~
** Processing line: ~ class YouSoBasicGorillas~
** Processing line: ~ attr_accessor :outputs, :grid, :state, :inputs~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render~
** Processing line: ~ calc~
** Processing line: ~ process_inputs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults~
** Processing line: ~ outputs.background_color = [33, 32, 87]~
** Processing line: ~ state.building_spacing = 1~
** Processing line: ~ state.building_room_spacing = 15~
** Processing line: ~ state.building_room_width = 10~
** Processing line: ~ state.building_room_height = 15~
** Processing line: ~ state.building_heights = [4, 4, 6, 8, 15, 20, 18]~
** Processing line: ~ state.building_room_sizes = [5, 4, 6, 7]~
** Processing line: ~ state.gravity = 0.25~
** Processing line: ~ state.first_strike ||= :player_1~
** Processing line: ~ state.buildings ||= []~
** Processing line: ~ state.holes ||= []~
** Processing line: ~ state.player_1_score ||= 0~
** Processing line: ~ state.player_2_score ||= 0~
** Processing line: ~ state.wind ||= 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render~
** Processing line: ~ render_stage~
** Processing line: ~ render_value_insertion~
** Processing line: ~ render_gorillas~
** Processing line: ~ render_holes~
** Processing line: ~ render_banana~
** Processing line: ~ render_game_over~
** Processing line: ~ render_score~
** Processing line: ~ render_wind~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_score~
** Processing line: ~ outputs.primitives << [0, 0, 1280, 31, fancy_white].solid~
** Processing line: ~ outputs.primitives << [1, 1, 1279, 29].solid~
** Processing line: ~ outputs.labels << [ 10, 25, "Score: #{state.player_1_score}", 0, 0, fancy_white]~
** Processing line: ~ outputs.labels << [1270, 25, "Score: #{state.player_2_score}", 0, 2, fancy_white]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_wind~
** Processing line: ~ outputs.primitives << [640, 12, state.wind * 500 + state.wind * 10 * rand, 4, 35, 136, 162].solid~
** Processing line: ~ outputs.lines << [640, 30, 640, 0, fancy_white]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_game_over~
** Processing line: ~ return unless state.over~
** Processing line: ~ outputs.primitives << [grid.rect, 0, 0, 0, 200].solid~
** Processing line: ~ outputs.primitives << [640, 370, "Game Over!!", 5, 1, fancy_white].label~
** Processing line: ~ if state.winner == :player_1~
** Processing line: ~ outputs.primitives << [640, 340, "Player 1 Wins!!", 5, 1, fancy_white].label~
** Processing line: ~ else~
** Processing line: ~ outputs.primitives << [640, 340, "Player 2 Wins!!", 5, 1, fancy_white].label~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_stage~
** Processing line: ~ return unless state.stage_generated~
** Processing line: ~ return if state.stage_rendered~
** Processing line: ~~
** Processing line: ~ outputs.static_solids << [grid.rect, 33, 32, 87]~
** Processing line: ~ outputs.static_solids << state.buildings.map(&:solids)~
** Processing line: ~ state.stage_rendered = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_gorilla gorilla, id~
** Processing line: ~ return unless gorilla~
** Processing line: ~ if state.banana && state.banana.owner == gorilla~
** Processing line: ~ animation_index = state.banana.created_at.frame_index(3, 5, false)~
** Processing line: ~ end~
** Processing line: ~ if !animation_index~
** Processing line: ~ outputs.sprites << [gorilla.solid, "sprites/#{id}-idle.png"]~
** Processing line: ~ else~
** Processing line: ~ outputs.sprites << [gorilla.solid, "sprites/#{id}-#{animation_index}.png"]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_gorillas~
** Processing line: ~ render_gorilla state.player_1, :left~
** Processing line: ~ render_gorilla state.player_2, :right~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_value_insertion~
** Processing line: ~ return if state.banana~
** Processing line: ~ return if state.over~
** Processing line: ~~
** Processing line: ~ if state.current_turn == :player_1_angle~
** Processing line: ~ outputs.labels << [ 10, 710, "Angle: #{state.player_1_angle}_", fancy_white]~
** Processing line: ~ elsif state.current_turn == :player_1_velocity~
** Processing line: ~ outputs.labels << [ 10, 710, "Angle: #{state.player_1_angle}", fancy_white]~
** Processing line: ~ outputs.labels << [ 10, 690, "Velocity: #{state.player_1_velocity}_", fancy_white]~
** Processing line: ~ elsif state.current_turn == :player_2_angle~
** Processing line: ~ outputs.labels << [1120, 710, "Angle: #{state.player_2_angle}_", fancy_white]~
** Processing line: ~ elsif state.current_turn == :player_2_velocity~
** Processing line: ~ outputs.labels << [1120, 710, "Angle: #{state.player_2_angle}", fancy_white]~
** Processing line: ~ outputs.labels << [1120, 690, "Velocity: #{state.player_2_velocity}_", fancy_white]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_banana~
** Processing line: ~ return unless state.banana~
** Processing line: ~ rotation = state.tick_count.%(360) * 20~
** Processing line: ~ rotation *= -1 if state.banana.dx > 0~
** Processing line: ~ outputs.sprites << [state.banana.x, state.banana.y, 15, 15, 'sprites/banana.png', rotation]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_holes~
** Processing line: ~ outputs.sprites << state.holes.map do |s|~
** Processing line: ~ animation_index = s.created_at.frame_index(7, 3, false)~
** Processing line: ~ if animation_index~
** Processing line: ~ [s.sprite, [s.sprite.rect, "sprites/explosion#{animation_index}.png" ]]~
** Processing line: ~ else~
** Processing line: ~ s.sprite~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc~
** Processing line: ~ calc_generate_stage~
** Processing line: ~ calc_current_turn~
** Processing line: ~ calc_banana~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_current_turn~
** Processing line: ~ return if state.current_turn~
** Processing line: ~~
** Processing line: ~ state.current_turn = :player_1_angle~
** Processing line: ~ state.current_turn = :player_2_angle if state.first_strike == :player_2~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_generate_stage~
** Processing line: ~ return if state.stage_generated~
** Processing line: ~~
** Processing line: ~ state.buildings << building_prefab(state.building_spacing + -20, *random_building_size)~
** Processing line: ~ 8.numbers.inject(state.buildings) do |buildings, i|~
** Processing line: ~ buildings <<~
** Processing line: ~ building_prefab(state.building_spacing +~
** Processing line: ~ state.buildings.last.right,~
** Processing line: ~ *random_building_size)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ building_two = state.buildings[1]~
** Processing line: ~ state.player_1 = new_player(building_two.x + building_two.w.fdiv(2),~
** Processing line: ~ building_two.h)~
** Processing line: ~~
** Processing line: ~ building_nine = state.buildings[-3]~
** Processing line: ~ state.player_2 = new_player(building_nine.x + building_nine.w.fdiv(2),~
** Processing line: ~ building_nine.h)~
** Processing line: ~ state.stage_generated = true~
** Processing line: ~ state.wind = 1.randomize(:ratio, :sign)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def new_player x, y~
** Processing line: ~ state.new_entity(:gorilla) do |p|~
** Processing line: ~ p.x = x - 25~
** Processing line: ~ p.y = y~
** Processing line: ~ p.solid = [p.x, p.y, 50, 50]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_banana~
** Processing line: ~ return unless state.banana~
** Processing line: ~~
** Processing line: ~ state.banana.x += state.banana.dx~
** Processing line: ~ state.banana.dx += state.wind.fdiv(50)~
** Processing line: ~ state.banana.y += state.banana.dy~
** Processing line: ~ state.banana.dy -= state.gravity~
** Processing line: ~ banana_collision = [state.banana.x, state.banana.y, 10, 10]~
** Processing line: ~~
** Processing line: ~ if state.player_1 && banana_collision.intersect_rect?(state.player_1.solid)~
** Processing line: ~ state.over = true~
** Processing line: ~ if state.banana.owner == state.player_2~
** Processing line: ~ state.winner = :player_2~
** Processing line: ~ else~
** Processing line: ~ state.winner = :player_1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.player_2_score += 1~
** Processing line: ~ elsif state.player_2 && banana_collision.intersect_rect?(state.player_2.solid)~
** Processing line: ~ state.over = true~
** Processing line: ~ if state.banana.owner == state.player_2~
** Processing line: ~ state.winner = :player_1~
** Processing line: ~ else~
** Processing line: ~ state.winner = :player_2~
** Processing line: ~ end~
** Processing line: ~ state.player_1_score += 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.over~
** Processing line: ~ place_hole~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return if state.holes.any? do |h|~
** Processing line: ~ h.sprite.scale_rect(0.8, 0.5, 0.5).intersect_rect? [state.banana.x, state.banana.y, 10, 10]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return unless state.banana.y < 0 || state.buildings.any? do |b|~
** Processing line: ~ b.rect.intersect_rect? [state.banana.x, state.banana.y, 1, 1]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ place_hole~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def place_hole~
** Processing line: ~ return unless state.banana~
** Processing line: ~~
** Processing line: ~ state.holes << state.new_entity(:banana) do |b|~
** Processing line: ~ b.sprite = [state.banana.x - 20, state.banana.y - 20, 40, 40, 'sprites/hole.png']~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.banana = nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs_main~
** Processing line: ~ return if state.banana~
** Processing line: ~ return if state.over~
** Processing line: ~~
** Processing line: ~ if inputs.keyboard.key_down.enter~
** Processing line: ~ input_execute_turn~
** Processing line: ~ elsif inputs.keyboard.key_down.backspace~
** Processing line: ~ state.as_hash[state.current_turn] ||= ""~
** Processing line: ~ state.as_hash[state.current_turn] = state.as_hash[state.current_turn][0..-2]~
** Processing line: ~ elsif inputs.keyboard.key_down.char~
** Processing line: ~ state.as_hash[state.current_turn] ||= ""~
** Processing line: ~ state.as_hash[state.current_turn] += inputs.keyboard.key_down.char~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs_game_over~
** Processing line: ~ return unless state.over~
** Processing line: ~ return unless inputs.keyboard.key_down.truthy_keys.any?~
** Processing line: ~ state.over = false~
** Processing line: ~ outputs.static_solids.clear~
** Processing line: ~ state.buildings.clear~
** Processing line: ~ state.holes.clear~
** Processing line: ~ state.stage_generated = false~
** Processing line: ~ state.stage_rendered = false~
** Processing line: ~ if state.first_strike == :player_1~
** Processing line: ~ state.first_strike = :player_2~
** Processing line: ~ else~
** Processing line: ~ state.first_strike = :player_1~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs~
** Processing line: ~ process_inputs_main~
** Processing line: ~ process_inputs_game_over~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_execute_turn~
** Processing line: ~ return if state.banana~
** Processing line: ~~
** Processing line: ~ if state.current_turn == :player_1_angle && parse_or_clear!(:player_1_angle)~
** Processing line: ~ state.current_turn = :player_1_velocity~
** Processing line: ~ elsif state.current_turn == :player_1_velocity && parse_or_clear!(:player_1_velocity)~
** Processing line: ~ state.current_turn = :player_2_angle~
** Processing line: ~ state.banana =~
** Processing line: ~ new_banana(state.player_1,~
** Processing line: ~ state.player_1.x + 25,~
** Processing line: ~ state.player_1.y + 60,~
** Processing line: ~ state.player_1_angle,~
** Processing line: ~ state.player_1_velocity)~
** Processing line: ~ elsif state.current_turn == :player_2_angle && parse_or_clear!(:player_2_angle)~
** Processing line: ~ state.current_turn = :player_2_velocity~
** Processing line: ~ elsif state.current_turn == :player_2_velocity && parse_or_clear!(:player_2_velocity)~
** Processing line: ~ state.current_turn = :player_1_angle~
** Processing line: ~ state.banana =~
** Processing line: ~ new_banana(state.player_2,~
** Processing line: ~ state.player_2.x + 25,~
** Processing line: ~ state.player_2.y + 60,~
** Processing line: ~ 180 - state.player_2_angle,~
** Processing line: ~ state.player_2_velocity)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.banana~
** Processing line: ~ state.player_1_angle = nil~
** Processing line: ~ state.player_1_velocity = nil~
** Processing line: ~ state.player_2_angle = nil~
** Processing line: ~ state.player_2_velocity = nil~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def random_building_size~
** Processing line: ~ [state.building_heights.sample, state.building_room_sizes.sample]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def int? v~
** Processing line: ~ v.to_i.to_s == v.to_s~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def random_building_color~
** Processing line: ~ [[ 99, 0, 107],~
** Processing line: ~ [ 35, 64, 124],~
** Processing line: ~ [ 35, 136, 162],~
** Processing line: ~ ].sample~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def random_window_color~
** Processing line: ~ [[ 88, 62, 104],~
** Processing line: ~ [253, 224, 187]].sample~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def windows_for_building starting_x, floors, rooms~
** Processing line: ~ floors.-(1).combinations(rooms - 1).map do |floor, room|~
** Processing line: ~ [starting_x +~
** Processing line: ~ state.building_room_width.*(room) +~
** Processing line: ~ state.building_room_spacing.*(room + 1),~
** Processing line: ~ state.building_room_height.*(floor) +~
** Processing line: ~ state.building_room_spacing.*(floor + 1),~
** Processing line: ~ state.building_room_width,~
** Processing line: ~ state.building_room_height,~
** Processing line: ~ random_window_color]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def building_prefab starting_x, floors, rooms~
** Processing line: ~ state.new_entity(:building) do |b|~
** Processing line: ~ b.x = starting_x~
** Processing line: ~ b.y = 0~
** Processing line: ~ b.w = state.building_room_width.*(rooms) +~
** Processing line: ~ state.building_room_spacing.*(rooms + 1)~
** Processing line: ~ b.h = state.building_room_height.*(floors) +~
** Processing line: ~ state.building_room_spacing.*(floors + 1)~
** Processing line: ~ b.right = b.x + b.w~
** Processing line: ~ b.rect = [b.x, b.y, b.w, b.h]~
** Processing line: ~ b.solids = [[b.x - 1, b.y, b.w + 2, b.h + 1, fancy_white],~
** Processing line: ~ [b.x, b.y, b.w, b.h, random_building_color],~
** Processing line: ~ windows_for_building(b.x, floors, rooms)]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def parse_or_clear! game_prop~
** Processing line: ~ if int? state.as_hash[game_prop]~
** Processing line: ~ state.as_hash[game_prop] = state.as_hash[game_prop].to_i~
** Processing line: ~ return true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.as_hash[game_prop] = nil~
** Processing line: ~ return false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def new_banana owner, x, y, angle, velocity~
** Processing line: ~ state.new_entity(:banana) do |b|~
** Processing line: ~ b.owner = owner~
** Processing line: ~ b.x = x~
** Processing line: ~ b.y = y~
** Processing line: ~ b.angle = angle % 360~
** Processing line: ~ b.velocity = velocity / 5~
** Processing line: ~ b.dx = b.angle.vector_x(b.velocity)~
** Processing line: ~ b.dy = b.angle.vector_y(b.velocity)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def fancy_white~
** Processing line: ~ [253, 252, 253]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $you_so_basic_gorillas = YouSoBasicGorillas.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $you_so_basic_gorillas.outputs = args.outputs~
** Processing line: ~ $you_so_basic_gorillas.grid = args.grid~
** Processing line: ~ $you_so_basic_gorillas.state = args.state~
** Processing line: ~ $you_so_basic_gorillas.inputs = args.inputs~
** Processing line: ~ $you_so_basic_gorillas.tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Platformer - Gorillas Basic - repl.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Platformer - Gorillas Basic - 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_platformer/gorillas_basic/app/repl.rb~
** Processing line: ~ begin~
** Processing line: ~ if $gtk.args.state.current_turn == :player_1_angle~
** Processing line: ~ $gtk.args.state.player_1_angle = "#{60 + 10.randomize(:ratio).to_i}"~
** Processing line: ~ $you_so_basic_gorillas.input_execute_turn~
** Processing line: ~ $gtk.args.state.player_1_velocity = "#{30 + 20.randomize(:ratio).to_i}"~
** Processing line: ~ $you_so_basic_gorillas.input_execute_turn~
** Processing line: ~ elsif $gtk.args.state.current_turn == :player_2_angle~
** Processing line: ~ $gtk.args.state.player_2_angle = "#{60 + 10.randomize(:ratio).to_i}"~
** Processing line: ~ $you_so_basic_gorillas.input_execute_turn~
** Processing line: ~ $gtk.args.state.player_2_velocity = "#{30 + 20.randomize(:ratio).to_i}"~
** Processing line: ~ $you_so_basic_gorillas.input_execute_turn~
** Processing line: ~ else~
** Processing line: ~ $you_so_basic_gorillas.input_execute_turn~
** Processing line: ~ end~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ puts e~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Platformer - Gorillas Basic - tests.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Platformer - Gorillas Basic - tests.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_platformer/gorillas_basic/app/tests.rb~
** Processing line: ~ $gtk.reset 100~
** Processing line: ~ $gtk.supress_framerate_warning = true~
** Processing line: ~ $gtk.require 'app/tests/building_generation_tests.rb'~
** Processing line: ~ $gtk.tests.start~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Platformer - Gorillas Basic - Tests - building_generation_tests.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Platformer - Gorillas Basic - Tests - building_generation_tests.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_platformer/gorillas_basic/app/tests/building_generation_tests.rb~
** Processing line: ~ def test_solids args, assert~
** Processing line: ~ game = YouSoBasicGorillas.new~
** Processing line: ~ game.outputs = args.outputs~
** Processing line: ~ game.grid = args.grid~
** Processing line: ~ game.state = args.state~
** Processing line: ~ game.inputs = args.inputs~
** Processing line: ~ game.tick~
** Processing line: ~ assert.true! args.state.stage_generated, "stage wasn't generated but it should have been"~
** Processing line: ~ game.tick~
** Processing line: ~ assert.true! args.outputs.static_solids.length > 0, "stage wasn't rendered"~
** Processing line: ~ number_of_building_components = (args.state.buildings.map { |b| 2 + b.solids[2].length }.inject do |sum, v| (sum || 0) + v end)~
** Processing line: ~ the_only_background = 1~
** Processing line: ~ static_solids = args.outputs.static_solids.length~
** Processing line: ~ assert.true! static_solids == the_only_background.+(number_of_building_components), "not all parts of the buildings and background were rendered"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Platformer - The Little Probe - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Platformer - The Little Probe - 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_platformer/the_little_probe/app/main.rb~
** Processing line: ~ class FallingCircle~
** Processing line: ~ attr_gtk~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ fiddle~
** Processing line: ~ defaults~
** Processing line: ~ render~
** Processing line: ~ input~
** Processing line: ~ calc~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def fiddle~
** Processing line: ~ state.gravity = -0.02~
** Processing line: ~ circle.radius = 15~
** Processing line: ~ circle.elasticity = 0.4~
** Processing line: ~ camera.follow_speed = 0.4 * 0.4~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render~
** Processing line: ~ render_stage_editor~
** Processing line: ~ render_debug~
** Processing line: ~ render_game~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults~
** Processing line: ~ if state.tick_count == 0~
** Processing line: ~ outputs.sounds << "sounds/bg.ogg"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.storyline ||= [~
** Processing line: ~ { text: "<- -> to aim, hold space to charge", distance_gate: 0 },~
** Processing line: ~ { text: "the little probe - by @amirrajan, made with DragonRuby Game Toolkit", distance_gate: 0 },~
** Processing line: ~ { text: "mission control, this is sasha. landing on europa successful.", distance_gate: 0 },~
** Processing line: ~ { text: "operation \"find earth 2.0\", initiated at 8-29-2036 14:00.", distance_gate: 0 },~
** Processing line: ~ { text: "jupiter's sure is beautiful...", distance_gate: 4000 },~
** Processing line: ~ { text: "hmm, it seems there's some kind of anomoly in the sky", distance_gate: 7000 },~
** Processing line: ~ { text: "dancing lights, i'll call them whisps.", distance_gate: 8000 },~
** Processing line: ~ { text: "#todo... look i ran out of time -_-", distance_gate: 9000 },~
** Processing line: ~ { text: "there's never enough time", distance_gate: 9000 },~
** Processing line: ~ { text: "the game jam was fun though ^_^", distance_gate: 10000 },~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ load_level force: args.state.tick_count == 0~
** Processing line: ~ state.line_mode ||= :terrain~
** Processing line: ~~
** Processing line: ~ state.sound_index ||= 1~
** Processing line: ~ circle.potential_lift ||= 0~
** Processing line: ~ circle.angle ||= 90~
** Processing line: ~ circle.check_point_at ||= -1000~
** Processing line: ~ circle.game_over_at ||= -1000~
** Processing line: ~ circle.x ||= -485~
** Processing line: ~ circle.y ||= 12226~
** Processing line: ~ circle.check_point_x ||= circle.x~
** Processing line: ~ circle.check_point_y ||= circle.y~
** Processing line: ~ circle.dy ||= 0~
** Processing line: ~ circle.dx ||= 0~
** Processing line: ~ circle.previous_dy ||= 0~
** Processing line: ~ circle.previous_dx ||= 0~
** Processing line: ~ circle.angle ||= 0~
** Processing line: ~ circle.after_images ||= []~
** Processing line: ~ circle.terrains_to_monitor ||= {}~
** Processing line: ~ circle.impact_history ||= []~
** Processing line: ~~
** Processing line: ~ camera.x ||= 0~
** Processing line: ~ camera.y ||= 0~
** Processing line: ~ camera.target_x ||= 0~
** Processing line: ~ camera.target_y ||= 0~
** Processing line: ~ state.snaps ||= { }~
** Processing line: ~ state.snap_number = 10~
** Processing line: ~~
** Processing line: ~ args.state.storyline_x ||= -1000~
** Processing line: ~ args.state.storyline_y ||= -1000~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_game~
** Processing line: ~ outputs.background_color = [0, 0, 0]~
** Processing line: ~ outputs.sprites << [-circle.x + 1100,~
** Processing line: ~ -circle.y - 100,~
** Processing line: ~ 2416 * 4,~
** Processing line: ~ 3574 * 4,~
** Processing line: ~ 'sprites/jupiter.png']~
** Processing line: ~ outputs.sprites << [-circle.x,~
** Processing line: ~ -circle.y,~
** Processing line: ~ 2416 * 4,~
** Processing line: ~ 3574 * 4,~
** Processing line: ~ 'sprites/level.png']~
** Processing line: ~ outputs.sprites << state.whisp_queue~
** Processing line: ~ render_aiming_retical~
** Processing line: ~ render_circle~
** Processing line: ~ render_notification~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_notification~
** Processing line: ~ toast_length = 500~
** Processing line: ~ if circle.game_over_at.elapsed_time < toast_length~
** Processing line: ~ label_text = "..."~
** Processing line: ~ elsif circle.check_point_at.elapsed_time > toast_length~
** Processing line: ~ args.state.current_storyline = nil~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~ if circle.check_point_at &&~
** Processing line: ~ circle.check_point_at.elapsed_time == 1 &&~
** Processing line: ~ !args.state.current_storyline~
** Processing line: ~ if args.state.storyline.length > 0 && args.state.distance_traveled > args.state.storyline[0][:distance_gate]~
** Processing line: ~ args.state.current_storyline = args.state.storyline.shift[:text]~
** Processing line: ~ args.state.distance_traveled ||= 0~
** Processing line: ~ args.state.storyline_x = circle.x~
** Processing line: ~ args.state.storyline_y = circle.y~
** Processing line: ~ end~
** Processing line: ~ return unless args.state.current_storyline~
** Processing line: ~ end~
** Processing line: ~ label_text = args.state.current_storyline~
** Processing line: ~ return unless label_text~
** Processing line: ~ x = circle.x + camera.x~
** Processing line: ~ y = circle.y + camera.y - 40~
** Processing line: ~ w = 900~
** Processing line: ~ h = 30~
** Processing line: ~ outputs.primitives << [x - w.idiv(2), y - h, w, h, 255, 255, 255, 255].solid~
** Processing line: ~ outputs.primitives << [x - w.idiv(2), y - h, w, h, 0, 0, 0, 255].border~
** Processing line: ~ outputs.labels << [x, y - 4, label_text, 1, 1, 0, 0, 0, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_aiming_retical~
** Processing line: ~ outputs.sprites << [state.camera.x + circle.x + circle.angle.vector_x(circle.potential_lift * 10) - 5,~
** Processing line: ~ state.camera.y + circle.y + circle.angle.vector_y(circle.potential_lift * 10) - 5,~
** Processing line: ~ 10, 10, 'sprites/circle-orange.png']~
** Processing line: ~ outputs.sprites << [state.camera.x + circle.x + circle.angle.vector_x(circle.radius * 3) - 5,~
** Processing line: ~ state.camera.y + circle.y + circle.angle.vector_y(circle.radius * 3) - 5,~
** Processing line: ~ 10, 10, 'sprites/circle-orange.png', 0, 128]~
** Processing line: ~ if rand > 0.9~
** Processing line: ~ outputs.sprites << [state.camera.x + circle.x + circle.angle.vector_x(circle.radius * 3) - 5,~
** Processing line: ~ state.camera.y + circle.y + circle.angle.vector_y(circle.radius * 3) - 5,~
** Processing line: ~ 10, 10, 'sprites/circle-white.png', 0, 128]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_circle~
** Processing line: ~ outputs.sprites << circle.after_images.map do |ai|~
** Processing line: ~ ai.merge(x: ai.x + state.camera.x - circle.radius,~
** Processing line: ~ y: ai.y + state.camera.y - circle.radius,~
** Processing line: ~ w: circle.radius * 2,~
** Processing line: ~ h: circle.radius * 2,~
** Processing line: ~ path: 'sprites/circle-white.png')~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.sprites << [(circle.x - circle.radius) + state.camera.x,~
** Processing line: ~ (circle.y - circle.radius) + state.camera.y,~
** Processing line: ~ circle.radius * 2,~
** Processing line: ~ circle.radius * 2,~
** Processing line: ~ 'sprites/probe.png']~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_debug~
** Processing line: ~ return unless state.debug_mode~
** Processing line: ~~
** Processing line: ~ outputs.labels << [10, 30, state.line_mode, 0, 0, 0, 0, 0]~
** Processing line: ~ outputs.labels << [12, 32, state.line_mode, 0, 0, 255, 255, 255]~
** Processing line: ~~
** Processing line: ~ args.outputs.lines << trajectory(circle).line.to_hash.tap do |h|~
** Processing line: ~ h[:x] += state.camera.x~
** Processing line: ~ h[:y] += state.camera.y~
** Processing line: ~ h[:x2] += state.camera.x~
** Processing line: ~ h[:y2] += state.camera.y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.primitives << state.terrain.find_all do |t|~
** Processing line: ~ circle.x.between?(t.x - 640, t.x2 + 640) || circle.y.between?(t.y - 360, t.y2 + 360)~
** Processing line: ~ end.map do |t|~
** Processing line: ~ [~
** Processing line: ~ t.line.associate(r: 0, g: 255, b: 0) do |h|~
** Processing line: ~ h.x += state.camera.x~
** Processing line: ~ h.y += state.camera.y~
** Processing line: ~ h.x2 += state.camera.x~
** Processing line: ~ h.y2 += state.camera.y~
** Processing line: ~ if circle.rect.intersect_rect? t[:rect]~
** Processing line: ~ h[:r] = 255~
** Processing line: ~ h[:g] = 0~
** Processing line: ~ end~
** Processing line: ~ h~
** Processing line: ~ end,~
** Processing line: ~ t[:rect].border.associate(r: 255, g: 0, b: 0) do |h|~
** Processing line: ~ h.x += state.camera.x~
** Processing line: ~ h.y += state.camera.y~
** Processing line: ~ h.b = 255 if line_near_rect? circle.rect, t~
** Processing line: ~ h~
** Processing line: ~ end~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.primitives << state.lava.find_all do |t|~
** Processing line: ~ circle.x.between?(t.x - 640, t.x2 + 640) || circle.y.between?(t.y - 360, t.y2 + 360)~
** Processing line: ~ end.map do |t|~
** Processing line: ~ [~
** Processing line: ~ t.line.associate(r: 0, g: 0, b: 255) do |h|~
** Processing line: ~ h.x += state.camera.x~
** Processing line: ~ h.y += state.camera.y~
** Processing line: ~ h.x2 += state.camera.x~
** Processing line: ~ h.y2 += state.camera.y~
** Processing line: ~ if circle.rect.intersect_rect? t[:rect]~
** Processing line: ~ h[:r] = 255~
** Processing line: ~ h[:b] = 0~
** Processing line: ~ end~
** Processing line: ~ h~
** Processing line: ~ end,~
** Processing line: ~ t[:rect].border.associate(r: 255, g: 0, b: 0) do |h|~
** Processing line: ~ h.x += state.camera.x~
** Processing line: ~ h.y += state.camera.y~
** Processing line: ~ h.b = 255 if line_near_rect? circle.rect, t~
** Processing line: ~ h~
** Processing line: ~ end~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if state.god_mode~
** Processing line: ~ border = circle.rect.merge(x: circle.rect.x + state.camera.x,~
** Processing line: ~ y: circle.rect.y + state.camera.y,~
** Processing line: ~ g: 255)~
** Processing line: ~ else~
** Processing line: ~ border = circle.rect.merge(x: circle.rect.x + state.camera.x,~
** Processing line: ~ y: circle.rect.y + state.camera.y,~
** Processing line: ~ b: 255)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ outputs.borders << border~
** Processing line: ~~
** Processing line: ~ overlapping ||= {}~
** Processing line: ~~
** Processing line: ~ circle.impact_history.each do |h|~
** Processing line: ~ label_mod = 300~
** Processing line: ~ x = (h[:body][:x].-(150).idiv(label_mod)) * label_mod + camera.x~
** Processing line: ~ y = (h[:body][:y].+(150).idiv(label_mod)) * label_mod + camera.y~
** Processing line: ~ 10.times do~
** Processing line: ~ if overlapping[x] && overlapping[x][y]~
** Processing line: ~ y -= 52~
** Processing line: ~ else~
** Processing line: ~ break~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ overlapping[x] ||= {}~
** Processing line: ~ overlapping[x][y] ||= true~
** Processing line: ~ outputs.primitives << [x, y - 25, 300, 50, 0, 0, 0, 128].solid~
** Processing line: ~ outputs.labels << [x + 10, y + 24, "dy: %.2f" % h[:body][:new_dy], -2, 0, 255, 255, 255]~
** Processing line: ~ outputs.labels << [x + 10, y + 9, "dx: %.2f" % h[:body][:new_dx], -2, 0, 255, 255, 255]~
** Processing line: ~ outputs.labels << [x + 10, y - 5, " ?: #{h[:body][:new_reason]}", -2, 0, 255, 255, 255]~
** Processing line: ~~
** Processing line: ~ outputs.labels << [x + 100, y + 24, "angle: %.2f" % h[:impact][:angle], -2, 0, 255, 255, 255]~
** Processing line: ~ outputs.labels << [x + 100, y + 9, "m(l): %.2f" % h[:terrain][:slope], -2, 0, 255, 255, 255]~
** Processing line: ~ outputs.labels << [x + 100, y - 5, "m(c): %.2f" % h[:body][:slope], -2, 0, 255, 255, 255]~
** Processing line: ~~
** Processing line: ~ outputs.labels << [x + 200, y + 24, "ray: #{h[:impact][:ray]}", -2, 0, 255, 255, 255]~
** Processing line: ~ outputs.labels << [x + 200, y + 9, "nxt: #{h[:impact][:ray_next]}", -2, 0, 255, 255, 255]~
** Processing line: ~ outputs.labels << [x + 200, y - 5, "typ: #{h[:impact][:type]}", -2, 0, 255, 255, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if circle.floor~
** Processing line: ~ outputs.labels << [circle.x + camera.x + 30, circle.y + camera.y + 100, "point: #{circle.floor_point.slice(:x, :y).values}", -2, 0]~
** Processing line: ~ outputs.labels << [circle.x + camera.x + 31, circle.y + camera.y + 101, "point: #{circle.floor_point.slice(:x, :y).values}", -2, 0, 255, 255, 255]~
** Processing line: ~ outputs.labels << [circle.x + camera.x + 30, circle.y + camera.y + 85, "circle: #{circle.as_hash.slice(:x, :y).values}", -2, 0]~
** Processing line: ~ outputs.labels << [circle.x + camera.x + 31, circle.y + camera.y + 86, "circle: #{circle.as_hash.slice(:x, :y).values}", -2, 0, 255, 255, 255]~
** Processing line: ~ outputs.labels << [circle.x + camera.x + 30, circle.y + camera.y + 70, "rel: #{circle.floor_relative_x} #{circle.floor_relative_y}", -2, 0]~
** Processing line: ~ outputs.labels << [circle.x + camera.x + 31, circle.y + camera.y + 71, "rel: #{circle.floor_relative_x} #{circle.floor_relative_y}", -2, 0, 255, 255, 255]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_stage_editor~
** Processing line: ~ return unless state.god_mode~
** Processing line: ~ return unless state.point_one~
** Processing line: ~ args.lines << [state.point_one, inputs.mouse.point, 0, 255, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def trajectory body~
** Processing line: ~ [body.x + body.dx,~
** Processing line: ~ body.y + body.dy,~
** Processing line: ~ body.x + body.dx * 1000,~
** Processing line: ~ body.y + body.dy * 1000,~
** Processing line: ~ 0, 255, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def lengthen_line line, num~
** Processing line: ~ line = normalize_line(line)~
** Processing line: ~ slope = geometry.line_slope(line, replace_infinity: 10).abs~
** Processing line: ~ if slope < 2~
** Processing line: ~ [line.x - num, line.y, line.x2 + num, line.y2].line.to_hash~
** Processing line: ~ else~
** Processing line: ~ [line.x, line.y, line.x2, line.y2].line.to_hash~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def normalize_line line~
** Processing line: ~ if line.x > line.x2~
** Processing line: ~ x = line.x2~
** Processing line: ~ y = line.y2~
** Processing line: ~ x2 = line.x~
** Processing line: ~ y2 = line.y~
** Processing line: ~ else~
** Processing line: ~ x = line.x~
** Processing line: ~ y = line.y~
** Processing line: ~ x2 = line.x2~
** Processing line: ~ y2 = line.y2~
** Processing line: ~ end~
** Processing line: ~ [x, y, x2, y2]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def rect_for_line line~
** Processing line: ~ if line.x > line.x2~
** Processing line: ~ x = line.x2~
** Processing line: ~ y = line.y2~
** Processing line: ~ x2 = line.x~
** Processing line: ~ y2 = line.y~
** Processing line: ~ else~
** Processing line: ~ x = line.x~
** Processing line: ~ y = line.y~
** Processing line: ~ x2 = line.x2~
** Processing line: ~ y2 = line.y2~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ w = x2 - x~
** Processing line: ~ h = y2 - y~
** Processing line: ~~
** Processing line: ~ if h < 0~
** Processing line: ~ y += h~
** Processing line: ~ h = h.abs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if w < circle.radius~
** Processing line: ~ x -= circle.radius~
** Processing line: ~ w = circle.radius * 2~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if h < circle.radius~
** Processing line: ~ y -= circle.radius~
** Processing line: ~ h = circle.radius * 2~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ { x: x, y: y, w: w, h: h }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def snap_to_grid x, y, snaps~
** Processing line: ~ snap_number = 10~
** Processing line: ~ x = x.to_i~
** Processing line: ~ y = y.to_i~
** Processing line: ~~
** Processing line: ~ x_floor = x.idiv(snap_number) * snap_number~
** Processing line: ~ x_mod = x % snap_number~
** Processing line: ~ x_ceil = (x.idiv(snap_number) + 1) * snap_number~
** Processing line: ~~
** Processing line: ~ y_floor = y.idiv(snap_number) * snap_number~
** Processing line: ~ y_mod = y % snap_number~
** Processing line: ~ y_ceil = (y.idiv(snap_number) + 1) * snap_number~
** Processing line: ~~
** Processing line: ~ if snaps[x_floor]~
** Processing line: ~ x_result = x_floor~
** Processing line: ~ elsif snaps[x_ceil]~
** Processing line: ~ x_result = x_ceil~
** Processing line: ~ elsif x_mod < snap_number.idiv(2)~
** Processing line: ~ x_result = x_floor~
** Processing line: ~ else~
** Processing line: ~ x_result = x_ceil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ snaps[x_result] ||= {}~
** Processing line: ~~
** Processing line: ~ if snaps[x_result][y_floor]~
** Processing line: ~ y_result = y_floor~
** Processing line: ~ elsif snaps[x_result][y_ceil]~
** Processing line: ~ y_result = y_ceil~
** Processing line: ~ elsif y_mod < snap_number.idiv(2)~
** Processing line: ~ y_result = y_floor~
** Processing line: ~ else~
** Processing line: ~ y_result = y_ceil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ snaps[x_result][y_result] = true~
** Processing line: ~ return [x_result, y_result]~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def snap_line line~
** Processing line: ~ x, y, x2, y2 = line~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def string_to_line s~
** Processing line: ~ x, y, x2, y2 = s.split(',').map(&:to_f)~
** Processing line: ~~
** Processing line: ~ if x > x2~
** Processing line: ~ x2, x = x, x2~
** Processing line: ~ y2, y = y, y2~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ x, y = snap_to_grid x, y, state.snaps~
** Processing line: ~ x2, y2 = snap_to_grid x2, y2, state.snaps~
** Processing line: ~ [x, y, x2, y2].line.to_hash~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def load_lines file~
** Processing line: ~ data = gtk.read_file(file) || ""~
** Processing line: ~ data.each_line~
** Processing line: ~ .reject { |l| l.strip.length == 0 }~
** Processing line: ~ .map { |l| string_to_line l }~
** Processing line: ~ .map { |h| h.merge(rect: rect_for_line(h)) }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def load_terrain~
** Processing line: ~ load_lines 'data/level.txt'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def load_lava~
** Processing line: ~ load_lines 'data/level_lava.txt'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def load_level force: false~
** Processing line: ~ if force~
** Processing line: ~ state.snaps = {}~
** Processing line: ~ state.terrain = load_terrain~
** Processing line: ~ state.lava = load_lava~
** Processing line: ~ else~
** Processing line: ~ state.terrain ||= load_terrain~
** Processing line: ~ state.lava ||= load_lava~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def save_lines lines, file~
** Processing line: ~ s = lines.map do |l|~
** Processing line: ~ "#{l.x1},#{l.y1},#{l.x2},#{l.y2}"~
** Processing line: ~ end.join("\n")~
** Processing line: ~ gtk.write_file(file, s)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def save_level~
** Processing line: ~ save_lines(state.terrain, 'level.txt')~
** Processing line: ~ save_lines(state.lava, 'level_lava.txt')~
** Processing line: ~ load_level force: true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def line_near_rect? rect, terrain~
** Processing line: ~ geometry.intersect_rect?(rect, terrain[:rect])~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def point_within_line? point, line~
** Processing line: ~ return false if !point~
** Processing line: ~ return false if !line~
** Processing line: ~ return true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_impacts x, dx, y, dy, radius~
** Processing line: ~ results = { }~
** Processing line: ~ results[:x] = x~
** Processing line: ~ results[:y] = y~
** Processing line: ~ results[:dx] = x~
** Processing line: ~ results[:dy] = y~
** 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: ~ {~
** Processing line: ~ terrain: t,~
** Processing line: ~ point: geometry.line_intersect(results[:trajectory], t),~
** Processing line: ~ type: :terrain~
** Processing line: ~ }~
** Processing line: ~ end.reject { |t| !point_within_line? t[:point], t[:terrain] }~
** Processing line: ~~
** 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: ~ type: :lava~
** Processing line: ~ }~
** Processing line: ~ end.reject { |t| !point_within_line? t[:point], t[:terrain] }~
** Processing line: ~~
** Processing line: ~ results~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_potential_impacts~
** Processing line: ~ impact_results = calc_impacts circle.x, circle.dx, circle.y, circle.dy, circle.radius~
** Processing line: ~ circle.rect = impact_results[:rect]~
** Processing line: ~ circle.trajectory = impact_results[:trajectory]~
** Processing line: ~ circle.impacts = impact_results[:impacts]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_terrains_to_monitor~
** Processing line: ~ circle.impact = nil~
** Processing line: ~ circle.impacts.each do |i|~
** Processing line: ~ circle.terrains_to_monitor[i[:terrain]] ||= {~
** Processing line: ~ ray_start: geometry.ray_test(circle, i[:terrain]),~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ circle.terrains_to_monitor[i[:terrain]][:ray_current] = geometry.ray_test(circle, i[:terrain])~
** Processing line: ~ if circle.terrains_to_monitor[i[:terrain]][:ray_start] != circle.terrains_to_monitor[i[:terrain]][:ray_current]~
** Processing line: ~ if circle.x.between?(i[:terrain].x, i[:terrain].x2) || circle.y.between?(i[:terrain].y, i[:terrain].y2)~
** Processing line: ~ circle.impact = i~
** Processing line: ~ circle.ray_current = circle.terrains_to_monitor[i[:terrain]][:ray_current]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def impact_result body, impact~
** Processing line: ~ infinity_alias = 1000~
** Processing line: ~ r = {~
** Processing line: ~ body: {},~
** Processing line: ~ terrain: {},~
** Processing line: ~ impact: {}~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ r[:body][:line] = body.trajectory.dup~
** Processing line: ~ r[:body][:slope] = geometry.line_slope(body.trajectory, replace_infinity: infinity_alias)~
** Processing line: ~ r[:body][:slope_sign] = r[:body][:slope].sign~
** Processing line: ~ r[:body][:x] = body.x~
** Processing line: ~ r[:body][:y] = body.y~
** Processing line: ~ r[:body][:dy] = body.dy~
** Processing line: ~ r[:body][:dx] = body.dx~
** Processing line: ~~
** Processing line: ~ r[:terrain][:line] = impact[:terrain].dup~
** Processing line: ~ r[:terrain][:slope] = geometry.line_slope(impact[:terrain], replace_infinity: infinity_alias)~
** Processing line: ~ r[:terrain][:slope_sign] = r[:terrain][:slope].sign~
** Processing line: ~~
** Processing line: ~ r[:impact][:angle] = geometry.angle_between_lines(body.trajectory, impact[:terrain], replace_infinity: infinity_alias)~
** Processing line: ~ r[:impact][:point] = { x: impact[:point].x, y: impact[:point].y }~
** Processing line: ~ r[:impact][:same_slope_sign] = r[:body][:slope_sign] == r[:terrain][:slope_sign]~
** Processing line: ~ r[:impact][:ray] = body.ray_current~
** Processing line: ~ r[:body][:new_on_floor] = body.on_floor~
** Processing line: ~ r[:body][:new_floor] = r[:terrain][:line]~
** Processing line: ~~
** Processing line: ~ if r[:impact][:angle].abs < 90 && r[:terrain][:slope].abs < 3~
** Processing line: ~ play_sound~
** Processing line: ~ r[:body][:new_dy] = r[:body][:dy] * circle.elasticity * -1~
** Processing line: ~ r[:body][:new_dx] = r[:body][:dx] * circle.elasticity~
** Processing line: ~ r[:impact][:type] = :horizontal~
** Processing line: ~ r[:body][:new_reason] = "-"~
** Processing line: ~ elsif r[:impact][:angle].abs < 90 && r[:terrain][:slope].abs > 3~
** Processing line: ~ play_sound~
** Processing line: ~ r[:body][:new_dy] = r[:body][:dy] * 1.1~
** Processing line: ~ r[:body][:new_dx] = r[:body][:dx] * -circle.elasticity~
** Processing line: ~ r[:impact][:type] = :vertical~
** Processing line: ~ r[:body][:new_reason] = "|"~
** Processing line: ~ else~
** Processing line: ~ play_sound~
** Processing line: ~ r[:body][:new_dx] = r[:body][:dx] * -circle.elasticity~
** Processing line: ~ r[:body][:new_dy] = r[:body][:dy] * -circle.elasticity~
** Processing line: ~ r[:impact][:type] = :slanted~
** Processing line: ~ r[:body][:new_reason] = "/"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ r[:impact][:energy] = r[:body][:new_dx].abs + r[:body][:new_dy].abs~
** Processing line: ~~
** Processing line: ~ if r[:impact][:energy] <= 0.3 && r[:terrain][:slope].abs < 4~
** Processing line: ~ r[:body][:new_dx] = 0~
** Processing line: ~ r[:body][:new_dy] = 0~
** Processing line: ~ r[:impact][:energy] = 0~
** Processing line: ~ r[:body][:new_on_floor] = true~
** Processing line: ~ r[:body][:new_floor] = r[:terrain][:line]~
** Processing line: ~ r[:body][:new_reason] = "0"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ r[:impact][:ray_next] = geometry.ray_test({ x: r[:body][:x] - (r[:body][:dx] * 1.1) + r[:body][:new_dx],~
** Processing line: ~ y: r[:body][:y] - (r[:body][:dy] * 1.1) + r[:body][:new_dy] + state.gravity },~
** Processing line: ~ r[:terrain][:line])~
** Processing line: ~~
** Processing line: ~ if r[:impact][:ray_next] == r[:impact][:ray]~
** Processing line: ~ r[:body][:new_dx] *= -1~
** Processing line: ~ r[:body][:new_dy] *= -1~
** Processing line: ~ r[:body][:new_reason] = "clip"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ r~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def game_over!~
** Processing line: ~ circle.x = circle.check_point_x~
** Processing line: ~ circle.y = circle.check_point_y~
** Processing line: ~ circle.dx = 0~
** Processing line: ~ circle.dy = 0~
** Processing line: ~ circle.game_over_at = state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def not_game_over!~
** Processing line: ~ impact_history_entry = impact_result circle, circle.impact~
** Processing line: ~ circle.impact_history << impact_history_entry~
** Processing line: ~ circle.x -= circle.dx * 1.1~
** Processing line: ~ circle.y -= circle.dy * 1.1~
** Processing line: ~ circle.dx = impact_history_entry[:body][:new_dx]~
** Processing line: ~ circle.dy = impact_history_entry[:body][:new_dy]~
** Processing line: ~ circle.on_floor = impact_history_entry[:body][:new_on_floor]~
** Processing line: ~~
** Processing line: ~ if circle.on_floor~
** Processing line: ~ circle.check_point_at = state.tick_count~
** Processing line: ~ circle.check_point_x = circle.x~
** Processing line: ~ circle.check_point_y = circle.y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ circle.previous_floor = circle.floor || {}~
** Processing line: ~ circle.floor = impact_history_entry[:body][:new_floor] || {}~
** Processing line: ~ circle.floor_point = impact_history_entry[:impact][:point]~
** Processing line: ~ if circle.floor.slice(:x, :y, :x2, :y2) != circle.previous_floor.slice(:x, :y, :x2, :y2)~
** Processing line: ~ new_relative_x = if circle.dx > 0~
** Processing line: ~ :right~
** Processing line: ~ elsif circle.dx < 0~
** Processing line: ~ :left~
** Processing line: ~ else~
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ new_relative_y = if circle.dy > 0~
** Processing line: ~ :above~
** Processing line: ~ elsif circle.dy < 0~
** Processing line: ~ :below~
** Processing line: ~ else~
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ circle.floor_relative_x = new_relative_x~
** Processing line: ~ circle.floor_relative_y = new_relative_y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ circle.impact = nil~
** Processing line: ~ circle.terrains_to_monitor.clear~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_physics~
** Processing line: ~ if args.state.god_mode~
** Processing line: ~ calc_potential_impacts~
** Processing line: ~ calc_terrains_to_monitor~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if circle.y < -700~
** Processing line: ~ game_over~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return if state.game_over~
** Processing line: ~ return if circle.on_floor~
** Processing line: ~ circle.previous_dy = circle.dy~
** Processing line: ~ circle.previous_dx = circle.dx~
** Processing line: ~ circle.x += circle.dx~
** Processing line: ~ circle.y += circle.dy~
** Processing line: ~ args.state.distance_traveled ||= 0~
** Processing line: ~ args.state.distance_traveled += circle.dx.abs + circle.dy.abs~
** Processing line: ~ circle.dy += state.gravity~
** Processing line: ~ calc_potential_impacts~
** Processing line: ~ calc_terrains_to_monitor~
** Processing line: ~ return unless circle.impact~
** Processing line: ~ if circle.impact && circle.impact[:type] == :lava~
** Processing line: ~ game_over!~
** Processing line: ~ else~
** Processing line: ~ not_game_over!~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_god_mode~
** Processing line: ~ state.debug_mode = !state.debug_mode if inputs.keyboard.key_down.forward_slash~
** Processing line: ~~
** Processing line: ~ # toggle god mode~
** Processing line: ~ if inputs.keyboard.key_down.g~
** Processing line: ~ state.god_mode = !state.god_mode~
** Processing line: ~ state.potential_lift = 0~
** Processing line: ~ circle.floor = nil~
** Processing line: ~ circle.floor_point = nil~
** Processing line: ~ circle.floor_relative_x = nil~
** Processing line: ~ circle.floor_relative_y = nil~
** Processing line: ~ circle.impact = nil~
** Processing line: ~ circle.terrains_to_monitor.clear~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return unless state.god_mode~
** Processing line: ~~
** Processing line: ~ circle.x = circle.x.to_i~
** Processing line: ~ circle.y = circle.y.to_i~
** Processing line: ~~
** Processing line: ~ # move god circle~
** Processing line: ~ if inputs.keyboard.left || inputs.keyboard.a~
** Processing line: ~ circle.x -= 20~
** Processing line: ~ elsif inputs.keyboard.right || inputs.keyboard.d || inputs.keyboard.f~
** Processing line: ~ circle.x += 20~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if inputs.keyboard.up || inputs.keyboard.w~
** Processing line: ~ circle.y += 20~
** Processing line: ~ elsif inputs.keyboard.down || inputs.keyboard.s~
** Processing line: ~ circle.y -= 20~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # delete terrain~
** Processing line: ~ if inputs.keyboard.key_down.x~
** Processing line: ~ calc_terrains_to_monitor~
** Processing line: ~ state.terrain = state.terrain.reject do |t|~
** Processing line: ~ t[:rect].intersect_rect? circle.rect~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.lava = state.lava.reject do |t|~
** Processing line: ~ t[:rect].intersect_rect? circle.rect~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ calc_potential_impacts~
** Processing line: ~ save_level~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # change terrain type~
** Processing line: ~ if inputs.keyboard.key_down.l~
** Processing line: ~ if state.line_mode == :terrain~
** Processing line: ~ state.line_mode = :lava~
** Processing line: ~ else~
** Processing line: ~ state.line_mode = :terrain~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if inputs.mouse.click && !state.point_one~
** Processing line: ~ state.point_one = inputs.mouse.click.point~
** Processing line: ~ elsif inputs.mouse.click && state.point_one~
** Processing line: ~ l = [*state.point_one, *inputs.mouse.click.point]~
** Processing line: ~ l = [l.x - state.camera.x,~
** Processing line: ~ l.y - state.camera.y,~
** Processing line: ~ l.x2 - state.camera.x,~
** Processing line: ~ l.y2 - state.camera.y].line.to_hash~
** Processing line: ~ l[:rect] = rect_for_line l~
** Processing line: ~ if state.line_mode == :terrain~
** Processing line: ~ state.terrain << l~
** Processing line: ~ else~
** Processing line: ~ state.lava << l~
** Processing line: ~ end~
** Processing line: ~ save_level~
** Processing line: ~ next_x = inputs.mouse.click.point.x - 640~
** Processing line: ~ next_y = inputs.mouse.click.point.y - 360~
** Processing line: ~ circle.x += next_x~
** Processing line: ~ circle.y += next_y~
** Processing line: ~ state.point_one = nil~
** Processing line: ~ elsif inputs.keyboard.one~
** Processing line: ~ state.point_one = [circle.x + camera.x, circle.y+ camera.y]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # cancel chain lines~
** Processing line: ~ if inputs.keyboard.key_down.nine || inputs.keyboard.key_down.escape || inputs.keyboard.key_up.six || inputs.keyboard.key_up.one~
** Processing line: ~ state.point_one = nil~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def play_sound~
** Processing line: ~ return if state.sound_debounce > 0~
** Processing line: ~ state.sound_debounce = 5~
** Processing line: ~ outputs.sounds << "sounds/03#{"%02d" % state.sound_index}.wav"~
** Processing line: ~ state.sound_index += 1~
** Processing line: ~ if state.sound_index > 21~
** Processing line: ~ state.sound_index = 1~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input_game~
** Processing line: ~ if inputs.keyboard.down || inputs.keyboard.space~
** Processing line: ~ circle.potential_lift += 0.03~
** Processing line: ~ circle.potential_lift = circle.potential_lift.lesser(10)~
** Processing line: ~ elsif inputs.keyboard.key_up.down || inputs.keyboard.key_up.space~
** Processing line: ~ play_sound~
** Processing line: ~ circle.dy += circle.angle.vector_y circle.potential_lift~
** Processing line: ~ circle.dx += circle.angle.vector_x circle.potential_lift~
** Processing line: ~~
** Processing line: ~ if circle.on_floor~
** Processing line: ~ if circle.floor_relative_y == :above~
** Processing line: ~ circle.y += circle.potential_lift.abs * 2~
** Processing line: ~ elsif circle.floor_relative_y == :below~
** Processing line: ~ circle.y -= circle.potential_lift.abs * 2~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ circle.on_floor = false~
** Processing line: ~ circle.potential_lift = 0~
** Processing line: ~ circle.terrains_to_monitor.clear~
** Processing line: ~ circle.impact_history.clear~
** Processing line: ~ circle.impact = nil~
** Processing line: ~ calc_physics~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # aim probe~
** Processing line: ~ if inputs.keyboard.right || inputs.keyboard.a~
** Processing line: ~ circle.angle -= 2~
** Processing line: ~ elsif inputs.keyboard.left || inputs.keyboard.d~
** Processing line: ~ circle.angle += 2~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input~
** Processing line: ~ input_god_mode~
** Processing line: ~ input_game~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_camera~
** Processing line: ~ state.camera.target_x = 640 - circle.x~
** Processing line: ~ state.camera.target_y = 360 - circle.y~
** Processing line: ~ xdiff = state.camera.target_x - state.camera.x~
** Processing line: ~ ydiff = state.camera.target_y - state.camera.y~
** Processing line: ~ state.camera.x += xdiff * camera.follow_speed~
** Processing line: ~ state.camera.y += ydiff * camera.follow_speed~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc~
** Processing line: ~ state.sound_debounce ||= 0~
** Processing line: ~ state.sound_debounce -= 1~
** Processing line: ~ state.sound_debounce = 0 if state.sound_debounce < 0~
** Processing line: ~ if state.god_mode~
** Processing line: ~ circle.dy *= 0.1~
** Processing line: ~ circle.dx *= 0.1~
** Processing line: ~ end~
** Processing line: ~ calc_camera~
** Processing line: ~ state.whisp_queue ||= []~
** Processing line: ~ if state.tick_count.mod_zero?(4)~
** Processing line: ~ state.whisp_queue << {~
** Processing line: ~ x: -300,~
** Processing line: ~ y: 1400 * rand,~
** Processing line: ~ speed: 2.randomize(:ratio) + 3,~
** Processing line: ~ w: 20,~
** Processing line: ~ h: 20, path: 'sprites/whisp.png',~
** Processing line: ~ a: 0,~
** Processing line: ~ created_at: state.tick_count,~
** Processing line: ~ angle: 0,~
** Processing line: ~ r: 100,~
** Processing line: ~ g: 128 + 128 * rand,~
** Processing line: ~ b: 128 + 128 * rand~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.whisp_queue.each do |w|~
** Processing line: ~ w.x += w[:speed] * 2~
** Processing line: ~ w.x -= circle.dx * 0.3~
** Processing line: ~ w.y -= w[:speed]~
** Processing line: ~ w.y -= circle.dy * 0.3~
** Processing line: ~ w.angle += w[:speed]~
** Processing line: ~ w.a = w[:created_at].ease(30) * 255~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ state.whisp_queue = state.whisp_queue.reject { |w| w[:x] > 1280 }~
** Processing line: ~~
** Processing line: ~ if state.tick_count.mod_zero?(2) && (circle.dx != 0 || circle.dy != 0)~
** Processing line: ~ circle.after_images << {~
** Processing line: ~ x: circle.x,~
** Processing line: ~ y: circle.y,~
** Processing line: ~ w: circle.radius,~
** Processing line: ~ h: circle.radius,~
** Processing line: ~ a: 255,~
** Processing line: ~ created_at: state.tick_count~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ circle.after_images.each do |ai|~
** Processing line: ~ ai.a = ai[:created_at].ease(10, :flip) * 255~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ circle.after_images = circle.after_images.reject { |ai| ai[:created_at].elapsed_time > 10 }~
** Processing line: ~ calc_physics~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def circle~
** Processing line: ~ state.circle~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def camera~
** Processing line: ~ state.camera~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def terrain~
** Processing line: ~ state.terrain~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def lava~
** Processing line: ~ state.lava~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # $gtk.reset~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ args.outputs.background_color = [0, 0, 0]~
** Processing line: ~ if args.inputs.keyboard.r~
** Processing line: ~ args.gtk.reset~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~ # uncomment the line below to slow down the game so you~
** Processing line: ~ # can see each tick as it passes~
** Processing line: ~ # args.gtk.slowmo! 30~
** Processing line: ~ $game ||= FallingCircle.new~
** Processing line: ~ $game.args = args~
** Processing line: ~ $game.tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def reset~
** Processing line: ~ $game = nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Platformer - The Little Probe - Data - level.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Platformer - The Little Probe - Data - level.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_platformer/the_little_probe/data/level.txt~
** Processing line: ~ 640,8840,1180,8840~
** Processing line: ~ -60,10220,0,9960~
** Processing line: ~ -60,10220,0,10500~
** Processing line: ~ 0,10500,0,10780~
** Processing line: ~ 0,10780,40,10900~
** Processing line: ~ 500,10920,760,10960~
** Processing line: ~ 300,10560,820,10600~
** Processing line: ~ 420,10320,700,10300~
** Processing line: ~ 820,10600,1500,10600~
** Processing line: ~ 1500,10600,1940,10600~
** Processing line: ~ 1940,10600,2380,10580~
** Processing line: ~ 2380,10580,2800,10620~
** Processing line: ~ 2240,11080,2480,11020~
** Processing line: ~ 2000,11120,2240,11080~
** Processing line: ~ 1760,11180,2000,11120~
** Processing line: ~ 1620,11180,1760,11180~
** Processing line: ~ 1500,11220,1620,11180~
** Processing line: ~ 1180,11280,1340,11220~
** Processing line: ~ 1040,11240,1180,11280~
** Processing line: ~ 840,11280,1040,11240~
** Processing line: ~ 640,11280,840,11280~
** Processing line: ~ 500,11220,640,11280~
** Processing line: ~ 420,11140,500,11220~
** Processing line: ~ 240,11100,420,11140~
** Processing line: ~ 100,11120,240,11100~
** Processing line: ~ 0,11180,100,11120~
** Processing line: ~ -160,11220,0,11180~
** Processing line: ~ -260,11240,-160,11220~
** Processing line: ~ 1340,11220,1500,11220~
** Processing line: ~ 960,13300,1280,13060~
** Processing line: ~ 1280,13060,1540,12860~
** Processing line: ~ 1540,12860,1820,12700~
** Processing line: ~ 1820,12700,2080,12520~
** Processing line: ~ 2080,12520,2240,12400~
** Processing line: ~ 2240,12400,2240,12240~
** Processing line: ~ 2240,12240,2400,12080~
** Processing line: ~ 2400,12080,2560,11920~
** Processing line: ~ 2560,11920,2640,11740~
** Processing line: ~ 2640,11740,2740,11580~
** Processing line: ~ 2740,11580,2800,11400~
** Processing line: ~ 2800,11400,2800,11240~
** Processing line: ~ 2740,11140,2800,11240~
** Processing line: ~ 2700,11040,2740,11140~
** Processing line: ~ 2700,11040,2740,10960~
** Processing line: ~ 2740,10960,2740,10920~
** Processing line: ~ 2700,10900,2740,10920~
** Processing line: ~ 2380,10900,2700,10900~
** Processing line: ~ 2040,10920,2380,10900~
** Processing line: ~ 1720,10940,2040,10920~
** Processing line: ~ 1380,11000,1720,10940~
** Processing line: ~ 1180,10980,1380,11000~
** Processing line: ~ 900,10980,1180,10980~
** Processing line: ~ 760,10960,900,10980~
** Processing line: ~ 240,10960,500,10920~
** Processing line: ~ 40,10900,240,10960~
** Processing line: ~ 0,9700,0,9960~
** Processing line: ~ -60,9500,0,9700~
** Processing line: ~ -60,9420,-60,9500~
** Processing line: ~ -60,9420,-60,9340~
** Processing line: ~ -60,9340,-60,9280~
** Processing line: ~ -60,9120,-60,9280~
** Processing line: ~ -60,8940,-60,9120~
** Processing line: ~ -60,8940,-60,8780~
** Processing line: ~ -60,8780,0,8700~
** Processing line: ~ 0,8700,40,8680~
** Processing line: ~ 40,8680,240,8700~
** Processing line: ~ 240,8700,360,8780~
** Processing line: ~ 360,8780,640,8840~
** Processing line: ~ 1420,8400,1540,8480~
** Processing line: ~ 1540,8480,1680,8500~
** Processing line: ~ 1680,8500,1940,8460~
** Processing line: ~ 1180,8840,1280,8880~
** Processing line: ~ 1280,8880,1340,8860~
** Processing line: ~ 1340,8860,1720,8860~
** Processing line: ~ 1720,8860,1820,8920~
** Processing line: ~ 1820,8920,1820,9140~
** Processing line: ~ 1820,9140,1820,9280~
** Processing line: ~ 1820,9460,1820,9280~
** Processing line: ~ 1760,9480,1820,9460~
** Processing line: ~ 1640,9480,1760,9480~
** Processing line: ~ 1540,9500,1640,9480~
** Processing line: ~ 1340,9500,1540,9500~
** Processing line: ~ 1100,9500,1340,9500~
** Processing line: ~ 1040,9540,1100,9500~
** Processing line: ~ 960,9540,1040,9540~
** Processing line: ~ 300,9420,360,9460~
** Processing line: ~ 240,9440,300,9420~
** Processing line: ~ 180,9600,240,9440~
** Processing line: ~ 120,9660,180,9600~
** Processing line: ~ 100,9820,120,9660~
** Processing line: ~ 100,9820,120,9860~
** Processing line: ~ 120,9860,140,9900~
** Processing line: ~ 140,9900,140,10000~
** Processing line: ~ 140,10440,180,10540~
** Processing line: ~ 100,10080,140,10000~
** Processing line: ~ 100,10080,140,10100~
** Processing line: ~ 140,10100,140,10440~
** Processing line: ~ 180,10540,300,10560~
** Processing line: ~ 2140,9560,2140,9640~
** Processing line: ~ 2140,9720,2140,9640~
** Processing line: ~ 1880,9780,2140,9720~
** Processing line: ~ 1720,9780,1880,9780~
** Processing line: ~ 1620,9740,1720,9780~
** Processing line: ~ 1500,9780,1620,9740~
** Processing line: ~ 1380,9780,1500,9780~
** Processing line: ~ 1340,9820,1380,9780~
** Processing line: ~ 1200,9820,1340,9820~
** Processing line: ~ 1100,9780,1200,9820~
** Processing line: ~ 900,9780,1100,9780~
** Processing line: ~ 820,9720,900,9780~
** Processing line: ~ 540,9720,820,9720~
** Processing line: ~ 360,9840,540,9720~
** Processing line: ~ 360,9840,360,9960~
** Processing line: ~ 360,9960,360,10080~
** Processing line: ~ 360,10140,360,10080~
** Processing line: ~ 360,10140,360,10240~
** Processing line: ~ 360,10240,420,10320~
** Processing line: ~ 700,10300,820,10280~
** Processing line: ~ 820,10280,820,10280~
** Processing line: ~ 820,10280,900,10320~
** Processing line: ~ 900,10320,1040,10300~
** Processing line: ~ 1040,10300,1200,10320~
** Processing line: ~ 1200,10320,1380,10280~
** Processing line: ~ 1380,10280,1500,10300~
** Processing line: ~ 1500,10300,1760,10300~
** Processing line: ~ 2800,10620,2840,10600~
** Processing line: ~ 2840,10600,2900,10600~
** Processing line: ~ 2900,10600,3000,10620~
** Processing line: ~ 3000,10620,3080,10620~
** Processing line: ~ 3080,10620,3140,10600~
** Processing line: ~ 3140,10540,3140,10600~
** Processing line: ~ 3140,10540,3140,10460~
** Processing line: ~ 3140,10460,3140,10360~
** Processing line: ~ 3140,10360,3140,10260~
** Processing line: ~ 3140,10260,3140,10140~
** Processing line: ~ 3140,10140,3140,10000~
** Processing line: ~ 3140,10000,3140,9860~
** Processing line: ~ 3140,9860,3160,9720~
** Processing line: ~ 3160,9720,3160,9580~
** Processing line: ~ 3160,9580,3160,9440~
** Processing line: ~ 3160,9300,3160,9440~
** Processing line: ~ 3160,9300,3160,9140~
** Processing line: ~ 3160,9140,3160,8980~
** Processing line: ~ 3160,8980,3160,8820~
** Processing line: ~ 3160,8820,3160,8680~
** Processing line: ~ 3160,8680,3160,8520~
** Processing line: ~ 1760,10300,1880,10300~
** Processing line: ~ 660,9500,960,9540~
** Processing line: ~ 640,9460,660,9500~
** Processing line: ~ 360,9460,640,9460~
** Processing line: ~ -480,10760,-440,10880~
** Processing line: ~ -480,11020,-440,10880~
** Processing line: ~ -480,11160,-260,11240~
** Processing line: ~ -480,11020,-480,11160~
** Processing line: ~ -600,11420,-380,11320~
** Processing line: ~ -380,11320,-200,11340~
** Processing line: ~ -200,11340,0,11340~
** Processing line: ~ 0,11340,180,11340~
** Processing line: ~ 960,13420,960,13300~
** Processing line: ~ 960,13420,960,13520~
** Processing line: ~ 960,13520,1000,13560~
** Processing line: ~ 1000,13560,1040,13540~
** Processing line: ~ 1040,13540,1200,13440~
** Processing line: ~ 1200,13440,1380,13380~
** Processing line: ~ 1380,13380,1620,13300~
** Processing line: ~ 1620,13300,1820,13220~
** Processing line: ~ 1820,13220,2000,13200~
** Processing line: ~ 2000,13200,2240,13200~
** Processing line: ~ 2240,13200,2440,13160~
** Processing line: ~ 2440,13160,2640,13040~
** Processing line: ~ -480,10760,-440,10620~
** Processing line: ~ -440,10620,-360,10560~
** Processing line: ~ -380,10460,-360,10560~
** Processing line: ~ -380,10460,-360,10300~
** Processing line: ~ -380,10140,-360,10300~
** Processing line: ~ -380,10140,-380,10040~
** Processing line: ~ -380,9880,-380,10040~
** Processing line: ~ -380,9720,-380,9880~
** Processing line: ~ -380,9720,-380,9540~
** Processing line: ~ -380,9360,-380,9540~
** Processing line: ~ -380,9180,-380,9360~
** Processing line: ~ -380,9180,-380,9000~
** Processing line: ~ -380,8840,-380,9000~
** Processing line: ~ -380,8840,-380,8760~
** Processing line: ~ -380,8760,-380,8620~
** Processing line: ~ -380,8620,-380,8520~
** Processing line: ~ -380,8520,-360,8400~
** Processing line: ~ -360,8400,-100,8400~
** Processing line: ~ -100,8400,-60,8420~
** Processing line: ~ -60,8420,240,8440~
** Processing line: ~ 240,8440,240,8380~
** Processing line: ~ 240,8380,500,8440~
** Processing line: ~ 500,8440,760,8460~
** Processing line: ~ 760,8460,1000,8400~
** Processing line: ~ 1000,8400,1180,8420~
** Processing line: ~ 1180,8420,1420,8400~
** Processing line: ~ 1940,8460,2140,8420~
** Processing line: ~ 2140,8420,2200,8520~
** Processing line: ~ 2200,8680,2200,8520~
** Processing line: ~ 2140,8840,2200,8680~
** Processing line: ~ 2140,8840,2140,9020~
** Processing line: ~ 2140,9100,2140,9020~
** Processing line: ~ 2140,9200,2140,9100~
** Processing line: ~ 2140,9200,2200,9320~
** Processing line: ~ 2200,9320,2200,9440~
** Processing line: ~ 2140,9560,2200,9440~
** Processing line: ~ 1880,10300,2200,10280~
** Processing line: ~ 2200,10280,2480,10260~
** Processing line: ~ 2480,10260,2700,10240~
** Processing line: ~ 2700,10240,2840,10180~
** Processing line: ~ 2840,10180,2900,10060~
** Processing line: ~ 2900,9860,2900,10060~
** Processing line: ~ 2900,9640,2900,9860~
** Processing line: ~ 2900,9640,2900,9500~
** Processing line: ~ 2900,9460,2900,9500~
** Processing line: ~ 2740,9460,2900,9460~
** Processing line: ~ 2700,9460,2740,9460~
** Processing line: ~ 2700,9360,2700,9460~
** Processing line: ~ 2700,9320,2700,9360~
** Processing line: ~ 2600,9320,2700,9320~
** Processing line: ~ 2600,9260,2600,9320~
** Processing line: ~ 2600,9200,2600,9260~
** Processing line: ~ 2480,9120,2600,9200~
** Processing line: ~ 2440,9080,2480,9120~
** Processing line: ~ 2380,9080,2440,9080~
** Processing line: ~ 2320,9060,2380,9080~
** Processing line: ~ 2320,8860,2320,9060~
** Processing line: ~ 2320,8860,2380,8840~
** Processing line: ~ 2380,8840,2480,8860~
** Processing line: ~ 2480,8860,2600,8840~
** Processing line: ~ 2600,8840,2740,8840~
** Processing line: ~ 2740,8840,2840,8800~
** Processing line: ~ 2840,8800,2900,8700~
** Processing line: ~ 2900,8600,2900,8700~
** Processing line: ~ 2900,8480,2900,8600~
** Processing line: ~ 2900,8380,2900,8480~
** Processing line: ~ 2900,8380,2900,8260~
** Processing line: ~ 2900,8260,2900,8140~
** Processing line: ~ 2900,8140,2900,8020~
** Processing line: ~ 2900,8020,2900,7900~
** Processing line: ~ 2900,7820,2900,7900~
** Processing line: ~ 2900,7820,2900,7740~
** Processing line: ~ 2900,7660,2900,7740~
** Processing line: ~ 2900,7560,2900,7660~
** Processing line: ~ 2900,7460,2900,7560~
** Processing line: ~ 2900,7460,2900,7360~
** Processing line: ~ 2900,7260,2900,7360~
** Processing line: ~ 2840,7160,2900,7260~
** Processing line: ~ 2800,7080,2840,7160~
** Processing line: ~ 2700,7100,2800,7080~
** Processing line: ~ 2560,7120,2700,7100~
** Processing line: ~ 2400,7100,2560,7120~
** Processing line: ~ 2320,7100,2400,7100~
** Processing line: ~ 2140,7100,2320,7100~
** Processing line: ~ 2040,7080,2140,7100~
** Processing line: ~ 1940,7080,2040,7080~
** Processing line: ~ 1820,7140,1940,7080~
** Processing line: ~ 1680,7140,1820,7140~
** Processing line: ~ 1540,7140,1680,7140~
** Processing line: ~ 1420,7220,1540,7140~
** Processing line: ~ 1280,7220,1380,7220~
** Processing line: ~ 1140,7200,1280,7220~
** Processing line: ~ 1000,7220,1140,7200~
** Processing line: ~ 760,7280,900,7320~
** Processing line: ~ 540,7220,760,7280~
** Processing line: ~ 300,7180,540,7220~
** Processing line: ~ 180,7120,180,7160~
** Processing line: ~ 40,7140,180,7120~
** Processing line: ~ -60,7160,40,7140~
** Processing line: ~ -200,7120,-60,7160~
** Processing line: ~ 180,7160,300,7180~
** Processing line: ~ -260,7060,-200,7120~
** Processing line: ~ -260,6980,-260,7060~
** Processing line: ~ -260,6880,-260,6980~
** Processing line: ~ -260,6880,-260,6820~
** Processing line: ~ -260,6820,-200,6760~
** Processing line: ~ -200,6760,-100,6740~
** Processing line: ~ -100,6740,-60,6740~
** Processing line: ~ -60,6740,40,6740~
** Processing line: ~ 40,6740,300,6800~
** Processing line: ~ 300,6800,420,6760~
** Processing line: ~ 420,6760,500,6740~
** Processing line: ~ 500,6740,540,6760~
** Processing line: ~ 540,6760,540,6760~
** Processing line: ~ 540,6760,640,6780~
** Processing line: ~ 640,6660,640,6780~
** Processing line: ~ 580,6580,640,6660~
** Processing line: ~ 580,6440,580,6580~
** Processing line: ~ 580,6440,640,6320~
** Processing line: ~ 640,6320,640,6180~
** Processing line: ~ 580,6080,640,6180~
** Processing line: ~ 580,6080,640,5960~
** Processing line: ~ 640,5960,640,5840~
** Processing line: ~ 640,5840,640,5700~
** Processing line: ~ 640,5700,660,5560~
** Processing line: ~ 660,5560,660,5440~
** Processing line: ~ 660,5440,660,5300~
** Processing line: ~ 660,5140,660,5300~
** Processing line: ~ 660,5140,660,5000~
** Processing line: ~ 660,5000,660,4880~
** Processing line: ~ 660,4880,820,4860~
** Processing line: ~ 820,4860,1000,4840~
** Processing line: ~ 1000,4840,1100,4860~
** Processing line: ~ 1100,4860,1280,4860~
** Processing line: ~ 1280,4860,1420,4840~
** Processing line: ~ 1420,4840,1580,4860~
** Processing line: ~ 1580,4860,1720,4820~
** Processing line: ~ 1720,4820,1880,4860~
** Processing line: ~ 1880,4860,2000,4840~
** Processing line: ~ 2000,4840,2140,4840~
** Processing line: ~ 2140,4840,2320,4860~
** Processing line: ~ 2320,4860,2440,4880~
** Processing line: ~ 2440,4880,2600,4880~
** Processing line: ~ 2600,4880,2800,4880~
** Processing line: ~ 2800,4880,2900,4880~
** Processing line: ~ 2900,4880,2900,4820~
** Processing line: ~ 2900,4740,2900,4820~
** Processing line: ~ 2800,4700,2900,4740~
** Processing line: ~ 2520,4680,2800,4700~
** Processing line: ~ 2240,4660,2520,4680~
** Processing line: ~ 1940,4620,2240,4660~
** Processing line: ~ 1820,4580,1940,4620~
** Processing line: ~ 1820,4500,1820,4580~
** Processing line: ~ 1820,4500,1880,4420~
** Processing line: ~ 1880,4420,2000,4420~
** Processing line: ~ 2000,4420,2200,4420~
** Processing line: ~ 2200,4420,2400,4440~
** Processing line: ~ 2400,4440,2600,4440~
** Processing line: ~ 2600,4440,2840,4440~
** Processing line: ~ 2840,4440,2900,4400~
** Processing line: ~ 2740,4260,2900,4280~
** Processing line: ~ 2600,4240,2740,4260~
** Processing line: ~ 2480,4280,2600,4240~
** Processing line: ~ 2320,4240,2480,4280~
** Processing line: ~ 2140,4220,2320,4240~
** Processing line: ~ 1940,4220,2140,4220~
** Processing line: ~ 1880,4160,1940,4220~
** Processing line: ~ 1880,4160,1880,4080~
** Processing line: ~ 1880,4080,2040,4040~
** Processing line: ~ 2040,4040,2240,4060~
** Processing line: ~ 2240,4060,2400,4040~
** Processing line: ~ 2400,4040,2600,4060~
** Processing line: ~ 2600,4060,2740,4020~
** Processing line: ~ 2740,4020,2840,3940~
** Processing line: ~ 2840,3780,2840,3940~
** Processing line: ~ 2740,3660,2840,3780~
** Processing line: ~ 2700,3680,2740,3660~
** Processing line: ~ 2520,3700,2700,3680~
** Processing line: ~ 2380,3700,2520,3700~
** Processing line: ~ 2200,3720,2380,3700~
** Processing line: ~ 2040,3720,2200,3720~
** Processing line: ~ 1880,3700,2040,3720~
** Processing line: ~ 1820,3680,1880,3700~
** Processing line: ~ 1760,3600,1820,3680~
** Processing line: ~ 1760,3600,1820,3480~
** Processing line: ~ 1820,3480,1880,3440~
** Processing line: ~ 1880,3440,1960,3460~
** Processing line: ~ 1960,3460,2140,3460~
** Processing line: ~ 2140,3460,2380,3460~
** Processing line: ~ 2380,3460,2640,3440~
** Processing line: ~ 2640,3440,2900,3380~
** Processing line: ~ 2840,3280,2900,3380~
** Processing line: ~ 2840,3280,2900,3200~
** Processing line: ~ 2900,3200,2900,3140~
** Processing line: ~ 2840,3020,2900,3140~
** Processing line: ~ 2800,2960,2840,3020~
** Processing line: ~ 2700,3000,2800,2960~
** Processing line: ~ 2600,2980,2700,3000~
** Processing line: ~ 2380,3000,2600,2980~
** Processing line: ~ 2140,3000,2380,3000~
** Processing line: ~ 1880,3000,2140,3000~
** Processing line: ~ 1720,3040,1880,3000~
** Processing line: ~ 1640,2960,1720,3040~
** Processing line: ~ 1500,2940,1640,2960~
** Processing line: ~ 1340,3000,1500,2940~
** Processing line: ~ 1240,3000,1340,3000~
** Processing line: ~ 1140,3020,1240,3000~
** Processing line: ~ 1040,3000,1140,3020~
** Processing line: ~ 960,2960,1040,3000~
** Processing line: ~ 900,2960,960,2960~
** Processing line: ~ 840,2840,900,2960~
** Processing line: ~ 700,2820,840,2840~
** Processing line: ~ 540,2820,700,2820~
** Processing line: ~ 420,2820,540,2820~
** Processing line: ~ 180,2800,420,2820~
** Processing line: ~ 60,2780,180,2800~
** Processing line: ~ -60,2800,60,2780~
** Processing line: ~ -160,2760,-60,2800~
** Processing line: ~ -260,2740,-160,2760~
** Processing line: ~ -300,2640,-260,2740~
** Processing line: ~ -360,2560,-300,2640~
** Processing line: ~ -380,2460,-360,2560~
** Processing line: ~ -380,2460,-300,2380~
** Processing line: ~ -300,2300,-300,2380~
** Processing line: ~ -300,2300,-300,2220~
** Processing line: ~ -300,2100,-300,2220~
** Processing line: ~ -300,2100,-300,2040~
** Processing line: ~ -300,2040,-160,2040~
** Processing line: ~ -160,2040,-60,2040~
** Processing line: ~ -60,2040,60,2040~
** Processing line: ~ 60,2040,180,2040~
** Processing line: ~ 180,2040,360,2040~
** Processing line: ~ 360,2040,540,2040~
** Processing line: ~ 540,2040,700,2080~
** Processing line: ~ 660,2160,700,2080~
** Processing line: ~ 660,2160,700,2260~
** Processing line: ~ 660,2380,700,2260~
** Processing line: ~ 500,2340,660,2380~
** Processing line: ~ 360,2340,500,2340~
** Processing line: ~ 240,2340,360,2340~
** Processing line: ~ 40,2320,240,2340~
** Processing line: ~ -60,2320,40,2320~
** Processing line: ~ -100,2380,-60,2320~
** Processing line: ~ -100,2380,-100,2460~
** Processing line: ~ -100,2460,-100,2540~
** Processing line: ~ -100,2540,0,2560~
** Processing line: ~ 0,2560,140,2600~
** Processing line: ~ 140,2600,300,2600~
** Processing line: ~ 300,2600,460,2600~
** Processing line: ~ 460,2600,640,2600~
** Processing line: ~ 640,2600,760,2580~
** Processing line: ~ 760,2580,820,2560~
** Processing line: ~ 820,2560,820,2500~
** Processing line: ~ 820,2500,820,2400~
** Processing line: ~ 820,2400,840,2320~
** Processing line: ~ 840,2320,840,2240~
** Processing line: ~ 820,2120,840,2240~
** Processing line: ~ 820,2020,820,2120~
** Processing line: ~ 820,1900,820,2020~
** Processing line: ~ 760,1840,820,1900~
** Processing line: ~ 640,1840,760,1840~
** Processing line: ~ 500,1840,640,1840~
** Processing line: ~ 300,1860,420,1880~
** Processing line: ~ 180,1840,300,1860~
** Processing line: ~ 420,1880,500,1840~
** Processing line: ~ 0,1840,180,1840~
** Processing line: ~ -60,1860,0,1840~
** Processing line: ~ -160,1840,-60,1860~
** Processing line: ~ -200,1800,-160,1840~
** Processing line: ~ -260,1760,-200,1800~
** Processing line: ~ -260,1680,-260,1760~
** Processing line: ~ -260,1620,-260,1680~
** Processing line: ~ -260,1540,-260,1620~
** Processing line: ~ -260,1540,-260,1460~
** Processing line: ~ -300,1420,-260,1460~
** Processing line: ~ -300,1420,-300,1340~
** Processing line: ~ -300,1340,-260,1260~
** Processing line: ~ -260,1260,-260,1160~
** Processing line: ~ -260,1060,-260,1160~
** Processing line: ~ -260,1060,-260,960~
** Processing line: ~ -260,880,-260,960~
** Processing line: ~ -260,880,-260,780~
** Processing line: ~ -260,780,-260,680~
** Processing line: ~ -300,580,-260,680~
** Processing line: ~ -300,580,-300,480~
** Processing line: ~ -300,480,-260,400~
** Processing line: ~ -300,320,-260,400~
** Processing line: ~ -300,320,-300,240~
** Processing line: ~ -300,240,-200,220~
** Processing line: ~ -200,220,-200,160~
** Processing line: ~ -200,160,-100,140~
** Processing line: ~ -100,140,0,120~
** Processing line: ~ 0,120,60,120~
** Processing line: ~ 60,120,180,120~
** Processing line: ~ 180,120,300,120~
** Processing line: ~ 300,120,420,140~
** Processing line: ~ 420,140,580,180~
** Processing line: ~ 580,180,760,180~
** Processing line: ~ 760,180,900,180~
** Processing line: ~ 960,180,1100,180~
** Processing line: ~ 1100,180,1340,200~
** Processing line: ~ 1340,200,1580,200~
** Processing line: ~ 1580,200,1720,180~
** Processing line: ~ 1720,180,2000,140~
** Processing line: ~ 2000,140,2240,140~
** Processing line: ~ 2240,140,2480,140~
** Processing line: ~ 2520,140,2800,160~
** Processing line: ~ 2800,160,3000,160~
** Processing line: ~ 3000,160,3140,160~
** Processing line: ~ 3140,260,3140,160~
** Processing line: ~ 3140,260,3140,380~
** Processing line: ~ 3080,500,3140,380~
** Processing line: ~ 3080,620,3080,500~
** Processing line: ~ 3080,620,3080,740~
** Processing line: ~ 3080,740,3080,840~
** Processing line: ~ 3080,960,3080,840~
** Processing line: ~ 3080,1080,3080,960~
** Processing line: ~ 3080,1080,3080,1200~
** Processing line: ~ 3080,1200,3080,1340~
** Processing line: ~ 3080,1340,3080,1460~
** Processing line: ~ 3080,1580,3080,1460~
** Processing line: ~ 3080,1700,3080,1580~
** Processing line: ~ 3080,1700,3080,1760~
** Processing line: ~ 3080,1760,3200,1760~
** Processing line: ~ 3200,1760,3320,1760~
** Processing line: ~ 3320,1760,3520,1760~
** Processing line: ~ 3520,1760,3680,1740~
** Processing line: ~ 3680,1740,3780,1700~
** Processing line: ~ 3780,1700,3840,1620~
** Processing line: ~ 3840,1620,3840,1520~
** Processing line: ~ 3840,1520,3840,1420~
** Processing line: ~ 3840,1320,3840,1420~
** Processing line: ~ 3840,1120,3840,1320~
** Processing line: ~ 3840,1120,3840,940~
** Processing line: ~ 3840,940,3840,760~
** Processing line: ~ 3780,600,3840,760~
** Processing line: ~ 3780,600,3780,440~
** Processing line: ~ 3780,320,3780,440~
** Processing line: ~ 3780,320,3780,160~
** Processing line: ~ 3780,60,3780,160~
** Processing line: ~ 3780,60,4020,60~
** Processing line: ~ 4020,60,4260,40~
** Processing line: ~ 4260,40,4500,40~
** Processing line: ~ 4500,40,4740,40~
** Processing line: ~ 4740,40,4840,20~
** Processing line: ~ 4840,20,4880,80~
** Processing line: ~ 4880,80,5080,40~
** Processing line: ~ 5080,40,5280,20~
** Processing line: ~ 5280,20,5500,0~
** Processing line: ~ 5500,0,5720,0~
** Processing line: ~ 5720,0,5940,60~
** Processing line: ~ 5940,60,6240,60~
** Processing line: ~ 6240,60,6540,20~
** Processing line: ~ 6540,20,6840,20~
** Processing line: ~ 6840,20,7040,0~
** Processing line: ~ 7040,0,7140,0~
** Processing line: ~ 7140,0,7400,20~
** Processing line: ~ 7400,20,7680,0~
** Processing line: ~ 7680,0,7940,0~
** Processing line: ~ 7940,0,8200,-20~
** Processing line: ~ 8200,-20,8360,20~
** Processing line: ~ 8360,20,8560,-40~
** Processing line: ~ 8560,-40,8760,0~
** Processing line: ~ 8760,0,8880,40~
** Processing line: ~ 8880,120,8880,40~
** Processing line: ~ 8840,220,8840,120~
** Processing line: ~ 8620,240,8840,220~
** Processing line: ~ 8420,260,8620,240~
** Processing line: ~ 8200,280,8420,260~
** Processing line: ~ 7940,280,8200,280~
** Processing line: ~ 7760,240,7940,280~
** Processing line: ~ 7560,220,7760,240~
** Processing line: ~ 7360,280,7560,220~
** Processing line: ~ 7140,260,7360,280~
** Processing line: ~ 6940,240,7140,260~
** Processing line: ~ 6720,220,6940,240~
** Processing line: ~ 6480,220,6720,220~
** Processing line: ~ 6360,300,6480,220~
** Processing line: ~ 6240,300,6360,300~
** Processing line: ~ 6200,500,6240,300~
** Processing line: ~ 6200,500,6360,540~
** Processing line: ~ 6360,540,6540,520~
** Processing line: ~ 6540,520,6720,480~
** Processing line: ~ 6720,480,6880,460~
** Processing line: ~ 6880,460,7080,500~
** Processing line: ~ 7080,500,7320,500~
** Processing line: ~ 7320,500,7680,500~
** Processing line: ~ 7680,620,7680,500~
** Processing line: ~ 7520,640,7680,620~
** Processing line: ~ 7360,640,7520,640~
** Processing line: ~ 7200,640,7360,640~
** Processing line: ~ 7040,660,7200,640~
** Processing line: ~ 6880,720,7040,660~
** Processing line: ~ 6720,700,6880,720~
** Processing line: ~ 6540,700,6720,700~
** Processing line: ~ 6420,760,6540,700~
** Processing line: ~ 6280,740,6420,760~
** Processing line: ~ 6240,760,6280,740~
** Processing line: ~ 6200,920,6240,760~
** Processing line: ~ 6200,920,6360,960~
** Processing line: ~ 6360,960,6540,960~
** Processing line: ~ 6540,960,6720,960~
** Processing line: ~ 6720,960,6760,980~
** Processing line: ~ 6760,980,6880,940~
** Processing line: ~ 6880,940,7080,940~
** Processing line: ~ 7080,940,7280,940~
** Processing line: ~ 7280,940,7520,920~
** Processing line: ~ 7520,920,7760,900~
** Processing line: ~ 7760,900,7980,860~
** Processing line: ~ 7980,860,8100,880~
** Processing line: ~ 8100,880,8280,900~
** Processing line: ~ 8280,900,8500,820~
** Processing line: ~ 8500,820,8700,820~
** Processing line: ~ 8700,820,8760,840~
** Processing line: ~ 8760,960,8760,840~
** Processing line: ~ 8700,1040,8760,960~
** Processing line: ~ 8560,1060,8700,1040~
** Processing line: ~ 8460,1080,8560,1060~
** Processing line: ~ 8360,1040,8460,1080~
** Processing line: ~ 8280,1080,8360,1040~
** Processing line: ~ 8160,1120,8280,1080~
** Processing line: ~ 8040,1120,8160,1120~
** Processing line: ~ 7940,1100,8040,1120~
** Processing line: ~ 7800,1120,7940,1100~
** Processing line: ~ 7680,1120,7800,1120~
** Processing line: ~ 7520,1100,7680,1120~
** Processing line: ~ 7360,1100,7520,1100~
** Processing line: ~ 7200,1120,7360,1100~
** Processing line: ~ 7040,1180,7200,1120~
** Processing line: ~ 6880,1160,7040,1180~
** Processing line: ~ 6720,1160,6880,1160~
** Processing line: ~ 6540,1160,6720,1160~
** Processing line: ~ 6360,1160,6540,1160~
** Processing line: ~ 6200,1160,6360,1160~
** Processing line: ~ 6040,1220,6200,1160~
** Processing line: ~ 6040,1220,6040,1400~
** Processing line: ~ 6040,1400,6200,1440~
** Processing line: ~ 6200,1440,6320,1440~
** Processing line: ~ 6320,1440,6440,1440~
** Processing line: ~ 6600,1440,6760,1440~
** Processing line: ~ 6760,1440,6940,1420~
** Processing line: ~ 6440,1440,6600,1440~
** Processing line: ~ 6940,1420,7280,1400~
** Processing line: ~ 7280,1400,7560,1400~
** Processing line: ~ 7560,1400,7760,1400~
** Processing line: ~ 7760,1400,7940,1360~
** Processing line: ~ 7940,1360,8100,1380~
** Processing line: ~ 8100,1380,8280,1340~
** Processing line: ~ 8280,1340,8460,1320~
** Processing line: ~ 8660,1300,8760,1360~
** Processing line: ~ 8460,1320,8660,1300~
** Processing line: ~ 8760,1360,8800,1500~
** Processing line: ~ 8800,1660,8800,1500~
** Processing line: ~ 8800,1660,8800,1820~
** Processing line: ~ 8700,1840,8800,1820~
** Processing line: ~ 8620,1860,8700,1840~
** Processing line: ~ 8560,1800,8620,1860~
** Processing line: ~ 8560,1800,8620,1680~
** Processing line: ~ 8500,1640,8620,1680~
** Processing line: ~ 8420,1680,8500,1640~
** Processing line: ~ 8280,1680,8420,1680~
** Processing line: ~ 8160,1680,8280,1680~
** Processing line: ~ 7900,1680,8160,1680~
** Processing line: ~ 7680,1680,7900,1680~
** Processing line: ~ 7400,1660,7680,1680~
** Processing line: ~ 7140,1680,7400,1660~
** Processing line: ~ 6880,1640,7140,1680~
** Processing line: ~ 6040,1820,6320,1780~
** Processing line: ~ 5900,1840,6040,1820~
** Processing line: ~ 6640,1700,6880,1640~
** Processing line: ~ 6320,1780,6640,1700~
** Processing line: ~ 5840,2040,5900,1840~
** Processing line: ~ 5840,2040,5840,2220~
** Processing line: ~ 5840,2220,5840,2320~
** Processing line: ~ 5840,2460,5840,2320~
** Processing line: ~ 5840,2560,5840,2460~
** Processing line: ~ 5840,2560,5960,2620~
** Processing line: ~ 5960,2620,6200,2620~
** Processing line: ~ 6200,2620,6380,2600~
** Processing line: ~ 6380,2600,6600,2580~
** Processing line: ~ 6600,2580,6800,2600~
** Processing line: ~ 6800,2600,7040,2580~
** Processing line: ~ 7040,2580,7280,2580~
** Processing line: ~ 7280,2580,7480,2560~
** Processing line: ~ 7760,2540,7980,2520~
** Processing line: ~ 7980,2520,8160,2500~
** Processing line: ~ 7480,2560,7760,2540~
** Processing line: ~ 8160,2500,8160,2420~
** Processing line: ~ 8160,2420,8160,2320~
** Processing line: ~ 8160,2180,8160,2320~
** Processing line: ~ 7980,2160,8160,2180~
** Processing line: ~ 7800,2180,7980,2160~
** Processing line: ~ 7600,2200,7800,2180~
** Processing line: ~ 7400,2200,7600,2200~
** Processing line: ~ 6960,2200,7200,2200~
** Processing line: ~ 7200,2200,7400,2200~
** Processing line: ~ 6720,2200,6960,2200~
** Processing line: ~ 6540,2180,6720,2200~
** Processing line: ~ 6320,2200,6540,2180~
** Processing line: ~ 6240,2160,6320,2200~
** Processing line: ~ 6240,2160,6240,2040~
** Processing line: ~ 6240,2040,6240,1940~
** Processing line: ~ 6240,1940,6440,1940~
** Processing line: ~ 6440,1940,6720,1940~
** Processing line: ~ 6720,1940,6940,1920~
** Processing line: ~ 7520,1920,7760,1920~
** Processing line: ~ 6940,1920,7280,1920~
** Processing line: ~ 7280,1920,7520,1920~
** Processing line: ~ 7760,1920,8100,1900~
** Processing line: ~ 8100,1900,8420,1900~
** Processing line: ~ 8420,1900,8460,1940~
** Processing line: ~ 8460,2120,8460,1940~
** Processing line: ~ 8460,2280,8460,2120~
** Processing line: ~ 8460,2280,8560,2420~
** Processing line: ~ 8560,2420,8660,2380~
** Processing line: ~ 8660,2380,8800,2340~
** Processing line: ~ 8800,2340,8840,2400~
** Processing line: ~ 8840,2520,8840,2400~
** Processing line: ~ 8800,2620,8840,2520~
** Processing line: ~ 8800,2740,8800,2620~
** Processing line: ~ 8800,2860,8800,2740~
** Processing line: ~ 8800,2940,8800,2860~
** Processing line: ~ 8760,2980,8800,2940~
** Processing line: ~ 8660,2980,8760,2980~
** Processing line: ~ 8620,2960,8660,2980~
** Processing line: ~ 8560,2880,8620,2960~
** Processing line: ~ 8560,2880,8560,2780~
** Processing line: ~ 8500,2740,8560,2780~
** Processing line: ~ 8420,2760,8500,2740~
** Processing line: ~ 8420,2840,8420,2760~
** Processing line: ~ 8420,2840,8420,2940~
** Processing line: ~ 8420,3040,8420,2940~
** Processing line: ~ 8420,3160,8420,3040~
** Processing line: ~ 8420,3280,8420,3380~
** Processing line: ~ 8420,3280,8420,3160~
** Processing line: ~ 8420,3380,8620,3460~
** Processing line: ~ 8620,3460,8760,3460~
** Processing line: ~ 8760,3460,8840,3400~
** Processing line: ~ 8840,3400,8960,3400~
** Processing line: ~ 8960,3400,9000,3500~
** Processing line: ~ 9000,3700,9000,3500~
** Processing line: ~ 9000,3900,9000,3700~
** Processing line: ~ 9000,4080,9000,3900~
** Processing line: ~ 9000,4280,9000,4080~
** Processing line: ~ 9000,4500,9000,4280~
** Processing line: ~ 9000,4620,9000,4500~
** Processing line: ~ 9000,4780,9000,4620~
** Processing line: ~ 9000,4780,9000,4960~
** Processing line: ~ 9000,5120,9000,4960~
** Processing line: ~ 9000,5120,9000,5300~
** Processing line: ~ 8960,5460,9000,5300~
** Processing line: ~ 8920,5620,8960,5460~
** Processing line: ~ 8920,5620,8920,5800~
** Processing line: ~ 8920,5800,8920,5960~
** Processing line: ~ 8920,5960,8920,6120~
** Processing line: ~ 8920,6120,8960,6300~
** Processing line: ~ 8960,6300,8960,6480~
** Processing line: ~ 8960,6660,8960,6480~
** Processing line: ~ 8960,6860,8960,6660~
** Processing line: ~ 8960,7040,8960,6860~
** Processing line: ~ 8920,7420,8920,7220~
** Processing line: ~ 8920,7420,8960,7620~
** Processing line: ~ 8960,7620,8960,7800~
** Processing line: ~ 8960,7800,8960,8000~
** Processing line: ~ 8960,8000,8960,8180~
** Processing line: ~ 8960,8180,8960,8380~
** Processing line: ~ 8960,8580,8960,8380~
** Processing line: ~ 8920,8800,8960,8580~
** Processing line: ~ 8880,9000,8920,8800~
** Processing line: ~ 8840,9180,8880,9000~
** Processing line: ~ 8800,9220,8840,9180~
** Processing line: ~ 8800,9220,8840,9340~
** Processing line: ~ 8760,9380,8840,9340~
** Processing line: ~ 8560,9340,8760,9380~
** Processing line: ~ 8360,9360,8560,9340~
** Processing line: ~ 8160,9360,8360,9360~
** Processing line: ~ 8040,9340,8160,9360~
** Processing line: ~ 7860,9360,8040,9340~
** Processing line: ~ 7680,9360,7860,9360~
** Processing line: ~ 7520,9360,7680,9360~
** Processing line: ~ 7420,9260,7520,9360~
** Processing line: ~ 7400,9080,7420,9260~
** Processing line: ~ 7400,9080,7420,8860~
** Processing line: ~ 7420,8860,7440,8720~
** Processing line: ~ 7440,8720,7480,8660~
** Processing line: ~ 7480,8660,7520,8540~
** Processing line: ~ 7520,8540,7600,8460~
** Processing line: ~ 7600,8460,7800,8480~
** Processing line: ~ 7800,8480,8040,8480~
** Processing line: ~ 8040,8480,8280,8480~
** Processing line: ~ 8280,8480,8500,8460~
** Processing line: ~ 8500,8460,8620,8440~
** Processing line: ~ 8620,8440,8660,8340~
** Processing line: ~ 8660,8340,8660,8220~
** Processing line: ~ 8660,8220,8700,8080~
** Processing line: ~ 8700,8080,8700,7920~
** Processing line: ~ 8700,7920,8700,7760~
** Processing line: ~ 8700,7760,8700,7620~
** Processing line: ~ 8700,7480,8700,7620~
** Processing line: ~ 8700,7480,8700,7320~
** Processing line: ~ 8700,7160,8700,7320~
** Processing line: ~ 8920,7220,8960,7040~
** Processing line: ~ 8660,7040,8700,7160~
** Processing line: ~ 8660,7040,8700,6880~
** Processing line: ~ 8660,6700,8700,6880~
** Processing line: ~ 8660,6700,8700,6580~
** Processing line: ~ 8700,6460,8700,6580~
** Processing line: ~ 8700,6460,8700,6320~
** Processing line: ~ 8700,6160,8700,6320~
** Processing line: ~ 8700,6160,8760,6020~
** Processing line: ~ 8760,6020,8760,5860~
** Processing line: ~ 8760,5860,8760,5700~
** Processing line: ~ 8760,5700,8760,5540~
** Processing line: ~ 8760,5540,8760,5360~
** Processing line: ~ 8760,5360,8760,5180~
** Processing line: ~ 8760,5000,8760,5180~
** Processing line: ~ 8700,4820,8760,5000~
** Processing line: ~ 8560,4740,8700,4820~
** Processing line: ~ 8420,4700,8560,4740~
** Processing line: ~ 8280,4700,8420,4700~
** Processing line: ~ 8100,4700,8280,4700~
** Processing line: ~ 7980,4700,8100,4700~
** Processing line: ~ 7820,4740,7980,4700~
** Processing line: ~ 7800,4920,7820,4740~
** Processing line: ~ 7800,4920,7900,4960~
** Processing line: ~ 7900,4960,8060,4980~
** Processing line: ~ 8060,4980,8220,5000~
** Processing line: ~ 8220,5000,8420,5040~
** Processing line: ~ 8420,5040,8460,5120~
** Processing line: ~ 8460,5180,8460,5120~
** Processing line: ~ 8360,5200,8460,5180~
** Processing line: ~ 8360,5280,8360,5200~
** Processing line: ~ 8160,5300,8360,5280~
** Processing line: ~ 8040,5260,8160,5300~
** Processing line: ~ 7860,5220,8040,5260~
** Processing line: ~ 7720,5160,7860,5220~
** Processing line: ~ 7640,5120,7720,5160~
** Processing line: ~ 7480,5120,7640,5120~
** Processing line: ~ 7240,5120,7480,5120~
** Processing line: ~ 7000,5120,7240,5120~
** Processing line: ~ 6800,5160,7000,5120~
** Processing line: ~ 6640,5220,6800,5160~
** Processing line: ~ 6600,5360,6640,5220~
** Processing line: ~ 6600,5460,6600,5360~
** Processing line: ~ 6480,5520,6600,5460~
** Processing line: ~ 6240,5540,6480,5520~
** Processing line: ~ 5980,5540,6240,5540~
** Processing line: ~ 5740,5540,5980,5540~
** Processing line: ~ 5500,5520,5740,5540~
** Processing line: ~ 5400,5520,5500,5520~
** Processing line: ~ 5280,5540,5400,5520~
** Processing line: ~ 5080,5540,5280,5540~
** Processing line: ~ 4940,5540,5080,5540~
** Processing line: ~ 4760,5540,4940,5540~
** Processing line: ~ 4600,5540,4760,5540~
** Processing line: ~ 4440,5560,4600,5540~
** Processing line: ~ 4040,5580,4120,5520~
** Processing line: ~ 4260,5540,4440,5560~
** Processing line: ~ 4120,5520,4260,5540~
** Processing line: ~ 4020,5720,4040,5580~
** Processing line: ~ 4020,5840,4020,5720~
** Processing line: ~ 4020,5840,4080,5940~
** Processing line: ~ 4080,5940,4120,6040~
** Processing line: ~ 4120,6040,4200,6080~
** Processing line: ~ 4200,6080,4340,6080~
** Processing line: ~ 4340,6080,4500,6060~
** Processing line: ~ 4500,6060,4700,6060~
** Processing line: ~ 4700,6060,4880,6060~
** Processing line: ~ 4880,6060,5080,6060~
** Processing line: ~ 5080,6060,5280,6080~
** Processing line: ~ 5280,6080,5440,6100~
** Processing line: ~ 5440,6100,5660,6100~
** Processing line: ~ 5660,6100,5900,6080~
** Processing line: ~ 5900,6080,6120,6080~
** Processing line: ~ 6120,6080,6360,6080~
** Processing line: ~ 6360,6080,6480,6100~
** Processing line: ~ 6480,6100,6540,6060~
** Processing line: ~ 6540,6060,6720,6060~
** Processing line: ~ 6720,6060,6940,6060~
** Processing line: ~ 6940,6060,7140,6060~
** Processing line: ~ 7400,6060,7600,6060~
** Processing line: ~ 7140,6060,7400,6060~
** Processing line: ~ 7600,6060,7800,6060~
** Processing line: ~ 7800,6060,7860,6080~
** Processing line: ~ 7860,6080,8060,6080~
** Processing line: ~ 8060,6080,8220,6080~
** Processing line: ~ 8220,6080,8320,6140~
** Processing line: ~ 8320,6140,8360,6300~
** Processing line: ~ 8320,6460,8360,6300~
** Processing line: ~ 8320,6620,8320,6460~
** Processing line: ~ 8320,6800,8320,6620~
** Processing line: ~ 8320,6960,8320,6800~
** Processing line: ~ 8320,6960,8360,7120~
** Processing line: ~ 8320,7280,8360,7120~
** Processing line: ~ 8320,7440,8320,7280~
** Processing line: ~ 8320,7600,8320,7440~
** Processing line: ~ 8100,7580,8220,7600~
** Processing line: ~ 8220,7600,8320,7600~
** Processing line: ~ 7900,7560,8100,7580~
** Processing line: ~ 7680,7560,7900,7560~
** Processing line: ~ 7480,7580,7680,7560~
** Processing line: ~ 7280,7580,7480,7580~
** Processing line: ~ 7080,7580,7280,7580~
** Processing line: ~ 7000,7600,7080,7580~
** Processing line: ~ 6880,7600,7000,7600~
** Processing line: ~ 6800,7580,6880,7600~
** Processing line: ~ 6640,7580,6800,7580~
** Processing line: ~ 6540,7580,6640,7580~
** Processing line: ~ 6380,7600,6540,7580~
** Processing line: ~ 6280,7620,6380,7600~
** Processing line: ~ 6240,7700,6280,7620~
** Processing line: ~ 6240,7700,6240,7800~
** Processing line: ~ 6240,7840,6240,7800~
** Processing line: ~ 6080,7840,6240,7840~
** Processing line: ~ 5960,7820,6080,7840~
** Processing line: ~ 5660,7840,5800,7840~
** Processing line: ~ 5500,7800,5660,7840~
** Processing line: ~ 5440,7700,5500,7800~
** Processing line: ~ 5800,7840,5960,7820~
** Processing line: ~ 5440,7540,5440,7700~
** Processing line: ~ 5440,7440,5440,7540~
** Processing line: ~ 5440,7320,5440,7440~
** Processing line: ~ 5400,7320,5440,7320~
** Processing line: ~ 5340,7400,5400,7320~
** Processing line: ~ 5340,7400,5340,7500~
** Processing line: ~ 5340,7600,5340,7500~
** Processing line: ~ 5340,7600,5340,7720~
** Processing line: ~ 5340,7720,5340,7860~
** Processing line: ~ 5340,7860,5340,7960~
** Processing line: ~ 5340,7960,5440,8020~
** Processing line: ~ 5440,8020,5560,8020~
** Processing line: ~ 5560,8020,5720,8040~
** Processing line: ~ 5720,8040,5900,8060~
** Processing line: ~ 5900,8060,6080,8060~
** Processing line: ~ 6080,8060,6240,8060~
** Processing line: ~ 6720,8040,6840,8060~
** Processing line: ~ 6240,8060,6480,8040~
** Processing line: ~ 6480,8040,6720,8040~
** Processing line: ~ 6840,8060,6940,8060~
** Processing line: ~ 6940,8060,7080,8120~
** Processing line: ~ 7080,8120,7140,8180~
** Processing line: ~ 7140,8460,7140,8320~
** Processing line: ~ 7140,8620,7140,8460~
** Processing line: ~ 7140,8620,7140,8740~
** Processing line: ~ 7140,8860,7140,8740~
** Processing line: ~ 7140,8960,7140,8860~
** Processing line: ~ 7140,8960,7200,9080~
** Processing line: ~ 7140,9200,7200,9080~
** Processing line: ~ 7140,9200,7200,9320~
** Processing line: ~ 7200,9320,7200,9460~
** Processing line: ~ 7200,9760,7200,9900~
** Processing line: ~ 7200,9620,7200,9460~
** Processing line: ~ 7200,9620,7200,9760~
** Processing line: ~ 7200,9900,7200,10060~
** Processing line: ~ 7200,10220,7200,10060~
** Processing line: ~ 7200,10360,7200,10220~
** Processing line: ~ 7140,10400,7200,10360~
** Processing line: ~ 6880,10400,7140,10400~
** Processing line: ~ 6640,10360,6880,10400~
** Processing line: ~ 6420,10360,6640,10360~
** Processing line: ~ 6160,10380,6420,10360~
** Processing line: ~ 5940,10340,6160,10380~
** Processing line: ~ 5720,10320,5940,10340~
** Processing line: ~ 5500,10340,5720,10320~
** Processing line: ~ 5280,10300,5500,10340~
** Processing line: ~ 5080,10300,5280,10300~
** Processing line: ~ 4840,10280,5080,10300~
** Processing line: ~ 4700,10280,4840,10280~
** Processing line: ~ 4540,10280,4700,10280~
** Processing line: ~ 4360,10280,4540,10280~
** Processing line: ~ 4200,10300,4360,10280~
** Processing line: ~ 4040,10380,4200,10300~
** Processing line: ~ 4020,10500,4040,10380~
** Processing line: ~ 3980,10640,4020,10500~
** Processing line: ~ 3980,10640,3980,10760~
** Processing line: ~ 3980,10760,4020,10920~
** Processing line: ~ 4020,10920,4080,11000~
** Processing line: ~ 4080,11000,4340,11020~
** Processing line: ~ 4340,11020,4600,11060~
** Processing line: ~ 4600,11060,4840,11040~
** Processing line: ~ 4840,11040,4880,10960~
** Processing line: ~ 4880,10740,4880,10960~
** Processing line: ~ 4880,10740,4880,10600~
** Processing line: ~ 4880,10600,5080,10560~
** Processing line: ~ 5080,10560,5340,10620~
** Processing line: ~ 5340,10620,5660,10620~
** Processing line: ~ 5660,10620,6040,10600~
** Processing line: ~ 6040,10600,6120,10620~
** Processing line: ~ 6120,10620,6240,10720~
** Processing line: ~ 6240,10720,6420,10740~
** Processing line: ~ 6420,10740,6640,10760~
** Processing line: ~ 6640,10760,6880,10780~
** Processing line: ~ 7140,10780,7400,10780~
** Processing line: ~ 6880,10780,7140,10780~
** Processing line: ~ 7400,10780,7680,10780~
** Processing line: ~ 7680,10780,8100,10760~
** Processing line: ~ 8100,10760,8460,10740~
** Processing line: ~ 8460,10740,8700,10760~
** Processing line: ~ 8800,10840,8800,10980~
** Processing line: ~ 8700,10760,8800,10840~
** Processing line: ~ 8760,11200,8800,10980~
** Processing line: ~ 8760,11200,8760,11380~
** Processing line: ~ 8760,11380,8800,11560~
** Processing line: ~ 8760,11680,8800,11560~
** Processing line: ~ 8760,11760,8760,11680~
** Processing line: ~ 8760,11760,8760,11920~
** Processing line: ~ 8760,11920,8800,12080~
** Processing line: ~ 8800,12200,8800,12080~
** Processing line: ~ 8700,12240,8800,12200~
** Processing line: ~ 8560,12220,8700,12240~
** Processing line: ~ 8360,12220,8560,12220~
** Processing line: ~ 8160,12240,8360,12220~
** Processing line: ~ 7720,12220,7980,12220~
** Processing line: ~ 7980,12220,8160,12240~
** Processing line: ~ 7400,12200,7720,12220~
** Processing line: ~ 7200,12180,7400,12200~
** Processing line: ~ 7000,12160,7200,12180~
** Processing line: ~ 6800,12160,7000,12160~
** Processing line: ~ 6280,12140,6380,12180~
** Processing line: ~ 6120,12180,6280,12140~
** Processing line: ~ 6540,12180,6800,12160~
** Processing line: ~ 6380,12180,6540,12180~
** Processing line: ~ 5900,12200,6120,12180~
** Processing line: ~ 5620,12180,5900,12200~
** Processing line: ~ 5340,12120,5620,12180~
** Processing line: ~ 5140,12100,5340,12120~
** Processing line: ~ 4980,12120,5140,12100~
** Processing line: ~ 4840,12120,4980,12120~
** Processing line: ~ 4700,12200,4840,12120~
** Processing line: ~ 4700,12380,4700,12200~
** Processing line: ~ 4740,12480,4940,12520~
** Processing line: ~ 4700,12380,4740,12480~
** Processing line: ~ 4940,12520,5160,12560~
** Processing line: ~ 5160,12560,5340,12600~
** Processing line: ~ 5340,12600,5400,12600~
** Processing line: ~ 5400,12600,5500,12600~
** Processing line: ~ 5500,12600,5620,12600~
** Processing line: ~ 5620,12600,5720,12560~
** Processing line: ~ 5720,12560,5800,12440~
** Processing line: ~ 5800,12440,5900,12380~
** Processing line: ~ 5900,12380,6120,12420~
** Processing line: ~ 6120,12420,6380,12440~
** Processing line: ~ 6380,12440,6600,12460~
** Processing line: ~ 6720,12460,6840,12520~
** Processing line: ~ 6840,12520,6960,12520~
** Processing line: ~ 6600,12460,6720,12460~
** Processing line: ~ 6960,12520,7040,12500~
** Processing line: ~ 7040,12500,7140,12440~
** Processing line: ~ 7200,12440,7360,12500~
** Processing line: ~ 7360,12500,7600,12560~
** Processing line: ~ 7600,12560,7860,12600~
** Processing line: ~ 7860,12600,8060,12500~
** Processing line: ~ 8100,12500,8200,12340~
** Processing line: ~ 8200,12340,8360,12360~
** Processing line: ~ 8360,12360,8560,12400~
** Processing line: ~ 8560,12400,8660,12420~
** Processing line: ~ 8660,12420,8840,12400~
** Processing line: ~ 8840,12400,9000,12360~
** Processing line: ~ 9000,12360,9000,12360~
** Processing line: ~ 2900,4400,2900,4280~
** Processing line: ~ 900,7320,1000,7220~
** Processing line: ~ 2640,13040,2900,12920~
** Processing line: ~ 2900,12920,3160,12840~
** Processing line: ~ 3480,12760,3780,12620~
** Processing line: ~ 3780,12620,4020,12460~
** Processing line: ~ 4300,12360,4440,12260~
** Processing line: ~ 4020,12460,4300,12360~
** Processing line: ~ 3160,12840,3480,12760~
** Processing line: ~ 4440,12080,4440,12260~
** Processing line: ~ 4440,12080,4440,11880~
** Processing line: ~ 4440,11880,4440,11720~
** Processing line: ~ 4440,11720,4600,11720~
** Processing line: ~ 4600,11720,4760,11740~
** Processing line: ~ 4760,11740,4980,11760~
** Processing line: ~ 4980,11760,5160,11760~
** Processing line: ~ 5160,11760,5340,11780~
** Processing line: ~ 6000,11860,6120,11820~
** Processing line: ~ 5340,11780,5620,11820~
** Processing line: ~ 5620,11820,6000,11860~
** Processing line: ~ 6120,11820,6360,11820~
** Processing line: ~ 6360,11820,6640,11860~
** Processing line: ~ 6940,11920,7240,11940~
** Processing line: ~ 7240,11940,7520,11960~
** Processing line: ~ 7520,11960,7860,11960~
** Processing line: ~ 7860,11960,8100,11920~
** Processing line: ~ 8100,11920,8420,11940~
** Processing line: ~ 8420,11940,8460,11960~
** Processing line: ~ 8460,11960,8500,11860~
** Processing line: ~ 8460,11760,8500,11860~
** Processing line: ~ 8320,11720,8460,11760~
** Processing line: ~ 8160,11720,8320,11720~
** Processing line: ~ 7940,11720,8160,11720~
** Processing line: ~ 7720,11700,7940,11720~
** Processing line: ~ 7520,11680,7720,11700~
** Processing line: ~ 7320,11680,7520,11680~
** Processing line: ~ 7200,11620,7320,11680~
** Processing line: ~ 7200,11620,7200,11500~
** Processing line: ~ 7200,11500,7280,11440~
** Processing line: ~ 7280,11440,7420,11440~
** Processing line: ~ 7420,11440,7600,11440~
** Processing line: ~ 7600,11440,7980,11460~
** Processing line: ~ 7980,11460,8160,11460~
** Processing line: ~ 8160,11460,8360,11460~
** Processing line: ~ 8360,11460,8460,11400~
** Processing line: ~ 8420,11060,8500,11200~
** Processing line: ~ 8280,11040,8420,11060~
** Processing line: ~ 8100,11060,8280,11040~
** Processing line: ~ 8460,11400,8500,11200~
** Processing line: ~ 7800,11060,8100,11060~
** Processing line: ~ 7520,11060,7800,11060~
** Processing line: ~ 7240,11060,7520,11060~
** Processing line: ~ 6940,11040,7240,11060~
** Processing line: ~ 6640,11000,6940,11040~
** Processing line: ~ 6420,10980,6640,11000~
** Processing line: ~ 6360,11060,6420,10980~
** Processing line: ~ 6360,11180,6360,11060~
** Processing line: ~ 6200,11280,6360,11180~
** Processing line: ~ 5960,11300,6200,11280~
** Processing line: ~ 5720,11280,5960,11300~
** Processing line: ~ 5500,11280,5720,11280~
** Processing line: ~ 4940,11300,5200,11280~
** Processing line: ~ 4660,11260,4940,11300~
** Processing line: ~ 4440,11280,4660,11260~
** Processing line: ~ 4260,11280,4440,11280~
** Processing line: ~ 4220,11220,4260,11280~
** Processing line: ~ 4080,11280,4220,11220~
** Processing line: ~ 3980,11420,4080,11280~
** Processing line: ~ 3980,11420,4040,11620~
** Processing line: ~ 4040,11620,4040,11820~
** Processing line: ~ 3980,11960,4040,11820~
** Processing line: ~ 3840,12000,3980,11960~
** Processing line: ~ 3720,11940,3840,12000~
** Processing line: ~ 3680,11800,3720,11940~
** Processing line: ~ 3680,11580,3680,11800~
** Processing line: ~ 3680,11360,3680,11580~
** Processing line: ~ 3680,11360,3680,11260~
** Processing line: ~ 3680,11080,3680,11260~
** Processing line: ~ 3680,11080,3680,10880~
** Processing line: ~ 3680,10700,3680,10880~
** Processing line: ~ 3680,10700,3680,10620~
** Processing line: ~ 3680,10480,3680,10620~
** Processing line: ~ 3680,10480,3680,10300~
** Processing line: ~ 3680,10300,3680,10100~
** Processing line: ~ 3680,10100,3680,9940~
** Processing line: ~ 3680,9940,3720,9860~
** Processing line: ~ 3720,9860,3920,9900~
** Processing line: ~ 3920,9900,4220,9880~
** Processing line: ~ 4980,9940,5340,9960~
** Processing line: ~ 4220,9880,4540,9900~
** Processing line: ~ 4540,9900,4980,9940~
** Processing line: ~ 5340,9960,5620,9960~
** Processing line: ~ 5620,9960,5900,9960~
** Processing line: ~ 5900,9960,6160,10000~
** Processing line: ~ 6160,10000,6480,10000~
** Processing line: ~ 6480,10000,6720,10000~
** Processing line: ~ 6720,10000,6880,9860~
** Processing line: ~ 6880,9860,6880,9520~
** Processing line: ~ 6880,9520,6940,9340~
** Processing line: ~ 6940,9120,6940,9340~
** Processing line: ~ 6940,9120,6940,8920~
** Processing line: ~ 6940,8700,6940,8920~
** Processing line: ~ 6880,8500,6940,8700~
** Processing line: ~ 6880,8320,6880,8500~
** Processing line: ~ 7140,8320,7140,8180~
** Processing line: ~ 6760,8260,6880,8320~
** Processing line: ~ 6540,8240,6760,8260~
** Processing line: ~ 6420,8180,6540,8240~
** Processing line: ~ 6280,8240,6420,8180~
** Processing line: ~ 6160,8300,6280,8240~
** Processing line: ~ 6120,8400,6160,8300~
** Processing line: ~ 6080,8520,6120,8400~
** Processing line: ~ 5840,8480,6080,8520~
** Processing line: ~ 5620,8500,5840,8480~
** Processing line: ~ 5500,8500,5620,8500~
** Processing line: ~ 5340,8560,5500,8500~
** Processing line: ~ 5160,8540,5340,8560~
** Processing line: ~ 4620,8520,4880,8520~
** Processing line: ~ 4360,8480,4620,8520~
** Processing line: ~ 4880,8520,5160,8540~
** Processing line: ~ 4140,8440,4360,8480~
** Processing line: ~ 3920,8460,4140,8440~
** Processing line: ~ 3720,8380,3920,8460~
** Processing line: ~ 3680,8160,3720,8380~
** Processing line: ~ 3680,8160,3720,7940~
** Processing line: ~ 3720,7720,3720,7940~
** Processing line: ~ 3680,7580,3720,7720~
** Processing line: ~ 3680,7580,3720,7440~
** Processing line: ~ 3720,7440,3720,7300~
** Processing line: ~ 3720,7160,3720,7300~
** Processing line: ~ 3720,7160,3720,7020~
** Processing line: ~ 3720,7020,3780,6900~
** Processing line: ~ 3780,6900,4080,6940~
** Processing line: ~ 4080,6940,4340,6980~
** Processing line: ~ 4340,6980,4600,6980~
** Processing line: ~ 4600,6980,4880,6980~
** Processing line: ~ 4880,6980,5160,6980~
** Processing line: ~ 5160,6980,5400,7000~
** Processing line: ~ 5400,7000,5560,7020~
** Processing line: ~ 5560,7020,5660,7080~
** Processing line: ~ 5660,7080,5660,7280~
** Processing line: ~ 5660,7280,5660,7440~
** Processing line: ~ 5660,7440,5740,7520~
** Processing line: ~ 5740,7520,5740,7600~
** Processing line: ~ 5740,7600,5900,7600~
** Processing line: ~ 5900,7600,6040,7540~
** Processing line: ~ 6040,7540,6040,7320~
** Processing line: ~ 6040,7320,6120,7200~
** Processing line: ~ 6120,7200,6120,7040~
** Processing line: ~ 6120,7040,6240,7000~
** Processing line: ~ 6240,7000,6480,7060~
** Processing line: ~ 6480,7060,6800,7060~
** Processing line: ~ 6800,7060,7080,7080~
** Processing line: ~ 7080,7080,7320,7100~
** Processing line: ~ 7940,7100,7980,6920~
** Processing line: ~ 7860,6860,7980,6920~
** Processing line: ~ 7640,6860,7860,6860~
** Processing line: ~ 7400,6840,7640,6860~
** Processing line: ~ 7320,7100,7560,7120~
** Processing line: ~ 7560,7120,7760,7120~
** Processing line: ~ 7760,7120,7940,7100~
** Processing line: ~ 7200,6820,7400,6840~
** Processing line: ~ 7040,6820,7200,6820~
** Processing line: ~ 6600,6840,6840,6840~
** Processing line: ~ 6380,6800,6600,6840~
** Processing line: ~ 6120,6800,6380,6800~
** Processing line: ~ 5900,6840,6120,6800~
** Processing line: ~ 5620,6820,5900,6840~
** Processing line: ~ 5400,6800,5620,6820~
** Processing line: ~ 5140,6800,5400,6800~
** Processing line: ~ 4880,6780,5140,6800~
** Processing line: ~ 4600,6760,4880,6780~
** Processing line: ~ 4340,6760,4600,6760~
** Processing line: ~ 4080,6760,4340,6760~
** Processing line: ~ 3840,6740,4080,6760~
** Processing line: ~ 3680,6720,3840,6740~
** Processing line: ~ 3680,6720,3680,6560~
** Processing line: ~ 3680,6560,3720,6400~
** Processing line: ~ 3720,6400,3720,6200~
** Processing line: ~ 3720,6200,3780,6000~
** Processing line: ~ 3720,5780,3780,6000~
** Processing line: ~ 3720,5580,3720,5780~
** Processing line: ~ 3720,5360,3720,5580~
** Processing line: ~ 3720,5360,3840,5240~
** Processing line: ~ 3840,5240,4200,5260~
** Processing line: ~ 4200,5260,4600,5280~
** Processing line: ~ 4600,5280,4880,5280~
** Processing line: ~ 4880,5280,5140,5200~
** Processing line: ~ 5140,5200,5220,5100~
** Processing line: ~ 5220,5100,5280,4900~
** Processing line: ~ 5280,4900,5340,4840~
** Processing line: ~ 5340,4840,5720,4880~
** Processing line: ~ 6120,4880,6480,4860~
** Processing line: ~ 6880,4840,7200,4860~
** Processing line: ~ 6480,4860,6880,4840~
** Processing line: ~ 7200,4860,7320,4860~
** Processing line: ~ 7320,4860,7360,4740~
** Processing line: ~ 7360,4600,7440,4520~
** Processing line: ~ 7360,4600,7360,4740~
** Processing line: ~ 7440,4520,7640,4520~
** Processing line: ~ 7640,4520,7800,4480~
** Processing line: ~ 7800,4480,7800,4280~
** Processing line: ~ 7800,4280,7800,4040~
** Processing line: ~ 7800,4040,7800,3780~
** Processing line: ~ 7800,3560,7800,3780~
** Processing line: ~ 7800,3560,7860,3440~
** Processing line: ~ 7860,3440,8060,3460~
** Processing line: ~ 8060,3460,8160,3340~
** Processing line: ~ 8160,3340,8160,3140~
** Processing line: ~ 8160,3140,8160,2960~
** Processing line: ~ 8000,2900,8160,2960~
** Processing line: ~ 7860,2900,8000,2900~
** Processing line: ~ 7640,2940,7860,2900~
** Processing line: ~ 7400,2980,7640,2940~
** Processing line: ~ 7100,2980,7400,2980~
** Processing line: ~ 6840,3000,7100,2980~
** Processing line: ~ 5620,2980,5840,2980~
** Processing line: ~ 5840,2980,6500,3000~
** Processing line: ~ 6500,3000,6840,3000~
** Processing line: ~ 5560,2780,5620,2980~
** Processing line: ~ 5560,2780,5560,2580~
** Processing line: ~ 5560,2580,5560,2380~
** Processing line: ~ 5560,2140,5560,2380~
** Processing line: ~ 5560,2140,5560,1900~
** Processing line: ~ 5560,1900,5620,1660~
** Processing line: ~ 5620,1660,5660,1460~
** Processing line: ~ 5660,1460,5660,1300~
** Processing line: ~ 5500,1260,5660,1300~
** Processing line: ~ 5340,1260,5500,1260~
** Processing line: ~ 4600,1220,4840,1240~
** Processing line: ~ 4440,1220,4600,1220~
** Processing line: ~ 4440,1080,4440,1220~
** Processing line: ~ 4440,1080,4600,1020~
** Processing line: ~ 5080,1260,5340,1260~
** Processing line: ~ 4840,1240,5080,1260~
** Processing line: ~ 4600,1020,4940,1020~
** Processing line: ~ 4940,1020,5220,1020~
** Processing line: ~ 5220,1020,5560,960~
** Processing line: ~ 5560,960,5660,860~
** Processing line: ~ 5660,740,5660,860~
** Processing line: ~ 5280,740,5660,740~
** Processing line: ~ 4940,780,5280,740~
** Processing line: ~ 4660,760,4940,780~
** Processing line: ~ 4500,700,4660,760~
** Processing line: ~ 4500,520,4500,700~
** Processing line: ~ 4500,520,4700,460~
** Processing line: ~ 4700,460,5080,440~
** Processing line: ~ 5440,420,5740,420~
** Processing line: ~ 5080,440,5440,420~
** Processing line: ~ 5740,420,5840,360~
** Processing line: ~ 5800,280,5840,360~
** Processing line: ~ 5560,280,5800,280~
** Processing line: ~ 4980,300,5280,320~
** Processing line: ~ 4360,320,4660,300~
** Processing line: ~ 4200,360,4360,320~
** Processing line: ~ 5280,320,5560,280~
** Processing line: ~ 4660,300,4980,300~
** Processing line: ~ 4140,480,4200,360~
** Processing line: ~ 4140,480,4140,640~
** Processing line: ~ 4140,640,4200,780~
** Processing line: ~ 4200,780,4200,980~
** Processing line: ~ 4200,980,4220,1180~
** Processing line: ~ 4220,1400,4220,1180~
** Processing line: ~ 4220,1400,4260,1540~
** Processing line: ~ 4260,1540,4500,1540~
** Processing line: ~ 4500,1540,4700,1520~
** Processing line: ~ 4700,1520,4980,1540~
** Processing line: ~ 5280,1560,5400,1560~
** Processing line: ~ 4980,1540,5280,1560~
** Processing line: ~ 5400,1560,5400,1700~
** Processing line: ~ 5400,1780,5400,1700~
** Processing line: ~ 5340,1900,5400,1780~
** Processing line: ~ 5340,2020,5340,1900~
** Processing line: ~ 5340,2220,5340,2020~
** Processing line: ~ 5340,2220,5340,2420~
** Processing line: ~ 5340,2420,5340,2520~
** Processing line: ~ 5080,2600,5220,2580~
** Processing line: ~ 5220,2580,5340,2520~
** Processing line: ~ 4900,2580,5080,2600~
** Processing line: ~ 4700,2540,4900,2580~
** Processing line: ~ 4500,2540,4700,2540~
** Processing line: ~ 4220,2580,4340,2540~
** Processing line: ~ 4200,2700,4220,2580~
** Processing line: ~ 4340,2540,4500,2540~
** Processing line: ~ 3980,2740,4200,2700~
** Processing line: ~ 3840,2740,3980,2740~
** Processing line: ~ 3780,2640,3840,2740~
** Processing line: ~ 3780,2640,3780,2460~
** Processing line: ~ 3780,2280,3780,2460~
** Processing line: ~ 3620,2020,3780,2100~
** Processing line: ~ 3780,2280,3780,2100~
** Processing line: ~ 3360,2040,3620,2020~
** Processing line: ~ 3080,2040,3360,2040~
** Processing line: ~ 2840,2020,3080,2040~
** Processing line: ~ 2740,1940,2840,2020~
** Processing line: ~ 2740,1940,2800,1800~
** Processing line: ~ 2800,1640,2800,1800~
** Processing line: ~ 2800,1640,2800,1460~
** Processing line: ~ 2800,1300,2800,1460~
** Processing line: ~ 2700,1180,2800,1300~
** Processing line: ~ 2480,1140,2700,1180~
** Processing line: ~ 1580,1200,1720,1200~
** Processing line: ~ 2240,1180,2480,1140~
** Processing line: ~ 1960,1180,2240,1180~
** Processing line: ~ 1720,1200,1960,1180~
** Processing line: ~ 1500,1320,1580,1200~
** Processing line: ~ 1500,1440,1500,1320~
** Processing line: ~ 1500,1440,1760,1480~
** Processing line: ~ 1760,1480,1940,1480~
** Processing line: ~ 1940,1480,2140,1500~
** Processing line: ~ 2140,1500,2320,1520~
** Processing line: ~ 2400,1560,2400,1700~
** Processing line: ~ 2280,1820,2380,1780~
** Processing line: ~ 2320,1520,2400,1560~
** Processing line: ~ 2380,1780,2400,1700~
** Processing line: ~ 2080,1840,2280,1820~
** Processing line: ~ 1720,1820,2080,1840~
** Processing line: ~ 1420,1800,1720,1820~
** Processing line: ~ 1280,1800,1420,1800~
** Processing line: ~ 1240,1720,1280,1800~
** Processing line: ~ 1240,1720,1240,1600~
** Processing line: ~ 1240,1600,1280,1480~
** Processing line: ~ 1280,1340,1280,1480~
** Processing line: ~ 1180,1280,1280,1340~
** Processing line: ~ 1000,1280,1180,1280~
** Processing line: ~ 760,1280,1000,1280~
** Processing line: ~ 360,1240,540,1260~
** Processing line: ~ 180,1220,360,1240~
** Processing line: ~ 540,1260,760,1280~
** Processing line: ~ 180,1080,180,1220~
** Processing line: ~ 180,1080,180,1000~
** Processing line: ~ 180,1000,360,940~
** Processing line: ~ 360,940,540,960~
** Processing line: ~ 540,960,820,980~
** Processing line: ~ 1100,980,1200,920~
** Processing line: ~ 820,980,1100,980~
** Processing line: ~ 6640,11860,6940,11920~
** Processing line: ~ 5200,11280,5500,11280~
** Processing line: ~ 4120,7330,4120,7230~
** Processing line: ~ 4120,7230,4660,7250~
** Processing line: ~ 4660,7250,4940,7250~
** Processing line: ~ 4940,7250,5050,7340~
** Processing line: ~ 5010,7400,5050,7340~
** Processing line: ~ 4680,7380,5010,7400~
** Processing line: ~ 4380,7370,4680,7380~
** Processing line: ~ 4120,7330,4360,7370~
** Processing line: ~ 4120,7670,4120,7760~
** Processing line: ~ 4120,7670,4280,7650~
** Processing line: ~ 4280,7650,4540,7660~
** Processing line: ~ 4550,7660,4820,7680~
** Processing line: ~ 4820,7680,4900,7730~
** Processing line: ~ 4880,7800,4900,7730~
** Processing line: ~ 4620,7820,4880,7800~
** Processing line: ~ 4360,7790,4620,7820~
** Processing line: ~ 4120,7760,4360,7790~
** Processing line: ~ 6840,6840,7040,6820~
** Processing line: ~ 5720,4880,6120,4880~
** Processing line: ~ 1200,920,1340,810~
** Processing line: ~ 1340,810,1520,790~
** Processing line: ~ 1520,790,1770,800~
** Processing line: ~ 2400,790,2600,750~
** Processing line: ~ 2600,750,2640,520~
** Processing line: ~ 2520,470,2640,520~
** Processing line: ~ 2140,470,2520,470~
** Processing line: ~ 1760,800,2090,800~
** Processing line: ~ 2080,800,2400,790~
** Processing line: ~ 1760,450,2140,470~
** Processing line: ~ 1420,450,1760,450~
** Processing line: ~ 1180,440,1420,450~
** Processing line: ~ 900,480,1180,440~
** Processing line: ~ 640,450,900,480~
** Processing line: ~ 360,440,620,450~
** Processing line: ~ 120,430,360,440~
** Processing line: ~ 0,520,120,430~
** Processing line: ~ -20,780,0,520~
** Processing line: ~ -20,780,-20,1020~
** Processing line: ~ -20,1020,-20,1150~
** Processing line: ~ -20,1150,0,1300~
** Processing line: ~ 0,1470,60,1530~
** Processing line: ~ 0,1300,0,1470~
** Processing line: ~ 60,1530,360,1530~
** Processing line: ~ 360,1530,660,1520~
** Processing line: ~ 660,1520,980,1520~
** Processing line: ~ 980,1520,1040,1520~
** Processing line: ~ 1040,1520,1070,1560~
** Processing line: ~ 1070,1770,1070,1560~
** Processing line: ~ 1070,1770,1100,2010~
** Processing line: ~ 1070,2230,1100,2010~
** Processing line: ~ 1070,2240,1180,2340~
** Processing line: ~ 1180,2340,1580,2340~
** Processing line: ~ 1580,2340,1940,2350~
** Processing line: ~ 1940,2350,2440,2350~
** Processing line: ~ 2440,2350,2560,2380~
** Processing line: ~ 2560,2380,2600,2540~
** Processing line: ~ 2810,2640,3140,2680~
** Processing line: ~ 2600,2540,2810,2640~
** Processing line: ~ 3140,2680,3230,2780~
** Processing line: ~ 3230,2780,3260,2970~
** Processing line: ~ 3230,3220,3260,2970~
** Processing line: ~ 3200,3470,3230,3220~
** Processing line: ~ 3200,3480,3210,3760~
** Processing line: ~ 3210,3760,3210,4040~
** Processing line: ~ 3200,4040,3230,4310~
** Processing line: ~ 3210,4530,3230,4310~
** Processing line: ~ 3210,4530,3230,4730~
** Processing line: ~ 3230,4960,3230,4730~
** Processing line: ~ 3230,4960,3260,5190~
** Processing line: ~ 3170,5330,3260,5190~
** Processing line: ~ 2920,5330,3170,5330~
** Processing line: ~ 2660,5360,2920,5330~
** Processing line: ~ 2420,5330,2660,5360~
** Processing line: ~ 2200,5280,2400,5330~
** Processing line: ~ 2020,5280,2200,5280~
** Processing line: ~ 1840,5260,2020,5280~
** Processing line: ~ 1660,5280,1840,5260~
** Processing line: ~ 1500,5300,1660,5280~
** Processing line: ~ 1360,5270,1500,5300~
** Processing line: ~ 1200,5290,1340,5270~
** Processing line: ~ 1070,5400,1200,5290~
** Processing line: ~ 1040,5630,1070,5400~
** Processing line: ~ 1000,5900,1040,5630~
** Processing line: ~ 980,6170,1000,5900~
** Processing line: ~ 980,6280,980,6170~
** Processing line: ~ 980,6540,980,6280~
** Processing line: ~ 980,6540,1040,6720~
** Processing line: ~ 1040,6720,1360,6730~
** Processing line: ~ 1360,6730,1760,6710~
** Processing line: ~ 2110,6720,2420,6730~
** Processing line: ~ 1760,6710,2110,6720~
** Processing line: ~ 2420,6730,2640,6720~
** Processing line: ~ 2640,6720,2970,6720~
** Processing line: ~ 2970,6720,3160,6700~
** Processing line: ~ 3160,6700,3240,6710~
** Processing line: ~ 3240,6710,3260,6890~
** Processing line: ~ 3260,7020,3260,6890~
** Processing line: ~ 3230,7180,3260,7020~
** Processing line: ~ 3230,7350,3230,7180~
** Processing line: ~ 3210,7510,3230,7350~
** Processing line: ~ 3210,7510,3210,7690~
** Processing line: ~ 3210,7870,3210,7690~
** Processing line: ~ 3210,7870,3210,7980~
** Processing line: ~ 3200,8120,3210,7980~
** Processing line: ~ 3200,8330,3200,8120~
** Processing line: ~ 3160,8520,3200,8330~
** Processing line: ~ 2460,11100,2480,11020~
** Processing line: ~ 2200,11180,2460,11100~
** Processing line: ~ 1260,11350,1600,11320~
** Processing line: ~ 600,11430,930,11400~
** Processing line: ~ 180,11340,620,11430~
** Processing line: ~ 1600,11320,1910,11280~
** Processing line: ~ 1910,11280,2200,11180~
** Processing line: ~ 923.0029599285435,11398.99893503157,1264.002959928544,11351.99893503157~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Platformer - The Little Probe - Data - level_lava.txt~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Platformer - The Little Probe - Data - level_lava.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_platformer/the_little_probe/data/level_lava.txt~
** Processing line: ~ 100,10740,500,10780~
** Processing line: ~ 500,10780,960,10760~
** Processing line: ~ 960,10760,1340,10760~
** Processing line: ~ 1380,10760,1820,10780~
** Processing line: ~ 1820,10780,2240,10780~
** Processing line: ~ 2280,10780,2740,10740~
** Processing line: ~ 2740,10740,3000,10780~
** Processing line: ~ 3000,10780,3140,11020~
** Processing line: ~ -520,8820,-480,9160~
** Processing line: ~ -520,8480,-520,8820~
** Processing line: ~ -520,8480,-480,8180~
** Processing line: ~ -480,8180,-200,8120~
** Processing line: ~ -200,8120,100,8220~
** Processing line: ~ 100,8220,420,8240~
** Processing line: ~ 420,8240,760,8260~
** Processing line: ~ 760,8260,1140,8280~
** Processing line: ~ 1140,8280,1500,8200~
** Processing line: ~ 1500,8200,1880,8240~
** Processing line: ~ 1880,8240,2240,8260~
** Processing line: ~ 2240,8260,2320,8480~
** Processing line: ~ 2320,8480,2380,8680~
** Processing line: ~ 2240,8860,2380,8680~
** Processing line: ~ 2240,9080,2240,8860~
** Processing line: ~ 2240,9080,2320,9260~
** Processing line: ~ 2320,9260,2480,9440~
** Processing line: ~ 2480,9440,2600,9640~
** Processing line: ~ 2480,9840,2600,9640~
** Processing line: ~ 2400,10020,2480,9840~
** Processing line: ~ 2240,10080,2400,10020~
** Processing line: ~ 1960,10080,2240,10080~
** Processing line: ~ 1720,10080,1960,10080~
** Processing line: ~ 1460,10080,1720,10080~
** Processing line: ~ 1180,10080,1420,10080~
** Processing line: ~ 900,10080,1180,10080~
** Processing line: ~ 640,10080,900,10080~
** Processing line: ~ 640,10080,640,9900~
** Processing line: ~ 60,10520,100,10740~
** Processing line: ~ 40,10240,60,10520~
** Processing line: ~ 40,10240,40,9960~
** Processing line: ~ 40,9960,40,9680~
** Processing line: ~ 40,9680,40,9360~
** Processing line: ~ 40,9360,60,9080~
** Processing line: ~ 60,9080,100,8860~
** Processing line: ~ 100,8860,460,9040~
** Processing line: ~ 460,9040,760,9220~
** Processing line: ~ 760,9220,1140,9220~
** Processing line: ~ 1140,9220,1720,9200~
** Processing line: ~ -660,11580,-600,11420~
** Processing line: ~ -660,11800,-660,11580~
** Processing line: ~ -660,12000,-660,11800~
** Processing line: ~ -660,12000,-600,12220~
** Processing line: ~ -600,12220,-600,12440~
** Processing line: ~ -600,12440,-600,12640~
** Processing line: ~ -600,11240,-260,11280~
** Processing line: ~ -260,11280,100,11240~
** Processing line: ~ 9000,12360,9020,12400~
** Processing line: ~ 9020,12620,9020,12400~
** Processing line: ~ 9020,12840,9020,12620~
** Processing line: ~ 9020,13060,9020,12840~
** Processing line: ~ 9020,13060,9020,13240~
** Processing line: ~ 9020,13240,9020,13420~
** Processing line: ~ 9020,13420,9020,13600~
** Processing line: ~ 9020,13600,9020,13780~
** Processing line: ~ 8880,13900,9020,13780~
** Processing line: ~ 8560,13800,8880,13900~
** Processing line: ~ 8220,13780,8560,13800~
** Processing line: ~ 7860,13760,8220,13780~
** Processing line: ~ 7640,13780,7860,13760~
** Processing line: ~ 7360,13800,7640,13780~
** Processing line: ~ 7100,13800,7360,13800~
** Processing line: ~ 6540,13760,6800,13780~
** Processing line: ~ 6800,13780,7100,13800~
** Processing line: ~ 6280,13760,6540,13760~
** Processing line: ~ 5760,13760,6280,13760~
** Processing line: ~ 5220,13780,5760,13760~
** Processing line: ~ 4700,13760,5220,13780~
** Processing line: ~ 4200,13740,4700,13760~
** Processing line: ~ 3680,13720,4200,13740~
** Processing line: ~ 3140,13700,3680,13720~
** Processing line: ~ 2600,13680,3140,13700~
** Processing line: ~ 2040,13940,2600,13680~
** Processing line: ~ 1640,13940,2040,13940~
** Processing line: ~ 1200,13960,1640,13940~
** Processing line: ~ 840,14000,1200,13960~
** Processing line: ~ 300,13960,840,14000~
** Processing line: ~ -200,13900,300,13960~
** Processing line: ~ -600,12840,-600,12640~
** Processing line: ~ -600,13140,-600,12840~
** Processing line: ~ -600,13140,-600,13420~
** Processing line: ~ -600,13700,-600,13420~
** Processing line: ~ -600,13700,-600,13820~
** Processing line: ~ -600,13820,-200,13900~
** Processing line: ~ -600,11240,-560,11000~
** Processing line: ~ -560,11000,-480,10840~
** Processing line: ~ -520,10660,-480,10840~
** Processing line: ~ -520,10660,-520,10480~
** Processing line: ~ -520,10480,-520,10300~
** Processing line: ~ -520,10260,-480,10080~
** Processing line: ~ -480,9880,-440,10060~
** Processing line: ~ -520,9680,-480,9880~
** Processing line: ~ -520,9680,-480,9400~
** Processing line: ~ -480,9400,-480,9160~
** Processing line: ~ 1820,9880,2140,9800~
** Processing line: ~ 1540,9880,1820,9880~
** Processing line: ~ 1200,9920,1500,9880~
** Processing line: ~ 900,9880,1200,9920~
** Processing line: ~ 640,9900,840,9880~
** Processing line: ~ 2380,8760,2800,8760~
** Processing line: ~ 2800,8760,2840,8660~
** Processing line: ~ 2840,8660,2840,8420~
** Processing line: ~ 2840,8160,2840,8420~
** Processing line: ~ 2800,7900,2840,8160~
** Processing line: ~ 2800,7900,2800,7720~
** Processing line: ~ 2800,7540,2800,7720~
** Processing line: ~ 2800,7540,2800,7360~
** Processing line: ~ 2700,7220,2800,7360~
** Processing line: ~ 2400,7220,2700,7220~
** Processing line: ~ 2080,7240,2400,7220~
** Processing line: ~ 1760,7320,2080,7240~
** Processing line: ~ 1380,7360,1720,7320~
** Processing line: ~ 1040,7400,1340,7360~
** Processing line: ~ 640,7400,1000,7420~
** Processing line: ~ 300,7380,640,7400~
** Processing line: ~ 0,7300,240,7380~
** Processing line: ~ -300,7180,-60,7300~
** Processing line: ~ -380,6860,-360,7180~
** Processing line: ~ -380,6880,-360,6700~
** Processing line: ~ -360,6700,-260,6540~
** Processing line: ~ -260,6540,0,6520~
** Processing line: ~ 0,6520,240,6640~
** Processing line: ~ 240,6640,460,6640~
** Processing line: ~ 460,6640,500,6480~
** Processing line: ~ 500,6260,500,6480~
** Processing line: ~ 460,6060,500,6260~
** Processing line: ~ 460,5860,460,6060~
** Processing line: ~ 460,5860,500,5640~
** Processing line: ~ 500,5640,540,5440~
** Processing line: ~ 540,5440,580,5220~
** Processing line: ~ 580,5220,580,5000~
** Processing line: ~ 580,4960,580,4740~
** Processing line: ~ 580,4740,960,4700~
** Processing line: ~ 960,4700,1140,4760~
** Processing line: ~ 1140,4760,1420,4740~
** Processing line: ~ 1420,4740,1720,4700~
** Processing line: ~ 1720,4700,2000,4740~
** Processing line: ~ 2000,4740,2380,4760~
** Processing line: ~ 2380,4760,2700,4800~
** Processing line: ~ 1720,4600,1760,4300~
** Processing line: ~ 1760,4300,2200,4340~
** Processing line: ~ 2200,4340,2560,4340~
** Processing line: ~ 2560,4340,2740,4340~
** Processing line: ~ 2160,12580,2440,12400~
** Processing line: ~ 1820,12840,2160,12580~
** Processing line: ~ 1500,13080,1820,12840~
** Processing line: ~ 1140,13340,1500,13080~
** Processing line: ~ 1140,13340,1580,13220~
** Processing line: ~ 2110,13080,2520,13000~
** Processing line: ~ 2520,13000,2900,12800~
** Processing line: ~ 1580,13220,2110,13080~
** Processing line: ~ 2900,12800,3200,12680~
** Processing line: ~ 3200,12680,3440,12640~
** Processing line: ~ 3440,12640,3720,12460~
** Processing line: ~ 3720,12460,4040,12320~
** Processing line: ~ 4040,12320,4360,12200~
** Processing line: ~ 4360,11940,4380,12180~
** Processing line: ~ 4360,11700,4360,11940~
** Processing line: ~ 4360,11700,4540,11500~
** Processing line: ~ 4540,11500,4880,11540~
** Processing line: ~ 6000,11660,6280,11640~
** Processing line: ~ 5440,11600,5720,11610~
** Processing line: ~ 5720,11610,6000,11660~
** Processing line: ~ 6280,11640,6760,11720~
** Processing line: ~ 6760,11720,7060,11780~
** Processing line: ~ 7060,11780,7360,11810~
** Processing line: ~ 7360,11810,7640,11840~
** Processing line: ~ 7640,11840,8000,11830~
** Processing line: ~ 8000,11830,8320,11850~
** Processing line: ~ 8320,11850,8390,11800~
** Processing line: ~ 8330,11760,8390,11800~
** Processing line: ~ 8160,11760,8330,11760~
** Processing line: ~ 7910,11750,8160,11760~
** Processing line: ~ 7660,11740,7900,11750~
** Processing line: ~ 7400,11730,7660,11740~
** Processing line: ~ 7160,11680,7400,11730~
** Processing line: ~ 7080,11570,7160,11680~
** Processing line: ~ 7080,11570,7100,11350~
** Processing line: ~ 7100,11350,7440,11280~
** Processing line: ~ 7440,11280,7940,11280~
** Processing line: ~ 7960,11280,8360,11280~
** Processing line: ~ 5840,11540,6650,11170~
** Processing line: ~ 4880,11540,5440,11600~
** Processing line: ~ 3410,11830,3420,11300~
** Processing line: ~ 3410,11260,3520,10920~
** Processing line: ~ 3520,10590,3520,10920~
** Processing line: ~ 3520,10590,3540,10260~
** Processing line: ~ 3520,9900,3540,10240~
** Processing line: ~ 3520,9900,3640,9590~
** Processing line: ~ 3640,9570,4120,9590~
** Processing line: ~ 4140,9590,4600,9680~
** Processing line: ~ 4620,9680,5030,9730~
** Processing line: ~ 5120,9750,5520,9800~
** Processing line: ~ 5620,9820,6080,9800~
** Processing line: ~ 6130,9810,6580,9820~
** Processing line: ~ 6640,9820,6800,9700~
** Processing line: ~ 6780,9400,6800,9700~
** Processing line: ~ 6780,9400,6840,9140~
** Processing line: ~ 6820,8860,6840,9120~
** Processing line: ~ 6780,8600,6820,8830~
** Processing line: ~ 6720,8350,6780,8570~
** Processing line: ~ 6480,8340,6720,8320~
** Processing line: ~ 6260,8400,6480,8340~
** Processing line: ~ 6050,8580,6240,8400~
** Processing line: ~ 5760,8630,6040,8590~
** Processing line: ~ 5520,8690,5740,8630~
** Processing line: ~ 5120,8690,5450,8700~
** Processing line: ~ 4570,8670,5080,8690~
** Processing line: ~ 4020,8610,4540,8670~
** Processing line: ~ 3540,8480,4020,8610~
** Processing line: ~ 3520,8230,3520,8480~
** Processing line: ~ 3520,7930,3520,8230~
** Processing line: ~ 3520,7930,3540,7630~
** Processing line: ~ 3480,7320,3540,7610~
** Processing line: ~ 3480,7280,3500,7010~
** Processing line: ~ 3500,6980,3680,6850~
** Processing line: ~ 3680,6850,4220,6840~
** Processing line: ~ 4230,6840,4760,6850~
** Processing line: ~ 4780,6850,5310,6860~
** Processing line: ~ 5310,6860,5720,6940~
** Processing line: ~ 5720,6940,5880,7250~
** Processing line: ~ 5880,7250,5900,7520~
** Processing line: ~ 100,11240,440,11300~
** Processing line: ~ 440,11300,760,11330~
** Processing line: ~ 1480,11280,1840,11230~
** Processing line: ~ 2200,11130,2360,11090~
** Processing line: ~ 1840,11230,2200,11130~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Choose Your Own Adventure - decision.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Choose Your Own Adventure - decision.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_narrative/choose_your_own_adventure/app/decision.rb~
** Processing line: ~ # Hey there! Welcome to Four Decisions. Here is how you~
** Processing line: ~ # create your decision tree. Remove =being and =end from the text to~
** Processing line: ~ # enable the game (just save the file). Change stuff and see what happens!~
** Processing line: ~~
** Processing line: ~ def game~
** Processing line: ~ {~
** Processing line: ~ starting_decision: :stormy_night,~
** Processing line: ~ decisions: {~
** Processing line: ~ stormy_night: {~
** Processing line: ~ description: 'It was a dark and stormy night. (storyline located in decision.rb)',~
** Processing line: ~ option_one: {~
** Processing line: ~ description: 'Go to sleep.',~
** Processing line: ~ decision: :nap~
** Processing line: ~ },~
** Processing line: ~ option_two: {~
** Processing line: ~ description: 'Watch a movie.',~
** Processing line: ~ decision: :movie~
** Processing line: ~ },~
** Processing line: ~ option_three: {~
** Processing line: ~ description: 'Go outside.',~
** Processing line: ~ decision: :go_outside~
** Processing line: ~ },~
** Processing line: ~ option_four: {~
** Processing line: ~ description: 'Get a snack.',~
** Processing line: ~ decision: :get_a_snack~
** Processing line: ~ }~
** Processing line: ~ },~
** Processing line: ~ nap: {~
** Processing line: ~ description: 'You took a nap. The end.',~
** Processing line: ~ option_one: {~
** Processing line: ~ description: 'Start over.',~
** Processing line: ~ decision: :stormy_night~
** Processing line: ~ }~
** Processing line: ~ }~
** Processing line: ~ }~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Choose Your Own Adventure - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Choose Your Own Adventure - 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_narrative/choose_your_own_adventure/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - Hashes: Collection of unique keys and their corresponding values. The values can be found~
** Processing line: ~ using their keys.~
** Processing line: ~~
** Processing line: ~ In this sample app, the decisions needed for the game are stored in a hash. In fact, the~
** Processing line: ~ decision.rb file contains hashes inside of other hashes!~
** Processing line: ~~
** Processing line: ~ Each option is a key in the first hash, but also contains a hash (description and~
** Processing line: ~ decision being its keys) as its value.~
** Processing line: ~ Go into the decision.rb file and take a look before diving into the code below.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ - args.keyboard.key_down.KEY: Determines if a key is in the down state or pressed down.~
** Processing line: ~ For more information about the keyboard, go to mygame/documentation/06-keyboard.md.~
** Processing line: ~~
** Processing line: ~ - String interpolation: uses #{} syntax; everything between the #{ and the } is evaluated~
** Processing line: ~ as Ruby code, and the placeholder is replaced with its corresponding value or result.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app provides users with a story and multiple decisions that they can choose to make.~
** Processing line: ~ # Users can make a decision using their keyboard, and the story will move forward based on user choices.~
** Processing line: ~~
** Processing line: ~ # The decisions available to users are stored in the decision.rb file.~
** Processing line: ~ # We must have access to it for the game to function properly.~
** Processing line: ~ GAME_FILE = 'app/decision.rb' # found in app folder~
** Processing line: ~~
** Processing line: ~ require GAME_FILE # require used to load another file, import class/method definitions~
** Processing line: ~~
** Processing line: ~ # Instructions are given using labels to users if they have not yet set up their story in the decision.rb file.~
** Processing line: ~ # Otherwise, the game is run.~
** Processing line: ~ def tick args~
** Processing line: ~ if !args.state.loaded && !respond_to?(:game) # if game is not loaded and not responding to game symbol's method~
** Processing line: ~ args.labels << [640, 370, 'Hey there! Welcome to Four Decisions.', 0, 1] # a welcome label is shown~
** Processing line: ~ args.labels << [640, 340, 'Go to the file called decision.rb and tell me your story.', 0, 1]~
** Processing line: ~ elsif respond_to?(:game) # otherwise, if responds to game~
** Processing line: ~ args.state.loaded = true~
** Processing line: ~ tick_game args # calls tick_game method, runs game~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.tick_count.mod_zero? 60 # update every 60 frames~
** Processing line: ~ t = args.gtk.ffi_file.mtime GAME_FILE # mtime returns modification time for named file~
** Processing line: ~ if t != args.state.mtime~
** Processing line: ~ args.state.mtime = t~
** Processing line: ~ require GAME_FILE # require used to load file~
** Processing line: ~ args.state.game_definition = nil # game definition and decision are empty~
** Processing line: ~ args.state.decision_id = nil~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Runs methods needed for game to function properly~
** Processing line: ~ # Creates a rectangular border around the screen~
** Processing line: ~ def tick_game args~
** Processing line: ~ defaults args~
** Processing line: ~ args.borders << args.grid.rect~
** Processing line: ~ render_decision args~
** Processing line: ~ process_inputs args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values and uses decision.rb file to define game and decision_id~
** Processing line: ~ # variable using the starting decision~
** Processing line: ~ def defaults args~
** Processing line: ~ args.state.game_definition ||= game~
** Processing line: ~ args.state.decision_id ||= args.state.game_definition[:starting_decision]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs the possible decision descriptions the user can choose onto the screen~
** Processing line: ~ # as well as what key to press on their keyboard to make their decision~
** Processing line: ~ def render_decision args~
** Processing line: ~ decision = current_decision args~
** Processing line: ~ # text is either the value of decision's description key or warning that no description exists~
** Processing line: ~ args.labels << [640, 360, decision[:description] || "No definition found for #{args.state.decision_id}. Please update decision.rb.", 0, 1] # uses string interpolation~
** Processing line: ~~
** Processing line: ~ # All decisions are stored in a hash~
** Processing line: ~ # The descriptions output onto the screen are the values for the description keys of the hash.~
** Processing line: ~ if decision[:option_one]~
** Processing line: ~ args.labels << [10, 360, decision[:option_one][:description], 0, 0] # option one's description label~
** Processing line: ~ args.labels << [10, 335, "(Press 'left' on the keyboard to select this decision)", -5, 0] # label of what key to press to select the decision~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if decision[:option_two]~
** Processing line: ~ args.labels << [1270, 360, decision[:option_two][:description], 0, 2] # option two's description~
** Processing line: ~ args.labels << [1270, 335, "(Press 'right' on the keyboard to select this decision)", -5, 2]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if decision[:option_three]~
** Processing line: ~ args.labels << [640, 45, decision[:option_three][:description], 0, 1] # option three's description~
** Processing line: ~ args.labels << [640, 20, "(Press 'down' on the keyboard to select this decision)", -5, 1]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if decision[:option_four]~
** Processing line: ~ args.labels << [640, 700, decision[:option_four][:description], 0, 1] # option four's description~
** Processing line: ~ args.labels << [640, 675, "(Press 'up' on the keyboard to select this decision)", -5, 1]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Uses keyboard input from the user to make a decision~
** Processing line: ~ # Assigns the decision as the value of the decision_id variable~
** Processing line: ~ def process_inputs args~
** Processing line: ~ decision = current_decision args # calls current_decision method~
** Processing line: ~~
** Processing line: ~ if args.keyboard.key_down.left! && decision[:option_one] # if left key pressed and option one exists~
** Processing line: ~ args.state.decision_id = decision[:option_one][:decision] # value of option one's decision hash key is set to decision_id~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.keyboard.key_down.right! && decision[:option_two] # if right key pressed and option two exists~
** Processing line: ~ args.state.decision_id = decision[:option_two][:decision] # value of option two's decision hash key is set to decision_id~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.keyboard.key_down.down! && decision[:option_three] # if down key pressed and option three exists~
** Processing line: ~ args.state.decision_id = decision[:option_three][:decision] # value of option three's decision hash key is set to decision_id~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.keyboard.key_down.up! && decision[:option_four] # if up key pressed and option four exists~
** Processing line: ~ args.state.decision_id = decision[:option_four][:decision] # value of option four's decision hash key is set to decision_id~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Uses decision_id's value to keep track of current decision being made~
** Processing line: ~ def current_decision args~
** Processing line: ~ args.state.game_definition[:decisions][args.state.decision_id] || {} # either has value or is empty~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Resets the game.~
** Processing line: ~ $gtk.reset~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - lowrez_simulator.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - lowrez_simulator.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_narrative/return_of_serenity/app/lowrez_simulator.rb~
** Processing line: ~ ###################################################################################~
** Processing line: ~ # YOU CAN PLAY AROUND WITH THE CODE BELOW, BUT USE CAUTION AS THIS IS WHAT EMULATES~
** Processing line: ~ # THE 64x64 CANVAS.~
** Processing line: ~ ###################################################################################~
** Processing line: ~~
** Processing line: ~ TINY_RESOLUTION = 64~
** Processing line: ~ TINY_SCALE = 720.fdiv(TINY_RESOLUTION + 5)~
** Processing line: ~ CENTER_OFFSET = 10~
** Processing line: ~ EMULATED_FONT_SIZE = 20~
** Processing line: ~ EMULATED_FONT_X_ZERO = 0~
** Processing line: ~ EMULATED_FONT_Y_ZERO = 46~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ sprites = []~
** Processing line: ~ labels = []~
** Processing line: ~ borders = []~
** Processing line: ~ solids = []~
** Processing line: ~ mouse = emulate_lowrez_mouse args~
** Processing line: ~ args.state.show_gridlines = false~
** Processing line: ~ lowrez_tick args, sprites, labels, borders, solids, mouse~
** Processing line: ~ render_gridlines_if_needed args~
** Processing line: ~ render_mouse_crosshairs args, mouse~
** Processing line: ~ emulate_lowrez_scene args, sprites, labels, borders, solids, mouse~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def emulate_lowrez_mouse args~
** Processing line: ~ args.state.new_entity_strict(:lowrez_mouse) do |m|~
** Processing line: ~ m.x = args.mouse.x.idiv(TINY_SCALE) - CENTER_OFFSET.idiv(TINY_SCALE) - 1~
** Processing line: ~ m.y = args.mouse.y.idiv(TINY_SCALE)~
** Processing line: ~ if args.mouse.click~
** Processing line: ~ m.click = [~
** Processing line: ~ args.mouse.click.point.x.idiv(TINY_SCALE) - CENTER_OFFSET.idiv(TINY_SCALE) - 1,~
** Processing line: ~ args.mouse.click.point.y.idiv(TINY_SCALE)~
** Processing line: ~ ]~
** Processing line: ~ m.down = m.click~
** Processing line: ~ else~
** Processing line: ~ m.click = nil~
** Processing line: ~ m.down = nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.mouse.up~
** Processing line: ~ m.up = [~
** Processing line: ~ args.mouse.up.point.x.idiv(TINY_SCALE) - CENTER_OFFSET.idiv(TINY_SCALE) - 1,~
** Processing line: ~ args.mouse.up.point.y.idiv(TINY_SCALE)~
** Processing line: ~ ]~
** Processing line: ~ else~
** Processing line: ~ m.up = nil~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_mouse_crosshairs args, mouse~
** Processing line: ~ return unless args.state.show_gridlines~
** Processing line: ~ args.labels << [10, 25, "mouse: #{mouse.x} #{mouse.y}", 255, 255, 255]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def emulate_lowrez_scene args, sprites, labels, borders, solids, mouse~
** Processing line: ~ args.render_target(:lowrez).solids << [0, 0, 1280, 720]~
** Processing line: ~ args.render_target(:lowrez).sprites << sprites~
** Processing line: ~ args.render_target(:lowrez).borders << borders~
** Processing line: ~ args.render_target(:lowrez).solids << solids~
** Processing line: ~ args.outputs.primitives << labels.map do |l|~
** Processing line: ~ as_label = l.label~
** Processing line: ~ l.text.each_char.each_with_index.map do |char, i|~
** Processing line: ~ [CENTER_OFFSET + EMULATED_FONT_X_ZERO + (as_label.x * TINY_SCALE) + i * 5 * TINY_SCALE,~
** Processing line: ~ EMULATED_FONT_Y_ZERO + (as_label.y * TINY_SCALE), char,~
** Processing line: ~ EMULATED_FONT_SIZE, 0, as_label.r, as_label.g, as_label.b, as_label.a, 'fonts/dragonruby-gtk-4x4.ttf'].label~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.sprites << [CENTER_OFFSET, 0, 1280 * TINY_SCALE, 720 * TINY_SCALE, :lowrez]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_gridlines_if_needed args~
** Processing line: ~ if args.state.show_gridlines && args.static_lines.length == 0~
** Processing line: ~ args.static_lines << 65.times.map do |i|~
** Processing line: ~ [~
** Processing line: ~ [CENTER_OFFSET + i * TINY_SCALE + 1, 0,~
** Processing line: ~ CENTER_OFFSET + i * TINY_SCALE + 1, 720, 128, 128, 128],~
** Processing line: ~ [CENTER_OFFSET + i * TINY_SCALE, 0,~
** Processing line: ~ CENTER_OFFSET + i * TINY_SCALE, 720, 128, 128, 128],~
** Processing line: ~ [CENTER_OFFSET, 0 + i * TINY_SCALE,~
** Processing line: ~ CENTER_OFFSET + 720, 0 + i * TINY_SCALE, 128, 128, 128],~
** Processing line: ~ [CENTER_OFFSET, 1 + i * TINY_SCALE,~
** Processing line: ~ CENTER_OFFSET + 720, 1 + i * TINY_SCALE, 128, 128, 128]~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~ elsif !args.state.show_gridlines~
** Processing line: ~ args.static_lines.clear~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - 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_narrative/return_of_serenity/app/main.rb~
** Processing line: ~ require 'app/require.rb'~
** Processing line: ~~
** Processing line: ~ def defaults args~
** Processing line: ~ args.outputs.background_color = [0, 0, 0]~
** Processing line: ~ args.state.last_story_line_text ||= ""~
** Processing line: ~ args.state.scene_history ||= []~
** Processing line: ~ args.state.storyline_history ||= []~
** Processing line: ~ args.state.word_delay ||= 8~
** Processing line: ~ if args.state.tick_count == 0~
** Processing line: ~ args.gtk.stop_music~
** Processing line: ~ args.outputs.sounds << 'sounds/static-loop.ogg'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.last_story_line_text~
** Processing line: ~ lines = args.state~
** Processing line: ~ .last_story_line_text~
** Processing line: ~ .gsub("-", "")~
** Processing line: ~ .gsub("~", "")~
** Processing line: ~ .wrapped_lines(50)~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << lines.map_with_index { |l, i| [690, 200 - (i * 25), l, 1, 0, 255, 255, 255] }~
** Processing line: ~ elsif args.state.storyline_history[-1]~
** Processing line: ~ lines = args.state~
** Processing line: ~ .storyline_history[-1]~
** Processing line: ~ .gsub("-", "")~
** Processing line: ~ .gsub("~", "")~
** Processing line: ~ .wrapped_lines(50)~
** Processing line: ~~
** Processing line: ~ args.outputs.labels << lines.map_with_index { |l, i| [690, 200 - (i * 25), l, 1, 0, 255, 255, 255] }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return if args.state.current_scene~
** Processing line: ~ set_scene(args, day_one_beginning(args))~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_move_player args~
** Processing line: ~ if args.state.scene_changed_at.elapsed_time > 5~
** Processing line: ~ if args.keyboard.down || args.keyboard.s || args.keyboard.j~
** Processing line: ~ args.state.player.y -= 0.25~
** Processing line: ~ elsif args.keyboard.up || args.keyboard.w || args.keyboard.k~
** Processing line: ~ args.state.player.y += 0.25~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.keyboard.left || args.keyboard.a || args.keyboard.h~
** Processing line: ~ args.state.player.x -= 0.25~
** Processing line: ~ elsif args.keyboard.right || args.keyboard.d || args.keyboard.l~
** Processing line: ~ args.state.player.x += 0.25~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.state.player.y = 60 if args.state.player.y > 63~
** Processing line: ~ args.state.player.y = 0 if args.state.player.y < -3~
** Processing line: ~ args.state.player.x = 60 if args.state.player.x > 63~
** Processing line: ~ args.state.player.x = 0 if args.state.player.x < -3~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def null_or_empty? ary~
** Processing line: ~ return true unless ary~
** Processing line: ~ return true if ary.length == 0~
** Processing line: ~ return false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_storyline_hotspot args~
** Processing line: ~ hotspots = args.state.storylines.find_all do |hs|~
** Processing line: ~ args.state.player.inside_rect?(hs.shift_rect(-2, 0))~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if !null_or_empty?(hotspots) && !args.state.inside_storyline_hotspot~
** Processing line: ~ _, _, _, _, storyline = hotspots.first~
** Processing line: ~ queue_storyline_text(args, storyline)~
** Processing line: ~ args.state.inside_storyline_hotspot = true~
** Processing line: ~ elsif null_or_empty?(hotspots)~
** Processing line: ~ args.state.inside_storyline_hotspot = false~
** Processing line: ~~
** Processing line: ~ args.state.storyline_queue_empty_at ||= args.state.tick_count~
** Processing line: ~ args.state.is_storyline_dialog_active = false~
** Processing line: ~ args.state.scene_storyline_queue.clear~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_scenes args~
** Processing line: ~ hotspots = args.state.scenes.find_all do |hs|~
** Processing line: ~ args.state.player.inside_rect?(hs.shift_rect(-2, 0))~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if !null_or_empty?(hotspots) && !args.state.inside_scene_hotspot~
** Processing line: ~ _, _, _, _, scene_method_or_hash = hotspots.first~
** Processing line: ~ if scene_method_or_hash.is_a? Symbol~
** Processing line: ~ set_scene(args, send(scene_method_or_hash, args))~
** Processing line: ~ args.state.last_hotspot_scene = scene_method_or_hash~
** Processing line: ~ args.state.scene_history << scene_method_or_hash~
** Processing line: ~ else~
** Processing line: ~ set_scene(args, scene_method_or_hash)~
** Processing line: ~ end~
** Processing line: ~ args.state.inside_scene_hotspot = true~
** Processing line: ~ elsif null_or_empty?(hotspots)~
** Processing line: ~ args.state.inside_scene_hotspot = false~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def null_or_whitespace? word~
** Processing line: ~ return true if !word~
** Processing line: ~ return true if word.strip.length == 0~
** Processing line: ~ return false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_storyline_presentation args~
** Processing line: ~ return unless args.state.tick_count > args.state.next_storyline~
** Processing line: ~ return unless args.state.scene_storyline_queue~
** Processing line: ~ next_storyline = args.state.scene_storyline_queue.shift~
** Processing line: ~ if null_or_whitespace? next_storyline~
** Processing line: ~ args.state.storyline_queue_empty_at ||= args.state.tick_count~
** Processing line: ~ args.state.is_storyline_dialog_active = false~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~ args.state.storyline_to_show = next_storyline~
** Processing line: ~ args.state.is_storyline_dialog_active = true~
** Processing line: ~ args.state.storyline_queue_empty_at = nil~
** Processing line: ~ if next_storyline.end_with?(".") || next_storyline.end_with?("!") || next_storyline.end_with?("?") || next_storyline.end_with?("\"")~
** Processing line: ~ args.state.next_storyline += 60~
** Processing line: ~ elsif next_storyline.end_with?(",")~
** Processing line: ~ args.state.next_storyline += 50~
** Processing line: ~ elsif next_storyline.end_with?(":")~
** Processing line: ~ args.state.next_storyline += 60~
** Processing line: ~ else~
** Processing line: ~ default_word_delay = 13 + args.state.word_delay - 8~
** Processing line: ~ if next_storyline.gsub("-", "").gsub("~", "").length <= 4~
** Processing line: ~ default_word_delay = 11 + args.state.word_delay - 8~
** Processing line: ~ end~
** Processing line: ~ number_of_syllabals = next_storyline.length - next_storyline.gsub("-", "").length~
** Processing line: ~ args.state.next_storyline += default_word_delay + number_of_syllabals * (args.state.word_delay + 1)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_reload_current_scene args~
** Processing line: ~ return~
** Processing line: ~ if args.inputs.keyboard.key_down.r!~
** Processing line: ~ reload_current_scene~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_dismiss_current_storyline args~
** Processing line: ~ if args.inputs.keyboard.key_down.x!~
** Processing line: ~ args.state.scene_storyline_queue.clear~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_restart_game args~
** Processing line: ~ if args.inputs.keyboard.exclamation_point~
** Processing line: ~ args.gtk.reset_state~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_change_word_delay args~
** Processing line: ~ if args.inputs.keyboard.key_down.plus || args.inputs.keyboard.key_down.equal_sign~
** Processing line: ~ args.state.word_delay -= 2~
** Processing line: ~ if args.state.word_delay < 0~
** Processing line: ~ args.state.word_delay = 0~
** Processing line: ~ # queue_storyline_text args, "Text speed at MAXIMUM. Geez, how fast do you read?"~
** Processing line: ~ else~
** Processing line: ~ # queue_storyline_text args, "Text speed INCREASED."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.inputs.keyboard.key_down.hyphen || args.inputs.keyboard.key_down.underscore~
** Processing line: ~ args.state.word_delay += 2~
** Processing line: ~ # queue_storyline_text args, "Text speed DECREASED."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def multiple_lines args, x, y, texts, size = 0, minimum_alpha = nil~
** Processing line: ~ texts.each_with_index.map do |t, i|~
** Processing line: ~ [x, y - i * (25 + size * 2), t, size, 0, 255, 255, 255, adornments_alpha(args, 255, minimum_alpha)]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def lowrez_tick args, lowrez_sprites, lowrez_labels, lowrez_borders, lowrez_solids, lowrez_mouse~
** Processing line: ~ # args.state.show_gridlines = true~
** Processing line: ~ defaults args~
** Processing line: ~ render_current_scene args, lowrez_sprites, lowrez_labels, lowrez_solids~
** Processing line: ~ render_controller args, lowrez_borders~
** Processing line: ~ lowrez_solids << [0, 0, 64, 64, 0, 0, 0]~
** Processing line: ~ calc_storyline_presentation args~
** Processing line: ~ calc_scenes args~
** Processing line: ~ calc_storyline_hotspot args~
** Processing line: ~ inputs_move_player args~
** Processing line: ~ inputs_print_mouse_rect args, lowrez_mouse~
** Processing line: ~ inputs_reload_current_scene args~
** Processing line: ~ inputs_dismiss_current_storyline args~
** Processing line: ~ inputs_change_word_delay args~
** Processing line: ~ inputs_restart_game args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_controller args, lowrez_borders~
** Processing line: ~ args.state.up_button = [85, 40, 15, 15, 255, 255, 255]~
** Processing line: ~ args.state.down_button = [85, 20, 15, 15, 255, 255, 255]~
** Processing line: ~ args.state.left_button = [65, 20, 15, 15, 255, 255, 255]~
** Processing line: ~ args.state.right_button = [105, 20, 15, 15, 255, 255, 255]~
** Processing line: ~ lowrez_borders << args.state.up_button~
** Processing line: ~ lowrez_borders << args.state.down_button~
** Processing line: ~ lowrez_borders << args.state.left_button~
** Processing line: ~ lowrez_borders << args.state.right_button~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_print_mouse_rect args, lowrez_mouse~
** Processing line: ~ if lowrez_mouse.up~
** Processing line: ~ args.state.mouse_held = false~
** Processing line: ~ elsif lowrez_mouse.click~
** Processing line: ~ mouse_rect = [lowrez_mouse.x, lowrez_mouse.y, 1, 1]~
** Processing line: ~ if args.state.up_button.intersect_rect? mouse_rect~
** Processing line: ~ args.state.player.y += 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.down_button.intersect_rect? mouse_rect~
** Processing line: ~ args.state.player.y -= 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.left_button.intersect_rect? mouse_rect~
** Processing line: ~ args.state.player.x -= 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.right_button.intersect_rect? mouse_rect~
** Processing line: ~ args.state.player.x += 1~
** Processing line: ~ end~
** Processing line: ~ args.state.mouse_held = true~
** Processing line: ~ elsif args.state.mouse_held~
** Processing line: ~ mouse_rect = [lowrez_mouse.x, lowrez_mouse.y, 1, 1]~
** Processing line: ~ if args.state.up_button.intersect_rect? mouse_rect~
** Processing line: ~ args.state.player.y += 0.25~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.down_button.intersect_rect? mouse_rect~
** Processing line: ~ args.state.player.y -= 0.25~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.left_button.intersect_rect? mouse_rect~
** Processing line: ~ args.state.player.x -= 0.25~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if args.state.right_button.intersect_rect? mouse_rect~
** Processing line: ~ args.state.player.x += 0.25~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if lowrez_mouse.click~
** Processing line: ~ dx = lowrez_mouse.click.x - args.state.previous_mouse_click.x~
** Processing line: ~ dy = lowrez_mouse.click.y - args.state.previous_mouse_click.y~
** Processing line: ~ x, y, w, h = args.state.previous_mouse_click.x, args.state.previous_mouse_click.y, dx, dy~
** Processing line: ~ puts "x #{lowrez_mouse.click.x}, y: #{lowrez_mouse.click.y}"~
** Processing line: ~ if args.state.previous_mouse_click~
** Processing line: ~~
** Processing line: ~ if dx < 0 && dx < 0~
** Processing line: ~ x = x + w~
** Processing line: ~ w = w.abs~
** Processing line: ~ y = y + h~
** Processing line: ~ h = h.abs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ w += 1~
** Processing line: ~ h += 1~
** Processing line: ~~
** Processing line: ~ args.state.previous_mouse_click = nil~
** Processing line: ~ else~
** Processing line: ~ args.state.previous_mouse_click = lowrez_mouse.click~
** Processing line: ~ square_x, square_y = lowrez_mouse.click~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def try_centering! word~
** Processing line: ~ word ||= ""~
** Processing line: ~ just_word = word.gsub("-", "").gsub(",", "").gsub(".", "").gsub("'", "").gsub('""', "\"-\"")~
** Processing line: ~ return word if just_word.strip.length == 0~
** Processing line: ~ return word if just_word.include? "~"~
** Processing line: ~ return "~#{word}" if just_word.length <= 2~
** Processing line: ~ if just_word.length.mod_zero? 2~
** Processing line: ~ center_index = just_word.length.idiv(2) - 1~
** Processing line: ~ else~
** Processing line: ~ center_index = (just_word.length - 1).idiv(2)~
** Processing line: ~ end~
** Processing line: ~ return "#{word[0..center_index - 1]}~#{word[center_index]}#{word[center_index + 1..-1]}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def queue_storyline args, scene~
** Processing line: ~ queue_storyline_text args, scene[:storyline]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def queue_storyline_text args, text~
** Processing line: ~ args.state.last_story_line_text = text~
** Processing line: ~ args.state.storyline_history << text if text~
** Processing line: ~ words = (text || "").split(" ")~
** Processing line: ~ words = words.map { |w| try_centering! w }~
** Processing line: ~ args.state.scene_storyline_queue = words~
** Processing line: ~ if args.state.scene_storyline_queue.length != 0~
** Processing line: ~ args.state.scene_storyline_queue.unshift "~$--"~
** Processing line: ~ args.state.storyline_to_show = "~."~
** Processing line: ~ else~
** Processing line: ~ args.state.storyline_to_show = ""~
** Processing line: ~ end~
** Processing line: ~ args.state.scene_storyline_queue << ""~
** Processing line: ~ args.state.next_storyline = args.state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def set_scene args, scene~
** Processing line: ~ args.state.current_scene = scene~
** Processing line: ~ args.state.background = scene[:background] || 'sprites/todo.png'~
** Processing line: ~ args.state.scene_fade = scene[:fade] || 0~
** Processing line: ~ args.state.scenes = (scene[:scenes] || []).reject { |s| !s }~
** Processing line: ~ args.state.scene_render_override = scene[:render_override]~
** Processing line: ~ args.state.storylines = (scene[:storylines] || []).reject { |s| !s }~
** Processing line: ~ args.state.scene_changed_at = args.state.tick_count~
** Processing line: ~ if scene[:player]~
** Processing line: ~ args.state.player = scene[:player]~
** Processing line: ~ end~
** Processing line: ~ args.state.inside_scene_hotspot = false~
** Processing line: ~ args.state.inside_storyline_hotspot = false~
** Processing line: ~ queue_storyline args, scene~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replay_storyline_rect~
** Processing line: ~ [26, -1, 7, 4]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def labels_for_word word~
** Processing line: ~ left_side_of_word = ""~
** Processing line: ~ center_letter = ""~
** Processing line: ~ right_side_of_word = ""~
** Processing line: ~~
** Processing line: ~ if word[0] == "~"~
** Processing line: ~ left_side_of_word = ""~
** Processing line: ~ center_letter = word[1]~
** Processing line: ~ right_side_of_word = word[2..-1]~
** Processing line: ~ elsif word.length > 0~
** Processing line: ~ left_side_of_word, right_side_of_word = word.split("~")~
** Processing line: ~ center_letter = right_side_of_word[0]~
** Processing line: ~ right_side_of_word = right_side_of_word[1..-1]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ right_side_of_word = right_side_of_word.gsub("-", "")~
** Processing line: ~~
** Processing line: ~ {~
** Processing line: ~ left: [29 - left_side_of_word.length * 4 - 1 * left_side_of_word.length, 2, left_side_of_word],~
** Processing line: ~ center: [29, 2, center_letter, 255, 0, 0],~
** Processing line: ~ right: [34, 2, right_side_of_word]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_scenes args, lowrez_sprites~
** Processing line: ~ lowrez_sprites << args.state.scenes.flat_map do |hs|~
** Processing line: ~ hotspot_square args, hs.x, hs.y, hs.w, hs.h~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_storylines args, lowrez_sprites~
** Processing line: ~ lowrez_sprites << args.state.storylines.flat_map do |hs|~
** Processing line: ~ hotspot_square args, hs.x, hs.y, hs.w, hs.h~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def adornments_alpha args, target_alpha = nil, minimum_alpha = nil~
** Processing line: ~ return (minimum_alpha || 80) unless args.state.storyline_queue_empty_at~
** Processing line: ~ target_alpha ||= 255~
** Processing line: ~ target_alpha * args.state.storyline_queue_empty_at.ease(60)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def hotspot_square args, x, y, w, h~
** Processing line: ~ if w >= 3 && h >= 3~
** Processing line: ~ [~
** Processing line: ~ [x + w.idiv(2) + 1, y, w.idiv(2), h, 'sprites/label-background.png', 0, adornments_alpha(args, 50), 23, 23, 23],~
** Processing line: ~ [x, y, w.idiv(2), h, 'sprites/label-background.png', 0, adornments_alpha(args, 100), 223, 223, 223],~
** Processing line: ~ [x + 1, y + 1, w - 2, h - 2, 'sprites/label-background.png', 0, adornments_alpha(args, 200), 40, 140, 40],~
** Processing line: ~ ]~
** Processing line: ~ else~
** Processing line: ~ [~
** Processing line: ~ [x, y, w, h, 'sprites/label-background.png', 0, adornments_alpha(args, 200), 0, 140, 0],~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_storyline_dialog args, lowrez_labels, lowrez_sprites~
** Processing line: ~ return unless args.state.is_storyline_dialog_active~
** Processing line: ~ return unless args.state.storyline_to_show~
** Processing line: ~ labels = labels_for_word args.state.storyline_to_show~
** Processing line: ~ if true # high rez version~
** Processing line: ~ scale = 8.88~
** Processing line: ~ offset = 45~
** Processing line: ~ size = 25~
** Processing line: ~ args.outputs.labels << [offset + labels[:left].x.-(1) * scale,~
** Processing line: ~ labels[:left].y * TINY_SCALE + 55,~
** Processing line: ~ labels[:left].text, size, 0, 0, 0, 0, 255,~
** Processing line: ~ 'fonts/manaspc.ttf']~
** Processing line: ~ center_text = labels[:center].text~
** Processing line: ~ center_text = "|" if center_text == "$"~
** Processing line: ~ args.outputs.labels << [offset + labels[:center].x * scale,~
** Processing line: ~ labels[:center].y * TINY_SCALE + 55,~
** Processing line: ~ center_text, size, 0, 255, 0, 0, 255,~
** Processing line: ~ 'fonts/manaspc.ttf']~
** Processing line: ~ args.outputs.labels << [offset + labels[:right].x * scale,~
** Processing line: ~ labels[:right].y * TINY_SCALE + 55,~
** Processing line: ~ labels[:right].text, size, 0, 0, 0, 0, 255,~
** Processing line: ~ 'fonts/manaspc.ttf']~
** Processing line: ~ else~
** Processing line: ~ lowrez_labels << labels[:left]~
** Processing line: ~ lowrez_labels << labels[:center]~
** Processing line: ~ lowrez_labels << labels[:right]~
** Processing line: ~ end~
** Processing line: ~ args.state.is_storyline_dialog_active = true~
** Processing line: ~ render_player args, lowrez_sprites~
** Processing line: ~ lowrez_sprites << [0, 0, 64, 8, 'sprites/label-background.png']~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_player args, lowrez_sprites~
** Processing line: ~ lowrez_sprites << player_md_down(args, *args.state.player)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_adornments args, lowrez_sprites~
** Processing line: ~ render_scenes args, lowrez_sprites~
** Processing line: ~ render_storylines args, lowrez_sprites~
** Processing line: ~ return if args.state.is_storyline_dialog_active~
** Processing line: ~ lowrez_sprites << player_md_down(args, *args.state.player)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def global_alpha_percentage args, max_alpha = 255~
** Processing line: ~ return 255 unless args.state.scene_changed_at~
** Processing line: ~ return 255 unless args.state.scene_fade~
** Processing line: ~ return 255 unless args.state.scene_fade > 0~
** Processing line: ~ return max_alpha * args.state.scene_changed_at.ease(args.state.scene_fade)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_current_scene args, lowrez_sprites, lowrez_labels, lowrez_solids~
** Processing line: ~ lowrez_sprites << [0, 0, 64, 64, args.state.background, 0, (global_alpha_percentage args)]~
** Processing line: ~ if args.state.scene_render_override~
** Processing line: ~ send args.state.scene_render_override, args, lowrez_sprites, lowrez_labels, lowrez_solids~
** Processing line: ~ end~
** Processing line: ~ storyline_to_show = args.state.storyline_to_show || ""~
** Processing line: ~ render_adornments args, lowrez_sprites~
** Processing line: ~ render_storyline_dialog args, lowrez_labels, lowrez_sprites~
** Processing line: ~~
** Processing line: ~ if args.state.background == 'sprites/tribute-game-over.png'~
** Processing line: ~ lowrez_sprites << [0, 0, 64, 11, 'sprites/label-background.png', 0, adornments_alpha(args, 200), 0, 0, 0]~
** Processing line: ~ lowrez_labels << [9, 6, 'Return of', 255, 255, 255]~
** Processing line: ~ lowrez_labels << [9, 1, ' Serenity', 255, 255, 255]~
** Processing line: ~ if !args.state.ended~
** Processing line: ~ args.gtk.stop_music~
** Processing line: ~ args.outputs.sounds << 'sounds/music-loop.ogg'~
** Processing line: ~ args.state.ended = true~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def player_md_right args, x, y~
** Processing line: ~ [x, y, 4, 11, 'sprites/player-right.png', 0, (global_alpha_percentage args)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def player_md_left args, x, y~
** Processing line: ~ [x, y, 4, 11, 'sprites/player-left.png', 0, (global_alpha_percentage args)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def player_md_up args, x, y~
** Processing line: ~ [x, y, 4, 11, 'sprites/player-up.png', 0, (global_alpha_percentage args)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def player_md_down args, x, y~
** Processing line: ~ [x, y, 4, 11, 'sprites/player-down.png', 0, (global_alpha_percentage args)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def player_sm args, x, y~
** Processing line: ~ [x, y, 3, 7, 'sprites/player-zoomed-out.png', 0, (global_alpha_percentage args)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def player_xs args, x, y~
** Processing line: ~ [x, y, 1, 4, 'sprites/player-zoomed-out.png', 0, (global_alpha_percentage args)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - repl.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - 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_rpg_narrative/return_of_serenity/app/repl.rb~
** Processing line: ~ puts $gtk.args.state.current_scene~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - require.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - require.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_narrative/return_of_serenity/app/require.rb~
** Processing line: ~ require 'app/lowrez_simulator.rb'~
** Processing line: ~ require 'app/storyline_day_one.rb'~
** Processing line: ~ require 'app/storyline_blinking_light.rb'~
** Processing line: ~ require 'app/storyline_serenity_introduction.rb'~
** Processing line: ~ require 'app/storyline_speed_of_light.rb'~
** Processing line: ~ require 'app/storyline_serenity_alive.rb'~
** Processing line: ~ require 'app/storyline_serenity_bio.rb'~
** Processing line: ~ require 'app/storyline_anka.rb'~
** Processing line: ~ require 'app/storyline_final_message.rb'~
** Processing line: ~ require 'app/storyline_final_decision.rb'~
** Processing line: ~ require 'app/storyline.rb'~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - storyline.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_narrative/return_of_serenity/app/storyline.rb~
** Processing line: ~ def hotspot_top~
** Processing line: ~ [4, 61, 56, 3]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def hotspot_bottom~
** Processing line: ~ [4, 0, 56, 3]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def hotspot_top_right~
** Processing line: ~ [62, 35, 3, 25]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def hotspot_bottom_right~
** Processing line: ~ [62, 0, 3, 25]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def storyline_history_include? args, text~
** Processing line: ~ args.state.storyline_history.any? { |s| s.gsub("-", "").gsub(" ", "").include? text.gsub("-", "").gsub(" ", "") }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blinking_light_side_of_home_render args, lowrez_sprites, lowrez_labels, lowrez_solids~
** Processing line: ~ lowrez_sprites << [48, 44, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ lowrez_sprites << [49, 45, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ lowrez_sprites << [50, 46, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blinking_light_mountain_pass_render args, lowrez_sprites, lowrez_labels, lowrez_solids~
** Processing line: ~ lowrez_sprites << [18, 47, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ lowrez_sprites << [19, 48, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ lowrez_sprites << [20, 49, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blinking_light_path_to_observatory_render args, lowrez_sprites, lowrez_labels, lowrez_solids~
** Processing line: ~ lowrez_sprites << [0, 26, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ lowrez_sprites << [1, 27, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ lowrez_sprites << [2, 28, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blinking_light_observatory_render args, lowrez_sprites, lowrez_labels, lowrez_solids~
** Processing line: ~ lowrez_sprites << [23, 59, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ lowrez_sprites << [24, 60, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ lowrez_sprites << [25, 61, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blinking_light_inside_observatory_render args, lowrez_sprites, lowrez_labels, lowrez_solids~
** Processing line: ~ lowrez_sprites << [30, 30, 5, 5, 'sprites/square.png', 0, 50 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ lowrez_sprites << [31, 31, 3, 3, 'sprites/square.png', 0, 100 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ lowrez_sprites << [32, 32, 1, 1, 'sprites/square.png', 0, 255 * (args.state.tick_count % 50).fdiv(50), 0, 255, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def decision_graph context_message, context_action, context_result_one, context_result_two, context_result_three = [], context_result_four = []~
** Processing line: ~ result_one_scene, result_one_label, result_one_text = context_result_one~
** Processing line: ~ result_two_scene, result_two_label, result_two_text = context_result_two~
** Processing line: ~ result_three_scene, result_three_label, result_three_text = context_result_three~
** Processing line: ~ result_four_scene, result_four_label, result_four_text = context_result_four~
** Processing line: ~~
** Processing line: ~ top_level_hash = {~
** Processing line: ~ background: 'sprites/decision.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [20, 36],~
** Processing line: ~ storylines: [ ],~
** Processing line: ~ scenes: [ ]~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ confirmation_result_one_hash = {~
** Processing line: ~ background: 'sprites/decision.png',~
** Processing line: ~ scenes: [ ],~
** Processing line: ~ storylines: [ ]~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ confirmation_result_two_hash = {~
** Processing line: ~ background: 'sprites/decision.png',~
** Processing line: ~ scenes: [ ],~
** Processing line: ~ storylines: [ ]~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ confirmation_result_three_hash = {~
** Processing line: ~ background: 'sprites/decision.png',~
** Processing line: ~ scenes: [ ],~
** Processing line: ~ storylines: [ ]~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ confirmation_result_four_hash = {~
** Processing line: ~ background: 'sprites/decision.png',~
** Processing line: ~ scenes: [ ],~
** Processing line: ~ storylines: [ ]~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ top_level_hash[:storylines] << [ 5, 35, 4, 4, context_message]~
** Processing line: ~ top_level_hash[:storylines] << [20, 35, 4, 4, context_action]~
** Processing line: ~~
** Processing line: ~ confirmation_result_one_hash[:scenes] << [20, 35, 4, 4, top_level_hash]~
** Processing line: ~ confirmation_result_one_hash[:scenes] << [60, 50, 4, 4, result_one_scene]~
** Processing line: ~ confirmation_result_one_hash[:storylines] << [40, 50, 4, 4, "#{result_one_label}: \"#{result_one_text}\""]~
** Processing line: ~ confirmation_result_one_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash] if result_four_scene~
** Processing line: ~ confirmation_result_one_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash] if result_three_scene~
** Processing line: ~ confirmation_result_one_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]~
** Processing line: ~~
** Processing line: ~ confirmation_result_two_hash[:scenes] << [20, 35, 4, 4, top_level_hash]~
** Processing line: ~ confirmation_result_two_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]~
** Processing line: ~ confirmation_result_two_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash] if result_four_scene~
** Processing line: ~ confirmation_result_two_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash] if result_three_scene~
** Processing line: ~ confirmation_result_two_hash[:scenes] << [60, 20, 4, 4, result_two_scene]~
** Processing line: ~ confirmation_result_two_hash[:storylines] << [40, 20, 4, 4, "#{result_two_label}: \"#{result_two_text}\""]~
** Processing line: ~~
** Processing line: ~ confirmation_result_three_hash[:scenes] << [20, 35, 4, 4, top_level_hash]~
** Processing line: ~ confirmation_result_three_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]~
** Processing line: ~ confirmation_result_three_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash]~
** Processing line: ~ confirmation_result_three_hash[:scenes] << [60, 30, 4, 4, result_three_scene]~
** Processing line: ~ confirmation_result_three_hash[:storylines] << [40, 30, 4, 4, "#{result_three_label}: \"#{result_three_text}\""]~
** Processing line: ~ confirmation_result_three_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]~
** Processing line: ~~
** Processing line: ~ confirmation_result_four_hash[:scenes] << [20, 35, 4, 4, top_level_hash]~
** Processing line: ~ confirmation_result_four_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]~
** Processing line: ~ confirmation_result_four_hash[:scenes] << [60, 40, 4, 4, result_four_scene]~
** Processing line: ~ confirmation_result_four_hash[:storylines] << [40, 40, 4, 4, "#{result_four_label}: \"#{result_four_text}\""]~
** Processing line: ~ confirmation_result_four_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash]~
** Processing line: ~ confirmation_result_four_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]~
** Processing line: ~~
** Processing line: ~ top_level_hash[:scenes] << [40, 50, 4, 4, confirmation_result_one_hash]~
** Processing line: ~ top_level_hash[:scenes] << [40, 40, 4, 4, confirmation_result_four_hash] if result_four_scene~
** Processing line: ~ top_level_hash[:scenes] << [40, 30, 4, 4, confirmation_result_three_hash] if result_three_scene~
** Processing line: ~ top_level_hash[:scenes] << [40, 20, 4, 4, confirmation_result_two_hash]~
** Processing line: ~~
** Processing line: ~ top_level_hash~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def ship_control_hotspot offset_x, offset_y, a, b, c, d~
** Processing line: ~ results = []~
** Processing line: ~ results << [ 6 + offset_x, 0 + offset_y, 4, 4, a] if a~
** Processing line: ~ results << [ 1 + offset_x, 5 + offset_y, 4, 4, b] if b~
** Processing line: ~ results << [ 6 + offset_x, 5 + offset_y, 4, 4, c] if c~
** Processing line: ~ results << [ 11 + offset_x, 5 + offset_y, 4, 4, d] if d~
** Processing line: ~ results~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def reload_current_scene~
** Processing line: ~ if $gtk.args.state.last_hotspot_scene~
** Processing line: ~ set_scene $gtk.args, send($gtk.args.state.last_hotspot_scene, $gtk.args)~
** Processing line: ~ tick $gtk.args~
** Processing line: ~ elsif respond_to? :set_scene~
** Processing line: ~ set_scene $gtk.args, (replied_to_serenity_alive_firmly $gtk.args)~
** Processing line: ~ tick $gtk.args~
** Processing line: ~ end~
** Processing line: ~ $gtk.console.close~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline_anka.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - storyline_anka.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_narrative/return_of_serenity/app/storyline_anka.rb~
** Processing line: ~ def anka_inside_room args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [34, 35],~
** Processing line: ~ storylines: [~
** Processing line: ~ [34, 34, 4, 4, "Ahhhh!!! Oh god, it was just- a nightmare."],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [32, -1, 8, 3, :anka_observatory]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def anka_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [51, 12],~
** Processing line: ~ storylines: [~
** Processing line: ~ [50, 10, 4, 4, "Breathe, Hiro. Just see what's there... everything--- will- be okay."]~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 18, 5, 12, :anka_inside_mainframe]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def anka_inside_mainframe args~
** Processing line: ~ {~
** Processing line: ~ player: [32, 4],~
** Processing line: ~ background: 'sprites/mainframe.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ storylines: [~
** Processing line: ~ [22, 45, 17, 4, (anka_last_reply args)],~
** Processing line: ~ [45, 45, 4, 4, (anka_current_reply args)],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_top_right, :reply_to_anka]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def reply_to_anka args~
** Processing line: ~ decision_graph anka_current_reply(args),~
** Processing line: ~ "Matthew's-- wife is doing-- well. What's-- even-- better-- is that he's-- a dad, and he didn't-- even-- know it. Should- I- leave- out the part about-- the crew- being-- in hibernation-- for 20-- years? They- should- enter-- statis-- on a high- note... Right?",~
** Processing line: ~ [:replied_with_whole_truth, "Whole-- Truth--", anka_reply_whole_truth],~
** Processing line: ~ [:replied_with_half_truth, "Half-- Truth--", anka_reply_half_truth]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def anka_last_reply args~
** Processing line: ~ if args.state.scene_history.include? :replied_to_serenity_alive_firmly~
** Processing line: ~ return "Buffer--: #{serenity_alive_firm_reply.quote}"~
** Processing line: ~ else~
** Processing line: ~ return "Buffer--: #{serenity_alive_sugarcoated_reply.quote}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def anka_reply_whole_truth~
** Processing line: ~ "Matthew's wife is doing-- very-- well. In fact, she was pregnant. Matthew-- is a dad. He has a son. But, I need- all-- of-- you-- to brace-- yourselves. You've-- been in statis-- for 20 years. A lot has changed. Most of Earth's-- population--- didn't-- survive. Tell- Matthew-- that I'm-- sorry he didn't-- get to see- his- son grow- up."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def anka_reply_half_truth~
** Processing line: ~ "Matthew's--- wife- is doing-- very-- well. In fact, she was pregnant. Matthew is a dad! It's a boy! Tell- Matthew-- congrats-- for me. Hope-- to see- all of you- soon."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_with_whole_truth args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [32, 21],~
** Processing line: ~ scenes: [[60, 0, 4, 32, :replied_to_anka_back_home]],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: #{anka_reply_whole_truth.quote}"],~
** Processing line: ~ [30, 10, 5, 4, "I- hope- I- did the right- thing- by laying-- it all- out- there."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_with_half_truth args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [32, 21],~
** Processing line: ~ scenes: [[60, 0, 4, 32, :replied_to_anka_back_home]],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: #{anka_reply_half_truth.quote}"],~
** Processing line: ~ [30, 10, 5, 4, "I- hope- I- did the right- thing- by not giving-- them- the whole- truth."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def anka_current_reply args~
** Processing line: ~ if args.state.scene_history.include? :replied_to_serenity_alive_firmly~
** Processing line: ~ return "Hello. This is, Aanka. Sasha-- is still- trying-- to gather-- her wits about-- her, given- the gravity--- of your- last- reply. Thank- you- for being-- honest, and thank- you- for the help- with the ship- diagnostics. I was able-- to retrieve-- all of the navigation--- information---- after-- the battery--- swap. We- are ready-- to head back to Earth. Before-- we go- back- into-- statis, Matthew--- wanted-- to know- how his- wife- is doing. Please- reply-- as soon- as you can. He's-- not going-- to get- into-- the statis-- chamber-- until-- he knows- his wife is okay."~
** Processing line: ~ else~
** Processing line: ~ return "Hello. This is, Aanka. Thank- you for the help- with the ship's-- diagnostics. I was able-- to retrieve-- all of the navigation--- information--- after-- the battery-- swap. I- know-- that- you didn't-- tell- the whole truth- about-- how far we are from- Earth. Don't-- worry. I understand-- why you did it. We- are ready-- to head back to Earth. Before-- we go- back- into-- statis, Matthew--- wanted-- to know- how his- wife- is doing. Please- reply-- as soon- as you can. He's-- not going-- to get- into-- the statis-- chamber-- until-- he knows- his wife is okay."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_anka_back_home args~
** Processing line: ~ if args.state.scene_history.include? :replied_with_whole_truth~
** Processing line: ~ return {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [34, 4],~
** Processing line: ~ storylines: [~
** Processing line: ~ [34, 4, 4, 4, "I- hope-- this pit in my stomach-- is gone-- by tomorrow---."],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 38, 12, 13, :final_message_sad],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ else~
** Processing line: ~ return {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [34, 4],~
** Processing line: ~ storylines: [~
** Processing line: ~ [34, 4, 4, 4, "I- get the feeling-- I'm going-- to sleep real well tonight--."],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 38, 12, 13, :final_message_happy],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline_blinking_light.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - storyline_blinking_light.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_narrative/return_of_serenity/app/storyline_blinking_light.rb~
** Processing line: ~ def the_blinking_light args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/side-of-home.png',~
** Processing line: ~ player: [16, 13],~
** Processing line: ~ scenes: [~
** Processing line: ~ [52, 24, 11, 5, :blinking_light_mountain_pass],~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_side_of_home_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blinking_light_mountain_pass args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/mountain-pass-zoomed-out.png',~
** Processing line: ~ player: [4, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [18, 47, 5, 5, :blinking_light_path_to_observatory]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_mountain_pass_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blinking_light_path_to_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
** Processing line: ~ player: [60, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [0, 26, 5, 5, :blinking_light_observatory]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_path_to_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blinking_light_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/observatory.png',~
** Processing line: ~ player: [60, 2],~
** Processing line: ~ scenes: [~
** Processing line: ~ [28, 39, 4, 10, :blinking_light_inside_observatory]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blinking_light_inside_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ player: [60, 2],~
** Processing line: ~ storylines: [~
** Processing line: ~ [50, 2, 4, 8, "That's weird. I thought- this- mainframe-- was broken--."]~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 18, 5, 12, :blinking_light_inside_mainframe]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blinking_light_inside_mainframe args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/mainframe.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [30, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [62, 32, 4, 32, :reply_to_introduction]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [43, 43, 8, 8, "\"Mission-- control--, your- main- comm-- channels-- seem-- to be down. My apologies-- for- using-- this low- level-- exploit--. What's-- going-- on down there? We are ready-- for reentry--.\" Message--- Timestamp---: 4- hours-- 23--- minutes-- ago--."],~
** Processing line: ~ [30, 30, 4, 4, "There's-- a low- level-- message-- here... NANI.T.F?"],~
** Processing line: ~ [14, 10, 24, 4, "Oh interesting---. This transistor--- needed-- to be activated--- for the- mainframe-- to work."],~
** Processing line: ~ [14, 20, 24, 4, "What the heck activated--- this thing- though?"]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline_day_one.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - storyline_day_one.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_narrative/return_of_serenity/app/storyline_day_one.rb~
** Processing line: ~ def day_one_beginning args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/side-of-home.png',~
** Processing line: ~ player: [16, 13],~
** Processing line: ~ scenes: [~
** Processing line: ~ [0, 0, 64, 2, :day_one_infront_of_home],~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [35, 10, 6, 6, "Man. Hard to believe- that today- is the 20th--- anniversary-- of The Impact."]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def day_one_infront_of_home args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/front-of-home.png',~
** Processing line: ~ player: [56, 23],~
** Processing line: ~ scenes: [~
** Processing line: ~ [43, 34, 10, 16, :day_one_home],~
** Processing line: ~ [62, 0, 3, 40, :day_one_beginning],~
** Processing line: ~ [0, 4, 3, 20, :day_one_ceremony]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [40, 20, 4, 4, "It looks like everyone- is already- at the rememberance-- ceremony."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def day_one_home args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [34, 3],~
** Processing line: ~ scenes: [~
** Processing line: ~ [28, 0, 12, 2, :day_one_infront_of_home]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [~
** Processing line: ~ 38, 4, 4, 4, "My mansion- in all its glory! Okay yea, it's just a shipping- container-. Apparently-, it's nothing- like the luxuries- of the 2040's. But it's- all we have- in- this day and age. And it'll suffice."~
** Processing line: ~ ],~
** Processing line: ~ [~
** Processing line: ~ 28, 7, 4, 7,~
** Processing line: ~ "Ahhh. My reading- couch. It's so comfortable--."~
** Processing line: ~ ],~
** Processing line: ~ [~
** Processing line: ~ 38, 21, 4, 4,~
** Processing line: ~ "I'm- lucky- to have a computer--. I'm- one of the few people- with- the skills to put this- thing to good use."~
** Processing line: ~ ],~
** Processing line: ~ [~
** Processing line: ~ 45, 37, 4, 8,~
** Processing line: ~ "This corner- of my home- is always- warmer-. It's cause of the ref~lected-- light- from the solar-- panels--, just on the other- side- of this wall. It's hard- to believe- there was o~nce-- an unlimited- amount- of electricity--."~
** Processing line: ~ ],~
** Processing line: ~ [~
** Processing line: ~ 32, 40, 8, 10,~
** Processing line: ~ "This isn't- a good time- to sleep. I- should probably- head to the ceremony-."~
** Processing line: ~ ],~
** Processing line: ~ [~
** Processing line: ~ 25, 21, 5, 12,~
** Processing line: ~ "Fifteen-- years- of computer-- science-- notes, neatly-- organized. Compiler--- Theory--, Linear--- Algebra---, Game-- Development---... Every-- subject-- imaginable--."~
** Processing line: ~ ]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def day_one_ceremony args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/tribute.png',~
** Processing line: ~ player: [57, 21],~
** Processing line: ~ scenes: [~
** Processing line: ~ [62, 0, 2, 40, :day_one_infront_of_home],~
** Processing line: ~ [0, 24, 2, 40, :day_one_infront_of_library]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [53, 12, 3, 8, "It's- been twenty- years since The Impact. Twenty- years, since Halley's-- Comet-- set Earth's- blue- sky on fire."],~
** Processing line: ~ [45, 12, 3, 8, "The space mission- sent to prevent- Earth's- total- destruction--, was a success. Only- 99.9%------ of the world's- population-- died-- that day. Hey, it's- better-- than 100%---- of humanity-- dying."],~
** Processing line: ~ [20, 12, 23, 4, "The monument--- reads:---- Here- stands- the tribute-- to Space- Mission-- Serenity--- and- its- crew. You- have- given-- humanity--- a second-- chance."],~
** Processing line: ~ [15, 12, 3, 8, "Rest- in- peace--- Matthew----, Sasha----, Aanka----"],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def day_one_infront_of_library args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/outside-library.png',~
** Processing line: ~ player: [57, 21],~
** Processing line: ~ scenes: [~
** Processing line: ~ [62, 0, 2, 40, :day_one_ceremony],~
** Processing line: ~ [49, 39, 6, 9, :day_one_library]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [50, 20, 4, 8, "Shipping- containers-- as far- as the eye- can see. It's- rather- beautiful-- if you ask me. Even- though-- this- view- represents-- all- that's-- left- of humanity-."]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def day_one_library args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/library.png',~
** Processing line: ~ player: [27, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [0, 0, 64, 2, :end_day_one_infront_of_library]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [28, 22, 8, 4, "I grew- up- in this library. I've- read every- book- here. My favorites-- were- of course-- anything- computer-- related."],~
** Processing line: ~ [6, 32, 10, 6, "My favorite-- area--- of the library. The Science-- Section."]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def end_day_one_infront_of_library args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/outside-library.png',~
** Processing line: ~ player: [51, 33],~
** Processing line: ~ scenes: [~
** Processing line: ~ [49, 39, 6, 9, :day_one_library],~
** Processing line: ~ [62, 0, 2, 40, :end_day_one_monument],~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [50, 27, 4, 4, "It's getting late. Better get some sleep."]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def end_day_one_monument args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/tribute.png',~
** Processing line: ~ player: [2, 36],~
** Processing line: ~ scenes: [~
** Processing line: ~ [62, 0, 2, 40, :end_day_one_infront_of_home],~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [50, 27, 4, 4, "It's getting late. Better get some sleep."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def end_day_one_infront_of_home args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/front-of-home.png',~
** Processing line: ~ player: [1, 17],~
** Processing line: ~ scenes: [~
** Processing line: ~ [43, 34, 10, 16, :end_day_one_home],~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [20, 10, 4, 4, "It's getting late. Better get some sleep."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def end_day_one_home args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [34, 3],~
** Processing line: ~ scenes: [~
** Processing line: ~ [32, 40, 8, 10, :end_day_one_dream],~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [38, 4, 4, 4, "It's getting late. Better get some sleep."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def end_day_one_dream args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/dream.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [4, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [62, 0, 2, 64, :explaining_the_special_power]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [10, 10, 4, 4, "Why- does this- moment-- always- haunt- my dreams?"],~
** Processing line: ~ [20, 10, 4, 4, "This kid- reads these computer--- science--- books- nonstop-. What's- wrong with him?"],~
** Processing line: ~ [30, 10, 4, 4, "There- is nothing-- wrong- with him. This behavior-- should be encouraged---! In fact-, I think- he's- special---. Have- you seen- him use- a computer---? It's-- almost-- as if he can- speak-- to it."]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def explaining_the_special_power args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [32, 30],~
** Processing line: ~ scenes: [~
** Processing line: ~ [~
** Processing line: ~ 38, 21, 4, 4, :explaining_the_special_power_inside_computer~
** Processing line: ~ ],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def explaining_the_special_power_inside_computer args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/pc.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [34, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [0, 62, 64, 3, :the_blinking_light]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [14, 20, 24, 4, "So... I have a special-- power--. I don't-- need a mouse-, keyboard--, or even-- a monitor--- to control-- a computer--."],~
** Processing line: ~ [14, 25, 24, 4, "I only-- pretend-- to use peripherals---, so as not- to freak- anyone--- out."],~
** Processing line: ~ [14, 30, 24, 4, "Inside-- this silicon--- Universe---, is the only-- place I- feel- at peace."],~
** Processing line: ~ [14, 35, 24, 4, "It's-- the only-- place where I don't-- feel alone."]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline_final_decision.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - storyline_final_decision.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_narrative/return_of_serenity/app/storyline_final_decision.rb~
** Processing line: ~ def final_decision_side_of_home args~
** Processing line: ~ {~
** Processing line: ~ fade: 120,~
** Processing line: ~ background: 'sprites/side-of-home.png',~
** Processing line: ~ player: [16, 13],~
** Processing line: ~ scenes: [~
** Processing line: ~ [52, 24, 11, 5, :final_decision_mountain_pass],~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_side_of_home_render,~
** Processing line: ~ storylines: [~
** Processing line: ~ [28, 13, 8, 4, "Man. Hard to believe- that today- is the 21st--- anniversary-- of The Impact. Serenity--- will- be- home- soon."]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_mountain_pass args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/mountain-pass-zoomed-out.png',~
** Processing line: ~ player: [4, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [18, 47, 5, 5, :final_decision_path_to_observatory]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_mountain_pass_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_path_to_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
** Processing line: ~ player: [60, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [0, 26, 5, 5, :final_decision_observatory]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_path_to_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/observatory.png',~
** Processing line: ~ player: [60, 2],~
** Processing line: ~ scenes: [~
** Processing line: ~ [28, 39, 4, 10, :final_decision_inside_observatory]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_inside_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ player: [60, 2],~
** Processing line: ~ storylines: [],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 18, 5, 12, :final_decision_inside_mainframe]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_inside_mainframe args~
** Processing line: ~ {~
** Processing line: ~ player: [32, 4],~
** Processing line: ~ background: 'sprites/mainframe.png',~
** Processing line: ~ storylines: [],~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_top, :final_decision_ship_status],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_ship_status args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/serenity.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [30, 10],~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_top_right, :final_decision]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 8, 4, 4, "????"],~
** Processing line: ~ *final_decision_ship_status_shared(args)~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision args~
** Processing line: ~ decision_graph "Stasis-- Chambers--: UNDERPOWERED, Life- forms-- will be terminated---- unless-- equilibrium----- is reached.",~
** Processing line: ~ "I CAN'T DO THIS... But... If-- I-- don't--- bring-- the- chambers--- to- equilibrium-----, they all die...",~
** Processing line: ~ [:final_decision_game_over_noone, "Kill--- Everyone---", "DO--- NOTHING?"],~
** Processing line: ~ [:final_decision_game_over_matthew, "Kill--- Sasha---", "KILL--- SASHA?"],~
** Processing line: ~ [:final_decision_game_over_anka, "Kill--- Aanka---", "KILL--- AANKA?"],~
** Processing line: ~ [:final_decision_game_over_sasha, "Kill--- Matthew---", "KILL--- MATTHEW?"]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_game_over_noone args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/tribute-game-over.png',~
** Processing line: ~ player: [53, 14],~
** Processing line: ~ fade: 600~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_game_over_matthew args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/tribute-game-over.png',~
** Processing line: ~ player: [53, 14],~
** Processing line: ~ fade: 600~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_game_over_anka args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/tribute-game-over.png',~
** Processing line: ~ player: [53, 14],~
** Processing line: ~ fade: 600~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_game_over_sasha args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/tribute-game-over.png',~
** Processing line: ~ player: [53, 14],~
** Processing line: ~ fade: 600~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_decision_ship_status_shared args~
** Processing line: ~ [~
** Processing line: ~ *ship_control_hotspot(24, 22,~
** Processing line: ~ "Stasis-- Chambers--: UNDERPOWERED, Life- forms-- will be terminated---- unless-- equilibrium----- is reached. WHAT?! NO!",~
** Processing line: ~ "Matthew's--- Chamber--: UNDER-- THREAT-- OF-- TERMINATION. WHAT?! NO!",~
** Processing line: ~ "Aanka's--- Chamber--: UNDER-- THREAT-- OF-- TERMINATION. WHAT?! NO!",~
** Processing line: ~ "Sasha's--- Chamber--: UNDER-- THREAT-- OF-- TERMINATION. WHAT?! NO!"),~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline_final_message.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - storyline_final_message.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_narrative/return_of_serenity/app/storyline_final_message.rb~
** Processing line: ~ def final_message_sad args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [34, 35],~
** Processing line: ~ storylines: [~
** Processing line: ~ [34, 34, 4, 4, "Another-- sleepless-- night..."],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [32, -1, 8, 3, :final_message_observatory]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_happy args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [34, 35],~
** Processing line: ~ storylines: [~
** Processing line: ~ [34, 34, 4, 4, "Oh man, I slept like rock!"],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [32, -1, 8, 3, :final_message_observatory]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_side_of_home args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/side-of-home.png',~
** Processing line: ~ player: [16, 13],~
** Processing line: ~ scenes: [~
** Processing line: ~ [52, 24, 11, 5, :final_message_mountain_pass],~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_side_of_home_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_mountain_pass args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/mountain-pass-zoomed-out.png',~
** Processing line: ~ player: [4, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [18, 47, 5, 5, :final_message_path_to_observatory],~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [18, 13, 5, 5, "Hnnnnnnnggg. My legs-- are still sore- from yesterday."]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_mountain_pass_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_path_to_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
** Processing line: ~ player: [60, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [0, 26, 5, 5, :final_message_observatory]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [22, 20, 10, 10, "This spot--, on the mountain, right here, it's-- perfect. This- is where- I'll-- yeet-- the person-- who is playing-- this- prank- on me."]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_path_to_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_observatory args~
** Processing line: ~ if args.state.scene_history.include? :replied_with_whole_truth~
** Processing line: ~ return {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [51, 12],~
** Processing line: ~ storylines: [~
** Processing line: ~ [50, 10, 4, 4, "Here-- we- go..."]~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 18, 5, 12, :final_message_inside_mainframe]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
** Processing line: ~ }~
** Processing line: ~ else~
** Processing line: ~ return {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [51, 12],~
** Processing line: ~ storylines: [~
** Processing line: ~ [50, 10, 4, 4, "I feel like I'm-- walking-- on sunshine!"]~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 18, 5, 12, :final_message_inside_mainframe]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_inside_mainframe args~
** Processing line: ~ {~
** Processing line: ~ player: [32, 4],~
** Processing line: ~ background: 'sprites/mainframe.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ scenes: [[45, 45, 4, 4, :final_message_check_ship_status]]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_check_ship_status args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/mainframe.png',~
** Processing line: ~ storylines: [~
** Processing line: ~ [45, 45, 4, 4, (final_message_current args)],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_top, :final_message_ship_status],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_ship_status args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/serenity.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [30, 10],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 50, 4, 4, :final_message_ship_status_reviewed]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 8, 4, 4, "Let me make- sure- everything--- looks good. It'll-- give me peace- of mind."],~
** Processing line: ~ *final_message_ship_status_shared(args)~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_ship_status_reviewed args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/serenity.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_bottom, :final_message_summary]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [0, 62, 62, 3, "Whew. Everyone-- is in their- chambers. The engines-- are roaring-- and Serenity-- is coming-- home."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_ship_status_shared args~
** Processing line: ~ [~
** Processing line: ~ *ship_control_hotspot( 0, 50,~
** Processing line: ~ "Stasis-- Chambers--: Online, All chambers-- are powered. Battery--- Allocation---: 3--- of-- 3--.",~
** Processing line: ~ "Matthew's--- Chamber--: OCCUPIED----",~
** Processing line: ~ "Aanka's--- Chamber--: OCCUPIED----",~
** Processing line: ~ "Sasha's--- Chamber--: OCCUPIED----"),~
** Processing line: ~ *ship_control_hotspot(12, 35,~
** Processing line: ~ "Life- Support--: Not-- Needed---",~
** Processing line: ~ "O2--- Production---: OFF---",~
** Processing line: ~ "CO2--- Scrubbers---: OFF---",~
** Processing line: ~ "H2O--- Production---: OFF---"),~
** Processing line: ~ *ship_control_hotspot(24, 20,~
** Processing line: ~ "Navigation: Offline---",~
** Processing line: ~ "Sensor: OFF---",~
** Processing line: ~ "Heads- Up- Display: DAMAGED---",~
** Processing line: ~ "Arithmetic--- Unit: DAMAGED----"),~
** Processing line: ~ *ship_control_hotspot(36, 35,~
** Processing line: ~ "COMM: Underpowered----",~
** Processing line: ~ "Text: ON---",~
** Processing line: ~ "Audio: SEGFAULT---",~
** Processing line: ~ "Video: DAMAGED---"),~
** Processing line: ~ *ship_control_hotspot(48, 50,~
** Processing line: ~ "Engine: Online, Coordinates--- Set- for Earth. Battery--- Allocation---: 3--- of-- 3---",~
** Processing line: ~ "Engine I: ON---",~
** Processing line: ~ "Engine II: ON---",~
** Processing line: ~ "Engine III: ON---")~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_last_reply args~
** Processing line: ~ if args.state.scene_history.include? :replied_with_whole_truth~
** Processing line: ~ return "Buffer--: #{anka_reply_whole_truth.quote}"~
** Processing line: ~ else~
** Processing line: ~ return "Buffer--: #{anka_reply_half_truth.quote}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_current args~
** Processing line: ~ if args.state.scene_history.include? :replied_with_whole_truth~
** Processing line: ~ return "Hey... It's-- me Sasha. Aanka-- is trying-- her best to comfort-- Matthew. This- is the first- time- I've-- ever-- seen-- Matthew-- cry. We'll-- probably-- be in stasis-- by the time you get this message--. Thank- you- again-- for all your help. I look forward-- to meeting-- you in person."~
** Processing line: ~ else~
** Processing line: ~ return "Hey! It's-- me Sasha! LOL! Aanka-- and Matthew-- are dancing-- around-- like- goofballs--! They- are both- so adorable! Only-- this- tiny-- little-- genius-- can make-- a battle-- hardened-- general--- put- on a tiara-- and dance- around-- like a fairy-- princess-- XD------ Anyways, we are heading-- back into-- the chambers--. I hope our welcome-- home- parade-- has fireworks!"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def final_message_summary args~
** Processing line: ~ if args.state.scene_history.include? :replied_with_whole_truth~
** Processing line: ~ return {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [31, 11],~
** Processing line: ~ scenes: [[60, 0, 4, 32, :final_decision_side_of_home]],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 10, 5, 4, "I can't-- imagine-- what they are feeling-- right now. But at least- they- know everything---, and we can- concentrate-- on rebuilding--- this world-- right- off the bat. I can't-- wait to see the future-- they'll-- help- build."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ else~
** Processing line: ~ return {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [31, 11],~
** Processing line: ~ scenes: [[60, 0, 4, 32, :final_decision_side_of_home]],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 10, 5, 4, "They all sounded-- so happy. I know- they'll-- be in for a tough- dose- of reality--- when they- arrive. But- at least- they'll-- be around-- all- of us. We'll-- help them- cope."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline_serenity_alive.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - storyline_serenity_alive.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_narrative/return_of_serenity/app/storyline_serenity_alive.rb~
** Processing line: ~ def serenity_alive_side_of_home args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/side-of-home.png',~
** Processing line: ~ player: [16, 13],~
** Processing line: ~ scenes: [~
** Processing line: ~ [52, 24, 11, 5, :serenity_alive_mountain_pass],~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_side_of_home_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_mountain_pass args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/mountain-pass-zoomed-out.png',~
** Processing line: ~ player: [4, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [18, 47, 5, 5, :serenity_alive_path_to_observatory],~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [18, 13, 5, 5, "Hnnnnnnnggg. My legs-- are still sore- from yesterday."]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_mountain_pass_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_path_to_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
** Processing line: ~ player: [60, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [0, 26, 5, 5, :serenity_alive_observatory]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [22, 20, 10, 10, "This spot--, on the mountain, right here, it's-- perfect. This- is where- I'll-- yeet-- the person-- who is playing-- this- prank- on me."]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_path_to_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/observatory.png',~
** Processing line: ~ player: [60, 2],~
** Processing line: ~ scenes: [~
** Processing line: ~ [28, 39, 4, 10, :serenity_alive_inside_observatory]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_inside_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ player: [60, 2],~
** Processing line: ~ storylines: [],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 18, 5, 12, :serenity_alive_inside_mainframe]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_inside_mainframe args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/mainframe.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [30, 4],~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_top, :serenity_alive_ship_status],~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [22, 45, 17, 4, (serenity_alive_last_reply args)],~
** Processing line: ~ [45, 45, 4, 4, (serenity_alive_current_message args)],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_ship_status args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/serenity.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [30, 10],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 50, 4, 4, :serenity_alive_ship_status_reviewed]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 8, 4, 4, "Serenity? THE--- Mission-- Serenity?! How is that possible? They- are supposed-- to be dead."],~
** Processing line: ~ [30, 10, 4, 4, "I... can't-- believe-- it. I- can access-- Serenity's-- computer? I- guess my \"superpower----\" isn't limited-- by proximity-- to- a machine--."],~
** Processing line: ~ *serenity_alive_shared_ship_status(args)~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_ship_status_reviewed args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/serenity.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_bottom, :serenity_alive_time_to_reply]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [0, 62, 62, 3, "Okay. Reviewing-- everything--, it looks- like- I- can- take- the batteries--- from the Stasis--- Chambers--- and- Engine--- to keep- the crew-- alive-- and-- their-- location--- pinpointed---."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_time_to_reply args~
** Processing line: ~ decision_graph serenity_alive_current_message(args),~
** Processing line: ~ "Okay... time to deliver the bad news...",~
** Processing line: ~ [:replied_to_serenity_alive_firmly, "Firm-- Reply", serenity_alive_firm_reply],~
** Processing line: ~ [:replied_to_serenity_alive_kindly, "Sugar-- Coated---- Reply", serenity_alive_sugarcoated_reply]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_shared_ship_status args~
** Processing line: ~ [~
** Processing line: ~ *ship_control_hotspot( 0, 50,~
** Processing line: ~ "Stasis-- Chambers--: Online, All chambers-- are powered. Battery--- Allocation---: 3--- of-- 3--, Hmmm. They don't-- need this to be powered-- right- now. Everyone-- is awake.",~
** Processing line: ~ nil,~
** Processing line: ~ nil,~
** Processing line: ~ nil),~
** Processing line: ~ *ship_control_hotspot(12, 35,~
** Processing line: ~ "Life- Support--: Offline, Unable--- to- Sustain-- Life. Battery--- Allocation---: 0--- of-- 3---, Okay. That is definitely---- not a good thing.",~
** Processing line: ~ nil,~
** Processing line: ~ nil,~
** Processing line: ~ nil),~
** Processing line: ~ *ship_control_hotspot(24, 20,~
** Processing line: ~ "Navigation: Offline, Unable--- to- Calculate--- Location. Battery--- Allocation---: 0--- of-- 3---, Whelp. No wonder-- Sasha-- can't-- get- any-- readings. Their- Navigation--- is completely--- offline.",~
** Processing line: ~ nil,~
** Processing line: ~ nil,~
** Processing line: ~ nil),~
** Processing line: ~ *ship_control_hotspot(36, 35,~
** Processing line: ~ "COMM: Underpowered----, Limited--- to- Text-- Based-- COMM. Battery--- Allocation---: 1--- of-- 3---, It's-- lucky- that- their- COMM---- system was able to survive-- twenty-- years--. Just- barely-- it seems.",~
** Processing line: ~ nil,~
** Processing line: ~ nil,~
** Processing line: ~ nil),~
** Processing line: ~ *ship_control_hotspot(48, 50,~
** Processing line: ~ "Engine: Online, Full- Control-- Available. Battery--- Allocation---: 3--- of-- 3---, Hmmm. No point of having an engine-- online--, if you don't- know- where you're-- going.",~
** Processing line: ~ nil,~
** Processing line: ~ nil,~
** Processing line: ~ nil)~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_firm_reply~
** Processing line: ~ "Serenity, you are at a distance-- farther-- than- Neptune. All- of the ship's-- systems-- are failing. Please- move the batteries---- from- the Stasis-- Chambers-- over- to- Life-- Support--. I also-- need- you to move-- the batteries---- from- the Engines--- to your Navigation---- System."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_sugarcoated_reply~
** Processing line: ~ "So... you- are- a teeny--- tiny--- bit--- farther-- from Earth- than you think. And you have a teeny--- tiny--- problem-- with your ship. Please-- move the batteries--- from the Stasis--- Chambers--- over to Life--- Support---. I also need you to move the batteries--- from the Engines--- to your- Navigation--- System. Don't-- worry-- Sasha. I'll-- get y'all-- home."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_serenity_alive_firmly args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [32, 21],~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_bottom_right, :serenity_alive_path_from_observatory]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: #{serenity_alive_firm_reply.quote}"],~
** Processing line: ~ *serenity_alive_reply_completed_shared_hotspots(args),~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_serenity_alive_kindly args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [32, 21],~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_bottom_right, :serenity_alive_path_from_observatory]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: #{serenity_alive_sugarcoated_reply.quote}"],~
** Processing line: ~ *serenity_alive_reply_completed_shared_hotspots(args),~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_path_from_observatory args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
** Processing line: ~ player: [4, 21],~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_bottom_right, :serenity_bio_infront_of_home]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [22, 20, 10, 10, "I'm not sure what's-- worse. Waiting-- for Sasha's-- reply. Or jumping-- off- from- right- here."]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_reply_completed_shared_hotspots args~
** Processing line: ~ [~
** Processing line: ~ [30, 10, 5, 4, "I guess it wasn't-- a joke- after-- all."],~
** Processing line: ~ [40, 10, 5, 4, "I barely-- remember--- the- history----- of the crew."],~
** Processing line: ~ [50, 10, 5, 4, "It probably--- wouldn't-- hurt- to- refresh-- my memory--."]~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_last_reply args~
** Processing line: ~ if args.state.scene_history.include? :replied_to_introduction_seriously~
** Processing line: ~ return "Buffer--: \"Hello, Who- is sending-- this message--?\""~
** Processing line: ~ else~
** Processing line: ~ return "Buffer--: \"New- phone. Who dis?\""~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_alive_current_message args~
** Processing line: ~ if args.state.scene_history.include? :replied_to_introduction_seriously~
** Processing line: ~ "This- is Sasha. The Serenity--- crew-- is out of hibernation---- and ready-- for Earth reentry--. But, it seems like we are having-- trouble-- with our Navigation---- systems. Please advise.".quote~
** Processing line: ~ else~
** Processing line: ~ "LOL! Thanks for the laugh. I needed that. This- is Sasha. The Serenity--- crew-- is out of hibernation---- and ready-- for Earth reentry--. But, it seems like we are having-- trouble-- with our Navigation---- systems. Can you help me out- babe?".quote~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline_serenity_bio.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - storyline_serenity_bio.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_narrative/return_of_serenity/app/storyline_serenity_bio.rb~
** Processing line: ~ def serenity_bio_infront_of_home args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/front-of-home.png',~
** Processing line: ~ player: [54, 23],~
** Processing line: ~ scenes: [~
** Processing line: ~ [44, 34, 8, 14, :serenity_bio_inside_home],~
** Processing line: ~ [0, 3, 3, 22, :serenity_bio_library]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_bio_inside_home args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [34, 4],~
** Processing line: ~ storylines: [~
** Processing line: ~ [34, 4, 4, 4, "I'm--- completely--- exhausted."],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 38, 12, 13, :serenity_bio_restless_sleep],~
** Processing line: ~ [32, 0, 8, 3, :serenity_bio_infront_of_home],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_bio_restless_sleep args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ storylines: [~
** Processing line: ~ [32, 38, 10, 13, "I can't-- seem to sleep. I know nothing-- about the- crew-. Maybe- I- should- go read- up- on- them."],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [32, 0, 8, 3, :serenity_bio_infront_of_home],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_bio_library args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/library.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [30, 7],~
** Processing line: ~ scenes: [~
** Processing line: ~ [21, 35, 3, 18, :serenity_bio_book]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_bio_book args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/book.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [6, 52],~
** Processing line: ~ storylines: [~
** Processing line: ~ [ 4, 50, 56, 4, "The Title-- Reads: Never-- Forget-- Mission-- Serenity---"],~
** Processing line: ~~
** Processing line: ~ [ 4, 38, 8, 8, "Name: Matthew--- R. Sex: Male--- Age-- at-- Departure: 36-----"],~
** Processing line: ~ [14, 38, 46, 8, "Tribute-- Text: Matthew graduated-- Magna-- Cum-- Laude-- from MIT--- with-- a- PHD---- in Aero-- Nautical--- Engineering. He was immensely--- competitive, and had an insatiable---- thirst- for aerial-- battle. From the age of twenty, he remained-- undefeated--- in the Israeli-- Air- Force- \"Blue Flag\" combat-- exercises. By the age of 29--- he had already-- risen through- the ranks, and became-- the Lieutenant--- General--- of Lufwaffe. Matthew-- volenteered-- to- pilot-- Mission-- Serenity. To- this day, his wife- and son- are pillars-- of strength- for us. Rest- in Peace- Matthew, we are sorry-- that- news of the pregancy-- never-- reached- you. Please forgive us."],~
** Processing line: ~~
** Processing line: ~ [4, 26, 8, 8, "Name: Aanka--- P. Sex: Female--- Age-- at-- Departure: 9-----"],~
** Processing line: ~ [14, 26, 46, 8, "Tribute-- Text: Aanka--- gratuated--- Magna-- Cum- Laude-- from MIT, at- the- age- of eight, with a- PHD---- in Astro-- Physics. Her-- IQ--- was over 390, the highest-- ever- recorded--- IQ-- in- human-- history. She changed- the landscape-- of Physics-- with her efforts- in- unravelling--- the mysteries--- of- Dark- Matter--. Anka discovered-- the threat- of Halley's-- Comet-- collision--- with Earth. She spear headed-- the global-- effort-- for Misson-- Serenity. Her- multilingual--- address-- to- the world-- brought- us all hope."],~
** Processing line: ~~
** Processing line: ~ [4, 14, 8, 8, "Name: Sasha--- N. Sex: Female--- Age-- at-- Departure: 29-----"],~
** Processing line: ~ [14, 14, 46, 8, "Tribute-- Text: Sasha gratuated-- Magna-- Cum- Laude-- from MIT--- with-- a- PHD---- in Computer---- Science----. She-- was-- brilliant--, strong- willed--, and-- a-- stunningly--- beautiful--- woman---. Sasha---- is- the- creator--- of the world's--- first- Ruby--- Quantum-- Machine---. After-- much- critical--- acclaim--, the Quantum-- Computer-- was placed in MIT's---- Museam-- next- to- Richard--- G. and Thomas--- K.'s---- Lisp-- Machine---. Her- engineering--- skills-- were-- paramount--- for Mission--- Serenity's--- success. Humanity-- misses-- you-- dearly,-- Sasha--. Life-- shines-- a dimmer-- light-- now- that- your- angelic- voice-- can never- be heard- again."],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_bottom, :serenity_bio_finally_to_bed]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serenity_bio_finally_to_bed args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [35, 3],~
** Processing line: ~ storylines: [~
** Processing line: ~ [34, 4, 4, 4, "Maybe-- I'll-- be able-- to sleep- now..."],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [32, 38, 10, 13, :bad_dream],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def bad_dream args~
** Processing line: ~ {~
** Processing line: ~ fade: 120,~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [34, 35],~
** Processing line: ~ storylines: [~
** Processing line: ~ [34, 34, 4, 4, "Man. I did not- sleep- well- at all..."],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [32, -1, 8, 3, :bad_dream_observatory]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def bad_dream_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 120,~
** Processing line: ~ player: [51, 12],~
** Processing line: ~ storylines: [~
** Processing line: ~ [50, 10, 4, 4, "Breathe, Hiro. Just see what's there... everything--- will- be okay."]~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [30, 18, 5, 12, :bad_dream_inside_mainframe]~
** Processing line: ~ ],~
** Processing line: ~ render_override: :blinking_light_inside_observatory_render~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def bad_dream_inside_mainframe args~
** Processing line: ~ {~
** Processing line: ~ player: [32, 4],~
** Processing line: ~ background: 'sprites/mainframe.png',~
** Processing line: ~ fade: 120,~
** Processing line: ~ storylines: [~
** Processing line: ~ [22, 45, 17, 4, (bad_dream_last_reply args)],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [45, 45, 4, 4, :bad_dream_everyone_dead],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def bad_dream_everyone_dead args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/mainframe.png',~
** Processing line: ~ storylines: [~
** Processing line: ~ [22, 45, 17, 4, (bad_dream_last_reply args)],~
** Processing line: ~ [45, 45, 4, 4, "Hi-- Hiro. This is Sasha. By the time- you get this- message, chances-- are we will- already-- be- dead. The batteries--- got- damaged-- during-- removal. And- we don't-- have enough-- power-- for Life-- Support. The air-- is- already--- starting-- to taste- bad. It... would- have been- nice... to go- on a date--- with- you-- when-- I- got- back- to Earth. Anyways, good-- bye-- Hiro-- XOXOXO----"],~
** Processing line: ~ [22, 5, 17, 4, "Meh. Whatever, I didn't-- want to save them anyways. What- a pain- in my ass."],~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [*hotspot_bottom, :anka_inside_room]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def bad_dream_last_reply args~
** Processing line: ~ if args.state.scene_history.include? :replied_to_serenity_alive_firmly~
** Processing line: ~ return "Buffer--: #{serenity_alive_firm_reply.quote}"~
** Processing line: ~ else~
** Processing line: ~ return "Buffer--: #{serenity_alive_sugarcoated_reply.quote}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline_serenity_introduction.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - storyline_serenity_introduction.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_narrative/return_of_serenity/app/storyline_serenity_introduction.rb~
** Processing line: ~ # decision_graph "Message from Sasha",~
** Processing line: ~ # "I should reply.",~
** Processing line: ~ # [:replied_to_introduction_seriously, "Reply Seriously", "Who is this?"],~
** Processing line: ~ # [:replied_to_introduction_humorously, "Reply Humorously", "New phone who dis?"]~
** Processing line: ~ def reply_to_introduction args~
** Processing line: ~ decision_graph "\"Mission-- control--, your- main- comm-- channels-- seem-- to be down. My apologies-- for- using-- this low- level-- exploit--. What's-- going-- on down there? We are ready-- for reentry--.\" Message--- Timestamp---: 4- hours-- 23--- minutes-- ago--.",~
** Processing line: ~ "Whoever-- pulled- off this exploit-- knows their stuff. I should reply--.",~
** Processing line: ~ [:replied_to_introduction_seriously, "Serious Reply", "Hello, Who- is sending-- this message--?"],~
** Processing line: ~ [:replied_to_introduction_humorously, "Humorous Reply", "New phone, who dis?"]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_introduction_seriously args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [32, 21],~
** Processing line: ~ scenes: [~
** Processing line: ~ *replied_to_introduction_shared_scenes(args)~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: \"Hello, Who- is sending-- this message--?\""],~
** Processing line: ~ *replied_to_introduction_shared_storylines(args)~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_introduction_humorously args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-observatory.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [32, 21],~
** Processing line: ~ scenes: [~
** Processing line: ~ *replied_to_introduction_shared_scenes(args)~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 18, 5, 12, "Buffer-- has been set to: \"New- phone. Who dis?\""],~
** Processing line: ~ *replied_to_introduction_shared_storylines(args)~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_introduction_shared_storylines args~
** Processing line: ~ [~
** Processing line: ~ [30, 10, 5, 4, "It's-- going-- to take a while-- for this reply-- to make it's-- way back."],~
** Processing line: ~ [40, 10, 5, 4, "4- hours-- to send a message-- at light speed?! How far away-- is the sender--?"],~
** Processing line: ~ [50, 10, 5, 4, "I know- I've-- read about-- light- speed- travel-- before--. Maybe-- the library--- still has that- poster."]~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_introduction_shared_scenes args~
** Processing line: ~ [[60, 0, 4, 32, :replied_to_introduction_observatory]]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_introduction_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/observatory.png',~
** Processing line: ~ player: [28, 39],~
** Processing line: ~ scenes: [~
** Processing line: ~ [60, 0, 4, 32, :replied_to_introduction_path_to_observatory]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_introduction_path_to_observatory args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/path-to-observatory.png',~
** Processing line: ~ player: [0, 26],~
** Processing line: ~ scenes: [~
** Processing line: ~ [60, 0, 4, 20, :replied_to_introduction_mountain_pass]~
** Processing line: ~ ],~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_introduction_mountain_pass args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/mountain-pass-zoomed-out.png',~
** Processing line: ~ player: [21, 48],~
** Processing line: ~ scenes: [~
** Processing line: ~ [0, 0, 15, 4, :replied_to_introduction_side_of_home]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [15, 28, 5, 3, "At least I'm-- getting-- my- exercise-- in- for- today--."]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replied_to_introduction_side_of_home args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/side-of-home.png',~
** Processing line: ~ player: [58, 29],~
** Processing line: ~ scenes: [~
** Processing line: ~ [2, 0, 61, 2, :speed_of_light_front_of_home]~
** Processing line: ~ ],~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Narrative - Return Of Serenity - storyline_speed_of_light.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Narrative - Return Of Serenity - storyline_speed_of_light.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_narrative/return_of_serenity/app/storyline_speed_of_light.rb~
** Processing line: ~ def speed_of_light_front_of_home args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/front-of-home.png',~
** Processing line: ~ player: [54, 23],~
** Processing line: ~ scenes: [~
** Processing line: ~ [44, 34, 8, 14, :speed_of_light_inside_home],~
** Processing line: ~ [0, 3, 3, 22, :speed_of_light_outside_library]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def speed_of_light_inside_home args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [35, 4],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 38, 12, 13, "Can't- sleep right now. I have to- find- out- why- it took- over-- 4- hours-- to receive-- that message."]~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [32, 0, 8, 3, :speed_of_light_front_of_home],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def speed_of_light_outside_library args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/outside-library.png',~
** Processing line: ~ player: [55, 19],~
** Processing line: ~ scenes: [~
** Processing line: ~ [49, 39, 6, 10, :speed_of_light_library],~
** Processing line: ~ [61, 11, 3, 20, :speed_of_light_front_of_home]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def speed_of_light_library args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/library.png',~
** Processing line: ~ player: [30, 7],~
** Processing line: ~ scenes: [~
** Processing line: ~ [3, 50, 10, 3, :speed_of_light_celestial_bodies_diagram]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def speed_of_light_celestial_bodies_diagram args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/planets.png',~
** Processing line: ~ fade: 60,~
** Processing line: ~ player: [30, 3],~
** Processing line: ~ scenes: [~
** Processing line: ~ [56 - 2, 10, 5, 5, :speed_of_light_distance_discovered]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [30, 2, 4, 4, "Here- it is! This is a diagram--- of the solar-- system--. It was printed-- over-- fifty-- years- ago. Geez-- that's-- old."],~
** Processing line: ~~
** Processing line: ~ [ 0 - 2, 10, 5, 5, "The label- reads: Sun. The length- of the Astronomical-------- Unit-- (AU), is the distance-- from the Sun- to the Earth. Which is about 150--- million--- kilometers----."],~
** Processing line: ~ [ 7 - 2, 10, 5, 5, "The label- reads: Mercury. Distance from Sun: 0.39AU------------ or- 3----- light-- minutes--."],~
** Processing line: ~ [14 - 2, 10, 5, 5, "The label- reads: Venus. Distance from Sun: 0.72AU------------ or- 6----- light-- minutes--."],~
** Processing line: ~ [21 - 2, 10, 5, 5, "The label- reads: Earth. Distance from Sun: 1.00AU------------ or- 8----- light-- minutes--."],~
** Processing line: ~ [28 - 2, 10, 5, 5, "The label- reads: Mars. Distance from Sun: 1.52AU------------ or- 12----- light-- minutes--."],~
** Processing line: ~ [35 - 2, 10, 5, 5, "The label- reads: Jupiter. Distance from Sun: 5.20AU------------ or- 45----- light-- minutes--."],~
** Processing line: ~ [42 - 2, 10, 5, 5, "The label- reads: Saturn. Distance from Sun: 9.53AU------------ or- 79----- light-- minutes--."],~
** Processing line: ~ [49 - 2, 10, 5, 5, "The label- reads: Uranus. Distance from Sun: 19.81AU------------ or- 159----- light-- minutes--."],~
** Processing line: ~ # [56 - 2, 15, 4, 4, "The label- reads: Neptune. Distance from Sun: 30.05AU------------ or- 4.1----- light-- hours--."],~
** Processing line: ~ [63 - 2, 10, 5, 5, "The label- reads: Pluto. Wait. WTF? Pluto-- isn't-- a planet."],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def speed_of_light_distance_discovered args~
** Processing line: ~ {~
** Processing line: ~ background: 'sprites/planets.png',~
** Processing line: ~ scenes: [~
** Processing line: ~ [13, 0, 44, 3, :speed_of_light_end_of_day]~
** Processing line: ~ ],~
** Processing line: ~ storylines: [~
** Processing line: ~ [ 0 - 2, 10, 5, 5, "The label- reads: Sun. The length- of the Astronomical-------- Unit-- (AU), is the distance-- from the Sun- to the Earth. Which is about 150--- million--- kilometers----."],~
** Processing line: ~ [ 7 - 2, 10, 5, 5, "The label- reads: Mercury. Distance from Sun: 0.39AU------------ or- 3----- light-- minutes--."],~
** Processing line: ~ [14 - 2, 10, 5, 5, "The label- reads: Venus. Distance from Sun: 0.72AU------------ or- 6----- light-- minutes--."],~
** Processing line: ~ [21 - 2, 10, 5, 5, "The label- reads: Earth. Distance from Sun: 1.00AU------------ or- 8----- light-- minutes--."],~
** Processing line: ~ [28 - 2, 10, 5, 5, "The label- reads: Mars. Distance from Sun: 1.52AU------------ or- 12----- light-- minutes--."],~
** Processing line: ~ [35 - 2, 10, 5, 5, "The label- reads: Jupiter. Distance from Sun: 5.20AU------------ or- 45----- light-- minutes--."],~
** Processing line: ~ [42 - 2, 10, 5, 5, "The label- reads: Saturn. Distance from Sun: 9.53AU------------ or- 79----- light-- minutes--."],~
** Processing line: ~ [49 - 2, 10, 5, 5, "The label- reads: Uranus. Distance from Sun: 19.81AU------------ or- 159----- light-- minutes--."],~
** Processing line: ~ [56 - 2, 10, 5, 5, "The label- reads: Neptune. Distance from Sun: 30.05AU------------ or- 4.1----- light-- hours--. What?! The message--- I received-- was from a source-- farther-- than-- Neptune?!"],~
** Processing line: ~ [63 - 2, 10, 5, 5, "The label- reads: Pluto. Dista- Wait... Pluto-- isn't-- a planet. People-- thought- Pluto-- was a planet-- back- then?--"],~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def speed_of_light_end_of_day args~
** Processing line: ~ {~
** Processing line: ~ fade: 60,~
** Processing line: ~ background: 'sprites/inside-home.png',~
** Processing line: ~ player: [35, 0],~
** Processing line: ~ storylines: [~
** Processing line: ~ [35, 10, 4, 4, "Wonder-- what the reply-- will be. Who- the hell is contacting--- me from beyond-- Neptune? This- has to be some- kind- of- joke."]~
** Processing line: ~ ],~
** Processing line: ~ scenes: [~
** Processing line: ~ [31, 38, 10, 12, :serenity_alive_side_of_home]~
** Processing line: ~ ]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Roguelike - Roguelike Line Of Sight - constants.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Roguelike - Roguelike Line Of Sight - constants.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_roguelike/roguelike_line_of_sight/app/constants.rb~
** Processing line: ~ SHOW_LEGEND = true~
** Processing line: ~ SOURCE_TILE_SIZE = 16~
** Processing line: ~ DESTINATION_TILE_SIZE = 16~
** Processing line: ~ TILE_SHEET_SIZE = 256~
** Processing line: ~ TILE_R = 0~
** Processing line: ~ TILE_G = 0~
** Processing line: ~ TILE_B = 0~
** Processing line: ~ TILE_A = 255~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Roguelike - Roguelike Line Of Sight - legend.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Roguelike - Roguelike Line Of Sight - legend.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_roguelike/roguelike_line_of_sight/app/legend.rb~
** Processing line: ~ def tick_legend args~
** Processing line: ~ return unless SHOW_LEGEND~
** Processing line: ~~
** Processing line: ~ legend_padding = 16~
** Processing line: ~ legend_x = 1280 - TILE_SHEET_SIZE - legend_padding~
** Processing line: ~ legend_y = 720 - TILE_SHEET_SIZE - legend_padding~
** Processing line: ~ tile_sheet_sprite = [legend_x,~
** Processing line: ~ legend_y,~
** Processing line: ~ TILE_SHEET_SIZE,~
** Processing line: ~ TILE_SHEET_SIZE,~
** Processing line: ~ 'sprites/simple-mood-16x16.png', 0,~
** Processing line: ~ TILE_A,~
** Processing line: ~ TILE_R,~
** Processing line: ~ TILE_G,~
** Processing line: ~ TILE_B]~
** Processing line: ~~
** Processing line: ~ if args.inputs.mouse.point.inside_rect? tile_sheet_sprite~
** Processing line: ~ mouse_row = args.inputs.mouse.point.y.idiv(SOURCE_TILE_SIZE)~
** Processing line: ~ tile_row = 15 - (mouse_row - legend_y.idiv(SOURCE_TILE_SIZE))~
** Processing line: ~~
** Processing line: ~ mouse_col = args.inputs.mouse.point.x.idiv(SOURCE_TILE_SIZE)~
** Processing line: ~ tile_col = (mouse_col - legend_x.idiv(SOURCE_TILE_SIZE))~
** Processing line: ~~
** Processing line: ~ args.outputs.primitives << [legend_x - legend_padding * 2,~
** Processing line: ~ mouse_row * SOURCE_TILE_SIZE, 256 + legend_padding * 2, 16, 128, 128, 128, 64].solid~
** Processing line: ~~
** Processing line: ~ args.outputs.primitives << [mouse_col * SOURCE_TILE_SIZE,~
** Processing line: ~ legend_y - legend_padding * 2, 16, 256 + legend_padding * 2, 128, 128, 128, 64].solid~
** Processing line: ~~
** Processing line: ~ sprite_key = sprite_lookup.find { |k, v| v == [tile_row, tile_col] }~
** Processing line: ~ if sprite_key~
** Processing line: ~ member_name, _ = sprite_key~
** Processing line: ~ member_name = member_name_as_code member_name~
** Processing line: ~ args.outputs.labels << [660, 70, "# CODE SAMPLE (place in the tick_game method located in main.rb)", -1, 0]~
** Processing line: ~ args.outputs.labels << [660, 50, "# GRID_X, GRID_Y, TILE_KEY", -1, 0]~
** Processing line: ~ args.outputs.labels << [660, 30, "args.outputs.sprites << tile_in_game( 5, 6, #{member_name} )", -1, 0]~
** Processing line: ~ else~
** Processing line: ~ args.outputs.labels << [660, 50, "Tile [#{tile_row}, #{tile_col}] not found. Add a key and value to app/sprite_lookup.rb:", -1, 0]~
** Processing line: ~ args.outputs.labels << [660, 30, "{ \"some_string\" => [#{tile_row}, #{tile_col}] } OR { some_symbol: [#{tile_row}, #{tile_col}] }.", -1, 0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # render the sprite in the top right with a padding to the top and right so it's~
** Processing line: ~ # not flush against the edge~
** Processing line: ~ args.outputs.sprites << tile_sheet_sprite~
** Processing line: ~~
** Processing line: ~ # carefully place some ascii arrows to show the legend labels~
** Processing line: ~ args.outputs.labels << [895, 707, "ROW --->"]~
** Processing line: ~ args.outputs.labels << [943, 412, " ^"]~
** Processing line: ~ args.outputs.labels << [943, 412, " |"]~
** Processing line: ~ args.outputs.labels << [943, 394, "COL ---+"]~
** Processing line: ~~
** Processing line: ~ # use the tile sheet to print out row and column numbers~
** Processing line: ~ args.outputs.sprites << 16.map_with_index do |i|~
** Processing line: ~ sprite_key = i % 10~
** Processing line: ~ [~
** Processing line: ~ tile(1280 - TILE_SHEET_SIZE - legend_padding * 2 - SOURCE_TILE_SIZE,~
** Processing line: ~ 720 - legend_padding * 2 - (SOURCE_TILE_SIZE * i),~
** Processing line: ~ sprite(sprite_key)),~
** Processing line: ~ tile(1280 - TILE_SHEET_SIZE - SOURCE_TILE_SIZE + (SOURCE_TILE_SIZE * i),~
** Processing line: ~ 720 - TILE_SHEET_SIZE - legend_padding * 3, sprite(sprite_key))~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Roguelike - Roguelike Line Of Sight - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Roguelike - Roguelike Line Of Sight - 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_roguelike/roguelike_line_of_sight/app/main.rb~
** Processing line: ~ require 'app/constants.rb'~
** Processing line: ~ require 'app/sprite_lookup.rb'~
** Processing line: ~ require 'app/legend.rb'~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ tick_game args~
** Processing line: ~ tick_legend args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_game args~
** Processing line: ~ # setup the grid~
** Processing line: ~ args.state.grid.padding = 104~
** Processing line: ~ args.state.grid.size = 512~
** Processing line: ~~
** Processing line: ~ # set up your game~
** Processing line: ~ # initialize the game/game defaults. ||= means that you only initialize it if~
** Processing line: ~ # the value isn't alread initialized~
** Processing line: ~ args.state.player.x ||= 0~
** Processing line: ~ args.state.player.y ||= 0~
** Processing line: ~~
** Processing line: ~ args.state.enemies ||= [~
** Processing line: ~ { x: 10, y: 10, type: :goblin, tile_key: :G },~
** Processing line: ~ { x: 15, y: 30, type: :rat, tile_key: :R }~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ args.state.info_message ||= "Use arrow keys to move around."~
** Processing line: ~~
** Processing line: ~ # handle keyboard input~
** Processing line: ~ # keyboard input (arrow keys to move player)~
** Processing line: ~ new_player_x = args.state.player.x~
** Processing line: ~ new_player_y = args.state.player.y~
** Processing line: ~ player_direction = ""~
** Processing line: ~ player_moved = false~
** Processing line: ~ if args.inputs.keyboard.key_down.up~
** Processing line: ~ new_player_y += 1~
** Processing line: ~ player_direction = "north"~
** Processing line: ~ player_moved = true~
** Processing line: ~ elsif args.inputs.keyboard.key_down.down~
** Processing line: ~ new_player_y -= 1~
** Processing line: ~ player_direction = "south"~
** Processing line: ~ player_moved = true~
** Processing line: ~ elsif args.inputs.keyboard.key_down.right~
** Processing line: ~ new_player_x += 1~
** Processing line: ~ player_direction = "east"~
** Processing line: ~ player_moved = true~
** Processing line: ~ elsif args.inputs.keyboard.key_down.left~
** Processing line: ~ new_player_x -= 1~
** Processing line: ~ player_direction = "west"~
** Processing line: ~ player_moved = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #handle game logic~
** Processing line: ~ # determine if there is an enemy on that square,~
** Processing line: ~ # if so, don't let the player move there~
** Processing line: ~ if player_moved~
** Processing line: ~ found_enemy = args.state.enemies.find do |e|~
** Processing line: ~ e[:x] == new_player_x && e[:y] == new_player_y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if !found_enemy~
** Processing line: ~ args.state.player.x = new_player_x~
** Processing line: ~ args.state.player.y = new_player_y~
** Processing line: ~ args.state.info_message = "You moved #{player_direction}."~
** Processing line: ~ else~
** Processing line: ~ args.state.info_message = "You cannot move into a square an enemy occupies."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.outputs.sprites << tile_in_game(args.state.player.x,~
** Processing line: ~ args.state.player.y, '@')~
** Processing line: ~~
** Processing line: ~ # render game~
** Processing line: ~ # render enemies at locations~
** Processing line: ~ args.outputs.sprites << args.state.enemies.map do |e|~
** Processing line: ~ tile_in_game(e[:x], e[:y], e[:tile_key])~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # render the border~
** Processing line: ~ border_x = args.state.grid.padding - DESTINATION_TILE_SIZE~
** Processing line: ~ border_y = args.state.grid.padding - DESTINATION_TILE_SIZE~
** Processing line: ~ border_size = args.state.grid.size + DESTINATION_TILE_SIZE * 2~
** Processing line: ~~
** Processing line: ~ args.outputs.borders << [border_x,~
** Processing line: ~ border_y,~
** Processing line: ~ border_size,~
** Processing line: ~ border_size]~
** Processing line: ~~
** Processing line: ~ # render label stuff~
** Processing line: ~ args.outputs.labels << [border_x, border_y - 10, "Current player location is: #{args.state.player.x}, #{args.state.player.y}"]~
** Processing line: ~ args.outputs.labels << [border_x, border_y + 25 + border_size, args.state.info_message]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tile_in_game x, y, tile_key~
** Processing line: ~ tile($gtk.args.state.grid.padding + x * DESTINATION_TILE_SIZE,~
** Processing line: ~ $gtk.args.state.grid.padding + y * DESTINATION_TILE_SIZE,~
** Processing line: ~ tile_key)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Roguelike - Roguelike Line Of Sight - sprite_lookup.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Roguelike - Roguelike Line Of Sight - sprite_lookup.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_roguelike/roguelike_line_of_sight/app/sprite_lookup.rb~
** Processing line: ~ def sprite_lookup~
** Processing line: ~ {~
** Processing line: ~ 0 => [3, 0],~
** Processing line: ~ 1 => [3, 1],~
** Processing line: ~ 2 => [3, 2],~
** Processing line: ~ 3 => [3, 3],~
** Processing line: ~ 4 => [3, 4],~
** Processing line: ~ 5 => [3, 5],~
** Processing line: ~ 6 => [3, 6],~
** Processing line: ~ 7 => [3, 7],~
** Processing line: ~ 8 => [3, 8],~
** Processing line: ~ 9 => [3, 9],~
** Processing line: ~ '@' => [4, 0],~
** Processing line: ~ A: [ 4, 1],~
** Processing line: ~ B: [ 4, 2],~
** Processing line: ~ C: [ 4, 3],~
** Processing line: ~ D: [ 4, 4],~
** Processing line: ~ E: [ 4, 5],~
** Processing line: ~ F: [ 4, 6],~
** Processing line: ~ G: [ 4, 7],~
** Processing line: ~ H: [ 4, 8],~
** Processing line: ~ I: [ 4, 9],~
** Processing line: ~ J: [ 4, 10],~
** Processing line: ~ K: [ 4, 11],~
** Processing line: ~ L: [ 4, 12],~
** Processing line: ~ M: [ 4, 13],~
** Processing line: ~ N: [ 4, 14],~
** Processing line: ~ O: [ 4, 15],~
** Processing line: ~ P: [ 5, 0],~
** Processing line: ~ Q: [ 5, 1],~
** Processing line: ~ R: [ 5, 2],~
** Processing line: ~ S: [ 5, 3],~
** Processing line: ~ T: [ 5, 4],~
** Processing line: ~ U: [ 5, 5],~
** Processing line: ~ V: [ 5, 6],~
** Processing line: ~ W: [ 5, 7],~
** Processing line: ~ X: [ 5, 8],~
** Processing line: ~ Y: [ 5, 9],~
** Processing line: ~ Z: [ 5, 10],~
** Processing line: ~ a: [ 6, 1],~
** Processing line: ~ b: [ 6, 2],~
** Processing line: ~ c: [ 6, 3],~
** Processing line: ~ d: [ 6, 4],~
** Processing line: ~ e: [ 6, 5],~
** Processing line: ~ f: [ 6, 6],~
** Processing line: ~ g: [ 6, 7],~
** Processing line: ~ h: [ 6, 8],~
** Processing line: ~ i: [ 6, 9],~
** Processing line: ~ j: [ 6, 10],~
** Processing line: ~ k: [ 6, 11],~
** Processing line: ~ l: [ 6, 12],~
** Processing line: ~ m: [ 6, 13],~
** Processing line: ~ n: [ 6, 14],~
** Processing line: ~ o: [ 6, 15],~
** Processing line: ~ p: [ 7, 0],~
** Processing line: ~ q: [ 7, 1],~
** Processing line: ~ r: [ 7, 2],~
** Processing line: ~ s: [ 7, 3],~
** Processing line: ~ t: [ 7, 4],~
** Processing line: ~ u: [ 7, 5],~
** Processing line: ~ v: [ 7, 6],~
** Processing line: ~ w: [ 7, 7],~
** Processing line: ~ x: [ 7, 8],~
** Processing line: ~ y: [ 7, 9],~
** Processing line: ~ z: [ 7, 10],~
** Processing line: ~ '|' => [ 7, 12]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def sprite key~
** Processing line: ~ $gtk.args.state.reserved.sprite_lookup[key]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def member_name_as_code raw_member_name~
** Processing line: ~ if raw_member_name.is_a? Symbol~
** Processing line: ~ ":#{raw_member_name}"~
** Processing line: ~ elsif raw_member_name.is_a? String~
** Processing line: ~ "'#{raw_member_name}'"~
** Processing line: ~ elsif raw_member_name.is_a? Fixnum~
** Processing line: ~ "#{raw_member_name}"~
** Processing line: ~ else~
** Processing line: ~ "UNKNOWN: #{raw_member_name}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tile x, y, tile_row_column_or_key~
** Processing line: ~ tile_extended x, y, DESTINATION_TILE_SIZE, DESTINATION_TILE_SIZE, TILE_R, TILE_G, TILE_B, TILE_A, tile_row_column_or_key~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tile_extended x, y, w, h, r, g, b, a, tile_row_column_or_key~
** Processing line: ~ row_or_key, column = tile_row_column_or_key~
** Processing line: ~ if !column~
** Processing line: ~ row, column = sprite row_or_key~
** Processing line: ~ else~
** Processing line: ~ row, column = row_or_key, column~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if !row~
** Processing line: ~ member_name = member_name_as_code tile_row_column_or_key~
** Processing line: ~ raise "Unabled to find a sprite for #{member_name}. Make sure the value exists in app/sprite_lookup.rb."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sprite provided by Rogue Yun~
** Processing line: ~ # http://www.bay12forums.com/smf/index.php?topic=144897.0~
** Processing line: ~ # License: Public Domain~
** Processing line: ~~
** Processing line: ~ {~
** Processing line: ~ x: x,~
** Processing line: ~ y: y,~
** Processing line: ~ w: w,~
** Processing line: ~ h: h,~
** Processing line: ~ tile_x: column * 16,~
** Processing line: ~ tile_y: (row * 16),~
** Processing line: ~ tile_w: 16,~
** Processing line: ~ tile_h: 16,~
** Processing line: ~ r: r,~
** Processing line: ~ g: g,~
** Processing line: ~ b: b,~
** Processing line: ~ a: a,~
** Processing line: ~ path: 'sprites/simple-mood-16x16.png'~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $gtk.args.state.reserved.sprite_lookup = sprite_lookup~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Roguelike - Roguelike Starting Point - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Roguelike - Roguelike 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_rpg_roguelike/roguelike_starting_point/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - lambda: A way to define a block and its parameters with special syntax.~
** Processing line: ~ For example, the syntax of lambda looks like this:~
** Processing line: ~ my_lambda = -> { puts "This is my lambda" }~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.~
** Processing line: ~~
** Processing line: ~ - ARRAY#inside_rect?: Returns whether or not the point is inside a rect.~
** Processing line: ~~
** Processing line: ~ - product: Returns an array of all combinations of elements from all arrays.~
** Processing line: ~~
** Processing line: ~ - find: Finds all elements of a collection that meet requirements.~
** Processing line: ~~
** Processing line: ~ - abs: Returns the absolute value.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This sample app allows the player to move around in the dungeon, which becomes more or less visible~
** Processing line: ~ # depending on the player's location, and also has enemies.~
** Processing line: ~~
** Processing line: ~ class Game~
** Processing line: ~ attr_accessor :args, :state, :inputs, :outputs, :grid~
** Processing line: ~~
** Processing line: ~ # Calls all the methods needed for the game to run properly.~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render_canvas~
** Processing line: ~ render_dungeon~
** Processing line: ~ render_player~
** Processing line: ~ render_enemies~
** Processing line: ~ print_cell_coordinates~
** Processing line: ~ calc_canvas~
** Processing line: ~ input_move~
** Processing line: ~ input_click_map~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets default values and initializes variables~
** Processing line: ~ def defaults~
** Processing line: ~ outputs.background_color = [0, 0, 0] # black background~
** Processing line: ~~
** Processing line: ~ # Initializes empty canvas, dungeon, and enemies collections.~
** Processing line: ~ state.canvas ||= []~
** Processing line: ~ state.dungeon ||= []~
** Processing line: ~ state.enemies ||= []~
** Processing line: ~~
** Processing line: ~ # If state.area doesn't have value, load_area_one and derive_dungeon_from_area methods are called~
** Processing line: ~ if !state.area~
** Processing line: ~ load_area_one~
** Processing line: ~ derive_dungeon_from_area~
** Processing line: ~~
** Processing line: ~ # Changing these values will change the position of player~
** Processing line: ~ state.x = 7~
** Processing line: ~ state.y = 5~
** Processing line: ~~
** Processing line: ~ # Creates new enemies, sets their values, and adds them to the enemies collection.~
** Processing line: ~ state.enemies << state.new_entity(:enemy) do |e| # declares each enemy as new entity~
** Processing line: ~ e.x = 13 # position~
** Processing line: ~ e.y = 5~
** Processing line: ~ e.previous_hp = 3~
** Processing line: ~ e.hp = 3~
** Processing line: ~ e.max_hp = 3~
** Processing line: ~ e.is_dead = false # the enemy is alive~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ update_line_of_sight # updates line of sight by adding newly visible cells~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Adds elements into the state.area collection~
** Processing line: ~ # The dungeon is derived using the coordinates of this collection~
** Processing line: ~ def load_area_one~
** Processing line: ~ state.area ||= []~
** Processing line: ~ state.area << [8, 6]~
** Processing line: ~ state.area << [7, 6]~
** Processing line: ~ state.area << [7, 7]~
** Processing line: ~ state.area << [8, 9]~
** Processing line: ~ state.area << [7, 8]~
** Processing line: ~ state.area << [7, 9]~
** Processing line: ~ state.area << [6, 4]~
** Processing line: ~ state.area << [7, 3]~
** Processing line: ~ state.area << [7, 4]~
** Processing line: ~ state.area << [6, 5]~
** Processing line: ~ state.area << [7, 5]~
** Processing line: ~ state.area << [8, 5]~
** Processing line: ~ state.area << [8, 4]~
** Processing line: ~ state.area << [1, 1]~
** Processing line: ~ state.area << [0, 1]~
** Processing line: ~ state.area << [0, 2]~
** Processing line: ~ state.area << [1, 2]~
** Processing line: ~ state.area << [2, 2]~
** Processing line: ~ state.area << [2, 1]~
** Processing line: ~ state.area << [2, 3]~
** Processing line: ~ state.area << [1, 3]~
** Processing line: ~ state.area << [1, 4]~
** Processing line: ~ state.area << [2, 4]~
** Processing line: ~ state.area << [2, 5]~
** Processing line: ~ state.area << [1, 5]~
** Processing line: ~ state.area << [2, 6]~
** Processing line: ~ state.area << [3, 6]~
** Processing line: ~ state.area << [4, 6]~
** Processing line: ~ state.area << [4, 7]~
** Processing line: ~ state.area << [4, 8]~
** Processing line: ~ state.area << [5, 8]~
** Processing line: ~ state.area << [5, 9]~
** Processing line: ~ state.area << [6, 9]~
** Processing line: ~ state.area << [7, 10]~
** Processing line: ~ state.area << [7, 11]~
** Processing line: ~ state.area << [7, 12]~
** Processing line: ~ state.area << [7, 12]~
** Processing line: ~ state.area << [7, 13]~
** Processing line: ~ state.area << [8, 13]~
** Processing line: ~ state.area << [9, 13]~
** Processing line: ~ state.area << [10, 13]~
** Processing line: ~ state.area << [11, 13]~
** Processing line: ~ state.area << [12, 13]~
** Processing line: ~ state.area << [12, 12]~
** Processing line: ~ state.area << [8, 12]~
** Processing line: ~ state.area << [9, 12]~
** Processing line: ~ state.area << [10, 12]~
** Processing line: ~ state.area << [11, 12]~
** Processing line: ~ state.area << [12, 11]~
** Processing line: ~ state.area << [13, 11]~
** Processing line: ~ state.area << [13, 10]~
** Processing line: ~ state.area << [13, 9]~
** Processing line: ~ state.area << [13, 8]~
** Processing line: ~ state.area << [13, 7]~
** Processing line: ~ state.area << [13, 6]~
** Processing line: ~ state.area << [12, 6]~
** Processing line: ~ state.area << [14, 6]~
** Processing line: ~ state.area << [14, 5]~
** Processing line: ~ state.area << [13, 5]~
** Processing line: ~ state.area << [12, 5]~
** Processing line: ~ state.area << [12, 4]~
** Processing line: ~ state.area << [13, 4]~
** Processing line: ~ state.area << [14, 4]~
** Processing line: ~ state.area << [1, 6]~
** Processing line: ~ state.area << [6, 6]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Starts with an empty dungeon collection, and adds dungeon cells into it.~
** Processing line: ~ def derive_dungeon_from_area~
** Processing line: ~ state.dungeon = [] # starts as empty collection~
** Processing line: ~~
** Processing line: ~ state.area.each do |a| # for each element of the area collection~
** Processing line: ~ state.dungeon << state.new_entity(:dungeon_cell) do |d| # declares each dungeon cell as new entity~
** Processing line: ~ d.x = a.x # dungeon cell position using coordinates from area~
** Processing line: ~ d.y = a.y~
** Processing line: ~ d.is_visible = false # cell is not visible~
** Processing line: ~ d.alpha = 0 # not transparent at all~
** Processing line: ~ d.border = [left_margin + a.x * grid_size,~
** Processing line: ~ bottom_margin + a.y * grid_size,~
** Processing line: ~ grid_size,~
** Processing line: ~ grid_size,~
** Processing line: ~ *blue,~
** Processing line: ~ 255] # sets border definition for dungeon cell~
** Processing line: ~ d # returns dungeon cell~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def left_margin~
** Processing line: ~ 40 # sets left margin~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def bottom_margin~
** Processing line: ~ 60 # sets bottom margin~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def grid_size~
** Processing line: ~ 40 # sets size of grid square~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Updates the line of sight by calling the thick_line_of_sight method and~
** Processing line: ~ # adding dungeon cells to the newly_visible collection~
** Processing line: ~ def update_line_of_sight~
** Processing line: ~ variations = [-1, 0, 1]~
** Processing line: ~ # creates collection of newly visible dungeon cells~
** Processing line: ~ newly_visible = variations.product(variations).flat_map do |rise, run| # combo of all elements~
** Processing line: ~ thick_line_of_sight state.x, state.y, rise, run, 15, # calls thick_line_of_sight method~
** Processing line: ~ lambda { |x, y| dungeon_cell_exists? x, y } # checks whether or not cell exists~
** Processing line: ~ end.uniq# removes duplicates~
** Processing line: ~~
** Processing line: ~ state.dungeon.each do |d| # perform action on each element of dungeons collection~
** Processing line: ~ d.is_visible = newly_visible.find { |v| v.x == d.x && v.y == d.y } # finds match inside newly_visible collection~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #Returns a boolean value~
** Processing line: ~ def dungeon_cell_exists? x, y~
** Processing line: ~ # Finds cell coordinates inside dungeon collection to determine if dungeon cell exists~
** Processing line: ~ state.dungeon.find { |d| d.x == x && d.y == y }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Calls line_of_sight method to add elements to result collection~
** Processing line: ~ def thick_line_of_sight start_x, start_y, rise, run, distance, cell_exists_lambda~
** Processing line: ~ result = []~
** Processing line: ~ result += line_of_sight start_x, start_y, rise, run, distance, cell_exists_lambda~
** Processing line: ~ result += line_of_sight start_x - 1, start_y, rise, run, distance, cell_exists_lambda # one left~
** Processing line: ~ result += line_of_sight start_x + 1, start_y, rise, run, distance, cell_exists_lambda # one right~
** Processing line: ~ result~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Adds points to the result collection to create the player's line of sight~
** Processing line: ~ def line_of_sight start_x, start_y, rise, run, distance, cell_exists_lambda~
** Processing line: ~ result = [] # starts as empty collection~
** Processing line: ~ points = points_on_line start_x, start_y, rise, run, distance # calls points_on_line method~
** Processing line: ~ points.each do |p| # for each point in collection~
** Processing line: ~ if cell_exists_lambda.call(p.x, p.y) # if the cell exists~
** Processing line: ~ result << p # add it to result collection~
** Processing line: ~ else # if cell does not exist~
** Processing line: ~ return result # return result collection as it is~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ result # return result collection~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Finds the coordinates of the points on the line by performing calculations~
** Processing line: ~ def points_on_line start_x, start_y, rise, run, distance~
** Processing line: ~ distance.times.map do |i| # perform an action~
** Processing line: ~ [start_x + run * i, start_y + rise * i] # definition of point~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_canvas~
** Processing line: ~ return~
** Processing line: ~ outputs.borders << state.canvas.map do |c| # on each element of canvas collection~
** Processing line: ~ c.border # outputs border~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs the dungeon cells.~
** Processing line: ~ def render_dungeon~
** Processing line: ~ outputs.solids << [0, 0, grid.w, grid.h] # outputs black background for grid~
** Processing line: ~~
** Processing line: ~ # Sets the alpha value (opacity) for each dungeon cell and calls the cell_border method.~
** Processing line: ~ outputs.borders << state.dungeon.map do |d| # for each element in dungeon collection~
** Processing line: ~ d.alpha += if d.is_visible # if cell is visible~
** Processing line: ~ 255.fdiv(30) # increment opacity (transparency)~
** Processing line: ~ else # if cell is not visible~
** Processing line: ~ 255.fdiv(600) * -1 # decrease opacity~
** Processing line: ~ end~
** Processing line: ~ d.alpha = d.alpha.cap_min_max(0, 255)~
** Processing line: ~ cell_border d.x, d.y, [*blue, d.alpha] # sets blue border using alpha value~
** Processing line: ~ end.reject_nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets definition of a cell border using the parameters~
** Processing line: ~ def cell_border x, y, color = nil~
** Processing line: ~ [left_margin + x * grid_size,~
** Processing line: ~ bottom_margin + y * grid_size,~
** Processing line: ~ grid_size,~
** Processing line: ~ grid_size,~
** Processing line: ~ *color]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the values for the player and outputs it as a label~
** Processing line: ~ def render_player~
** Processing line: ~ outputs.labels << [grid_x(state.x) + 20, # positions "@" text in center of grid square~
** Processing line: ~ grid_y(state.y) + 35,~
** Processing line: ~ "@", # player is represented by a white "@" character~
** Processing line: ~ 1, 1, *white]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def grid_x x~
** Processing line: ~ left_margin + x * grid_size # positions horizontally on grid~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def grid_y y~
** Processing line: ~ bottom_margin + y * grid_size # positions vertically on grid~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Outputs enemies onto the screen.~
** Processing line: ~ def render_enemies~
** Processing line: ~ state.enemies.map do |e| # for each enemy in the collection~
** Processing line: ~ alpha = 255 # set opacity (full transparency)~
** Processing line: ~~
** Processing line: ~ # Outputs an enemy using a label.~
** Processing line: ~ outputs.labels << [~
** Processing line: ~ left_margin + 20 + e.x * grid_size, # positions enemy's "r" text in center of grid square~
** Processing line: ~ bottom_margin + 35 + e.y * grid_size,~
** Processing line: ~ "r", # enemy's text~
** Processing line: ~ 1, 1, *white, alpha]~
** Processing line: ~~
** Processing line: ~ # Creates a red border around an enemy.~
** Processing line: ~ outputs.borders << [grid_x(e.x), grid_y(e.y), grid_size, grid_size, *red]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #White labels are output for the cell coordinates of each element in the dungeon collection.~
** Processing line: ~ def print_cell_coordinates~
** Processing line: ~ return unless state.debug~
** Processing line: ~ state.dungeon.each do |d|~
** Processing line: ~ outputs.labels << [grid_x(d.x) + 2,~
** Processing line: ~ grid_y(d.y) - 2,~
** Processing line: ~ "#{d.x},#{d.y}",~
** Processing line: ~ -2, 0, *white]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Adds new elements into the canvas collection and sets their values.~
** Processing line: ~ def calc_canvas~
** Processing line: ~ return if state.canvas.length > 0 # return if canvas collection has at least one element~
** Processing line: ~ 15.times do |x| # 15 times perform an action~
** Processing line: ~ 15.times do |y|~
** Processing line: ~ state.canvas << state.new_entity(:canvas) do |c| # declare canvas element as new entity~
** Processing line: ~ c.x = x # set position~
** Processing line: ~ c.y = y~
** Processing line: ~ c.border = [left_margin + x * grid_size,~
** Processing line: ~ bottom_margin + y * grid_size,~
** Processing line: ~ grid_size,~
** Processing line: ~ grid_size,~
** Processing line: ~ *white, 30] # sets border definition~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Updates x and y values of the player, and updates player's line of sight~
** Processing line: ~ def input_move~
** Processing line: ~ x, y, x_diff, y_diff = input_target_cell~
** Processing line: ~~
** Processing line: ~ return unless dungeon_cell_exists? x, y # player can't move there if a dungeon cell doesn't exist in that location~
** Processing line: ~ return if enemy_at x, y # player can't move there if there is an enemy in that location~
** Processing line: ~~
** Processing line: ~ state.x += x_diff # increments x by x_diff (so player moves left or right)~
** Processing line: ~ state.y += y_diff # same with y and y_diff ( so player moves up or down)~
** Processing line: ~ update_line_of_sight # updates visible cells~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def enemy_at x, y~
** Processing line: ~ # Finds if coordinates exist in enemies collection and enemy is not dead~
** Processing line: ~ state.enemies.find { |e| e.x == x && e.y == y && !e.is_dead }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #M oves the user based on their keyboard input and sets values for target cell~
** Processing line: ~ def input_target_cell~
** Processing line: ~ if inputs.keyboard.key_down.up # if "up" key is in "down" state~
** Processing line: ~ [state.x, state.y + 1, 0, 1] # user moves up~
** Processing line: ~ elsif inputs.keyboard.key_down.down # if "down" key is pressed~
** Processing line: ~ [state.x, state.y - 1, 0, -1] # user moves down~
** Processing line: ~ elsif inputs.keyboard.key_down.left # if "left" key is pressed~
** Processing line: ~ [state.x - 1, state.y, -1, 0] # user moves left~
** Processing line: ~ elsif inputs.keyboard.key_down.right # if "right" key is pressed~
** Processing line: ~ [state.x + 1, state.y, 1, 0] # user moves right~
** Processing line: ~ else~
** Processing line: ~ nil # otherwise, empty~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Goes through the canvas collection to find if the mouse was clicked inside of the borders of an element.~
** Processing line: ~ def input_click_map~
** Processing line: ~ return unless inputs.mouse.click # return unless the mouse is clicked~
** Processing line: ~ canvas_entry = state.canvas.find do |c| # find element from canvas collection that meets requirements~
** Processing line: ~ inputs.mouse.click.inside_rect? c.border # find border that mouse was clicked inside of~
** Processing line: ~ end~
** Processing line: ~ puts canvas_entry # prints canvas_entry value~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the definition of a label using the parameters.~
** Processing line: ~ def label text, x, y, color = nil~
** Processing line: ~ color ||= white # color is initialized to white~
** Processing line: ~ [x, y, text, 1, 1, *color] # sets label definition~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def green~
** Processing line: ~ [60, 200, 100] # sets color saturation to shade of green~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def blue~
** Processing line: ~ [50, 50, 210] # sets color saturation to shade of blue~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def white~
** Processing line: ~ [255, 255, 255] # sets color saturation to white~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def red~
** Processing line: ~ [230, 80, 80] # sets color saturation to shade of red~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def orange~
** Processing line: ~ [255, 80, 60] # sets color saturation to shade of orange~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def pink~
** Processing line: ~ [255, 0, 200] # sets color saturation to shade of pink~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def gray~
** Processing line: ~ [75, 75, 75] # sets color saturation to shade of gray~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Recolors the border using the parameters.~
** Processing line: ~ def recolor_border border, r, g, b~
** Processing line: ~ border[4] = r~
** Processing line: ~ border[5] = g~
** Processing line: ~ border[6] = b~
** Processing line: ~ border~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns a boolean value.~
** Processing line: ~ def visible? cell~
** Processing line: ~ # finds cell's coordinates inside visible_cells collections to determine if cell is visible~
** Processing line: ~ state.visible_cells.find { |c| c.x == cell.x && c.y == cell.y}~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Exports dungeon by printing dungeon cell coordinates~
** Processing line: ~ def export_dungeon~
** Processing line: ~ state.dungeon.each do |d| # on each element of dungeon collection~
** Processing line: ~ puts "state.dungeon << [#{d.x}, #{d.y}]" # prints cell coordinates~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def distance_to_cell cell~
** Processing line: ~ distance_to state.x, cell.x, state.y, cell.y # calls distance_to method~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def distance_to from_x, x, from_y, y~
** Processing line: ~ (from_x - x).abs + (from_y - y).abs # finds distance between two cells using coordinates~
** 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.state = args.state~
** Processing line: ~ $game.inputs = args.inputs~
** Processing line: ~ $game.outputs = args.outputs~
** Processing line: ~ $game.grid = args.grid~
** Processing line: ~ $game.tick~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* Rpg Tactical - Hexagonal Grid - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Tactical - Hexagonal Grid - 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_tactical/hexagonal_grid/app/main.rb~
** Processing line: ~ class HexagonTileGame~
** Processing line: ~ attr_gtk~
** Processing line: ~~
** Processing line: ~ def defaults~
** Processing line: ~ state.tile_scale = 1.3~
** Processing line: ~ state.tile_size = 80~
** Processing line: ~ state.tile_w = Math.sqrt(3) * state.tile_size.half~
** Processing line: ~ state.tile_h = state.tile_size * 3/4~
** Processing line: ~ state.tiles_x_count = 1280.idiv(state.tile_w) - 1~
** Processing line: ~ state.tiles_y_count = 720.idiv(state.tile_h) - 1~
** Processing line: ~ state.world_width_px = state.tiles_x_count * state.tile_w~
** Processing line: ~ state.world_height_px = state.tiles_y_count * state.tile_h~
** Processing line: ~ state.world_x_offset = (1280 - state.world_width_px).half~
** Processing line: ~ state.world_y_offset = (720 - state.world_height_px).half~
** Processing line: ~ state.tiles ||= state.tiles_x_count.map_with_ys(state.tiles_y_count) do |ordinal_x, ordinal_y|~
** Processing line: ~ {~
** Processing line: ~ ordinal_x: ordinal_x,~
** Processing line: ~ ordinal_y: ordinal_y,~
** Processing line: ~ offset_x: (ordinal_y.even?) ?~
** Processing line: ~ (state.world_x_offset + state.tile_w.half.half) :~
** Processing line: ~ (state.world_x_offset - state.tile_w.half.half),~
** Processing line: ~ offset_y: state.world_y_offset,~
** Processing line: ~ w: state.tile_w,~
** Processing line: ~ h: state.tile_h,~
** Processing line: ~ type: :blank,~
** Processing line: ~ path: "sprites/hexagon-gray.png",~
** Processing line: ~ a: 20~
** Processing line: ~ }.associate do |h|~
** Processing line: ~ h.merge(x: h[:offset_x] + h[:ordinal_x] * h[:w],~
** Processing line: ~ y: h[:offset_y] + h[:ordinal_y] * h[:h]).scale_rect(state.tile_scale)~
** Processing line: ~ end.associate do |h|~
** Processing line: ~ h.merge(center: {~
** Processing line: ~ x: h[:x] + h[:w].half,~
** Processing line: ~ y: h[:y] + h[:h].half~
** Processing line: ~ }, radius: [h[:w].half, h[:h].half].max)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def input~
** Processing line: ~ if inputs.click~
** Processing line: ~ tile = state.tiles.find { |t| inputs.click.point_inside_circle? t[:center], t[:radius] }~
** Processing line: ~ if tile~
** Processing line: ~ tile[:a] = 255~
** Processing line: ~ tile[:path] = "sprites/hexagon-black.png"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ input~
** Processing line: ~ render~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render~
** Processing line: ~ outputs.sprites << state.tiles~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $game = HexagonTileGame.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** 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: ~* Rpg Tactical - Isometric Grid - main.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Tactical - Isometric Grid - 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_tactical/isometric_grid/app/main.rb~
** Processing line: ~ class Isometric~
** Processing line: ~ attr_accessor :grid, :inputs, :state, :outputs~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ defaults~
** Processing line: ~ render~
** Processing line: ~ calc~
** Processing line: ~ process_inputs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults~
** Processing line: ~ state.quantity ||= 6 #Size of grid~
** Processing line: ~ state.tileSize ||= [262 / 2, 194 / 2] #width and heigth of orange tiles~
** Processing line: ~ state.tileGrid ||= [] #Holds ordering of tiles~
** Processing line: ~ state.currentSpriteLocation ||= -1 #Current Sprite hovering location~
** Processing line: ~ state.tileCords ||= [] #Physical, rendering cordinates~
** Processing line: ~ state.initCords ||= [640 - (state.quantity / 2 * state.tileSize[0]), 330] #Location of tile (0, 0)~
** Processing line: ~ state.sideSize ||= [state.tileSize[0] / 2, 242 / 2] #Purple & green cube face size~
** Processing line: ~ state.mode ||= :delete #Switches between :delete and :insert~
** Processing line: ~ state.spriteSelection ||= [['river', 0, 0, 262 / 2, 194 / 2],~
** Processing line: ~ ['mountain', 0, 0, 262 / 2, 245 / 2],~
** Processing line: ~ ['ocean', 0, 0, 262 / 2, 194 / 2]] #Storage for sprite information~
** Processing line: ~ #['name', deltaX, deltaY, sizeW, sizeH]~
** Processing line: ~ #^delta refers to distance from tile cords~
** Processing line: ~~
** Processing line: ~ #Orders tiles based on tile placement and fancy math. Very left: 0,0. Very bottom: quantity-1, 0, etc~
** Processing line: ~ if state.tileGrid == []~
** Processing line: ~ tempX = 0~
** Processing line: ~ tempY = 0~
** Processing line: ~ tempLeft = false~
** Processing line: ~ tempRight = false~
** Processing line: ~ count = 0~
** Processing line: ~ (state.quantity * state.quantity).times do~
** Processing line: ~ if tempY == 0~
** Processing line: ~ tempLeft = true~
** Processing line: ~ end~
** Processing line: ~ if tempX == (state.quantity - 1)~
** Processing line: ~ tempRight = true~
** Processing line: ~ end~
** Processing line: ~ state.tileGrid.push([tempX, tempY, true, tempLeft, tempRight, count])~
** Processing line: ~ #orderX, orderY, exists?, leftSide, rightSide, order~
** Processing line: ~ tempX += 1~
** Processing line: ~ if tempX == state.quantity~
** Processing line: ~ tempX = 0~
** Processing line: ~ tempY += 1~
** Processing line: ~ end~
** Processing line: ~ tempLeft = false~
** Processing line: ~ tempRight = false~
** Processing line: ~ count += 1~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ #Calculates physical cordinates for tiles~
** Processing line: ~ if state.tileCords == []~
** Processing line: ~ state.tileCords = state.tileGrid.map do~
** Processing line: ~ |val|~
** Processing line: ~ x = (state.initCords[0]) + ((val[0] + val[1]) * state.tileSize[0] / 2)~
** Processing line: ~ y = (state.initCords[1]) + (-1 * val[0] * state.tileSize[1] / 2) + (val[1] * state.tileSize[1] / 2)~
** Processing line: ~ [x, y, val[2], val[3], val[4], val[5], -1] #-1 represents sprite on top of tile. -1 for now~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render~
** Processing line: ~ renderBackground~
** Processing line: ~ renderLeft~
** Processing line: ~ renderRight~
** Processing line: ~ renderTiles~
** Processing line: ~ renderObjects~
** Processing line: ~ renderLabels~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def renderBackground~
** Processing line: ~ outputs.solids << [0, 0, 1280, 720, 0, 0, 0] #Background color~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def renderLeft~
** Processing line: ~ #Shows the pink left cube face~
** Processing line: ~ outputs.sprites << state.tileCords.map do~
** Processing line: ~ |val|~
** Processing line: ~ if val[2] == true && val[3] == true #Checks if the tile exists and right face needs to be rendered~
** Processing line: ~ [val[0], val[1] + (state.tileSize[1] / 2) - state.sideSize[1], state.sideSize[0],~
** Processing line: ~ state.sideSize[1], 'sprites/leftSide.png']~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def renderRight~
** Processing line: ~ #Shows the green right cube face~
** Processing line: ~ outputs.sprites << state.tileCords.map do~
** Processing line: ~ |val|~
** Processing line: ~ if val[2] == true && val[4] == true #Checks if it exists & checks if right face needs to be rendered~
** Processing line: ~ [val[0] + state.tileSize[0] / 2, val[1] + (state.tileSize[1] / 2) - state.sideSize[1], state.sideSize[0],~
** Processing line: ~ state.sideSize[1], 'sprites/rightSide.png']~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def renderTiles~
** Processing line: ~ #Shows the tile itself. Important that it's rendered after the two above!~
** Processing line: ~ outputs.sprites << state.tileCords.map do~
** Processing line: ~ |val|~
** Processing line: ~ if val[2] == true #Chcekcs if tile needs to be rendered~
** Processing line: ~ if val[5] == state.currentSpriteLocation~
** Processing line: ~ [val[0], val[1], state.tileSize[0], state.tileSize[1], 'sprites/selectedTile.png']~
** Processing line: ~ else~
** Processing line: ~ [val[0], val[1], state.tileSize[0], state.tileSize[1], 'sprites/tile.png']~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def renderObjects~
** Processing line: ~ #Renders the sprites on top of the tiles. Order of rendering: top corner to right corner and cascade down until left corner~
** Processing line: ~ #to bottom corner.~
** Processing line: ~ a = (state.quantity * state.quantity) - state.quantity~
** Processing line: ~ iter = 0~
** Processing line: ~ loop do~
** Processing line: ~ if state.tileCords[a][2] == true && state.tileCords[a][6] != -1~
** Processing line: ~ outputs.sprites << [state.tileCords[a][0] + state.spriteSelection[state.tileCords[a][6]][1],~
** Processing line: ~ state.tileCords[a][1] + state.spriteSelection[state.tileCords[a][6]][2],~
** Processing line: ~ state.spriteSelection[state.tileCords[a][6]][3], state.spriteSelection[state.tileCords[a][6]][4],~
** Processing line: ~ 'sprites/' + state.spriteSelection[state.tileCords[a][6]][0] + '.png']~
** Processing line: ~ end~
** Processing line: ~ iter += 1~
** Processing line: ~ a += 1~
** Processing line: ~ a -= state.quantity * 2 if iter == state.quantity~
** Processing line: ~ iter = 0 if iter == state.quantity~
** Processing line: ~ break if a < 0~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def renderLabels~
** Processing line: ~ #Labels~
** Processing line: ~ outputs.labels << [50, 680, 'Click to delete!', 5, 0, 255, 255, 255, 255] if state.mode == :delete~
** Processing line: ~ outputs.labels << [50, 640, 'Press \'i\' for insert mode!', 5, 0, 255, 255, 255, 255] if state.mode == :delete~
** Processing line: ~ outputs.labels << [50, 680, 'Click to insert!', 5, 0, 255, 255, 255, 255] if state.mode == :insert~
** Processing line: ~ outputs.labels << [50, 640, 'Press \'d\' for delete mode!', 5, 0, 255, 255, 255, 255] if state.mode == :insert~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc~
** Processing line: ~ calcCurrentHover~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calcCurrentHover~
** Processing line: ~ #This determines what tile the mouse is hovering (or last hovering) over~
** Processing line: ~ x = inputs.mouse.position.x~
** Processing line: ~ y = inputs.mouse.position.y~
** Processing line: ~ m = (state.tileSize[1] / state.tileSize[0]) #slope~
** Processing line: ~ state.tileCords.map do~
** Processing line: ~ |val|~
** Processing line: ~ #Conditions that makes runtime faster. Checks if the mouse click was between tile dimensions (rectangle collision)~
** Processing line: ~ next unless val[0] < x && x < val[0] + state.tileSize[0]~
** Processing line: ~ next unless val[1] < y && y < val[1] + state.tileSize[1]~
** Processing line: ~ next unless val[2] == true~
** Processing line: ~ tempBool = false~
** Processing line: ~ if x == val[0] + (state.tileSize[0] / 2)~
** Processing line: ~ #The height of a diamond is the height of the diamond, so if x equals that exact point, it must be inside the diamond~
** Processing line: ~ tempBool = true~
** Processing line: ~ elsif x < state.tileSize[0] / 2 + val[0]~
** Processing line: ~ #Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the left half of diamond~
** Processing line: ~ tempY1 = (m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)~
** Processing line: ~ tempY2 = (-1 * m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)~
** Processing line: ~ #Checks to see if the mouse click y value is between those temp y values~
** Processing line: ~ tempBool = true if y < tempY1 && y > tempY2~
** Processing line: ~ elsif x > state.tileSize[0] / 2 + val[0]~
** Processing line: ~ #Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the right half of diamond~
** Processing line: ~ tempY1 = (m * (x - val[0] - (state.tileSize[0] / 2))) + val[1]~
** Processing line: ~ tempY2 = (-1 * m * (x - val[0] - (state.tileSize[0] / 2))) + val[1] + state.tileSize[1]~
** Processing line: ~ #Checks to see if the mouse click y value is between those temp y values~
** Processing line: ~ tempBool = true if y > tempY1 && y < tempY2~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if tempBool == true~
** Processing line: ~ state.currentSpriteLocation = val[5] #Current sprite location set to the order value~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs~
** Processing line: ~ #Makes development much faster and easier~
** Processing line: ~ if inputs.keyboard.key_up.r~
** Processing line: ~ $dragon.reset~
** Processing line: ~ end~
** Processing line: ~ checkTileSelected~
** Processing line: ~ switchModes~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def checkTileSelected~
** Processing line: ~ if inputs.mouse.down~
** Processing line: ~ x = inputs.mouse.down.point.x~
** Processing line: ~ y = inputs.mouse.down.point.y~
** Processing line: ~ m = (state.tileSize[1] / state.tileSize[0]) #slope~
** Processing line: ~ state.tileCords.map do~
** Processing line: ~ |val|~
** Processing line: ~ #Conditions that makes runtime faster. Checks if the mouse click was between tile dimensions (rectangle collision)~
** Processing line: ~ next unless val[0] < x && x < val[0] + state.tileSize[0]~
** Processing line: ~ next unless val[1] < y && y < val[1] + state.tileSize[1]~
** Processing line: ~ next unless val[2] == true~
** Processing line: ~ tempBool = false~
** Processing line: ~ if x == val[0] + (state.tileSize[0] / 2)~
** Processing line: ~ #The height of a diamond is the height of the diamond, so if x equals that exact point, it must be inside the diamond~
** Processing line: ~ tempBool = true~
** Processing line: ~ elsif x < state.tileSize[0] / 2 + val[0]~
** Processing line: ~ #Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the left half of diamond~
** Processing line: ~ tempY1 = (m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)~
** Processing line: ~ tempY2 = (-1 * m * (x - val[0])) + val[1] + (state.tileSize[1] / 2)~
** Processing line: ~ #Checks to see if the mouse click y value is between those temp y values~
** Processing line: ~ tempBool = true if y < tempY1 && y > tempY2~
** Processing line: ~ elsif x > state.tileSize[0] / 2 + val[0]~
** Processing line: ~ #Uses y = (m) * (x - x1) + y1 to determine the y values for the two diamond lines on the right half of diamond~
** Processing line: ~ tempY1 = (m * (x - val[0] - (state.tileSize[0] / 2))) + val[1]~
** Processing line: ~ tempY2 = (-1 * m * (x - val[0] - (state.tileSize[0] / 2))) + val[1] + state.tileSize[1]~
** Processing line: ~ #Checks to see if the mouse click y value is between those temp y values~
** Processing line: ~ tempBool = true if y > tempY1 && y < tempY2~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if tempBool == true~
** Processing line: ~ if state.mode == :delete~
** Processing line: ~ val[2] = false~
** Processing line: ~ state.tileGrid[val[5]][2] = false #Unnecessary because never used again but eh, I like consistency~
** Processing line: ~ state.tileCords[val[5]][2] = false #Ensures that the tile isn't rendered~
** Processing line: ~ unless state.tileGrid[val[5]][0] == 0 #If tile is the left most tile in the row, right doesn't get rendered~
** Processing line: ~ state.tileGrid[val[5] - 1][4] = true #Why the order value is amazing~
** Processing line: ~ state.tileCords[val[5] - 1][4] = true~
** Processing line: ~ end~
** Processing line: ~ unless state.tileGrid[val[5]][1] == state.quantity - 1 #Same but left side~
** Processing line: ~ state.tileGrid[val[5] + state.quantity][3] = true~
** Processing line: ~ state.tileCords[val[5] + state.quantity][3] = true~
** Processing line: ~ end~
** Processing line: ~ elsif state.mode == :insert~
** Processing line: ~ #adds the current sprite value selected to tileCords. (changes from the -1 earlier)~
** Processing line: ~ val[6] = rand(state.spriteSelection.length)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def switchModes~
** Processing line: ~ #Switches between insert and delete modes~
** Processing line: ~ if inputs.keyboard.key_up.i && state.mode == :delete~
** Processing line: ~ state.mode = :insert~
** Processing line: ~ inputs.keyboard.clear~
** Processing line: ~ elsif inputs.keyboard.key_up.d && state.mode == :insert~
** Processing line: ~ state.mode = :delete~
** Processing line: ~ inputs.keyboard.clear~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ $isometric = Isometric.new~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ $isometric.grid = args.grid~
** Processing line: ~ $isometric.inputs = args.inputs~
** Processing line: ~ $isometric.state = args.state~
** Processing line: ~ $isometric.outputs = args.outputs~
** Processing line: ~ $isometric.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~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~Rpg Topdown - Topdown 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_rpg_topdown/topdown_starting_point/app/main.rb~
** Processing line: ~ =begin~
** Processing line: ~~
** Processing line: ~ APIs listing that haven't been encountered in previous sample apps:~
** Processing line: ~~
** Processing line: ~ - reverse: Returns a new string with the characters from original string in reverse order.~
** Processing line: ~ For example, the command~
** Processing line: ~ "dragonruby".reverse~
** Processing line: ~ would return the string~
** Processing line: ~ "yburnogard".~
** Processing line: ~ Reverse is not only limited to strings, but can be applied to arrays and other collections.~
** Processing line: ~~
** Processing line: ~ Reminders:~
** Processing line: ~~
** Processing line: ~ - ARRAY#intersect_rect?: Returns true or false depending on if two rectangles intersect.~
** Processing line: ~~
** Processing line: ~ - args.outputs.labels: An array. The values generate a label.~
** Processing line: ~ The parameters are [X, Y, TEXT, SIZE, ALIGNMENT, RED, GREEN, BLUE, ALPHA, FONT STYLE]~
** Processing line: ~ For more information about labels, go to mygame/documentation/02-labels.md.~
** Processing line: ~~
** Processing line: ~ =end~
** Processing line: ~~
** Processing line: ~ # This code shows a maze and uses input from the keyboard to move the user around the screen.~
** Processing line: ~ # The objective is to reach the goal.~
** Processing line: ~~
** Processing line: ~ # Sets values of tile size and player's movement speed~
** Processing line: ~ # Also creates tile or box for player and generates map~
** Processing line: ~ def tick args~
** Processing line: ~ args.state.tile_size = 80~
** Processing line: ~ args.state.player_speed = 4~
** Processing line: ~ args.state.player ||= tile(args, 7, 3, 0, 128, 180)~
** Processing line: ~ generate_map args~
** Processing line: ~~
** Processing line: ~ # Adds walls, goal, and player to args.outputs.solids so they appear on screen~
** Processing line: ~ args.outputs.solids << args.state.walls~
** Processing line: ~ args.outputs.solids << args.state.goal~
** Processing line: ~ args.outputs.solids << args.state.player~
** Processing line: ~~
** Processing line: ~ # If player's box intersects with goal, a label is output onto the screen~
** Processing line: ~ if args.state.player.intersect_rect? args.state.goal~
** Processing line: ~ args.outputs.labels << [30, 720 - 30, "You're a wizard Harry!!"] # 30 pixels lower than top of screen~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ move_player args, -1, 0 if args.inputs.keyboard.left # x position decreases by 1 if left key is pressed~
** Processing line: ~ move_player args, 1, 0 if args.inputs.keyboard.right # x position increases by 1 if right key is pressed~
** Processing line: ~ move_player args, 0, 1 if args.inputs.keyboard.up # y position increases by 1 if up is pressed~
** Processing line: ~ move_player args, 0, -1 if args.inputs.keyboard.down # y position decreases by 1 if down is pressed~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets position, size, and color of the tile~
** Processing line: ~ def tile args, x, y, *color~
** Processing line: ~ [x * args.state.tile_size, # sets definition for array using method parameters~
** Processing line: ~ y * args.state.tile_size, # multiplying by tile_size sets x and y to correct position using pixel values~
** Processing line: ~ args.state.tile_size,~
** Processing line: ~ args.state.tile_size,~
** Processing line: ~ *color]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Creates map by adding tiles to the wall, as well as a goal (that the player needs to reach)~
** Processing line: ~ def generate_map args~
** Processing line: ~ return if args.state.area~
** Processing line: ~~
** Processing line: ~ # Creates the area of the map. There are 9 rows running horizontally across the screen~
** Processing line: ~ # and 16 columns running vertically on the screen. Any spot with a "1" is not~
** Processing line: ~ # open for the player to move into (and is green), and any spot with a "0" is available~
** Processing line: ~ # for the player to move in.~
** Processing line: ~ args.state.area = [~
** Processing line: ~ [1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,],~
** Processing line: ~ [1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,], # the "2" represents the goal~
** Processing line: ~ [1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,],~
** Processing line: ~ [1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,],~
** Processing line: ~ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,],~
** Processing line: ~ [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,],~
** Processing line: ~ [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,],~
** Processing line: ~ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,],~
** Processing line: ~ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ],~
** Processing line: ~ ].reverse # reverses the order of the area collection~
** Processing line: ~~
** Processing line: ~ # By reversing the order, the way that the area appears above is how it appears~
** Processing line: ~ # on the screen in the game. If we did not reverse, the map would appear inverted.~
** Processing line: ~~
** Processing line: ~ #The wall starts off with no tiles.~
** Processing line: ~ args.state.walls = []~
** Processing line: ~~
** Processing line: ~ # If v is 1, a green tile is added to args.state.walls.~
** Processing line: ~ # If v is 2, a black tile is created as the goal.~
** Processing line: ~ args.state.area.map_2d do |y, x, v|~
** Processing line: ~ if v == 1~
** Processing line: ~ args.state.walls << tile(args, x, y, 0, 255, 0) # green tile~
** Processing line: ~ elsif v == 2 # notice there is only one "2" above because there is only one single goal~
** Processing line: ~ args.state.goal = tile(args, x, y, 0, 0, 0) # black tile~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Allows the player to move their box around the screen~
** Processing line: ~ def move_player args, *vector~
** Processing line: ~ box = args.state.player.shift_rect(vector) # box is able to move at an angle~
** Processing line: ~~
** Processing line: ~ # If the player's box hits a wall, it is not able to move further in that direction~
** Processing line: ~ return if args.state.walls~
** Processing line: ~ .any_intersect_rect?(box)~
** Processing line: ~~
** Processing line: ~ # Player's box is able to move at angles (not just the four general directions) fast~
** Processing line: ~ args.state.player =~
** Processing line: ~ args.state.player~
** Processing line: ~ .shift_rect(vector.x * args.state.player_speed, # if we don't multiply by speed, then~
** Processing line: ~ vector.y * args.state.player_speed) # the box will move extremely slow~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* args.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~args.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/args.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # args.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ # This class is the one you'll interact with the most. It's~
** Processing line: ~ # constructed by the DragonRuby Runtime and is provided to you on~
** Processing line: ~ # each tick.~
** Processing line: ~ class Args~
** Processing line: ~ include ArgsDeprecated~
** Processing line: ~ include Serialize~
** Processing line: ~~
** Processing line: ~ # Contains information related to input devices and input events.~
** Processing line: ~ #~
** Processing line: ~ # @return [Inputs]~
** Processing line: ~ attr_accessor :inputs~
** Processing line: ~~
** Processing line: ~ # Contains the means to interact with output devices such as the screen.~
** Processing line: ~ #~
** Processing line: ~ # @return [Outputs]~
** Processing line: ~ attr_accessor :outputs~
** Processing line: ~~
** Processing line: ~ # Contains display size information to assist in positioning things on the screen.~
** Processing line: ~ #~
** Processing line: ~ # @return [Grid]~
** Processing line: ~ attr_accessor :grid~
** Processing line: ~~
** Processing line: ~ # Provides access to game play recording facilities within Game Toolkit.~
** Processing line: ~ #~
** Processing line: ~ # @return [Recording]~
** Processing line: ~ attr_accessor :recording~
** Processing line: ~~
** Processing line: ~ # Gives you access to geometry related functions.~
** Processing line: ~ #~
** Processing line: ~ # @return [Geometry]~
** Processing line: ~ attr_accessor :geometry~
** Processing line: ~~
** Processing line: ~ # This is where you'll put state associated with your video game.~
** Processing line: ~ #~
** Processing line: ~ # @return [OpenEntity]~
** Processing line: ~ attr_accessor :state~
** Processing line: ~~
** Processing line: ~ # Gives you access to the top level DragonRuby runtime.~
** Processing line: ~ #~
** Processing line: ~ # @return [Runtime]~
** Processing line: ~ attr_accessor :runtime~
** Processing line: ~ alias_method :gtk, :runtime~
** Processing line: ~~
** Processing line: ~ attr_accessor :passes~
** Processing line: ~~
** Processing line: ~ attr_accessor :wizards~
** Processing line: ~~
** Processing line: ~ def initialize runtime, recording~
** Processing line: ~ @inputs = Inputs.new~
** Processing line: ~ @outputs = Outputs.new args: self~
** Processing line: ~ @passes = []~
** Processing line: ~ @state = OpenEntity.new~
** Processing line: ~ @state.tick_count = -1~
** Processing line: ~ @runtime = runtime~
** Processing line: ~ @recording = recording~
** Processing line: ~ @grid = Grid.new runtime~
** Processing line: ~ @render_targets = {}~
** Processing line: ~ @all_tests = []~
** Processing line: ~ @geometry = GTK::Geometry~
** Processing line: ~ @wizards = Wizards.new~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # The number of ticks since the start of the game.~
** Processing line: ~ #~
** Processing line: ~ # @return [Integer]~
** Processing line: ~ def tick_count~
** Processing line: ~ @state.tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick_count= value~
** Processing line: ~ @state.tick_count = value~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ {~
** Processing line: ~ state: state.as_hash,~
** Processing line: ~ inputs: inputs.serialize,~
** Processing line: ~ passes: passes.serialize,~
** Processing line: ~ outputs: outputs.serialize,~
** Processing line: ~ grid: grid.serialize~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def destructure~
** Processing line: ~ [grid, inputs, state, outputs, runtime, passes]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def clear_render_targets~
** Processing line: ~ render_targets_clear~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_targets_clear~
** Processing line: ~ @render_targets = {}~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_targets~
** Processing line: ~ @render_targets~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_target name~
** Processing line: ~ name = name.to_s~
** Processing line: ~ if !@render_targets[name]~
** Processing line: ~ @render_targets[name] = Outputs.new(args: self, target: name, background_color_override: [255, 255, 255, 0])~
** Processing line: ~ @passes << @render_targets[name]~
** Processing line: ~ end~
** Processing line: ~ @render_targets[name]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def solids~
** Processing line: ~ @outputs.solids~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def static_solids~
** Processing line: ~ @outputs.static_solids~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def sprites~
** Processing line: ~ @outputs.sprites~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def static_sprites~
** Processing line: ~ @outputs.static_sprites~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def labels~
** Processing line: ~ @outputs.labels~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def static_labels~
** Processing line: ~ @outputs.static_labels~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def lines~
** Processing line: ~ @outputs.lines~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def static_lines~
** Processing line: ~ @outputs.static_lines~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def borders~
** Processing line: ~ @outputs.borders~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def static_borders~
** Processing line: ~ @outputs.static_borders~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def primitives~
** Processing line: ~ @outputs.primitives~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def static_primitives~
** Processing line: ~ @outputs.static_primitives~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def keyboard~
** Processing line: ~ @inputs.keyboard~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def click~
** Processing line: ~ return nil unless @inputs.mouse.click~
** Processing line: ~~
** Processing line: ~ @inputs.mouse.click.point~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def click_at~
** Processing line: ~ return nil unless @inputs.mouse.click~
** Processing line: ~~
** Processing line: ~ @inputs.mouse.click.created_at~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def mouse~
** Processing line: ~ @inputs.mouse~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @see Inputs#controller_one~
** Processing line: ~ # @return (see Inputs#controller_one)~
** Processing line: ~ def controller_one~
** Processing line: ~ @inputs.controller_one~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @see Inputs#controller_two~
** Processing line: ~ # @return (see Inputs#controller_two)~
** Processing line: ~ def controller_two~
** Processing line: ~ @inputs.controller_two~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* assert.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~assert.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/assert.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # assert.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ =begin~
** Processing line: ~ This is a tiny assertion api for the unit testing portion of Game Toolkit.~
** Processing line: ~~
** Processing line: ~ @example~
** Processing line: ~~
** Processing line: ~ 1. Create a file called tests.rb under mygame.~
** Processing line: ~ 2. Any method that begins with the word test_ will be considered a test.~
** Processing line: ~~
** Processing line: ~ def test_this_works args, assert~
** Processing line: ~ assert.equal! 1, 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ 3. To run a test, save the file while the game is running.~
** Processing line: ~~
** Processing line: ~ @example~
** Processing line: ~~
** Processing line: ~ To add an assertion open up this class and write:~
** Processing line: ~~
** Processing line: ~ class Assert~
** Processing line: ~ def custom_assertion actual, expected, message = nil~
** Processing line: ~ # this tell Game Toolkit that an assertion was performed (so that the test isn't marked inconclusive).~
** Processing line: ~ @assertion_performed = true~
** Processing line: ~~
** Processing line: ~ # perform your custom logic here and rais an exception to denote a failure.~
** Processing line: ~~
** Processing line: ~ raise "Some Error. #{message}."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ =end~
** Processing line: ~ class Assert~
** Processing line: ~ attr :assertion_performed~
** Processing line: ~~
** Processing line: ~ =begin~
** Processing line: ~ Us this if you are throwing your own exceptions and you want to mark the tests as ran (so that it wont be marked as inconclusive).~
** Processing line: ~ =end~
** Processing line: ~ def ok!~
** Processing line: ~ @assertion_performed = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ =begin~
** Processing line: ~ Assert if a value is a thruthy value. All assert method take an optional final parameter that is the message to display to the user.~
** Processing line: ~~
** Processing line: ~ @example~
** Processing line: ~~
** Processing line: ~ def test_does_this_work args, assert~
** Processing line: ~ some_result = Person.new~
** Processing line: ~ assert.true! some_result~
** Processing line: ~ # OR~
** Processing line: ~ assert.true! some_result, "Person was not created."~
** Processing line: ~ end~
** Processing line: ~ =end~
** Processing line: ~ def true! value, message = nil~
** Processing line: ~ @assertion_performed = true~
** Processing line: ~ if !value~
** Processing line: ~ message = "#{value} was not truthy.\n#{message}"~
** Processing line: ~ raise "#{message}"~
** Processing line: ~ end~
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ =begin~
** Processing line: ~ Assert if a value is a falsey value.~
** Processing line: ~~
** Processing line: ~ @example~
** Processing line: ~~
** Processing line: ~ def test_does_this_work args, assert~
** Processing line: ~ some_result = nil~
** Processing line: ~ assert.false! some_result~
** Processing line: ~ end~
** Processing line: ~ =end~
** Processing line: ~ def false! value, message = nil~
** Processing line: ~ @assertion_performed = true~
** Processing line: ~ if value~
** Processing line: ~ message = "#{value} was not falsey.\n#{message}"~
** Processing line: ~ raise message~
** Processing line: ~ end~
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ =begin~
** Processing line: ~ Assert if two values are equal.~
** Processing line: ~~
** Processing line: ~ @example~
** Processing line: ~~
** Processing line: ~ def test_does_this_work args, assert~
** Processing line: ~ a = 1~
** Processing line: ~ b = 1~
** Processing line: ~ assert.equal! a, b~
** Processing line: ~ end~
** Processing line: ~ =end~
** Processing line: ~ def equal! actual, expected, message = nil~
** Processing line: ~ @assertion_performed = true~
** Processing line: ~ if actual != expected~
** Processing line: ~ actual_string = "#{actual}#{actual.nil? ? " (nil) " : " " }".strip~
** Processing line: ~ message = "actual:\n#{actual_string} did not equal\nexpected:\n#{expected}.\n#{message}"~
** Processing line: ~ raise message~
** Processing line: ~ end~
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ =begin~
** Processing line: ~ Assert if a value is explicitly nil (not false).~
** Processing line: ~~
** Processing line: ~ @example~
** Processing line: ~~
** Processing line: ~ def test_does_this_work args, assert~
** Processing line: ~ a = nil~
** Processing line: ~ b = false~
** Processing line: ~ assert.nil! a # this will pass~
** Processing line: ~ assert.nil! b # this will throw an exception.~
** Processing line: ~ end~
** Processing line: ~ =end~
** Processing line: ~ def nil! value, message = nil~
** Processing line: ~ @assertion_performed = true~
** Processing line: ~ if !value.nil?~
** Processing line: ~ message = "#{value} was supposed to be nil, but wasn't.\n#{message}"~
** Processing line: ~ raise message~
** Processing line: ~ end~
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* attr_gtk.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~attr_gtk.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/attr_gtk.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # attr_gtk.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ # @private~
** Processing line: ~ module AttrGTK~
** Processing line: ~ attr_accessor :args~
** Processing line: ~~
** Processing line: ~ def keyboard~
** Processing line: ~ args.inputs.keyboard~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def grid~
** Processing line: ~ args.grid~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def state~
** Processing line: ~ args.state~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs~
** Processing line: ~ args.inputs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def outputs~
** Processing line: ~ args.outputs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def gtk~
** Processing line: ~ args.gtk~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def passes~
** Processing line: ~ args.passes~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def geometry~
** Processing line: ~ args.geometry~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* attr_sprite.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~attr_sprite.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/attr_sprite.rb~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # attr_sprite.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ # @private~
** Processing line: ~ module AttrRect~
** Processing line: ~ def left~
** Processing line: ~ @x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def right~
** Processing line: ~ @x + @w~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def bottom~
** Processing line: ~ @y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def top~
** Processing line: ~ @y + @h~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ module AttrSprite~
** Processing line: ~ include AttrRect~
** Processing line: ~ include GTK::Geometry~
** Processing line: ~~
** Processing line: ~ attr_accessor :x, :y, :w, :h, :path, :angle, :a, :r, :g, :b, :tile_x,~
** Processing line: ~ :tile_y, :tile_w, :tile_h, :flip_horizontally,~
** Processing line: ~ :flip_vertically, :angle_anchor_x, :angle_anchor_y, :id,~
** Processing line: ~ :source_x, :source_y, :source_w, :source_h~
** Processing line: ~~
** Processing line: ~ def primitive_marker~
** Processing line: ~ :sprite~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def sprite~
** Processing line: ~ self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def x1~
** Processing line: ~ @x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def x1= value~
** Processing line: ~ @x = value~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def y1~
** Processing line: ~ @y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def y1= value~
** Processing line: ~ @y = value~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* console.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~console.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/console.rb~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # console.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ # Contributors outside of DragonRuby who also hold Copyright:~
** Processing line: ~ # - Kevin Fischer: https://github.com/kfischer-okarin~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Console~
** Processing line: ~ attr_accessor :show_reason, :log, :logo, :background_color,~
** Processing line: ~ :text_color, :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: ~ :suppress_left_arrow_behavior, :command_set_at,~
** Processing line: ~ :toast_ids, :bottom,~
** Processing line: ~ :font_style, :menu~
** Processing line: ~~
** Processing line: ~ def initialize~
** Processing line: ~ @font_style = FontStyle.new(font: 'font.ttf', size_enum: -1, line_height: 1.1)~
** Processing line: ~ @menu = Menu.new self~
** Processing line: ~ @disabled = false~
** Processing line: ~ @log_offset = 0~
** Processing line: ~ @visible = false~
** Processing line: ~ @toast_ids = []~
** Processing line: ~ @archived_log = []~
** Processing line: ~ @log = [ 'Console ready.' ]~
** Processing line: ~ @max_log_lines = 1000 # I guess...?~
** Processing line: ~ @max_history = 1000 # I guess...?~
** Processing line: ~ @log_invocation_count = 0~
** Processing line: ~ @command_history = []~
** 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: ~ @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: ~ @animation_duration = 1.seconds~
** Processing line: ~ @shown_at = -1~
** Processing line: ~ load_history~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def console_text_width~
** Processing line: ~ @console_text_width ||= ($gtk.logical_width - 20).idiv(font_style.letter_size.x)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def save_history~
** Processing line: ~ $gtk.ffi_file.storefile(@history_fname, @command_history.reverse.join("\n"))~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def load_history~
** Processing line: ~ @command_history.clear~
** Processing line: ~ str = $gtk.ffi_file.loadfile(@history_fname)~
** Processing line: ~ return if str.nil? # no history to load.~
** Processing line: ~~
** Processing line: ~ str.chomp!("\n") # Don't let endlines at the end cause extra blank line.~
** Processing line: ~ str.chomp!("\r")~
** Processing line: ~ str.each_line { |s|~
** Processing line: ~ s.chomp!("\n")~
** Processing line: ~ s.chomp!("\r")~
** Processing line: ~ if s.length > 0~
** Processing line: ~ @command_history.unshift s~
** Processing line: ~ break if @command_history.length >= @max_history~
** Processing line: ~ end~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ @command_history.uniq!~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def disable~
** Processing line: ~ @disabled = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def enable~
** Processing line: ~ @disabled = false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def addsprite obj~
** Processing line: ~ @log_invocation_count += 1~
** Processing line: ~ obj[:id] ||= "id_#{obj[:path]}_#{Time.now.to_i}".to_sym~
** Processing line: ~~
** Processing line: ~ if @last_line_log_index &&~
** Processing line: ~ @last_sprite_line.is_a?(Hash) &&~
** Processing line: ~ @last_sprite_line[:id] == obj[:id]~
** Processing line: ~~
** Processing line: ~ @log[@last_line_log_index] = obj~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ @log << obj~
** Processing line: ~ @last_line_log_index = @log.length - 1~
** Processing line: ~ @last_sprite_line = obj~
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def add_primitive obj~
** Processing line: ~ if obj.is_a? Hash~
** Processing line: ~ addsprite obj~
** Processing line: ~ else~
** Processing line: ~ addtext obj~
** Processing line: ~ end~
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def addtext obj~
** Processing line: ~ @last_log_lines_count ||= 1~
** Processing line: ~ @log_invocation_count += 1~
** Processing line: ~~
** Processing line: ~ str = obj.to_s~
** Processing line: ~~
** 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: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if log_lines == @last_log_lines~
** 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~
** Processing line: ~ @log = @log[0..-(@log.length - log_lines.length)] + log_lines[0..-2] + [new_log_line_with_count]~
** Processing line: ~ else~
** Processing line: ~ @log = @log[0..-2] + [new_log_line_with_count]~
** Processing line: ~ end~
** Processing line: ~ return~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ log_lines.each do |l|~
** Processing line: ~ @log.shift if @log.length > @max_log_lines~
** Processing line: ~ @log << l~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ @last_log_lines_count = 1~
** Processing line: ~ @last_log_lines = log_lines~
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def ready?~
** Processing line: ~ visible? && @toggled_at.elapsed?(@animation_duration, Kernel.global_tick_count)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def hidden?~
** Processing line: ~ !@visible~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def visible?~
** Processing line: ~ @visible~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def show reason = nil~
** Processing line: ~ @shown_at = Kernel.global_tick_count~
** Processing line: ~ @show_reason = reason~
** Processing line: ~ toggle if hidden?~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def hide~
** Processing line: ~ if visible?~
** Processing line: ~ toggle~
** Processing line: ~ @archived_log += @log~
** Processing line: ~ if @archived_log.length > @max_log_lines~
** Processing line: ~ @archived_log = @archived_log.drop(@archived_log.length - @max_log_lines)~
** Processing line: ~ end~
** Processing line: ~ @log.clear~
** Processing line: ~ @show_reason = nil~
** Processing line: ~ clear_toast~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def close~
** Processing line: ~ hide~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def clear_toast~
** Processing line: ~ @toasted_at = nil~
** Processing line: ~ @toast_duration = 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def toggle~
** Processing line: ~ @visible = !@visible~
** Processing line: ~ @toggled_at = Kernel.global_tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def currently_toasting?~
** Processing line: ~ return false if hidden?~
** Processing line: ~ return false unless @show_reason == :toast~
** Processing line: ~ return false unless @toasted_at~
** Processing line: ~ return false if @toasted_at.elapsed?(5.seconds, Kernel.global_tick_count)~
** Processing line: ~ return true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def toast_extended id = nil, duration = nil, *messages~
** Processing line: ~ if !id.is_a?(Symbol)~
** Processing line: ~ raise <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ args.gtk.console.toast has the following signature:~
** Processing line: ~~
** Processing line: ~ def toast id, *messages~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ The id property uniquely defines the message and must be~
** Processing line: ~ a symbol.~
** Processing line: ~~
** Processing line: ~ After that, you can provide all the objects you want to~
** Processing line: ~ look at.~
** Processing line: ~~
** Processing line: ~ Example:~
** Processing line: ~~
** Processing line: ~ args.gtk.console.toast :say_hello,~
** Processing line: ~ \"Hello world.\",~
** Processing line: ~ args.state.tick_count~
** Processing line: ~~
** Processing line: ~ Toast messages autohide after 5 seconds.~
** Processing line: ~~
** Processing line: ~ If you need to look at something for longer, use~
** Processing line: ~ args.gtk.console.perma_toast instead (which you can manually dismiss).~
** Processing line: ~~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return if currently_toasting?~
** Processing line: ~ return if @toast_ids.include? id~
** Processing line: ~ @toasted_at = Kernel.global_tick_count~
** Processing line: ~ log_once_info :perma_toast_tip, "Use console.perma_toast to show the toast for longer."~
** Processing line: ~ dwim_duration = 5.seconds~
** Processing line: ~ addtext "* toast :#{id}"~
** Processing line: ~ puts "* TOAST: :#{id}"~
** Processing line: ~ messages.each do |message|~
** Processing line: ~ lines = message.to_s.wrapped_lines(self.console_text_width)~
** Processing line: ~ dwim_duration += lines.length.seconds~
** Processing line: ~ addtext "** #{message}"~
** Processing line: ~ puts "** #{message}"~
** Processing line: ~ end~
** Processing line: ~ show :toast~
** Processing line: ~ @toast_duration += duration || dwim_duration~
** Processing line: ~ @toast_ids << id~
** Processing line: ~ set_command "$gtk.console.hide"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def perma_toast id = nil, messages~
** Processing line: ~ toast_extended id, 600.seconds, *messages~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def toast id = nil, *messages~
** Processing line: ~ toast_extended id, nil, *messages~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def console_toggle_keys~
** Processing line: ~ [~
** Processing line: ~ :backtick!,~
** Processing line: ~ :tilde!,~
** Processing line: ~ :superscript_two!,~
** Processing line: ~ :section_sign!,~
** Processing line: ~ :ordinal_indicator!,~
** Processing line: ~ :circumflex!,~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def console_toggle_key_down? args~
** Processing line: ~ args.inputs.keyboard.key_down.any? console_toggle_keys~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def eval_the_set_command~
** Processing line: ~ cmd = current_input_str.strip~
** Processing line: ~ if cmd.length != 0~
** Processing line: ~ @log_offset = 0~
** Processing line: ~ prompt.clear~
** Processing line: ~~
** Processing line: ~ @command_history.pop while @command_history.length >= @max_history~
** Processing line: ~ @command_history.unshift cmd~
** Processing line: ~ @command_history_index = -1~
** Processing line: ~ @nonhistory_input = ''~
** Processing line: ~~
** Processing line: ~ if cmd == 'quit' || cmd == ':wq' || cmd == ':q!' || cmd == ':q' || cmd == ':wqa'~
** Processing line: ~ $gtk.request_quit~
** Processing line: ~ else~
** Processing line: ~ puts "-> #{cmd}"~
** Processing line: ~ begin~
** Processing line: ~ @last_command = cmd~
** Processing line: ~ Kernel.eval("$results = (#{cmd})")~
** Processing line: ~ if $results.nil?~
** Processing line: ~ puts "=> nil"~
** Processing line: ~ elsif $results == :console_silent_eval~
** Processing line: ~ else~
** Processing line: ~ puts "=> #{$results}"~
** Processing line: ~ end~
** Processing line: ~ @last_command_errored = false~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ string_e = "#{e}"~
** Processing line: ~ puts "* EXCEPTION: #{e}"~
** Processing line: ~ log "* EXCEPTION: #{e}"~
** Processing line: ~ @last_command_errored = true~
** Processing line: ~ if (string_e.include? "wrong number of arguments")~
** Processing line: ~ method_name = (string_e.split ":")[0].gsub "'", ""~
** Processing line: ~ results = (Kernel.docs_search method_name).strip~
** Processing line: ~ if !results.include? "* DOCS: No results found."~
** Processing line: ~ puts results~
** Processing line: ~ log results~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_scroll_up_full? args~
** Processing line: ~ return false if @disabled~
** Processing line: ~ args.inputs.keyboard.key_down.pageup ||~
** Processing line: ~ (args.inputs.keyboard.key_up.b && args.inputs.keyboard.key_up.control)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def scroll_to_bottom~
** Processing line: ~ @log_offset = 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def scroll_up_full~
** Processing line: ~ @log_offset += lines_on_one_page~
** Processing line: ~ @log_offset = @log.size if @log_offset > @log.size~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_scroll_up_half? args~
** Processing line: ~ return false if @disabled~
** Processing line: ~ args.inputs.keyboard.ctrl_u~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def scroll_up_half~
** Processing line: ~ @log_offset += lines_on_one_page.idiv(2)~
** Processing line: ~ @log_offset = @log.size if @log_offset > @log.size~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_scroll_down_full? args~
** Processing line: ~ return false if @disabled~
** Processing line: ~ args.inputs.keyboard.key_down.pagedown ||~
** Processing line: ~ (args.inputs.keyboard.key_up.f && args.inputs.keyboard.key_up.control)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def scroll_down_full~
** Processing line: ~ @log_offset -= lines_on_one_page~
** Processing line: ~ @log_offset = 0 if @log_offset < 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_scroll_down_half? args~
** Processing line: ~ return false if @disabled~
** Processing line: ~ args.inputs.keyboard.ctrl_d~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inputs_clear_command? args~
** Processing line: ~ return false if @disabled~
** Processing line: ~ args.inputs.keyboard.escape || args.inputs.keyboard.ctrl_g~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def scroll_down_half~
** Processing line: ~ @log_offset -= lines_on_one_page.idiv(2)~
** Processing line: ~ @log_offset = 0 if @log_offset < 0~
** Processing line: ~ end~
** Processing line: ~~
** 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: ~ end~
** Processing line: ~~
** Processing line: ~ if args.inputs.mouse.click~
** Processing line: ~ @inertia = 0~
** Processing line: ~ end~
** 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: ~ end~
** Processing line: ~~
** Processing line: ~ if @inertia.abs < 0.01~
** Processing line: ~ @inertia = 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if @log_offset > @log.size~
** Processing line: ~ @log_offset = @log.size~
** Processing line: ~ elsif @log_offset < 0~
** Processing line: ~ @log_offset = 0~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def process_inputs args~
** Processing line: ~ if console_toggle_key_down? args~
** Processing line: ~ args.inputs.text.clear~
** Processing line: ~ toggle~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return unless visible?~
** Processing line: ~~
** Processing line: ~ args.inputs.text.each { |str| prompt << str }~
** Processing line: ~ args.inputs.text.clear~
** Processing line: ~ mouse_wheel_scroll args~
** Processing line: ~~
** Processing line: ~ @log_offset = 0 if @log_offset < 0~
** Processing line: ~~
** Processing line: ~ if args.inputs.keyboard.key_down.enter~
** Processing line: ~ eval_the_set_command~
** Processing line: ~ elsif args.inputs.keyboard.key_down.v~
** Processing line: ~ if args.inputs.keyboard.key_down.control || args.inputs.keyboard.key_down.meta~
** Processing line: ~ prompt << $gtk.ffi_misc.getclipboard~
** Processing line: ~ end~
** Processing line: ~ elsif args.inputs.keyboard.key_down.up~
** Processing line: ~ if @command_history_index == -1~
** Processing line: ~ @nonhistory_input = current_input_str~
** Processing line: ~ end~
** Processing line: ~ if @command_history_index < (@command_history.length - 1)~
** Processing line: ~ @command_history_index += 1~
** Processing line: ~ self.current_input_str = @command_history[@command_history_index].dup~
** Processing line: ~ end~
** Processing line: ~ elsif args.inputs.keyboard.key_down.down~
** Processing line: ~ if @command_history_index == 0~
** Processing line: ~ @command_history_index = -1~
** Processing line: ~ self.current_input_str = @nonhistory_input~
** Processing line: ~ @nonhistory_input = ''~
** Processing line: ~ elsif @command_history_index > 0~
** Processing line: ~ @command_history_index -= 1~
** Processing line: ~ self.current_input_str = @command_history[@command_history_index].dup~
** Processing line: ~ end~
** Processing line: ~ elsif inputs_scroll_up_full? args~
** Processing line: ~ scroll_up_full~
** Processing line: ~ elsif inputs_scroll_down_full? args~
** Processing line: ~ scroll_down_full~
** Processing line: ~ elsif inputs_scroll_up_half? args~
** Processing line: ~ scroll_up_half~
** Processing line: ~ elsif inputs_scroll_down_half? args~
** Processing line: ~ scroll_down_half~
** Processing line: ~ elsif inputs_clear_command? args~
** Processing line: ~ prompt.clear~
** Processing line: ~ @command_history_index = -1~
** Processing line: ~ @nonhistory_input = ''~
** Processing line: ~ elsif args.inputs.keyboard.key_down.backspace || args.inputs.keyboard.key_down.delete~
** Processing line: ~ prompt.backspace~
** Processing line: ~ elsif args.inputs.keyboard.key_down.tab~
** Processing line: ~ prompt.autocomplete~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ args.inputs.keyboard.key_down.clear~
** Processing line: ~ args.inputs.keyboard.key_up.clear~
** Processing line: ~ args.inputs.keyboard.key_held.clear~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def write_primitive_and_return_offset(args, left, y, str, archived: false)~
** Processing line: ~ if str.is_a?(Hash)~
** Processing line: ~ padding = 10~
** Processing line: ~ args.outputs.reserved << [left + 10, y + 5, str[:w], str[:h], str[:path]].sprite~
** Processing line: ~ return str[:h] + padding~
** Processing line: ~ else~
** Processing line: ~ write_line args, left, y, str, archived: archived~
** Processing line: ~ return line_height_px~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** 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: ~ args.outputs.reserved << font_style.label(x: left.shift_right(10), y: y, text: str, color: color)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def should_tick?~
** Processing line: ~ return false if !@toggled_at~
** Processing line: ~ return false if slide_progress == 0~
** Processing line: ~ return false if @disabled~
** Processing line: ~ return visible?~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render args~
** Processing line: ~ return if !@toggled_at~
** Processing line: ~ return if slide_progress == 0~
** Processing line: ~~
** Processing line: ~ @bottom = top - (h * slide_progress)~
** Processing line: ~ args.outputs.reserved << [left, @bottom, w, h, *@background_color.mult_alpha(slide_progress)].solid~
** Processing line: ~ args.outputs.reserved << [right.shift_left(110), @bottom.shift_up(630), 100, 100, @logo, 0, (80.0 * slide_progress).to_i].sprite~
** Processing line: ~~
** Processing line: ~ y = @bottom + 2 # just give us a little padding at the bottom.~
** Processing line: ~ prompt.render args, x: left.shift_right(10), y: y~
** Processing line: ~ y += line_height_px * 1.5~
** Processing line: ~ args.outputs.reserved << line(y: y, color: @text_color.mult_alpha(slide_progress))~
** Processing line: ~ y += line_height_px.to_f / 2.0~
** Processing line: ~~
** Processing line: ~ ((@log.size - @log_offset) - 1).downto(0) do |idx|~
** Processing line: ~ offset_after_write = write_primitive_and_return_offset args, left, y, @log[idx]~
** Processing line: ~ y += offset_after_write~
** Processing line: ~ break if y > top~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # past log separator~
** Processing line: ~ args.outputs.reserved << line(y: y + line_height_px.half, color: @text_color.mult_alpha(0.25 * slide_progress))~
** Processing line: ~~
** Processing line: ~ y += line_height_px~
** Processing line: ~~
** Processing line: ~ ((@archived_log.size - @log_offset) - 1).downto(0) do |idx|~
** Processing line: ~ offset_after_write = write_primitive_and_return_offset args, left, y, @archived_log[idx], archived: true~
** Processing line: ~ y += offset_after_write~
** Processing line: ~ break if y > top~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ render_log_offset args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_log_offset args~
** Processing line: ~ return if @log_offset <= 0~
** Processing line: ~ args.outputs.reserved << font_style.label(~
** Processing line: ~ x: right.shift_left(5),~
** Processing line: ~ y: top.shift_down(5 + line_height_px),~
** Processing line: ~ text: "[#{@log_offset}/#{@log.size}]",~
** Processing line: ~ color: @text_color,~
** Processing line: ~ alignment_enum: 2~
** Processing line: ~ )~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def include_error_marker? text~
** Processing line: ~ include_any_words?(text.gsub('OutputsDeprecated', ''), error_markers)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def error_markers~
** Processing line: ~ ["exception", "error", "undefined method", "failed", "syntax", "deprecated"]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def include_subdued_markers? text~
** Processing line: ~ include_any_words? text, subdued_markers~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def include_any_words? text, words~
** Processing line: ~ words.any? { |w| text.downcase.include?(w) && !text.downcase.include?(":#{w}") }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def subdued_markers~
** Processing line: ~ ["reloaded", "exported the"]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc args~
** Processing line: ~ if visible? &&~
** Processing line: ~ @show_reason == :toast &&~
** Processing line: ~ @toasted_at &&~
** Processing line: ~ @toasted_at.elapsed?(@toast_duration, Kernel.global_tick_count)~
** Processing line: ~ hide~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if !$gtk.paused? && visible? && (show_reason == :exception || show_reason == :exception_on_load)~
** Processing line: ~ hide~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if $gtk.files_reloaded.length > 0~
** Processing line: ~ clear_toast~
** Processing line: ~ @toast_ids.clear~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ begin~
** Processing line: ~ return if @disabled~
** Processing line: ~ render args~
** Processing line: ~ process_inputs args~
** Processing line: ~ return unless should_tick?~
** Processing line: ~ calc args~
** Processing line: ~ prompt.tick~
** Processing line: ~ menu.tick args~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ begin~
** Processing line: ~ puts "#{e}"~
** Processing line: ~ puts "* FATAL: The GTK::Console console threw an unhandled exception and has been reset. You should report this exception (along with reproduction steps) to DragonRuby."~
** Processing line: ~ rescue~
** Processing line: ~ end~
** Processing line: ~ @disabled = true~
** Processing line: ~ $stdout.puts e~
** Processing line: ~ $stdout.puts "* FATAL: The GTK::Console console threw an unhandled exception and has been reset. You should report this exception (along with reproduction steps) to DragonRuby."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def set_command_with_history_silent command, histories, show_reason = nil~
** Processing line: ~ set_command_extended command: command, histories: histories, show_reason: show_reason~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def defaults_set_command_extended~
** Processing line: ~ {~
** Processing line: ~ command: "puts 'Hello World'",~
** Processing line: ~ histories: [],~
** Processing line: ~ show_reason: nil,~
** Processing line: ~ force: false~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def set_command_extended opts~
** Processing line: ~ opts = defaults_set_command_extended.merge opts~
** Processing line: ~ @command_history.concat opts[:histories]~
** Processing line: ~ @command_history << opts[:command] if @command_history[-1] != opts[:command]~
** Processing line: ~ self.current_input_str = opts[:command] if @command_set_at != Kernel.global_tick_count || opts[:force]~
** Processing line: ~ @command_set_at = Kernel.global_tick_count~
** Processing line: ~ @command_history_index = -1~
** Processing line: ~ save_history~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def set_command_with_history command, histories, show_reason = nil~
** Processing line: ~ set_command_with_history_silent command, histories, show_reason~
** Processing line: ~ show show_reason~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def set_command command, show_reason = nil~
** Processing line: ~ set_command_silent command, show_reason~
** Processing line: ~ show show_reason~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def set_command_silent command, show_reason = nil~
** Processing line: ~ set_command_with_history_silent command, [], show_reason~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def set_system_command command, show_reason = nil~
** Processing line: ~ if $gtk.platform == "Mac OS X"~
** Processing line: ~ set_command_silent "$gtk.system \"open #{command}\""~
** Processing line: ~ else~
** Processing line: ~ set_command_silent "$gtk.system \"start #{command}\""~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def system_command~
** Processing line: ~ if $gtk.platform == "Mac OS X"~
** Processing line: ~ "open"~
** Processing line: ~ else~
** Processing line: ~ "start"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ private~
** Processing line: ~~
** Processing line: ~ def w~
** Processing line: ~ $gtk.logical_width~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def h~
** Processing line: ~ $gtk.logical_height~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # methods top; left; right~
** Processing line: ~ # Forward to grid~
** Processing line: ~ %i[top left right].each do |method|~
** Processing line: ~ define_method method do~
** Processing line: ~ $gtk.args.grid.send(method)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def line_height_px~
** Processing line: ~ font_style.line_height_px~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def lines_on_one_page~
** Processing line: ~ (h - 4).idiv(line_height_px)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def line(y:, color:)~
** Processing line: ~ [left, y, right, y, *color].line~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def include_row_marker? log_entry~
** Processing line: ~ log_entry[0] == "|"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def include_header_marker? log_entry~
** Processing line: ~ return false if (log_entry.strip.include? ".rb")~
** Processing line: ~ (log_entry.start_with? "* ") ||~
** Processing line: ~ (log_entry.start_with? "** ") ||~
** Processing line: ~ (log_entry.start_with? "*** ") ||~
** Processing line: ~ (log_entry.start_with? "**** ")~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def color_for_log_entry(log_entry)~
** Processing line: ~ if include_row_marker? log_entry~
** Processing line: ~ @text_color~
** Processing line: ~ elsif include_error_marker? log_entry~
** Processing line: ~ @error_color~
** Processing line: ~ elsif include_subdued_markers? log_entry~
** Processing line: ~ @text_color.mult_alpha(0.5)~
** Processing line: ~ elsif include_header_marker? log_entry~
** Processing line: ~ @header_color~
** Processing line: ~ elsif log_entry.start_with?("====")~
** Processing line: ~ @header_color~
** Processing line: ~ else~
** Processing line: ~ @text_color~
** Processing line: ~ end~
** 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~
** Processing line: ~~
** Processing line: ~ def current_input_str~
** Processing line: ~ prompt.current_input_str~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def current_input_str=(str)~
** Processing line: ~ prompt.current_input_str = str~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def clear~
** Processing line: ~ @archived_log.clear~
** Processing line: ~ @log.clear~
** Processing line: ~ @prompt.clear~
** Processing line: ~ :console_silent_eval~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def slide_progress~
** Processing line: ~ return 0 if !@toggled_at~
** Processing line: ~ if visible?~
** Processing line: ~ @slide_progress = @toggled_at.global_ease(@animation_duration, :flip, :quint, :flip)~
** Processing line: ~ else~
** Processing line: ~ @slide_progress = @toggled_at.global_ease(@animation_duration, :flip, :quint)~
** Processing line: ~ end~
** Processing line: ~ @slide_progress~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* console_color.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~console_color.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/console_color.rb~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # console_color.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ # Contributors outside of DragonRuby who also hold Copyright:~
** Processing line: ~ # - Kevin Fischer: https://github.com/kfischer-okarin~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Console~
** Processing line: ~ class Color~
** Processing line: ~ def initialize(color)~
** Processing line: ~ @color = color~
** Processing line: ~ @color << 255 if @color.size == 3~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def mult_alpha(alpha_modifier)~
** Processing line: ~ Color.new [@color[0], @color[1], @color[2], (@color[3].to_f * alpha_modifier).to_i]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Support splat operator~
** Processing line: ~ def to_a~
** Processing line: ~ @color~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_h~
** Processing line: ~ { r: @color[0], g: @color[1], b: @color[2], a: @color[3] }~
** 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: ~* console_font_style.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~console_font_style.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/console_font_style.rb~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # console_font_style.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ # Contributors outside of DragonRuby who also hold Copyright:~
** Processing line: ~ # - Kevin Fischer: https://github.com/kfischer-okarin~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Console~
** Processing line: ~ class FontStyle~
** Processing line: ~ attr_reader :font, :size_enum, :line_height~
** Processing line: ~~
** Processing line: ~ def initialize(font:, size_enum:, line_height:)~
** Processing line: ~ @font = font~
** Processing line: ~ @size_enum = size_enum~
** Processing line: ~ @line_height = line_height~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def letter_size~
** Processing line: ~ @letter_size ||= $gtk.calcstringbox 'W', size_enum, font~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def line_height_px~
** Processing line: ~ @line_height_px ||= letter_size.y * line_height~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def label(x:, y:, text:, color:, alignment_enum: 0)~
** Processing line: ~ {~
** Processing line: ~ x: x,~
** Processing line: ~ y: y.shift_up(line_height_px), # !!! FIXME: remove .shift_up(line_height_px) when we fix coordinate origin on labels.~
** Processing line: ~ text: text,~
** Processing line: ~ font: font,~
** Processing line: ~ size_enum: size_enum,~
** Processing line: ~ alignment_enum: alignment_enum,~
** Processing line: ~ **color.to_h,~
** Processing line: ~ }.label~
** 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: ~* console_menu.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~console_menu.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/console_menu.rb~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # console_menu.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Console~
** Processing line: ~ class Menu~
** Processing line: ~ attr_accessor :buttons~
** Processing line: ~~
** Processing line: ~ def initialize console~
** Processing line: ~ @console = console~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def record_clicked~
** Processing line: ~ $recording.start 100~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replay_clicked~
** Processing line: ~ $replay.start 'replay.txt'~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def reset_clicked~
** Processing line: ~ $gtk.reset~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def scroll_up_clicked~
** Processing line: ~ @console.scroll_up_half~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def scroll_down_clicked~
** Processing line: ~ @console.scroll_down_half~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def show_menu_clicked~
** Processing line: ~ @menu_shown = :visible~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def close_clicked~
** Processing line: ~ @menu_shown = :hidden~
** Processing line: ~ @console.hide~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def hide_menu_clicked~
** Processing line: ~ @menu_shown = :hidden~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def framerate_diagnostics_clicked~
** Processing line: ~ @console.scroll_to_bottom~
** Processing line: ~ $gtk.framerate_diagnostics~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def itch_wizard_clicked~
** Processing line: ~ @console.scroll_to_bottom~
** Processing line: ~ $wizards.itch.start~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def docs_clicked~
** Processing line: ~ @console.scroll_to_bottom~
** Processing line: ~ log Kernel.docs_classes~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def scroll_end_clicked~
** Processing line: ~ @console.scroll_to_bottom~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def custom_buttons~
** Processing line: ~ []~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ return unless @console.visible?~
** Processing line: ~~
** Processing line: ~ @menu_shown ||= :hidden~
** Processing line: ~~
** Processing line: ~ if $gtk.production~
** Processing line: ~ @buttons = [~
** Processing line: ~ (button id: :record, row: 0, col: 9, text: "record gameplay", method: :record_clicked),~
** Processing line: ~ (button id: :replay, row: 0, col: 10, text: "start replay", method: :replay_clicked),~
** Processing line: ~ ]~
** Processing line: ~ elsif @menu_shown == :hidden~
** Processing line: ~ @buttons = [~
** Processing line: ~ (button id: :show_menu, row: 0, col: 10, text: "show menu", method: :show_menu_clicked),~
** Processing line: ~ ]~
** Processing line: ~ else~
** Processing line: ~ @buttons = [~
** Processing line: ~ (button id: :scroll_up, row: 0, col: 6, text: "scroll up", method: :scroll_up_clicked),~
** Processing line: ~ (button id: :scroll_down, row: 0, col: 7, text: "scroll down", method: :scroll_down_clicked),~
** Processing line: ~ (button id: :scroll_down, row: 0, col: 8, text: "scroll end", method: :scroll_end_clicked),~
** Processing line: ~ (button id: :close, row: 0, col: 9, text: "close console", method: :close_clicked),~
** Processing line: ~ (button id: :hide, row: 0, col: 10, text: "hide menu", method: :hide_menu_clicked),~
** Processing line: ~~
** Processing line: ~ (button id: :record, row: 1, col: 7, text: "record gameplay", method: :record_clicked),~
** Processing line: ~ (button id: :replay, row: 1, col: 8, text: "start replay", method: :replay_clicked),~
** Processing line: ~ (button id: :record, row: 1, col: 9, text: "framerate diagnostics", method: :framerate_diagnostics_clicked),~
** Processing line: ~ (button id: :reset, row: 1, col: 10, text: "reset game", method: :reset_clicked),~
** Processing line: ~~
** Processing line: ~ (button id: :reset, row: 2, col: 10, text: "docs", method: :docs_clicked),~
** Processing line: ~ (button id: :reset, row: 2, col: 9, text: "itch wizard", method: :itch_wizard_clicked),~
** Processing line: ~ *custom_buttons~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # render~
** Processing line: ~ args.outputs.reserved << @buttons.map { |b| b[:primitives] }~
** Processing line: ~~
** Processing line: ~ # inputs~
** Processing line: ~ if args.inputs.mouse.click~
** Processing line: ~ clicked = @buttons.find { |b| args.inputs.mouse.inside_rect? b[:rect] }~
** Processing line: ~ if clicked~
** Processing line: ~ send clicked[:method]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def rect_for_layout row, col~
** Processing line: ~ col_width = 100~
** Processing line: ~ row_height = 50~
** Processing line: ~ col_margin = 5~
** Processing line: ~ row_margin = 5~
** Processing line: ~ x = (col_margin + (col * col_width) + (col * col_margin))~
** Processing line: ~ y = (row_margin + (row * row_height) + (row * row_margin) + row_height).from_top~
** Processing line: ~ { x: x, y: y, w: col_width, h: row_height }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def button args~
** Processing line: ~ id, row, col, text, method = args[:id], args[:row], args[:col], args[:text], args[:method]~
** Processing line: ~~
** Processing line: ~ font_height = @console.font_style.line_height_px.half~
** Processing line: ~ {~
** Processing line: ~ id: id,~
** Processing line: ~ rect: (rect_for_layout row, col),~
** Processing line: ~ text: text,~
** Processing line: ~ method: method~
** Processing line: ~ }.let do |entity|~
** Processing line: ~ primitives = []~
** Processing line: ~ primitives << entity[:rect].merge(a: 164).solid~
** Processing line: ~ primitives << entity[:rect].merge(r: 255, g: 255, b: 255).border~
** Processing line: ~ primitives << text.wrapped_lines(5)~
** Processing line: ~ .map_with_index do |l, i|~
** Processing line: ~ [~
** Processing line: ~ entity[:rect][:x] + entity[:rect][:w].half,~
** Processing line: ~ entity[:rect][:y] + entity[:rect][:h].half + font_height - (i * (font_height + 2)),~
** Processing line: ~ l, -3, 1, 255, 255, 255~
** Processing line: ~ ]~
** Processing line: ~ end.labels~
** Processing line: ~~
** Processing line: ~ entity.merge(primitives: primitives)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ {~
** Processing line: ~ not_supported: "#{self}"~
** Processing line: ~ }~
** 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: ~* console_prompt.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~console_prompt.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/console_prompt.rb~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # console_prompt.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ # Contributors outside of DragonRuby who also hold Copyright:~
** Processing line: ~ # - Kevin Fischer: https://github.com/kfischer-okarin~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Console~
** Processing line: ~ class Prompt~
** Processing line: ~ attr_accessor :current_input_str, :font_style, :console_text_width, :last_input_str, :last_input_str_changed~
** Processing line: ~~
** Processing line: ~ def initialize(font_style:, text_color:, console_text_width:)~
** Processing line: ~ @prompt = '-> '~
** Processing line: ~ @current_input_str = ''~
** Processing line: ~ @font_style = font_style~
** Processing line: ~ @text_color = text_color~
** Processing line: ~ @cursor_color = Color.new [187, 21, 6]~
** Processing line: ~ @console_text_width = console_text_width~
** Processing line: ~~
** Processing line: ~ @last_autocomplete_prefix = nil~
** Processing line: ~ @next_candidate_index = 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def <<(str)~
** Processing line: ~ @current_input_str << str~
** Processing line: ~ @current_input_changed_at = Kernel.global_tick_count~
** Processing line: ~ reset_autocomplete~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def backspace~
** Processing line: ~ @current_input_str.chop!~
** Processing line: ~ reset_autocomplete~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def clear~
** Processing line: ~ @current_input_str = ''~
** Processing line: ~ reset_autocomplete~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def autocomplete~
** Processing line: ~ if !@last_autocomplete_prefix~
** Processing line: ~ @last_autocomplete_prefix = calc_autocomplete_prefix~
** Processing line: ~~
** Processing line: ~ puts "* AUTOCOMPLETE CANDIDATES: #{current_input_str}.."~
** Processing line: ~ pretty_print_strings_as_table method_candidates(@last_autocomplete_prefix)~
** Processing line: ~ else~
** Processing line: ~ candidates = method_candidates(@last_autocomplete_prefix)~
** Processing line: ~ return if candidates.empty?~
** Processing line: ~~
** Processing line: ~ candidate = candidates[@next_candidate_index]~
** Processing line: ~ candidate = candidate[0..-2] + " = " if candidate.end_with? '='~
** Processing line: ~ @next_candidate_index += 1~
** Processing line: ~ @next_candidate_index = 0 if @next_candidate_index >= candidates.length~
** Processing line: ~ self.current_input_str = display_autocomplete_candidate(candidate)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def pretty_print_strings_as_table items~
** Processing line: ~ if items.length == 0~
** Processing line: ~ puts <<-S.strip~
** Processing line: ~ +--------+~
** Processing line: ~ | (none) |~
** Processing line: ~ +--------+~
** Processing line: ~ S~
** Processing line: ~ else~
** Processing line: ~ # figure out the largest string~
** Processing line: ~ string_width = items.sort_by { |c| -c.to_s.length }.first~
** Processing line: ~~
** Processing line: ~ # add spacing to each side of the string which represents the cell width~
** Processing line: ~ cell_width = string_width.length + 2~
** Processing line: ~~
** Processing line: ~ # add spacing to each side of the cell to represent the column width~
** Processing line: ~ column_width = cell_width + 2~
** Processing line: ~~
** Processing line: ~ # determine the max number of columns that can fit on the screen~
** Processing line: ~ columns = @console_text_width.idiv column_width~
** Processing line: ~ columns = items.length if items.length < columns~
** 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 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: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def pretty_print_row cells, string_width, cell_width, column_width, columns~
** Processing line: ~ # if the number of cells doesn't match the number of columns, then pad the array with empty values~
** Processing line: ~ cells += (columns - cells.length).map { "" }~
** Processing line: ~~
** Processing line: ~ # right align each cell value~
** Processing line: ~ formated_row = "|" + cells.map do |c|~
** Processing line: ~ "#{" " * (string_width.length - c.length) } #{c} |"~
** Processing line: ~ end.join~
** Processing line: ~~
** Processing line: ~ # remove seperators between empty values~
** Processing line: ~ formated_row = formated_row.gsub(" | ", " ")~
** Processing line: ~~
** Processing line: ~ puts formated_row~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def pretty_print_row_seperator string_width, cell_width, column_width, columns~
** Processing line: ~ # this is a joint: +--------~
** Processing line: ~ column_joint = "+#{"-" * cell_width}"~
** Processing line: ~~
** Processing line: ~ # multiple joints create a row seperator: +----+----+~
** Processing line: ~ puts (column_joint * columns) + "+"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render(args, x:, y:)~
** Processing line: ~ args.outputs.reserved << font_style.label(x: x, y: y, text: "#{@prompt}#{current_input_str}", color: @text_color)~
** Processing line: ~ args.outputs.reserved << font_style.label(x: x - 2, y: y + 3, text: (" " * (@prompt.length + current_input_str.length)) + "|", color: @cursor_color)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick~
** Processing line: ~ if (@current_input_changed_at) &&~
** Processing line: ~ (@current_input_changed_at < Kernel.global_tick_count) &&~
** Processing line: ~ (@last_input_str != @current_input_str)~
** Processing line: ~ @last_input_str_changed = true~
** Processing line: ~ @last_input_str = "#{@current_input_str}"~
** Processing line: ~ @current_input_changed_at = nil~
** Processing line: ~ else~
** Processing line: ~ @last_input_str_changed = false~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ private~
** Processing line: ~~
** Processing line: ~ def last_period_index~
** Processing line: ~ current_input_str.rindex('.')~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_autocomplete_prefix~
** Processing line: ~ if last_period_index~
** Processing line: ~ current_input_str[(last_period_index + 1)..-1]~
** Processing line: ~ else~
** Processing line: ~ current_input_str~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def current_object~
** Processing line: ~ return Kernel unless last_period_index~
** Processing line: ~~
** Processing line: ~ Kernel.eval(current_input_str[0...last_period_index])~
** Processing line: ~ rescue NameError~
** Processing line: ~ nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def method_candidates(prefix)~
** Processing line: ~ current_object.autocomplete_methods.map(&:to_s).select { |m| m.start_with? prefix }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def display_autocomplete_candidate(candidate)~
** Processing line: ~ if last_period_index~
** Processing line: ~ @current_input_str[0..last_period_index] + candidate.to_s~
** Processing line: ~ else~
** Processing line: ~ candidate.to_s~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def reset_autocomplete~
** Processing line: ~ @last_autocomplete_prefix = nil~
** Processing line: ~ @next_candidate_index = 0~
** 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: ~* controller.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~controller.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/controller.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # controller.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ # @gtk~
** Processing line: ~ class Controller~
** Processing line: ~ # Access to keys that have been pressed down.~
** Processing line: ~ #~
** Processing line: ~ # @return [Controller::Keys]~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_reader :key_down~
** Processing line: ~~
** Processing line: ~ # Access to keys that have been released up.~
** Processing line: ~ #~
** Processing line: ~ # @return [Controller::Keys]~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_reader :key_up~
** Processing line: ~~
** Processing line: ~ # Access to keys that have been held down.~
** Processing line: ~ #~
** Processing line: ~ # @return [Controller::Keys]~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_reader :key_held~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_accessor :left_analog_x_raw,~
** Processing line: ~ :left_analog_y_raw,~
** Processing line: ~ :left_analog_x_perc,~
** Processing line: ~ :left_analog_y_perc,~
** Processing line: ~ :right_analog_x_raw,~
** Processing line: ~ :right_analog_y_raw,~
** Processing line: ~ :right_analog_x_perc,~
** Processing line: ~ :right_analog_y_perc~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ def initialize~
** Processing line: ~ @key_down = Controller::Keys.new~
** Processing line: ~ @key_up = Controller::Keys.new~
** Processing line: ~ @key_held = Controller::Keys.new~
** Processing line: ~ @left_analog_x_raw = 0~
** Processing line: ~ @left_analog_y_raw = 0~
** Processing line: ~ @left_analog_x_perc = 0~
** Processing line: ~ @left_analog_y_perc = 0~
** Processing line: ~ @right_analog_x_raw = 0~
** Processing line: ~ @right_analog_y_raw = 0~
** Processing line: ~ @right_analog_x_perc = 0~
** Processing line: ~ @right_analog_y_perc = 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ {~
** Processing line: ~ key_down: @key_down.serialize,~
** Processing line: ~ key_held: @key_held.serialize,~
** Processing line: ~ key_up: @key_up.serialize~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Clear all current key presses.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ def clear~
** Processing line: ~ @key_down.clear~
** Processing line: ~ @key_up.clear~
** Processing line: ~ @key_held.clear~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def up~
** Processing line: ~ @key_up.up || @key_held.up~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def down~
** Processing line: ~ @key_up.down || @key_held.down~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def left~
** Processing line: ~ @key_up.left || @key_held.left~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def right~
** Processing line: ~ @key_up.right || @key_held.right~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Activates a key into the down position.~
** Processing line: ~ #~
** Processing line: ~ # @param key [Symbol] The key to press down.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ def activate_down(key)~
** Processing line: ~ key_down.activate(key)~
** Processing line: ~ key_held.deactivate(key)~
** Processing line: ~ key_up.deactivate(key)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Activates a key into the held down position.~
** Processing line: ~ #~
** Processing line: ~ # @param key [Symbol] The key to hold down.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ def activate_held(key)~
** Processing line: ~ key_down.deactivate(key)~
** Processing line: ~ key_held.activate(key) unless key_held.send(key)~
** Processing line: ~ key_up.deactivate(key)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~ # Activates a key release into the up position.~
** Processing line: ~ #~
** Processing line: ~ # @param key [Symbol] The key release up.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ def activate_up(key)~
** Processing line: ~ key_down.deactivate(key)~
** Processing line: ~ key_held.deactivate(key)~
** Processing line: ~ key_up.activate(key)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ include DirectionalInputHelperMethods~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* controller/config.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~controller/config.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/controller/config.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # controller/config.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ # !!! FIXME: add console command to forget custom binding(s)~
** Processing line: ~ # !!! FIXME: add console command to forget replace existing binding(s)~
** Processing line: ~ # !!! FIXME: add console command go into play_around mode to make sure controller isn't wonky.~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Controller~
** Processing line: ~ class Config~
** Processing line: ~ def initialize runtime~
** Processing line: ~ @runtime = runtime~
** Processing line: ~ @raw_joysticks = {} # things that aren't game controllers to try to configure.~
** Processing line: ~ @target = nil~
** Processing line: ~ @animation_duration = (1.5).seconds~
** Processing line: ~ @toggled_at = 0~
** Processing line: ~ @fading = 0~
** Processing line: ~ @current_part = 0~
** Processing line: ~ @part_alpha = 0~
** Processing line: ~ @part_alpha_increment = 10~
** Processing line: ~ @joystick_state = {}~
** Processing line: ~ @playing_around = false~
** Processing line: ~ @used_bindings = {}~
** Processing line: ~ @bindings = []~
** Processing line: ~ @parts = [~
** Processing line: ~ [ 919, 282, 'A button', 'a' ],~
** Processing line: ~ [ 960, 323, 'B button', 'b' ],~
** Processing line: ~ [ 878, 323, 'X button', 'x' ],~
** Processing line: ~ [ 919, 365, 'Y button', 'y' ],~
** Processing line: ~ [ 433, 246, 'left stick left', '-leftx' ],~
** Processing line: ~ [ 497, 246, 'left stick right', '+leftx' ],~
** Processing line: ~ [ 466, 283, 'left stick up', '-lefty' ],~
** Processing line: ~ [ 466, 218, 'left stick down', '+lefty' ],~
** Processing line: ~ [ 466, 246, 'left stick button', 'leftstick' ],~
** Processing line: ~ [ 741, 246, 'right stick left', '-rightx' ],~
** Processing line: ~ [ 802, 246, 'right stick right', '+rightx' ],~
** Processing line: ~ [ 773, 283, 'right stick up', '-righty' ],~
** Processing line: ~ [ 773, 218, 'right stick down', '+righty' ],~
** Processing line: ~ [ 772, 246, 'right stick button', 'rightstick' ],~
** Processing line: ~ [ 263, 465, 'left shoulder button', 'leftshoulder' ],~
** Processing line: ~ [ 263, 503, 'left trigger', 'lefttrigger' ],~
** Processing line: ~ [ 977, 465, 'right shoulder button', 'rightshoulder' ],~
** Processing line: ~ [ 977, 503, 'right trigger', 'righttrigger' ],~
** Processing line: ~ [ 318, 365, 'D-pad up', 'dpup' ],~
** Processing line: ~ [ 360, 322, 'D-pad right', 'dpright' ],~
** Processing line: ~ [ 318, 280, 'D-pad down', 'dpdown' ],~
** Processing line: ~ [ 275, 322, 'D-pad left', 'dpleft' ],~
** Processing line: ~ [ 570, 402, 'select/back button', 'back'],~
** Processing line: ~ [ 619, 448, 'guide/home button', 'guide' ],~
** Processing line: ~ [ 669, 402, 'start button', 'start' ],~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def rawjoystick_connected jid, joystickname, guid~
** Processing line: ~ return if jid < 0~
** Processing line: ~ @raw_joysticks[jid] = { name: joystickname, guid: guid }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def rawjoystick_disconnected jid~
** Processing line: ~ return if jid < 0~
** Processing line: ~ if @raw_joysticks[jid] != nil~
** Processing line: ~ @raw_joysticks.delete(jid)~
** Processing line: ~ @runtime.ffi_misc.close_raw_joystick(jid)~
** Processing line: ~ # Fade out the config screen if we were literally configuring this controller right now.~
** Processing line: ~ if !@target.nil? && @target[0] == jid~
** Processing line: ~ @target[0] = nil~
** Processing line: ~ @toggled_at = Kernel.global_tick_count~
** Processing line: ~ @fading = -1~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def build_binding_string~
** Processing line: ~ bindingstr = ''~
** Processing line: ~ skip = false~
** Processing line: ~~
** Processing line: ~ for i in 0..@parts.length-1~
** Processing line: ~ if skip ; skip = false ; next ; end~
** Processing line: ~~
** Processing line: ~ binding = @bindings[i]~
** Processing line: ~ next if binding.nil?~
** Processing line: ~~
** Processing line: ~ part = @parts[i][3]~
** Processing line: ~~
** Processing line: ~ # clean up string:~
** Processing line: ~ # if axis uses -a0 for negative and +a0 for positive, just make it "leftx:a0" instead of "-leftx:-a0,+leftx:+a0"~
** Processing line: ~ # if axis uses +a0 for negative and -a0 for positive, just make it "leftx:a0~" instead of "-leftx:+a0,+leftx:-a0"~
** Processing line: ~ if part == '-leftx' || part == '-lefty' || part == '-rightx' || part == '-righty'~
** Processing line: ~ nextbinding = @bindings[i+1]~
** Processing line: ~ if binding.start_with?('-a') && nextbinding.start_with?('+a') && binding[2..-1] == nextbinding[2..-1]~
** Processing line: ~ skip = true~
** Processing line: ~ part = part[1..-1]~
** Processing line: ~ binding = binding[1..-1]~
** Processing line: ~ elsif binding.start_with?('+a') && nextbinding.start_with?('-a') && binding[2..-1] == nextbinding[2..-1]~
** Processing line: ~ skip = true~
** Processing line: ~ part = part[1..-1]~
** Processing line: ~ binding = "#{binding[1..-1]}~"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ bindingstr += "#{!bindingstr.empty? ? ',' : ''}#{part}:#{binding}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ details = @target[1]~
** Processing line: ~~
** Processing line: ~ # !!! FIXME: no String.delete in mRuby?!?! Maybe so when upgrading.~
** Processing line: ~ #name = details[:name].delete(',')~
** Processing line: ~ # !!! FIXME: ...no regexp either... :/~
** Processing line: ~ #name = details[:name].gsub(/,/, ' ') # !!! FIXME: will SDL let you escape these instead?~
** Processing line: ~ unescaped = details[:name]~
** Processing line: ~ name = ''~
** Processing line: ~ for i in 0..unescaped.length-1~
** Processing line: ~ ch = unescaped[i]~
** Processing line: ~ name += (ch == ',') ? ' ' : ch~
** Processing line: ~ end~
** Processing line: ~ return "#{details[:guid]},#{name},platform:#{@runtime.platform},#{bindingstr}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def move_to_different_part part~
** Processing line: ~ if !@joystick_state[:axes].nil?~
** Processing line: ~ @joystick_state[:axes].each { |i| i[:farthestval] = i[:startingval] if !i.nil? }~
** Processing line: ~ end~
** Processing line: ~ @current_part = part~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def previous_part~
** Processing line: ~ if @current_part > 0~
** Processing line: ~ # remove the binding that we previous had here so it can be reused.~
** Processing line: ~ bindstr = @bindings[@current_part - 1]~
** Processing line: ~ @bindings[@current_part - 1] = nil~
** Processing line: ~ @used_bindings[bindstr] = nil~
** Processing line: ~ move_to_different_part @current_part - 1~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def next_part~
** Processing line: ~ if @current_part < (@parts.length - 1)~
** Processing line: ~ move_to_different_part @current_part + 1~
** Processing line: ~ else~
** Processing line: ~ @playing_around = true~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def set_binding bindstr~
** Processing line: ~ return false if !@used_bindings[bindstr].nil?~
** Processing line: ~ @used_bindings[bindstr] = @current_part~
** Processing line: ~ @bindings[@current_part] = bindstr~
** Processing line: ~ return true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Called when a lowlevel joystick moves an axis.~
** Processing line: ~ def rawjoystick_axis jid, axis, value~
** Processing line: ~ return if @target.nil? || jid != @target[0] || @fading != 0 # skip if not currently considering this joystick.~
** Processing line: ~~
** Processing line: ~ @joystick_state[:axes] ||= []~
** Processing line: ~ @joystick_state[:axes][axis] ||= {~
** Processing line: ~ moving: false,~
** Processing line: ~ startingval: 0,~
** Processing line: ~ currentval: 0,~
** Processing line: ~ farthestval: 0~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ # this is the logic from SDL's controllermap.c, more or less, since this is hard to get right from scratch.~
** Processing line: ~ state = @joystick_state[:axes][axis]~
** Processing line: ~ state[:currentval] = value~
** Processing line: ~ if !state[:moving]~
** Processing line: ~ state[:moving] = true~
** Processing line: ~ state[:startingval] = value~
** Processing line: ~ state[:farthestval] = value~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ current_distance = (value - state[:startingval]).abs~
** Processing line: ~ farthest_distance = (state[:farthestval] - state[:startingval]).abs~
** Processing line: ~ if current_distance > farthest_distance~
** Processing line: ~ state[:farthestval] = value~
** Processing line: ~ farthest_distance = (state[:farthestval] - state[:startingval]).abs~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # If we've gone out far enough and started to come back, let's bind this axis~
** Processing line: ~ if (farthest_distance >= 16000) && (current_distance <= 10000)~
** Processing line: ~ next_part if set_binding("#{(state[:farthestval] < 0) ? '-' : '+'}a#{axis}")~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Called when a lowlevel joystick moves a hat.~
** Processing line: ~ def rawjoystick_hat jid, hat, value~
** Processing line: ~ return if @target.nil? || jid != @target[0] || @fading != 0 # skip if not currently considering this joystick.~
** Processing line: ~~
** Processing line: ~ @joystick_state[:hats] ||= []~
** Processing line: ~ @joystick_state[:hats][hat] = value~
** Processing line: ~~
** Processing line: ~ return if value == 0 # 0 == centered, skip it~
** Processing line: ~ next_part if set_binding("h#{hat}.#{value}")~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Called when a lowlevel joystick moves a button.~
** Processing line: ~ def rawjoystick_button jid, button, pressed~
** Processing line: ~ return if @target.nil? || jid != @target[0] || @fading != 0 # skip if not currently considering this joystick.~
** Processing line: ~~
** Processing line: ~ @joystick_state[:buttons] ||= []~
** Processing line: ~ @joystick_state[:buttons][button] = pressed~
** Processing line: ~~
** Processing line: ~ return if !pressed~
** Processing line: ~ next_part if set_binding("b#{button}")~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def calc_fading~
** Processing line: ~ if @fading == 0~
** Processing line: ~ return 255~
** Processing line: ~ elsif @fading > 0 # fading in~
** Processing line: ~ percent = @toggled_at.global_ease(@animation_duration, :flip, :quint, :flip)~
** Processing line: ~ if percent >= 1.0~
** Processing line: ~ percent = 1.0~
** Processing line: ~ @fading = 0~
** Processing line: ~ end~
** Processing line: ~ else # fading out~
** Processing line: ~ percent = @toggled_at.global_ease(@animation_duration, :flip, :quint)~
** Processing line: ~ if percent <= 0.0~
** Processing line: ~ percent = 0.0~
** Processing line: ~ @fading = 0~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return (percent * 255.0).to_i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_basics args, msg, fade=255~
** Processing line: ~ joystickname = @target[1][:name]~
** Processing line: ~ args.outputs.primitives << [0, 0, $gtk.logical_width, $gtk.logical_height, 255, 255, 255, fade].solid~
** Processing line: ~ args.outputs.primitives << [0, 0, $gtk.logical_width, $gtk.logical_height, 'dragonruby-controller.png', 0, fade, 255, 255, 255].sprite~
** Processing line: ~ args.outputs.primitives << [$gtk.logical_width / 2, 700, joystickname, 2, 1, 0, 0, 0, fade].label~
** Processing line: ~ args.outputs.primitives << [$gtk.logical_height / 2, 650, msg, 0, 1, 0, 0, 0, 255].label if !msg.empty?~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_part_highlight args, part, alpha=255~
** Processing line: ~ partsize = 41~
** Processing line: ~ args.outputs.primitives << [part[0], part[1], partsize, partsize, 255, 0, 0, alpha].border~
** Processing line: ~ args.outputs.primitives << [part[0]-1, part[1]-1, partsize+2, partsize+2, 255, 0, 0, alpha].border~
** Processing line: ~ args.outputs.primitives << [part[0]-2, part[1]-2, partsize+4, partsize+4, 255, 0, 0, alpha].border~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def choose_target~
** Processing line: ~ if @target.nil?~
** Processing line: ~ while !@raw_joysticks.empty?~
** Processing line: ~ t = @raw_joysticks.shift # see if there's a joystick waiting on us.~
** Processing line: ~ next if t[0] < 0 # just in case.~
** Processing line: ~ next if t[1][:guid].nil? # did we already handle this guid? Dump it.~
** Processing line: ~ @target = t~
** Processing line: ~ break~
** Processing line: ~ end~
** Processing line: ~ return false if @target.nil? # nothing to configure at the moment.~
** Processing line: ~ @toggled_at = Kernel.global_tick_count~
** Processing line: ~ @fading = 1~
** Processing line: ~ @current_part = 0~
** Processing line: ~ @part_alpha = 0~
** Processing line: ~ @part_alpha_increment = 10~
** Processing line: ~ @joystick_state = {}~
** Processing line: ~ @used_bindings = {}~
** Processing line: ~ @playing_around = false~
** Processing line: ~ @bindings = []~
** Processing line: ~ end~
** Processing line: ~ return true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def render_part_highlight_from_bindstr args, bindstr, alpha=255~
** Processing line: ~ partidx = @used_bindings[bindstr]~
** Processing line: ~ return if partidx.nil?~
** Processing line: ~ render_part_highlight args, @parts[partidx], alpha~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def play_around args~
** Processing line: ~ return false if !@playing_around~
** Processing line: ~~
** Processing line: ~ if args.inputs.keyboard.key_down.escape~
** Processing line: ~ @current_part = 0~
** Processing line: ~ @part_alpha = 0~
** Processing line: ~ @part_alpha_increment = 10~
** Processing line: ~ @used_bindings = {}~
** Processing line: ~ @playing_around = false~
** Processing line: ~ @bindings = []~
** Processing line: ~ elsif args.inputs.keyboard.key_down.space~
** Processing line: ~ jid = @target[0]~
** Processing line: ~ bindingstr = build_binding_string~
** Processing line: ~ #puts("new controller binding: '#{bindingstr}'")~
** Processing line: ~ @runtime.ffi_misc.add_controller_config bindingstr~
** Processing line: ~ @runtime.ffi_misc.convert_rawjoystick_to_controller jid~
** Processing line: ~ @target[0] = -1 # Conversion closes the raw joystick.~
** Processing line: ~~
** Processing line: ~ # Handle any other pending joysticks that have the same GUID (so if you plug in four of the same model, we're already done!)~
** Processing line: ~ guid = @target[1][:guid]~
** Processing line: ~ @raw_joysticks.each { |jid, details|~
** Processing line: ~ if details[:guid] == guid~
** Processing line: ~ @runtime.ffi_misc.convert_rawjoystick_to_controller jid~
** Processing line: ~ details[:guid] = nil~
** Processing line: ~ end~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ # Done with this guy.~
** Processing line: ~ @playing_around = false~
** Processing line: ~ @toggled_at = Kernel.global_tick_count~
** Processing line: ~ @fading = -1~
** Processing line: ~ return false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ render_basics args, 'Now play around with the controller, and make sure it feels right!'~
** Processing line: ~ args.outputs.primitives << [$gtk.logical_width / 2, 90, '[ESCAPE]: Reconfigure, [SPACE]: Save this configuration', 0, 1, 0, 0, 0, 255].label~
** Processing line: ~~
** Processing line: ~ axes = @joystick_state[:axes]~
** Processing line: ~ if !axes.nil?~
** Processing line: ~ for i in 0..axes.length-1~
** Processing line: ~ next if axes[i].nil?~
** Processing line: ~ value = axes[i][:currentval]~
** Processing line: ~ next if value.nil? || (value.abs < 16000)~
** Processing line: ~ render_part_highlight_from_bindstr args, "#{value < 0 ? '-' : '+'}a#{i}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ hats = @joystick_state[:hats]~
** Processing line: ~ if !hats.nil?~
** Processing line: ~ for i in 0..hats.length-1~
** Processing line: ~ value = hats[i]~
** Processing line: ~ next if value.nil? || (value == 0)~
** Processing line: ~ render_part_highlight_from_bindstr args, "h#{i}.#{value}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ buttons = @joystick_state[:buttons]~
** Processing line: ~ if !buttons.nil?~
** Processing line: ~ for i in 0..buttons.length-1~
** Processing line: ~ value = buttons[i]~
** Processing line: ~ next if value.nil? || !value~
** Processing line: ~ render_part_highlight_from_bindstr args, "b#{i}"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def should_tick?~
** Processing line: ~ return true if @play_around~
** Processing line: ~ return true if @target~
** Processing line: ~ return false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def tick args~
** Processing line: ~ return true if play_around args~
** Processing line: ~ return false if !choose_target~
** Processing line: ~~
** Processing line: ~ jid = @target[0]~
** Processing line: ~~
** Processing line: ~ if @fading == 0~
** Processing line: ~ # Cancel config?~
** Processing line: ~ if args.inputs.keyboard.key_down.escape~
** Processing line: ~ # !!! FIXME: prompt to ignore this joystick forever or just this run~
** Processing line: ~ @toggled_at = Kernel.global_tick_count~
** Processing line: ~ @fading = -1~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if @fading == 0~
** Processing line: ~ if args.inputs.keyboard.key_down.backspace~
** Processing line: ~ previous_part~
** Processing line: ~ elsif args.inputs.keyboard.key_down.space~
** Processing line: ~ next_part~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ fade = calc_fading~
** Processing line: ~ if (@fading < 0) && (fade == 0)~
** Processing line: ~ @runtime.ffi_misc.close_raw_joystick(jid) if jid >= 0~
** Processing line: ~ @target = nil # done with this controller~
** Processing line: ~ return false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ render_basics args, (@fading >= 0) ? "We don't recognize this controller, so tell us about it!" : '', fade~
** Processing line: ~~
** Processing line: ~ return true if fade < 255 # all done for now~
** Processing line: ~~
** Processing line: ~ part = @parts[@current_part]~
** Processing line: ~ args.outputs.primitives << [$gtk.logical_width / 2, 575, "Please press the #{part[2]}.", 0, 1, 0, 0, 0, 255].label~
** Processing line: ~ render_part_highlight args, part, @part_alpha~
** Processing line: ~ args.outputs.primitives << [$gtk.logical_width / 2, 90, '[ESCAPE]: Ignore controller, [BACKSPACE]: Go back one button, [SPACE]: Skip this button', 0, 1, 0, 0, 0, 255].label~
** Processing line: ~~
** Processing line: ~ @part_alpha += @part_alpha_increment~
** Processing line: ~ if (@part_alpha_increment > 0) && (@part_alpha >= 255)~
** Processing line: ~ @part_alpha = 255~
** Processing line: ~ @part_alpha_increment = -10~
** Processing line: ~ elsif (@part_alpha_increment < 0) && (@part_alpha <= 0)~
** Processing line: ~ @part_alpha = 0~
** Processing line: ~ @part_alpha_increment = 10~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return true~
** 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: ~* controller/keys.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~controller/keys.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/controller/keys.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # controller/keys.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Controller~
** Processing line: ~ class Keys~
** Processing line: ~ include Serialize~
** Processing line: ~~
** Processing line: ~ LABELS = [~
** Processing line: ~ :up, :down, :left, :right,~
** Processing line: ~ :a, :b, :x, :y,~
** Processing line: ~ :l1, :r1,~
** Processing line: ~ :l2, :r2,~
** Processing line: ~ :l3, :r3,~
** Processing line: ~ :start, :select,~
** Processing line: ~ :directional_up, :directional_down, :directional_left, :directional_right~
** Processing line: ~ ].freeze~
** Processing line: ~~
** Processing line: ~ LABELS.each do |label|~
** Processing line: ~ attr_reader label~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Activate a key.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ def activate key~
** Processing line: ~ instance_variable_set("@#{key}", Kernel.tick_count + 1)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Deactivate a key.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ def deactivate key~
** Processing line: ~ instance_variable_set("@#{key}", nil)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Clear all key inputs.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ def clear~
** Processing line: ~ LABELS.each { |label| deactivate(label) }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def truthy_keys~
** Processing line: ~ LABELS.select { |label| send(label) }~
** 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: ~* directional_input_helper_methods.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~directional_input_helper_methods.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/directional_input_helper_methods.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # directional_input_helper_methods.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ # This is a module that contains normalization of behavior related to `up`|`down`|`left`|`right` on keyboards and controllers.~
** Processing line: ~ module DirectionalInputHelperMethods~
** Processing line: ~ def self.included klass~
** Processing line: ~ key_state_methods = [:key_held, :key_down]~
** Processing line: ~ directional_methods = [:up, :down, :left, :right]~
** Processing line: ~ method_results = (directional_methods + key_state_methods).map {|m| [m, klass.instance_methods.include?(m)] }~
** Processing line: ~~
** Processing line: ~ error_message = <<-S~
** Processing line: ~ * ERROR~
** Processing line: ~ The GTK::DirectionalKeys module should only be included in objects that respond to the following api heirarchy:~
** Processing line: ~~
** Processing line: ~ - (#{ directional_methods.join("|") })~
** Processing line: ~ - key_held.(#{ directional_methods.join("|") })~
** Processing line: ~ - key_down.(#{ directional_methods.join("|") })~
** Processing line: ~~
** Processing line: ~ #{klass} does not respond to all of these methods (here is the diagnostics):~
** Processing line: ~ #{method_results.map {|m, r| "- #{m}: #{r}"}.join("\n")}~
** Processing line: ~~
** Processing line: ~ Please implement the methods that returned false inthe list above.~
** Processing line: ~ S~
** Processing line: ~ unless method_results.map {|m, result| result}.all?~
** Processing line: ~ raise error_message~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns a signal indicating left (`-1`), right (`1`), or neither ('0').~
** Processing line: ~ #~
** Processing line: ~ # @return [Integer]~
** Processing line: ~ def left_right~
** Processing line: ~ return -1 if self.left~
** Processing line: ~ return 1 if self.right~
** Processing line: ~ return 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns a signal indicating up (`1`), down (`-1`), or neither ('0').~
** Processing line: ~ #~
** Processing line: ~ # @return [Integer]~
** Processing line: ~ def up_down~
** Processing line: ~ return 1 if self.up~
** Processing line: ~ return -1 if self.down~
** Processing line: ~ return 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns a normal vector (in the form of an Array with two values). If no directionals are held/down, the function returns nil.~
** Processing line: ~ #~
** Processing line: ~ # The possible results are:~
** Processing line: ~ #~
** Processing line: ~ # - ~nil~ which denotes that no directional input exists.~
** Processing line: ~ # - ~[ 0, 1]~ which denotes that only up is being held/pressed.~
** Processing line: ~ # - ~[ 0, -1]~ which denotes that only down is being held/pressed.~
** Processing line: ~ # - ~[ 0.5, 0.5]~ which denotes that right and up are being pressed/held.~
** Processing line: ~ # - ~[-0.5, -0.5]~ which denotes that left and down are being pressed/held.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def directional_vector~
** Processing line: ~ lr, ud = [self.left_right, self.up_down]~
** Processing line: ~~
** Processing line: ~ if lr == 0 && ud == 0~
** Processing line: ~ return nil~
** Processing line: ~ elsif lr.abs == ud.abs~
** Processing line: ~ return [lr.half, ud.half]~
** Processing line: ~ else~
** Processing line: ~ return [lr, ud]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def method_missing m, *args~
** Processing line: ~ # combine the key with ctrl_~
** Processing line: ~ if m.to_s.start_with?("ctrl_")~
** Processing line: ~ other_key = m.to_s.split("_").last~
** Processing line: ~ define_singleton_method(m) do~
** Processing line: ~ return self.key_up.send(other_key.to_sym) && self.key_up.control~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return send(m)~
** Processing line: ~ else~
** Processing line: ~ # see if the key is either held or down~
** Processing line: ~ define_singleton_method(m) do~
** Processing line: ~ self.key_down.send(m) || self.key_held.send(m)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return send(m)~
** 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: ~* easing.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~easing.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/easing.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # easing.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ module Easing~
** Processing line: ~ def self.ease_extended start_tick, current_tick, end_tick, default_before, default_after, *definitions~
** Processing line: ~ definitions.flatten!~
** Processing line: ~ definitions = [:identity] if definitions.length == 0~
** Processing line: ~ duration = end_tick - start_tick~
** Processing line: ~ elapsed = current_tick - start_tick~
** Processing line: ~ y = elapsed.percentage_of(duration).cap_min_max(0, 1)~
** Processing line: ~~
** Processing line: ~ definitions.map do |definition|~
** Processing line: ~ y = Easing.exec_definition(definition, start_tick, duration, y)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.ease_spline_extended start_tick, current_tick, end_tick, spline~
** Processing line: ~ duration = end_tick - start_tick~
** Processing line: ~ t = (current_tick - start_tick).fdiv duration~
** Processing line: ~ time_allocation_per_curve = 1.fdiv(spline.length)~
** Processing line: ~ curve_index, curve_t = t.fdiv(time_allocation_per_curve).let do |spline_t|~
** Processing line: ~ [spline_t.to_i, spline_t - spline_t.to_i]~
** Processing line: ~ end~
** Processing line: ~ Geometry.cubic_bezier curve_t, *spline[curve_index]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.initial_value *definitions~
** Processing line: ~ definitions.flatten!~
** Processing line: ~ return Easing.exec_definition (definitions.value(-1) || :identity), 0, 10, 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.final_value *definitions~
** Processing line: ~ definitions.flatten!~
** Processing line: ~ return Easing.exec_definition (definitions.value(-1) || :identity), 0, 10, 1.0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.exec_definition definition, start_tick, duration, x~
** Processing line: ~ if definition.is_a? Symbol~
** Processing line: ~ return Easing.send(definition, x).cap_min_max(0, 1)~
** Processing line: ~ elsif definition.is_a? Proc~
** Processing line: ~ return definition.call(x, start_tick, duration).cap_min_max(0, 1)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ raise <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ I don't know how to execute easing function with definition #{definition}.~
** Processing line: ~~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.identity x~
** Processing line: ~ x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.flip x~
** Processing line: ~ 1 - x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.quad x~
** Processing line: ~ x * x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.cube x~
** Processing line: ~ x * x * x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.quart x~
** Processing line: ~ x * x * x * x * x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.quint x~
** Processing line: ~ x * x * x * x * x * x~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ Easing = GTK::Easing~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* geometry.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~geometry.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/geometry.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # geometry.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ module Geometry~
** Processing line: ~ # Returns f(t) for a cubic Bezier curve.~
** Processing line: ~ def self.cubic_bezier t, a, b, c, d~
** Processing line: ~ s = 1 - t~
** Processing line: ~ s0 = 1~
** Processing line: ~ s1 = s~
** Processing line: ~ s2 = s * s~
** Processing line: ~ s3 = s * s * s~
** Processing line: ~~
** Processing line: ~ t0 = 1~
** Processing line: ~ t1 = t~
** Processing line: ~ t2 = t * t~
** Processing line: ~ t3 = t * t * t~
** Processing line: ~~
** Processing line: ~ 1 * s3 * t0 * a +~
** Processing line: ~ 3 * s2 * t1 * b +~
** Processing line: ~ 3 * s1 * t2 * c +~
** Processing line: ~ 1 * s0 * t3 * d~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns true if a primitive's rectangle is entirely inside another primitive's rectangle.~
** Processing line: ~ # @gtk~
** Processing line: ~ def inside_rect? outer~
** Processing line: ~ Geometry.inside_rect? self, outer~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns true if a primitive's rectangle overlaps another primitive's rectangle.~
** Processing line: ~ # @gtk~
** Processing line: ~ def intersect_rect? other, tolerance = 0.1~
** Processing line: ~ Geometry.intersect_rect? self, other, tolerance~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def intersects_rect? *args~
** Processing line: ~ Geometry.intersects_rect?(*args)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def scale_rect_extended percentage_x: percentage_x,~
** Processing line: ~ percentage_y: percentage_y,~
** Processing line: ~ anchor_x: anchor_x,~
** Processing line: ~ anchor_y: anchor_y~
** Processing line: ~~
** Processing line: ~ Geometry.scale_rect_extended self,~
** Processing line: ~ percentage_x: percentage_x,~
** Processing line: ~ percentage_y: percentage_y,~
** Processing line: ~ anchor_x: anchor_x,~
** Processing line: ~ anchor_y: anchor_y~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Scales a primitive rect by a percentage.~
** Processing line: ~ # @gtk~
** Processing line: ~ def scale_rect percentage, *anchors~
** Processing line: ~ Geometry.scale_rect self, percentage, *anchors~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns the angle from one primitive to another primitive.~
** Processing line: ~ # @gtk~
** Processing line: ~ def angle_to other_point~
** Processing line: ~ Geometry.angle_to self, other_point~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns the angle to one primitive from another primitive.~
** Processing line: ~ # @gtk~
** Processing line: ~ def angle_from other_point~
** Processing line: ~ Geometry.angle_from self, other_point~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns true if a primitive is within a circle specified by the circle's center and radius.~
** Processing line: ~ # @gtk~
** Processing line: ~ def point_inside_circle? circle_center_point, radius~
** Processing line: ~ Geometry.point_inside_circle? self, circle_center_point, radius~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def center_inside_rect other_rect~
** Processing line: ~ offset_x = (other_rect.w - w).half~
** Processing line: ~ offset_y = (other_rect.h - h).half~
** Processing line: ~ new_rect = self.shift_rect(0, 0)~
** Processing line: ~ new_rect.x = other_rect.x + offset_x~
** Processing line: ~ new_rect.y = other_rect.y + offset_y~
** Processing line: ~ new_rect~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ center_inside_rect for self #{self} and other_rect #{other_rect}. Failed with exception #{e}.~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def center_inside_rect_y other_rect~
** Processing line: ~ offset_y = (other_rect.h - h).half~
** Processing line: ~ new_rect = self.shift_rect(0, 0)~
** Processing line: ~ new_rect.y = other_rect.y + offset_y~
** Processing line: ~ new_rect~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ center_inside_rect_y for self #{self} and other_rect #{other_rect}. Failed with exception #{e}.~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def center_inside_rect_x other_rect~
** Processing line: ~ offset_x = (other_rect.w - w).half~
** Processing line: ~ new_rect = self.shift_rect(0, 0)~
** Processing line: ~ new_rect.x = other_rect.x + offset_x~
** Processing line: ~ new_rect~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ center_inside_rect_x for self #{self} and other_rect #{other_rect}. Failed with exception #{e}.~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns a primitive that is anchored/repositioned based off its retangle.~
** Processing line: ~ # @gtk~
** Processing line: ~ def anchor_rect anchor_x, anchor_y~
** Processing line: ~ current_w = self.w~
** Processing line: ~ current_h = self.h~
** Processing line: ~ delta_x = -1 * (anchor_x * current_w)~
** Processing line: ~ delta_y = -1 * (anchor_y * current_h)~
** Processing line: ~ self.shift_rect(delta_x, delta_y)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def angle_given_point other_point~
** Processing line: ~ raise ":angle_given_point has been deprecated use :angle_from instead."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.shift_line line, x, y~
** Processing line: ~ if line.is_a?(Array) || line.is_a?(Hash)~
** Processing line: ~ new_line = line.dup~
** Processing line: ~ new_line.x += x~
** Processing line: ~ new_line.x2 += x~
** Processing line: ~ new_line.y += y~
** Processing line: ~ new_line.y2 += y~
** Processing line: ~ new_line~
** Processing line: ~ else~
** Processing line: ~ raise "shift_line for #{line} is not supported."~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.intersects_rect? *args~
** Processing line: ~ raise <<-S~
** Processing line: ~ intersects_rect? (with an \"s\") has been deprecated.~
** Processing line: ~ Use intersect_rect? instead (remove the \"s\").~
** Processing line: ~~
** Processing line: ~ * NOTE:~
** Processing line: ~ Ruby's naming convention is to *never* include the \"s\" for~
** Processing line: ~ interrogative method names (methods that end with a ?). It~
** Processing line: ~ doesn't sound grammatically correct, but that has been the~
** Processing line: ~ rule for a long time (and why intersects_rect? has been deprecated).~
** Processing line: ~~
** Processing line: ~ S~
** 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: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.angle_between_lines line_one, line_two, replace_infinity: nil~
** Processing line: ~ m_line_one = line_slope line_one, replace_infinity: replace_infinity~
** Processing line: ~ m_line_two = line_slope line_two, replace_infinity: replace_infinity~
** Processing line: ~ Math.atan((m_line_one - m_line_two) / (1 + m_line_two * m_line_one)).to_degrees~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.line_slope line, replace_infinity: nil~
** Processing line: ~ (line.y2 - line.y).fdiv(line.x2 - line.x)~
** Processing line: ~ .replace_infinity(replace_infinity)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.ray_test point, line~
** Processing line: ~ slope = (line.y2 - line.y).fdiv(line.x2 - line.x)~
** Processing line: ~~
** Processing line: ~ if line.x > line.x2~
** Processing line: ~ point_two, point_one = [point_one, point_two]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ r = ((line.x2 - line.x) * (point.y - line.y) -~
** Processing line: ~ (point.x - line.x) * (line.y2 - line.y))~
** Processing line: ~~
** Processing line: ~ if r == 0~
** Processing line: ~ return :on~
** Processing line: ~ elsif r < 0~
** Processing line: ~ return :right if slope >= 0~
** Processing line: ~ return :left~
** Processing line: ~ elsif r > 0~
** Processing line: ~ return :left if slope >= 0~
** Processing line: ~ return :right~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.line_rect line~
** Processing line: ~ if line.x > line.x2~
** Processing line: ~ x = line.x2~
** Processing line: ~ y = line.y2~
** Processing line: ~ x2 = line.x~
** Processing line: ~ y2 = line.y~
** Processing line: ~ else~
** Processing line: ~ x = line.x~
** Processing line: ~ y = line.y~
** Processing line: ~ x2 = line.x2~
** Processing line: ~ y2 = line.y2~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ w = x2 - x~
** Processing line: ~ h = y2 - y~
** Processing line: ~~
** Processing line: ~ { x: x, y: y, w: w, h: h }~
** 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: ~ 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: ~ end~
** Processing line: ~~
** Processing line: ~ def self.contract_intersect_rect?~
** Processing line: ~ [:left, :right, :top, :bottom]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.intersect_rect? rect_one, rect_two, tolerance = 0.1~
** Processing line: ~ return false if rect_one.right - tolerance < rect_two.left + tolerance~
** Processing line: ~ return false if rect_one.left + tolerance > rect_two.right - tolerance~
** Processing line: ~ return false if rect_one.top - tolerance < rect_two.bottom + tolerance~
** Processing line: ~ return false if rect_one.bottom + tolerance > rect_two.top - tolerance~
** Processing line: ~ return true~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ context_help_rect_one = (rect_one.help_contract_implementation contract_intersect_rect?)[:not_implemented_methods]~
** Processing line: ~ context_help_rect_two = (rect_two.help_contract_implementation contract_intersect_rect?)[:not_implemented_methods]~
** Processing line: ~ context_help = ""~
** Processing line: ~ if context_help_rect_one && context_help_rect_one.length > 0~
** Processing line: ~ context_help += <<-S~
** Processing line: ~ rect_one needs to implement the following methods: #{context_help_rect_one}~
** Processing line: ~~
** Processing line: ~ You may want to try include the ~AttrRect~ module which will give you these methods.~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if context_help_rect_two && context_help_rect_two.length > 0~
** Processing line: ~ context_help += <<-S~
** Processing line: ~ * FAILURE REASON:~
** Processing line: ~ rect_two needs to implement the following methods: #{context_help_rect_two}~
** Processing line: ~ NOTE: You may want to try include the ~GTK::Geometry~ module which will give you these methods.~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ raise e, <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ :intersect_rect? failed for~
** Processing line: ~ - rect_one: #{rect_one}~
** Processing line: ~ - rect_two: #{rect_two}~
** Processing line: ~ #{context_help}~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.to_square size, x, y, anchor_x = 0.5, anchor_y = nil~
** Processing line: ~ anchor_y ||= anchor_x~
** Processing line: ~ x = x.shift_left(size * anchor_x)~
** Processing line: ~ y = y.shift_down(size * anchor_y)~
** Processing line: ~ [x, y, size, size]~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, ":to_square failed for size: #{size} x: #{x} y: #{y} anchor_x: #{anchor_x} anchor_y: #{anchor_y}."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.distance point_one, point_two~
** Processing line: ~ Math.sqrt((point_two.x - point_one.x)**2 + (point_two.y - point_one.y)**2)~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, ":distance failed for point_one: #{point_one} point_two #{point_two}."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.angle_from start_point, end_point~
** Processing line: ~ d_y = end_point.y - start_point.y~
** Processing line: ~ d_x = end_point.x - start_point.x~
** Processing line: ~ Math::PI.+(Math.atan2(d_y, d_x)).to_degrees~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, ":angle_from failed for start_point: #{start_point} end_point: #{end_point}."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.angle_to start_point, end_point~
** Processing line: ~ angle_from end_point, start_point~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, ":angle_to failed for start_point: #{start_point} end_point: #{end_point}."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.point_inside_circle? point, circle_center_point, radius~
** Processing line: ~ (point.x - circle_center_point.x) ** 2 + (point.y - circle_center_point.y) ** 2 < radius ** 2~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, ":point_inside_circle? failed for point: #{point} circle_center_point: #{circle_center_point} radius: #{radius}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.inside_rect? inner_rect, outer_rect~
** Processing line: ~ inner_rect.x >= outer_rect.x &&~
** Processing line: ~ inner_rect.right <= outer_rect.right &&~
** Processing line: ~ inner_rect.y >= outer_rect.y &&~
** Processing line: ~ inner_rect.top <= outer_rect.top~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, ":inside_rect? failed for inner_rect: #{inner_rect} outer_rect: #{outer_rect}."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.scale_rect_extended rect,~
** Processing line: ~ percentage_x: percentage_x,~
** Processing line: ~ percentage_y: percentage_y,~
** Processing line: ~ anchor_x: anchor_x,~
** Processing line: ~ anchor_y: anchor_y~
** Processing line: ~ anchor_x ||= 0.0~
** Processing line: ~ anchor_y ||= 0.0~
** Processing line: ~ percentage_x ||= 1.0~
** Processing line: ~ percentage_y ||= 1.0~
** Processing line: ~ new_w = rect.w * percentage_x~
** Processing line: ~ new_h = rect.h * percentage_y~
** Processing line: ~ new_x = rect.x + (rect.w - new_w) * anchor_x~
** Processing line: ~ new_y = rect.y + (rect.h - new_h) * anchor_y~
** Processing line: ~ if rect.is_a? Array~
** Processing line: ~ return [~
** Processing line: ~ new_x,~
** Processing line: ~ new_y,~
** Processing line: ~ new_w,~
** Processing line: ~ new_h,~
** Processing line: ~ *rect[4..-1]~
** Processing line: ~ ]~
** Processing line: ~ elsif rect.is_a? Hash~
** Processing line: ~ return rect.merge(x: new_x, y: new_y, w: new_w, h: new_h)~
** Processing line: ~ else~
** Processing line: ~ rect.x = new_x~
** Processing line: ~ rect.y = new_y~
** Processing line: ~ rect.w = new_w~
** Processing line: ~ rect.h = new_h~
** Processing line: ~ return rect~
** Processing line: ~ end~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, ":scale_rect_extended failed for rect: #{rect} percentage_x: #{percentage_x} percentage_y: #{percentage_y} anchors_x: #{anchor_x} anchor_y: #{anchor_y}."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.scale_rect rect, percentage, *anchors~
** Processing line: ~ anchor_x, anchor_y = *anchors.flatten~
** Processing line: ~ anchor_x ||= 0~
** Processing line: ~ anchor_y ||= anchor_x~
** Processing line: ~ Geometry.scale_rect_extended rect,~
** Processing line: ~ percentage_x: percentage,~
** Processing line: ~ percentage_y: percentage,~
** Processing line: ~ anchor_x: anchor_x,~
** Processing line: ~ anchor_y: anchor_y~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise e, ":scale_rect failed for rect: #{rect} percentage: #{percentage} anchors [#{anchor_x} (x), #{anchor_y} (y)]."~
** Processing line: ~ end~
** Processing line: ~ end # module Geometry~
** Processing line: ~ end # module GTK~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* grid.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~grid.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/grid.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # grid.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Grid~
** Processing line: ~ include Serialize~
** Processing line: ~ SCREEN_Y_DIRECTION = -1.0~
** Processing line: ~~
** Processing line: ~ # The coordinate system currently in use.~
** Processing line: ~ #~
** Processing line: ~ # @return [Symbol] `:bottom_left` or `:center`~
** Processing line: ~ attr_accessor :name~
** Processing line: ~~
** Processing line: ~ # Returns the "x" coordinate indicating the bottom of the screen.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ attr_accessor :bottom~
** Processing line: ~~
** Processing line: ~ # Returns the "x" coordinate indicating the top of the screen.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ attr_accessor :top~
** Processing line: ~~
** Processing line: ~ # Returns the "y" coordinate indicating the left of the screen.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ attr_accessor :left~
** Processing line: ~~
** Processing line: ~ # Returns the "y" coordinate indicating the right of the screen.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ attr_accessor :right~
** Processing line: ~~
** Processing line: ~ # Returns the "x" coordinate indicating the center of the screen.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ attr_accessor :center_x~
** Processing line: ~~
** Processing line: ~ # Returns the "y" coordinate indicating the center of the screen.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ attr_accessor :center_y~
** Processing line: ~~
** Processing line: ~ # Returns the bottom left and top right coordinates in a single list.~
** Processing line: ~ #~
** Processing line: ~ # @return [[Float, Float, Float, Float]]~
** Processing line: ~ attr_accessor :rect~
** Processing line: ~~
** Processing line: ~ # Returns the "x" coordinate of the origin.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ attr_accessor :origin_x~
** Processing line: ~~
** Processing line: ~ # Returns the "y" coordinate of the origin.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ attr_accessor :origin_y~
** Processing line: ~~
** Processing line: ~ attr_accessor :left_margin, :bottom_margin~
** Processing line: ~~
** Processing line: ~ def initialize runtime~
** Processing line: ~ @runtime = runtime~
** Processing line: ~ @ffi_draw = runtime.ffi_draw~
** Processing line: ~ origin_bottom_left!~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns `x` plus the origin "x".~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ def transform_x x~
** Processing line: ~ @origin_x + x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns `x` minus the origin "x".~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ def untransform_x x~
** Processing line: ~ x - @origin_x~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns `y` plus the origin "y".~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ def transform_y y~
** Processing line: ~ @origin_y + y * SCREEN_Y_DIRECTION~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns `y` minus the origin "y".~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ def untransform_y y~
** Processing line: ~ @origin_y + y * SCREEN_Y_DIRECTION~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def ffi_draw~
** Processing line: ~ @ffi_draw~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def ffi_draw= value~
** Processing line: ~ @ffi_draw = value~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the rendering coordinate system to have its origin in the bottom left.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ # @gtk~
** Processing line: ~ def origin_bottom_left!~
** Processing line: ~ return if @name == :bottom_left~
** Processing line: ~ @name = :bottom_left~
** Processing line: ~ @origin_x = 0.0~
** Processing line: ~ @origin_y = @runtime.logical_height~
** Processing line: ~ @left = 0.0~
** Processing line: ~ @right = @runtime.logical_width~
** Processing line: ~ @top = @runtime.logical_height~
** Processing line: ~ @bottom = 0.0~
** Processing line: ~ @left_margin = 0.0~
** Processing line: ~ @bottom_margin = 0.0~
** Processing line: ~ @center_x = @runtime.logical_width.half~
** Processing line: ~ @center_y = @runtime.logical_height.half~
** Processing line: ~ @rect = [@left, @bottom, @runtime.logical_width, @runtime.logical_height].rect~
** Processing line: ~ @center = [@center_x, @center_y].point~
** Processing line: ~ @ffi_draw.set_grid @origin_x, @origin_y, SCREEN_Y_DIRECTION~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Sets the rendering coordinate system to have its origin in the center.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ # @gtk~
** Processing line: ~ def origin_center!~
** Processing line: ~ return if @name == :center~
** Processing line: ~ @name = :center~
** Processing line: ~ @origin_x = @runtime.logical_width.half~
** Processing line: ~ @origin_y = @runtime.logical_height.half~
** Processing line: ~ @left = -@runtime.logical_width.half~
** Processing line: ~ @right = @runtime.logical_width.half~
** Processing line: ~ @top = @runtime.logical_height.half~
** Processing line: ~ @bottom = -@runtime.logical_height.half~
** Processing line: ~ @center_x = 0.0~
** Processing line: ~ @center_y = 0.0~
** Processing line: ~ @rect = [@left, @bottom, @runtime.logical_width, @runtime.logical_height].rect~
** Processing line: ~ @center = [@center_x, @center_y].point~
** Processing line: ~ @ffi_draw.set_grid @origin_x, @origin_y, SCREEN_Y_DIRECTION~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The logical width used for rendering.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ def w~
** Processing line: ~ @runtime.logical_width~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Half the logical width used for rendering.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ def w_half~
** Processing line: ~ w.half~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The logical height used for rendering.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ def h~
** Processing line: ~ @runtime.logical_height~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Half the logical height used for rendering.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float]~
** Processing line: ~ def h_half~
** Processing line: ~ h.half~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns the coordinates indicating the center of the screen.~
** Processing line: ~ #~
** Processing line: ~ # @return [[Float, Float]]~
** Processing line: ~ def center~
** Processing line: ~ @center~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns the coordinates indicating the bottom right of the screen.~
** Processing line: ~ #~
** Processing line: ~ # @return [[Float, Float]]~
** Processing line: ~ def bottom_right~
** Processing line: ~ [@right, @bottom].point~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* inputs.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~inputs.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/inputs.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # inputs.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ # Represents all the keys available on the keyboard.~
** Processing line: ~ # @gtk~
** Processing line: ~ class KeyboardKeys~
** Processing line: ~ include Serialize~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_accessor :exclamation_point,~
** Processing line: ~ :zero, :one, :two, :three, :four,~
** Processing line: ~ :five, :six, :seven, :eight, :nine,~
** Processing line: ~ :backspace, :delete, :escape, :enter, :tab,~
** Processing line: ~ :open_round_brace, :close_round_brace,~
** Processing line: ~ :open_curly_brace, :close_curly_brace,~
** Processing line: ~ :open_square_brace, :close_square_brace,~
** Processing line: ~ :colon, :semicolon, :equal_sign,~
** Processing line: ~ :hyphen, :space, :dollar_sign,~
** Processing line: ~ :double_quotation_mark,~
** Processing line: ~ :single_quotation_mark,~
** Processing line: ~ :backtick,~
** Processing line: ~ :tilde, :period, :comma, :pipe,~
** Processing line: ~ :underscore,~
** Processing line: ~ :a, :b, :c, :d, :e, :f, :g, :h,~
** Processing line: ~ :i, :j, :k, :l, :m, :n, :o, :p,~
** Processing line: ~ :q, :r, :s, :t, :u, :v, :w, :x,~
** Processing line: ~ :y, :z,~
** Processing line: ~ :shift, :control, :alt, :meta,~
** Processing line: ~ :left, :right, :up, :down, :pageup, :pagedown,~
** Processing line: ~ :char, :plus, :at, :forward_slash, :back_slash, :asterisk,~
** Processing line: ~ :less_than, :greater_than, :carat, :ampersand, :superscript_two,~
** Processing line: ~ :circumflex,~
** Processing line: ~ :question_mark, :section_sign, :ordinal_indicator,~
** Processing line: ~ :raw_key~
** Processing line: ~~
** Processing line: ~ def self.sdl_to_key raw_key, modifier~
** Processing line: ~ return nil unless (raw_key >= 0 && raw_key <= 255) ||~
** Processing line: ~ raw_key == 1073741903 ||~
** Processing line: ~ raw_key == 1073741904 ||~
** Processing line: ~ raw_key == 1073741905 ||~
** Processing line: ~ raw_key == 1073741906 ||~
** Processing line: ~ raw_key == 1073741899 ||~
** Processing line: ~ raw_key == 1073741902~
** Processing line: ~~
** Processing line: ~ char = KeyboardKeys.char_with_shift raw_key, modifier~
** Processing line: ~ names = KeyboardKeys.char_to_method char, raw_key~
** Processing line: ~ names << :alt if (modifier & (256|512)) != 0 # alt key~
** Processing line: ~ names << :meta if (modifier & (1024|2048)) != 0 # meta key (command/apple/windows key)~
** Processing line: ~ names << :control if (modifier & (64|128)) != 0 # ctrl key~
** Processing line: ~ names << :shift if (modifier & (1|2)) != 0 # shift key~
** Processing line: ~ names~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.utf_8_char raw_key~
** Processing line: ~ return "²" if raw_key == 178~
** Processing line: ~ return "§" if raw_key == 167~
** Processing line: ~ return "º" if raw_key == 186~
** Processing line: ~ return raw_key.chr~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.char_with_shift raw_key, modifier~
** Processing line: ~ return nil unless raw_key >= 0 && raw_key <= 255~
** Processing line: ~ if modifier != 1 && modifier != 2 && modifier != 3~
** Processing line: ~ return utf_8_char raw_key~
** Processing line: ~ else~
** Processing line: ~ @shift_keys ||= {~
** Processing line: ~ '`' => '~', '-' => '_', "'" => '"', "1" => '!',~
** Processing line: ~ "2" => '@', "3" => '#', "4" => '$', "5" => '%',~
** Processing line: ~ "6" => '^', "7" => '&', "8" => '*', "9" => '(',~
** Processing line: ~ "0" => ')', ";" => ":", "=" => "+", "[" => "{",~
** Processing line: ~ "]" => "}", '\\'=> "|", '/' => "?", '.' => ">",~
** Processing line: ~ ',' => "<", 'a' => 'A', 'b' => 'B', 'c' => 'C',~
** Processing line: ~ 'd' => 'D', 'e' => 'E', 'f' => 'F', 'g' => 'G',~
** Processing line: ~ 'h' => 'H', 'i' => 'I', 'j' => 'J', 'k' => 'K',~
** Processing line: ~ 'l' => 'L', 'm' => 'M', 'n' => 'N', 'o' => 'O',~
** Processing line: ~ 'p' => 'P', 'q' => 'Q', 'r' => 'R', 's' => 'S',~
** Processing line: ~ 't' => 'T', 'u' => 'U', 'v' => 'V', 'w' => 'W',~
** Processing line: ~ 'x' => 'X', 'y' => 'Y', 'z' => 'Z'~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ @shift_keys[raw_key.chr.to_s] || raw_key.chr.to_s~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.char_to_method_hash~
** Processing line: ~ @char_to_method ||= {~
** Processing line: ~ 'A' => [:a, :shift],~
** Processing line: ~ 'B' => [:b, :shift],~
** Processing line: ~ 'C' => [:c, :shift],~
** Processing line: ~ 'D' => [:d, :shift],~
** Processing line: ~ 'E' => [:e, :shift],~
** Processing line: ~ 'F' => [:f, :shift],~
** Processing line: ~ 'G' => [:g, :shift],~
** Processing line: ~ 'H' => [:h, :shift],~
** Processing line: ~ 'I' => [:i, :shift],~
** Processing line: ~ 'J' => [:j, :shift],~
** Processing line: ~ 'K' => [:k, :shift],~
** Processing line: ~ 'L' => [:l, :shift],~
** Processing line: ~ 'M' => [:m, :shift],~
** Processing line: ~ 'N' => [:n, :shift],~
** Processing line: ~ 'O' => [:o, :shift],~
** Processing line: ~ 'P' => [:p, :shift],~
** Processing line: ~ 'Q' => [:q, :shift],~
** Processing line: ~ 'R' => [:r, :shift],~
** Processing line: ~ 'S' => [:s, :shift],~
** Processing line: ~ 'T' => [:t, :shift],~
** Processing line: ~ 'U' => [:u, :shift],~
** Processing line: ~ 'V' => [:v, :shift],~
** Processing line: ~ 'W' => [:w, :shift],~
** Processing line: ~ 'X' => [:x, :shift],~
** Processing line: ~ 'Y' => [:y, :shift],~
** Processing line: ~ 'Z' => [:z, :shift],~
** Processing line: ~ "!" => [:exclamation_point],~
** Processing line: ~ "0" => [:zero],~
** Processing line: ~ "1" => [:one],~
** Processing line: ~ "2" => [:two],~
** Processing line: ~ "3" => [:three],~
** Processing line: ~ "4" => [:four],~
** Processing line: ~ "5" => [:five],~
** Processing line: ~ "6" => [:six],~
** Processing line: ~ "7" => [:seven],~
** Processing line: ~ "8" => [:eight],~
** Processing line: ~ "9" => [:nine],~
** Processing line: ~ "\b" => [:backspace],~
** Processing line: ~ "\e" => [:escape],~
** Processing line: ~ "\r" => [:enter],~
** Processing line: ~ "\t" => [:tab],~
** Processing line: ~ "(" => [:open_round_brace],~
** Processing line: ~ ")" => [:close_round_brace],~
** Processing line: ~ "{" => [:open_curly_brace],~
** Processing line: ~ "}" => [:close_curly_brace],~
** Processing line: ~ "[" => [:open_square_brace],~
** Processing line: ~ "]" => [:close_square_brace],~
** Processing line: ~ ":" => [:colon],~
** Processing line: ~ ";" => [:semicolon],~
** Processing line: ~ "=" => [:equal_sign],~
** Processing line: ~ "-" => [:hyphen],~
** Processing line: ~ " " => [:space],~
** Processing line: ~ "$" => [:dollar_sign],~
** Processing line: ~ "\"" => [:double_quotation_mark],~
** Processing line: ~ "'" => [:single_quotation_mark],~
** Processing line: ~ "`" => [:backtick],~
** Processing line: ~ "~" => [:tilde],~
** Processing line: ~ "." => [:period],~
** Processing line: ~ "," => [:comma],~
** Processing line: ~ "|" => [:pipe],~
** Processing line: ~ "_" => [:underscore],~
** Processing line: ~ "#" => [:hash],~
** Processing line: ~ "+" => [:plus],~
** Processing line: ~ "@" => [:at],~
** Processing line: ~ "/" => [:forward_slash],~
** Processing line: ~ "\\" => [:back_slash],~
** Processing line: ~ "*" => [:asterisk],~
** Processing line: ~ "<" => [:less_than],~
** Processing line: ~ ">" => [:greater_than],~
** Processing line: ~ "^" => [:circumflex],~
** Processing line: ~ "&" => [:ampersand],~
** Processing line: ~ "²" => [:superscript_two],~
** Processing line: ~ "§" => [:section_sign],~
** Processing line: ~ "?" => [:question_mark],~
** Processing line: ~ '%' => [:percent_sign],~
** Processing line: ~ "º" => [:ordinal_indicator],~
** Processing line: ~ 1073741903 => [:right],~
** Processing line: ~ 1073741904 => [:left],~
** Processing line: ~ 1073741905 => [:down],~
** Processing line: ~ 1073741906 => [:up],~
** Processing line: ~ 1073741899 => [:pageup],~
** Processing line: ~ 1073741902 => [:pagedown],~
** Processing line: ~ 127 => [:delete]~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.char_to_method char, int = nil~
** Processing line: ~ char_to_method_hash[char] || char_to_method_hash[int] || [char.to_sym || int]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def clear~
** Processing line: ~ set truthy_keys, false~
** Processing line: ~ @scrubbed_ivars = nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def left_right~
** Processing line: ~ return -1 if self.left~
** Processing line: ~ return 1 if self.right~
** Processing line: ~ return 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def up_down~
** Processing line: ~ return 1 if self.up~
** Processing line: ~ return -1 if self.down~
** Processing line: ~ return 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def truthy_keys~
** Processing line: ~ get(all).find_all { |_, v| v }~
** Processing line: ~ .map { |k, _| k.to_sym }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def all? keys~
** Processing line: ~ values = get(keys.map { |k| k.without_ending_bang })~
** Processing line: ~ all_true = values.all? do |k, v|~
** Processing line: ~ v~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if all_true~
** Processing line: ~ keys.each do |k|~
** Processing line: ~ clear_key k if k.end_with_bang?~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ all_true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def any? keys~
** Processing line: ~ values = get(keys.map { |k| k.without_ending_bang })~
** Processing line: ~ any_true = values.any? do |k, v|~
** Processing line: ~ v~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if any_true~
** Processing line: ~ keys.each do |k|~
** Processing line: ~ clear_key k if k.end_with_bang?~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ any_true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def clear_key key~
** Processing line: ~ @scrubbed_ivars = nil~
** Processing line: ~ self.instance_variable_set("@#{key.without_ending_bang}", false)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def all~
** Processing line: ~ @scrubbed_ivars ||= self.instance_variables~
** Processing line: ~ .reject { |i| i == :@all || i == :@scrubbed_ivars }~
** Processing line: ~ .map { |i| i.to_s.gsub("@", "") }~
** Processing line: ~~
** Processing line: ~ get(@scrubbed_ivars).map { |k, _| k }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def get collection~
** Processing line: ~ return [] if collection.length == 0~
** Processing line: ~ collection.map do |m|~
** Processing line: ~ if m.end_with_bang?~
** Processing line: ~ clear_after_return = true~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ value = self.instance_variable_get("@#{m.without_ending_bang}".to_sym)~
** Processing line: ~ clear_key m if clear_after_return~
** Processing line: ~ [m.without_ending_bang, value]~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def set collection, value = true~
** Processing line: ~ return if collection.length == 0~
** Processing line: ~ @scrubbed_ivars = nil~
** 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: ~ rescue Exception => e~
** Processing line: ~ raise e, <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ Attempted to set the a key on the DragonRuby GTK's Keyboard data~
** Processing line: ~ structure, but the property isn't available for raw_key #{raw_key} #{m}.~
** Processing line: ~~
** Processing line: ~ You should contact DragonRuby and tell them to associate the raw_key #{raw_key}~
** Processing line: ~ with a friendly property name (we are open to suggestions if you have any).~
** Processing line: ~ [GTK::KeyboardKeys#set, GTK::KeyboardKeys#char_to_method]~
** Processing line: ~~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def method_missing m, *args~
** Processing line: ~ begin~
** Processing line: ~ define_singleton_method(m) do~
** Processing line: ~ r = self.instance_variable_get("@#{m.without_ending_bang}".to_sym)~
** Processing line: ~ clear_key m~
** Processing line: ~ return r~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ return self.send m~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ log_important "#{e}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ raise <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ There is no member on the keyboard called #{m}. Here is a to_s representation of what's available:~
** Processing line: ~~
** Processing line: ~ #{KeyboardKeys.char_to_method_hash.map { |k, v| "[#{k} => #{v.join(",")}]" }.join(" ")}~
** Processing line: ~~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ hash = super~
** Processing line: ~ hash.delete(:scrubbed_ivars)~
** Processing line: ~ hash[:truthy_keys] = self.truthy_keys~
** Processing line: ~ hash~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ # @gtk~
** Processing line: ~ class Keyboard~
** Processing line: ~~
** Processing line: ~ # @return [KeyboardKeys]~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_accessor :key_up~
** Processing line: ~~
** Processing line: ~ # @return [KeyboardKeys]~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_accessor :key_held~
** Processing line: ~~
** Processing line: ~ # @return [KeyboardKeys]~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_accessor :key_down~
** Processing line: ~~
** Processing line: ~ # @return [Boolean]~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_accessor :has_focus~
** Processing line: ~~
** Processing line: ~ def initialize~
** Processing line: ~ @key_up = KeyboardKeys.new~
** Processing line: ~ @key_held = KeyboardKeys.new~
** Processing line: ~ @key_down = KeyboardKeys.new~
** Processing line: ~ @has_focus = false~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def p~
** Processing line: ~ @key_down.p || @key_held.p~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The left arrow or "a" was pressed.~
** Processing line: ~ #~
** Processing line: ~ # @return [Boolean]~
** Processing line: ~ def left~
** Processing line: ~ @key_up.left || @key_held.left || a~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The right arrow or "d" was pressed.~
** Processing line: ~ #~
** Processing line: ~ # @return [Boolean]~
** Processing line: ~ def right~
** Processing line: ~ @key_up.right || @key_held.right || d~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The up arrow or "w" was pressed.~
** Processing line: ~ #~
** Processing line: ~ # @return [Boolean]~
** Processing line: ~ def up~
** Processing line: ~ @key_up.up || @key_held.up || w~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The down arrow or "s" was pressed.~
** Processing line: ~ #~
** Processing line: ~ # @return [Boolean]~
** Processing line: ~ def down~
** Processing line: ~ @key_up.down || @key_held.down || s~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Clear all current key presses.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ def clear~
** Processing line: ~ @key_up.clear~
** Processing line: ~ @key_held.clear~
** Processing line: ~ @key_down.clear~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ {~
** Processing line: ~ key_up: @key_up.serialize,~
** Processing line: ~ key_held: @key_held.serialize,~
** Processing line: ~ key_down: @key_down.serialize,~
** Processing line: ~ has_focus: @has_focus~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~ alias_method :inspect, :serialize~
** Processing line: ~~
** Processing line: ~ # @return [String]~
** Processing line: ~ def to_s~
** Processing line: ~ serialize.to_s~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def key~
** Processing line: ~ {~
** Processing line: ~ down: @key_down.truthy_keys,~
** Processing line: ~ held: @key_held.truthy_keys,~
** Processing line: ~ down_or_held: (@key_down.truthy_keys + @key_held.truthy_keys).uniq,~
** Processing line: ~ up: @key_up.truthy_keys,~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~ alias_method :keys, :key~
** Processing line: ~~
** Processing line: ~ include DirectionalInputHelperMethods~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class MousePoint~
** Processing line: ~ include GTK::Geometry~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_accessor :x, :y, :point, :created_at, :global_created_at~
** Processing line: ~~
** Processing line: ~ def initialize x, y~
** Processing line: ~ @x = x~
** Processing line: ~ @y = y~
** Processing line: ~ @point = [x, y]~
** Processing line: ~ @created_at = Kernel.tick_count~
** Processing line: ~ @global_created_at = Kernel.global_tick_count~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def w; 0; end~
** Processing line: ~ def h; 0; end~
** Processing line: ~ def left; x; end~
** Processing line: ~ def right; x; end~
** Processing line: ~ def top; y; end~
** Processing line: ~ def bottom; y; end~
** Processing line: ~~
** Processing line: ~ def created_at_elapsed~
** Processing line: ~ @created_at.elapsed_time~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_hash~
** Processing line: ~ serialize~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ {~
** Processing line: ~ x: @x,~
** Processing line: ~ y: @y,~
** Processing line: ~ created_at: @created_at,~
** Processing line: ~ global_created_at: @global_created_at~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inspect~
** Processing line: ~ serialize.to_s~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_s~
** Processing line: ~ serialize.to_s~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Provides access to the mouse.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ class Mouse~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_accessor :moved,~
** Processing line: ~ :moved_at,~
** Processing line: ~ :global_moved_at,~
** Processing line: ~ :up, :has_focus,~
** Processing line: ~ :button_bits, :button_left,~
** Processing line: ~ :button_middle, :button_right,~
** Processing line: ~ :button_x1, :button_x2,~
** Processing line: ~ :wheel~
** Processing line: ~~
** Processing line: ~ attr_accessor :click~
** Processing line: ~ attr_accessor :previous_click~
** Processing line: ~ attr_accessor :x~
** Processing line: ~ attr_accessor :y~
** Processing line: ~~
** Processing line: ~ def initialize~
** Processing line: ~ @x = 0~
** Processing line: ~ @y = 0~
** Processing line: ~ @has_focus = false~
** Processing line: ~ @button_bits = 0~
** Processing line: ~ @button_left = false~
** Processing line: ~ @button_middle = false~
** Processing line: ~ @button_right = false~
** Processing line: ~ @button_x1 = false~
** Processing line: ~ @button_x2 = false~
** Processing line: ~ clear~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def point~
** Processing line: ~ [@x, @y].point~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def inside_rect? rect~
** Processing line: ~ point.inside_rect? rect~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ alias_method :position, :point~
** Processing line: ~~
** Processing line: ~ def clear~
** Processing line: ~ if @click~
** Processing line: ~ @previous_click = MousePoint.new @click.point.x, @click.point.y~
** Processing line: ~ @previous_click.created_at = @click.created_at~
** Processing line: ~ @previous_click.global_created_at = @click.global_created_at~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ @click = nil~
** Processing line: ~ @up = nil~
** Processing line: ~ @moved = nil~
** Processing line: ~ @wheel = nil~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def up~
** Processing line: ~ @up~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def down~
** Processing line: ~ @click~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ result = {}~
** Processing line: ~~
** Processing line: ~ if @click~
** Processing line: ~ result[:click] = @click.to_hash~
** Processing line: ~ result[:down] = @click.to_hash~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ result[:up] = @up.to_hash if @up~
** Processing line: ~ result[:x] = @x~
** Processing line: ~ result[:y] = @y~
** Processing line: ~ result[:moved] = @moved~
** Processing line: ~ result[:moved_at] = @moved_at~
** Processing line: ~ result[:has_focus] = @has_focus~
** Processing line: ~~
** Processing line: ~ result~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_s~
** Processing line: ~ serialize.to_s~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ alias_method :inspect, :to_s~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ # @gtk~
** Processing line: ~ class Inputs~
** Processing line: ~~
** Processing line: ~ # A list of all controllers.~
** Processing line: ~ #~
** Processing line: ~ # @return [Controller[]]~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_reader :controllers~
** Processing line: ~~
** Processing line: ~ # @return [Keyboard]~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_reader :keyboard~
** Processing line: ~~
** Processing line: ~ # @return [Mouse]~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_reader :mouse~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ attr_accessor :text, :history~
** Processing line: ~~
** Processing line: ~ def initialize~
** Processing line: ~ @controllers = [Controller.new, Controller.new]~
** Processing line: ~ @keyboard = Keyboard.new~
** Processing line: ~ @mouse = Mouse.new~
** Processing line: ~ @text = []~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def up~
** Processing line: ~ keyboard.up ||~
** Processing line: ~ (controller_one && controller_one.up)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def down~
** Processing line: ~ keyboard.down ||~
** Processing line: ~ (controller_one && controller_one.down)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def left~
** Processing line: ~ keyboard.left ||~
** Processing line: ~ (controller_one && controller_one.left)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def right~
** Processing line: ~ keyboard.right ||~
** Processing line: ~ (controller_one && controller_one.right)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def directional_vector~
** Processing line: ~ keyboard.directional_vector ||~
** Processing line: ~ (controller_one && controller_one.directional_vector)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns a signal indicating right (`1`), left (`-1`), or neither ('0').~
** Processing line: ~ #~
** Processing line: ~ # @return [Integer]~
** Processing line: ~ def left_right~
** Processing line: ~ return -1 if self.left~
** Processing line: ~ return 1 if self.right~
** Processing line: ~ return 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns a signal indicating up (`1`), down (`-1`), or neither ('0').~
** Processing line: ~ #~
** Processing line: ~ # @return [Integer]~
** Processing line: ~ def up_down~
** Processing line: ~ return 1 if self.up~
** Processing line: ~ return -1 if self.down~
** Processing line: ~ return 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns the coordinates of the last click.~
** Processing line: ~ #~
** Processing line: ~ # @return [Float, Float]~
** Processing line: ~ def click~
** Processing line: ~ return nil unless @mouse.click~
** Processing line: ~ return @mouse.click.point~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The first controller.~
** Processing line: ~ #~
** Processing line: ~ # @return [Controller]~
** Processing line: ~ def controller_one~
** Processing line: ~ @controllers[0]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # The second controller.~
** Processing line: ~ #~
** Processing line: ~ # @return [Controller]~
** Processing line: ~ def controller_two~
** Processing line: ~ @controllers[1]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Clears all inputs.~
** Processing line: ~ #~
** Processing line: ~ # @return [void]~
** Processing line: ~ def clear~
** Processing line: ~ @mouse.clear~
** Processing line: ~ @keyboard.clear~
** Processing line: ~ @controllers.each(&:clear)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @return [Hash]~
** Processing line: ~ def serialize~
** Processing line: ~ {~
** Processing line: ~ controller_one: controller_one.serialize,~
** Processing line: ~ controller_two: controller_two.serialize,~
** Processing line: ~ keyboard: keyboard.serialize,~
** Processing line: ~ mouse: mouse.serialize,~
** Processing line: ~ text: text.serialize~
** Processing line: ~ }~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* log.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~log.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/log.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # log.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ XTERM_COLOR = {~
** Processing line: ~ black: "\u001b[30m",~
** Processing line: ~ red: "\u001b[31m",~
** Processing line: ~ green: "\u001b[32m",~
** Processing line: ~ yellow: "\u001b[33m",~
** Processing line: ~ blue: "\u001b[34m",~
** Processing line: ~ magenta: "\u001b[35m",~
** Processing line: ~ cyan: "\u001b[36m",~
** Processing line: ~ white: "\u001b[37m",~
** Processing line: ~ bright_black: "\u001b[30;1m",~
** Processing line: ~ bright_red: "\u001b[31;1m",~
** Processing line: ~ bright_green: "\u001b[32;1m",~
** Processing line: ~ bright_yellow: "\u001b[33;1m",~
** Processing line: ~ bright_blue: "\u001b[34;1m",~
** Processing line: ~ bright_magenta: "\u001b[35;1m",~
** Processing line: ~ bright_cyan: "\u001b[36;1m",~
** Processing line: ~ bright_white: "\u001b[37;1m",~
** Processing line: ~ reset: "\u001b[0m",~
** Processing line: ~ }~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Log~
** Processing line: ~ def self.write_to_log_and_puts *args~
** Processing line: ~ return if $gtk.production~
** Processing line: ~ $gtk.append_file_root 'logs/log.txt', args.join("\n") + "\n"~
** Processing line: ~ args.each { |obj| $gtk.log obj, self }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.write_to_log_and_print *args~
** Processing line: ~ return if $gtk.production~
** Processing line: ~ $gtk.append_file_root 'logs/log.txt', args.join("\n")~
** Processing line: ~ Object.print(*args)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.puts_important *args~
** Processing line: ~ return if $gtk.production~
** Processing line: ~ $gtk.append_file_root 'logs/log.txt', args.join("\n")~
** Processing line: ~ $gtk.notify! "Important notification occurred."~
** Processing line: ~ args.each { |obj| $gtk.log obj }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.puts *args~
** Processing line: ~ message_id, message = args~
** Processing line: ~ message ||= message_id~
** Processing line: ~ write_to_log_and_puts message~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.multiline? *args~
** Processing line: ~ return true if args.length > 1~
** Processing line: ~ return !args[0].to_s.multiline?~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.join_lines args~
** Processing line: ~ return "" if args.length == 0~
** Processing line: ~ return args if args.is_a? String~
** Processing line: ~ return args[0] if args.length == 1~
** Processing line: ~ return args.to_s.join("\n")~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.headline name~
** Processing line: ~ @asterisk_count ||= 1~
** Processing line: ~ @asterisk_count = @asterisk_count.greater(1)~
** Processing line: ~ result_from_yield = join_lines yield~
** Processing line: ~ result_from_yield = result_from_yield.each_line.map { |l| " #{l}" }.join~
** Processing line: ~ r ="#{"*" * @asterisk_count} #{name}\n#{result_from_yield}"~
** Processing line: ~ @asterisk_count -= 1~
** Processing line: ~ @asterisk_count = @asterisk_count.greater(1)~
** Processing line: ~ r~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.dynamic_block~
** Processing line: ~ "#+BEGIN:~
** Processing line: ~ #{join_lines yield}~
** Processing line: ~ #+END:~
** Processing line: ~~
** Processing line: ~ "~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.puts_error *args~
** Processing line: ~ args ||= []~
** Processing line: ~ title = args[0]~
** Processing line: ~ additional = args[1..-1] || []~
** Processing line: ~ additional = "" if additional.length == 0~
** Processing line: ~ if !title.multiline? && join_lines(additional).multiline?~
** Processing line: ~ message = headline "ERROR: #{title}" do~
** Processing line: ~ dynamic_block do~
** Processing line: ~ additional~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ elsif title.multiline?~
** Processing line: ~ message = headline "ERROR: " do~
** Processing line: ~ dynamic_block do~
** Processing line: ~ args~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ message = "* ERROR: #{title} #{additional}".strip~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ self.puts message~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.puts_info *args~
** Processing line: ~ args ||= []~
** Processing line: ~ title = args[0]~
** Processing line: ~ additional = args[1..-1] || []~
** Processing line: ~ additional = "" if additional.length == 0~
** Processing line: ~ if !title.multiline? && join_lines(additional).multiline?~
** Processing line: ~ message = headline "INFO: #{title}" do~
** Processing line: ~ dynamic_block do~
** Processing line: ~ additional~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ elsif title.multiline?~
** Processing line: ~ message = headline "INFO: " do~
** Processing line: ~ dynamic_block do~
** Processing line: ~ args~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ else~
** Processing line: ~ message = "* INFO: #{title} #{additional}".strip~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ self.puts message~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.puts_once *ids, message~
** Processing line: ~ id = "#{ids}"~
** Processing line: ~ @once ||= {}~
** Processing line: ~ return if @once[id]~
** Processing line: ~ @once[id] = id~
** Processing line: ~ if !$gtk.cli_arguments[:replay] && !$gtk.cli_arguments[:record]~
** Processing line: ~ $gtk.notify!("Open the DragonRuby Console by pressing [`] [~] [²] [^] [º] or [§]. [Message ID: #{id}].")~
** Processing line: ~ end~
** Processing line: ~ write_to_log_and_puts ""~
** Processing line: ~ write_to_log_and_puts "#{message.strip}"~
** Processing line: ~ write_to_log_and_puts ""~
** Processing line: ~ write_to_log_and_puts "[Message ID: #{id}]"~
** Processing line: ~ write_to_log_and_puts ""~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.puts_once_info *ids, message~
** Processing line: ~ id = "#{ids}"~
** Processing line: ~ @once ||= {}~
** Processing line: ~ return if @once[id]~
** Processing line: ~ @once[id] = id~
** Processing line: ~ log_info message~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.print *args~
** Processing line: ~ write_to_log_and_print(*args)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ class Object~
** Processing line: ~ def log_print *args~
** Processing line: ~ GTK::Log.print(*args)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_important *args~
** Processing line: ~ GTK::Log.puts_important(*args)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log *args~
** Processing line: ~ GTK::Log.puts(*args)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_with_color xterm_escape_code, *args~
** Processing line: ~ log_print xterm_escape_code~
** Processing line: ~ log(*args)~
** Processing line: ~ ensure~
** Processing line: ~ log_reset_color~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_reset_color~
** Processing line: ~ log_print XTERM_COLOR[:reset]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_black *args~
** Processing line: ~ log_with_color XTERM_COLOR[:black], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_red *args~
** Processing line: ~ log_with_color XTERM_COLOR[:red], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_green *args~
** Processing line: ~ log_with_color XTERM_COLOR[:green], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_yellow *args~
** Processing line: ~ log_with_color XTERM_COLOR[:yellow], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_blue *args~
** Processing line: ~ log_with_color XTERM_COLOR[:blue], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_magenta *args~
** Processing line: ~ log_with_color XTERM_COLOR[:magenta], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_cyan *args~
** Processing line: ~ log_with_color XTERM_COLOR[:cyan], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_white *args~
** Processing line: ~ log_with_color XTERM_COLOR[:white], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_bright_black *args~
** Processing line: ~ log_with_color XTERM_COLOR[:bright_black], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_bright_red *args~
** Processing line: ~ log_with_color XTERM_COLOR[:bright_red], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_bright_green *args~
** Processing line: ~ log_with_color XTERM_COLOR[:bright_green], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_bright_yellow *args~
** Processing line: ~ log_with_color XTERM_COLOR[:bright_yellow], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_bright_blue *args~
** Processing line: ~ log_with_color XTERM_COLOR[:bright_blue], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_bright_magenta *args~
** Processing line: ~ log_with_color XTERM_COLOR[:bright_magenta], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_bright_cyan *args~
** Processing line: ~ log_with_color XTERM_COLOR[:bright_cyan], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_bright_white *args~
** Processing line: ~ log_with_color XTERM_COLOR[:bright_white], *args~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_error *args~
** Processing line: ~ GTK::Log.puts_error(*args)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_info *args~
** Processing line: ~ GTK::Log.puts_info(*args)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_once *ids, message~
** Processing line: ~ GTK::Log.puts_once(*ids, message)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_once_info *ids, message~
** Processing line: ~ GTK::Log.puts_once_info(*ids, message)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* numeric.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~numeric.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/numeric.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # numeric.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ class Numeric~
** Processing line: ~ include ValueType~
** Processing line: ~ include NumericDeprecated~
** Processing line: ~~
** Processing line: ~ alias_method :gte, :>=~
** Processing line: ~ alias_method :lte, :<=~
** Processing line: ~~
** Processing line: ~ # Converts a numeric value representing seconds into frames.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def seconds~
** Processing line: ~ self * 60~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Divides the number by `2.0` and returns a `float`.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def half~
** Processing line: ~ self / 2.0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def to_byte~
** Processing line: ~ clamp(0, 255).to_i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def elapsed_time tick_count_override = nil~
** Processing line: ~ (tick_count_override || Kernel.tick_count) - self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def elapsed_time_percent duration~
** Processing line: ~ elapsed_time.percentage_of duration~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def new?~
** Processing line: ~ elapsed_time == 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns `true` if the numeric value has passed a duration/offset number.~
** Processing line: ~ # `Kernel.tick_count` is used to determine if a number represents an elapsed~
** Processing line: ~ # moment in time.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def elapsed? offset = 0, tick_count_override = Kernel.tick_count~
** Processing line: ~ (self + offset) < tick_count_override~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def frame_index *opts~
** Processing line: ~ frame_count_or_hash, hold_for, repeat, tick_count_override = opts~
** Processing line: ~ if frame_count_or_hash.is_a? Hash~
** Processing line: ~ frame_count = frame_count_or_hash[:count]~
** Processing line: ~ hold_for = frame_count_or_hash[:hold_for]~
** Processing line: ~ repeat = frame_count_or_hash[:repeat]~
** Processing line: ~ tick_count_override = frame_count_or_hash[:tick_count_override]~
** Processing line: ~ else~
** Processing line: ~ frame_count = frame_count_or_hash~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ tick_count_override ||= Kernel.tick_count~
** Processing line: ~ animation_frame_count = frame_count~
** Processing line: ~ animation_frame_hold_time = hold_for~
** Processing line: ~ animation_length = animation_frame_hold_time * animation_frame_count~
** Processing line: ~ return nil if Kernel.tick_count < self~
** Processing line: ~~
** Processing line: ~ if !repeat && (self + animation_length) < (tick_count_override - 1)~
** Processing line: ~ return nil~
** Processing line: ~ else~
** Processing line: ~ return self.elapsed_time.-(1).idiv(animation_frame_hold_time) % animation_frame_count~
** Processing line: ~ end~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ #{opts}~
** Processing line: ~ #{e}~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def zero?~
** Processing line: ~ self == 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def zero~
** Processing line: ~ 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def one~
** Processing line: ~ 1~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def two~
** Processing line: ~ 2~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def five~
** Processing line: ~ 5~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def ten~
** Processing line: ~ 10~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ alias_method :gt, :>~
** Processing line: ~ alias_method :above?, :>~
** Processing line: ~ alias_method :right_of?, :>~
** Processing line: ~~
** Processing line: ~ alias_method :lt, :<~
** Processing line: ~ alias_method :below?, :<~
** Processing line: ~ alias_method :left_of?, :<~
** Processing line: ~~
** Processing line: ~ def shift_right i~
** Processing line: ~ self + i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def shift_left i~
** Processing line: ~ shift_right(i * -1)~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise_immediately e, :shift_left, i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def shift_up i~
** Processing line: ~ self + i~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise_immediately e, :shift_up, i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def shift_down i~
** Processing line: ~ shift_up(i * -1)~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise_immediately e, :shift_down, i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # This provides a way for a numeric value to be randomized based on a combination~
** Processing line: ~ # of two options: `:sign` and `:ratio`.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def randomize *definitions~
** Processing line: ~ result = self~
** Processing line: ~~
** Processing line: ~ if definitions.include?(:sign)~
** Processing line: ~ result = rand_sign~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ if definitions.include?(:ratio)~
** Processing line: ~ result = rand * result~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ result~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def rand_sign~
** Processing line: ~ return self * -1 if rand > 0.5~
** Processing line: ~ self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def rand_ratio~
** Processing line: ~ self * rand~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def remainder_of_divide n~
** Processing line: ~ mod n~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def ease_extended tick_count_override, duration, default_before, default_after, *definitions~
** Processing line: ~ GTK::Easing.ease_extended self,~
** Processing line: ~ tick_count_override,~
** Processing line: ~ self + duration,~
** Processing line: ~ default_before,~
** Processing line: ~ default_after,~
** Processing line: ~ *definitions~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def global_ease duration, *definitions~
** Processing line: ~ ease_extended Kernel.global_tick_count,~
** Processing line: ~ duration,~
** Processing line: ~ GTK::Easing.initial_value(*definitions),~
** Processing line: ~ GTK::Easing.final_value(*definitions),~
** Processing line: ~ *definitions~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def ease duration, *definitions~
** Processing line: ~ ease_extended Kernel.tick_count,~
** Processing line: ~ duration,~
** Processing line: ~ GTK::Easing.initial_value(*definitions),~
** Processing line: ~ GTK::Easing.final_value(*definitions),~
** Processing line: ~ *definitions~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def ease_spline_extended tick_count_override, duration, spline~
** Processing line: ~ GTK::Easing.ease_spline_extended self,~
** Processing line: ~ tick_count_override,~
** Processing line: ~ self + duration,~
** Processing line: ~ spline~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def global_ease_spline duration, spline~
** Processing line: ~ ease_spline_extended Kernel.global_tick_count,~
** Processing line: ~ duration,~
** Processing line: ~ spline~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Easing function progress/percentage for a specific point in time.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def ease_spline duration, spline~
** Processing line: ~ ease_spline_extended Kernel.tick_count,~
** Processing line: ~ duration,~
** Processing line: ~ spline~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Converts a number representing an angle in degrees to radians.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def to_radians~
** Processing line: ~ self * Math::PI.fdiv(180)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Converts a number representing an angle in radians to degress.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def to_degrees~
** Processing line: ~ self / Math::PI.fdiv(180)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Given `self`, a rectangle primitive is returned.~
** Processing line: ~ #~
** Processing line: ~ # @example~
** Processing line: ~ # 5.to_square 100, 300 # returns [100, 300, 5, 5]~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def to_square x, y, anchor_x = 0.5, anchor_y = nil~
** Processing line: ~ GTK::Geometry.to_square(self, x, y, anchor_x, anchor_y)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns a normal vector for a number that represents an angle in degress.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def vector max_value = 1~
** Processing line: ~ [vector_x(max_value), vector_y(max_value)]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns the y component of a normal vector for a number that represents an angle in degress.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def vector_y max_value = 1~
** Processing line: ~ max_value * Math.sin(self.to_radians)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns the x component of a normal vector for a number that represents an angle in degress.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def vector_x max_value = 1~
** Processing line: ~ max_value * Math.cos(self.to_radians)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def x_vector max_value = 1~
** Processing line: ~ vector_x max_value~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def y_vector max_value = 1~
** Processing line: ~ vector_y max_value~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def mod n~
** Processing line: ~ self % n~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def mod_zero? *ns~
** Processing line: ~ ns.any? { |n| mod(n) == 0 }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def mult n~
** Processing line: ~ self * n~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def fdiv n~
** Processing line: ~ self / n.to_f~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Divides `self` by a number `n` as a float, and converts it `to_i`.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def idiv n~
** Processing line: ~ (self / n.to_f).to_i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns a numeric value that is a quantity `magnitude` closer to~
** Processing line: ~ #`self`. If the distance between `self` and `target` is less than~
** Processing line: ~ #the `magnitude` then `target` is returned.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def towards target, magnitude~
** Processing line: ~ return self if self == target~
** Processing line: ~ delta = (self - target).abs~
** Processing line: ~ return target if delta < magnitude~
** Processing line: ~ return self - magnitude if self > target~
** Processing line: ~ return self + magnitude~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Given `self` and a number representing `y` of a grid. This~
** Processing line: ~ # function will return a one dimensional array containing the value~
** Processing line: ~ # yielded by an implicit block.~
** Processing line: ~ #~
** Processing line: ~ # @example~
** Processing line: ~ # 3.map_with_ys 2 do |x, y|~
** Processing line: ~ # x * y~
** Processing line: ~ # end~
** Processing line: ~ # # x y x y x y x y x y x y~
** Processing line: ~ # # 0*0, 0*1 1*0 1*1 2*0 2*1~
** Processing line: ~ # # => [ 0, 0, 0, 1, 0, 2]~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def map_with_ys ys, &block~
** Processing line: ~ self.times.flat_map do |x|~
** Processing line: ~ ys.map_with_index do |y|~
** Processing line: ~ yield x, y~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ raise_immediately e, :map_with_ys, [self, ys]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def combinations other_int~
** Processing line: ~ self.numbers.product(other_int.numbers)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def percentage_of n~
** Processing line: ~ (self / n.to_f).cap_min_max(0, 1)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def cap i~
** Processing line: ~ return i if self > i~
** Processing line: ~ self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def cap_min_max min, max~
** Processing line: ~ return min if self < min~
** Processing line: ~ return max if self > max~
** Processing line: ~ self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def lesser other~
** Processing line: ~ return other if other < self~
** Processing line: ~ self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def greater other~
** Processing line: ~ return other if other > self~
** Processing line: ~ self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def subtract i~
** Processing line: ~ self - i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def minus i~
** Processing line: ~ self - i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def add i~
** Processing line: ~ self + i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def plus i~
** Processing line: ~ self + i~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def numbers~
** 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: ~ alias_method(:original_eq_eq, :==) unless Numeric.instance_methods.include?(:original_eq_eq)~
** Processing line: ~ def == other~
** Processing line: ~ return true if self.original_eq_eq(other)~
** Processing line: ~ if other.is_a?(OpenEntity)~
** Processing line: ~ return self.original_eq_eq(other.entity_id)~
** Processing line: ~ end~
** Processing line: ~ return self.original_eq_eq(other)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def map~
** Processing line: ~ unless block_given?~
** Processing line: ~ raise <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ A block is required for Numeric#map.~
** Processing line: ~~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ self.to_i.times.map do~
** Processing line: ~ yield~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def map_with_index~
** Processing line: ~ unless block_given?~
** Processing line: ~ raise <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ A block is required for Numeric#map.~
** Processing line: ~~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ self.to_i.times.map do |i|~
** Processing line: ~ yield i~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def check_numeric! sender, other~
** Processing line: ~ return if other.is_a? Numeric~
** Processing line: ~~
** Processing line: ~ raise <<-S~
** Processing line: ~ * ERROR:~
** Processing line: ~ Attempted to invoke :+ on #{self} with the right hand argument of:~
** Processing line: ~~
** Processing line: ~ #{other}~
** Processing line: ~~
** Processing line: ~ The object above is not a Numeric.~
** Processing line: ~~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def - other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :-, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def + other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :+, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def * other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :*, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def / other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :/, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def from_top~
** Processing line: ~ return 720 - self unless $gtk~
** Processing line: ~ $gtk.args.grid.h - self~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ class Fixnum~
** Processing line: ~ include ValueType~
** Processing line: ~~
** Processing line: ~ alias_method(:original_eq_eq, :==) unless Fixnum.instance_methods.include?(:original_eq_eq)~
** Processing line: ~~
** Processing line: ~ def - other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :-, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns `true` if the numeric value is evenly divisible by 2.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def even?~
** Processing line: ~ return (self % 2) == 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns `true` if the numeric value is *NOT* evenly divisible by 2.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def odd?~
** Processing line: ~ return !even?~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def + other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :+, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def * other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :*, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def / other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :/, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def == other~
** Processing line: ~ return true if self.original_eq_eq(other)~
** Processing line: ~ if other.is_a?(GTK::OpenEntity)~
** Processing line: ~ return self.original_eq_eq(other.entity_id)~
** Processing line: ~ end~
** Processing line: ~ return self.original_eq_eq(other)~
** 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: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def sign~
** Processing line: ~ return -1 if self < 0~
** Processing line: ~ return 1 if self > 0~
** Processing line: ~ return 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns `true` if number is greater than `0`.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def pos?~
** Processing line: ~ sign > 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns `true` if number is less than `0`.~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def neg?~
** Processing line: ~ sign < 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns the cosine of a represented in degrees (NOT radians).~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def cos~
** Processing line: ~ Math.cos(self.to_radians)~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # Returns the cosine of a represented in degrees (NOT radians).~
** Processing line: ~ #~
** Processing line: ~ # @gtk~
** Processing line: ~ def sin~
** Processing line: ~ Math.sin(self.to_radians)~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ class Float~
** Processing line: ~ include ValueType~
** Processing line: ~~
** Processing line: ~ def - other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :-, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def + other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :+, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def * other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :*, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def / other~
** Processing line: ~ return nil unless other~
** Processing line: ~ check_numeric! :/, other~
** Processing line: ~ super~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def serialize~
** Processing line: ~ self~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def sign~
** Processing line: ~ return -1 if self < 0~
** Processing line: ~ return 1 if self > 0~
** Processing line: ~ return 0~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def replace_infinity scalar~
** Processing line: ~ return self if !scalar~
** Processing line: ~ return self unless self.infinite?~
** Processing line: ~ return -scalar if self < 0~
** Processing line: ~ return scalar if self > 0~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ class Integer~
** Processing line: ~ alias_method(:original_round, :round) unless Fixnum.instance_methods.include?(:original_round)~
** Processing line: ~~
** Processing line: ~ def round *args~
** Processing line: ~ original_round~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* runtime/framerate_diagnostics.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~runtime/framerate_diagnostics.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/runtime/framerate_diagnostics.rb~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # framerate_diagnostics.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Runtime~
** Processing line: ~ # @visibility private~
** Processing line: ~ module FramerateDiagnostics~
** Processing line: ~ def framerate_get_diagnostics~
** Processing line: ~ <<-S~
** Processing line: ~ * INFO: Framerate Diagnostics~
** Processing line: ~ You can display these diagnostics using:~
** Processing line: ~~
** Processing line: ~ #+begin_src~
** Processing line: ~ args.outputs.debug << args.gtk.framerate_diagnostics_primitives~
** Processing line: ~ #+end_src~
** Processing line: ~~
** Processing line: ~ ** Draw Calls: ~<<~ Invocation Perf Counter~
** Processing line: ~ Here is how many times ~args.outputs.PRIMITIVE_ARRAY <<~ was called:~
** Processing line: ~~
** Processing line: ~ #{$perf_counter_outputs_push_count} times invoked.~
** Processing line: ~~
** Processing line: ~ If the number above is high, consider batching primitives so you can lower the invocation of ~<<~. For example.~
** Processing line: ~~
** Processing line: ~ Instead of:~
** Processing line: ~~
** Processing line: ~ #+begin_src~
** Processing line: ~ args.state.enemies.map do |e|~
** Processing line: ~ e.alpha = 128~
** Processing line: ~ args.outputs.sprites << e # <-- ~args.outputs.sprites <<~ is invoked a lot~
** Processing line: ~ end~
** Processing line: ~ #+end_src~
** Processing line: ~~
** Processing line: ~ Do this:~
** Processing line: ~~
** Processing line: ~ #+begin_src~
** Processing line: ~ args.outputs.sprites << args.state~
** Processing line: ~ .enemies~
** Processing line: ~ .map do |e| # <-- ~args.outputs.sprites <<~ is only invoked once.~
** Processing line: ~ e.alpha = 128~
** Processing line: ~ e~
** Processing line: ~ end~
** Processing line: ~ #+end_src~
** Processing line: ~~
** Processing line: ~ ** Array Primitives~
** Processing line: ~ ~Primitives~ represented as an ~Array~ (~Tuple~) are great for prototyping, but are not as performant as using a ~Hash~.~
** Processing line: ~~
** Processing line: ~ Here is the number of ~Array~ primitives that were encountered:~
** Processing line: ~~
** Processing line: ~ #{$perf_counter_primitive_is_array} Array Primitives.~
** Processing line: ~~
** Processing line: ~ If the number above is high, consider converting them to hashes. For example.~
** Processing line: ~~
** Processing line: ~ Instead of:~
** Processing line: ~~
** Processing line: ~ #+begin_src~
** Processing line: ~ args.outputs.sprites << [0, 0, 100, 100, 'sprites/enemy.png']~
** Processing line: ~ #+begin_end~
** Processing line: ~~
** Processing line: ~ Do this:~
** Processing line: ~~
** Processing line: ~ #+begin_src~
** Processing line: ~ args.outputs.sprites << { x: 0,~
** Processing line: ~ y: 0,~
** Processing line: ~ w: 100,~
** Processing line: ~ h: 100,~
** Processing line: ~ path: 'sprites/enemy.png' }~
** Processing line: ~ #+begin_end~
** Processing line: ~~
** Processing line: ~ ** Primitive Counts~
** Processing line: ~ Here are the draw counts ordered by lowest to highest z order:~
** Processing line: ~~
** Processing line: ~ PRIMITIVE COUNT, STATIC COUNT~
** Processing line: ~ solids: #{@args.outputs.solids.length}, #{@args.outputs.static_solids.length}~
** Processing line: ~ sprites: #{@args.outputs.sprites.length}, #{@args.outputs.static_sprites.length}~
** Processing line: ~ primitives: #{@args.outputs.primitives.length}, #{@args.outputs.static_primitives.length}~
** Processing line: ~ labels: #{@args.outputs.labels.length}, #{@args.outputs.static_labels.length}~
** Processing line: ~ lines: #{@args.outputs.lines.length}, #{@args.outputs.static_lines.length}~
** Processing line: ~ borders: #{@args.outputs.borders.length}, #{@args.outputs.static_borders.length}~
** Processing line: ~ debug: #{@args.outputs.debug.length}, #{@args.outputs.static_debug.length}~
** Processing line: ~ reserved: #{@args.outputs.reserved.length}, #{@args.outputs.static_reserved.length}~
** Processing line: ~~
** Processing line: ~ ** Additional Help~
** Processing line: ~ Come to the DragonRuby Discord channel if you need help troubleshooting performance issues. http://discord.dragonruby.org.~
** Processing line: ~~
** Processing line: ~ Source code for these diagnostics can be found at: [[https://github.com/dragonruby/dragonruby-game-toolkit-contrib/]]~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def framerate_warning_message~
** Processing line: ~ <<-S~
** Processing line: ~ * WARNING:~
** Processing line: ~ Your average framerate dropped below 60 fps for two seconds.~
** Processing line: ~~
** Processing line: ~ The average FPS was #{current_framerate}.~
** Processing line: ~~
** Processing line: ~ ** How To Disable Warning~
** Processing line: ~ If this warning is getting annoying put the following in your tick method:~
** Processing line: ~~
** Processing line: ~ #+begin_src~
** Processing line: ~ args.gtk.log_level = :off~
** Processing line: ~ #+end_src~
** Processing line: ~~
** Processing line: ~ #{framerate_get_diagnostics}~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def current_framerate_primitives~
** Processing line: ~ framerate_diagnostics_primitives~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def framerate_diagnostics_primitives~
** Processing line: ~ [~
** Processing line: ~ { x: 0, y: 93.from_top, w: 500, h: 93, a: 128 }.solid,~
** Processing line: ~ {~
** Processing line: ~ x: 5,~
** Processing line: ~ y: 5.from_top,~
** Processing line: ~ text: "More Info via DragonRuby Console: $gtk.framerate_diagnostics",~
** Processing line: ~ r: 255,~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 255,~
** Processing line: ~ size_enum: -2~
** Processing line: ~ }.label,~
** Processing line: ~ {~
** Processing line: ~ x: 5,~
** Processing line: ~ y: 20.from_top,~
** Processing line: ~ text: "FPS: %.2f" % args.gtk.current_framerate,~
** Processing line: ~ r: 255,~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 255,~
** Processing line: ~ size_enum: -2~
** Processing line: ~ }.label,~
** Processing line: ~ {~
** Processing line: ~ x: 5,~
** Processing line: ~ y: 35.from_top,~
** Processing line: ~ text: "Draw Calls: #{$perf_counter_outputs_push_count}",~
** Processing line: ~ r: 255,~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 255,~
** Processing line: ~ size_enum: -2~
** Processing line: ~ }.label,~
** Processing line: ~ {~
** Processing line: ~ x: 5,~
** Processing line: ~ y: 50.from_top,~
** Processing line: ~ text: "Array Primitives: #{$perf_counter_primitive_is_array}",~
** Processing line: ~ r: 255,~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 255,~
** Processing line: ~ size_enum: -2~
** Processing line: ~ }.label,~
** Processing line: ~ {~
** Processing line: ~ x: 5,~
** Processing line: ~ y: 65.from_top,~
** Processing line: ~ text: "Mouse: #{@args.inputs.mouse.point}",~
** Processing line: ~ r: 255,~
** Processing line: ~ g: 255,~
** Processing line: ~ b: 255,~
** Processing line: ~ size_enum: -2~
** Processing line: ~ }.label,~
** Processing line: ~ ]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* string.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~string.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/string.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # string.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ class String~
** Processing line: ~ include ValueType~
** Processing line: ~~
** Processing line: ~ def wrapped_lines_recur word, rest, length, aggregate~
** Processing line: ~ if word.nil?~
** Processing line: ~ return aggregate~
** Processing line: ~ elsif rest[0].nil?~
** Processing line: ~ aggregate << word + "\n"~
** Processing line: ~ return aggregate~
** Processing line: ~ elsif (word + " " + rest[0]).length > length~
** Processing line: ~ aggregate << word + "\n"~
** Processing line: ~ return wrapped_lines_recur rest[0], rest[1..-1], length, aggregate~
** Processing line: ~ elsif (word + " " + rest[0]).length <= length~
** Processing line: ~ next_word = (word + " " + rest[0])~
** Processing line: ~ return wrapped_lines_recur next_word, rest[1..-1], length, aggregate~
** Processing line: ~ else~
** Processing line: ~ log <<-S~
** Processing line: ~ WARNING:~
** Processing line: ~ #{word} is too long to fit in length of #{length}.~
** Processing line: ~~
** Processing line: ~ S~
** Processing line: ~ next_word = (word + " " + rest[0])~
** Processing line: ~ return wrapped_lines_recur next_word, rest[1..-1], length, aggregate~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def end_with_bang?~
** Processing line: ~ self[-1] == "!"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def without_ending_bang~
** Processing line: ~ return self unless end_with_bang?~
** Processing line: ~ self[0..-2]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def wrapped_lines length~
** Processing line: ~ self.each_line.map do |l|~
** Processing line: ~ l = l.rstrip~
** Processing line: ~ if l.length < length~
** Processing line: ~ l + "\n"~
** Processing line: ~ else~
** Processing line: ~ words = l.split ' '~
** Processing line: ~ wrapped_lines_recur(words[0], words[1..-1], length, []).flatten~
** Processing line: ~ end~
** Processing line: ~ end.flatten~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def wrap length~
** Processing line: ~ wrapped_lines(length).join.rstrip~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def multiline?~
** Processing line: ~ include? "\n"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def indent_lines amount, char = " "~
** Processing line: ~ self.each_line.each_with_index.map do |l, i|~
** Processing line: ~ if i == 0~
** Processing line: ~ l~
** Processing line: ~ else~
** Processing line: ~ char * amount + l~
** Processing line: ~ end~
** Processing line: ~ end.join~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def quote~
** Processing line: ~ "\"#{self}\""~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def trim~
** Processing line: ~ strip~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def trim!~
** Processing line: ~ strip!~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def ltrim~
** Processing line: ~ lstrip~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def ltrim!~
** Processing line: ~ lstrip!~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def rtrim~
** Processing line: ~ rstrip~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def rtrim!~
** Processing line: ~ rstrip!~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.
** Processing line: ~~
** Processing line: ~~
** Processing line: ~* tests.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~tests.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/tests.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # tests.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ class Tests~
** Processing line: ~ attr_accessor :failed, :passed, :inconclusive~
** Processing line: ~~
** Processing line: ~ def initialize~
** Processing line: ~ @failed = []~
** Processing line: ~ @passed = []~
** Processing line: ~ @inconclusive = []~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def run_test m~
** Processing line: ~ args = Args.new $gtk, nil~
** Processing line: ~ assert = Assert.new~
** Processing line: ~ begin~
** Processing line: ~ log_test_running m~
** Processing line: ~ send(m, args, assert)~
** Processing line: ~ if !assert.assertion_performed~
** Processing line: ~ log_inconclusive m~
** Processing line: ~ else~
** Processing line: ~ log_passed m~
** Processing line: ~ end~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ if test_signature_invalid_exception? e, m~
** Processing line: ~ log_test_signature_incorrect m~
** Processing line: ~ else~
** Processing line: ~ mark_test_failed m, e~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_methods_focused~
** Processing line: ~ Object.methods.find_all { |m| m.start_with?( "focus_test_") }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_methods~
** Processing line: ~ Object.methods.find_all { |m| m.start_with? "test_" }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def start~
** Processing line: ~ log "* TEST: gtk.test.start has been invoked."~
** Processing line: ~ if test_methods_focused.length != 0~
** Processing line: ~ @is_running = true~
** Processing line: ~ test_methods_focused.each { |m| run_test m }~
** Processing line: ~ print_summary~
** Processing line: ~ @is_running = false~
** Processing line: ~ elsif test_methods.length == 0~
** Processing line: ~ log_no_tests_found~
** Processing line: ~ else~
** Processing line: ~ @is_running = true~
** Processing line: ~ test_methods.each { |m| run_test m }~
** Processing line: ~ print_summary~
** Processing line: ~ @is_running = false~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def mark_test_failed m, e~
** Processing line: ~ message = "Failed."~
** Processing line: ~ self.failed << { m: m, e: e }~
** Processing line: ~ log message~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def running?~
** Processing line: ~ @is_running~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_inconclusive m~
** Processing line: ~ self.inconclusive << {m: m}~
** Processing line: ~ log "Inconclusive."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_passed m~
** Processing line: ~ self.passed << {m: m}~
** Processing line: ~ log "Passed."~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_no_tests_found~
** Processing line: ~ log <<-S~
** Processing line: ~ No tests were found. To create a test. Define a method~
** Processing line: ~ that begins with test_. For example:~
** Processing line: ~ #+begin_src~
** Processing line: ~ def test_game_over args, assert~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~ #+end_src~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_test_running m~
** Processing line: ~ log "** Running: #{m}"~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def test_signature_invalid_exception? e, m~
** Processing line: ~ e.to_s.include?(m.to_s) && e.to_s.include?("wrong number of arguments")~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def log_test_signature_incorrect m~
** Processing line: ~ log "TEST METHOD INVALID:", <<-S~
** Processing line: ~ I found a test method called :#{m}. But it needs to have~
** Processing line: ~ the following method signature:~
** Processing line: ~ #+begin_src~
** Processing line: ~ def #{m} args, assert~
** Processing line: ~~
** Processing line: ~ end~
** Processing line: ~ #+end_src~
** Processing line: ~ Please update the method signature to match the code above. If you~
** Processing line: ~ did not intend this to be a test method. Rename the method so it does~
** Processing line: ~ not start with "test_".~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def print_summary~
** Processing line: ~ log "** Summary"~
** Processing line: ~ log "*** Passed"~
** Processing line: ~ log "#{self.passed.length} test(s) passed."~
** Processing line: ~ self.passed.each { |h| log "**** :#{h[:m]}" }~
** Processing line: ~ log "*** Inconclusive"~
** Processing line: ~ if self.inconclusive.length > 0~
** Processing line: ~ log_once :assertion_ok_note, <<-S~
** Processing line: ~ NOTE FOR INCONCLUSIVE TESTS: No assertion was performed in the test.~
** Processing line: ~ Add assert.ok! at the end of the test if you are using your own assertions.~
** Processing line: ~ S~
** Processing line: ~ end~
** Processing line: ~ log "#{self.inconclusive.length} test(s) inconclusive."~
** Processing line: ~ self.inconclusive.each { |h| log "**** :#{h[:m]}" }~
** Processing line: ~ log "*** Failed"~
** Processing line: ~ log "#{self.failed.length} test(s) failed."~
** Processing line: ~ self.failed.each do |h|~
** Processing line: ~ log "**** Test name: :#{h[:m]}"~
** Processing line: ~ log "#{h[:e].to_s.gsub("* ERROR:", "").strip}"~
** 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: ~* trace.rb~
- H1 detected.
- Determining if line is a header.
- Line contains ~* ~... gsub-ing empty string
- Formatting line: ~trace.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/trace.rb~
** Processing line: ~ # coding: utf-8~
** Processing line: ~ # Copyright 2019 DragonRuby LLC~
** Processing line: ~ # MIT License~
** Processing line: ~ # trace.rb has been released under MIT (*only this file*).~
** Processing line: ~~
** Processing line: ~ module GTK~
** Processing line: ~ module Trace~
** Processing line: ~ IGNORED_METHODS = [~
** Processing line: ~ :define_singleton_method, :raise_immediately, :instance_of?,~
** Processing line: ~ :raise_with_caller, :initialize_copy, :class_defined?,~
** Processing line: ~ :instance_variable_get, :format, :purge_class, :instance_variable_defined?,~
** Processing line: ~ :metadata_object_id, :instance_variable_set, :__printstr__,~
** Processing line: ~ :instance_variables, :is_a?, :p, :kind_of?, :==, :log_once,~
** Processing line: ~ :protected_methods, :log_once_info, :private_methods, :open,~
** Processing line: ~ :!=, :initialize, :object_id, :Hash, :methods, :tick, :!,~
** Processing line: ~ :respond_to?, :yield_self, :send, :instance_eval, :then,~
** Processing line: ~ :__method__, :__send__, :log_print, :dig, :itself, :log_info,~
** Processing line: ~ :remove_instance_variable, :raise, :public_methods, :instance_exec,~
** Processing line: ~ :gets, :local_variables, :tap, :__id__, :class, :singleton_class,~
** Processing line: ~ :block_given?, :_inspect, :puts, :global_variables, :getc, :iterator?,~
** Processing line: ~ :hash, :to_enum, :printf, :frozen?, :print, :original_puts,~
** Processing line: ~ :srand, :freeze, :rand, :extend, :eql?, :equal?, :sprintf, :clone,~
** Processing line: ~ :dup, :to_s, :primitive_determined?, :inspect, :primitive?, :help,~
** Processing line: ~ :__object_methods__, :proc, :__custom_object_methods__, :Float, :enum_for,~
** Processing line: ~ :__supports_ivars__?, :nil?, :fast_rand, :or, :and,~
** Processing line: ~ :__caller_without_noise__, :__gtk_ruby_string_contains_source_file_path__?,~
** Processing line: ~ :__pretty_print_exception__, :__gtk_ruby_source_files__,~
** Processing line: ~ :String, :log, :Array, :putsc, :Integer, :===, :here,~
** Processing line: ~ :raise_error_with_kind_of_okay_message, :better_instance_information,~
** Processing line: ~ :lambda, :fail, :method_missing, :__case_eqq, :caller,~
** Processing line: ~ :raise_method_missing_better_error, :require, :singleton_methods,~
** Processing line: ~ :!~, :loop, :numeric_or_default, :`, :state, :inputs, :outputs, "args=".to_sym,~
** Processing line: ~ :grid, :gtk, :dragon, :args, :passes, :tick, :grep_source, :grep_source_file,~
** Processing line: ~ :numeric_or_default, :f_or_default, :s_or_default, :i_or_default,~
** Processing line: ~ :comment, :primitive_marker, :xrepl, :repl~
** Processing line: ~ ]~
** Processing line: ~~
** Processing line: ~ def self.traced_classes~
** Processing line: ~ @traced_classes ||= []~
** Processing line: ~ @traced_classes~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.mark_class_as_traced! klass~
** Processing line: ~ @traced_classes << klass~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.untrace_classes!~
** Processing line: ~ traced_classes.each do |klass|~
** Processing line: ~ klass.class_eval do~
** Processing line: ~ all_methods = klass.instance_methods false~
** Processing line: ~ if klass.instance_methods.respond_to?(:__trace_call_depth__)~
** Processing line: ~ undef_method :__trace_call_depth__~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ GTK::Trace.filter_methods_to_trace(all_methods).each do |m|~
** Processing line: ~ original_method_name = m~
** Processing line: ~ trace_method_name = GTK::Trace.trace_method_name_for m~
** Processing line: ~ if klass.instance_methods.include? trace_method_name~
** Processing line: ~ alias_method m, trace_method_name~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ $last_method_traced = nil~
** Processing line: ~ @traced_classes.clear~
** Processing line: ~ $trace_enabled = false~
** Processing line: ~ if !$gtk.production~
** Processing line: ~ $gtk.write_file_root 'logs/trace.txt', "Add trace!(SOMEOBJECT) to the top of ~tick~ and this file will be populated with invocation information.\n"~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.trace_method_name_for m~
** Processing line: ~ "__trace_original_#{m}__".to_sym~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.original_method_name_for m~
** Processing line: ~ return m unless m.to_s.start_with?("__trace_original_") && m.to_s.end_with?("__")~
** Processing line: ~ m[16..-3]~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.filter_methods_to_trace methods~
** Processing line: ~ methods.reject { |m| m.start_with? "__trace_" }.reject { |m| IGNORED_METHODS.include? m }~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ def self.flush_trace pad_with_newline = false~
** Processing line: ~ $trace_puts ||= []~
** Processing line: ~ if $trace_puts.length > 0~
** Processing line: ~ text = $trace_puts.join("")~
** Processing line: ~ if pad_with_newline~
** Processing line: ~ $gtk.append_file_root 'logs/trace.txt', "\n" + text.strip~
** Processing line: ~ else~
** Processing line: ~ $gtk.append_file_root 'logs/trace.txt', text.strip~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ $trace_puts.clear~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~ # @gtk~
** Processing line: ~ def self.trace! instance = nil~
** Processing line: ~ $trace_history ||= []~
** Processing line: ~ $trace_enabled = true~
** Processing line: ~ $trace_call_depth ||=0~
** Processing line: ~ flush_trace~
** Processing line: ~ instance = $top_level unless instance~
** Processing line: ~ return if Trace.traced_classes.include? instance.class~
** Processing line: ~ all_methods = instance.class.instance_methods false~
** Processing line: ~ instance.class.class_eval do~
** Processing line: ~ attr_accessor :__trace_call_depth__ unless instance.class.instance_methods.include?(:__trace_call_depth__)~
** Processing line: ~ GTK::Trace.filter_methods_to_trace(all_methods).each do |m|~
** Processing line: ~ original_method_name = m~
** Processing line: ~ trace_method_name = GTK::Trace.trace_method_name_for m~
** Processing line: ~ alias_method trace_method_name, m~
** Processing line: ~ $trace_puts << "Tracing #{m} on #{instance.class}.\n"~
** Processing line: ~ define_method(m) do |*args|~
** Processing line: ~ instance.__trace_call_depth__ ||= 0~
** Processing line: ~ tab_width = " " * (instance.__trace_call_depth__ * 8)~
** Processing line: ~ instance.__trace_call_depth__ += 1~
** Processing line: ~ $trace_call_depth = instance.__trace_call_depth__~
** Processing line: ~ parameters = "#{args}"[1..-2]~
** Processing line: ~ $trace_puts << "\n #{tab_width}#{m}(#{parameters})"~
** Processing line: ~ execution_time = Time.new.to_i~
** Processing line: ~ $last_method_traced = trace_method_name~
** Processing line: ~ $trace_history << [m, parameters]~
** Processing line: ~ result = send(trace_method_name, *args)~
** Processing line: ~ completion_time = Time.new.to_i~
** Processing line: ~ instance.__trace_call_depth__ -= 1~
** Processing line: ~ instance.__trace_call_depth__ = instance.__trace_call_depth__.greater 0~
** Processing line: ~ $trace_puts << "\n #{tab_width} success: #{m}"~
** Processing line: ~ if instance.__trace_call_depth__ == 0~
** Processing line: ~ $trace_puts << "\n"~
** Processing line: ~ $trace_history.clear~
** Processing line: ~ end~
** Processing line: ~ result~
** Processing line: ~ rescue Exception => e~
** Processing line: ~ instance.__trace_call_depth__ -= 1~
** Processing line: ~ instance.__trace_call_depth__ = instance.__trace_call_depth__.greater 0~
** Processing line: ~ $trace_puts << "\n #{tab_width} failed: #{m}"~
** Processing line: ~ if instance.__trace_call_depth__ == 0~
** Processing line: ~ $trace_puts << "\n #{tab_width} #{e}"~
** Processing line: ~ $trace_puts << "\n"~
** Processing line: ~ end~
** Processing line: ~ $trace_call_depth = 0~
** Processing line: ~ GTK::Trace.flush_trace true~
** Processing line: ~ raise e~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ mark_class_as_traced! instance.class~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~ end~
** Processing line: ~~
** Processing line: ~#+end_src~
- PRE end detected.