SS1984 - Modules - TypesDefine Details

code/__DEFINES/rust.dm

/proc/byondapi_stack_traceExists by default in 516, but needs to be defined for 515 or byondapi-rs doesn't like it.
rustlib_dmi_read_metadataGet the dmi metadata of the file located at fname. Returns a list in the metadata format listed above, or an error message.
rustlib_dmi_inject_metadataInject dmi metadata into a png file located at path. metadata must be a json_encode'd list in the metadata format listed above.
rustlib_dmi_icon_statesinput: must be a path, not an /icon; you have to do your own handling if it is one, as icon objects can't be directly passed to rustg.
rustlib_encode_base64Encode a given string into base64
rustlib_decode_base64Decode a given base64 string
rustlib_iconforge_generateGenerates a spritesheet at: [file_path][spritesheet_name]_[size_id].[png or dmi] The resulting spritesheet arranges icons in a random order, with the position being denoted in the "sprites" return value. All icons have the same y coordinate, and their x coordinate is equal to icon_width * position.
rustlib_iconforge_generate_asyncReturns a job_id for use with rustlib_iconforge_check()
rustlib_iconforge_checkReturns the status of an async job_id, or its result if it is completed. See RUSTG_JOB DEFINEs.
rustlib_iconforge_cleanupClears all cached DMIs and images, freeing up memory. This should be used after spritesheets are done being generated.
rustlib_iconforge_cache_validTakes in a set of hashes, generate inputs, and DMI filepaths, and compares them to determine cache validity. input_hash: xxh64 hash of "sprites" from the cache. dmi_hashes: xxh64 hashes of the DMIs in a spritesheet, given by rustlib_iconforge_generate with hash_icons enabled. From the cache. sprites: The new input that will be passed to rustlib_iconforge_generate(). Returns a CacheResult with the following structure: list( "result": "1" (if cache is valid) or "0" (if cache is invalid) "fail_reason": "" (emtpy string if valid, otherwise a string containing the invalidation reason or an error with ERROR: prefixed.) ) In the case of an unrecoverable panic from within Rust, this function ONLY returns a string containing the error.
rustlib_iconforge_cache_valid_asyncReturns a job_id for use with rustlib_iconforge_check()
rustlib_iconforge_load_gags_configProvided a /datum/greyscale_config typepath, JSON string containing the greyscale config, and path to a DMI file containing the base icons, Loads that config into memory for later use by rustlib_iconforge_gags(). The config_path is the unique identifier used later. JSON Config schema: https://hackmd.io/@tgstation/GAGS-Layer-Types Adding dirs or frames (via blending larger icons) to icons with more than 1 dir or 1 frame is not supported. Returns "OK" if successful, otherwise, returns a string containing the error.
rustlib_iconforge_gagsGiven a config_path (previously loaded by rustlib_iconforge_load_gags_config), and a string of hex colors formatted as "#ff00ff#ffaa00" Outputs a DMI containing all of the states within the config JSON to output_dmi_path, creating any directories leading up to it if necessary. Returns "OK" if successful, otherwise, returns a string containing the error.
rustlib_iconforge_load_gags_config_asyncReturns a job_id for use with rustlib_iconforge_check()
rustlib_iconforge_gags_asyncReturns a job_id for use with rustlib_iconforge_check()
/proc/rustlib_sound_lengthProvided a static RSC file path or a raw text file path, returns the duration of the file in deciseconds as a float.
rustlib_sound_length_listReturns a nested key-value list containing "successes" and "errors" The format is as follows: list( RUSTG_SOUNDLEN_SUCCESES = list("sounds/test.ogg" = 25.34), RUSTG_SOUNDLEN_ERRORS = list("sound/bad.png" = "SoundLen: Unable to decode file."), )

Define Details

rustlib_decode_base64

Decode a given base64 string

rustlib_dmi_icon_states

input: must be a path, not an /icon; you have to do your own handling if it is one, as icon objects can't be directly passed to rustg.

output: icon_states list.

rustlib_dmi_inject_metadata

Inject dmi metadata into a png file located at path. metadata must be a json_encode'd list in the metadata format listed above.

rustlib_dmi_read_metadata

Get the dmi metadata of the file located at fname. Returns a list in the metadata format listed above, or an error message.

rustlib_encode_base64

Encode a given string into base64

rustlib_iconforge_cache_valid

Takes in a set of hashes, generate inputs, and DMI filepaths, and compares them to determine cache validity. input_hash: xxh64 hash of "sprites" from the cache. dmi_hashes: xxh64 hashes of the DMIs in a spritesheet, given by rustlib_iconforge_generate with hash_icons enabled. From the cache. sprites: The new input that will be passed to rustlib_iconforge_generate(). Returns a CacheResult with the following structure: list( "result": "1" (if cache is valid) or "0" (if cache is invalid) "fail_reason": "" (emtpy string if valid, otherwise a string containing the invalidation reason or an error with ERROR: prefixed.) ) In the case of an unrecoverable panic from within Rust, this function ONLY returns a string containing the error.

rustlib_iconforge_cache_valid_async

Returns a job_id for use with rustlib_iconforge_check()

rustlib_iconforge_check

Returns the status of an async job_id, or its result if it is completed. See RUSTG_JOB DEFINEs.

