diff --git a/src/v_draw.cpp b/src/v_draw.cpp index 37648112f..fc592949c 100644 --- a/src/v_draw.cpp +++ b/src/v_draw.cpp @@ -959,6 +959,19 @@ void DCanvas::DrawLine(int x0, int y0, int x1, int y1, int palColor, uint32_t re #endif } +DEFINE_ACTION_FUNCTION(_Screen, DrawLine) +{ + PARAM_PROLOGUE; + PARAM_INT(x0); + PARAM_INT(y0); + PARAM_INT(x1); + PARAM_INT(y1); + PARAM_INT(color); + if (!screen->HasBegun2D()) ThrowAbortException(X_OTHER, "Attempt to draw to screen outside a draw function"); + screen->DrawLine(x0, y0, x1, y1, -1, color); + return 0; +} + void DCanvas::DrawPixel(int x, int y, int palColor, uint32_t realcolor) { #ifndef NO_SWRENDER diff --git a/wadsrc/static/zscript/base.txt b/wadsrc/static/zscript/base.txt index e38517142..89eea6bde 100644 --- a/wadsrc/static/zscript/base.txt +++ b/wadsrc/static/zscript/base.txt @@ -168,6 +168,7 @@ struct Screen native native static vararg void DrawTexture(TextureID tex, bool animate, double x, double y, ...); native static vararg void DrawChar(Font font, int normalcolor, double x, double y, int character, ...); native static vararg void DrawText(Font font, int normalcolor, double x, double y, String text, ...); + native static void DrawLine(int x0, int y0, int x1, int y1, Color color); native static void DrawFrame(int x, int y, int w, int h); native static Vector2, Vector2 VirtualToRealCoords(Vector2 pos, Vector2 size, Vector2 vsize, bool vbottom=false, bool handleaspect=true); native static double GetAspectRatio();