diff --git a/src/vm_builtins.c b/src/vm_builtins.c index d61d9e3c..8d870aae 100644 --- a/src/vm_builtins.c +++ b/src/vm_builtins.c @@ -7178,6 +7178,21 @@ static RValue builtin_draw_line(VMContext* ctx, RValue* args, MAYBE_UNUSED int32 return RValue_makeUndefined(); } +// draw_line_colour(x1, y1, x2, y2, col1, col2) +static RValue builtin_draw_line_colour(VMContext* ctx, RValue* args, MAYBE_UNUSED int32_t argCount) { + Runner* runner = ctx->runner; + if (runner->renderer != nullptr) { + float x1 = (float) RValue_toReal(args[0]); + float y1 = (float) RValue_toReal(args[1]); + float x2 = (float) RValue_toReal(args[2]); + float y2 = (float) RValue_toReal(args[3]); + float col1 = (float) RValue_toReal(args[4]); + float col2 = (float) RValue_toReal(args[5]); + runner->renderer->vtable->drawLineColor(runner->renderer, x1, y1, x2, y2, 1.0f, col1, col2, runner->renderer->drawAlpha); + } + return RValue_makeUndefined(); +} + // draw_line_width(x1, y1, x2, y2, w) static RValue builtin_draw_line_width(VMContext* ctx, RValue* args, MAYBE_UNUSED int32_t argCount) { Runner* runner = ctx->runner; @@ -11356,6 +11371,8 @@ void VMBuiltins_registerAll(VMContext* ctx) { } VM_registerBuiltin(ctx, "draw_self", builtin_draw_self); VM_registerBuiltin(ctx, "draw_line", builtin_draw_line); + VM_registerBuiltin(ctx, "draw_line_colour", builtin_draw_line_colour); + VM_registerBuiltin(ctx, "draw_line_color", builtin_draw_line_colour); // alt-spelling (used in Undertale) VM_registerBuiltin(ctx, "draw_line_width", builtin_draw_line_width); VM_registerBuiltin(ctx, "draw_line_width_colour", builtin_draw_line_width_colour); VM_registerBuiltin(ctx, "draw_line_width_color", builtin_draw_line_width_colour);