public static void ProcessNext() { if (SocketIncoming.commandQueue.Count > 0) { MovementMessage.Process((string)SocketIncoming.commandQueue.Dequeue()); } }
void _OnHandleReceivedPacket(Transmitter transmitter, int idCommand, byte[] aPacketBuffer, int iPos) { ECommand eCommand = (ECommand)idCommand; if (eCommand == ECommand.LOGIN) { LoginMessage msg = new LoginMessage(); msg.UnSealPacketBuffer(aPacketBuffer, iPos); msg.Unserialize(); OnLoginMessage(transmitter, msg); } else if (eCommand == ECommand.EXIT) { ExitMessage msg = new ExitMessage(); msg.UnSealPacketBuffer(aPacketBuffer, iPos); msg.Unserialize(); OnExitMessage(transmitter, msg); } else if (eCommand == ECommand.MOVEMENT) { MovementMessage msg = new MovementMessage(); msg.UnSealPacketBuffer(aPacketBuffer, iPos); msg.Unserialize(); OnMovementMessage(transmitter, msg); } }
void OnMessage(object msg) { if (msg is Message) { var message = (Message)msg; Debug.Log("Received schema-encoded message:"); Debug.Log("message.command => " + message.command + ", message.data => " + message.data); switch (message.command) { case "movement": MovementMessage data = (MovementMessage)message.data; Vector3 playerPos = GetGameEntity(GameState._Room.SessionId).obj.transform.position; if (data.x == playerPos.x && data.y == playerPos.y && data.z == playerPos.z && data.stateNum > GameState.CurrentCommand) { GameState.CurrentCommand = data.stateNum; } break; } } else { // msgpack-encoded message var message = (IndexedDictionary <string, object>)msg; Debug.Log("Received msgpack-encoded message:"); Debug.Log(message["hello"]); } }
public void cleanUpMovementList() { //System.Console.WriteLine("Cleaning up movement list"); int listCount = movementList.Values.Count; for (int i = 0; i < listCount; i++) { //System.Console.WriteLine("Iterating through movementlist"); if (((MovementMessage)movementList.GetByIndex(i)).messageTerminated == true) { MovementMessage message = ((MovementMessage)movementList.GetByIndex(i)); String messageTypeId = message.messageTypeId; Character2D character = game.getSceneGraph().getGenericCharacter2D(message.objectId); ////System.Console.WriteLine("Removing terminated message: " + message.messageTypeId); movementList.RemoveAt(i); if (messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MSG)) { System.Console.WriteLine("Triggering fall message after cleanup"); //character.changeStatus(GameConstants.PLAYER_FALL_MSG); } else if (messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_LEFT_MSG)) { ////System.Console.WriteLine("Triggering fall message after cleanup"); character.changeStatus(GameConstants.PLAYER_FALL_MOVING_LEFT_MSG); } else if (messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_RIGHT_MSG)) { //System.Console.WriteLine("Triggering fall message after cleanup"); character.changeStatus(GameConstants.PLAYER_FALL_MOVING_RIGHT_MSG); } } } }
private void OnMovementReceivedEvent(MovementMessage movement) { var message = $"Message received. Figuring out where to move to... Movement: {movement.Message}."; _logger.Information(Constants.LogMessageTemplate, movement.MessageId, GetType().Name, "OnMovementReceivedEvent", message); }
void OnMovementMessage(Transmitter transmitter, MovementMessage msg) { Vector3 velocity = new Vector3(msg.m_fVelocityX, msg.m_fVelocityY, msg.m_fVelocityZ); Vector3 position = new Vector3(msg.m_fPositionX, msg.m_fPositionY, msg.m_fPositionZ); float eularAngle = msg.m_fEularAngle; int animInfo = msg.m_iAnimInfo; playerManager.dictOtherPlayerMotor[msg.m_iPlayerIndex].HandleMovementMessage(velocity, position, eularAngle, animInfo); }
public void SendMovementMessage(Vector3 fVelocity, Vector3 fPosition, float fEularAngle, int iAnimInfo) { MovementMessage msgMovement = new MovementMessage(); msgMovement.m_fVelocityX = fVelocity.x; msgMovement.m_fVelocityY = fVelocity.y; msgMovement.m_fVelocityZ = fVelocity.z; msgMovement.m_fPositionX = fPosition.x; msgMovement.m_fPositionY = fPosition.y; msgMovement.m_fPositionZ = fPosition.z; msgMovement.m_fEularAngle = fEularAngle; msgMovement.m_iAnimInfo = iAnimInfo; m_theTansmitter.Send(msgMovement); }
public void onInput(InputEvent inputEvent) { Debug.Log("inputEvent"); bool[] rdlu = new bool[4]; int i = 0; foreach (KeyCode keyCode in movKeyCodes) { rdlu[i++] = inputEvent.pressedKeys.Contains(keyCode); } MovementMessage message = new MovementMessage(inputEvent.player.id, rdlu); foreach (GameMessageListener listener in listeners) { listener.onMovement(message); } }
public IEnumerator SendBallPosition() { while (true) { float frequency = 1.0f / 6.0f; // Sends 6 times a second yield return(new WaitForSeconds(frequency)); Debug.LogError("Sending ball position !!!"); MovementMessage ballMovement = new MovementMessage(); ballMovement.type = MessageType.BALL; ballMovement.x = ballPos.x; ballMovement.y = ballPos.y; ballMovement.frequency = frequency; s.ServerSend(ballMovement); } }
public override void onMovement(MovementMessage message) { Debug.Log("ON MOVE"); foreach (bool b in message.rdlu) { Debug.Log(b); } Player player = PlayerDatabase.Instance.GetPlayer(message.playerId); int x = (message.rdlu [0] ? 1 : 0) - (message.rdlu [2] ? 1 : 0); int y = (message.rdlu [3] ? 1 : 0) - (message.rdlu [1] ? 1 : 0); Position newPos = player.position.Add(new Position(x, y)); Debug.Log("New pos: " + newPos.x + ", " + newPos.y); if (getId(newPos) == 0) { setId(newPos, player.id); setId(player.position, 0); player.SetPosition(newPos); } else if (getId(newPos) < 0) { Debug.Log("Wrong move!!"); } }
void Update() { if (Input.GetKeyDown(KeyCode.G)) { // Testing seed = Random.Range(0, Int32.MaxValue); dungeonGeneration.Clear(); spawner.SetServer(this); spawner.seed = seed; spawner.ClearMonsters(); dungeonGeneration.Generate(seed); } if (Input.GetKeyDown(KeyCode.K)) { //Testing for (int i = 0; i < spawner.monsters.Length; i++) { if (spawner.monsters[i] != null) { spawner.monsters[i].GetComponent <Monster>().health = 0; } } } if (Input.GetKeyDown(KeyCode.Escape)) { panelsManager.ShowMenuPanel(); } if (Input.GetKeyDown(KeyCode.Space)) { StartShooting(); } if (Input.GetKeyUp(KeyCode.Space)) { StopShooting(); } switch (state) { case GameState.STOP: break; case GameState.START: break; case GameState.GAME: speed = joystick.InputVector * Time.deltaTime * 12; player.animator.SetBool("Walking", false); // Get server player if (speed.magnitude > 0 && !player.died) { //player.transform.position += speed; Rigidbody2D playerRb2D = player.GetComponent <Rigidbody2D>(); playerRb2D.MovePosition(playerRb2D.position + speed); player.SetRotation(joystick.InputVector); player.animator.SetBool("Walking", true); } movementElapsed += Time.deltaTime; // Shooting if (player.shooting) { player.AnimateShooting(player.shootingElapsed); //Debug.Log(player.shootingElapsed); if (player.shootingElapsed >= player.frequency) { player.shootingElapsed = player.shootingElapsed % player.frequency; shootingElapsed = shootingElapsed % player.frequency; ServerShoot(); } } // Movement if (movementElapsed >= GameManager.FREQUENCY) { movementElapsed = movementElapsed % GameManager.FREQUENCY; dungeonGeneration.HighlightRoom(player); if (sharingMovements) { ShareMovements(); } else { sharingMovements = true; } } // Server movement Lerp for (int i = 0; i < nbOfPlayers; i++) { Player playerIndex = players[i].GetComponent <Player>(); Vector2 startClientPos = startPlayersPositions[i]; Vector2 endClientPos = endPlayersPositions[i]; float startClientRot = startPlayersRotations[i]; float endClientRot = endPlayersRotations[i]; float timeStartedLerping = timesStartedLerping[i]; playerIndex.shootingElapsed += Time.deltaTime; if (i != 0) { float lerpPercentage = (Time.time - timeStartedLerping) / GameManager.FREQUENCY; //Debug.Log(string.Format("lerpPercent[{0}] = (time[{1}] - tS[{2}]) / tTRG[{3}]", lerpPercentage, Time.time, timeStartedLerping, GameManager.FREQUENCY)); playerIndex.transform.position = Vector3.Lerp(startClientPos, endClientPos, lerpPercentage); float lerpedRotation = Mathf.LerpAngle(startClientRot, endClientRot, lerpPercentage); playerIndex.SetRotation(lerpedRotation); // If we havent moved then we are not walking if (Vector2.Distance(startClientPos, endClientPos) < 0.1f) { playerIndex.animator.SetBool("Walking", false); } else { playerIndex.animator.SetBool("Walking", true); } if (playerIndex.shooting) { playerIndex.AnimateShooting(playerIndex.shootingElapsed); if (playerIndex.shootingElapsed >= playerIndex.frequency) { playerIndex.shootingElapsed = playerIndex.shootingElapsed % playerIndex.frequency; ClientShoot(i); } } else { playerIndex.StopShooting(); } } } break; } // Server read received messages switch (s.received.type) { case MessageType.NONE: { } break; case MessageType.CLIENT_NEW_PLAYER: { Debug.LogError("Received Start Server from client"); AddPlayer(); SharePlayers(); } break; case MessageType.MOVEMENT: { // Received movement from client MovementMessage mm = (MovementMessage)s.received; //Debug.Log("Movement from " + mm.playerId); lastClientMovement = mm.playerId; startPlayersPositions[lastClientMovement] = players[lastClientMovement].transform.position; startPlayersRotations[lastClientMovement] = players[lastClientMovement].GetComponent <Player>().visorRotation; endPlayersRotations[lastClientMovement] = mm.visorRotation; endPlayersPositions[lastClientMovement] = new Vector3(mm.x, mm.y); players[lastClientMovement].GetComponent <Player>().shooting = mm.shooting; timesStartedLerping[lastClientMovement] = Time.time; } break; case MessageType.CLIENT_GO_TO_NEXT_ROOM: { ClientGoToNextRoomMessage goToNextRoomMessage = (ClientGoToNextRoomMessage)s.received; GoToNextRoom(goToNextRoomMessage.seed); } break; case MessageType.CLIENT_SHARE_MONSTERS_SPAWN: { ClientShareMonstersSpawnMessage shareMonstersSpawnMessage = (ClientShareMonstersSpawnMessage)s.received; //spawner.SpawnMonsters(shareMonstersSpawnMessage.roomId, shareMonstersSpawnMessage.seed); // Teleportation if (shareMonstersSpawnMessage.teleport) { Player player = players[shareMonstersSpawnMessage.playerId].GetComponent <Player>(); Vector2 teleportPosition = dungeonGeneration.GetPositionByPlayerDirection(0, shareMonstersSpawnMessage.roomId, player.GetVisorDirection()); players[0].transform.position = teleportPosition; } ShareSpawnMonsters(shareMonstersSpawnMessage.roomId, shareMonstersSpawnMessage.playerId, shareMonstersSpawnMessage.seed, shareMonstersSpawnMessage.teleport); } break; case MessageType.CLIENT_DIE: { ClientDieMessage clientDieMessage = (ClientDieMessage)s.received; players[clientDieMessage.playerId].GetComponent <Player>().SetDied(); ShareDeath(clientDieMessage.playerId); } break; } s.received.OnRead(); }
public override void onMovement(MovementMessage movementMessage) { Send(movementMessage); }
void Update() { if (goingRight) { pos = serverPlayer.transform.position; pos.x += Time.deltaTime * speed; serverPlayer.transform.position = pos; MovementMessage mv = new MovementMessage(); mv.type = MessageType.SERVER; mv.x = pos.x; mv.y = pos.y; mv.frequency = Time.time; s.ServerSend(mv); } if (goingLeft) { pos = serverPlayer.transform.position; pos.x -= Time.deltaTime * speed; serverPlayer.transform.position = pos; MovementMessage mv = new MovementMessage(); mv.type = MessageType.SERVER; mv.x = pos.x; mv.y = pos.y; mv.frequency = Time.time; s.ServerSend(mv); } if (Input.GetKeyDown(KeyCode.Space)) { Debug.LogError("START GAME"); state = GameState.START; } // Messages switch (s.received.type) { case MessageType.NONE: break; case MessageType.START: Debug.LogError("START GAME"); state = GameState.START; break; case MessageType.CLIENT: MovementMessage mm = (MovementMessage)s.received; clientPlayer.transform.position = new Vector3(mm.x, mm.y); break; default: Debug.Log("Unhandled type " + s.received.type.ToString()); break; } s.received.OnRead(); // Always set a message to read on recieved // State switch (state) { case GameState.STOP: break; case GameState.START: ballPos = ball.transform.position; ballInitPos = new Vector3(ball.transform.position.x, ball.transform.position.y, ball.transform.position.z); ballSpeed = randomBallSpeed(); waitTime += Time.deltaTime; if (waitTime > 3) { waitTime = 0; StopCoroutine(sendBallCoroutine); StartCoroutine(sendBallCoroutine); state = GameState.GAME; } break; case GameState.GAME: RectTransform ballTransform = ball.GetComponent <RectTransform>(); RectTransform clientTransform = clientPlayer.GetComponent <RectTransform>(); RectTransform serverTransform = serverPlayer.GetComponent <RectTransform>(); if (rectOverlaps(ballTransform, wallLeft)) { //Debug.Log("Left"); ballSpeed.x *= -1; } if (rectOverlaps(ballTransform, wallRight)) { //Debug.Log("Right"); ballSpeed.x *= -1; } if (rectOverlaps(ballTransform, wallTop)) { //Debug.Log("Top"); //ballSpeed.y *= -1; ballPos = ballInitPos; Debug.LogError("SEND RESET"); s.ServerSend(new ResetMessage()); state = GameState.START; } if (rectOverlaps(ballTransform, wallBottom)) { //Debug.Log("Bottom"); //ballSpeed.y *= -1; ballPos = ballInitPos; Debug.LogError("SEND RESET"); s.ServerSend(new ResetMessage()); state = GameState.START; } if (rectOverlaps(ballTransform, clientTransform)) { ballSpeed.y *= -1; } if (rectOverlaps(ballTransform, serverTransform)) { ballSpeed.y *= -1; } ballPos += ballSpeed; ball.transform.position = ballPos; break; } }
void Update() { // Do nothing if we don't connected if (GameState._Room == null) { return; } // Fetch user info and display _HealthBar.value = ((User)GetGameEntity(GameState._Room.SessionId)._Entity).health; if (_HealthBar.value > 0) { MovementMessage data = new MovementMessage(); if (IsMovementHandle()) { data.stateNum = GameState.CurrentCommand++; Debug.Log(GameState._Room.SessionId); Vector3 playerPos = GetGameEntity(GameState._Room.SessionId).obj.transform.position; data.x = playerPos.x + GameState.HeroVelocity.x; data.y = playerPos.y + GameState.HeroVelocity.y; data.z = playerPos.z + GameState.HeroVelocity.z; SpeculativeMovement(GameState.HeroVelocity); Message msg = new Message(); msg.command = "movement"; msg.data = data; GameState._Room.Send(msg); } if (IsProjectileThrown()) { CreateProjectile(Mathf.Atan2(lastProjectileJoystickPos.y, lastProjectileJoystickPos.x)); } } lastProjectileJoystickPos = new Vector2(_ProjectileJoystick.Horizontal, _ProjectileJoystick.Vertical); // Move all entities toward their server position foreach (KeyValuePair <string, GameEntity> entry in GameState.Entities) { if (entry.Value.obj != null && entry.Value._Entity is User && ((User)entry.Value._Entity).health <= 0) { Instantiate(_Explosion, entry.Value.obj.transform.position, Quaternion.identity); Destroy(entry.Value.obj); } if (entry.Value.obj != null && entry.Key != GameState._Room.SessionId) { Vector3 serverPos = new Vector3(entry.Value._Entity.x, entry.Value._Entity.y, entry.Value._Entity.z); if (serverPos != entry.Value.obj.transform.position) { Vector3 interpolatedPos = Vector3.Lerp(entry.Value.obj.transform.position, serverPos, 0.1f); entry.Value.obj.transform.position = interpolatedPos; } } } }
void Update() { if (goingRight) { pos = clientPlayer.transform.position; pos.x += Time.deltaTime * speed; clientPlayer.transform.position = pos; MovementMessage mv = new MovementMessage(); mv.type = MessageType.CLIENT; mv.x = pos.x; mv.y = pos.y; mv.frequency = Time.time; c.ClientSend(mv); } if (goingLeft) { pos = clientPlayer.transform.position; pos.x -= Time.deltaTime * speed; clientPlayer.transform.position = pos; MovementMessage mv = new MovementMessage(); mv.type = MessageType.CLIENT; mv.x = pos.x; mv.y = pos.y; mv.frequency = Time.time; c.ClientSend(mv); } // Messages switch (c.received.type) { case MessageType.NONE: break; case MessageType.SERVER: { MovementMessage mm = (MovementMessage)c.received; serverPlayer.transform.position = new Vector3(mm.x, mm.y); } break; case MessageType.BALL: { MovementMessage mm = (MovementMessage)c.received; startBallPos = ball.transform.position; endBallPos = new Vector3(mm.x, mm.y); frequency = mm.frequency; timeStartedLerping = Time.time; } break; case MessageType.RESET: { Debug.LogError("RESET BALL POS"); } break; default: Debug.Log("Unhandled message type " + c.received.type); break; } c.received.OnRead(); // Always set a message to read on recieved // State switch (state) { case GameState.STOP: if (c.Connected()) { state = GameState.START; } break; case GameState.START: //Start c.ClientSend(new StartMessage()); Debug.LogError("CLIENT SENT START"); state = GameState.GAME; break; case GameState.GAME: break; } // Lerp float lerpPercentage = (Time.time - timeStartedLerping) / frequency; //Debug.Log(string.Format("lerpPercent[{0}] = (time[{1}] - tS[{2}]) / tTRG[{3}]", lerpPercentage, Time.time, timeStartedLerping, frequency)); ball.transform.position = Vector3.Lerp(startBallPos, endBallPos, lerpPercentage); }
public virtual void onMovement(MovementMessage message) { }
public void registerMovement(String idString, String movementType) { //System.Console.WriteLine("Register movement type: " + movementType); if (movementType.Equals(GameConstants.PLAYER_MOVEMENT_RIGHT_MSG)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); destinationPosition.X = player.objectPosition.X + GameConstants.PLAYER_AMOUNT_MOVED_PER_KEYPRESS; destinationPosition.Y = player.objectPosition.Y; message.objectId = GameConstants.PLAYER_OBJECT_ID; message.messageTypeId = movementType; message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_MOVEMENT; if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message to movement list"); movementList.Add(message.objectId, message); } } else if (movementType.Equals(GameConstants.PLAYER_MOVEMENT_LEFT_MSG)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); destinationPosition.X = player.objectPosition.X - GameConstants.PLAYER_AMOUNT_MOVED_PER_KEYPRESS; destinationPosition.Y = player.objectPosition.Y; message.objectId = GameConstants.PLAYER_OBJECT_ID; message.messageTypeId = movementType; message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_MOVEMENT; if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message to movement list"); movementList.Add(message.objectId, message); } } else if (movementType.Equals(GameConstants.PLAYER_CHANGE_CLOTHES_MSG)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); destinationPosition.X = player.objectPosition.X; destinationPosition.Y = player.objectPosition.Y; message.objectId = GameConstants.PLAYER_OBJECT_ID; message.messageTypeId = movementType; message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_MOVEMENT; if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message to movement list"); movementList.Add(message.objectId, message); } } else if (movementType.Equals(GameConstants.PLAYER_INITIAL_JUMP_MSG)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); destinationPosition.X = player.objectPosition.X; destinationPosition.Y = player.objectPosition.Y - GameConstants.PLAYER_JUMP_HEIGHT; message.objectId = GameConstants.PLAYER_OBJECT_ID; message.messageTypeId = movementType; message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_JUMP; MovementMessage oldMessage = (MovementMessage)getMessageFromListByKey(GameConstants.PLAYER_OBJECT_ID); //if was walking and switching to jump... if (movementList.Contains(message.objectId)) { if (oldMessage != null && (oldMessage.messageTypeId.Equals(GameConstants.PLAYER_MOVEMENT_RIGHT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_MOVEMENT_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_CYCLE_JUMP_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_RIGHT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MOVING_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MOVING_RIGHT_MSG))) { movementList.Remove(oldMessage.objectId); } } if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message: " + message.messageTypeId + " to movement list"); movementList.Add(message.objectId, message); } } else if (movementType.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_RIGHT_MSG)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); destinationPosition.X = player.objectPosition.X + GameConstants.PLAYER_MAGNIFIED_RATE_OF_MOVEMENT; destinationPosition.Y = player.objectPosition.Y - GameConstants.PLAYER_JUMP_HEIGHT; message.objectId = GameConstants.PLAYER_OBJECT_ID; message.messageTypeId = movementType; message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_JUMP; MovementMessage oldMessage = (MovementMessage)getMessageFromListByKey(GameConstants.PLAYER_OBJECT_ID); //if was walking and switching to jump... if (movementList.Contains(message.objectId)) { if (oldMessage != null && (oldMessage.messageTypeId.Equals(GameConstants.PLAYER_MOVEMENT_RIGHT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_MOVEMENT_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_CYCLE_JUMP_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_RIGHT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MOVING_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MOVING_RIGHT_MSG))) { movementList.Remove(oldMessage.objectId); } } if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message: " + message.messageTypeId + " to movement list"); movementList.Add(message.objectId, message); } } else if (movementType.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_LEFT_MSG)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); destinationPosition.X = player.objectPosition.X - GameConstants.PLAYER_MAGNIFIED_RATE_OF_MOVEMENT; destinationPosition.Y = player.objectPosition.Y - GameConstants.PLAYER_JUMP_HEIGHT; message.objectId = GameConstants.PLAYER_OBJECT_ID; message.messageTypeId = movementType; message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_JUMP; MovementMessage oldMessage = (MovementMessage)getMessageFromListByKey(GameConstants.PLAYER_OBJECT_ID); //if was walking and switching to jump... if (movementList.Contains(message.objectId)) { if (oldMessage != null && (oldMessage.messageTypeId.Equals(GameConstants.PLAYER_MOVEMENT_RIGHT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_MOVEMENT_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_CYCLE_JUMP_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_RIGHT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MOVING_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MOVING_RIGHT_MSG))) { movementList.Remove(oldMessage.objectId); } } if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message: " + message.messageTypeId + " to movement list"); movementList.Add(message.objectId, message); } } else if (movementType.Equals(GameConstants.PLAYER_FALL_MSG)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); destinationPosition.X = player.objectPosition.X; destinationPosition.Y = player.objectPosition.Y + GameConstants.PLAYER_FALL_DISTANCE; message.objectId = GameConstants.PLAYER_OBJECT_ID; message.messageTypeId = movementType; message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_JUMP; if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message to movement list"); movementList.Add(message.objectId, message); } } else if (movementType.Equals(GameConstants.PLAYER_FALL_MOVING_LEFT_MSG)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); destinationPosition.X = player.objectPosition.X - GameConstants.PLAYER_MAGNIFIED_RATE_OF_MOVEMENT; destinationPosition.Y = player.objectPosition.Y + GameConstants.PLAYER_FALL_DISTANCE; message.objectId = GameConstants.PLAYER_OBJECT_ID; message.messageTypeId = movementType; message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_JUMP; if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message to movement list"); movementList.Add(message.objectId, message); } } else if (movementType.Equals(GameConstants.PLAYER_FALL_MOVING_RIGHT_MSG)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); destinationPosition.X = player.objectPosition.X + GameConstants.PLAYER_MAGNIFIED_RATE_OF_MOVEMENT; destinationPosition.Y = player.objectPosition.Y + GameConstants.PLAYER_FALL_DISTANCE; message.objectId = GameConstants.PLAYER_OBJECT_ID; message.messageTypeId = movementType; message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_JUMP; if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message to movement list"); movementList.Add(message.objectId, message); } } else if (movementType.Equals(GameConstants.PLAYER_ATTACK_MSG)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); destinationPosition.X = player.objectPosition.X; destinationPosition.Y = player.objectPosition.Y; message.objectId = GameConstants.PLAYER_OBJECT_ID; message.messageTypeId = movementType; message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_MOVEMENT; MovementMessage oldMessage = (MovementMessage)getMessageFromListByKey(GameConstants.PLAYER_OBJECT_ID); //if was walking and switching to jump... if (movementList.Contains(message.objectId)) { if (oldMessage != null && (oldMessage.messageTypeId.Equals(GameConstants.PLAYER_MOVEMENT_RIGHT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_MOVEMENT_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_CYCLE_JUMP_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MSG))) { movementList.Remove(oldMessage.objectId); } } if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message: " + message.messageTypeId + " to movement list"); movementList.Add(message.objectId, message); } } //handle jump modifiers else if (movementType.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_LEFT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_RIGHT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_CYCLE_JUMP_MOVING_LEFT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_CYCLE_JUMP_MOVING_RIGHT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_FALL_MOVING_LEFT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_FALL_MOVING_RIGHT_MODIFIER)) { Player player = game.getSceneGraph().getPlayer(idString); MovementMessage message = new MovementMessage(); Vector2 destinationPosition = new Vector2(); message.objectId = GameConstants.PLAYER_OBJECT_ID; if (movementList.Contains(message.objectId)) { MovementMessage containedMessage = getMessageFromListByKey(message.objectId); destinationPosition.Y = containedMessage.destinationPosition.Y; if (movementType.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_LEFT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_CYCLE_JUMP_MOVING_LEFT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_FALL_MOVING_LEFT_MODIFIER)) { destinationPosition.X = player.objectPosition.X - GameConstants.PLAYER_MAGNIFIED_RATE_OF_MOVEMENT; } else if (movementType.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_RIGHT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_CYCLE_JUMP_MOVING_RIGHT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_FALL_MOVING_RIGHT_MODIFIER)) { destinationPosition.X = player.objectPosition.X + GameConstants.PLAYER_MAGNIFIED_RATE_OF_MOVEMENT; } message.messageTypeId = containedMessage.messageTypeId; } else { if (movementType.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_LEFT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_CYCLE_JUMP_MOVING_LEFT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_FALL_MOVING_LEFT_MODIFIER)) { destinationPosition.X = player.objectPosition.X - GameConstants.PLAYER_MAGNIFIED_RATE_OF_MOVEMENT; } else if (movementType.Equals(GameConstants.PLAYER_INITIAL_JUMP_MOVING_RIGHT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_CYCLE_JUMP_MOVING_RIGHT_MODIFIER) || movementType.Equals(GameConstants.PLAYER_FALL_MOVING_RIGHT_MODIFIER)) { destinationPosition.X = player.objectPosition.X + GameConstants.PLAYER_MAGNIFIED_RATE_OF_MOVEMENT; } destinationPosition.Y = player.objectPosition.Y - GameConstants.PLAYER_JUMP_HEIGHT; message.messageTypeId = movementType; } message.destinationPosition = destinationPosition; message.rateOfMovement = GameConstants.PLAYER_RATE_OF_JUMP; MovementMessage oldMessage = (MovementMessage)getMessageFromListByKey(GameConstants.PLAYER_OBJECT_ID); //if was walking and switching to jump... if (movementList.Contains(message.objectId)) { if (oldMessage != null && (oldMessage.messageTypeId.Equals(GameConstants.PLAYER_MOVEMENT_RIGHT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_MOVEMENT_LEFT_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_INITIAL_JUMP_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_CYCLE_JUMP_MSG) || oldMessage.messageTypeId.Equals(GameConstants.PLAYER_FALL_MSG))) { movementList.Remove(oldMessage.objectId); } } if (!movementList.Contains(message.objectId)) { //System.Console.WriteLine("Adding message: " + message.messageTypeId + " to movement list"); movementList.Add(message.objectId, message); } } }
public void SetMovementMessage(MovementMessage msg) { if (m_currMsg == msg) return; m_currMsg = msg; m_CurrMovementFunction = m_MovementDelegates[(int)m_currMsg]; //Debug.Log(msg); }
/// <exception cref="T:System.Exception">A delegate callback throws an exception.</exception> private void OnMessageReceivedEvent(Message message) { _logger.Information(Constants.LogMessageTemplate, message.MessageId, GetType().Name, "OnMessageReceivedEvent", "Message received. Sending on."); switch (message.MessageTypes) { case Enums.MessageTypes.Movement: { _logger.Information(Constants.LogMessageTemplate, message.MessageId, GetType().Name, "OnMessageReceivedEvent", "Movement type detected. Sending on."); var item = message.MessageList.Intersect(Constants.MovementItems).FirstOrDefault(); var movement = new MovementMessage(message.MessageId, item); _messageHub.Publish(movement); //MovementEventHandler?.Invoke(this, // new MovementTypeEventArgs( // new Exception("Movement Handler: Error."), // false, // "Movement Sent Event.", // args.SentMessage.MessageList)); //MovementEventHandler(this, // new MovementTypeEventArgs( // new Exception("Movement Handler: Error."), // false, // "Movement Sent Event.", // args.SentMessage.MessageList)); break; } case Enums.MessageTypes.Action: { _logger.Information(Constants.LogMessageTemplate, message.MessageId, GetType().Name, "OnMessageReceivedEvent", "Action type detected. Sending on."); var item = message.MessageList.Intersect(Constants.ActionItems).FirstOrDefault(); var onObject = Constants.ObjectItems.Where(x => x.Contains("Door")).Select(x => x).FirstOrDefault(); var action = new ActionMessage(message.MessageId, item, onObject, string.Empty); _messageHub.Publish(action); //ActionEventHandler(this, // new ActionTypeEventArgs( // new Exception("Action Handler: Error."), // false, // "Action Sent Event.", // args.SentMessage.MessageList)); break; } case Enums.MessageTypes.Object: { _logger.Information(Constants.LogMessageTemplate, message.MessageId, GetType().Name, "OnMessageReceivedEvent", "Object type detected. Sending on."); var item = message.MessageList.Intersect(Constants.ObjectItems).FirstOrDefault(); var onObject = Constants.ActionItems.Where(x => x.Contains("Open")).Select(x => x).FirstOrDefault(); var action = new ActionMessage(message.MessageId, item, onObject, string.Empty); _messageHub.Publish(action); //ObjectEventHandler(this, // new ObjectTypeEventArgs( // new Exception("Object Handler: Error."), // false, // "Object Sent Event.", // args.SentMessage.MessageList)); break; } case Enums.MessageTypes.Monster: { _logger.Information(Constants.LogMessageTemplate, message.MessageId, GetType().Name, "OnMessageReceivedEvent", "Monster type detected. Sending on."); var item = message.MessageList.Intersect(Constants.MonsterItems).FirstOrDefault(); var onMonster = Constants.MonsterItems.Where(x => x.Contains("Orc")).Select(x => x).FirstOrDefault(); var action = new ActionMessage(message.MessageId, item, string.Empty, onMonster); _messageHub.Publish(action); //MonsterEventHandler(this, // new MonsterTypeEventArgs( // new Exception("Monster Handler: Error."), // false, // "Monster Sent Event.", // args.SentMessage.MessageList)); break; } default: { _logger.Error(Constants.LogMessageTemplate, message.MessageId, GetType().Name, "OnMessageReceivedEvent", "Unknown type detected."); throw new ArgumentOutOfRangeException("Unknown type detected."); } } }