1 package cz.cuni.amis.pogamut.ut2004.agent.module.sensor; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.List; 7 8 import javax.vecmath.Vector3d; 9 10 import com.thoughtworks.xstream.annotations.XStreamAlias; 11 import com.thoughtworks.xstream.annotations.XStreamAsAttribute; 12 import com.thoughtworks.xstream.annotations.XStreamImplicit; 13 14 import cz.cuni.amis.pogamut.base3d.worldview.object.Rotation; 15 import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId; 16 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPoint; 17 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPointNeighbourLink; 18 19 @XStreamAlias("NavPoint") 20 public class NavPointExport { 21 22 23 private static final Comparator<NavPointLinkExport> EDGE_COMPARATOR = new Comparator<NavPointLinkExport>() { 24 25 @Override 26 public int compare(NavPointLinkExport o1, NavPointLinkExport o2) { 27 if (o1.Id == null) { 28 if (o2.Id == null) return 0; 29 return -1; 30 } else { 31 if (o2.Id == null) return 1; 32 return o1.Id.compareTo(o2.Id); 33 } 34 } 35 }; 36 37 public NavPointExport() { 38 } 39 40 public NavPointExport(NavPoint navPoint) { 41 42 if (navPoint.getId() != null) this.Id = navPoint.getId().getStringId(); 43 44 if (navPoint.getLocation() != null) this.Location = navPoint.getLocation().toString(); 45 46 if (navPoint.getVelocity() != null) this.Velocity = navPoint.getVelocity().toString(); 47 48 this.Visible = navPoint.isVisible(); 49 50 if (navPoint.getItem() != null) this.Item = navPoint.getItem().getStringId(); 51 52 if (navPoint.getItemClass() != null) this.ItemClass = navPoint.getItemClass().getName(); 53 54 this.ItemSpawned = navPoint.isItemSpawned(); 55 56 this.DoorOpened = navPoint.isDoorOpened(); 57 58 if (navPoint.getMover() != null) this.Mover = navPoint.getMover().getStringId(); 59 60 this.LiftOffset = navPoint.getLiftOffset(); 61 62 this.LiftJumpExit = navPoint.isLiftJumpExit(); 63 64 this.NoDoubleJump = navPoint.isNoDoubleJump(); 65 66 this.InvSpot = navPoint.isInvSpot(); 67 68 this.PlayerStart = navPoint.isPlayerStart(); 69 70 this.TeamNumber = navPoint.getTeamNumber(); 71 72 this.DomPoint = navPoint.isDomPoint(); 73 74 this.DomPointController = navPoint.getDomPointController(); 75 76 this.Door = navPoint.isDoor(); 77 78 this.LiftCenter = navPoint.isLiftCenter(); 79 80 this.LiftExit = navPoint.isLiftExit(); 81 82 this.AIMarker = navPoint.isAIMarker(); 83 84 this.JumpSpot = navPoint.isJumpSpot(); 85 86 this.JumpPad = navPoint.isJumpPad(); 87 88 this.JumpDest = navPoint.isJumpDest(); 89 90 this.Teleporter = navPoint.isTeleporter(); 91 92 this.Rotation = navPoint.getRotation(); 93 94 this.RoamingSpot = navPoint.isRoamingSpot(); 95 96 this.SnipingSpot = navPoint.isSnipingSpot(); 97 98 this.PreferedWeapon = navPoint.getPreferedWeapon(); 99 100 this.outgoingEdges = new ArrayList<NavPointLinkExport>(navPoint.getOutgoingEdges().size()); 101 for (NavPointNeighbourLink link : navPoint.getOutgoingEdges().values()) { 102 outgoingEdges.add(new NavPointLinkExport(link)); 103 } 104 Collections.sort(this.outgoingEdges, EDGE_COMPARATOR); 105 106 } 107 108 @XStreamAsAttribute 109 public String Id; 110 111 private transient UnrealId unrealId; 112 113 public UnrealId getUnrealId() { 114 if (Id == null) return null; 115 if (unrealId == null) unrealId = UnrealId.get(Id); 116 return unrealId; 117 } 118 119 @XStreamAsAttribute 120 public String Location; 121 122 @XStreamAsAttribute 123 public String Velocity; 124 125 @XStreamAsAttribute 126 public Boolean Visible; 127 128 @XStreamAsAttribute 129 public String Item; 130 131 @XStreamAsAttribute 132 public String ItemClass; 133 134 @XStreamAsAttribute 135 public Boolean ItemSpawned; 136 137 @XStreamAsAttribute 138 public Boolean DoorOpened; 139 140 @XStreamAsAttribute 141 public String Mover = null; 142 143 @XStreamAsAttribute 144 public Vector3d LiftOffset; 145 146 @XStreamAsAttribute 147 public Boolean LiftJumpExit; 148 149 @XStreamAsAttribute 150 public Boolean NoDoubleJump; 151 152 @XStreamAsAttribute 153 public Boolean InvSpot; 154 155 @XStreamAsAttribute 156 public Boolean PlayerStart; 157 158 @XStreamAsAttribute 159 public int TeamNumber; 160 161 @XStreamAsAttribute 162 public Boolean DomPoint; 163 164 @XStreamAsAttribute 165 public int DomPointController; 166 167 @XStreamAsAttribute 168 public Boolean Door; 169 170 @XStreamAsAttribute 171 public Boolean LiftCenter; 172 173 @XStreamAsAttribute 174 public Boolean LiftExit; 175 176 @XStreamAsAttribute 177 public Boolean AIMarker; 178 179 @XStreamAsAttribute 180 public Boolean JumpSpot; 181 182 @XStreamAsAttribute 183 public Boolean JumpPad; 184 185 @XStreamAsAttribute 186 public Boolean JumpDest; 187 188 @XStreamAsAttribute 189 public Boolean Teleporter; 190 191 @XStreamAsAttribute 192 public Rotation Rotation; 193 194 @XStreamAsAttribute 195 public Boolean RoamingSpot; 196 197 @XStreamAsAttribute 198 public Boolean SnipingSpot; 199 200 @XStreamAsAttribute 201 public String PreferedWeapon; 202 203 @XStreamImplicit(itemFieldName="link") 204 public List<NavPointLinkExport> outgoingEdges; 205 206 }