mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-10 15:36:47 +01:00
0d92359da7
Re-creation of https://github.com/Aurorastation/Aurora.3/pull/21046 to skip merge conflict hell. Brings us modern TGUI. **ALTERNATE TITLE: TGUI HELLSCAPE PR ABANDON ALL HOPE YE WHO ENTER HERE** - [x] Migrate build tools (javascript -> typescript, bun for package management). - [x] Upgrade all TGUI dependencies and associated root files to TG-congruent versions (axios, babel, dompurify, eslint, highlight, marked, prettier, sass, source-map, stacktrace-parser, typescript). - [x] InfernoJS -> React migrations - [x] React cleanup and polish (migrate all remaining .js files to appropriate .ts or .tsx filetype, all remaining hooks, linting, error corrections, etc.) - [ ] Test all remaining TGUI interfaces
83 lines
4.1 KiB
Plaintext
83 lines
4.1 KiB
Plaintext
/// Standard maptext
|
|
/// Prepares a text to be used for maptext. Use this so it doesn't look hideous.
|
|
#define MAPTEXT(text) {"<span class='maptext'>[##text]</span>"}
|
|
|
|
/**
|
|
* Pixel-perfect scaled fonts for use in the MAP element as defined in skin.dmf
|
|
*
|
|
* Four sizes to choose from, use the sizes as mentioned below.
|
|
* Between the variations and a step there should be an option that fits your use case.
|
|
* BYOND uses pt sizing, different than px used in TGUI. Using px will make it look blurry due to poor antialiasing.
|
|
*
|
|
* Default sizes are prefilled in the macro for ease of use and a consistent visual look.
|
|
* To use a step other than the default in the macro, specify it in a span style.
|
|
* For example: MAPTEXT_PIXELLARI("<span style='font-size: 24pt'>Some large maptext here</span>")
|
|
*/
|
|
/// Large size (ie: context tooltips) - Size options: 12pt 24pt.
|
|
#define MAPTEXT_PIXELLARI(text) {"<span style='font-family: \"Pixellari\"; font-size: 12pt; -dm-text-outline: 1px black'>[##text]</span>"}
|
|
|
|
/// Standard size (ie: normal runechat) - Size options: 6pt 12pt 18pt.
|
|
#define MAPTEXT_GRAND9K(text) {"<span style='font-family: \"Grand9K Pixel\"; font-size: 6pt; -dm-text-outline: 1px black'>[##text]</span>"}
|
|
|
|
/// Small size. (ie: context subtooltips, spell delays) - Size options: 12pt 24pt.
|
|
#define MAPTEXT_TINY_UNICODE(text) {"<span style='font-family: \"TinyUnicode\"; font-size: 12pt; line-height: 0.75; -dm-text-outline: 1px black'>[##text]</span>"}
|
|
|
|
/// Smallest size. (ie: whisper runechat) - Size options: 6pt 12pt 18pt.
|
|
#define MAPTEXT_SPESSFONT(text) {"<span style='font-family: \"Spess Font\"; font-size: 6pt; line-height: 1.4; -dm-text-outline: 1px black'>[##text]</span>"}
|
|
|
|
/*
|
|
DEFINES USED FOR "generate_floating_text"
|
|
*/
|
|
///Whispers and similar
|
|
#define GENERATE_FLOATING_TEXT_SMALL BITFLAG(1)
|
|
///Normal talking
|
|
#define GENERATE_FLOATING_TEXT_MEDIUM BITFLAG(2)
|
|
///Screaming
|
|
#define GENERATE_FLOATING_TEXT_LARGE BITFLAG(3)
|
|
|
|
|
|
/// Macro from Lummox used to get height from a MeasureText proc.
|
|
/// resolves the MeasureText() return value once, then resolves the height, then sets return_var to that.
|
|
#define WXH_TO_HEIGHT(measurement, return_var) \
|
|
do { \
|
|
var/_measurement = measurement; \
|
|
return_var = text2num(copytext(_measurement, findtextEx(_measurement, "x") + 1)); \
|
|
} while(FALSE);
|
|
|
|
#define SMALL_FONTS(FONTSIZE, MSG) "<span style=\"font-family: 'Small Fonts'; -dm-text-outline: 1 black; font-size: [FONTSIZE]px;\">[MSG]</span>"
|
|
|
|
/// Max width of chat message in pixels
|
|
#define CHAT_MESSAGE_WIDTH 112
|
|
|
|
// Setting this much higher than 1024 could allow spammers to DOS the server easily.
|
|
#define MAX_MESSAGE_LEN 4096
|
|
#define MAX_PAPER_MESSAGE_LEN 3072
|
|
#define MAX_BOOK_MESSAGE_LEN 9216
|
|
#define MAX_LNAME_LEN 64
|
|
#define MAX_NAME_LEN 63
|
|
#define MAX_MESSAGE_CHUNKS 20
|
|
|
|
//All < and > characters
|
|
GLOBAL_DATUM_INIT(angular_brackets, /regex, regex(@"[<>]", "g"))
|
|
|
|
//All characters between < a > inclusive of the bracket
|
|
GLOBAL_DATUM_INIT(html_tags, /regex, regex(@"<.*?>", "g"))
|
|
|
|
//All characters forbidden by filenames: ", \, \n, \t, /, ?, %, *, :, |, <, >, ..
|
|
GLOBAL_DATUM_INIT(filename_forbidden_chars, /regex, regex(@{""|[\\\n\t/?%*:|<>]|\.\."}, "g"))
|
|
GLOBAL_PROTECT(filename_forbidden_chars)
|
|
// had to use the OR operator for quotes instead of putting them in the character class because it breaks the syntax highlighting otherwise.
|
|
|
|
/// Removes characters incompatible with file names.
|
|
#define SANITIZE_FILENAME(text) (GLOB.filename_forbidden_chars.Replace(text, ""))
|
|
|
|
/// Simply removes the < and > characters, and limits the length of the message.
|
|
#define STRIP_HTML_SIMPLE(text, limit) (GLOB.angular_brackets.Replace(copytext(text, 1, limit), ""))
|
|
|
|
/// Removes everything enclose in < and > inclusive of the bracket, and limits the length of the message.
|
|
#define STRIP_HTML_FULL(text, limit) (GLOB.html_tags.Replace(copytext(text, 1, limit), ""))
|
|
|
|
/// BYOND's string procs don't support being used on datum references (as in it doesn't look for a name for stringification)
|
|
/// We just use this macro to ensure that we will only pass strings to this BYOND-level function without developers needing to really worry about it.
|
|
#define LOWER_TEXT(thing) lowertext(UNLINT("[thing]"))
|