private void HandlePowerupObtain(PowerupRecievedPacket obj) { var playerToPowerup = ServiceManager.RetrieveEntityByID(obj.EntityID); var recievType = obj.Powerup.GetType(); // Check if the player is null if (playerToPowerup != null) { var toPoweurp = (MovementModifierComponent)playerToPowerup.GetComponent(typeof(MovementModifierComponent)); if (recievType == typeof(MovementModifierComponent)) { toPoweurp.Strength += obj.Powerup.Strength; } } }
/// <summary> /// Handles movement for a particular instance /// </summary> public void HandleMovement(NotifyMovementPacket notifyMovementPacket) { var sender = RetrieveSender(notifyMovementPacket); if (sender == null) { return; } var transformComponent = (TransformComponent)sender.GetComponent(typeof(TransformComponent)); transformComponent.LastLocalPosition = transformComponent.LocalPosition; transformComponent.LocalPosition = notifyMovementPacket.Location; transformComponent.ServerPosition = notifyMovementPacket.Location; foreach (var player in _simulationState.Entities) { // Grab the connection var playerComponent = (PlayerComponent)player.GetComponent(typeof(PlayerComponent)); if (playerComponent == null) { continue; } var connection = playerComponent.Connection; if (connection != notifyMovementPacket.Sender) { var broadcastPacket = new MovementRecievedPacket(notifyMovementPacket.Velocity, notifyMovementPacket.Location, sender.ID); if (connection != null) { ClientNetworkManager.Instance.SendPacket(broadcastPacket, connection); } } foreach (var powerup in _simulationState.Entities) { if (powerup.HasComponent(typeof(PowerUpCollectionComponent))) { var transformPoweurp = (TransformComponent)powerup.GetComponent(typeof(TransformComponent)); Rectangle playerBox = new Rectangle((int)(transformComponent.LocalPosition.X + 13), (int)(transformComponent.LocalPosition.Y + 45), 24, 20); Rectangle powerupBox = new Rectangle((int)transformPoweurp.LocalPosition.X, (int)transformPoweurp.LocalPosition.Y, 32, 32); if (playerBox.Intersects(powerupBox)) { // Kill thy entity _serviceContainer.RemoveEntity(powerup); // Increase bombs var power = (PowerUpCollectionComponent)powerup.GetComponent(typeof(PowerUpCollectionComponent)); var powerType = power.PowerUps[0]; var powerValue = power.PowerUps[0].Strength; var playerPower = (PowerUpComponent)player.GetComponent(powerType.GetType()); playerPower.Strength += powerValue; // Notify the player of their new powerup var packet = new PowerupRecievedPacket(powerType, player.ID); ClientNetworkManager.Instance.SendPacket(packet, notifyMovementPacket.Sender); } } } } // Now that you've moved, should check to see if any poweurps need to be awarded }