public override void Process(SimulationOwnershipRequest ownershipRequest, Player player) { Log.Debug(ownershipRequest); if (simulationOwnership.TryToAcquire(ownershipRequest.Guid, player)) { // TODO: Distribute ownership in the `SimulationOwnership` class. SimulationOwnershipChange simulationOwnershipChange = new SimulationOwnershipChange(ownershipRequest.Guid, player.Id); playerManager.SendPacketToAllPlayers(simulationOwnershipChange); Log.Debug("Sending: " + simulationOwnershipChange); } }
public List <Entity> AssignForCells(Player player, AbsoluteEntityCell[] added) { List <Entity> assignedEntities = new List <Entity>(); foreach (AbsoluteEntityCell cell in added) { List <Entity> entities = entityData.GetEntities(cell); assignedEntities.AddRange( entities.Where(entity => cell.Level <= entity.Level && simulationOwnership.TryToAcquire(entity.Guid, player))); } return(assignedEntities); }