Exemplo n.º 1
0
        public void BuildFromFile(string filename)
        {
            string file = "Content/Levels/" + filename + ".txt";

            string[] lines;
            try
            {
                lines = System.IO.File.ReadAllLines(file);
            }
            catch
            {
                return;
            }
            List <TotemSection> sectionsToAdd = new List <TotemSection>();

            for (int i = lines.Length - 1; i > -1; --i)
            {
                if (lines[i].StartsWith("| |"))
                {
                    sectionsToAdd.Add(new NormalSection(SectionType.Bilateral));
                }
                if (lines[i].StartsWith("[ |"))
                {
                    sectionsToAdd.Add(new MetalSection(SectionType.Left));
                }
                if (lines[i].StartsWith("| ]"))
                {
                    sectionsToAdd.Add(new MetalSection(SectionType.Right));
                }
                if (lines[i].StartsWith("[ ]"))
                {
                    sectionsToAdd.Add(new MetalSection(SectionType.Bilateral));
                }
                if (lines[i].StartsWith("{ |"))
                {
                    sectionsToAdd.Add(new SpikeSection(SectionType.Left));
                }
                if (lines[i].StartsWith("| }"))
                {
                    sectionsToAdd.Add(new SpikeSection(SectionType.Right));
                }
                if (lines[i].StartsWith("{ }"))
                {
                    sectionsToAdd.Add(new SpikeSection(SectionType.Bilateral));
                }

                if (lines[i].Contains("pD"))
                {
                    m_powerUpList.Add(new PowerUp(sectionsToAdd.Count, true));
                }

                if (lines[i].Contains("pG"))
                {
                    m_powerUpList.Add(new PowerUp(sectionsToAdd.Count, false));
                }
            }


            Console.WriteLine(m_powerUpList.Count);

            TotemBase totemBase = new TotemBase();

            m_allSections.Add(totemBase);
            m_attachedSections.Add(totemBase);
            m_allSections.AddRange(sectionsToAdd);
            m_attachedSections.AddRange(sectionsToAdd);
            TotemTop totemTop = new TotemTop();

            m_allSections.Add(totemTop);
            m_attachedSections.Add(totemTop);


            //Place the totem sections in the world
            TotemSection above = null, below = null;

            for (int i = 0; i < m_allSections.Count; ++i)
            {
                if (i == 0)
                {
                    below = null;
                    m_allSections[i].Transform.PosY = 0;
                }
                else
                {
                    below = m_allSections[i - 1];
                    m_allSections[i].Transform.PosY = below.Top;
                }

                if (i == m_allSections.Count - 1)
                {
                    above = null;
                }
                else
                {
                    above = m_allSections[i + 1];
                }

                m_allSections[i].Transform.ParentTransform = m_transform;
                m_allSections[i].PlaceOnTotem(this, above, below);
            }

            // Place powers up in the world
            //
            for (int i = 0; i < m_powerUpList.Count; i++)
            {
                // Place power up at posY of totem section
                //
                int index = m_powerUpList[i].IndexTotemToPlacePowerUp;
                m_powerUpList[i].Transform.ParentTransform = m_transform;
                m_powerUpList[i].Transform.PosY            = m_allSections[index].Transform.PosY - deltaPosYCorrection;

                // Place power up at left or right
                //
                if (m_powerUpList[i].IsToLeft)
                {
                    m_powerUpList[i].Transform.PosX = -distanceFromTotemCenter;
                }
                else
                {
                    m_powerUpList[i].Transform.PosX = distanceFromTotemCenter;
                }
            }
        }
Exemplo n.º 2
0
        public void BuildFromFile(string filename)
        {
            string file = "Content/Levels/" + filename + ".txt";
            string[] lines;
            try
            {
                lines = System.IO.File.ReadAllLines(file);
            }
            catch
            {
                return;
            }
            List<TotemSection> sectionsToAdd = new List<TotemSection>();
            for(int i = lines.Length - 1; i > -1; --i)
            {

                if (lines[i].StartsWith("| |"))
                    sectionsToAdd.Add(new NormalSection(SectionType.Bilateral));
                if (lines[i].StartsWith("[ |"))
                    sectionsToAdd.Add(new MetalSection(SectionType.Left));
                if (lines[i].StartsWith("| ]"))
                    sectionsToAdd.Add(new MetalSection(SectionType.Right));
                if (lines[i].StartsWith("[ ]"))
                    sectionsToAdd.Add(new MetalSection(SectionType.Bilateral));
                if (lines[i].StartsWith("{ |"))
                    sectionsToAdd.Add(new SpikeSection(SectionType.Left));
                if (lines[i].StartsWith("| }"))
                    sectionsToAdd.Add(new SpikeSection(SectionType.Right));
                if (lines[i].StartsWith("{ }"))
                    sectionsToAdd.Add(new SpikeSection(SectionType.Bilateral));

                if (lines[i].Contains("pD"))
                {
                    m_powerUpList.Add(new PowerUp(sectionsToAdd.Count, true));
                }

                if (lines[i].Contains("pG"))
                {
                    m_powerUpList.Add(new PowerUp(sectionsToAdd.Count, false));
                }
            }

            Console.WriteLine(m_powerUpList.Count);

            TotemBase totemBase  = new TotemBase();
            m_allSections.Add(totemBase);
            m_attachedSections.Add(totemBase);
            m_allSections.AddRange(sectionsToAdd);
            m_attachedSections.AddRange(sectionsToAdd);
            TotemTop totemTop = new TotemTop();
            m_allSections.Add(totemTop);
            m_attachedSections.Add(totemTop);

            //Place the totem sections in the world
            TotemSection above = null, below = null;
            for (int i = 0; i < m_allSections.Count; ++i)
            {

                if (i == 0)
                {
                    below = null;
                    m_allSections[i].Transform.PosY = 0;
                }
                else
                {
                    below = m_allSections[i - 1];
                    m_allSections[i].Transform.PosY = below.Top;
                }

                if (i == m_allSections.Count - 1)
                {
                    above = null;
                }
                else
                {
                    above = m_allSections[i + 1];
                }

                m_allSections[i].Transform.ParentTransform = m_transform;
                m_allSections[i].PlaceOnTotem(this, above, below);
            }

            // Place powers up in the world
            //
            for (int i = 0; i < m_powerUpList.Count; i++)
            {
                // Place power up at posY of totem section
                //
                int index = m_powerUpList[i].IndexTotemToPlacePowerUp;
                m_powerUpList[i].Transform.ParentTransform = m_transform;
                m_powerUpList[i].Transform.PosY = m_allSections[index].Transform.PosY - deltaPosYCorrection;

                // Place power up at left or right
                //
                if (m_powerUpList[i].IsToLeft)
                {
                    m_powerUpList[i].Transform.PosX = -distanceFromTotemCenter;
                }
                else
                {
                    m_powerUpList[i].Transform.PosX = distanceFromTotemCenter;
                }
            }
        }