예제 #1
0
        internal virtual void Update(GameMember now)
        {
            Team = now.Team;

            if (now.IsPlayer && IsPlayer)
            {
                player = now.player;
            }
            else if (now.IsBot && IsBot)
            {
                bot = now.bot;
            }
            else
            {
                throw new Exception("Cant update");
            }

            OnChange();
        }
예제 #2
0
        protected virtual void GotGameData(GameDTO game)
        {
            Data = game;

            if (ChatLobby == null)
            {
                ChatLobby = new GroupChat(new agsXMPP.Jid(game.RoomName.ToLower() + ".pvp.net"), game.RoomPassword);
            }

            var participants = game.TeamOne.Concat(game.TeamTwo);

            foreach (var thing in participants)
            {
                var player = thing as PlayerParticipant;
                var bot    = thing as BotParticipant;
                int team;
                if (game.TeamOne.Contains(thing))
                {
                    team = 0;
                }
                else
                {
                    team = 1;
                }

                GameMember now;

                if (player != null)
                {
                    now = new GameMember(player, team, this);
                }
                else if (bot != null)
                {
                    now = new GameMember(bot, team, this);
                }
                else
                {
                    throw new Exception("Unknown participant " + thing);
                }

                GameMember old = AllMembers.SingleOrDefault(m => m.SummonerID == now.SummonerID);
                if (old != null)
                {
                    old.Update(now);
                }
                else
                {
                    if (team == 0)
                    {
                        TeamOne.Add(now);
                    }
                    else
                    {
                        TeamTwo.Add(now);
                    }
                    OnMemberJoined(now);
                }
            }

            if (game.GameState == "TEAM_SELECT")
            {
                Dispose();
                Session.Current.CurrentLobby = teamSelect;
                OnGameCancel(teamSelect);
            }

            OnUpdate(game);
            if (!loaded)
            {
                OnLoaded();
            }
        }
예제 #3
0
 protected virtual void OnMemberChangeTeam(GameMember member)
 {
     MemberChangedTeam?.Invoke(this, new MemberEventArgs(member));
 }
예제 #4
0
    protected virtual void GotGameData(GameDTO game) {
      Data = game;

      if (ChatLobby == null) {
        ChatLobby = new GroupChat(new agsXMPP.Jid(game.RoomName.ToLower() + ".pvp.net"), game.RoomPassword);
      }

      var participants = game.TeamOne.Concat(game.TeamTwo);

      foreach (var thing in participants) {
        var player = thing as PlayerParticipant;
        var bot = thing as BotParticipant;
        int team;
        if (game.TeamOne.Contains(thing)) team = 0;
        else team = 1;

        GameMember now;

        if (player != null) {
          now = new GameMember(player, team, this);
        } else if (bot != null) {
          now = new GameMember(bot, team, this);
        } else throw new Exception("Unknown participant " + thing);

        GameMember old = AllMembers.SingleOrDefault(m => m.SummonerID == now.SummonerID);
        if (old != null) {
          old.Update(now);
        } else {
          if (team == 0) TeamOne.Add(now);
          else TeamTwo.Add(now);
          OnMemberJoined(now);
        }
      }

      if (game.GameState == "TEAM_SELECT") {
        Dispose();
        Session.Current.CurrentLobby = teamSelect;
        OnGameCancel(teamSelect);
      }

      OnUpdate(game);
      if (!loaded) OnLoaded();
    }
예제 #5
0
    internal virtual void Update(GameMember now) {
      Team = now.Team;

      if (now.IsPlayer && IsPlayer) player = now.player;
      else if (now.IsBot && IsBot) bot = now.bot;
      else throw new Exception("Cant update");

      OnChange();
    }
예제 #6
0
 protected virtual void OnMemberChangeTeam(GameMember member) {
   MemberChangedTeam?.Invoke(this, new MemberEventArgs(member));
 }