Beispiel #1
0
        public string Serialize()
        {
            Serializing = true;
            _groupCount = TileGroups.Count();
            string nl = StaticHelpers.lineSeperator;
            string s  = "[View]" + nl;

            s += StaticHelpers.SerializeObject <OldCatanGame>(this, SerializedProperties, false);
            s += nl;
            for (int i = 0; i < GroupCount; i++)
            {
                s += String.Format($"[TileGroup {i}]{nl}");
                s += TileGroups[i].Serialize(i);
                s += nl;
            }
            Serializing = false;
            return(s);
        }
        private void ReadElement(XmlElement element)
        {
            switch (element.Name)
            {
            case LOAD_IMAGE_AS_TILE:
                LoadImageAsTileReader imageTileReader = new LoadImageAsTileReader(element);
                imageTileReader.read();

                addTile = new SpriteSheet.Tile(currentTileID, imageTileReader.Tile);

                if (!TileGroups.ContainsKey(imageTileReader.TileGroup))
                {
                    TileGroups.Add(imageTileReader.TileGroup, new Dictionary <string, SpriteSheet.Tile>());
                }

                if (!CurrentFrame.ContainsKey(imageTileReader.TileGroup))
                {
                    CurrentFrame.Add(imageTileReader.TileGroup, 0);
                }

                TileGroups[imageTileReader.TileGroup].Add(imageTileReader.TileGroup + CurrentFrame[imageTileReader.TileGroup], addTile);
                Textures.Add(imageTileReader.Texture);

                CurrentFrame[imageTileReader.TileGroup]++;
                currentTileID++;
                break;

            case LOAD_SHEET:
                LoadSheetReader sheetReader = new LoadSheetReader(element);
                sheetReader.read();

                foreach (KeyValuePair <string, List <Rectangle> > group in sheetReader.GroupTiles)
                {
                    if (!TileGroups.ContainsKey(group.Key))
                    {
                        TileGroups.Add(group.Key, new Dictionary <string, SpriteSheet.Tile>());
                        CurrentFrame.Add(group.Key, 0);
                    }
                    foreach (Rectangle tile in group.Value)
                    {
                        addTile = new SpriteSheet.Tile(currentTileID, tile);
                        TileGroups[group.Key].Add(group.Key + CurrentFrame[group.Key], addTile);
                        CurrentFrame[group.Key]++;
                    }
                }

                Textures.Add(sheetReader.Texture);
                currentTileID++;
                break;

            case LOAD_DIRECTORY:
                LoadDirectoryReader directoryReader = new LoadDirectoryReader(element);
                directoryReader.read();

                if (!TileGroups.ContainsKey(directoryReader.GroupName))
                {
                    TileGroups.Add(directoryReader.GroupName, new Dictionary <string, SpriteSheet.Tile>());
                    CurrentFrame.Add(directoryReader.GroupName, 0);
                }

                foreach (var key in directoryReader.Tiles.Keys)
                {
                    addTile = new SpriteSheet.Tile(currentTileID, directoryReader.Tiles[key]);

                    TileGroups[directoryReader.GroupName].Add(directoryReader.GroupName + CurrentFrame[directoryReader.GroupName], addTile);
                    Textures.Add(directoryReader.Textures[key]);

                    CurrentFrame[directoryReader.GroupName]++;
                    currentTileID++;
                }
                break;

            case LOAD_DIRECTORY_FULL:
                LoadDirectoryFullReader directoryFullReader = new LoadDirectoryFullReader(element);
                directoryFullReader.Read();

                if (!TileGroups.ContainsKey(directoryFullReader.GroupName))
                {
                    TileGroups.Add(directoryFullReader.GroupName, new Dictionary <string, SpriteSheet.Tile>());
                    CurrentFrame.Add(directoryFullReader.GroupName, 0);
                }

                foreach (var key in directoryFullReader.Tiles.Keys)
                {
                    addTile = new SpriteSheet.Tile(currentTileID, directoryFullReader.Tiles[key]);

                    TileGroups[directoryFullReader.GroupName].Add(directoryFullReader.GroupName + CurrentFrame[directoryFullReader.GroupName], addTile);
                    Textures.Add(directoryFullReader.Textures[key]);

                    CurrentFrame[directoryFullReader.GroupName]++;
                    currentTileID++;
                }
                break;

            default:
                break;
            }
        }