public void LoadSceneData(byte[] sceneData)
        {
            SceneData = sceneData;

            if (sceneData != null)
            {
                CardInfos = CardExtractor.GetCardInfos(SceneData);

                UpdateCardView(SceneData, CardInfos);
            }
        }
        public void AppendCard(byte[] cardData)
        {
            var newSceneData = new byte[SceneData.Length + cardData.Length];

            var lastCard         = CardInfos[CardInfos.Count - 1];
            var lastCardEndIndex = lastCard.PngStartIndex + lastCard.FileLength;

            Array.Copy(SceneData, newSceneData, lastCardEndIndex);
            var newCardInfo = CardExtractor.ReadCard(cardData, 0).OffsetStart(lastCardEndIndex);

            Array.Copy(cardData, 0, newSceneData, newCardInfo.PngStartIndex, newCardInfo.FileLength);

            Array.Copy(SceneData, lastCardEndIndex, newSceneData, newCardInfo.PngStartIndex + newCardInfo.FileLength, SceneData.Length - lastCardEndIndex);

            CardInfos.Add(newCardInfo);
            var characterCardCountLocation = CardExtractor.FindCharacterCardCount(SceneData);

            Array.Copy(BitConverter.GetBytes(CardInfos.Count), 0, newSceneData, characterCardCountLocation, 4);

            SceneData = newSceneData;
            UpdateCardView(SceneData, CardInfos);
        }