客户端点击创建队伍:
服务器部分:
创建一个队伍
public const int CREATE_SRES = 1; 返回新创建的队伍信息
private void CreateTeam(UserToken userToken,int[] levelLimit)
{
int playerId = _userBiz.GetPlayerId(userToken);
if(playerId<1000)return;
if(IsLeader(playerId))return;
PlayerModel playerModel = _userBiz.GetPlayerModel(playerId);
List<UserDTO> userDtos = new List<UserDTO>();
userDtos.Add(ConvertDTO(playerModel));
TeamDTO teamDto;
if (_oldTeamList.Count > 0)
{
int teamId = _oldTeamList[0];
teamDto = _idToTeamModel[teamId];
_oldTeamList.RemoveAt(0);
teamDto.LeaderId = playerId;
teamDto.TeamMembers = userDtos;
teamDto.TeamLevelDown = levelLimit[1];
teamDto.TeamLevelUp = levelLimit[0];
teamDto.ApplyMebers=new List<int>();
_idToTeamModel[teamDto.TeamId]=teamDto;
_playerIdToTeamId.Add(playerId, teamDto.TeamId);
}
else
{
teamDto =new TeamDTO();
teamDto.TeamId = _index.GetAndAdd();
teamDto.LeaderId = playerId;
teamDto.TeamMembers = userDtos;
teamDto.TeamLevelDown = levelLimit[1];
teamDto.TeamLevelUp = levelLimit[0];
teamDto.ApplyMebers = new List<int>();
_idToTeamModel.Add(teamDto.TeamId, teamDto);
_playerIdToTeamId.Add(playerId, teamDto.TeamId);
}
this.Write(userToken, Protocol.TYPE_USER, UserProtocol.AREA_TEAM, TeamProtocol.CREATE_SRES, teamDto);
GetTeamList(userToken);
}
返回所有的队伍信息
public const int GET_TEMAINFO_SRES = 3;
private void GetTeamList(UserToken userToken)
{
List<TeamDTO> teamDtos=new List<TeamDTO>();
foreach (int id in _idToTeamModel.Keys)
{
if(_idToTeamModel[id].LeaderId<0)continue;
teamDtos.Add(_idToTeamModel[id]);
}
this.Write(userToken, Protocol.TYPE_USER,UserProtocol.AREA_TEAM,TeamProtocol.GET_TEMAINFO_SRES, teamDtos);
}
/// <summary>
/// 队伍ID和队伍信息模型映射
/// </summary>
private Dictionary<int,TeamDTO> _idToTeamModel =new Dictionary<int, TeamDTO>();
/// <summary>
/// 玩家ID和队伍ID之间的映射
/// </summary>
private Dictionary<int,int> _playerIdToTeamId=new Dictionary<int, int>();
备注说明:
创建队伍,服务器这边缓存两个字典,如下:
FR:徐海涛(Hunk Xu)
QQ技术交流群:386476712
FR:海涛高软(hunk Xu)
QQ技术交流群:386476712