Commit a734980c94eb05cdc42df1dc0b674c2bab44ae71

Authored by suhongyang
1 parent d78bc768

冒险战斗数据打完以前不存储

src/adv/Adv.lua
... ... @@ -900,11 +900,11 @@ end
900 900  
901 901 --继续战斗
902 902 function Adv:nextBattleTurn()
903   - local enemyId = self.battle.battleEnemyId
904   - if not enemyId then
905   - return
  903 + local enemy = self.battle.enemy
  904 + if not enemy then
  905 + return
906 906 end
907   - local roomId, blockId = self.battle:getRBByEnemyId(enemyId)
  907 + local roomId, blockId = self.battle:getRBByEnemyId(enemy.id)
908 908 self.battle:doBattleTurn()
909 909 if self.battle:isBattleEnd() then
910 910 self:backBlockChange(roomId, blockId)
... ...
src/adv/AdvBattle.lua
... ... @@ -6,7 +6,7 @@ function Battle:ctor(adv)
6 6 self.adv = adv
7 7 self.player = nil --玩家
8 8 self.isNewPlayer = false
9   - self.battleEnemyId = nil
  9 + self.enemy = nil
10 10 self.enemys = {} --怪
11 11 self:initPlayer()
12 12 self:initEnemys()
... ... @@ -21,9 +21,9 @@ function Battle:initAfter()
21 21 for _, enemy in pairs(self.enemys) do
22 22 enemy:initAfter(self.adv.rooms[enemy.roomId].blocks[enemy.blockId].event.enemy)
23 23 end
24   - if self.adv.advTeam.enemy then
25   - local enemy = self:getEnemy(self.adv.advTeam.enemy.roomId, self.adv.advTeam.enemy.blockId)
26   - self.battleEnemyId = enemy.id
  24 + if self.adv.advTeam.enemyId then
  25 + local enemy = self:getEnemyById(self.adv.advTeam.enemyId)
  26 + self.enemy = enemy
27 27 end
28 28 end
29 29  
... ... @@ -105,29 +105,28 @@ function Battle:getRBByEnemyId(enemyId)
105 105 end
106 106  
107 107 function Battle:isBattleEnd()
108   - if not self.battleEnemyId then
  108 + if not self.enemy then
109 109 return true
110 110 end
111 111 end
112 112  
113 113 --战斗开始
114 114 function Battle:battleBegin(roomId, blockId)
115   - if self.battleEnemyId then
116   - self.battleEnemyId = nil
117   - -- TODO 清理上次战斗遗留数据
  115 + if self.enemy then
  116 + self.enemy:reset(self.adv.rooms[self.enemy.roomId].blocks[self.enemy.blockId].event.enemy)
118 117 end
119 118 local enemy = self:getEnemy(roomId, blockId)
120 119 if enemy then
121   - self.battleEnemyId = enemy.id
  120 + self.enemy = enemy
122 121 self.player:battleBegin()
123   - enemy:battleBegin()
  122 + self.enemy:battleBegin()
124 123 self:doBattleTurn()
125 124 end
126 125 end
127 126  
128 127 -- 战斗内一回合
129 128 function Battle:doBattleTurn()
130   - local enemy = self:getEnemyById(self.battleEnemyId)
  129 + local enemy = self.enemy
131 130 if not enemy then return end
132 131 -- 玩家先出手
133 132 self.adv:backAtk(nil, enemy.id)
... ... @@ -141,7 +140,7 @@ function Battle:doBattleTurn()
141 140 if enemy.isDead or self.player.isDead then
142 141 local deadPlayer = enemy.isDead and enemy or self.player
143 142 deadPlayer:battleEnd()
144   - self.battleEnemyId = nil
  143 + self.enemy = nil
145 144 else
146 145 self.adv:backTurnEnd()
147 146 end
... ... @@ -198,17 +197,17 @@ end
198 197  
199 198 --写入数据
200 199 function Battle:getDB()
  200 + if not self.enemy then
  201 + self.adv.advTeam.enemyId = nil
  202 + else
  203 + self.adv.advTeam.enemyId = self.enemy.id
  204 + return
  205 + end
201 206 self.adv.advTeam.player = self.player:getDB()
202 207 for _, enemy in ipairs(self.enemys) do
203 208 local block = self.adv.rooms[enemy.roomId].blocks[enemy.blockId]
204 209 block.event.enemy = enemy:getDB()
205 210 end
206   - if self.battleEnemyId then
207   - local enemy = self:getEnemyById(self.battleEnemyId)
208   - self.adv.advTeam.enemy = {roomId = enemy.roomId, blockId = enemy.blockId}
209   - else
210   - self.adv.advTeam.enemy = nil
211   - end
212 211 end
213 212  
214 213 return Battle
215 214 \ No newline at end of file
... ...
src/adv/AdvPlayer.lua
... ... @@ -45,6 +45,13 @@ function BaseObject:initAfter(data)
45 45 end
46 46 end
47 47  
  48 +function BaseObject:reset(data)
  49 + self.passives = {}
  50 + self.buffs = {}
  51 + self:initData(data)
  52 + self:initAfter(data)
  53 +end
  54 +
48 55 function BaseObject:beforeTurn()
49 56 for _, buff in ipairs(self.buffs) do
50 57 buff:beforeTurn()
... ...