CurrentAttributes came out on Rails 5.2 allow us to control session variables, follow steps bellow
# frozen_string_literal: true
class OrderStateMachine | |
include Statesman::Machine | |
state :pending, initial: true | |
state :checking_out | |
state :purchased | |
state :shipped | |
state :cancelled | |
state :failed | |
state :refunded |
def calc_camera | |
if player_charging? | |
if player_charge_percentage < 0.2 | |
state.camera.trauma += 0.005 | |
elsif player_charge_percentage < 0.5 | |
state.camera.trauma += 0.01 | |
elsif player_charge_percentage < 0.8 | |
state.camera.trauma += 0.02 | |
else | |
state.camera.trauma += 0.04 |
print_perlin_dungeon <- function( | |
m, # matrix of perlin noise via ambient::noise_perlin() | |
invert = FALSE # flips tile positions (use set.seed before generating noise) | |
) { | |
tile_wall = "#" | |
tile_floor = "." | |
# Standardise noise values from 0 to 1 | |
m_bin <- round((m - min(m)) / (max(m) - min(m))) |
# Copy this file to ./app/views/component_helper.rb if you want to unlock ViewComponent rendering super powers. | |
module ComponentHelper | |
# Instead of the awkward `render FooComponent.new(title: "foo")` calls in Rails templates, | |
# use a method like `foo_component title: "foo"`. | |
def method_missing(method_name, *args, **kwargs, &block) | |
if method_name.end_with? "_component" | |
component_class = method_name.to_s.classify.constantize | |
component = component_class.new(*args, **kwargs) | |
component.render_in(self, &block) | |
else |
# demo gameplay here: https://youtu.be/wQknjYk_-dE | |
# this is the core game class. the game is pretty small so this is the only class that was created | |
class Game | |
# attr_gtk is a ruby class macro (mixin) that adds the .args, .inputs, .outputs, and .state properties to a class | |
attr_gtk | |
# this is the main tick method that will be called every frame the tick method is your standard game loop. | |
# ie initialize game state, process input, perform simulation calculations, then render | |
def tick | |
defaults |
class Elements | |
def initialize size | |
@size = size | |
@max_x_ordinal = 1280.idiv size | |
@element_lookup = {} | |
@elements = [] | |
end | |
def add_element x_ordinal, y_ordinal | |
return nil if @element_lookup.dig x_ordinal, y_ordinal |
# frozen_string_literal: true | |
class ApplicationComponent < ViewComponent::Base | |
end |
<!-- Circle --> | |
<div> | |
<!-- Building a Progress Ring: https://css-tricks.com/building-progress-ring-quickly/ --> | |
<svg height="<%= @diameter %>" width="<%= @diameter %>"> | |
<circle | |
class="text-gray-300" | |
stroke-width="<%= @stroke_width %>" | |
stroke="currentColor" | |
fill="transparent" | |
r="<%= normalized_radius %>" |
Self-hosting is the practice of locally hosting and managing applications instead of renting from SaaSS providers.
This is a list of Free Software network services and web applications which can be hosted locally. Non-Free software is listed on the Non-Free page.
See Contributing.