public void HandleBombRequest(RequestPlaceBombPacket request) { var sender = RetrieveSender(request); if (sender == null) { return; } var transformComponent = (TransformComponent)sender.GetComponent(typeof(TransformComponent)); var bombModifier = (BombCountModifierComponent)sender.GetComponent(typeof(BombCountModifierComponent)); if (bombModifier.Amount == bombModifier.CurrentBombCount) { return; } else { bombModifier.CurrentBombCount++; } Vector2 location = transformComponent.LastLocalPosition; location = request.CurrentPosition; location += transformComponent.Size * new Vector2(0.5f, 0.875f); // TODO: Remove hardcoded 32s location = new Vector2(32 * (int)(location.X / 32), 32 * (int)(location.Y / 32)); var bomb = EntityFactory.CreateBomb(location, sender); AddEntity(bomb); }
private void HandleBombRequest(RequestPlaceBombPacket requestPlaceBombPacket) { // Find the session var session = GetUserSession(requestPlaceBombPacket.Sender); // If the session is valid if (session != null) { session.HandleBombRequest(requestPlaceBombPacket); } }
public override void HandleInput(InputState inputState) { // Get the transform component var transformComponent = (TransformComponent)_player.GetComponent(typeof(TransformComponent)); var bombModifier = (BombCountModifierComponent)_player.GetComponent(typeof(BombCountModifierComponent)); const int ABSOLUTE_SPEED = 3; // We adjust instant velocity as needed here) Vector2 newVector = Vector2.Zero; if (inputState.NotMoving()) { newVector = Vector2.Zero; } if (inputState.MoveLeftIssued()) { newVector -= new Vector2(ABSOLUTE_SPEED * 1, 0); } if (inputState.MoveRightIssued()) { newVector += new Vector2(ABSOLUTE_SPEED * 1, 0); } if (inputState.MoveUpIssued()) { newVector -= new Vector2(0, ABSOLUTE_SPEED * 1); } if (inputState.MoveDownIssued()) { newVector += new Vector2(0, ABSOLUTE_SPEED * 1); } if (newVector != transformComponent.Velocity) { transformComponent.Velocity = newVector; } if (inputState.PlaceBomb()) { //TODO: Real validation, for now it's ok var packet = new RequestPlaceBombPacket(transformComponent.LocalPosition); NetworkManager.Instance.SendPacket(packet); // Don't do anything if they can't place any more bombs if (bombModifier.Amount == bombModifier.CurrentBombCount) { return; } else { bombModifier.CurrentBombCount++; } } }