private void HandleEntityRemove(EntityRemovePacket entityRemovePacket) { Console.WriteLine("Handling"); var entity = ServiceManager.RetrieveEntityByID(entityRemovePacket.EntityID); // If an entity was removed, check if it's blow-up-able var explosiveComponent = (ExplosiveComponent)entity.GetComponent(typeof(ExplosiveComponent)); if (explosiveComponent != null) { // Get the owner var owner = ServiceManager.RetrieveEntityByID(explosiveComponent.OwnerID); var ownerBombModifier = (BombCountModifierComponent)owner.GetComponent(typeof(BombCountModifierComponent)); ownerBombModifier.CurrentBombCount--; } ServiceManager.RemoveEntityByID(entityRemovePacket.EntityID); HandleRemovalBehaviour(entity); }
public new static Packet FromNetBuffer(NetIncomingMessage incomingMessage) { var entityID = incomingMessage.ReadUInt64(); var packet = new EntityRemovePacket(entityID); return(packet); }
void _serviceContainer_EntityRemoved(Entity entity) { var packet = new EntityRemovePacket(entity.ID); 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 != null) { ClientNetworkManager.Instance.SendPacket(packet, connection); } } }