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);
            }
        }
示例#2
0
        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);
        }