using System; using System.Collections.Generic; using WingsEmu.DTOs.Maps; using WingsEmu.DTOs.ServerDatas; using WingsEmu.Game._ECS; using WingsEmu.Game._ECS.Systems; using WingsEmu.Game.Entities; using WingsEmu.Game.Helpers.Damages; using WingsEmu.Game.Items; using WingsEmu.Game.Miniland; using WingsEmu.Game.Networking; using WingsEmu.Game.Portals; using WingsEmu.Packets.Enums; namespace WingsEmu.Game.Maps; public interface IEntityIdManager { int GenerateEntityId(); } public interface IMapInstance : IMonsterSystem, IBroadcaster, ITickProcessable, ICharacterSystem, IMateSystem, IDropSystem, INpcSystem, IBattleSystem, IEntityIdManager { Guid Id { get; } MapInstanceType MapInstanceType { get; } public IReadOnlyList Grid { get; } public int Width { get; } public int Height { get; } public int MapId { get; } public int Music { get; } public int MapVnum { get; } public int MapNameId { get; } byte MapIndexX { get; set; } byte MapIndexY { get; set; } bool IsDance { get; set; } short? MapMusic { get; set; } bool IsPvp { get; set; } bool ShopAllowed { get; } bool AIDisabled { get; set; } List Portals { get; } List TimeSpacePortals { get; } List MapDesignObjects { get; } public Position GetRandomPosition(); IReadOnlyList GetEntitiesOnMapPackets(bool onlyItemsAndPortals = false); bool HasMapFlag(MapFlags flags); MapItem PutItem(ushort amount, ref GameItemInstance inv, IClientSession session); void DespawnMonster(IMonsterEntity monsterEntity); /// /// Returns the characters in range /// /// /// /// /// IReadOnlyList GetNonMonsterBattleEntitiesInRange(Position pos, short distance); IReadOnlyList GetNonMonsterBattleEntitiesInRange(Position pos, short distance, Func predicate); IReadOnlyList GetNonMonsterBattleEntities(); IReadOnlyList GetNonMonsterBattleEntities(Func predicate); IReadOnlyList GetBattleEntities(Func predicate); IReadOnlyList GetBattleEntitiesInRange(Position pos, short distance); IReadOnlyList GetClosestBattleEntitiesInRange(Position pos, short distance); IBattleEntity GetBattleEntity(VisualType type, long id); void RegisterSession(IClientSession session); void UnregisterSession(IClientSession session); void LoadPortals(IEnumerable value); void Initialize(DateTime date); void Destroy(); }