public static void AcceptInviteToJoinTeam(Team team, Client.GameState client) { if (client.Team == null && !client.Entity.Dead) { Client.GameState Leader; if (ServerBase.Kernel.GamePool.TryGetValue(team.UID, out Leader)) { if (Leader.Team != null) { if (Leader.Team.Full || Leader.Team.ForbidJoin) return; client.Team = new PhoenixProject.Game.ConquerStructures.Team(); AddToTeam AddYou = new AddToTeam(); AddToTeam AddMe = new AddToTeam(); AddMe.Name = client.Entity.Name; AddMe.MaxHitpoints = (ushort)client.Entity.MaxHitpoints; AddMe.Hitpoints = (ushort)client.Entity.Hitpoints; AddMe.Mesh = client.Entity.Mesh; AddMe.UID = client.Entity.UID; foreach (Client.GameState Teammate in Leader.Team.Teammates) { if (Teammate != null) { Teammate.Send(AddMe); client.Team.Add(Teammate); AddYou.Name = Teammate.Entity.Name; AddYou.MaxHitpoints = (ushort)Teammate.Entity.MaxHitpoints; AddYou.Hitpoints = (ushort)Teammate.Entity.Hitpoints; AddYou.Mesh = Teammate.Entity.Mesh; AddYou.UID = Teammate.Entity.UID; client.Send(AddYou); if (Teammate.Entity.UID != Leader.Entity.UID) Teammate.Team.Add(client); } } Leader.Team.Add(client); client.Team.Add(client); client.Team.Active = true; client.Team.TeamLeader = false; client.Send(AddMe); } } } }
public static void AcceptRequestToJoinTeam(Team team, Client.GameState client) { if (client.Team != null && !client.Entity.Dead) { if (!client.Team.Full && client.Team.TeamLeader && !client.Team.ForbidJoin) { Client.GameState NewTeammate; if (ServerBase.Kernel.GamePool.TryGetValue(team.UID, out NewTeammate)) { if (NewTeammate.Team != null) return; NewTeammate.Team = new PhoenixProject.Game.ConquerStructures.Team(); AddToTeam AddMe = new AddToTeam(); AddToTeam AddYou = new AddToTeam(); AddYou.Name = NewTeammate.Entity.Name; AddYou.MaxHitpoints = (ushort)NewTeammate.Entity.MaxHitpoints; AddYou.Hitpoints = (ushort)NewTeammate.Entity.Hitpoints; AddYou.Mesh = NewTeammate.Entity.Mesh; AddYou.UID = NewTeammate.Entity.UID; //lock (client.Team.Teammates) { foreach (Client.GameState Teammate in client.Team.Teammates) { if (Teammate != null) { Teammate.Send(AddYou); NewTeammate.Team.Add(Teammate); AddMe.Name = Teammate.Entity.Name; AddMe.MaxHitpoints = (ushort)Teammate.Entity.MaxHitpoints; AddMe.Hitpoints = (ushort)Teammate.Entity.Hitpoints; AddMe.Mesh = Teammate.Entity.Mesh; AddMe.UID = Teammate.Entity.UID; NewTeammate.Send(AddMe); if (Teammate.Entity.UID != client.Entity.UID) Teammate.Team.Add(NewTeammate); } } client.Team.Add(NewTeammate); NewTeammate.Team.Add(NewTeammate); NewTeammate.Team.Active = true; NewTeammate.Team.TeamLeader = false; client.Send(AddYou); NewTeammate.Send(AddYou); } } } } }