public Task <IMonsterEntity> CreateMonsterEntityAsync(MapMonsterDto mapMonster) { // todo implement that var skills = new List <NpcMonsterSkillDto>(); return(Task.FromResult(new MonsterEntity(mapMonster, skills) as IMonsterEntity)); }
public void DtoToGoMappingWorks() { var monsterDto = new MapMonsterDto(); var monsterGo = _mapper.Map <MapMonster>(monsterDto); Assert.IsNotNull(monsterGo); }
public void DtoToEntityMappingWorks() { var monsterDto = new MapMonsterDto(); var monsterEntity = _mapper.Map <Database.Entities.MapMonster>(monsterDto); Assert.IsNotNull(monsterEntity); }
public void DtoToGoMappingWorks() { var monsterDto = new MapMonsterDto(); var monsterGo = monsterDto.Adapt <GameObject.MapMonster>(); Assert.IsNotNull(monsterGo); }
public MonsterEntity(MapMonsterDto dto) : base(EntityType.Monster) { Components = new Dictionary <Type, IComponent> { { typeof(VisibilityComponent), new VisibilityComponent(this) { IsVisible = true } }, { typeof(BattleComponent), new BattleComponent(this) { Hp = dto.NpcMonster.MaxHp, HpMax = dto.NpcMonster.MaxHp, Mp = dto.NpcMonster.MaxMp, MpMax = dto.NpcMonster.MaxMp } }, { typeof(MovableComponent), new MovableComponent(this) { Actual = new Position <short> { X = dto.MapX, Y = dto.MapY }, Destination = new Position <short> { X = dto.MapX, Y = dto.MapY } } }, { typeof(NpcMonsterComponent), new NpcMonsterComponent(this, dto) } }; }
public NpcMonsterComponent(IEntity entity, MapMonsterDto dto) { Entity = entity; Vnum = dto.NpcMonsterId; MapNpcMonsterId = dto.Id; MapId = dto.MapId; IsAggressive = !dto.NpcMonster.NoAggresiveIcon; }
public void InsertMapMonster(List <string[]> packetList) { var monsterCounter = 0; short map = 0; var mobMvPacketsList = new List <int>(); var monsters = new List <MapMonsterDto>(); foreach (var currentPacket in packetList.Where(o => o[0].Equals("mv") && o[1].Equals("3"))) { if (!mobMvPacketsList.Contains(Convert.ToInt32(currentPacket[2]))) { mobMvPacketsList.Add(Convert.ToInt32(currentPacket[2])); } } foreach (var currentPacket in packetList.Where(o => o[0].Equals("in") || o[0].Equals("at"))) { if (currentPacket.Length > 5 && currentPacket[0] == "at") { map = short.Parse(currentPacket[2]); continue; } if (currentPacket.Length <= 7 || currentPacket[0] != "in" || currentPacket[1] != "3") { continue; } var monster = new MapMonsterDto { MapId = map, VNum = short.Parse(currentPacket[2]), MapMonsterId = int.Parse(currentPacket[3]), MapX = short.Parse(currentPacket[4]), MapY = short.Parse(currentPacket[5]), Direction = (byte)(currentPacket[6] == string.Empty ? 0 : byte.Parse(currentPacket[6])), IsDisabled = false }; monster.IsMoving = mobMvPacketsList.Contains(monster.MapMonsterId); if (DaoFactory.NpcMonsterDao.FirstOrDefault(s => s.NpcMonsterVNum.Equals(monster.VNum)) == null || DaoFactory.MapMonsterDao.FirstOrDefault(s => s.MapMonsterId.Equals(monster.MapMonsterId)) != null || monsters.Count(i => i.MapMonsterId == monster.MapMonsterId) != 0) { continue; } monsters.Add(monster); monsterCounter++; } IEnumerable <MapMonsterDto> mapMonsterDtos = monsters; DaoFactory.MapMonsterDao.InsertOrUpdate(mapMonsterDtos); _logger.Information(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.MONSTERS_PARSED), monsterCounter); }
public MonsterEntity(MapMonsterDto dto, IEnumerable <NpcMonsterSkillDto> skills) : base(VisualType.Monster, dto.Id) { Movable = new MovableComponent(this, dto.IsMoving ? dto.NpcMonster.Speed : (byte)0) { Actual = new Position <short> { X = dto.MapX, Y = dto.MapY }, Destination = new Position <short> { X = dto.MapX, Y = dto.MapY } }; Speed = (byte)(dto.IsMoving ? dto.NpcMonster.Speed : 0); Level = dto.NpcMonster.Level; Hp = dto.NpcMonster.MaxHp; HpMax = dto.NpcMonster.MaxHp; Mp = dto.NpcMonster.MaxMp; MpMax = dto.NpcMonster.MaxMp; BasicArea = dto.NpcMonster.BasicArea; SkillComponent = new SkillComponent(this, skills); NpcMonster = dto.NpcMonster; MapMonster = dto; _visibility = new VisibilityComponent(this); Components = new Dictionary <Type, IComponent> { { typeof(VisibilityComponent), _visibility }, { typeof(MovableComponent), Movable }, { typeof(NpcMonsterComponent), new NpcMonsterComponent(this, dto) }, { typeof(SkillComponent), SkillComponent } }; #region Stat Defence = dto.NpcMonster.CloseDefence; DefenceDodge = dto.NpcMonster.DefenceDodge; DistanceDefence = dto.NpcMonster.DistanceDefence; DistanceDefenceDodge = dto.NpcMonster.DistanceDefenceDodge; MagicalDefence = dto.NpcMonster.MagicDefence; MinHit = dto.NpcMonster.DamageMinimum; MaxHit = dto.NpcMonster.DamageMaximum; HitRate = (byte)dto.NpcMonster.Concentrate; CriticalChance = dto.NpcMonster.CriticalChance; CriticalRate = dto.NpcMonster.CriticalRate; #endregion Stat }
public async Task InsertMapMonsterAsync(List <string[]> packetList) { short map = 0; var mobMvPacketsList = packetList.Where(o => o[0].Equals("mv") && o[1].Equals("3")) .Select(currentPacket => Convert.ToInt32(currentPacket[2])).Distinct().ToList(); var monsters = new List <MapMonsterDto>(); var mapMonsterdb = _mapMonsterDao.LoadAll().ToList(); var npcMonsterdb = _npcMonsterDao.LoadAll().ToList(); foreach (var currentPacket in packetList.Where(o => (o.Length > 7 && o[0].Equals("in") && (o[1] == "3") && long.Parse(o[3]) <= 20000) || o[0].Equals("at"))) { if ((currentPacket.Length > 5) && (currentPacket[0] == "at")) { map = short.Parse(currentPacket[2]); continue; } var monster = new MapMonsterDto { MapId = map, VNum = short.Parse(currentPacket[2]), MapMonsterId = int.Parse(currentPacket[3]), MapX = short.Parse(currentPacket[4]), MapY = short.Parse(currentPacket[5]), Direction = (byte)(currentPacket[6] == string.Empty ? 0 : byte.Parse(currentPacket[6])), IsDisabled = false, IsMoving = mobMvPacketsList.Contains(int.Parse(currentPacket[3])) }; if ((npcMonsterdb.FirstOrDefault(s => s.NpcMonsterVNum.Equals(monster.VNum)) == null) || (mapMonsterdb.FirstOrDefault(s => s.MapMonsterId.Equals(monster.MapMonsterId)) != null) || (monsters.Count(i => i.MapMonsterId == monster.MapMonsterId) != 0)) { continue; } monsters.Add(monster); } await _mapMonsterDao.TryInsertOrUpdateAsync(monsters).ConfigureAwait(false); _logger.Information(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.MONSTERS_PARSED), monsters.Count); }