Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Author: Tommy
- local function drawH(_font)
- {
- local size = Draw(0,0, "Hello World")
- size.font = _font;
- return size.heightPx;
- }
- function toColor(r, g, b)
- {
- return "{#"+rgbToHex(r, g, b)+"}";
- }
- class G_Draw
- {
- constructor(_x, _y, _font, _text, _r = 255, _g = 255, _b = 255)
- {
- draw = {
- d = [],
- text = [],
- r = [],
- g = [],
- b = [],
- x = [],
- y = [],
- dist_x = [],
- dist_y = [],
- font = _font,
- default_r = _r,
- default_g = _g,
- default_b = _b,
- };
- local pos = {
- x = _x,
- y = _y,
- dis_x = 0,
- dis_y = 0,
- };
- if(_text.find("~n") == null && _text.find("{#") == null)
- {
- draw.text.append(_text)
- draw.r.append(draw.default_r);
- draw.g.append(draw.default_g);
- draw.b.append(draw.default_b);
- draw.x.append(pos.x);
- draw.y.append(pos.y);
- draw.dist_x.append(pos.dis_x);
- draw.dist_y.append(pos.dis_y);
- }else _text = _text + "~n";
- local convert = _text;
- local newline = 0;
- local lastLine = false;
- local first = false;
- local loopLine = 0
- do{
- if(_text.find("~n") != null || !lastLine)
- {
- if(_text.find("~n"))
- {
- convert = _text.slice(0, _text.find("~n"));
- _text = _text.slice(_text.find("~n")+2);
- print(convert);
- first = false;
- }else lastLine = true;
- //print(_text);
- pos.y = _y + newline*drawH(draw.font)+3;
- pos.x = _x;
- pos.dis_x = _x;
- pos.dis_y = pos.y;
- ++newline;
- local loopColor = 0;
- do
- {
- if (convert.find("{#") != null)
- {
- if (!first && convert.find("{") > 0)
- {
- draw.text.append(convert.slice(0, convert.find("{")))
- draw.r.append(draw.default_r);
- draw.g.append(draw.default_g);
- draw.b.append(draw.default_b);
- draw.x.append(pos.x);
- draw.y.append(pos.y);
- //
- draw.dist_x.append(pos.dis_x);
- draw.dist_y.append(pos.dis_y);
- textSetFont(draw.font);
- local lx = textWidthPx(convert.slice(0, convert.find("{")));
- pos.x = pos.x + lx;
- pos.dis_x += lx;
- convert = convert.slice(convert.find("{#"));
- first = true;
- }else first = true;
- local color = hexToRgb(convert.slice(convert.find("{")+2, convert.find("}")));
- convert = convert.slice(convert.find("}")+1);
- //print("text: " + convert);
- local endText = null
- if(convert.find("{#") != null) endText = convert.slice(0, convert.find("{#"));
- else if(convert.find("~n") != null) endText = convert.slice(0, convert.find("~n"));
- else endText = convert.slice(0);
- draw.text.append(endText);
- draw.r.append(color.r);
- draw.g.append(color.g);
- draw.b.append(color.b);
- draw.x.append(pos.x);
- draw.y.append(pos.y);
- //
- draw.dist_x.append(pos.dis_x);
- draw.dist_y.append(pos.dis_y);
- textSetFont(draw.font);
- local lx = textWidthPx(endText);
- pos.x = pos.x + lx;
- pos.dis_x += lx;
- }else{
- if(!first && !lastLine)
- {
- draw.text.append(convert)
- draw.r.append(draw.default_r);
- draw.g.append(draw.default_g);
- draw.b.append(draw.default_b);
- draw.x.append(pos.x);
- draw.y.append(pos.y);
- //
- draw.dist_x.append(pos.dis_x);
- draw.dist_y.append(pos.dis_y);
- }
- loopColor = 1;
- }
- } while ( loopColor != 1)
- }else{
- loopLine = 1;
- }
- } while ( loopLine != 1 )
- //create
- foreach(i, _draw in draw.text)
- {
- draw.d.append(Draw(anx(draw.x[i]), any(draw.y[i]), _draw));
- draw.d[i].setPositionPx(draw.x[i], draw.y[i])
- draw.d[i].font = draw.font;
- draw.d[i].setColor(draw.r[i], draw.g[i], draw.b[i]);
- }
- }
- function visible(_bool)
- {
- isVisible = _bool;
- foreach(_draw in draw.d)
- {
- _draw.visible = _bool;
- }
- }
- function setPosition(_x, _y)
- {
- foreach(i, _draw in draw.d)
- {
- _draw.setPositionPx(_x + draw.dist_x[i], _y + draw.dist_y[i]);
- draw.x[i] = _x + draw.dist_x[i];
- draw.y[i] = _y + draw.dist_y[i];
- }
- }
- function getPositionPx()
- {
- return draw.d[0].getPositionPx();
- }
- function top()
- {
- foreach(i, _draw in draw.d)
- {
- _draw.top;
- }
- }
- isVisible = false;
- draw = null;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement