예제 #1
0
    public void run()
    {
        //------------------------------------
        // 스타트 -> 인게임 -> 계속할지물어봄
        //-----------------------------------
        while (Scene != SceneValue.End)
        {
            switch (Scene)
            {
            case SceneValue.Start:
                start.run();
                Scene = SceneValue.InGame;
                break;

            case SceneValue.InGame:
                Scene = gameManager.Run(Scene);
                break;

            case SceneValue.EndMessage:
                Scene = end.Run(Scene);
                break;

            default:
                break;
            }
        }
        EndMessage();
    }
예제 #2
0
    public static SceneValue Scene;          //현재 씬값

    public SceneManager()
    {
        Scene       = new SceneValue();
        Scene       = SceneValue.Start;
        start       = new SceneStart();
        gameManager = new GameManager();
        end         = new Sceneend();
    }
 public void RunScene()
 {
     Question1.SetActive(false);
     Question2.SetActive(false);
     Question3.SetActive(false);
     Question4.SetActive(false);
     Question5.SetActive(false);
     if (!allScenesPlayed())
     {
         sceneIndex = randomizeNextScene();
         StartCoroutine(LoadAsynchronously(sceneIndex));
     }
     else
     {
         SceneValue.CreateText();
         Question0.SetActive(true);
     }
 }
예제 #4
0
    public SceneValue Run(SceneValue a_SceneValue)
    {
        //-----------------------------------------------
        // 게임을 계속 할지 물어보는 부분
        //-----------------------------------------------
        Debug.Assert(a_SceneValue == SceneValue.EndMessage);

        Console.Clear();
        Console.WriteLine("다시하시려면 Y키 끝낼려면 N키");

        switch (Console.ReadKey().Key)
        {
        case ConsoleKey.Y:
            a_SceneValue = SceneValue.Start;
            return(a_SceneValue);

        case ConsoleKey.N:
            a_SceneValue = SceneValue.End;
            return(a_SceneValue);

        default:
            return(a_SceneValue);
        }
    }
예제 #5
0
    public SceneValue Run(SceneValue a_scene)
    {
        //--------------------------------------
        // 메인 루프 부분
        // 1. 사용자가 키입력을 안해도 업데이트
        // 2. 틱으로 고객의 인내심이 줄어들게함
        // define.GetTargetFPSTicks()  ->> 수정시 pc마다 깜빡임줄어듬
        //---------------------------------------
        Debug.Assert(a_scene == SceneValue.InGame);                                  // 예외처리

        DateTime old              = DateTime.Now;
        long     ticks            = 0;
        long     phaseTicks       = 0;                                               // 다들아시는 틱.
        long     TargetTicks      = (long)define.GetTargetFPSTicks();
        float    targetTicksphase = 0.5f;                                            // 페이즈 조절용 틱초기값

        player.Money = 0;                                                            // 재게임시 초기화
        customor.RandomOrder();                                                      // 처음 오더 세팅 지우면 게임 안돌아감

        while (true)
        {
            //---------------------------------------------
            // 메인 루프
            // 버거 판별 , 게임 오버룰도 담당
            // 하단은 다들 아시는 그 틱
            //---------------------------------------------

            long temp = (DateTime.Now - old).Ticks;                              // 여기도 틱
            old         = DateTime.Now;
            phaseTicks += temp;                                                  // 페이즈틱
            ticks      += temp;


            if (ticks > TargetTicks)                                              // 30프레임당 1번 랜더
            {
                Input();
                gameRander.FixRender();                                           // 메인랜더링
                ticks -= TargetTicks;
            }

            //-----------------------------
            // 페이즈 구현 부분
            // 페이즈 2 = 400원 이상
            // 페이즈 3 = 600원 이상
            // 페이즈 4 = 900원 이상
            //-----------------------------
            if (phaseTicks > 1000 * 10000 * targetTicksphase)                     // 페이즈 업데이트 부분
            {
                CheckPatience();
                gameRander.TickRender();                                          // 페이즈 틱당 랜더링
                phaseTicks = 0;
            }

            if (player.Money > 300)                                               // 매직넘버 바꿀까 했는데 가독성이 이게 좋다는 평이 많아 놔둠
            {
                targetTicksphase = 0.2f;
            }

            if (player.Money > 500)
            {
                targetTicksphase = 0.1f;
            }

            if (player.Money > 800)
            {
                targetTicksphase = 0.05f;
            }

            if (player.Mental <= 0)                                               // 게임오버 해주는 부분
            {
                a_scene       = SceneValue.EndMessage;
                player.Mental = 4;
                return(a_scene);
            }
        }
    }