miduo_client/Assets/ManagedResources/~Lua/Modules/YuJianXing/RiceCtrlView.lua

139 lines
3.9 KiB
Lua

require("Base/Stack")
local RiceCtrlView = {}
local riceCtrl = "RiceCtrl"
local bgNameList = {}
local playerDataList = {}
--此处也是用new的方式创建
function RiceCtrlView:New()
local b = {}
b.Ctrl = poolManager:LoadAsset(riceCtrl, PoolManager.AssetType.GameObject)
b.Ctrl.name = "riceCtrl"
b.Ctrl.transform:SetParent(UIManager.uiRoot.transform.parent)
b.Ctrl.transform.position = Vector3(-100, -100, -100)
b.gameObject = b.Ctrl
b.transform = b.Ctrl.transform
setmetatable(b, { __index = RiceCtrlView })
return b
end
--设置数据
function RiceCtrlView:Awake(_bgList,_playerList)
if _bgList then
bgNameList = _bgList
end
if _playerList then
playerDataList = _playerList
end
self.speed = 0
self.bgItemList = {}
self.playerRoadList = {}
self.spLoader = SpriteLoader.New()
UIManager.camera.clearFlags = CameraClearFlags.Depth
self.bgList = Util.GetGameObject(self.Ctrl.gameObject,"Canvas/BgList")
self.imgPre = Util.GetGameObject(self.bgList,"imgPre")
self.camara = Util.GetGameObject(self.Ctrl.gameObject,"Camera")
self.roadList = Util.GetGameObject(self.Ctrl.gameObject,"Canvas/RoadList")
FixedUpdateBeat:Add(self.OnUpdate, self)--长按方法注册
--加载背景--并不滚动,有几个加载几个
self:SetBg()
self:SetPlayer()
Util.SetLocalPosition(self.camara.transform, 0, 0, -10)
end
--设置背景图
function RiceCtrlView:SetBg()
for i = 1, #bgNameList do
local go = {}
go = newObjToParent(self.imgPre,Util.GetTransform(self.Ctrl, "Canvas/BgList"))
go.name = "bg"..i
go:GetComponent("Image").sprite = self.spLoader:LoadSprite(bgNameList[i])
go:GetComponent("Image"):SetNativeSize()
go.gameObject:SetActive(true)
self.bgItemList[i] = go
end
end
--加载玩家
function RiceCtrlView:SetPlayer()
for i = 1, 4 do
self.playerRoadList[i] = {}
self.playerRoadList[i] = SubUIManager.Open(SubUIConfig.PlayerRiceView,self.roadList.transform,i,playerDataList.Result[i])
end
end
--设置玩家竖直飘动
function RiceCtrlView:ResetPlayerPosVertical()
for i,v in ipairs(self.playerRoadList) do
v:ResetSinglePlayerPosVertical()
end
end
--设置玩家本场比赛事件数据
function RiceCtrlView:ReloadPlayersData(_datas)
for i,v in ipairs(self.playerRoadList) do
v:ReloadData(_datas.Result[i])
end
end
--设置玩家显示或者隐藏数据
function RiceCtrlView:HideAllPlayers(_state)
for i,v in ipairs(self.playerRoadList) do
v:HidePlayer(_state)
end
end
--设置游戏状态
function RiceCtrlView:SetGameState(_state)
self.isRunning = _state
for i,v in ipairs(self.playerRoadList) do
v:SetSinglePlayerState(_state)
end
end
--重置游戏
function RiceCtrlView:ResetGame()
self.isRunning = false
for i,v in ipairs(self.playerRoadList) do
v:ResetSinglePlayer()
end
Util.SetLocalPosition(self.camara.transform, 0, 0, -10)
end
--upDate
function RiceCtrlView:OnUpdate()
if self.isRunning then
local x = 0
for i,v in ipairs(self.playerRoadList) do
if x < v:GetCurPosX() then
x = v:GetCurPosX()
end
end
Util.SetLocalPosition(self.camara.transform, x/276, 0, -10)
end
end
--卸载地图
function RiceCtrlView:Dispose()
FixedUpdateBeat:Remove(self.OnUpdate, self)
self.speed = 0
for i,v in ipairs(self.bgItemList) do
destroy(v.gameObject)
end
for i,v in ipairs(self.playerRoadList) do
SubUIManager.Close(v)
end
--卸载地图
if self.Ctrl then
poolManager:UnLoadAsset(riceCtrl, self.Ctrl, PoolManager.AssetType.GameObject)
self.Ctrl = nil
end
UIManager.camera.clearFlags = CameraClearFlags.Skybox
if self.spLoader then
self.spLoader:Destroy()
self.spLoader = nil
end
end
return RiceCtrlView