From 2eae6cdfda64a9f0965f10e032d1017c52699cce Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Mon, 9 Aug 2021 11:53:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=A1=E7=AE=97=E5=99=A8?= =?UTF-8?q?=E7=9A=84=E4=B8=80=E4=BA=9B=E9=97=AE=E9=A2=98=20close=20#178=20?= =?UTF-8?q?close=20#179?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parts/scenes/app_calc.lua | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/parts/scenes/app_calc.lua b/parts/scenes/app_calc.lua index 350af816..5bb98806 100644 --- a/parts/scenes/app_calc.lua +++ b/parts/scenes/app_calc.lua @@ -34,15 +34,22 @@ function scene.keyDown(key) elseif key:sub(1,2)=="kp"then scene.keyDown(key:sub(3)) elseif key=="."then - if not(val:find(".",nil,true)or val:find("e"))then + if sym=="="then + sym,reg=false,false + val="0." + elseif not(val:find(".",nil,true)or val:find("e"))then if sym and not reg then reg=val val="0." + else + val=val.."." end - val=val.."." end elseif key=="e"then - if sym~="="and not val:find("e")then + if sym=="="then + sym,reg=false + val="0e" + elseif not val:find("e")then val=val.."e" end elseif key=="backspace"then @@ -54,10 +61,14 @@ function scene.keyDown(key) val=val:sub(1,-2) end if val==""then val="0"end - elseif key=="+"or key=="="and kb.isDown("lshift","rshift")then sym="+" reg=false - elseif key=="*"or key=="8"and kb.isDown("lshift","rshift")then sym="*" reg=false - elseif key=="-"then sym="-" reg=false - elseif key=="/"then sym="/" reg=false + elseif key=="+"or key=="="and kb.isDown("lshift","rshift")then + if reg and sym then scene.keyDown("return")else reg=false end sym="+" + elseif key=="*"or key=="8"and kb.isDown("lshift","rshift")then + if reg and sym then scene.keyDown("return")else reg=false end sym="*" + elseif key=="-"then + if reg and sym then scene.keyDown("return")else reg=false end sym="-" + elseif key=="/"then + if reg and sym then scene.keyDown("return")else reg=false end sym="/" elseif key=="return"then if val:sub(-1)=="e"then val=val:sub(1,-2)end if sym and reg then @@ -73,7 +84,8 @@ function scene.keyDown(key) reg=false elseif key=="escape"then if val~="0"then - val,reg,sym="0" + reg,sym=false,false + val="0" else SCN.back() end