public void Clear()
 {
     GameCenter.ClearAll();
     UserManager.Clear();
     Leagues.Clear();
     Players.Clear();
     Rooms.Clear();
     Users.Clear();
     PlayerToRoom.Clear();
     RoomToLeague.Clear();
 }
        public bool Refresh()
        {
            /**
             * Note: checking if cache has changed after refresh
             *
             *  Algorithm:
             *      checking if the sequence had changed (by sequenceEqual).
             *      if it had changed - an update occur. and isChanged = true;
             *
             *  Author:
             *      Idan Izicovich.
             * */

            /* ---------- Cache Dictionaries ---------- */

            // Users
            bool isUserChanged = false;

            if (!UserManager.Users.SequenceEqual(Users))
            {
                Users.Clear();
                UserManager.Users.ToList().ForEach(userPair => Users.Add(userPair.Key, userPair.Value));
                isUserChanged = true;
            }

            // Players
            bool isPlayersChanged = false;

            if (!GameCenter.Players.SequenceEqual(Players.Values, new AddressComparer <Player>()))
            {
                Players.Clear();
                GameCenter.Players.ToList().ForEach(player => Players.Add(player.GetHashCode(), player));
                isPlayersChanged = true;
            }

            // Rooms
            bool isRoomChanged = false;

            if (!GameCenter.Rooms.SequenceEqual(Rooms.Values))
            {
                Rooms.Clear();
                GameCenter.Rooms.ToList().ForEach(room => Rooms.Add(room.GetHashCode(), room));
                isRoomChanged = true;
            }

            // Leagues
            //Undone: idan - make sure this is the right dictionary key needed for mapping the leagues at the cache
            bool isLeagueChange = false;

            if (!GameCenter.Leagues.SequenceEqual(Leagues.Values))
            {
                Leagues.Clear();
                GameCenter.Leagues.ToList().ForEach(league => Leagues.Add(league.GetHashCode(), league));
                isLeagueChange = true;
            }


            /* ------- link-cache dictionaries ---------- */

            // PlayerToRoom
            if (isPlayersChanged | isRoomChanged)
            {
                PlayerToRoom.Clear();
                GameCenter.PlayerToRoom.ToList().ForEach(pair => PlayerToRoom.Add(pair.Key, pair.Value));
            }

            // RoomToLeague
            if (isRoomChanged | isLeagueChange)
            {
                RoomToLeague.Clear();
                GameCenter.RoomToLeague.ToList().ForEach(pair => RoomToLeague.Add(pair.Key, pair.Value));
            }

            return(isLeagueChange | isPlayersChanged | isRoomChanged | isUserChanged);
        }