Ejemplo n.º 1
0
    private IEnumerator KaTalk()
    {
        yield return(null);

        sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "갑자기 학교 전기가 나갔다. 전기는 학생식당에서 복구시킬 수 있는듯 하다.", 2f);
        yield return(new WaitForSeconds(2.2f));

        sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "갑자기 강당에서 요란한 소리가 난다.", 1.5f);
        yield return(new WaitForSeconds(1.6f));

        sceneEventSystem.DirectMode();
        sceneEventSystem.Player.GetComponent <PlayerInput>().enabled = true;
    }
    // Use 아이템의 기능을 모두 담아둠. 사용방법은 ItemUiEvent 클래스에서 지정해두었음. 동적으로 이 스크립트로 연결해 아이템 이름과 매칭해 해당 기능을 작동.
    public void UseItem(string itemName)
    {
        switch (itemName)
        {
        case "remoteController":
            RemoteControllerEvent();
            break;

        case "Lighter":
            if (sceneEventSystem.Player.transform.GetChild(2).GetComponent <Light>().range != 30f)
            {
                sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "라이터를 사용했다.", 1.5f);
                sceneEventSystem.Player.transform.GetChild(2).GetComponent <Light>().range          = 30f;
                sceneEventSystem.Player.transform.GetChild(3).GetComponent <SpriteRenderer>().color = new Color(0, 0, 0, 0.8f);
                itemInfoWindow.SetActive(false);
                inventoryWindow.SetActive(false);
            }
            break;

        //View아이템인 경우
        case "BloodedNote":
        case "FoldedPaper":
        case "Hwang'sMemo":
        case "WetNote":
        case "SodiumPostIt":
            viewWindow.gameObject.SetActive(true);
            viewWindow.overrideSprite = ResourceManager.Instance.GetItemIcon(itemName);
            break;
        }
    }
    IEnumerator StudentOffice_()
    {
        sceneEventSystem.TouchCanvas.SetActive(false);
        sceneEventSystem.SpeechBubbles(student, "살려주세요! 안에 저 있어요!", 1.5f);
        yield return(new WaitForSeconds(1.5f));

        sceneEventSystem.SpeechBubbles(student, "선생님이에요? 구해주세요!", 1.5f);
        yield return(new WaitForSeconds(2f));

        schoolMessenger.SetActive(true);
        yield return(new WaitForSeconds(4));

        schoolMessenger.SetActive(false);
        sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "지금 당장 문을 열 수는 없을 것 같다...", 1.5f);
        yield return(new WaitForSeconds(1.5f));

        sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "그래, 선생님이야!", 1.5f);
        yield return(new WaitForSeconds(1.5f));

        sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "지금 당장은 열리지 않지만, 금방 구하러 올게!", 1.5f);
        yield return(new WaitForSeconds(1.5f));

        sceneEventSystem.SpeechBubbles(student, "네... 꼭 다시 구하러 와줘야 해요!", 1.5f);
        yield return(new WaitForSeconds(1.5f));

        sceneEventSystem.TouchCanvas.SetActive(true);
        isInteracted = true;
    }
Ejemplo n.º 4
0
    public void TryUnlock()
    {
        string inputCipher = String.Empty;

        foreach (Text item in cipherText)
        {
            inputCipher = string.Concat(inputCipher, item.text);
        }
        if (inputCipher == cipher)
        {
            StartCoroutine(OpenMessage());
            OpenSuccess();
        }
        else
        {
            sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "열리지 않는다.", 1.5f);
        }
        Time.timeScale = 1;
        lockWindow.SetActive(false);
    }
Ejemplo n.º 5
0
 public void BehaviorByInteraction(GameObject player)
 {
     if (IsZombieIn)
     {
         StartCoroutine(BookshelfFalling());
     }
     else
     {
         sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "서가가 불안하게 서 있다. 살짝 밀면 넘어갈 것 같다.", 1.5f);
         IsInteractWithBookshelf = true;
     }
 }
Ejemplo n.º 6
0
 public void BehaviorByInteraction(GameObject player)
 {
     if (!sceneEventSystem.IsBlackouted)
     {
         // 정전 중이 아니라면,
         sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "알코올 램프가 있다. 불을 붙이면 큰 화재가 날 것만 같다.", 3);
     }
     else
     {
         if (sceneEventSystem.Player.GetComponent <Inventory>().IsItemExist("Lighter"))
         {
             // 정전 중이라면,
             sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "알코올 램프에 라이터로 불을 붙였다. 화재가 발생해 스프링 쿨러가 작동했다.", 3);
             StartCoroutine(OnFire());
         }
         else
         {
             sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "불을 붙일 무언가가 필요하다.", 3);
         }
     }
 }
Ejemplo n.º 7
0
    private IEnumerator PlayerMonitoring()
    {
        while (true)
        {
            yield return(null);

            if (player.GetComponent <PlayerProperty>().StandingSection.name == "3FHallway")
            {
                sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "아이를 구해야한다.", 1.5f);
                StartCoroutine(BackStep());
            }
        }
    }
