Skip to content

Instantly share code, notes, and snippets.

View emdeeeks's full-sized avatar

Gareth Griffiths emdeeeks

View GitHub Profile
@amirrajan
amirrajan / main.rb
Created May 28, 2024 20:58
DragonRuby Game Toolkit - Scene Management With Fade To Black
class RootScene < Scene
attr :game
def initialize
@game = Game.new
$game = @game
@world_scene = WorldScene.new
@embark_scene = EmbarkScene.new
@world_event_scene = WorldEventScene.new
@battle_scene = BattleScene.new
@amirrajan
amirrajan / main.rb
Last active February 26, 2025 22:21
DragonRuby Game Toolkit - Shader Tech Demo https://www.youtube.com/watch?v=LZgvvU91yyI
class Game
attr_gtk
def tick
defaults
render
input
calc
end
@amirrajan
amirrajan / main.rb
Created January 16, 2024 07:31
DragonRuby Game Toolkit - Bullet Hell
class ShopScene
attr_gtk
def activate
state.module_selected = nil
state.available_modules = state.modules.shuffle.take(3)
state.available_module_1 = state.available_modules[0]
state.available_module_2 = state.available_modules[1]
state.available_module_3 = state.available_modules[2]
end
@vidarh
vidarh / rubywm.rb
Created November 21, 2023 20:16
rubywm.rb - a minimalist WM using pure-x11 and based on TinyWM
# Based on TinyWM by Nick Welch
require 'X11'
dpy = X11::Display.new
root = dpy.screens.first.root
# OK, so pure-x11 *really* badly needs built in keysym lookup,
# but I don't want to add that without doing it properly, so this
@ghn
ghn / app_form_builder.rb
Created April 28, 2023 11:18
Rails customs form Builder
# frozen_string_literal: true
# Inspiration: https://brandnewbox.com/notes/2021/03/form-builders-in-ruby/
#
# Example:
#
# f.input :field, options
#
# possible options:
# - as: symbol (:boolean, :data, :float, :radio, :select, :string, :text, :file, :time)
@amirrajan
amirrajan / main.rb
Created April 27, 2023 19:46
DragonRuby Game Toolkit - Square Fall
# game concept from: https://youtu.be/Tz-AinJGDIM
# This class encapsulates the logic of a button that pulses when clicked.
# It is used in the StartScene and GameOverScene classes.
class PulseButton
# a block is passed into the constructor and is called when the button is clicked,
# and after the pulse animation is complete
def initialize rect, text, &on_click
@rect = rect
@text = text
@hopsoft
hopsoft / 00_do_stuff_job.rb
Last active June 6, 2025 19:22
ActiveJob as Service Worker
# ActiveJob natively captures constructor arguments in an `@arguments` instance variable
# which is also exposed as an `arguments` property on each job instance.
#
# Calls to `perform_now` and `perform_later` both forward arguments to the constructor.
#
# For example, all of these invocation styles work.
#
# result = DoStuffJob.new("foobar").perform # sync
# result = DoStuffJob.new.perform("foobar") # sync
# result = DoStuffJob.perform_now("foobar") # sync
@dpaluy
dpaluy / referrable.rb
Created February 12, 2023 19:14
Referrable Rails
module Referrable
extend ActiveSupport: :Concern
included do
has_one referral, foreign_key: "referred_user_id", dependent: : destroy has_one referring_user, through: :referral alias_method :referred_by, :referring_user
has_many :referrals, foreign_key: "referring_user_id", dependent: :nullify has_many :referred_users, through: referrals
validates :referral_code, uniqueness: true, allow_nil: true
end
end
@tompng
tompng / colorize.rb
Last active August 26, 2023 08:43
福岡rubyist会議Quine
require'irb/color'
code = File.read(ARGV[0] || 'fukuokark.rb')
def hoge(s)
s.gsub("eval(s*'')","$a=s*''")
end
eval code.gsub('then{;eval', 'then{eval hoge')
w = 132
ended = false
colored = IRB::Color.colorize_code(code.lines[0].dup+'%').gsub(/\n.+/,"\n")
@xenobrain
xenobrain / hex_game.rb
Last active February 19, 2026 20:10
starting point for a hex based game
include MatrixFunctions
# Math constants
K_INV_6 = 1.0 / 6.0
K_2_OVER_3 = 2.0 / 3.0
K_2_PI = Math::PI * 2.0
K_SQRT_3 = Math.sqrt 3.0
K_NEG_1_OVER_3 = -1.0 / 3.0
K_DEG2RAD = Math::PI / 180.0
K_RAD2DEG = 360.0 / (2.0 * Math::PI)