From a734980c94eb05cdc42df1dc0b674c2bab44ae71 Mon Sep 17 00:00:00 2001 From: suhongyang <1609423485@qq.com> Date: Mon, 8 Jul 2019 21:35:56 +0800 Subject: [PATCH] 冒险战斗数据打完以前不存储 --- src/adv/Adv.lua | 8 ++++---- src/adv/AdvBattle.lua | 35 +++++++++++++++++------------------ src/adv/AdvPlayer.lua | 7 +++++++ 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index c933b48..1c75c9d 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -900,11 +900,11 @@ end --继续战斗 function Adv:nextBattleTurn() - local enemyId = self.battle.battleEnemyId - if not enemyId then - return + local enemy = self.battle.enemy + if not enemy then + return end - local roomId, blockId = self.battle:getRBByEnemyId(enemyId) + local roomId, blockId = self.battle:getRBByEnemyId(enemy.id) self.battle:doBattleTurn() if self.battle:isBattleEnd() then self:backBlockChange(roomId, blockId) diff --git a/src/adv/AdvBattle.lua b/src/adv/AdvBattle.lua index d07d69d..92614a4 100644 --- a/src/adv/AdvBattle.lua +++ b/src/adv/AdvBattle.lua @@ -6,7 +6,7 @@ function Battle:ctor(adv) self.adv = adv self.player = nil --玩家 self.isNewPlayer = false - self.battleEnemyId = nil + self.enemy = nil self.enemys = {} --怪 self:initPlayer() self:initEnemys() @@ -21,9 +21,9 @@ function Battle:initAfter() for _, enemy in pairs(self.enemys) do enemy:initAfter(self.adv.rooms[enemy.roomId].blocks[enemy.blockId].event.enemy) end - if self.adv.advTeam.enemy then - local enemy = self:getEnemy(self.adv.advTeam.enemy.roomId, self.adv.advTeam.enemy.blockId) - self.battleEnemyId = enemy.id + if self.adv.advTeam.enemyId then + local enemy = self:getEnemyById(self.adv.advTeam.enemyId) + self.enemy = enemy end end @@ -105,29 +105,28 @@ function Battle:getRBByEnemyId(enemyId) end function Battle:isBattleEnd() - if not self.battleEnemyId then + if not self.enemy then return true end end --战斗开始 function Battle:battleBegin(roomId, blockId) - if self.battleEnemyId then - self.battleEnemyId = nil - -- TODO 清理上次战斗遗留数据 + if self.enemy then + self.enemy:reset(self.adv.rooms[self.enemy.roomId].blocks[self.enemy.blockId].event.enemy) end local enemy = self:getEnemy(roomId, blockId) if enemy then - self.battleEnemyId = enemy.id + self.enemy = enemy self.player:battleBegin() - enemy:battleBegin() + self.enemy:battleBegin() self:doBattleTurn() end end -- 战斗内一回合 function Battle:doBattleTurn() - local enemy = self:getEnemyById(self.battleEnemyId) + local enemy = self.enemy if not enemy then return end -- 玩家先出手 self.adv:backAtk(nil, enemy.id) @@ -141,7 +140,7 @@ function Battle:doBattleTurn() if enemy.isDead or self.player.isDead then local deadPlayer = enemy.isDead and enemy or self.player deadPlayer:battleEnd() - self.battleEnemyId = nil + self.enemy = nil else self.adv:backTurnEnd() end @@ -198,17 +197,17 @@ end --写入数据 function Battle:getDB() + if not self.enemy then + self.adv.advTeam.enemyId = nil + else + self.adv.advTeam.enemyId = self.enemy.id + return + end self.adv.advTeam.player = self.player:getDB() for _, enemy in ipairs(self.enemys) do local block = self.adv.rooms[enemy.roomId].blocks[enemy.blockId] block.event.enemy = enemy:getDB() end - if self.battleEnemyId then - local enemy = self:getEnemyById(self.battleEnemyId) - self.adv.advTeam.enemy = {roomId = enemy.roomId, blockId = enemy.blockId} - else - self.adv.advTeam.enemy = nil - end end return Battle \ No newline at end of file diff --git a/src/adv/AdvPlayer.lua b/src/adv/AdvPlayer.lua index 0ad286f..0cc5afa 100644 --- a/src/adv/AdvPlayer.lua +++ b/src/adv/AdvPlayer.lua @@ -45,6 +45,13 @@ function BaseObject:initAfter(data) end end +function BaseObject:reset(data) + self.passives = {} + self.buffs = {} + self:initData(data) + self:initAfter(data) +end + function BaseObject:beforeTurn() for _, buff in ipairs(self.buffs) do buff:beforeTurn() -- libgit2 0.21.2