예제 #1
0
    public void openFile(string a_filePath)
    {
        StreamReader reader = new StreamReader(a_filePath);

        bool  startAtSecond = false;
        float minRange      = 0f;

        for (int k = 0; k < 9; k++)
        {
            string line = reader.ReadLine();
            if (startAtSecond)
            {
                string[] values = line.Split('\t');

                doorType temp = new doorType();

                bool m_Hot   = values[0] == "Y" ? true : false;
                bool m_Noisy = values[1] == "Y" ? true : false;
                bool m_Safe  = values[2] == "Y" ? true : false;

                temp.assign(m_Hot, m_Noisy, m_Safe, float.Parse(values[3]));
                temp.range.x = minRange;
                temp.range.y = minRange = minRange + temp.probability;
                this.GetComponent <Door_Generating>().types.Add(temp);
            }
            startAtSecond = true;
        }

        reader.Close();
    }
예제 #2
0
    private void CheckDoor(doorType door)
    {
        switch (door)
        {
        case doorType.door1:
            if (player.GetComponent <PlayerController>().key1)
            {
                Destroy(gameObject);
            }
            break;

        case doorType.door2:
            if (player.GetComponent <PlayerController>().key2)
            {
                Destroy(gameObject);
            }
            break;

        case doorType.door3:
            if (player.GetComponent <PlayerController>().key3)
            {
                Destroy(gameObject);
            }
            break;
        }
    }
예제 #3
0
파일: Exit.cs 프로젝트: toetag-yim/mountain
        private List <string> getDoorTypeFlags(doorType value)
        {
            List <string> list = new List <string>();

            foreach (Enum doortype in Enum.GetValues(typeof(doorType)))
            {
                if (value.HasFlag(doortype))
                {
                    list.Add(Enum.GetName(typeof(doorType), doortype));
                }
            }
            return(list);
        }
예제 #4
0
파일: Exit.cs 프로젝트: toetag-yim/mountain
        public void LoadXml(XmlNode node, Room room)
        {
            Owner = room;
            Area  = room.Area;

            Name        = node["Name"].InnerText;
            Description = node["Description"].InnerText;
            DoorLabel   = node["DoorDescription"].InnerText;
            roomName    = node["Room"].InnerText;
            areaName    = node["Area"].InnerText;
            Visible     = Convert.ToBoolean(node["Visible"].InnerText);
            Breakable   = Convert.ToBoolean(node["Breakable"].InnerText);
            ExitType    = (exitType)Enum.Parse(typeof(exitType), node["ExitType"].InnerText);

            var lockNode = node.SelectSingleNode("Lock");

            if (lockNode != null)
            {
                LockType = new lockType();
                XmlNodeList locks = node["Lock"].SelectNodes("LockType");
                foreach (XmlNode locktype in locks)
                {
                    LockType |= (lockType)Enum.Parse(typeof(lockType), locktype.InnerText);
                }
            }

            var doorNode = node.SelectSingleNode("Door");

            if (doorNode != null)
            {
                DoorType = new doorType();
                XmlNodeList doors = node["Door"].SelectNodes("DoorType");
                foreach (XmlNode doortype in doors)
                {
                    DoorType |= (doorType)Enum.Parse(typeof(doorType), doortype.InnerText);
                }
            }

            var restrictionNode = node.SelectSingleNode("Restrictions");

            if (restrictionNode != null)
            {
                Restrictions = new exitRestrictions();
                XmlNodeList restrictions = node["Restrictions"].SelectNodes("Restriction");
                foreach (XmlNode restriction in restrictions)
                {
                    Restrictions |= (exitRestrictions)Enum.Parse(typeof(exitRestrictions), restriction.InnerText);
                }
            }
        }
예제 #5
0
파일: Exit.cs 프로젝트: Dragonfoot/mountain
 private List<string> getDoorTypeFlags(doorType value)
 {
     List<string> list = new List<string>();
     foreach (Enum doortype in Enum.GetValues(typeof(doorType))) {
         if (value.HasFlag(doortype)) {
             list.Add(Enum.GetName(typeof(doorType), doortype));
         }
     }
     return list;
 }
