예제 #1
0
        public void ChangeDest(SHTeleComponent dest)
        {
            if (m_Changing)
            {
                return;
            }

            m_Changing = true;

            if (dest == null || !(dest.Addon is SHTeleporter))
            {
                m_UpTele.TeleDest    = dest;
                m_RightTele.TeleDest = dest;
                m_DownTele.TeleDest  = dest;
                m_LeftTele.TeleDest  = dest;
            }
            else
            {
                SHTeleporter destAddon = (SHTeleporter)dest.Addon;

                m_UpTele.TeleDest    = destAddon.UpTele;
                m_RightTele.TeleDest = destAddon.RightTele;
                m_DownTele.TeleDest  = destAddon.DownTele;
                m_LeftTele.TeleDest  = destAddon.LeftTele;
            }

            m_Changing = false;
        }
예제 #2
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            m_Active     = reader.ReadBool();
            m_TeleDest   = reader.ReadItem() as SHTeleComponent;
            m_TeleOffset = reader.ReadPoint3D();
        }
예제 #3
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            m_External = reader.ReadBool();

            m_UpTele    = (SHTeleComponent)reader.ReadItem();
            m_RightTele = (SHTeleComponent)reader.ReadItem();
            m_DownTele  = (SHTeleComponent)reader.ReadItem();
            m_LeftTele  = (SHTeleComponent)reader.ReadItem();
        }
예제 #4
0
        public SHTeleporter(bool external)
        {
            m_Changing = false;
            m_External = external;

            if (external)
            {
                AddComponent(new AddonComponent(0x549), -1, -1, 0);
                AddComponent(new AddonComponent(0x54D), 0, -1, 0);
                AddComponent(new AddonComponent(0x54E), 1, -1, 0);
                AddComponent(new AddonComponent(0x548), 2, -1, 0);
                AddComponent(new AddonComponent(0x54B), -1, 0, 0);
                AddComponent(new AddonComponent(0x53B), 0, 0, 0);
                AddComponent(new AddonComponent(0x53B), 1, 0, 0);
                AddComponent(new AddonComponent(0x544), 2, 0, 0);
                AddComponent(new AddonComponent(0x54C), -1, 1, 0);
                AddComponent(new AddonComponent(0x53B), 0, 1, 0);
                AddComponent(new AddonComponent(0x53B), 1, 1, 0);
                AddComponent(new AddonComponent(0x545), 2, 1, 0);
                AddComponent(new AddonComponent(0x547), -1, 2, 0);
                AddComponent(new AddonComponent(0x541), 0, 2, 0);
                AddComponent(new AddonComponent(0x543), 1, 2, 0);
                AddComponent(new AddonComponent(0x540), 2, 2, 0);
            }

            Point3D upOS = external ? new Point3D(-1, 0, 0) : new Point3D(-2, -1, 0);

            m_UpTele = new SHTeleComponent(external ? 0x1775 : 0x495, upOS);
            AddComponent(m_UpTele, 0, 0, 0);

            Point3D rightOS = external ? new Point3D(-2, 0, 0) : new Point3D(2, -1, 0);

            m_RightTele = new SHTeleComponent(external ? 0x1775 : 0x495, rightOS);
            AddComponent(m_RightTele, 1, 0, 0);

            Point3D downOS = external ? new Point3D(-2, -1, 0) : new Point3D(2, 2, 0);

            m_DownTele = new SHTeleComponent(external ? 0x1776 : 0x495, downOS);
            AddComponent(m_DownTele, 1, 1, 0);

            Point3D leftOS = external ? new Point3D(-1, -1, 0) : new Point3D(-1, 2, 0);

            m_LeftTele = new SHTeleComponent(external ? 0x1775 : 0x495, leftOS);
            AddComponent(m_LeftTele, 0, 1, 0);
        }