CurrentAttributes came out on Rails 5.2 allow us to control session variables, follow steps bellow
# frozen_string_literal: true| using Kellojo.Utility; | |
| using System.Collections; | |
| using System.Collections.Generic; | |
| using UnityEngine; | |
| public class WaveFunctionCollapse<T> where T : IWfcTile<T> { | |
| public WfcCell<T>[,] Cells; | |
| public int Entropy { |
| 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))) |
| relative_require "record" | |
| class Record | |
| record :a, :b | |
| end | |
| a = Record.new(a: 10, b: 20) | |
| a = a.merge(b: 10) | |
| p a |
| # 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 |