コード例 #1
0
        protected virtual void SendEntityVisibilityPackets(Tile newTile, Tile previousTile)
        {
            HashSet <WorldEntity> oldViewers = null;

            if (previousTile != null)
            {
                oldViewers = previousTile.EntitiesViewing;
            }

            var newViewers = new HashSet <WorldEntity>(newTile.EntitiesViewing);

            if (oldViewers != null)
            {
                newViewers.ExceptWith(oldViewers);
            }

            HashSet <PlayerEntity> playerViewers = new HashSet <PlayerEntity>(newViewers.Select(v => v.Owner));
            var ev = new EntityVisibleEvent(this);

            foreach (var viewer in newTile.EntitiesViewing)
            {
                if (playerViewers.Remove(viewer.Owner))
                {
                    viewer.Owner.Send(ev);
                }
            }
        }
コード例 #2
0
ファイル: ServerListener.cs プロジェクト: Ziden/Lisergy
        public void EntityVisible(EntityVisibleEvent ev)
        {
            var owner        = _game.GetWorld().GetOrCreateClientPlayer(ev.Entity.OwnerID);
            var tile         = (ClientTile)_game.GetWorld().GetTile(ev.Entity.X, ev.Entity.Y);
            var clientEntity = EntityFactory.InstantiateClientEntity(ev.Entity, owner, tile);

            clientEntity.Tile = tile;
            UIManager.PartyUI.DrawAllParties();
        }