Ejemplo n.º 8
0
    IEnumerator MusicRoomEvent_()
    {
        sceneEventSystem.DirectMode();
        Camera.main.GetComponent <CameraMove>().SetTarget(musicRoomZombies[0].transform.position);
        yield return(new WaitForSeconds(3f));

        Camera.main.GetComponent <CameraMove>().SetTarget(sceneEventSystem.Player);
        sceneEventSystem.DirectMode();

        yield return(new WaitUntil(() => musicRoomStorageDoor.IsUnlocked));

        sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "빠루 끝을 문 사이에 넣고 힘을 줘서 문을 뜯어냈다.", 2);
        yield return(new WaitForSeconds(2f));

        SoundGenerator.SpreadSound(new Sound(9999, 350), musicRoomStorageDoor.transform.position); // 음악실 문을 따고 소음 발생
    }
Ejemplo n.º 9
0
    private IEnumerator TalkWithKid()
    {
        gameObject.layer = 0;
        sceneEventSystem.DirectMode();
        yield return(new WaitForSeconds(0.5f));

        switch (interNum)
        {
        case 0:

            sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "천장이 내려앉았다. 찌그러진 문은 온 힘을 다해 당겨도 미동조차 않는다.", 1.5f);
            yield return(wait);

            sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "문 아래에는 빗물이 잔뜩 고여 있다.", 1.5f);
            yield return(wait);

            sceneEventSystem.SpeechBubbles(kid, "밖에 누구 있어요?", 1.5f);
            yield return(wait);

            sceneEventSystem.SpeechBubbles(kid, "살려주세요", 1.5f);
            yield return(wait);

            sceneEventSystem.SpeechBubbles(kid, "저 교실에 갇혔어요!!", 1.5f);
            yield return(wait);

            sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "안에 누구 있니?", 1.5f);
            yield return(wait);

            sceneEventSystem.SpeechBubbles(kid, "선생님??! 살려주세요!! 교실에 숨어있는데 갑자기 천장이 무너졌어요!!", 1.5f);
            yield return(wait);

            sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "안에서 열 방법이 없니?", 1.5f);
            yield return(wait);

            sceneEventSystem.SpeechBubbles(kid, "꿈쩍도 안 해요.. 제발 구해주세요!!", 1.5f);
            yield return(wait);

            sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "알았다. 선생님이 구할 방법을 꼭 찾을게. 조금만 기다리렴.", 1.5f);
            yield return(wait);

            sceneEventSystem.SpeechBubbles(kid, "네… 꼭 구해주셔야 해요. 너무 무서워요..", 1.5f);
            yield return(wait);

            sceneEventSystem.IsInteractedThirdFloorCollabsedClass = true;
            interNum++;
            break;

        case 1:
            if (inventory.IsItemExist("Sodium"))
            {
                sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "선생님 목소리 들리니? 선생님이 곧 이 문을 터트릴 거야. 위험할 수 있으니 교탁 밑으로 숨어있거라.", 1.5f);
                yield return(wait);

                sceneEventSystem.SpeechBubbles(kid, "네.. 알겠어요!!", 1.5f);
                yield return(wait);

                interNum++;
                break;
            }
            sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "힘으로는 절대로 열 수 없다. 다른 방법이 필요하다.", 1.5f);
            yield return(wait);

            sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "문을 날려버릴… 폭탄.. 같은 게 어디 없을까?", 1.5f);
            yield return(wait);

            sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "문 아래에는 빗물이 잔뜩 고여 있다.", 1.5f);
            yield return(wait);

            break;

        case 2:
            sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "소듐이 들어있는 봉투를 찢은 뒤, 묵직한 금속 덩어리를 웅덩이에 던져 넣었다.", 1.5f);
            yield return(wait);

            sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "잠깐.. 나도 도망쳐야", 1.5f);
            yield return(wait);

            yield return(StartCoroutine(Boom()));

            interNum++;
            break;

        default:
            break;
        }
        sceneEventSystem.DirectMode();
        yield return(new WaitForSeconds(0.5f));

        gameObject.layer = 8;
    }
Ejemplo n.º 10
0
 public void BehaviorByInteraction(GameObject player)
 {
     sceneEventSystem.MonologueBubbles(player, "배전반에서 누전이 일어나고 있다. 가까이 다가가는 건 위험하다.", 1.5f);
 }
