From f216e2d6e5622eb8b7cd68fe0eb95a995d75344b Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Thu, 19 Nov 2020 22:45:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E5=B1=80=E5=8F=98=E9=87=8FMODEENV?= =?UTF-8?q?=E7=A7=BB=E5=85=A5=E5=85=A8=E5=B1=80=E5=8F=98=E9=87=8FGAME?= =?UTF-8?q?=E4=B8=AD=EF=BC=8C=E9=87=8D=E6=9E=84=E8=99=9A=E6=8B=9F=E6=8C=89?= =?UTF-8?q?=E9=94=AE=E6=98=BE=E7=A4=BA=E6=83=85=E5=86=B5=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parts/gametoolfunc.lua | 33 ++++++++++++++++++++------------- parts/modes/custom_clear.lua | 22 +++++++++++----------- parts/modes/custom_puzzle.lua | 18 +++++++++--------- parts/player/draw.lua | 6 +++--- parts/player/init.lua | 22 +++++++++++----------- parts/player/player.lua | 23 +++++++++++++---------- parts/player/update.lua | 4 ++-- parts/scenes/main.lua | 2 +- parts/scenes/play.lua | 4 ++-- parts/tick.lua | 2 +- 10 files changed, 73 insertions(+), 63 deletions(-) diff --git a/parts/gametoolfunc.lua b/parts/gametoolfunc.lua index 94132f6f..7faf1b6b 100644 --- a/parts/gametoolfunc.lua +++ b/parts/gametoolfunc.lua @@ -56,9 +56,17 @@ function restoreVirtualKey() B.isDown=false B.pressTime=0 end - if not MODEENV.Fkey then + if not GAME.modeEnv.Fkey then virtualkey[9].ava=false end + if not GAME.modeEnv.holdCount or GAME.modeEnv.holdCount==0 then + virtualkey[8].ava=false + end + if GAME.modeEnv.keyCancel then + for _,v in next,GAME.modeEnv.keyCancel do + virtualkey[v].ava=false + end + end end function copyQuestArgs() @@ -424,6 +432,7 @@ end function loadGame(M,ifQuickPlay) STAT.lastPlay=M GAME.curMode=MODES[M] + GAME.modeEnv=GAME.curMode.env drawableText.modeName:set(text.modes[M][1]) drawableText.levelName:set(text.modes[M][2]) needResetGameData=true @@ -451,19 +460,18 @@ function resetGameData() GAME.seed=rnd(261046101471026) destroyPlayers() - MODEENV=GAME.curMode.env restoreVirtualKey() GAME.curMode.load() - if MODEENV.task then + if GAME.modeEnv.task then for i=1,#PLAYERS do - PLAYERS[i]:newTask(MODEENV.task) + PLAYERS[i]:newTask(GAME.modeEnv.task) end end - BG.set(MODEENV.bg) - BGM.play(MODEENV.bgm) + BG.set(GAME.modeEnv.bg) + BGM.play(GAME.modeEnv.bgm) TEXT.clear() - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then for i=1,#PLAYERS do PLAYERS[i]:changeAtk(randomTarget(PLAYERS[i])) end @@ -508,19 +516,18 @@ function resetPartGameData(replaying) end destroyPlayers() - MODEENV=GAME.curMode.env restoreVirtualKey() GAME.curMode.load() - if MODEENV.task then + if GAME.modeEnv.task then for i=1,#PLAYERS do - PLAYERS[i]:newTask(MODEENV.task) + PLAYERS[i]:newTask(GAME.modeEnv.task) end end - BG.set(MODEENV.bg) - BGM.play(MODEENV.bgm) + BG.set(GAME.modeEnv.bg) + BGM.play(GAME.modeEnv.bgm) TEXT.clear() - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then for i=1,#PLAYERS do PLAYERS[i]:changeAtk(randomTarget(PLAYERS[i])) end diff --git a/parts/modes/custom_clear.lua b/parts/modes/custom_clear.lua index 5f87cec6..3a7723f3 100644 --- a/parts/modes/custom_clear.lua +++ b/parts/modes/custom_clear.lua @@ -50,30 +50,30 @@ return{ env={}, load=function() for k,v in next,CUSTOMENV do - MODEENV[k]=v + GAME.modeEnv[k]=v end if BAG[1]then - MODEENV.bag=BAG + GAME.modeEnv.bag=BAG else - MODEENV.bag=nil + GAME.modeEnv.bag=nil end if MISSION[1]then - MODEENV.mission=MISSION + GAME.modeEnv.mission=MISSION else - MODEENV.mission=nil + GAME.modeEnv.mission=nil end - MODEENV.dropPiece=PLY.check_lineReach + GAME.modeEnv.dropPiece=PLY.check_lineReach for y=1,20 do if notAir(FIELD[1][y])then --Switch clear mode on - MODEENV.dropPiece=checkClear + GAME.modeEnv.dropPiece=checkClear break end end PLY.newPlayer(1,340,15) - local L=MODEENV.opponent + local L=GAME.modeEnv.opponent if L~=0 then - MODEENV.target=nil + GAME.modeEnv.target=nil if L<6 then PLY.newAIPlayer(2,965,360,.5,AIBUILDER("9S",2*L)) else @@ -83,8 +83,8 @@ return{ for _,P in next,PLAYERS.alive do setField(P,1) end - MODEENV.bg=CUSTOMENV.bg - MODEENV.bgm=CUSTOMENV.bgm + GAME.modeEnv.bg=CUSTOMENV.bg + GAME.modeEnv.bgm=CUSTOMENV.bgm end, mesDisp=function(P) setFont(55) diff --git a/parts/modes/custom_puzzle.lua b/parts/modes/custom_puzzle.lua index fac2e5d6..e164b552 100644 --- a/parts/modes/custom_puzzle.lua +++ b/parts/modes/custom_puzzle.lua @@ -39,30 +39,30 @@ return{ }, load=function() for k,v in next,CUSTOMENV do - MODEENV[k]=v + GAME.modeEnv[k]=v end if BAG[1]then - MODEENV.bag=BAG + GAME.modeEnv.bag=BAG else - MODEENV.bag=nil + GAME.modeEnv.bag=nil end if MISSION[1]then - MODEENV.mission=MISSION + GAME.modeEnv.mission=MISSION else - MODEENV.mission=nil + GAME.modeEnv.mission=nil end PLY.newPlayer(1,340,15) - local L=MODEENV.opponent + local L=GAME.modeEnv.opponent if L~=0 then - MODEENV.target=nil + GAME.modeEnv.target=nil if L<6 then PLY.newAIPlayer(2,965,360,.5,AIBUILDER("9S",2*L)) else PLY.newAIPlayer(2,965,360,.5,AIBUILDER("CC",2*L-11,int(L*.5-1.5),true,4000*L)) end end - MODEENV.bg=CUSTOMENV.bg - MODEENV.bgm=CUSTOMENV.bgm + GAME.modeEnv.bg=CUSTOMENV.bg + GAME.modeEnv.bgm=CUSTOMENV.bgm end, mesDisp=function(P) local dx,dy=P.fieldOff.x,P.fieldOff.y diff --git a/parts/player/draw.lua b/parts/player/draw.lua index 4859c5d5..5e634e17 100644 --- a/parts/player/draw.lua +++ b/parts/player/draw.lua @@ -455,7 +455,7 @@ function draw.norm(P) P:drawNext() --Draw target selecting pad - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then if P.atkMode then gc.setColor(1,.8,0,P.swappingAtkMode*.02) gc.rectangle("fill",RCPB[2*P.atkMode-1],RCPB[2*P.atkMode],90,35,8,4) @@ -606,7 +606,7 @@ function draw.small(P) end --Draw badge - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then gc.setColor(1,1,1) for i=1,P.strength do gc.draw(IMG.badgeIcon,12*i-7,4,nil,.5) @@ -673,7 +673,7 @@ function draw.demo(P) _=P.color[id] gc.setColor(_[1],_[2],_[3],.3) _=blockImg[id] - gc.draw(_,15,40*N-10,nil,16,nil,_:getWidth(),_:getHeight()*.5) + gc.draw(_,15,40*N-10,nil,16,nil,0,_:getHeight()*.5) N=N+1 end diff --git a/parts/player/init.lua b/parts/player/init.lua index a5b83996..1c5671c1 100644 --- a/parts/player/init.lua +++ b/parts/player/init.lua @@ -196,8 +196,8 @@ local function loadGameEnv(P)--Load gameEnv local SETTING=SETTING --Load game settings for k,v in next,gameEnv0 do - if MODEENV[k]~=nil then - v=MODEENV[k] --Mode setting + if GAME.modeEnv[k]~=nil then + v=GAME.modeEnv[k] --Mode setting -- DBP("mode-"..k..":"..tostring(v)) elseif GAME.setting[k]~=nil then v=GAME.setting[k] --Game setting @@ -235,13 +235,11 @@ local function applyGameEnv(P)--Finish gameEnv processing for i=11,20 do if i~=14 then P.keyAvailable[i]=false - virtualkey[i].ava=false end end end for _,v in next,ENV.keyCancel do P.keyAvailable[v]=false - virtualkey[v].ava=false end P:setInvisible( ENV.visible=="show"and -1 or @@ -294,6 +292,13 @@ function PLY.check_attackReach(P) end end +local DemoEnv={ + das=10,arr=2,sddas=2,sdarr=2, + drop=1e99,lock=1e99, + wait=10,fall=20, + highCam=false, + life=1e99, +} function PLY.newDemoPlayer(id,x,y,size) local P=newEmptyPlayer(id,x,y,size) P.sound=true @@ -305,19 +310,14 @@ function PLY.newDemoPlayer(id,x,y,size) P.absFieldY=P.y+60*P.size P.draw=PLY.draw.demo P.control=true - P.gameEnv={ - das=10,arr=2,sddas=2,sdarr=2, - drop=1e99,lock=1e99, - wait=10,fall=20, - life=1e99, - } + GAME.modeEnv=DemoEnv loadGameEnv(P) applyGameEnv(P) prepareSequence(P) P:loadAI({ type="CC", nextCount=5, - hold=true, + holdCount=true, delay=30, delta=6, bag="bag", diff --git a/parts/player/player.lua b/parts/player/player.lua index f3e8377c..02abf95f 100644 --- a/parts/player/player.lua +++ b/parts/player/player.lua @@ -96,7 +96,7 @@ function Player.createBeam(P,R,send,color) local r,g,b=unpack(SKIN.libColor[color]) r,g,b=r*2,g*2,b*2 - local a=MODEENV.royaleMode and not(P.human or R.human)and .2 or 1 + local a=GAME.modeEnv.royaleMode and not(P.human or R.human)and .2 or 1 SYSFX.newAttack(1-SETTING.atkFX*.1,x1,y1,x2,y2,wid,r,g,b,a*(SETTING.atkFX+2)*.0626) end ---------------------------------------------------- @@ -117,7 +117,9 @@ end function Player.set20G(P,if20g,init)--Only set init=true when initialize CC, do not use it P._20G=if20g P.keyAvailable[7]=not if20g - virtualkey[7].ava=not if20g + if P.human then + virtualkey[7].ava=not if20g + end if init and if20g and P.AI_mode=="CC"then CC.switch20G(P)end end function Player.setHold(P,count)--Set hold count (false/true as 0/1) @@ -128,8 +130,9 @@ function Player.setHold(P,count)--Set hold count (false/true as 0/1) end P.gameEnv.holdCount=count P.holdTime=count - P.keyAvailable[8]=count>0 - virtualkey[8].ava=count>0 + if P.human then + virtualkey[8].ava=count>0 + end if count==0 then P.drawHold=NULL while P.holdQueue[1]do rem(P.holdQueue)end @@ -1107,7 +1110,7 @@ do--Player.drop(P)--Place piece if P.b2b>1200 then P.b2b=1200 end --Bonus atk/def when focused - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then local i=min(#P.atker,9) if i>1 then atk=atk+reAtk[i] @@ -1132,7 +1135,7 @@ do--Player.drop(P)--Place piece off=off+_ if send>0 then local T - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then if P.atkMode==4 then local M=#P.atker if M>0 then @@ -1399,7 +1402,7 @@ function Player.win(P,result) if P.result then return end P:die() P.result="WIN" - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then P.modeData.event=1 P:changeAtk() end @@ -1407,7 +1410,7 @@ function Player.win(P,result) GAME.result=result or"win" SFX.play("win") VOC.play("win") - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then BGM.play("8-bit happiness") end end @@ -1474,7 +1477,7 @@ function Player.lose(P,force) end end P.result="K.O." - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then P:changeAtk() P.modeData.event=#PLAYERS.alive+1 P.strength=0 @@ -1516,7 +1519,7 @@ function Player.lose(P,force) GAME.result="gameover" SFX.play("fail") VOC.play("lose") - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then if P.modeData.event==2 then BGM.play("hay what kind of feeling") else diff --git a/parts/player/update.lua b/parts/player/update.lua index 87b6a648..00c7cdf0 100644 --- a/parts/player/update.lua +++ b/parts/player/update.lua @@ -113,7 +113,7 @@ function update.alive(P,dt) for i=2,10 do v=v+i*(i-1)*7.2/(_-P.dropTime[i])end P.dropSpeed=P.dropSpeed*.99+v*.1 - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then if P.keyPressing[9]then P.swappingAtkMode=min(P.swappingAtkMode+2,30) else @@ -313,7 +313,7 @@ function update.dead(P,dt) P.keySpeed=P.keySpeed*.96+P.stat.key/P.stat.time*60*.04 P.dropSpeed=P.dropSpeed*.96+P.stat.piece/P.stat.time*60*.04 --Final average speeds - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then P.swappingAtkMode=min(P.swappingAtkMode+2,30) end end diff --git a/parts/scenes/main.lua b/parts/scenes/main.lua index 78fd6c6f..e88d3067 100644 --- a/parts/scenes/main.lua +++ b/parts/scenes/main.lua @@ -6,7 +6,7 @@ function sceneInit.main() } BG.set("space") - MODEENV=NONE + GAME.modeEnv=NONE --Create demo player destroyPlayers() GAME.frame=0 diff --git a/parts/scenes/play.lua b/parts/scenes/play.lua index 9503fb2e..80c3d725 100644 --- a/parts/scenes/play.lua +++ b/parts/scenes/play.lua @@ -216,7 +216,7 @@ function Tmr.play(dt) end --Fresh royale target - if MODEENV.royaleMode and GAME.frame%120==0 then + if GAME.modeEnv.royaleMode and GAME.frame%120==0 then freshMostDangerous() end @@ -308,7 +308,7 @@ function Pnt.play() gc.setColor(1,1,1) if SETTING.VKSwitch then drawVirtualkey()end - if MODEENV.royaleMode then + if GAME.modeEnv.royaleMode then local P=PLAYERS[1] gc.setLineWidth(5) gc.setColor(.8,1,0,.2) diff --git a/parts/tick.lua b/parts/tick.lua index 234d6cc1..d4c4a8da 100644 --- a/parts/tick.lua +++ b/parts/tick.lua @@ -34,7 +34,7 @@ function Tick.lose(P) return true end end - if not MODEENV.royaleMode and #PLAYERS>1 then + if not GAME.modeEnv.royaleMode and #PLAYERS>1 then P.y=P.y+P.endCounter*.26 P.absFieldY=P.absFieldY+P.endCounter*.26 end