Taken from here: https://discord.com/channels/608064116111966245/608064116984250379/1055555451569328179
Have 2 terminals running. In the first, start a web server:
ruby -run -e httpd ./builds/mygame-html5-0.1
in the second terminal, run the build:
module Dungeon | |
# Multipliers for transforming coordinates into other octants | |
MULT = [ | |
[1, 0, 0, -1, -1, 0, 0, 1], | |
[0, 1, -1, 0, 0, -1, 1, 0], | |
[0, 1, 1, 0, 0, -1, -1, 0], | |
[1, 0, 0, 1, -1, 0, 0, -1], | |
] | |
# Determines which co-ordinates on a 2D grid are visible |
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 |
<!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> |
<!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"> | |
- |
// 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) |
# 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 |
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) |
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 | |
{ |
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 |
Taken from here: https://discord.com/channels/608064116111966245/608064116984250379/1055555451569328179
Have 2 terminals running. In the first, start a web server:
ruby -run -e httpd ./builds/mygame-html5-0.1
in the second terminal, run the build: