43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
1
2
3
4
5
6
7
|
-- 房间
local AdvCommon = require "adv.AdvCommon"
local Block = require "adv.AdvBlock"
local Passive = require "adv.AdvPassive"
local Room = class("AdvRoom")
|
8c7272a5
zhouhaihai
冒险 地图刷新需求
|
8
|
function Room:ctor(map, roomId, csvData, info, isPath, isNewRelay, mapType)
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
9
10
11
12
13
14
|
self.map = map
self.roomId = roomId
self.col, self.row = AdvCommon.getCrById(self.roomId)
self.isPath = isPath
self.isBossRoom = false -- boss房间 --击败boss 以后重置为false
self.isShow = false
|
1313eac0
zhouhaihai
冒险的一些bug
|
15
|
self.battleAfterCall = {}
|
2d87caee
zhouhaihai
地块替换优化 新的效果类型
|
16
|
self.csvData = csvData
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
17
18
|
self.blocks = {}
|
2d87caee
zhouhaihai
地块替换优化 新的效果类型
|
19
|
self:loadBlocks(info, isNewRelay, mapType)
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
20
21
|
end
|
2d87caee
zhouhaihai
地块替换优化 新的效果类型
|
22
|
function Room:loadBlocks(info, isNewRelay, mapType)
|
c8210d56
zhouhaihai
boss 房有入口
|
23
|
local isFirstOpen = false
|
2d87caee
zhouhaihai
地块替换优化 新的效果类型
|
24
|
for blockId, _ in pairs(self.csvData["blocks"]) do
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
25
|
self.blocks[blockId] = Block.new(self, blockId, info.event[blockId], info.open == 1 or info.open[blockId], info.trap[blockId])
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
26
27
28
29
30
31
|
if not self.isPath and self.blocks[blockId]:isBoss() then
self.isBossRoom = true
end
if self.blocks[blockId].isOpen then
self.isShow = true
else
|
0e3ab88d
zhouhaihai
中继层
|
32
|
if self.blocks[blockId]:getEventType() == AdvEventType.In or self.blocks[blockId]:getEventType() == AdvEventType.InOut then -- 开放
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
33
34
|
self.isShow = true
self.blocks[blockId].isOpen = true
|
c8210d56
zhouhaihai
boss 房有入口
|
35
|
isFirstOpen = true
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
36
37
38
|
end
end
end
|
d677158e
zhouhaihai
调整打开地块位置
|
39
|
--中继层全部开放 boss 房间 开启所有的地块
|
23d9f086
zhouhaihai
展示房间
|
40
|
if (self.map.adv.isRelay and not isNewRelay) or (self.isBossRoom and self.isShow and isFirstOpen) or (isFirstOpen and mapType == 1) then
|
1313eac0
zhouhaihai
冒险的一些bug
|
41
42
43
44
45
46
|
table.insert(self.battleAfterCall, function()
for _, block in pairs(self.blocks) do
self:openBlock(block)
end
end)
end
|
819d7978
zhouhaihai
被动触发时机调整
|
47
48
49
50
51
52
|
if isFirstOpen then
table.insert(self.battleAfterCall, function()
--入口房间只会在这里首次展示开放 --触发固有技
self.map.adv:triggerPassive(Passive.ROOM_SHOW, {roomId = self.roomId})
end)
end
|
1313eac0
zhouhaihai
冒险的一些bug
|
53
54
|
end
|
2d87caee
zhouhaihai
地块替换优化 新的效果类型
|
55
56
57
58
59
60
|
function Room:getStageType(blockId)
if not self.blocks[blockId] then return end
if not self.csvData["blocks"][blockId] then return end
return self.csvData["blocks"][blockId]
end
|
1313eac0
zhouhaihai
冒险的一些bug
|
61
62
63
|
function Room:initBattleAfter()
for _, callback in ipairs(self.battleAfterCall) do
callback()
|
c8210d56
zhouhaihai
boss 房有入口
|
64
|
end
|
1313eac0
zhouhaihai
冒险的一些bug
|
65
|
self.battleAfterCall = {}
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
end
function Room:getDB()
local room = {event = {}, open = {}, trap = {}}
local allOpen = true
for blockId, block in pairs(self.blocks) do
room["event"][blockId] = block.event
room["open"][blockId] = block.isOpen and 1 or nil
if not block.isOpen then
allOpen = false
end
room["trap"][blockId] = block.trapId
end
if allOpen then
room["open"] = 1
end
return room
end
function Room:openBlock(block)
if self.blocks[block.blockId] ~= block then return end
if block.isOpen == true then return end
if self.isBossRoom then
for _, _block in pairs(self.blocks) do
_block:open()
end
else
block:open()
end
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
96
97
98
99
100
|
if not self.isShow then
self.isShow = true
--首次展示房间
self.map.adv:triggerPassive(Passive.ROOM_SHOW, {roomId = self.roomId})
end
|
c8210d56
zhouhaihai
boss 房有入口
|
101
|
return true
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
end
function Room:tranGToL(c, r)
return c - self.col, r - self.row
end
function Room:tranLtoG(c, r)
return c + self.col, r + self.row
end
function Room:getBByGPos(c, r)
local c, r = self:tranGToL(c, r)
return self.blocks[AdvCommon.getIdByCr(c, r)]
end
return Room
|