예제 #1
0
    void Awake()
    {
        mpItemSpawn  = FindObjectOfType <Class_ItemSpawn>();
        mpEnemySpawn = FindObjectOfType <Class_EnemyJon>();
        mpMazeSpawn  = FindObjectOfType <Class_MazeJon>();

        if (Class_NetworkClient.GetInst().mMyUserInfo.mUserName == Class_NetworkClient.GetInst().mRoomMaster)
        {
            GameObject PFPlayer_0  = Resources.Load <GameObject>("Prefabs/PFPlayer_0");
            GameObject PFPlayer_1  = Resources.Load <GameObject>("Prefabs/PFPlayer_1");
            GameObject MyPlayer    = Instantiate <GameObject>(PFPlayer_0, PFPlayer_0.transform.position, Quaternion.identity);
            GameObject OtherPlayer = Instantiate <GameObject>(PFPlayer_1, PFPlayer_1.transform.position, Quaternion.identity);

            MyPlayer.AddComponent <Class_Player>();
            OtherPlayer.AddComponent <Class_ReceivePlayer>();

            mpItemSpawn.StartSpawnItem(true);

            //TCP 게임시작 요청
            byte[] tBuffer = new byte[1024];

            tBuffer[0] = (byte)PROTOCOL.REQ_START_GAME;

            Class_NetworkClient.GetInst().Send(tBuffer, tBuffer.Length);
        }
        else
        {
            GameObject PFPlayer_0  = Resources.Load <GameObject>("Prefabs/PFPlayer_0");
            GameObject PFPlayer_1  = Resources.Load <GameObject>("Prefabs/PFPlayer_1");
            GameObject OtherPlayer = Instantiate <GameObject>(PFPlayer_0, PFPlayer_0.transform.position, Quaternion.identity);
            GameObject MyPlayer    = Instantiate <GameObject>(PFPlayer_1, PFPlayer_1.transform.position, Quaternion.identity);

            MyPlayer.AddComponent <Class_Player>();
            OtherPlayer.AddComponent <Class_ReceivePlayer>();
        }
    }
예제 #2
0
    // Update is called once per frame
    void Update()
    {
        if (Class_NetworkClient.GetInst().mMyUserInfo.mMyTurn == true)
        {
            tHorizontal = Input.GetAxis("Horizontal");
            tVertical   = Input.GetAxis("Vertical");

            Vector3 mMoveDir = new Vector3();
            mMoveDir = tHorizontal * Vector3.right + tVertical * Vector3.forward;

            this.transform.Translate(mMoveDir * Time.deltaTime * mSpeedScalar, Space.World);
            this.transform.forward = Vector3.Lerp(this.transform.forward, mMoveDir, Time.deltaTime * 10);
        }
        else
        {
            tHorizontal = 0.0f;
            tVertical   = 0.0f;
        }

        if (tCount <= 0 && Class_NetworkClient.GetInst().mMyUserInfo.mMyTurn == true)
        {
            mpItemSpawn.StartSpawnItem(false);
        }
    }
예제 #3
0
    IEnumerator UpdateFromNetwork()
    {
        while (true)
        {
            byte[] tBuffer   = new byte[1024];
            int    tRecvSize = Class_NetworkClient.GetInst().GetFromQueue(ref tBuffer, tBuffer.Length);

            if (tRecvSize > 0)
            {
                PROTOCOL tProtocolID = 0;
                tProtocolID = (PROTOCOL)tBuffer[0];

                switch (tProtocolID)
                {
                case PROTOCOL.ACK_START_GAME:
                {
                    Debug.Log("ACK_START_GAME");

                    int tUserKey = tBuffer[1];

                    //방장 차례
                    if (tUserKey == Class_NetworkClient.GetInst().mMyUserInfo.mUserKey)
                    {
                        Class_NetworkClient.GetInst().CleanTurn();
                        Class_NetworkClient.GetInst().mMyUserInfo.mMyTurn = true;
                    }
                    else
                    {
                        Class_NetworkClient.GetInst().CleanTurn();
                    }
                }
                break;

                case PROTOCOL.ACK_TURN_OVER:
                {
                    Debug.Log("ACK_TURN_OVER");

                    int tUserKey = tBuffer[1];

                    if (tUserKey == Class_NetworkClient.GetInst().mMyUserInfo.mUserKey)
                    {
                        Class_NetworkClient.GetInst().CleanTurn();
                    }
                    else
                    {
                        Class_NetworkClient.GetInst().CleanTurn();
                        Class_NetworkClient.GetInst().mMyUserInfo.mMyTurn = true;

                        switch (mStage)
                        {
                        case STAGE.Stage_1:
                            if (Class_NetworkClient.GetInst().mRoomMaster != Class_NetworkClient.GetInst().mMyUserInfo.mUserName)
                            {
                                if (mpItemSpawn.mSpawn == false)
                                {
                                    mpItemSpawn.StartSpawnItem(true);
                                }
                            }
                            break;

                        case STAGE.Stage_2:
                        {
                            if (mpEnemySpawn.mSpawn == false)
                            {
                                mpEnemySpawn.SpawnEnemy();
                            }
                        }
                        break;

                        case STAGE.Stage_3:
                        {
                            if (mpMazeSpawn.mSpawn == false)
                            {
                                mpMazeSpawn.SpawnMaze();
                            }
                        }
                        break;
                        }
                    }
                }
                break;

                case PROTOCOL.ACK_GAME_CLEAR:
                {
                    Debug.Log("ACK_GAME_CLEAR");

                    //서버에서 받은 데이터 입력
                    Class_Singleton_User tFirstUser = new Class_Singleton_User();

                    tFirstUser.mClearCount = tBuffer[1];
                    int tHPLength = tBuffer[2];

                    int tOffset = 3;
                    tFirstUser.mHP = BitConverter.ToInt32(tBuffer, tOffset);
                    tOffset       += sizeof(int);

                    int tAPLength = tBuffer[tOffset];
                    tOffset       += 1;
                    tFirstUser.mAP = BitConverter.ToInt32(tBuffer, tOffset);
                    tOffset       += sizeof(int);

                    int tNameLength = tBuffer[tOffset];
                    tOffset += 1;
                    tFirstUser.mUserName = Encoding.UTF8.GetString(tBuffer, tOffset, tNameLength);

                    tOffset += tNameLength;
                    int tOccupationLength = tBuffer[tOffset];
                    tOffset += 1;
                    tFirstUser.mOccupation = Encoding.UTF8.GetString(tBuffer, tOffset, tOccupationLength);

                    Class_NetworkClient.GetInst().mUserInfoes.Add(tFirstUser);
                    //서버에서 받은 데이터 입력

                    SceneManager.LoadScene("ClearScene");
                    SceneManager.LoadScene("AllPlayScene", LoadSceneMode.Additive);
                }
                break;

                case PROTOCOL.ACK_GAME_FAIL:
                {
                    Debug.Log("ACK_GAME_FAIL");

                    SceneManager.LoadScene("FailScene");
                    SceneManager.LoadScene("AllPlayScene", LoadSceneMode.Additive);
                }
                break;

                case PROTOCOL.ACK_QUIT_GAME:
                {
                            #if UNITY_EDITOR
                    UnityEditor.EditorApplication.isPlaying = false;
                            #else
                    Application.Quit();
                            #endif
                }
                break;
                }
            }
            yield return(new WaitForSeconds(0.05f));
        }
    }