Ejemplo n.º 11
0
    private IEnumerator InteractCabinet(GameObject player)
    {
        gameObject.layer = 0;
        switch (behaviorCount)
        {
        case 0:
            sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "나무 상자가 보인다. 영어로 뭐라 쓰여 있다. Sodium..?", 1.5f);
            yield return(wait);

            behaviorCount++;
            break;

        case 1:
            if (inven.IsItemExist("Crowbar"))
            {
                sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "빠루를 고쳐 잡고, 힘을 주어 유리를 내려쳤다.", 1.5f);
                yield return(wait);

                sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "캐비닛 유리는 큰 소리와 함께 깨졌다.", 1.5f);
                yield return(wait);

                behaviorCount++;
            }
            else
            {
                sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "유리를 깨트리기 위해선 도구가 있어야할 것 같다.", 1.5f);
                yield return(wait);
            }
            break;

        case 2:
            sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "소듐이라 쓰인 상자에 포스트잇이 붙어 있다.", 1.5f);
            yield return(wait);

            player.SendMessage("AddItem", sodiumPostIt);
            sceneEventSystem.PushSystemMessage("포스트잇을 얻었다.", 1);
            yield return(wait);

            behaviorCount++;
            break;

        case 3:
            if (sceneEventSystem.IsInteractedThirdFloorCollabsedClass)
            {
                sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "어쩌면 이걸로 3층 교실의 문을 폭파할 수 있을지도…", 1.5f);
                yield return(wait);

                player.SendMessage("AddItem", sodium);
                sceneEventSystem.PushSystemMessage("실험용 소듐 덩어리를 얻었다.", 1);
                yield return(wait);

                gameObject.layer = 0;
                behaviorCount++;
                sceneEventSystem.IsInteractedThirdFloorCollabsedClass = false;
                yield return(null);
            }
            else
            {
                sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "물에 닿으면 폭발한다니.. 건드리지 않는게 좋겠다.", 1.5f);
                yield return(wait);
            }
            break;

        default:
            break;
        }
        gameObject.layer = 8;
    }
Ejemplo n.º 12
0
    private IEnumerator Talk()
    {
        switch (interactionNum)
        {
        case 0:
            gameObject.layer = 0;
            sceneEventSystem.DirectMode();
            Camera.main.GetComponent <CameraMove>().SetTarget(gameObject);
            yield return(new WaitForSeconds(0.5f));

            sceneEventSystem.SpeechBubbles(gameObject, "…?!", 2);
            yield return(new WaitForSeconds(2.0f));

            sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "쉿. 괜찮아. 선생님이 구하러 왔어.", 2);
            yield return(new WaitForSeconds(2.0f));

            sceneEventSystem.SpeechBubbles(gameObject, "선생님… 저기에…", 2);
            yield return(new WaitForSeconds(2.0f));

            sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "응, 선생님도 봤어. 조금만 기다려. 금방 구해줄게.", 2);
            GameObject.Find("UnstableBookshelf").gameObject.layer = 8;

            Camera.main.GetComponent <CameraMove>().SetTarget(sceneEventSystem.Player);
            sceneEventSystem.DirectMode();

            interactionNum++;
            gameObject.layer = 8;
            break;

        case 1:
            if (GameObject.Find("UnstableBookshelf").GetComponent <UnstableBook>().IsInteractWithBookshelf)
            {
                gameObject.layer = 0;
                sceneEventSystem.DirectMode();
                Camera.main.GetComponent <CameraMove>().SetTarget(gameObject);
                yield return(new WaitForSeconds(0.5f));


                sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "☆☆아, 선생님이 좋은 생각이 떠올랐어.\n내가 신호를 주면 소리를 질러 저 좀비를 유인할 수 있겠니 ?", 3);
                yield return(new WaitForSeconds(3.0f));

                sceneEventSystem.SpeechBubbles(gameObject, "…네?", 1.5f);
                yield return(new WaitForSeconds(1.5f));

                sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "무서울 거라는 거 알아. 그래도 선생님을 한번 믿어봐.\n반드시 구해줄게.", 2);
                yield return(new WaitForSeconds(2));

                sceneEventSystem.SpeechBubbles(gameObject, "…네. 알겠어요.", 1.5f);
                yield return(new WaitForSeconds(1.5f));

                GameObject.Find("3F").GetComponent <ThirdFloor>().ActiveSignalButton();
                Camera.main.GetComponent <CameraMove>().SetTarget(sceneEventSystem.Player);
                sceneEventSystem.DirectMode();

                interactionNum++;

                gameObject.layer = 8;
            }
            else
            {
                sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "방법을 찾아보자.", 1.5f);
            }
            break;

        case 2:
            if (IsZombieDead)
            {
                sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "잘 했어. 이제 나가자.", 2);
                sceneEventSystem.SaveStudent(sceneEventSystem.Player.GetComponent <PlayerInput>());
                GameObject.Find("3F").GetComponent <ThirdFloor>().StopMonitoring();
                sceneEventSystem.ToBeSavedKid = name;
                sceneEventSystem.Player.GetComponent <PlayerProperty>().IsWithchild = true;
                sceneEventSystem.SaveStudent(sceneEventSystem.Player.GetComponent <PlayerInput>());
                Destroy(gameObject);
            }
            break;

        default:
            break;
        }
    }