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
 
 |