local bgImage = gfx.CreateSkinImage("gameplay/score_panel/bg.png", 0) local desw = 1080; local desh = 1920; function load_number_image(path) local images = {} for i = 0, 9 do images[i + 1] = gfx.CreateSkinImage(string.format("%s/%d.png", path, i), 0) end return images end local scoreNumbers = load_number_image('score_num') function draw_number(x, y, alpha, num, digits, images, is_dim, scale, kern) scale = scale or 1; kern = kern or 1; local tw, th = gfx.ImageSize(images[1]) tw = tw * scale; th = th * scale; x = x + (tw * (digits - 1)) / 2 y = y - th / 2 for i = 1, digits do local mul = 10 ^ (i - 1) local digit = math.floor(num / mul) % 10 local a = alpha if is_dim and num < mul then a = 0.4 end gfx.BeginPath() gfx.ImageRect(x, y, tw, th, images[digit + 1], a, 0) x = x - (tw * kern) end end local tickTransitions = function (deltaTime) end local render = function (deltaTime, score, maxChain) tickTransitions(deltaTime) gfx.Save(); local x = desw - 740*0.61; -- WHY IS THERE DIFFERENT SCALING FOR THIS TOO???? local y = 330; gfx.BeginPath(); gfx.ImageRect( x, y, 740*0.61, 320*0.61, bgImage, 1, 0 ); draw_number(x+142, y + 83, 1.0, score/10000, 4, scoreNumbers, true, 0.38, 1.12) draw_number(x+338, y + 90, 1.0, score, 4, scoreNumbers, true, 0.28, 1.12) -- Draw max chain gfx.BeginPath(); gfx.LoadSkinFont('Digital-Serial-Bold.ttf') gfx.TextAlign(gfx.TEXT_ALIGN_RIGHT + gfx.TEXT_ALIGN_MIDDLE) gfx.FontSize(30); -- gfx.FillColor(0,0,0,255); -- gfx.Text(string.format("%04d", maxChain), x+170-2, y+155-2); -- gfx.Text(string.format("%04d", maxChain), x+170-2, y+155+2); -- gfx.Text(string.format("%04d", maxChain), x+170+2, y+155-2); -- gfx.Text(string.format("%04d", maxChain), x+170+2, y+155+2); gfx.FillColor(255,255,255,255); gfx.Text(string.format("%04d", maxChain), x+170, y+155); gfx.Restore(); end return { render=render }