Skip to content

Instantly share code, notes, and snippets.

View KonnorRogers's full-sized avatar

Konnor Rogers KonnorRogers

View GitHub Profile
@KonnorRogers
KonnorRogers / main.rb
Created September 6, 2025 08:36
Classes, Hashes, Structs, oh my.
def boot(args)
args.state = {}
end
SpriteStruct = Struct.new(:x, :y, :w, :h, :path)
class SpriteClass
attr_accessor :x, :y, :w, :h, :path
def initialize(x:, y:, w:, h:, path:)
@x = x
@KonnorRogers
KonnorRogers / index.html
Created August 22, 2025 05:30
WA Layout Stuff
<!doctype html>
<html lang="en" class=""><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Web Awesome Page Demo 1</title>
<link rel="preconnect" href="https://early.webawesome.com">
<link rel="stylesheet" href="https://early.webawesome.com/[email protected]/dist/styles/themes/default.css">
<link rel="stylesheet" href="https://early.webawesome.com/[email protected]/dist/styles/webawesome.css">
<script type="module" src="https://early.webawesome.com/[email protected]/dist/webawesome.loader.js"></script>
</head>
@KonnorRogers
KonnorRogers / signals.html
Created August 6, 2025 21:41
Lite Signals
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Signals</title>
</head>
<body>
<button id="decrement">
-
@KonnorRogers
KonnorRogers / html5-loader.js
Last active August 1, 2025 03:25
Stub to add to DragonRuby for unlocking audio
// end of dragonruby-html5-loader.js ...
// .dragonruby/stubs/html5/dragonruby-html5-loader.js
const audioContext = new AudioContext()
let hasPlayed = false
function startAudioContext(context){
// this accomplishes the iOS specific requirement
var buffer = context.createBuffer(1, 1, context.sampleRate)
@KonnorRogers
KonnorRogers / dr.rb
Last active August 1, 2025 04:31
Label wrapping
# Sample from:
# https://docs.dragonruby.org/#/samples/rendering-basics?id=labels-text-wrapping-mainrb
def tick(args)
lines = ["line1", "line2", "line3", "line4"]
labels = lines.map.with_index do |text, index|
{
x: 1280 / 2,
y: 720 / 2,
text: text,
anchor_y: index
@KonnorRogers
KonnorRogers / app.rb
Created July 16, 2025 03:40
Draw Buffering for Dragon Ruby
class DrawBuffer
attr_accessor :primitives, :outputs, :render_targets
def initialize
@primitives = []
@render_targets = {}
end
def [](key)
@render_targets[key] = [] if !@render_targets.has_key?(key)
@KonnorRogers
KonnorRogers / main.rb
Last active June 30, 2025 06:12
dest-out DR gist
def tick(args)
max_w = args.grid.w
max_h = args.grid.h
box_y = max_h / 4
box_w = (args.grid.w / 3) - 4
box_h = max_h / 2
border_thickness = 2
borders = [
# TOP
{
@KonnorRogers
KonnorRogers / dup_clone_literal.rb
Created May 21, 2025 23:10
A dragonruby benchmark of array creation
def tick args
if args.inputs.keyboard.key_down.r
$gtk.reset
end
# press i to run benchmark using iterations
if args.inputs.keyboard.key_down.b
max_particles = 10_000
args.gtk.console.show
args.gtk.benchmark(
iterations: 100, # number of iterations
@KonnorRogers
KonnorRogers / testing-dragonruby-web-builds.md
Created January 26, 2025 18:53
Testing Dragonruby web builds
@KonnorRogers
KonnorRogers / circle.rb
Created January 12, 2025 00:55
drawing an "empty" circle in dragonruby
def draw_circle(args, diameter: 200)
diameter.times do |i|
r1 = diameter / 2
h1 = i - r1
l1 = Math::sqrt(r1 * r1 - h1 * h1)
r2 = r1 - 4 # Modify this to adjust the size of the inner circle. the bigger this is, the more empty space, the smaller, the less empty space.
h2 = (i - r2) - (r1 - r2)
if h2.abs < r2
l2 = Math::sqrt(r2 * r2 - h2 * h2)