1 package cz.cuni.amis.pogamut.udk.communication.messages;
2
3 import java.util.Map;
4
5 import cz.cuni.amis.pogamut.base.communication.worldview.object.IWorldObject;
6 import cz.cuni.amis.pogamut.base.communication.worldview.object.WorldObjectId;
7 import cz.cuni.amis.pogamut.base3d.worldview.object.ILocated;
8 import cz.cuni.amis.pogamut.base3d.worldview.object.IViewable;
9 import cz.cuni.amis.pogamut.base3d.worldview.object.Location;
10 import cz.cuni.amis.pogamut.base3d.worldview.object.Rotation;
11 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.NavPointNeighbourLink;
12 import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;
13
14
15 /**
16 * Synchronous message. NavPoint carries information about UT navigation point -
17 * location, reachability... Also some item can be respawned at this point. Or
18 * some additional information can be stored here (if it is an ambush point, or
19 * sniper point..). Corresponding GameBots message is NAV.
20 */
21 public interface INavPoint extends ILocated, IViewable, IWorldObject {
22
23 /**
24 * A unique Id of this navigation point assigned by the game.
25 */
26 public UnrealId getId();
27
28 /**
29 * Location of navigation point.
30 */
31 public Location getLocation();
32
33 /**
34 * If the point is in the field of view of the bot.
35 */
36 public boolean isVisible();
37
38 /**
39 * If the bot can reach the point directly.
40 */
41 public boolean isReachable();
42
43 /**
44 * Unique Id of the respawned item (the item respawns at this point).
45 */
46 public WorldObjectId getItem();
47
48 /**
49 * What type is this NavPoint. The types are: PathNode, PlayerStart,
50 * InventorySpot and AIMarker. If the type is AIMarker, more attributes
51 * appear in NAV message - see below.
52 */
53 public String getFlag();
54
55 /**
56 * If the type is AIMarker. The rotation the bot should be facing, when
57 * doing the action specified by AIMarker.
58 */
59 public Rotation getRotation();
60
61 /**
62 * Some ambush point, where is good chance to intercept approaching
63 * opponents.
64 */
65 public boolean isRoamingSpot();
66
67 /**
68 * Point good for sniping.
69 */
70 public boolean isSnipingSpot();
71
72 /**
73 * Class of the weapon that should be prefered when using this point for
74 * AIMarker specified action.
75 */
76 public String getPreferedWeapon();
77
78 /**
79 * Retuns map with links to navpoint neighbours. Maps
80 * neighbour-navpoint-UnrealId to neighbour link.
81 */
82 public Map<UnrealId, NavPointNeighbourLink> getNeighbourLinks();
83
84 }