From b6c7b0a06c40b8e29b72f1042e4f3789dad78131 Mon Sep 17 00:00:00 2001 From: Kimapr Date: Thu, 30 Mar 2023 06:52:00 +0500 Subject: [PATCH] fix something idk --- main.lua | 116 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 68 insertions(+), 48 deletions(-) diff --git a/main.lua b/main.lua index 94720ca..c70a912 100644 --- a/main.lua +++ b/main.lua @@ -4,6 +4,19 @@ local g=love.graphics local font=g.newFont(9,"mono") font:setFilter("nearest") g.setFont(font) +local ltest=os.time() +local ltest=0 +local hookdbg=false +if hookdbg then + debug.sethook(function() + ltest=ltest+1 + if ltest>=1000 then + print("!! we are in a freezer !!",debug.traceback()) + ltest=0 + end + end,"",1000) +end + local colors={ function(a,b) g.setColor(1,0,0,b*a) @@ -52,9 +65,6 @@ local colors={ g.line(0.3,0.5, 0.7,0.5) end, } -function pairs(t) - return next,t,nil -end local gobjs={} local cgobjs={} local lgobjs={} @@ -65,19 +75,13 @@ for k,v in ipairs(colors) do lgobjs[k]={c=k,super="lines"} mgobjs[k]={c=k,super="color"} end -local ltest=0 -debug.sethook(function() - ltest=ltest+1 - if ltest>=10000 then - print("!! we are in a freezer !!",debug.traceback()) - ltest=0 - end -end,"",1000) local cc=3 local tt=0 local bat=1 local batd=bat local score=0 +local taint=0 +local taintd=taint local tochar=0 local scored=score local function znoise(...) @@ -180,7 +184,7 @@ local function badboigemcheck(c,am,ac,rm) if not c then return end if ac~=5 and ac~=4 then return end local aa={} - for k,v in pairs(am) do + for k,v in next,am do local cc=board[v[1]][v[2]] if isgem(cc) and (cc.super and cc.super~="charge") then return @@ -240,11 +244,11 @@ local function check(x,y,rm,oam,obm) end end if ac>=3 then - for k,v in pairs(am) do rm[k]=v end + for k,v in next,am do rm[k]=v end badboigemcheck(c,am,ac,rm) end if bc>=3 then - for k,v in pairs(bm) do rm[k]=v end + for k,v in next,bm do rm[k]=v end badboigemcheck(c,bm,bc,rm) end return next(rm) and rm,oam,obm @@ -274,7 +278,7 @@ local function drawboard(x,y,w,h) local ttx=font:getWidth(sctext)*tty g.translate(bw-ttx,-1.1) g.scale(tty) - g.setColor(1,1,1) + g.setColor(1,1-taintd,1-taintd) g.print(sctext) g.pop() if not falltest then @@ -296,7 +300,7 @@ local function drawboard(x,y,w,h) end end for x,falling in ipairs(falling) do - for fall,_ in pairs(falling) do + for fall,_ in next,falling do for i,c in ipairs(fall.figs) do g.push("all") local tx,ty=fall.x,fall.y-i+1 @@ -308,7 +312,7 @@ local function drawboard(x,y,w,h) end end end - for v,_ in pairs(booms) do + for v,_ in next,booms do g.push("all") local tx,ty=v.x,v.y g.translate(tx-0.5,ty-0.5) @@ -322,7 +326,7 @@ local function drawboard(x,y,w,h) end local function fall(l) local cols={} - for k,v in pairs(l) do + for k,v in next,l do local x,y=unpack(v) cols[x]=cols[x] or {l={},m={}} cols.l[#cols+1]=y @@ -381,7 +385,7 @@ local function kill(x,y,rc) end unfell[x]={} local tt={} - for k,v in pairs(falling[x]) do + for k,v in next,falling[x] do tt[#tt+1]=k end table.sort(tt,function(a,b) @@ -412,8 +416,8 @@ local function kill(x,y,rc) board[x][yls[x]]=mfall.figs[ll] local ccc=0 if love.keyboard.isDown("f6") then - for x,falling in pairs(falling) do - for fall,_ in pairs(falling) do + for x,falling in next,falling do + for fall,_ in next,falling do falling[fall]=nil end end @@ -425,8 +429,8 @@ local function kill(x,y,rc) board[x][yls[x]]=mfall.figs[ll] if eqgem(mfall.figs[ll],occ) then break end end - for x,uf in pairs(unfell) do - for y,v in pairs(uf) do + for x,uf in next,unfell do + for y,v in next,uf do board[x][y]=v[1] end end @@ -435,7 +439,7 @@ end killall=function(kills,b,...) if not kills then return end if b then - for k,v in pairs(b) do + for k,v in next,b do kills[k]=v end return killall(kills,...) @@ -447,7 +451,7 @@ killall=function(kills,b,...) news=false local ko kills,ko={},kills - for k,v in pairs(ko) do + for k,v in next,ko do kills[k]=v if not seen[k] then local x,y=unpack(v) @@ -472,7 +476,7 @@ killall=function(kills,b,...) if isgem(c) then local mks={} megascan(x,y,c,mks) - for k,v in pairs(mks) do + for k,v in next,mks do if not kills[k] then kills[k]=v news=true @@ -482,7 +486,7 @@ killall=function(kills,b,...) end end end - for k,v in pairs(kills) do + for k,v in next,kills do tt[#tt+1]=v end table.sort(tt,function(a,b) @@ -496,7 +500,7 @@ killall=function(kills,b,...) end end local rm,oam,obm={},{},{} - for k,v in pairs(checks) do + for k,v in next,checks do local x,y=unpack(v) check(x,y,rm,oam,obm) end @@ -521,8 +525,8 @@ local function dropall(off,die) end end if die then - for x,falling in pairs(falling) do - for fall,_ in pairs(falling) do + for x,falling in next,falling do + for fall,_ in next,falling do fall.die=true end end @@ -547,22 +551,25 @@ local function fillboard() end end if not next(rm) then break end - for k,v in pairs(rm) do + for k,v in next,rm do local x,y=unpack(v) board[x][y]=randgem() end end dropall(-bh) end +local dbg=false local function resboard() cc=3 score=0 bat=1 + if not dbg then + taint=0 + end gemrng=love.math.newRandomGenerator(991) tochar=bw*bh+gemrng:random(bw) fillboard() end -local dbg=false local playdbg=false function love.load() @@ -697,7 +704,9 @@ function love.mousemoved() end function love.update(dt) - ltest=0 + if hookdbg then + ltest=0 + end dt=math.min(dt,0.2)*(speeds[slow]) accumdt=math.min(0.6,accumdt+dt) local fcc=0 @@ -726,7 +735,7 @@ function love.update(dt) board[px][py],board[ix][iy] local kills=check(ix,iy,check(px,py)) local kc=0 - for k,v in pairs(kills or {}) do + for k,v in next,kills or {} do if v[3] and v[3].super=="color" then kc=kc+50 elseif v[3] then @@ -756,6 +765,7 @@ function love.update(dt) bat=math.max(0,bat-dt*0.015*(math.max(bat,0.0625)^0.5)) batd=interp(batd,bat,dt) scored=interp(scored,score,dt) + taintd=interp(taintd,taint,dt) end if bat==0 and not dying then dying=true @@ -764,7 +774,7 @@ function love.update(dt) animc=0 entc=0 boomc=0 - for k,v in pairs(anims) do + for k,v in next,anims do animc=animc+1 v.cx=interp(v.cx,v.tx,dt*2) v.cy=interp(v.cy,v.ty,dt*2) @@ -775,12 +785,12 @@ function love.update(dt) local tk={} if running then for x,falling in ipairs(falling) do - for fall,_ in pairs(falling) do + for fall,_ in next,falling do entc=entc+1 fall.vel=fall.vel+dt*gacc fall.y=fall.y+fall.vel*dt local iy=math.floor(fall.y) - for fallb,_ in pairs(falling) do + for fallb,_ in next,falling do if fall~=fallb and inters( fall.y-#fall.figs+1-0.5,fall.y+0.5, fallb.y-#fallb.figs+1-0.5,fallb.y+0.5 @@ -842,7 +852,7 @@ function love.update(dt) local good=false for ix=1,bw do for iy=1,bh do - for _,a in pairs{{1,0},{-1,0},{0,1},{0,-1}} do + for _,a in next,{{1,0},{-1,0},{0,1},{0,-1}} do local px,py=ix+a[1],iy+a[2] if px>=1 and py>=1 and px<=bw and py<=bh then board[ix][iy],board[px][py]= @@ -858,12 +868,12 @@ function love.update(dt) toplchi=plchint end local oam,obm,rm={},{},{} - for k,v in pairs(tk) do + for k,v in next,tk do local x,y=unpack(v) check(x,y,rm,oam,obm) end killall(rm) - for v,_ in pairs(booms) do + for v,_ in next,booms do boomc=boomc+1 v.a=v.a-dt/math.abs(v.a)*4 if v.a<=0.01 then @@ -885,22 +895,26 @@ function love.keypressed(k) if dbg and tonumber(k) then print(gobjs[tonumber(k)],tonumber(k)) board[x][y]=gobjs[tonumber(k)] or board[x][y] + taint=1 end if dbg and isgem(board[x][y]) then local c=board[x][y].c if k=="h" then board[x][y]=cgobjs[c] + taint=1 elseif k=="j" then board[x][y]=lgobjs[c] + taint=1 elseif k=="k" then board[x][y]=mgobjs[c] + taint=1 end end - if k=="f2" then + if k=="f2" and dbg then yes=not yes elseif k=="f3" then dbg=not dbg - elseif k=="f4" then + elseif k=="f4" and dbg then local unfell={} local yls={} local cx=x @@ -914,7 +928,7 @@ function love.keypressed(k) end unfell[x]={} local tt={} - for k,v in pairs(falling[x]) do + for k,v in next,falling[x] do tt[#tt+1]=k end table.sort(tt,function(a,b) @@ -930,16 +944,22 @@ function love.keypressed(k) end yls[x]=yl end - elseif k=="f5" then + taint=1 + elseif k=="f5" and dbg then slow=slow%3+1 - elseif k=="f7" then + taint=1 + elseif k=="f7" and dbg then falltest=not falltest - elseif k=="f8" then + taint=1 + elseif k=="f8" and dbg then bat=bat*0.25 - elseif k=="f9" then + taint=1 + elseif k=="f9" and dbg then bat=bat*2 - elseif k=="f10" then + taint=1 + elseif k=="f10" and dbg then playdbg=not playdbg + taint=1 elseif k=="f11" then love.window.setFullscreen(not love.window.getFullscreen()) end