local Array_Controller = {} local private = {} local EventSystem = require('Event/EventSystem') local line_up_pb = require 'Proto/line_up_pb' function Array_Controller.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageSetHeroLineUp, private.LineUpHeroIdsResp) private.requestLineUpHeroIds = LuaExt.CreateTable(6) private.changeHero = {} end function Array_Controller.OnShutdown() private.requestLineUpHeroIds = nil private.changeHero = nil end function Array_Controller.LineUpMultiHeroIdsRequest(ids) table.clearArray(private.requestLineUpHeroIds) local lineUpHeroIds = MDL.Player.GetHeroLinUpIds() for i=1,6 do local heroId = 0 if ids[i] then heroId = ids[i] elseif lineUpHeroIds[i] then heroId = lineUpHeroIds[i] end private.requestLineUpHeroIds[i] = heroId end private.requestLineUpHeroIds = MDL.Array.CheckArrayUpIdsLegal(private.requestLineUpHeroIds) local msg = line_up_pb.SetHeroLineUpReq() for _, v in ipairs (private.requestLineUpHeroIds) do table.insert(msg.LineUpHeroIds, v) end NetManager.SendMessage(MessageEnums.MessageSetHeroLineUp, msg) end function Array_Controller.LineUpHeroIdsRequest(index ,id) local lineUpHeroIds = MDL.Player.GetHeroLinUpIds() for i,v in ipairs(lineUpHeroIds) do if v == id then local oldId = lineUpHeroIds[index] Array_Controller.LineUpMultiHeroIdsRequest({[index] = id, [i] = oldId}) return end end Array_Controller.LineUpMultiHeroIdsRequest({[index] = id}) end function private.LineUpHeroIdsResp(msgResp) if msgResp.Resp.Code == 0 then EventSystem.Dispatch(EventID.UI_LineUp_OnLineUpHeroIdsResp) end end return Array_Controller