Beispiel #1
0
        /// <summary>
        /// Wczytuje plik tiles.xml i na jego podstawie tworzy
        /// slownik z obiektami potrzebny przy wczytywaniu plikow level-x.xml.
        /// </summary>
        /// <param name="reader"></param>
        private void ReadTile(XmlReader reader, NumberFormatInfo format)
        {
            //jesli element ma atrybuty.
            TilesNode node = null;

            bool containsCollisionRects = !reader.IsEmptyElement;

            if (reader.HasAttributes)
            {
                node = new TilesNode();
                ReadAttributes(node, reader, format);
            }

            //collision rectangle
            if (node != null && !String.IsNullOrEmpty(node.ID) && containsCollisionRects)
            {
                while (reader.Read() && reader.NodeType != XmlNodeType.EndElement)
                {
                    string name = reader.Name;
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        if (reader.HasAttributes)
                        {
                            if (name == "collision-rect")
                            {
                                reader.MoveToAttribute(0);
                                node.CollisionRectangle.Add(StringToQuadrangle(reader.Value, format));
                            }
                            else
                            if (name == "hit-bound")
                            {
                                reader.MoveToAttribute(0);
                                node.HitRectangle = StringToQuadrangle(reader.Value, format);
                            }
                        }
                    }
                }
            }

            //Dodaje do slownika
            if (node != null && node.IsValidName)
            {
                if (!dictionary.ContainsKey(node.ID))
                {
                    dictionary.Add(node.ID, node);
                }
            }

            reader.MoveToElement();
        }
Beispiel #2
0
        /*
         * private bool IsVariantionTiles(String name, int variant)
         * {
         *  if (String.IsNullOrEmpty(name))
         *      return false;
         *
         *  //szczegol dla pliku 6.12.2007
         *  if (name.Contains(Nodes.Terrain) && variant == 0)
         *      return false;
         *
         *  if (name.Contains(Nodes.WoodenBunker))
         *      return true;
         *  else if (name.Contains(Nodes.ConcreteBunker))
         *      return true;
         *  else if (name.Contains(Nodes.Barrack))
         *      return true;
         *  else if (name.Contains(Nodes.Terrain))
         *      return true;
         *  else if (name.Contains(Nodes.Barrels))
         *      return true;
         *  else if (name.Contains(Nodes.Ship))
         *      return true;
         *  else if (name.Contains(Nodes.FortressBunker))
         *      return true;
         *  else if (name.Contains(Nodes.Ocean) && (variant == 1 || variant == 3))
         *      return true;
         *
         *  return false;
         * }*/

        private void ReadAttributes(TilesNode node, XmlReader reader, NumberFormatInfo format)
        {
            for (int i = 0; i < reader.AttributeCount; i++)
            {
                //przechodze do i-tego atrybutu
                reader.MoveToAttribute(i);
                if (reader.Name.Equals(Attributes.Name))
                {
                    node.BaseName = reader.Value;

                    if (reader.Value.Equals(Nodes.Terrain))
                    {
                        terrainCount++;
                    }
                    else if (reader.Value.Equals(Nodes.ShipDeck))
                    {
                        shipDeckCount++;
                    }
                    else if (reader.Value.Equals(Nodes.WoodenBunker))
                    {
                        woodenbunkerCount++;
                    }
                    else if (reader.Value.Equals(Nodes.ShipWoodenBunker))
                    {
                        shipwoodenbunkerCount++;
                    }
                    else if (reader.Value.Equals(Nodes.ConcreteBunker))
                    {
                        concretebunkerCount++;
                    }
                    else if (reader.Value.Equals(Nodes.ShipConcreteBunker))
                    {
                        shipconcretebunkerCount++;
                    }
                    else if (reader.Value.Equals(Nodes.Barrack))
                    {
                        barrackCount++;
                    }
                    else if (reader.Value.Equals(Nodes.Barrels))
                    {
                        barrelCount++;
                    }

                    /* else if (reader.Value.Equals(Nodes.Ocean))
                     * {
                     *   // wyj¹tek dla oceanu
                     *   node.ID = node.BaseName;
                     *
                     * }*/
                }
                else if (reader.Name.Equals(Attributes.YStart))
                {
                    node.YStart = float.Parse(reader.Value, format);
                }
                else if (reader.Name.Equals(Attributes.ViewXShift))
                {
                    node.ViewXShift = float.Parse(reader.Value, format);
                }
                else if (reader.Name.Equals(Attributes.YEnd))
                {
                    node.YEnd = float.Parse(reader.Value, format);
                }
                else if (reader.Name.Equals(Attributes.Variation))
                {
                    node.Variation = int.Parse(reader.Value);
                }
            }
            if (node.ID.Length == 0)
            {
                node.GenerateID();
            }
        }