feat: player runtime for goodluke and SaintlyCorruption
Text fields (`input`) with InputValue classes games can extend, continue/break in screen loops, Confirm, CaptureFocus/ClearFocus/InvertSelected, generator functions and iter/next, starred tuple items, renpy.file and json over data files loaded before the game starts, renpy.Container and register_sl_displayable, DiamondBox layout, ConditionSwitch/DynamicImage/Animation, renpy.show(what=...), callable transforms (`store.move_in(0.3)`), call_in_new_context as a call, im.matrix/im.Image/ MatrixColor, colorsys, fnmatch, FontGroup, persistent._clear and small renpy helpers. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e66160cffa
commit
e48521bdfb
12 files changed
+440
-26
No files matched your search
@@ -312,6 +312,38 @@ export function pythonModules(): Record<string, any> {
|
||||
OrderedDict: () => new PyDict(),
|
||||
},
|
||||
functools: functionModules,
|
||||
colorsys: {
|
||||
rgb_to_hls: (r: number, g: number, b: number) => {
|
||||
const max = Math.max(r, g, b), min = Math.min(r, g, b), l = (max + min) / 2, d = max - min;
|
||||
if (d === 0) return [0, l, 0];
|
||||
const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
||||
const h = max === r ? ((g - b) / d) % 6 : max === g ? (b - r) / d + 2 : (r - g) / d + 4;
|
||||
return [((h / 6) % 1 + 1) % 1, l, s];
|
||||
},
|
||||
hls_to_rgb: (h: number, l: number, s: number) => {
|
||||
if (s === 0) return [l, l, l];
|
||||
const q = l < 0.5 ? l * (1 + s) : l + s - l * s, p = 2 * l - q;
|
||||
const channel = (t: number) => {
|
||||
t = ((t % 1) + 1) % 1;
|
||||
return t < 1 / 6 ? p + (q - p) * 6 * t : t < 1 / 2 ? q : t < 2 / 3 ? p + (q - p) * (2 / 3 - t) * 6 : p;
|
||||
};
|
||||
return [channel(h + 1 / 3), channel(h), channel(h - 1 / 3)];
|
||||
},
|
||||
rgb_to_hsv: (r: number, g: number, b: number) => {
|
||||
const max = Math.max(r, g, b), min = Math.min(r, g, b), d = max - min;
|
||||
const h = d === 0 ? 0 : max === r ? ((g - b) / d) % 6 : max === g ? (b - r) / d + 2 : (r - g) / d + 4;
|
||||
return [((h / 6) % 1 + 1) % 1, max === 0 ? 0 : d / max, max];
|
||||
},
|
||||
hsv_to_rgb: (h: number, s: number, v: number) => {
|
||||
const i = Math.floor(h * 6), f = h * 6 - i, p = v * (1 - s), q = v * (1 - f * s), t = v * (1 - (1 - f) * s);
|
||||
return [[v, q, p, p, t, v][i % 6], [t, v, v, q, p, p][i % 6], [p, p, t, v, v, q][i % 6]];
|
||||
},
|
||||
},
|
||||
fnmatch: {
|
||||
fnmatch: (name: any, pattern: any) => new RegExp("^" + String(pattern).replace(/[.+^${}()|\\]/g, "\\$&")
|
||||
.replace(/\*/g, ".*").replace(/\?/g, ".") + "$", "i").test(String(name)),
|
||||
},
|
||||
traceback: { format_exc: () => "", print_exc: () => null },
|
||||
hashlib: {
|
||||
md5: (data?: any) => new Hash(md5, data),
|
||||
sha256: (data?: any) => new Hash(sha256, data),
|
||||
|
||||
Reference in new issue
Block a user