Skip to content

Instantly share code, notes, and snippets.

View Gouvernathor's full-sized avatar
🤔

Gouvernathor

🤔
View GitHub Profile
@Gouvernathor
Gouvernathor / parameterinfo_ren.py
Created December 2, 2023 19:22
Platform for measuring performance between legacy and reimplemented signature types in renpy
import renpy # type: ignore
"""renpy
init python:
"""
from timeit import Timer
# import parameterinfo # type: ignore
# parameterinfo.renpy = renpy
@Gouvernathor
Gouvernathor / 01shaderstatement_ren.py
Created July 16, 2023 05:11
CDS to register a shader
import renpy # type: ignore
from store import register_decorator # type: ignore
python_object = object
"""renpy
python early:
"""
@register_decorator
class RegisterShader(python_object):
name = "register shader"
init = True
@Gouvernathor
Gouvernathor / 01cds_decorator_ren.py
Created July 16, 2023 05:10
Class decorator to register statements
import renpy # type: ignore
"""renpy
python early:
"""
import inspect
__register_params = frozenset(inspect.signature(renpy.register_statement).parameters) - {"name", "parse", "execute"}
global register_decorator
def register_decorator(cls):
"""A class decorator which registers a new Creator-defined statement.
@Gouvernathor
Gouvernathor / OrderedDict sorting
Last active April 3, 2023 10:22
Different possible implementations for OrderedDict.sort
from collections import OrderedDict as OD
from operator import itemgetter
class OrderedDict(OD):
def sort_A(self, *args, **kwargs):
"""
Sorts the items using sorted(), then calls .update on self with the result.
(Problem : doesn't support passing a key function)
"""
st= sorted(self.items(), key=itemgetter(0), *args, **kwargs)
init python hide:
renpy.register_shader(
"chroma_crt", # https://www.shadertoy.com/view/4dX3zN
fragment_functions="""
vec2 uuv(float wp, vec2 tex_coord)
{
// squared distance from center
vec2 uvv = tex_coord;
vec2 dc = 0.5-uvv;
dc *= dc;
@Gouvernathor
Gouvernathor / reachability.rpy
Last active August 31, 2022 23:39
This is outdated. A lot of edge cases aren't covered.
$ UNREACHABLE
"mmh... yep"
init python in reach:
start_points = (renpy.ast.EarlyPython,
renpy.ast.Init,
renpy.ast.Label,
renpy.ast.TranslateBlock,
)
import re
def formatter(s):
def replacement(match):
pre, bangs, suf = match.group(1, 2, 3)
# pre : the part before the first bang
# bangs : the bang (if any) and the characters going with it
# suf : the colon (if any) and the characters going with it
if not bangs:
@Gouvernathor
Gouvernathor / WaveShader.glsl
Last active May 22, 2022 22:27
The Wave Shader from SoDaRa/RenpyWaveShader, but broken up in several parts
/* variables */
uniform float u_shader_time;
uniform vec2 u_wave_period;
uniform vec2 u_wave_amp;
uniform vec2 u_wave_speed;
uniform float u_direction;
uniform vec2 u_damp;
uniform float u_double;
uniform vec3 u_double_params_x;
@Gouvernathor
Gouvernathor / eventsmanager.rpy
Last active July 16, 2021 15:04
Events manager and journal screen to display it
init python:
class Event:
def __init__(self, id, name=None, categories=()):
self.id = id
self.name = name if name is not None else id
self.categories = categories
define events_list = (Event("intro", _("Arrival in Hogwarts"), {_("General")}),
Event("office_prez"), # technical events used as flags
Event("first_sleep"), # not displayed in the journal since no category