rustlib_iconforge_cleanup

Clears all cached DMIs and images, freeing up memory. This should be used after spritesheets are done being generated.

rustlib_iconforge_gags

Given a config_path (previously loaded by rustlib_iconforge_load_gags_config), and a string of hex colors formatted as "#ff00ff#ffaa00" Outputs a DMI containing all of the states within the config JSON to output_dmi_path, creating any directories leading up to it if necessary. Returns "OK" if successful, otherwise, returns a string containing the error.

rustlib_iconforge_gags_async

Returns a job_id for use with rustlib_iconforge_check()

rustlib_iconforge_generate

Generates a spritesheet at: [file_path][spritesheet_name]_[size_id].[png or dmi] The resulting spritesheet arranges icons in a random order, with the position being denoted in the "sprites" return value. All icons have the same y coordinate, and their x coordinate is equal to icon_width * position.

hash_icons is a boolean (0 or 1), and determines if the generator will spend time creating hashes for the output field dmi_hashes. These hashes can be helpful for 'smart' caching (see rustg_iconforge_cache_valid), but require extra computation.

generate_dmi is a boolean (0 or 1), and determines if the generator will save the sheet as a DMI or stripped PNG file. DMI files can be used to replace bulk Insert() operations, PNGs are more useful for asset transport or UIs. DMI generation is slower due to more metadata. flatten is a boolean (0 or 1), and determines if the DMI output will be flattened to a single frame/dir if unscoped (null/0 dir or frame values). PNGs are always flattened, regardless of argument.

Spritesheet will contain all sprites listed within "sprites". "sprites" format: list( "sprite_name" = list( // <--- this list is a [SPRITE_OBJECT] icon_file = 'icons/path_to/an_icon.dmi', icon_state = "some_icon_state", dir = SOUTH, frame = 1, transform = list([TRANSFORM_OBJECT], ...) ), ..., ) TRANSFORM_OBJECT format: list("type" = RUSTLIB_ICONFORGE_BLEND_COLOR, "color" = "#ff0000", "blend_mode" = ICON_MULTIPLY) list("type" = RUSTLIB_ICONFORGE_BLEND_ICON, "icon" = [SPRITE_OBJECT], "blend_mode" = ICON_OVERLAY, "x" = 1, "y" = 1) // offsets optional list("type" = RUSTLIB_ICONFORGE_SCALE, "width" = 32, "height" = 32) list("type" = RUSTLIB_ICONFORGE_CROP, "x1" = 1, "y1" = 1, "x2" = 32, "y2" = 32) // (BYOND icons index from 1,1 to the upper bound, inclusive) list("type" = RUSTLIB_ICONFORGE_MAP_COLORS, "rr" = 0.5, "rg" = 0.5, "rb" = 0.5, "ra" = 1, "gr" = 1, "gg" = 1, "gb" = 1, "ga" = 1, ...) // alpha arguments and rgba0 optional list("type" = RUSTLIB_ICONFORGE_FLIP, "dir" = SOUTH) list("type" = RUSTLIB_ICONFORGE_TURN, "angle" = 90.0) list("type" = RUSTLIB_ICONFORGE_SHIFT, "dir" = EAST, "offset" = 10, "wrap" = FALSE) list("type" = RUSTLIB_ICONFORGE_SWAP_COLOR, "src_color" = "#ff0000", "dst_color" = "#00ff00") // alpha bits supported list("type" = RUSTLIB_ICONFORGE_DRAW_BOX, "color" = "#ff0000", "x1" = 1, "y1" = 1, "x2" = 32, "y2" = 32) // alpha bits supported. color can be null/omitted for transparency. x2 and y2 will default to x1 and y1 if omitted

Returns a SpritesheetResult as JSON, containing fields: list( "sizes" = list("32x32", "64x64", ...), "sprites" = list("sprite_name" = list("size_id" = "32x32", "position" = 0), ...), "dmi_hashes" = list("icons/path_to/an_icon.dmi" = "d6325c5b4304fb03", ...), "sprites_hash" = "a2015e5ff403fb5c", // This is the xxh64 hash of the INPUT field "sprites". "error" = "[A string, empty if there were no errors.]", ) In the case of an unrecoverable panic from within Rust, this function ONLY returns a string containing the error.

rustlib_iconforge_generate_async

Returns a job_id for use with rustlib_iconforge_check()

rustlib_iconforge_load_gags_config

Provided a /datum/greyscale_config typepath, JSON string containing the greyscale config, and path to a DMI file containing the base icons, Loads that config into memory for later use by rustlib_iconforge_gags(). The config_path is the unique identifier used later. JSON Config schema: https://hackmd.io/@tgstation/GAGS-Layer-Types Adding dirs or frames (via blending larger icons) to icons with more than 1 dir or 1 frame is not supported. Returns "OK" if successful, otherwise, returns a string containing the error.

rustlib_iconforge_load_gags_config_async

Returns a job_id for use with rustlib_iconforge_check()

rustlib_sound_length_list

Returns a nested key-value list containing "successes" and "errors" The format is as follows: list( RUSTG_SOUNDLEN_SUCCESES = list("sounds/test.ogg" = 25.34), RUSTG_SOUNDLEN_ERRORS = list("sound/bad.png" = "SoundLen: Unable to decode file."), )