Exemplo n.º 1
0
        private void ParseEntities(XmlNode entityXml)
        {
            foreach (XmlNode energyTankNode in entityXml.SelectNodes("EnergyTank"))
            {
                m_energyTanks.Add(new EnergyTankTemplate(energyTankNode));
            }

            foreach (XmlNode treasureNode in entityXml.SelectNodes("Treasure"))
            {
                m_treasures.Add(new TreasureTemplate(treasureNode));
            }

            foreach (XmlNode trapNode in entityXml.SelectNodes("Trap"))
            {
                m_traps.Add(new TrapTemplate(trapNode));
            }

            foreach (XmlNode mobSpawnerNode in entityXml.SelectNodes("MobSpawner"))
            {
                m_mobSpawners.Add(new MobSpawnerTemplate(mobSpawnerNode));
            }

            m_portalRoomSideBitmask.Clear();
            foreach (XmlNode portalNode in entityXml.SelectNodes("Portal"))
            {
                PortalTemplate portalTemplate = new PortalTemplate(portalNode);

                m_portals.Add(portalTemplate);
                if (portalTemplate.PortalRoomSide != MathConstants.eSignedDirection.none)
                {
                    m_portalRoomSideBitmask.Set(portalTemplate.PortalRoomSide, true);
                }
            }
        }
Exemplo n.º 2
0
        private Portal CreateTeleporterPortal(
            Random rng,
            RoomIndex roomIndex)
        {
            Portal                portal              = null;
            RoomLayout            room                = GetRoomByIndex(roomIndex);
            RoomTemplate          roomTemplate        = m_roomTemplateSet.GetTemplateByName(room.static_room_data.room_template_name);
            List <PortalTemplate> teleporterTemplates =
                roomTemplate.PortalTemplates.Where(t => t.PortalType == ePortalType.teleporter).ToList();

            if (teleporterTemplates.Count > 0)
            {
                RoomKey        roomKey        = GetRoomKeyForRoomIndex(roomIndex);
                PortalTemplate portalTemplate = teleporterTemplates[rng.Next(teleporterTemplates.Count)];

                portal = new Portal();
                portal.bounding_box = portalTemplate.BoundingBox;
                portal.room_side    = portalTemplate.PortalRoomSide;
                portal.portal_type  = portalTemplate.PortalType;
                portal.room_x       = roomKey.x;
                portal.room_y       = roomKey.y;
                portal.room_z       = roomKey.z;

                // This is a temp ID for the purpose of portal connection.
                // A new ID will get assigned when inserting this portal into the DB.
                portal.portal_id = m_nextPortalId;
                ++m_nextPortalId;

                // This get sets in the next pass
                portal.target_portal_id = -1;

                // Add the new portal to the room
                room.portals.Add(portal);
            }

            return(portal);
        }
Exemplo n.º 3
0
        private void ParseEntities(XmlNode entityXml)
        {
            foreach (XmlNode energyTankNode in entityXml.SelectNodes("EnergyTank"))
            {
                m_energyTanks.Add(new EnergyTankTemplate(energyTankNode));
            }

            foreach (XmlNode treasureNode in entityXml.SelectNodes("Treasure"))
            {
                m_treasures.Add(new TreasureTemplate(treasureNode));
            }

            foreach (XmlNode trapNode in entityXml.SelectNodes("Trap"))
            {
                m_traps.Add(new TrapTemplate(trapNode));
            }

            foreach (XmlNode mobSpawnerNode in entityXml.SelectNodes("MobSpawner"))
            {
                m_mobSpawners.Add(new MobSpawnerTemplate(mobSpawnerNode));
            }

            m_portalRoomSideBitmask.Clear();
            foreach (XmlNode portalNode in entityXml.SelectNodes("Portal"))
            {
                PortalTemplate portalTemplate = new PortalTemplate(portalNode);

                m_portals.Add(portalTemplate);
                if (portalTemplate.PortalRoomSide != MathConstants.eSignedDirection.none)
                {
                    m_portalRoomSideBitmask.Set(portalTemplate.PortalRoomSide, true);
                }
            }
        }