diff --git a/koptilnya/common.txt b/koptilnya/common.txt new file mode 100644 index 0000000..767ef59 --- /dev/null +++ b/koptilnya/common.txt @@ -0,0 +1,26 @@ +NULL_ENTITY = entity(0) + +function deepcopy(orig) + local orig_type = type(orig) + local copy + if orig_type == 'table' then + copy = {} + for orig_key, orig_value in next, orig, nil do + copy[deepcopy(orig_key)] = deepcopy(orig_value) + end + setmetatable(copy, deepcopy(getmetatable(orig))) + else -- number, string, boolean, etc + copy = orig + end + return copy +end + +function table:merge(table1, table2) + local newTable = deepcopy(table1) + + for k, v in pairs(table2) do + newTable[k] = v + end + + return newTable +end diff --git a/koptilnya/libs/render.txt b/koptilnya/libs/render.txt index be32eff..e933bb3 100644 --- a/koptilnya/libs/render.txt +++ b/koptilnya/libs/render.txt @@ -44,16 +44,26 @@ function render.drawArc(x, y, ang, p, rad, seg) end function render.drawFilledCircle(x, y, radius, seg) - local cir = {} + local cir = {} - table.insert(cir, { x = x, y = y, u = 0.5, v = 0.5 }) - for i = 0, seg do - local a = math.rad(( i / seg ) * -360) - table.insert(cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 }) - end + table.insert(cir, { x = x, y = y, u = 0.5, v = 0.5 }) + for i = 0, seg do + local a = math.rad(( i / seg ) * -360) + table.insert(cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 }) + end - local a = math.rad(0) - table.insert(cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 }) + local a = math.rad(0) + table.insert(cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 }) - render.drawPoly(cir) + render.drawPoly(cir) +end + +function render.drawRotatedSimpleText(x, y, text, ang) + local m = Matrix() + m:translate(Vector(x, y, 0 )) + m:rotate(Angle(0, ang, 0)) + + render.pushMatrix(m) + render.drawSimpleText(0, 0, text) + render.popMatrix() end \ No newline at end of file