Current API:
function getIconUrl(name: string, family: string, variant: string) {}
// base "resolver"
{| # one-time setup | |
| @glow_dirs ||= 16.times.map do |i| | |
| a = i * Math::PI * 2 / 16 | |
| [Math.cos(a), Math.sin(a)] | |
| end | |
| @glow_mask_blend ||= Numeric.compose_blendmode( | |
| BLENDFACTOR_ZERO, BLENDFACTOR_SRC_ALPHA, BLENDOPERATION_ADD, | |
| BLENDFACTOR_ZERO, BLENDFACTOR_SRC_ALPHA, BLENDOPERATION_ADD | |
| ) | |
| @glow_hole_punch ||= Numeric.compose_blendmode( |
| def calc_car dt = 1 | |
| target_speed = if state.engine == :high | |
| state.high_speed | |
| else | |
| state.low_speed | |
| end | |
| state.speed *= (0.98 * dt) if steering_at_limit? | |
| if auto_break? |
| class Game | |
| attr_gtk # attr_gtk class macro | |
| SPRITES = { | |
| conveyor_belt: { | |
| source_x: 0, | |
| source_w: 16, | |
| source_h: 16, | |
| source_y: 0, | |
| animations: { |
| function boolify (str) { | |
| const truthy = [ | |
| "y", | |
| "yes", | |
| "1", | |
| "true", | |
| "on" | |
| ] | |
| if (str && truthy.includes(str.toLowerCase())) { |
| <?xml version="1.0" encoding="UTF-8" ?> | |
| <!-- | |
| Dark mode default style for Notepad++. | |
| This file is based on Zenburn them (zenburn.xml) | |
| License: GPL2 | |
| --> | |
| <NotepadPlus modelDate="20251214" modelFileLastModifiedDate="20251227"> | |
| <LexerStyles> | |
| <LexerType name="actionscript" desc="ActionScript" ext=""> | |
| <WordsStyle name="DEFAULT" styleID="11" fgColor="DCDCCC" bgColor="3F3F3F" fontName="" fontStyle="0" fontSize="" /> |
| def tick args | |
| args.state.background ||= { | |
| x: 0, | |
| y: Grid.h / 2, | |
| h: 224 * 2, | |
| w: 1504 * 2, | |
| path: "sprites/background.png" | |
| } | |
| background_sprite = args.state.background |
| const nb = [ | |
| 'ArrowDown', | |
| 'ArrowUp' | |
| ] | |
| class Xs { | |
| static windowKeyUpHandler(e) { | |
| nb.includes(e.key) && e.preventDefault() | |
| } | |
| } |