public void ChangeRoleSlot(cmd_match_room_hero_pos_change _data, int _isSelf) { Value tmpFromTeamFrame = null; Value tmpFromtRoleSlot = null; Value tmpFromRoleSlotInfo = null; Value tmpToTeamFrame = null; //缓存原位置的信息 //拿到队伍 GetTeamFrame(_data.nCampFrom, out tmpFromTeamFrame); if (!Value.IsValueValid(tmpFromTeamFrame)) { return; } //拿到RoleSlot tmpFromtRoleSlot = tmpFromTeamFrame.Invoke("GetRoleSlot", _data.nPlayerSlotIDFrom); if (!Value.IsValueValid(tmpFromtRoleSlot)) { return; } //拿RoleSlot要显示的信息 tmpFromRoleSlotInfo = tmpFromtRoleSlot.Invoke("GetRoleSlotViewInfo"); if (!Value.IsValueValid(tmpFromRoleSlotInfo)) { return; } //原位置缓存的信息丢给新位置 GetTeamFrame(_data.nCampTo, out tmpToTeamFrame); if (!Value.IsValueValid(tmpToTeamFrame)) { return; } bool bIsMaster = (bool)tmpFromRoleSlotInfo.GetElement(0); int nHeroID = (int)tmpFromRoleSlotInfo.GetElement(1); string strPlayerName = (string)tmpFromRoleSlotInfo.GetElement(2); string strPlayerState = (string)tmpFromRoleSlotInfo.GetElement(3); //自己切换位置,那就是本地玩家了 //这里有bug,本地非本地都走这里改位置的 if (tmpToTeamFrame.Invoke("SetRoleSlotInfo", _isSelf, bIsMaster, _data.nPlayerSlotIDTo, nHeroID , strPlayerName, strPlayerState, false, bIsLocalMaster) == null) { Trace.LogError("call SetRoleSlotInfo faild"); return; } //并把原位置设空 if (tmpFromtRoleSlot.Invoke("ResetViewInfoEmpty") == null) { Trace.LogError("call ResetViewInfoEmpty Failed"); return; } }
//点击新位置,丢给逻辑层查看是否可以转到新位置 public void onRoleSlotMouseClick(int _slotCamp, int _slotID) { if (_eMatchRoomState >= EMatchRoomState.MatchRoomState_SelectHero) { return; } cmd_match_room_hero_pos_change data = new cmd_match_room_hero_pos_change(); data.nCampTo = _slotCamp; data.nPlayerSlotIDTo = _slotID; ViewEventHelper.Instance.SendCommand <cmd_match_room_hero_pos_change>(GameLogicDef.GVIEWCMD_MATCH_ROOM_HERO_POS_CHANGE, ref data); }