private void DispatchCardsData()
    {
        UpdatePlayerCards(network.numPlayers);

        Dictionary <string, List <string> > cardsData = new Dictionary <string, List <string> >();

        foreach (var playerId in network.PlayersIds)
        {
            Player player = GetPlayerById(playerId);
            cardsData[playerId] = player.GetCardsValueType;
        }

        InitCardsDataVO vo = new InitCardsDataVO();

        vo.api        = (int)NetworkConstants.API.CARDS_DATA;
        vo.api_id     = ++APIHandler.GetInstance().runningId;
        vo.sender     = Networking.localId;
        vo.cards_data = cardsData;
        string data = JsonConvert.SerializeObject(vo);

        API api = new API();

        api.api       = vo.api;
        api.id        = vo.api_id;
        api.data      = data;
        api.playerIds = Utility.DeepCloneList <string>(network.PlayersIdsExcludingThis);
        APIHandler.GetInstance().SendDataToAll(api);
    }
    private void InitCardsData(GameEvent evt)
    {
        InitCardsDataVO vo = JsonConvert.DeserializeObject <InitCardsDataVO>(evt.response.data);
        Dictionary <string, List <string> > cardsData = vo.cards_data;

        foreach (KeyValuePair <string, List <string> > iter in cardsData)
        {
            string        playerId       = iter.Key;
            List <string> cardsValueType = iter.Value;
            Player        player         = GetPlayerById(playerId);

            foreach (var valueType in cardsValueType)
            {
                player.AddCard(dealer.RemoveCardByValueType(valueType));
            }
        }
    }