public void SendMovementMessage(ushort objID) { GameObject obj = objects[objID].gObj; using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(obj.GetComponent <NetworkTrackable>().uniqueID); Vector3 localPosition = obj.transform.localPosition; writer.Write(localPosition.x); writer.Write(localPosition.y); writer.Write(localPosition.z); Vector3 angles = obj.transform.rotation.eulerAngles; writer.Write(angles.x); writer.Write(angles.y); writer.Write(angles.z); using (Message message = Message.Create(PICKUP_TAG, writer)) client.SendMessage(message, SendMode.Unreliable); } }
internal void GetLobbyInfo(ushort page = 1) { using (DarkRiftWriter w = DarkRiftWriter.Create()) { w.Write(page); using (Message m = Message.Create(UDRMS_Tags.getLobbyMatchs, w)) client.SendMessage(m, SendMode.Reliable); } }
public void SendPlayerInformationMessage(string playerName) { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(new PlayerInformationMessage(drClient.ID, playerName)); using (Message message = Message.Create(Tags.PlayerInformationTag, writer)) { drClient.SendMessage(message, SendMode.Reliable); } } }
public void RequestAddItem(Item item, ItemContainer itemContainer) { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(itemContainer.networkID); writer.Write(item.itemDefinition.nameID); writer.Write(item.amount); using (Message message = Message.Create(Tags.AddItemToContainerTag, writer)) client.SendMessage(message, SendMode.Reliable); } }
public void SendSceneChanged(ushort sceneBuildIndex) { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(sceneBuildIndex); using (Message message = Message.Create(Tags.ChangeScene, writer)) { _client.SendMessage(message, SendMode.Reliable); } } }
/// <summary> /// Sends a PlayerJoined message. /// </summary> public void SendPlayerJoinedMessage() { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(_client.ID); writer.Write(_playerOptions.Nickname); using (Message message = Message.Create(Tags.PlayerJoined, writer)) { _client.SendMessage(message, SendMode.Reliable); } //LoadLobbyMessage is sent as response } }
public void SendPieceCoordinates(PlayerPiece p) { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { //write the piece ID and its updated x and y coordinates writer.Write(p.GetComponent <NetworkCheckersPiece>().id); writer.Write(p.x); writer.Write(p.y); using (Message message = Message.Create(NetworkTags.InGame.CALLBACK_PIECE, writer)) clientReference.SendMessage(message, SendMode.Unreliable); Player.instance.canMakeMove = false; } }
public void UpdateServerData(string serverData, int maxPlayers) { if (!isServer) { return; } using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(serverData); writer.Write(maxPlayers); using (Message sendUpdateRequest = Message.Create((ushort)OpCodes.UpdateRoomData, writer)) drClient.SendMessage(sendUpdateRequest, SendMode.Reliable); } }
//This will be called when the user presses enter in the input field public void MessageEntered() { //Check we have a client to send from if (client == null) { Debug.LogError("No client assigned to Chat component!"); return; } //First we need to build a DarkRiftWriter to put the data we want to send in, it'll default to Unicode //encoding so we don't need to worry about that using (DarkRiftWriter writer = DarkRiftWriter.Create()) { //We can then write the input text into it writer.Write(input.text); //Next we construct a message, in this case we can just use a default tag because there is nothing fancy //that needs to happen before we read the data. using (Message message = Message.Create(0, writer)) { //Finally we send the message to everyone connected! client.SendMessage(message, SendMode.Reliable); } } }
//Called when the object is dragged by the mouse void OnMouseDrag() { //Check we have a client to send from if (client == null) { Debug.LogError("No client assigned to DragObject!"); return; } //Firstly we need to work out where the object should be, we can ignore the z-coord returned Vector3 newPos = Camera.main.ScreenPointToRay(Input.mousePosition).GetPoint(10); //We want to send the new position of the object to the other clients so we write the position //into a DarkRiftWriter as x, y and z components DarkRiftWriter writer = new DarkRiftWriter(); writer.Write(newPos.x); writer.Write(newPos.y); //Then we'll create a new TagSubject message and put the DarkRiftWriter into it. //The tag and subject indicate what the message is about so we'll put a tag of '0' to indicate a //movement and set the subject to the ID of this object so that we can easily identify it later. Message message = new TagSubjectMessage(dragID, 0, writer); //We can then send the message client.SendMessage(message, SendMode.Unreliable); //TODO 1 will this be a problem without others as an intention? //Last but not least we'll actually move the object on our screen so set the target position to //the new position targetPosition = new Vector3(newPos.x, newPos.y, 0); }
//Called when the object is dragged by the mouse void OnMouseDrag() { //Check we have a client to send from if (client == null) { Debug.LogError("No client assigned to DragObject!"); return; } //Firstly we need to work out where the object should be, we can ignore the z-coord returned Vector3 newPos = Camera.main.ScreenPointToRay(Input.mousePosition).GetPoint(10); //We want to send the new position of the object to the other clients so we write our ID and //our position (as x, y and z components) into a DarkRiftWriter using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(dragID); writer.Write(newPos.x); writer.Write(newPos.y); //Then we'll create a new message and put the DarkRiftWriter into it. //The tag indicates what the message is about so we'll put a tag of '0' to indicate a //movement. using (Message message = Message.Create(MOVE_TAG, writer)) { //We can then send the message client.SendMessage(message, SendMode.Unreliable); } } //Last but not least we'll actually move the object on our screen so set the target position to //the new position targetPosition = new Vector3(newPos.x, newPos.y, 0); }
/// <summary> /// Sends ushort message to Server /// </summary> /// <param name="txt"></param> /// <param name="tag"></param> public static void SendToServer(ushort number, ushort tag, UnityClient client) { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(number); using (Message playerMessage = Message.Create(tag, writer)) client.SendMessage(playerMessage, SendMode.Reliable); } }
/// <summary> /// Sends a message with a list of clients and their ready status to provide visual list to the lobby. /// </summary> public void SendUpdateLobbyMessage() { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { foreach (ushort playerId in _lobbyState.PlayersReadyStatus.Keys) { var playerData = _lobbyState.PlayersReadyStatus[playerId]; writer.Write(playerId); writer.Write(playerData.Ready); writer.Write(playerData.Nickname); } using (Message message = Message.Create(Tags.UpdateLobby, writer)) { _client.SendMessage(message, SendMode.Reliable); } } }
public void StartGame() { using (DarkRiftWriter gameStartWriter = DarkRiftWriter.Create()) { using (Message gameStartMessage = Message.Create(Tags.StartGameTag, gameStartWriter)) { clientReference.SendMessage(gameStartMessage, SendMode.Reliable); } } }
internal void AddBlock(Vector3 position) { if (client == null) { Debug.LogError("No client assigned to BlockWorld component!"); return; } //Don't worry about snapping, we'll do that on the server using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(position.x); writer.Write(position.y); writer.Write(position.z); using (Message message = Message.Create(BlockTags.PlaceBlock, writer)) client.SendMessage(message, SendMode.Reliable); } }
public void SendMessageWithResponse(Message message, Action actionOnComplete = null, SendMode sendMode = SendMode.Reliable) { BuildClientsList(); ClearEvents(); if (actionOnComplete != null) { Completed += actionOnComplete; } _client.SendMessage(message, sendMode); }
internal void AddBlock(Vector3 position) { if (client == null) { Debug.LogError("No client assigned to BlockWorld component!"); return; } //Don't worry about snapping, we'll do that on the server DarkRiftWriter writer = new DarkRiftWriter(); writer.Write(position.x); writer.Write(position.y); writer.Write(position.z); TagSubjectMessage message = new TagSubjectMessage(WORLD_TAG, PLACE_BLOCK_SUBJECT, writer); client.SendMessage(message, SendMode.Reliable); }
/// <summary> /// Sends an information whether the game is won/lost to all clients. /// </summary> public void SendGameState() { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(_state.State == GameplayState.Win); using (Message gameStateUpdate = Message.Create(Tags.UpdateGameState, writer)) { _client.SendMessage(gameStateUpdate, SendMode.Reliable); } } }
private void SendRequest(DeathParameters deathParameters) { using (var writer = DarkRiftWriter.Create()) { writer.Write(_info.Id); using (var msg = Message.Create(Tags.DeathRequest, writer)) { _client.SendMessage(msg, SendMode.Reliable); } } }
private void SendNetworkID(ushort networkID, ushort messageTag, SendMode sendMode) { using (var writer = DarkRiftWriter.Create()) { writer.Write(networkID); using (var message = Message.Create(messageTag, writer)) { Client.SendMessage(message, sendMode); } } }
/// <summary> /// Extension method for quickly sending unreliable messages to the server. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="client"></param> /// <param name="message">The message to be sent, needs to inherit from IDarkRiftSerializable</param> public static void SendMessageUnreliable <T>(this UnityClient client, T message) where T : IDarkRiftSerializable, IMessage { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write <T>(message); using (Message msg = Message.Create((ushort)message.Tag, writer)) client.SendMessage(msg, SendMode.Unreliable); } }
public void SendWeaponChangedMessage(IWeapon newWeapon) { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(_characterFacade.Id); using (Message message = Message.Create(Tags.UpdateCharacterEquipment, writer)) { _networkManager.SendMessage(message, SendMode.Reliable); } } }
public void SendClientReady() { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(_client.ID); using (Message message = Message.Create(Tags.ClientReady, writer)) { _client.SendMessage(message, SendMode.Reliable); } } }
void SendName() { Debug.Log("sending name..."); using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(nameInput.text); using (Message message = Message.Create(Tags.ClientNameRequestTag, writer)) client.SendMessage(message, SendMode.Reliable); } Debug.Log("name sent sucessfully"); mainMenuPanel.SetActive(false); }
//This function sends the use state of an object to the server void SendUseMessage(ushort objID, ushort useTag) { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(objID); writer.Write(useTag); using (Message useMessage = Message.Create(USE_TAG, writer)) { Client.SendMessage(useMessage, SendMode.Reliable); } } }
void HandleInput() { UnityClient client = gameObject.GetComponent <UnityClient>(); Vector3 moveDirection = mainCameraTransform.right * Input.GetAxis("Horizontal") + mainCameraTransform.forward * Input.GetAxis("Vertical"); moveDirection.y = 0f; moveDirection.Normalize(); dashing = Input.GetButton("Jump"); if (moveDirection != lastMoveVector || dashing != lastDashing) { using (DarkRiftWriter moveInputWriter = DarkRiftWriter.Create()) { moveInputWriter.Write(new TTS.InputMovementMessage(moveDirection, dashing)); using (Message moveInputMessage = Message.Create((ushort)TTS.MessageType.INPUT_MOVEMENT, moveInputWriter)) client.SendMessage(moveInputMessage, SendMode.Unreliable); } } lastMoveVector = moveDirection; lastDashing = dashing; fire1 = Input.GetButton("Fire1"); fire2 = Input.GetButton("Fire2"); if (fire1 != lastFire1 || fire2 != lastFire2) { using (DarkRiftWriter interactInputWriter = DarkRiftWriter.Create()) { interactInputWriter.Write(new TTS.InputInteractMessage(fire1, fire2)); using (Message interactInputMessage = Message.Create((ushort)TTS.MessageType.INPUT_INTERACT, interactInputWriter)) client.SendMessage(interactInputMessage, SendMode.Reliable); } } lastFire1 = fire1; lastFire2 = fire2; }
private void SendMessage(float damage) { using (var writer = DarkRiftWriter.Create()) { writer.Write(_info.Id); writer.Write(damage); using (var msg = Message.Create(Tags.TakeDamage, writer)) { _client.SendMessage(msg, SendMode.Reliable); } } }
void Update() { if (Vector3.Distance(lastPosition, transform.position) > moveDistance && Client != null) { Message movMessage = Message.Create(Tags.MovePlayerTag, new NetworkMessages.MovementMessage(transform.position, transform.rotation)); Client.SendMessage(movMessage, SendMode.Unreliable); lastPosition = transform.position; lastRotation = transform.rotation; } }
private void SendMessage(DamageTakenArgs args) { using (var writer = DarkRiftWriter.Create()) { writer.Write(_info.Id); writer.Write(args.damage); writer.Write(_health.Health); using (var msg = Message.Create(Tags.UpdateHealth, writer)) { _client.SendMessage(msg, SendMode.Reliable); } } }
private void SendWeaponChanged(List <IModule> modules) { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { //write message writer.Write(_characterFacade.Id); modules.ForEach(module => writer.Write(module.Id)); using (Message message = Message.Create(Tags.WeaponChanged, writer)) { _unityClient.SendMessage(message, SendMode.Reliable); } } }