1 package nl.tudelft.goal.ut3.selector;
2
3 import java.util.Collection;
4 import java.util.List;
5 import java.util.Map;
6
7 import cz.cuni.amis.pogamut.base.utils.math.DistanceUtils;
8 import cz.cuni.amis.pogamut.base3d.worldview.object.ILocated;
9 import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;
10 import cz.cuni.amis.pogamut.ut2004.communication.messages.ItemType;
11 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.Player;
12 import cz.cuni.amis.pogamut.ut3.communication.messages.UT3ItemType;
13 import cz.cuni.amis.utils.IFilter;
14 import cz.cuni.amis.utils.collections.MyCollections;
15
16
17
18
19
20
21
22 public final class NearestFriendlyWithLinkGun extends ContextSelector {
23
24
25
26
27 @Override
28 public String toString() {
29 return "NearestFriendlyWithLinkGun";
30 }
31
32 @Override
33 public ILocated select(Collection<? extends ILocated> targets) {
34
35
36 Map<UnrealId, Player> friends = modules.getPlayers().getVisibleFriends();
37 List<Player> friendsWithLinkGun = MyCollections.getFiltered(friends.values(), new IFilter<Player>() {
38
39 @Override
40 public boolean isAccepted(Player p) {
41 return UT3ItemType.LINK_GUN.equals(UT3ItemType.getItemType(p.getWeapon()));
42 }
43 });
44
45 return DistanceUtils.getNearest(friendsWithLinkGun, modules.getInfo().getLocation());
46 }
47
48 }