Exemplo n.º 1
0
            public List <Character> FindKillTarget(Character traitor, CharacterFilter filter, int count = -1, float percentage = -1f)
            {
                if (traitor == null)
                {
                    return(null);
                }

                List <Character> validCharacters = Character.CharacterList.FindAll(c => c.TeamID == traitor.TeamID &&
                                                                                   c != traitor && !c.IsDead &&
                                                                                   (filter == null || filter(c)));

                int targetCount = 1;

                if (count > 0)
                {
                    targetCount = count;
                }
                else if (percentage > 0f)
                {
                    targetCount = (int)Math.Max(1, Math.Floor(validCharacters.Count * percentage));
                }

                List <Character> targetCharacters = new List <Character>();

                if (validCharacters.Count > 0)
                {
                    for (int i = 0; i < targetCount; i++)
                    {
                        if (validCharacters.Count == 0)
                        {
                            break;
                        }
                        Character character = validCharacters[TraitorManager.RandomInt(validCharacters.Count)];
                        targetCharacters.Add(character);
                        validCharacters.Remove(character);
                    }
                    return(targetCharacters);
                }

#if ALLOW_SOLO_TRAITOR
                targetCharacters.Add(traitor);
                return(targetCharacters);
#else
                return(null);
#endif
            }
Exemplo n.º 2
0
            public Character FindKillTarget(Character traitor, CharacterFilter filter)
            {
                if (traitor == null)
                {
                    return(null);
                }

                List <Character> validCharacters = Character.CharacterList.FindAll(c =>
                                                                                   c.TeamID == traitor.TeamID &&
                                                                                   c != traitor &&
                                                                                   !c.IsDead &&
                                                                                   (filter == null || filter(c)));

                if (validCharacters.Count > 0)
                {
                    return(validCharacters[Random(validCharacters.Count)]);
                }

#if ALLOW_SOLO_TRAITOR
                return(traitor);
#else
                return(null);
#endif
            }
Exemplo n.º 3
0
		Character GetCharacter(CharacterFilter filter)
		{
			if (filter == null) throw new ArgumentNullException("filter");

			Character found = null;
			foreach (Entity entity in Engine.Entities)
			{
				Character character = entity as Character;
				if (character == null || HelperCheck(character) == true) continue;

				if (filter(found, character) == true) found = character;
			}

			return found;
		}
Exemplo n.º 4
0
 public async Task <IActionResult> GetAll([FromQuery] CharacterFilter filter)
 {
     return(Ok(await _characterService.GetAll(filter)));
 }
Exemplo n.º 5
0
        public ActionResult GetFiltered(CharacterFilter filter)
        {
            var characters = _dbCharacterService.FindAll();
            var total      = characters.Count();

            // Order
            if (filter.Sorting == "Id")
            {
                if (filter.SortingDirection == SortingDirection.Ascending)
                {
                    characters = characters.OrderBy(character => character.Id);
                }
                else
                {
                    characters = characters.OrderByDescending(character => character.Id);
                }
            }
            else if (filter.Sorting == "Name")
            {
                if (filter.SortingDirection == SortingDirection.Ascending)
                {
                    characters = characters.OrderBy(character => character.Name);
                }
                else
                {
                    characters = characters.OrderByDescending(character => character.Name);
                }
            }
            else
            {
                characters = characters.OrderBy(character => character.Name);
            }

            var result = characters.Where(character =>
            {
                var result = true;
                if (string.IsNullOrEmpty(filter.Name) == false)
                {
                    if (character.Name.ToLower().Contains(filter.Name.ToLower()) == false)
                    {
                        result = false;
                    }
                }
                if (filter.Tags != null && filter.Tags.Count > 0)
                {
                    foreach (var tag in filter.Tags)
                    {
                        if (character.Tags.Any(charTag => charTag.Id == tag) == false)
                        {
                            result = false;
                        }
                    }
                }

                return(result);
            });

            var filtered = result.Count();

            if (filter.Skip.HasValue)
            {
                result = result.Skip(filter.Skip.Value);
            }
            if (filter.Take.HasValue)
            {
                result = result.Take(filter.Take.Value);
            }

            return(Ok(new CharacterFiltered()
            {
                Models = result.ToList(),
                Filtered = filtered,
                Total = total
            }));
        }