139 lines
3.9 KiB
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 |