コード例 #1
0
        public void CreatureAppear(Creature creature)
        {
            var builder = new PacketBuilder();

            builder.AddPacketId(Packets.SendToClient.ItemOrCreatureAppearOnTile);
            builder.AddPosition(creature.Position);
            builder.AddCreature(_player, creature);
            builder.Send(_player);
        }
コード例 #2
0
        private void AddTileDescriptionToBuilder(PacketBuilder builder, Tile tile, bool isStep)
        {
            var count = 0;

            if (tile.Ground != null)
            {
                builder.AddItem(tile.Ground);
                count++;
            }

            if (tile.Items?.Count > 0)
            {
                for (int i = tile.Items.Count - 1; i > -1 && count < 10; i--)
                {
                    builder.AddItem(tile.Items[i]);
                    count++;
                }
            }

            var creatures = IoC.Game.GetCreaturesOnTile(tile.Position);

            if (creatures == null)
            {
                return;
            }
            for (int i = 0; i < creatures.Count && count < 10; i++)
            {
                if (creatures[i].Id == _player.Id && isStep)
                {
                    builder.AddPlayerMove(_player);
                }
                else
                {
                    builder.AddCreature(_player, creatures[i]);
                }
                count++;
            }
        }