예제 #6
0
파일: Exit.cs 프로젝트: Dragonfoot/mountain
        public void LoadXml(XmlNode node, Room room)
        {
            Owner = room;
            Area = room.Area;

            Name = node["Name"].InnerText;
            Description = node["Description"].InnerText;
            DoorLabel = node["DoorDescription"].InnerText;
            roomName = node["Room"].InnerText;
            areaName = node["Area"].InnerText;
            Visible = Convert.ToBoolean(node["Visible"].InnerText);
            Breakable = Convert.ToBoolean(node["Breakable"].InnerText);
            ExitType = (exitType)Enum.Parse(typeof(exitType), node["ExitType"].InnerText);

            var lockNode = node.SelectSingleNode("Lock");
            if (lockNode != null) {
                LockType = new lockType();
                XmlNodeList locks = node["Lock"].SelectNodes("LockType");
                foreach (XmlNode locktype in locks) {
                    LockType |= (lockType)Enum.Parse(typeof(lockType), locktype.InnerText);
                }
            }

            var doorNode = node.SelectSingleNode("Door");
            if (doorNode != null) {
                DoorType = new doorType();
                XmlNodeList doors = node["Door"].SelectNodes("DoorType");
                foreach (XmlNode doortype in doors) {
                    DoorType |= (doorType)Enum.Parse(typeof(doorType), doortype.InnerText);
                }
            }

            var restrictionNode = node.SelectSingleNode("Restrictions");
            if (restrictionNode != null) {
                Restrictions = new exitRestrictions();
                XmlNodeList restrictions = node["Restrictions"].SelectNodes("Restriction");
                foreach (XmlNode restriction in restrictions) {
                    Restrictions |= (exitRestrictions)Enum.Parse(typeof(exitRestrictions), restriction.InnerText);
                }
            }
        }
예제 #7
0
    public void generate()
    {
        if (Menu.s_filePath != "")
        {
            filePath = Menu.s_filePath;
        }

        if (!useFile)
        {
            for (int k = 0; k < probabilities.Length; k++)
            {
                doorType temp = new doorType();
                temp.assign(System.Convert.ToBoolean(doorTypes[k].x), System.Convert.ToBoolean(doorTypes[k].y), System.Convert.ToBoolean(doorTypes[k].z), probabilities[k]);
                types.Add(temp);
            }
        }
        else
        {
            this.GetComponent <File_Loading>().openFile(filePath);
        }

        bool side = false;

        for (int k = 0; k < numberOfDoors + Menu.s_doorNum; k++)
        {
            Vector3 spawnPos = new Vector3(
                startPos.x + (side? -4 : 4),
                startPos.y,
                startPos.z + (4f * k));

            GameObject Temp = Instantiate(door.transform.gameObject, spawnPos, door.transform.rotation, doorsParent.transform);

            int   t       = 0;
            float typeGen = Random.Range(0f, 1f);
            for (int l = 0; l < 8; l++)
            {
                if (typeGen < types[l].range.y)
                {
                    t = l;
                    doorTypeList[t]++;
                    break;
                }
            }

            Temp.GetComponent <Door>().setDoor(types[t].Hot, types[t].Noisy, types[t].Safe);
            Temp.transform.localRotation = !side?Quaternion.Euler(0f, 90f, 0f) : Quaternion.Euler(0f, -90f, 0f);

            Temp.GetComponent <Door>().number = t.ToString();

            if (Random.Range(0, 3) == 2)
            {
                GameObject tempPic = Instantiate(pictureFrame, new Vector3(spawnPos.x * 1.1f, 3f, spawnPos.z + 4f),
                                                 pictureFrame.transform.rotation, wallsParent.transform);
                int paintingIndex = Random.Range(0, 3);
                pictureFrame.transform.GetChild(0).GetComponent <MeshRenderer>().material = paintings[paintingIndex];

                if (paintingIndex < 2)
                {
                    tempPic.transform.rotation = !side?Quaternion.Euler(90f, 0f, 0f) : Quaternion.Euler(90f, 0f, 180f);
                }
                else
                {
                    tempPic.transform.rotation = !side?Quaternion.Euler(0f, 0f, 0f) : Quaternion.Euler(0f, 0f, 180f);

                    tempPic.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
                }
            }
            side = !side;
        }

        door.SetActive(false);
        startPos.y += -2.71f;
        startPos.z  = -4f;
        for (int k = 0; k < (numberOfDoors + Menu.s_doorNum) + 2; k++)
        {
            Instantiate(carpet.transform.gameObject, new Vector3(startPos.x, -2.8f, startPos.z), walls.transform.rotation, wallsParent.transform);
            Instantiate(ceiling.transform.gameObject, new Vector3(startPos.x, 5.7f, startPos.z), ceiling.transform.rotation, wallsParent.transform);
            startPos.z = 4f * k;
        }
        Instantiate(singleWall, new Vector3(startPos.x, -2.387f, startPos.z - 4f), Quaternion.Euler(new Vector3(0f, -90f, 0f)), wallsParent.transform);
        walls.SetActive(false);
        carpet.SetActive(false);

        Debug.Log(
            "1= " + doorTypeList[0] +
            "; 2= " + doorTypeList[1] +
            "; 3= " + doorTypeList[2] +
            "; 4= " + doorTypeList[3] +
            "; 5= " + doorTypeList[4] +
            "; 6= " + doorTypeList[5] +
            "; 7= " + doorTypeList[6] +
            "; 8= " + doorTypeList[7]);
    }