Skip to content

Instantly share code, notes, and snippets.

View Eric-Guo's full-sized avatar

Eric Guo Eric-Guo

View GitHub Profile
@Eric-Guo
Eric-Guo / DOM3D.js
Created March 27, 2024 14:23 — forked from OrionReed/dom3d.js
3D DOM viewer, copy-paste this into your console to visualise the DOM topographically.
// 3D Dom viewer, copy-paste this into your console to visualise the DOM as a stack of solid blocks.
// You can also minify and save it as a bookmarklet (https://www.freecodecamp.org/news/what-are-bookmarklets/)
(() => {
const SHOW_SIDES = false; // color sides of DOM nodes?
const COLOR_SURFACE = true; // color tops of DOM nodes?
const COLOR_RANDOM = false; // randomise color?
const COLOR_HUE = 190; // hue in HSL (https://hslpicker.com)
const MAX_ROTATION = 180; // set to 360 to rotate all the way round
const THICKNESS = 20; // thickness of layers
const DISTANCE = 10000; // ¯\\_(ツ)_/¯
@Eric-Guo
Eric-Guo / json.rb
Created June 15, 2022 05:03 — forked from kddnewton/json.rb
JSON parser with pattern matching
require "json"
struct = { "a" => 1, "b" => 2, "c" => [1, 2, 3], "d" => [{ "e" => 3 }, nil, false, true, [], {}] }
source = JSON.dump(struct)
tokens = []
index = 0
until source.empty?
tokens <<
@Eric-Guo
Eric-Guo / main.rb
Created February 4, 2022 06:08 — forked from amirrajan/main.rb
DragonRuby Game Toolkit - Shadows (https://amirrajan.itch.io/shadows)
class Game
attr_gtk
def tick
defaults
input
calc
render
end
{
inputs:
[params[:authenticity_token], request.x_csrf_token].map do |token|
Base64.urlsafe_decode64(token)
end.map do |token|
xor_byte_strings(
token[0...AUTHENTICITY_TOKEN_LENGTH],
token[AUTHENTICITY_TOKEN_LENGTH..-1]
)
end,
@Eric-Guo
Eric-Guo / main.rb
Created November 12, 2021 02:56 — forked from amirrajan/main.rb
DragonRuby Game Toolkit VR - Let There Be Light
# https://www.youtube.com/watch?v=S-baJwEjUsk&ab_channel=AmirRajan
class Game
attr_gtk
def tick
grid.origin_center!
defaults
calc
render
@Eric-Guo
Eric-Guo / render_text.rb
Created July 28, 2021 05:18 — forked from cbilski/render_text.rb
A lazy way to wrap strings in dragonruby.
# This breaks when the characters no longer fit on the line. A smarter version would iterate using word/line boundaries
# Sample Usage:
# rect = args.layout.rect(row: 3, col: 12, w: 6, h: 7, dx: 0, dy: 0) # OBJECTIVE
# text = "OBJECTIVE:\n\nMECHs are threatening\nour CITIZENS:\n+ Bring the CITIZENS home.\n+ Destroy the MECHs."
# render_text(args, args.outputs.primitives, rect, text, 1, "/fonts/PixeloidSans.ttf")
#
def render_text(args, pipeline, rect, text, font_size, font)
work = ""
len = text.length
font_h = args.gtk.calcstringbox(text, font_size, font).y
{
"go.useLanguageServer": true,
"editor.formatOnSave": true,
"window.nativeTabs": true,
"editor.glyphMargin": false,
"editor.renderLineHighlight": "none",
"workbench.editor.tabCloseButton": "left",
"workbench.startupEditor": "newUntitledFile",
"window.autoDetectColorScheme": true,
"window.openFilesInNewWindow": "on",
@Eric-Guo
Eric-Guo / a_noble_circle_stage.rb
Created June 18, 2021 00:43 — forked from amirrajan/a_noble_circle_stage.rb
Ruby DSL for one of my platformers
# coding: utf-8
module Women
def women
{
display_name: '≈≈≈ Women ≈≈≈',
checkpoint: :women,
stage: [
'Unfortunately for Circle, he was cursed with many, many, sides.',
page_66,
{ loc: ' x ', type: Triangle },
@Eric-Guo
Eric-Guo / main.rb
Created June 5, 2021 22:29 — forked from icculus/main.rb
Tetris in DragonRuby, code at the end of Part 1
# This is the code as it stands at the end of
# "Let's make Tetris with DragonRuby Game Toolkit!" Part 1:
# https://www.youtube.com/watch?v=xZMwRSbC4rY
$gtk.reset
class TetrisGame
def initialize args
@args = args
@next_move = 30
@Eric-Guo
Eric-Guo / main.rb
Created June 3, 2021 23:49 — forked from amirrajan/main.rb
Gauntlet written in DragonRuby Game Toolkit
class Game
attr_gtk
def tick
defaults
render
input
calc
end