| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- local playerManager = class("playerManager")
- function playerManager:ctor()
- self.mPlayersInCurrViewFieldMap = {}
- self.mPlayersInCurrViewField = {}
- self.mPlayersIndexMap = {}
- self.mMainPlayerID = -1
- self.mPlayerCount = 0
- end
- function playerManager:destory()
- if playerManager.instance then
- playerManager.instance = nil
- end
- end
- function playerManager:Inst()
- if not playerManager.instance then
- playerManager.instance = playerManager.new()
- end
- return playerManager.instance
- end
- function playerManager:AddPlayer(player)
- if not player then
- return false
- end
- local playerID = player:GetID()
- if self.mPlayersInCurrViewFieldMap[playerID] then
- return false
- end
- self.mPlayerCount = self.mPlayerCount + 1
- local n = self.mPlayerCount
- self.mPlayersIndexMap[playerID] = n
- self.mPlayersInCurrViewField[n] = player
- self.mPlayersInCurrViewFieldMap[playerID] = player
- end
- function playerManager:RmvPlayer(playerID)
- local player = self.mPlayersInCurrViewFieldMap[playerID]
- if not player then
- return false
- end
- self.mPlayersInCurrViewFieldMap[playerID] = nil
- local index = self.mPlayersIndexMap[playerID]
- if index == self.mPlayerCount then
- self.mPlayersInCurrViewField[index] = nil
- else
- -- last index --> index
- local lastActor = self.mPlayersInCurrViewField[self.mPlayerCount]
- self.mPlayersInCurrViewField[index] = lastActor
- self.mPlayersIndexMap[lastActor:GetID()] = index
- -- reset last value
- self.mPlayersInCurrViewField[self.mPlayerCount] = nil
- end
- self.mPlayersIndexMap[playerID] = nil
- self.mPlayerCount = self.mPlayerCount - 1
- end
- function playerManager:FindPlayerIDInCurrViewField(noMainPlayer)
- if noMainPlayer == nil then
- noMainPlayer = true
- end
- local recvVec = {}
- local num = 0
- for i = 1, self.mPlayerCount do
- local m = self.mPlayersInCurrViewField[i]
- if m then
- if noMainPlayer and m:GetID() == self.mMainPlayerID then
- else
- num = num + 1
- recvVec[num] = m:GetID()
- end
- end
- end
- return recvVec, num
- end
- function playerManager:FindPlayerInCurrViewField(noMainPlayer)
- if noMainPlayer == nil then
- noMainPlayer = true
- end
- local recvVec = {}
- local num = 0
- for i = 1, self.mPlayerCount do
- local m = self.mPlayersInCurrViewField[i]
- if m then
- if noMainPlayer and m:GetID() == self.mMainPlayerID then
- else
- num = num + 1
- recvVec[num] = m
- end
- end
- end
- return recvVec, num
- end
- function playerManager:FindHeroInCurrViewField()
- local recvVec = {}
- local num = 0
- for i = 1, self.mPlayerCount do
- local m = self.mPlayersInCurrViewField[i]
- if m and m:IsHero() then
- num = num + 1
- recvVec[num] = m
- end
- end
- return recvVec, num
- end
- function playerManager:FindOnePlayerInCurrViewFieldById(playerID)
- return self.mPlayersInCurrViewFieldMap[playerID]
- end
- function playerManager:PlayerCountInView()
- return self.mPlayerCount
- end
- function playerManager:Cleanup()
- self.mPlayersInCurrViewFieldMap = {}
- self.mPlayersInCurrViewField = {}
- self.mPlayersIndexMap = {}
- self.mMainPlayerID = -1
- self.mPlayerCount = 0
- end
- function playerManager:CleanupMainPlayer()
- self.mMainPlayerID = -1
- end
- function playerManager:GetPlayersInCurrViewField()
- return self.mPlayersInCurrViewField, self.mPlayerCount
- end
- function playerManager:SetMainPlayerID(id)
- self.mMainPlayerID = id
- end
- function playerManager:GetMainPlayerID()
- return self.mMainPlayerID
- end
- return playerManager
|