1 package cz.cuni.amis.pogamut.ut2004.communication.messages;
2
3 import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;
4 import java.util.Map;
5
6 import cz.cuni.amis.pogamut.base.communication.worldview.object.IWorldObject;
7 import cz.cuni.amis.pogamut.base.communication.worldview.object.WorldObjectId;
8 import cz.cuni.amis.pogamut.base3d.worldview.object.ILocated;
9 import cz.cuni.amis.pogamut.base3d.worldview.object.IViewable;
10 import cz.cuni.amis.pogamut.base3d.worldview.object.Location;
11 import cz.cuni.amis.pogamut.base3d.worldview.object.Rotation;
12 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPointNeighbourLink;
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 * Unique Id of the respawned item (the item respawns at this point).
40 */
41 public WorldObjectId getItem();
42
43 /**
44 * What type is this NavPoint. The types are: PathNode, PlayerStart,
45 * InventorySpot and AIMarker. If the type is AIMarker, more attributes
46 * appear in NAV message - see below.
47 */
48 public String getFlag();
49
50 /**
51 * If the type is AIMarker. The rotation the bot should be facing, when
52 * doing the action specified by AIMarker.
53 */
54 public Rotation getRotation();
55
56 /**
57 * Some ambush point, where is good chance to intercept approaching
58 * opponents.
59 */
60 public boolean isRoamingSpot();
61
62 /**
63 * Point good for sniping.
64 */
65 public boolean isSnipingSpot();
66
67 /**
68 * Class of the weapon that should be prefered when using this point for
69 * AIMarker specified action.
70 */
71 public String getPreferedWeapon();
72
73 /**
74 * Retuns map with links to navpoint neighbours. Maps
75 * neighbour-navpoint-UnrealId to neighbour link.
76 */
77 public Map<UnrealId, NavPointNeighbourLink> getNeighbourLinks();
78
79 }