private void FixedUpdate() { roomId = PlayerPrefs.GetInt("roomId"); if (state == StateType.PENDING) { warningSign?.SetActive(true); /*Task.Run(()=> messageClient.Connect());*/ Task.Run(() => ketFrameClient.Connect()); } else { warningSign?.SetActive(false); } if (state == StateType.NON_INITIALIZED) { warningSign?.SetActive(true); TestModel generationCommand = ConfigureBasicModel(); generationCommand.CommandType = 0; generationCommand.RoomId = roomId; // temporary TODO: fixd it later messageClient.AskForUpdate(generationCommand); } if (state == StateType.INITIALIZED) { playerSpawnManager.Player.SyncModel(); TestModel m = playerSpawnManager.Player.model; m.CommandType = 1; m.Name = newName; m.Password = password; m.Id = id; messageClient.AskForUpdate(m); } if (state == StateType.DAMAGED) { state = StateType.INITIALIZED; } if (state == StateType.KILLED) { GameObject playerEntity = playerSpawnManager.Player.gameObj; playerEntity.GetComponent <PlayerHealth>().Death(); TestModel damageDealer = playerEntity.GetComponent <Player>().GetLast(); obManager.RegisterInfo(playerSpawnManager.Player.model); playerSpawnManager.Die(); state = StateType.OB; ketFrameClient.AskForKeyFrame(new TestModel { CommandType = 6, Name = newName, Password = password, Id = id, EventTrigger = damageDealer.Id }); Debug.Log("player was killed by: " + damageDealer.Id); } if (state == StateType.OB) { TestModel m = playerSpawnManager.Player.model; m.CommandType = 10; m.Name = newName; m.Password = password; m.Id = id; messageClient.AskForUpdate(m); // get the other people's position if (!obManager.Spawned()) { obManager.Spawn(); } } if (state == StateType.EXIT) { TestModel m = new TestModel { CommandType = 11, Name = newName, Password = password, Id = id }; ketFrameClient.AskForKeyFrame(m); state = StateType.IDLE; Cursor.visible = true; Cursor.lockState = CursorLockMode.None; SceneManager.LoadScene("LoginScene"); } if (networkTimeout <= 0) { bool isSucceed = CheckNetWork(); if (isSucceed) { networkTimeout = 6000; } } networkTimeout -= 1; }